From 5ae9b9baef763ab6af1913d978620a74ce21647f Mon Sep 17 00:00:00 2001 From: Oliver Tale-Yazdi Date: Fri, 15 Apr 2022 21:39:26 +0200 Subject: [PATCH 001/238] Co #11198: Expose `benchmark machine` command (#1172) * Expose benchmark machine command Signed-off-by: Oliver Tale-Yazdi * cargo update -p sp-io Signed-off-by: Oliver Tale-Yazdi * cargo update -p polkadot-client Signed-off-by: Oliver Tale-Yazdi --- Cargo.lock | 614 ++++++++++++++----------- parachain-template/node/src/command.rs | 1 + polkadot-parachains/src/command.rs | 1 + 3 files changed, 355 insertions(+), 261 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index af52295aa7..fb391c117e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "beefy-primitives", "fnv", @@ -492,7 +492,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-runtime", "finality-grandpa", @@ -753,7 +753,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-runtime", "frame-support", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "bp-runtime", @@ -782,7 +782,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-messages", "bp-runtime", @@ -800,7 +800,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -817,7 +817,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "hash-db", @@ -835,7 +835,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -850,7 +850,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -865,7 +865,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2418,6 +2418,17 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users 0.3.5", + "winapi 0.3.9", +] + [[package]] name = "dirs-sys" version = "0.3.6" @@ -2425,7 +2436,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.0", "winapi 0.3.9", ] @@ -2436,7 +2447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.0", "winapi 0.3.9", ] @@ -2553,6 +2564,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "enum-as-inner" version = "0.3.3" @@ -2820,7 +2837,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", ] @@ -2838,7 +2855,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -2860,7 +2877,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "Inflector", "chrono", @@ -2877,13 +2894,16 @@ dependencies = [ "log", "memory-db", "parity-scale-codec", + "prettytable-rs", "rand 0.8.5", + "rand_pcg 0.3.1", "sc-block-builder", "sc-cli", "sc-client-api", "sc-client-db", "sc-executor", "sc-service", + "sc-sysinfo", "serde", "serde_json", "serde_nanos", @@ -2896,16 +2916,16 @@ dependencies = [ "sp-keystore", "sp-runtime", "sp-state-machine", - "sp-std", "sp-storage", "sp-trie", + "tempfile", "thousands", ] [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2916,7 +2936,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2932,7 +2952,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -2960,7 +2980,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "bitflags", "frame-metadata", @@ -2989,7 +3009,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3001,7 +3021,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3013,7 +3033,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro2", "quote", @@ -3023,7 +3043,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "log", @@ -3040,7 +3060,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -3055,7 +3075,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "sp-api", @@ -3064,7 +3084,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "sp-api", @@ -4103,7 +4123,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-primitives", "bitvec", @@ -4128,6 +4148,7 @@ dependencies = [ "pallet-collective", "pallet-democracy", "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", "pallet-elections-phragmen", "pallet-gilt", "pallet-grandpa", @@ -4193,7 +4214,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "polkadot-primitives", @@ -5056,7 +5077,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5526,7 +5547,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -5543,7 +5564,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5557,7 +5578,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -5573,7 +5594,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -5589,7 +5610,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -5604,7 +5625,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5628,7 +5649,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5648,7 +5669,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5663,7 +5684,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "beefy-primitives", "frame-support", @@ -5679,7 +5700,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5703,7 +5724,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5721,7 +5742,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5738,7 +5759,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5760,7 +5781,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5781,7 +5802,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5826,7 +5847,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5843,7 +5864,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "bitflags", "frame-benchmarking", @@ -5870,7 +5891,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "bitflags", "parity-scale-codec", @@ -5885,7 +5906,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro2", "quote", @@ -5895,7 +5916,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5914,7 +5935,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5927,7 +5948,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5943,7 +5964,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5963,10 +5984,23 @@ dependencies = [ "strum 0.23.0", ] +[[package]] +name = "pallet-election-provider-support-benchmarking" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-system", + "parity-scale-codec", + "sp-npos-elections", + "sp-runtime", +] + [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5984,7 +6018,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5999,7 +6033,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6022,7 +6056,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6038,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6058,7 +6092,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6075,7 +6109,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6092,7 +6126,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6110,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6127,7 +6161,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6142,7 +6176,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6156,7 +6190,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6173,7 +6207,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6196,7 +6230,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6212,7 +6246,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6227,7 +6261,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6241,7 +6275,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6255,7 +6289,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6271,7 +6305,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6292,7 +6326,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6308,7 +6342,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6322,7 +6356,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6345,7 +6379,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6356,7 +6390,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "sp-arithmetic", @@ -6365,7 +6399,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6394,7 +6428,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6412,7 +6446,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6431,7 +6465,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-support", "frame-system", @@ -6448,7 +6482,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6465,7 +6499,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6476,7 +6510,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6493,7 +6527,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6508,7 +6542,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6524,7 +6558,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6539,7 +6573,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "frame-system", @@ -6557,7 +6591,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-benchmarking", "frame-support", @@ -6893,7 +6927,7 @@ dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall", + "redox_syscall 0.2.10", "smallvec", "winapi 0.3.9", ] @@ -6906,7 +6940,7 @@ checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.2.10", "smallvec", "windows-sys", ] @@ -7118,7 +7152,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7132,7 +7166,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7145,7 +7179,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "derive_more", "fatality", @@ -7168,7 +7202,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "fatality", "futures 0.3.21", @@ -7189,7 +7223,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "clap 3.1.8", "frame-benchmarking-cli", @@ -7213,7 +7247,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7329,7 +7363,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "always-assert", "fatality", @@ -7350,7 +7384,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7363,7 +7397,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "derive_more", "fatality", @@ -7386,7 +7420,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7400,7 +7434,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7420,7 +7454,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "futures 0.3.21", @@ -7439,7 +7473,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7457,7 +7491,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "derive_more", @@ -7486,7 +7520,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "futures 0.3.21", @@ -7506,7 +7540,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "futures 0.3.21", @@ -7524,7 +7558,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7539,7 +7573,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "futures 0.3.21", @@ -7557,7 +7591,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7572,7 +7606,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7589,7 +7623,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "fatality", "futures 0.3.21", @@ -7608,7 +7642,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "futures 0.3.21", @@ -7625,7 +7659,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "futures 0.3.21", @@ -7642,7 +7676,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "always-assert", "assert_matches", @@ -7672,7 +7706,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7688,7 +7722,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7706,7 +7740,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-std", "lazy_static", @@ -7724,7 +7758,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bs58", "futures 0.3.21", @@ -7743,7 +7777,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "fatality", @@ -7761,7 +7795,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7783,7 +7817,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7793,7 +7827,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "futures 0.3.21", @@ -7811,7 +7845,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "derive_more", "futures 0.3.21", @@ -7830,7 +7864,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "derive_more", @@ -7863,7 +7897,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7884,7 +7918,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "futures 0.3.21", @@ -7901,7 +7935,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -7913,7 +7947,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "derive_more", "frame-support", @@ -7930,7 +7964,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7945,7 +7979,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitvec", "frame-system", @@ -7975,7 +8009,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8007,7 +8041,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-primitives", "bitvec", @@ -8031,6 +8065,7 @@ dependencies = [ "pallet-collective", "pallet-democracy", "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", "pallet-elections-phragmen", "pallet-grandpa", "pallet-identity", @@ -8092,7 +8127,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-primitives", "bitvec", @@ -8139,7 +8174,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "polkadot-primitives", @@ -8151,7 +8186,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bs58", "parity-scale-codec", @@ -8163,7 +8198,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "bitflags", "bitvec", @@ -8206,7 +8241,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "async-trait", "beefy-gadget", @@ -8306,7 +8341,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8327,7 +8362,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8337,7 +8372,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8362,7 +8397,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-primitives", "bitvec", @@ -8424,7 +8459,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-benchmarking", "frame-system", @@ -8553,6 +8588,20 @@ dependencies = [ "termtree", ] +[[package]] +name = "prettytable-rs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" +dependencies = [ + "atty", + "csv", + "encode_unicode", + "lazy_static", + "term", + "unicode-width", +] + [[package]] name = "primitive-types" version = "0.11.1" @@ -8863,6 +8912,12 @@ dependencies = [ "num_cpus", ] +[[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.10" @@ -8872,6 +8927,17 @@ 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" @@ -8879,7 +8945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ "getrandom 0.2.3", - "redox_syscall", + "redox_syscall 0.2.10", ] [[package]] @@ -8967,7 +9033,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9084,7 +9150,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9161,7 +9227,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "polkadot-primitives", @@ -9180,6 +9246,18 @@ dependencies = [ "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", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -9350,7 +9428,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "sp-core", @@ -9361,7 +9439,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9388,7 +9466,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9411,7 +9489,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9427,7 +9505,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9444,7 +9522,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9455,7 +9533,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "chrono", "clap 3.1.8", @@ -9493,7 +9571,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "fnv", "futures 0.3.21", @@ -9521,7 +9599,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "hash-db", "kvdb", @@ -9546,7 +9624,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9570,7 +9648,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9599,7 +9677,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "fork-tree", @@ -9642,7 +9720,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9666,7 +9744,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9679,7 +9757,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9704,7 +9782,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "sc-client-api", "sp-authorship", @@ -9715,7 +9793,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9742,7 +9820,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "environmental", "parity-scale-codec", @@ -9759,7 +9837,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "parity-scale-codec", @@ -9775,7 +9853,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9793,7 +9871,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "ahash", "async-trait", @@ -9833,7 +9911,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9857,7 +9935,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9874,7 +9952,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "hex", @@ -9889,7 +9967,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -9938,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "ahash", "futures 0.3.21", @@ -9955,7 +10033,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "bytes 1.1.0", "fnv", @@ -9983,7 +10061,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "libp2p", @@ -9996,7 +10074,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10005,7 +10083,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "hash-db", @@ -10036,7 +10114,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10062,7 +10140,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10079,7 +10157,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "directories", @@ -10144,7 +10222,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "parity-scale-codec", @@ -10158,7 +10236,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10179,7 +10257,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "libc", @@ -10191,12 +10269,14 @@ dependencies = [ "serde", "serde_json", "sp-core", + "sp-io", + "sp-std", ] [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "chrono", "futures 0.3.21", @@ -10214,7 +10294,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "ansi_term", "atty", @@ -10245,7 +10325,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10256,7 +10336,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10283,7 +10363,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "log", @@ -10296,7 +10376,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10769,7 +10849,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "enumn", "parity-scale-codec", @@ -10857,7 +10937,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "hash-db", "log", @@ -10874,7 +10954,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "blake2 0.10.2", "proc-macro-crate 1.1.3", @@ -10886,7 +10966,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -10899,7 +10979,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "integer-sqrt", "num-traits", @@ -10914,7 +10994,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -10927,7 +11007,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "parity-scale-codec", @@ -10939,7 +11019,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "sp-api", @@ -10951,7 +11031,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "log", @@ -10969,7 +11049,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -10988,7 +11068,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "parity-scale-codec", @@ -11006,7 +11086,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "merlin", @@ -11029,7 +11109,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11043,7 +11123,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11055,7 +11135,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "base58", "bitflags", @@ -11101,7 +11181,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "blake2 0.10.2", "byteorder", @@ -11115,7 +11195,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro2", "quote", @@ -11126,7 +11206,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11135,7 +11215,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro2", "quote", @@ -11145,7 +11225,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "environmental", "parity-scale-codec", @@ -11156,7 +11236,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "finality-grandpa", "log", @@ -11174,7 +11254,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11188,7 +11268,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "hash-db", @@ -11213,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "lazy_static", "sp-core", @@ -11224,7 +11304,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -11241,7 +11321,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "thiserror", "zstd", @@ -11250,7 +11330,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "parity-scale-codec", @@ -11265,7 +11345,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11279,7 +11359,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "sp-api", "sp-core", @@ -11289,7 +11369,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "backtrace", "lazy_static", @@ -11299,7 +11379,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "rustc-hash", "serde", @@ -11309,7 +11389,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "either", "hash256-std-hasher", @@ -11331,7 +11411,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11348,7 +11428,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11360,7 +11440,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "parity-scale-codec", @@ -11374,7 +11454,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "serde", "serde_json", @@ -11383,7 +11463,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11397,7 +11477,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11408,7 +11488,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "hash-db", "log", @@ -11430,12 +11510,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11448,7 +11528,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "log", "sp-core", @@ -11461,7 +11541,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures-timer", @@ -11477,7 +11557,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "sp-std", @@ -11489,7 +11569,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "sp-api", "sp-runtime", @@ -11498,7 +11578,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "log", @@ -11514,7 +11594,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "hash-db", "memory-db", @@ -11530,7 +11610,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11547,7 +11627,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11558,7 +11638,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "impl-trait-for-tuples", "log", @@ -11848,7 +11928,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "platforms", ] @@ -11856,7 +11936,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11878,7 +11958,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures-util", "hyper", @@ -11891,7 +11971,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -11914,7 +11994,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -11940,7 +12020,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11950,7 +12030,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -11961,7 +12041,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "ansi_term", "build-helper", @@ -12024,11 +12104,22 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.5", - "redox_syscall", + "redox_syscall 0.2.10", "remove_dir_all", "winapi 0.3.9", ] +[[package]] +name = "term" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" +dependencies = [ + "byteorder", + "dirs", + "winapi 0.3.9", +] + [[package]] name = "termcolor" version = "1.1.2" @@ -12047,7 +12138,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "polkadot-primitives", @@ -12347,7 +12438,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12358,7 +12449,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12485,7 +12576,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a0fc2ecd43e3c216925b8484381851981b426a68" +source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "clap 3.1.8", "jsonrpsee", @@ -13107,7 +13198,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "beefy-primitives", "bitvec", @@ -13129,6 +13220,7 @@ dependencies = [ "pallet-collective", "pallet-democracy", "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", "pallet-elections-phragmen", "pallet-grandpa", "pallet-identity", @@ -13193,7 +13285,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "polkadot-primitives", @@ -13413,7 +13505,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13426,7 +13518,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-support", "frame-system", @@ -13446,7 +13538,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "frame-benchmarking", "frame-support", @@ -13464,7 +13556,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3ff2b837cd2c8f7a462001d8e182e2c1e050cae8" +source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index 24f22a71d8..a721edb7e7 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -262,6 +262,7 @@ pub fn run() -> Result<()> { cmd.run(config, partials.client.clone(), db, storage) }), BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()), + BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config)), } }, Some(Subcommand::TryRuntime(cmd)) => { diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 1c35bf42df..f1f81017ba 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -502,6 +502,7 @@ pub fn run() -> Result<()> { }) }), BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()), + BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config)), } }, Some(Subcommand::TryRuntime(cmd)) => { From d52574d8dfeab9c2867000f5f08e27a0c3641c9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Apr 2022 12:07:27 +0200 Subject: [PATCH 002/238] Bump clap from 3.1.8 to 3.1.9 (#1175) Bumps [clap](https://github.com/clap-rs/clap) from 3.1.8 to 3.1.9. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.8...v3.1.9) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fb391c117e..b70f9479aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1204,16 +1204,16 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.8" +version = "3.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c47df61d9e16dc010b55dba1952a57d8c215dbb533fd13cdd13369aac73b1c" +checksum = "6aad2534fad53df1cc12519c5cda696dd3e20e6118a027e24054aea14a0bdcbe" dependencies = [ "atty", "bitflags", "clap_derive", + "clap_lex", "indexmap", "lazy_static", - "os_str_bytes", "strsim", "termcolor", "textwrap 0.15.0", @@ -1232,6 +1232,15 @@ dependencies = [ "syn", ] +[[package]] +name = "clap_lex" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d716edb7c26222b1b21de6e6d505b274f9f3db9e7bc2e06baf389d57ae842df8" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "coarsetime" version = "0.1.22" @@ -1617,7 +1626,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.8", + "clap 3.1.9", "sc-cli", "sc-service", "url 2.2.2", @@ -2881,7 +2890,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b dependencies = [ "Inflector", "chrono", - "clap 3.1.8", + "clap 3.1.9", "frame-benchmarking", "frame-support", "frame-system", @@ -6621,7 +6630,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.8", + "clap 3.1.9", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7225,7 +7234,7 @@ name = "polkadot-cli" version = "0.9.19" source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" dependencies = [ - "clap 3.1.8", + "clap 3.1.9", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7291,7 +7300,7 @@ dependencies = [ "assert_cmd", "async-trait", "canvas-kusama-runtime", - "clap 3.1.8", + "clap 3.1.9", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", @@ -9536,7 +9545,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ "chrono", - "clap 3.1.8", + "clap 3.1.9", "fdlimit", "futures 0.3.21", "hex", @@ -12578,7 +12587,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" dependencies = [ - "clap 3.1.8", + "clap 3.1.9", "jsonrpsee", "log", "parity-scale-codec", From 6e42f83d22c94399137114cee534f828bf6a335d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Apr 2022 12:25:16 +0200 Subject: [PATCH 003/238] Bump tracing from 0.1.33 to 0.1.34 (#1174) Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.33 to 0.1.34. - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.33...tracing-0.1.34) --- updated-dependencies: - dependency-name: tracing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/consensus/aura/Cargo.toml | 2 +- client/consensus/common/Cargo.toml | 2 +- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- client/relay-chain-inprocess-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- client/service/Cargo.toml | 2 +- primitives/parachain-inherent/Cargo.toml | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b70f9479aa..0da7502ef9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12403,9 +12403,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b9fa4360528139bc96100c160b7ae879f5567f49f1782b0b02035b0358ebf3" +checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if 1.0.0", "pin-project-lite 0.2.7", diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index ffc10f91ef..0f55f9b299 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" async-trait = "0.1.53" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } futures = { version = "0.3.8", features = ["compat"] } -tracing = "0.1.33" +tracing = "0.1.34" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index 3a27fec78d..91ab208079 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] futures = { version = "0.3.8", features = ["compat"] } codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -tracing = "0.1.33" +tracing = "0.1.34" async-trait = "0.1.53" dyn-clone = "1.0.5" diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index 6626a0eea2..0682b2cab8 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" async-trait = "0.1.53" futures = { version = "0.3.8", features = ["compat"] } parking_lot = "0.12.0" -tracing = "0.1.33" +tracing = "0.1.34" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 9e1a2fd01e..a2cc2a8ea7 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -12,7 +12,7 @@ derive_more = "0.99.2" futures = { version = "0.3.1", features = ["compat"] } futures-timer = "3.0.2" parking_lot = "0.12.0" -tracing = "0.1.33" +tracing = "0.1.34" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index 9893ee0f38..d5c2e33f72 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "deriv futures = { version = "0.3.1", features = ["compat"] } futures-timer = "3.0.2" rand = "0.8.5" -tracing = "0.1.33" +tracing = "0.1.34" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 4032807d10..96e0c4d87a 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -9,7 +9,7 @@ async-trait = "0.1.53" futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.0" -tracing = "0.1.33" +tracing = "0.1.34" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 7d07ace63e..90f461251b 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -24,7 +24,7 @@ futures-timer = "3.0.2" parity-scale-codec = "3.1.2" parking_lot = "0.12.0" jsonrpsee = { version = "0.10.1", features = ["client"] } -tracing = "0.1.33" +tracing = "0.1.34" async-trait = "0.1.53" url = "2.2.2" backoff = { version = "0.4.0", features = ["tokio"] } diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index c657b3a9b0..c68d0bb79e 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0" } parking_lot = "0.12.0" -tracing = "0.1.33" +tracing = "0.1.34" # Substrate sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/primitives/parachain-inherent/Cargo.toml b/primitives/parachain-inherent/Cargo.toml index eb99e5b88d..486b763e9a 100644 --- a/primitives/parachain-inherent/Cargo.toml +++ b/primitives/parachain-inherent/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" async-trait = { version = "0.1.53", optional = true } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -tracing = { version = "0.1.33", optional = true } +tracing = { version = "0.1.34", optional = true } # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", optional = true, branch = "master" } From 587cec055a90b98e55ff0b58b0b0820fa23f6736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 19 Apr 2022 15:43:21 +0200 Subject: [PATCH 004/238] Update Substrate & Polkadot (#1180) --- Cargo.lock | 557 ++++++++++++++++++++++++++--------------------------- 1 file changed, 271 insertions(+), 286 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0da7502ef9..0cf1e578fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -440,12 +440,6 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" -[[package]] -name = "base64ct" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874f8444adcb4952a8bc51305c8be95c8ec8237bb0d2e78d2e039f771f8828a0" - [[package]] name = "beef" version = "0.5.1" @@ -458,7 +452,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "beefy-primitives", "fnv", @@ -492,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -736,7 +730,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-runtime", "finality-grandpa", @@ -753,7 +747,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-runtime", "frame-support", @@ -765,7 +759,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "bp-runtime", @@ -782,7 +776,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-messages", "bp-runtime", @@ -800,7 +794,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -817,7 +811,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "hash-db", @@ -835,7 +829,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -850,7 +844,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -865,7 +859,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2523,6 +2517,7 @@ checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9" dependencies = [ "der", "elliptic-curve", + "rfc6979", "signature", ] @@ -2846,7 +2841,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", ] @@ -2864,7 +2859,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -2886,7 +2881,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "Inflector", "chrono", @@ -2934,7 +2929,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2945,7 +2940,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2961,7 +2956,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -2989,12 +2984,13 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "bitflags", "frame-metadata", "frame-support-procedural", "impl-trait-for-tuples", + "k256", "log", "once_cell", "parity-scale-codec", @@ -3018,7 +3014,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3030,7 +3026,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3042,7 +3038,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro2", "quote", @@ -3052,7 +3048,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "log", @@ -3069,7 +3065,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -3084,7 +3080,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "sp-api", @@ -3093,7 +3089,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "sp-api", @@ -4132,7 +4128,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-primitives", "bitvec", @@ -4223,7 +4219,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "polkadot-primitives", @@ -5086,7 +5082,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5556,7 +5552,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -5573,7 +5569,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5587,7 +5583,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -5603,7 +5599,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -5619,7 +5615,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -5634,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5658,7 +5654,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5678,7 +5674,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5693,7 +5689,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "beefy-primitives", "frame-support", @@ -5709,14 +5705,13 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "beefy-merkle-tree", "beefy-primitives", "frame-support", "frame-system", "hex", - "k256", "log", "pallet-beefy", "pallet-mmr", @@ -5733,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5751,7 +5746,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5768,7 +5763,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5790,7 +5785,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5811,7 +5806,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5856,7 +5851,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5873,7 +5868,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "bitflags", "frame-benchmarking", @@ -5900,7 +5895,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "bitflags", "parity-scale-codec", @@ -5915,7 +5910,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro2", "quote", @@ -5925,7 +5920,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5944,7 +5939,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5957,7 +5952,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -5973,7 +5968,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5996,7 +5991,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6009,7 +6004,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6027,7 +6022,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6042,7 +6037,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6065,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6081,7 +6076,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6101,7 +6096,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6118,7 +6113,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6135,7 +6130,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6153,7 +6148,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6170,7 +6165,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,7 +6180,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6199,7 +6194,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6216,7 +6211,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6239,7 +6234,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6255,7 +6250,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6270,7 +6265,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6284,7 +6279,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6298,7 +6293,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6314,7 +6309,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6335,7 +6330,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6351,7 +6346,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6365,7 +6360,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6388,7 +6383,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6399,7 +6394,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "sp-arithmetic", @@ -6408,7 +6403,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6437,7 +6432,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6455,7 +6450,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6474,7 +6469,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-support", "frame-system", @@ -6491,7 +6486,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6508,7 +6503,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6519,7 +6514,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6536,7 +6531,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6551,7 +6546,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6567,7 +6562,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-benchmarking", "frame-support", @@ -6582,7 +6577,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "frame-system", @@ -6600,7 +6595,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-benchmarking", "frame-support", @@ -6777,9 +6772,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d121a9af17a43efd0a38c6afa508b927ba07785bd4709efb2ac03bf77efef8d" +checksum = "b3e7f385d61562f5834282b90aa50b41f38a35cf64d5209b8b05487b50553dbe" dependencies = [ "blake2-rfc", "crc32fast", @@ -7107,17 +7102,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkcs8" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" -dependencies = [ - "der", - "spki", - "zeroize", -] - [[package]] name = "pkg-config" version = "0.3.22" @@ -7161,7 +7145,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7175,7 +7159,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7188,7 +7172,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "derive_more", "fatality", @@ -7211,7 +7195,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "fatality", "futures 0.3.21", @@ -7232,7 +7216,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "clap 3.1.9", "frame-benchmarking-cli", @@ -7256,7 +7240,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7372,7 +7356,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "always-assert", "fatality", @@ -7393,7 +7377,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7406,7 +7390,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "derive_more", "fatality", @@ -7429,7 +7413,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7443,7 +7427,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7463,7 +7447,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "futures 0.3.21", @@ -7482,7 +7466,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7500,7 +7484,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "derive_more", @@ -7529,7 +7513,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "futures 0.3.21", @@ -7549,7 +7533,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "futures 0.3.21", @@ -7567,7 +7551,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7582,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "futures 0.3.21", @@ -7600,7 +7584,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7615,7 +7599,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7632,7 +7616,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "fatality", "futures 0.3.21", @@ -7651,7 +7635,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "futures 0.3.21", @@ -7668,7 +7652,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "futures 0.3.21", @@ -7685,7 +7669,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "always-assert", "assert_matches", @@ -7715,7 +7699,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7731,7 +7715,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7749,7 +7733,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-std", "lazy_static", @@ -7767,7 +7751,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bs58", "futures 0.3.21", @@ -7786,7 +7770,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "fatality", @@ -7804,7 +7788,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7826,7 +7810,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7836,7 +7820,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "futures 0.3.21", @@ -7854,7 +7838,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "derive_more", "futures 0.3.21", @@ -7873,7 +7857,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "derive_more", @@ -7906,7 +7890,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7927,7 +7911,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "futures 0.3.21", @@ -7944,7 +7928,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -7956,7 +7940,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "derive_more", "frame-support", @@ -7973,7 +7957,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7988,7 +7972,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitvec", "frame-system", @@ -8018,7 +8002,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8050,7 +8034,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-primitives", "bitvec", @@ -8136,7 +8120,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-primitives", "bitvec", @@ -8183,7 +8167,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "polkadot-primitives", @@ -8195,7 +8179,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bs58", "parity-scale-codec", @@ -8207,7 +8191,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "bitflags", "bitvec", @@ -8250,7 +8234,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "async-trait", "beefy-gadget", @@ -8350,7 +8334,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8371,7 +8355,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8381,7 +8365,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8406,7 +8390,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-primitives", "bitvec", @@ -8468,7 +8452,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-benchmarking", "frame-system", @@ -9042,7 +9026,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9081,6 +9065,17 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11000e6ba5020e53e7cc26f73b91ae7d5496b4977851479edb66b694c0675c21" +[[package]] +name = "rfc6979" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525" +dependencies = [ + "crypto-bigint", + "hmac 0.11.0", + "zeroize", +] + [[package]] name = "ring" version = "0.16.20" @@ -9159,7 +9154,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9236,7 +9231,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "polkadot-primitives", @@ -9437,7 +9432,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "sp-core", @@ -9448,7 +9443,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -9475,7 +9470,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9498,7 +9493,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9514,7 +9509,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9531,7 +9526,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9542,7 +9537,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "chrono", "clap 3.1.9", @@ -9580,7 +9575,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "fnv", "futures 0.3.21", @@ -9608,7 +9603,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "hash-db", "kvdb", @@ -9633,7 +9628,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -9657,7 +9652,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -9686,7 +9681,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "fork-tree", @@ -9729,7 +9724,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9753,7 +9748,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9766,7 +9761,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -9791,7 +9786,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "sc-client-api", "sp-authorship", @@ -9802,7 +9797,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9829,7 +9824,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "environmental", "parity-scale-codec", @@ -9846,7 +9841,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "parity-scale-codec", @@ -9862,7 +9857,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9880,7 +9875,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "ahash", "async-trait", @@ -9920,7 +9915,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9944,7 +9939,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9961,7 +9956,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "hex", @@ -9976,7 +9971,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -10025,7 +10020,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "ahash", "futures 0.3.21", @@ -10042,7 +10037,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "bytes 1.1.0", "fnv", @@ -10070,7 +10065,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "libp2p", @@ -10083,7 +10078,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10092,7 +10087,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "hash-db", @@ -10123,7 +10118,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10149,7 +10144,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10166,7 +10161,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "directories", @@ -10231,7 +10226,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "parity-scale-codec", @@ -10245,7 +10240,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10266,7 +10261,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "libc", @@ -10285,7 +10280,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "chrono", "futures 0.3.21", @@ -10303,7 +10298,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "ansi_term", "atty", @@ -10334,7 +10329,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10345,7 +10340,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10372,7 +10367,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "log", @@ -10385,7 +10380,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10489,7 +10484,6 @@ checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1" dependencies = [ "der", "generic-array 0.14.4", - "pkcs8", "subtle", "zeroize", ] @@ -10834,6 +10828,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" dependencies = [ + "digest 0.9.0", "rand_core 0.6.3", ] @@ -10858,7 +10853,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "enumn", "parity-scale-codec", @@ -10946,7 +10941,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "hash-db", "log", @@ -10963,7 +10958,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "blake2 0.10.2", "proc-macro-crate 1.1.3", @@ -10975,7 +10970,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -10988,7 +10983,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "integer-sqrt", "num-traits", @@ -11003,7 +10998,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -11016,7 +11011,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "parity-scale-codec", @@ -11028,7 +11023,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "sp-api", @@ -11040,7 +11035,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "log", @@ -11058,7 +11053,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -11077,7 +11072,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "parity-scale-codec", @@ -11095,7 +11090,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "merlin", @@ -11118,7 +11113,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -11132,7 +11127,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11144,7 +11139,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "base58", "bitflags", @@ -11190,7 +11185,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "blake2 0.10.2", "byteorder", @@ -11204,7 +11199,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro2", "quote", @@ -11215,7 +11210,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11224,7 +11219,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro2", "quote", @@ -11234,7 +11229,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "environmental", "parity-scale-codec", @@ -11245,7 +11240,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "finality-grandpa", "log", @@ -11263,7 +11258,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11277,7 +11272,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "hash-db", @@ -11302,7 +11297,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "lazy_static", "sp-core", @@ -11313,7 +11308,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -11330,7 +11325,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "thiserror", "zstd", @@ -11339,7 +11334,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "parity-scale-codec", @@ -11354,7 +11349,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -11368,7 +11363,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "sp-api", "sp-core", @@ -11378,7 +11373,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "backtrace", "lazy_static", @@ -11388,7 +11383,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "rustc-hash", "serde", @@ -11398,7 +11393,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "either", "hash256-std-hasher", @@ -11420,7 +11415,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11437,7 +11432,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11449,7 +11444,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "parity-scale-codec", @@ -11463,7 +11458,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "serde", "serde_json", @@ -11472,7 +11467,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -11486,7 +11481,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "scale-info", @@ -11497,7 +11492,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "hash-db", "log", @@ -11519,12 +11514,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11537,7 +11532,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "log", "sp-core", @@ -11550,7 +11545,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures-timer", @@ -11566,7 +11561,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "sp-std", @@ -11578,7 +11573,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "sp-api", "sp-runtime", @@ -11587,7 +11582,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "log", @@ -11603,7 +11598,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "hash-db", "memory-db", @@ -11619,7 +11614,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11636,7 +11631,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11647,7 +11642,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "impl-trait-for-tuples", "log", @@ -11663,16 +11658,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "spki" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "ss58-registry" version = "1.12.0" @@ -11937,7 +11922,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "platforms", ] @@ -11945,7 +11930,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11967,7 +11952,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures-util", "hyper", @@ -11980,7 +11965,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12003,7 +11988,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "async-trait", "futures 0.3.21", @@ -12029,7 +12014,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12039,7 +12024,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -12050,7 +12035,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "ansi_term", "build-helper", @@ -12147,7 +12132,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "polkadot-primitives", @@ -12447,7 +12432,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12458,7 +12443,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12585,7 +12570,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1e0807fb477b21edd373eb88778336d5ff23d3a7" +source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "clap 3.1.9", "jsonrpsee", @@ -13207,7 +13192,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "beefy-primitives", "bitvec", @@ -13294,7 +13279,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "polkadot-primitives", @@ -13514,7 +13499,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13527,7 +13512,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-support", "frame-system", @@ -13547,7 +13532,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "frame-benchmarking", "frame-support", @@ -13565,7 +13550,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#10e17eb6fb9504879e4cce7025a51778c4e44c24" +source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ "Inflector", "proc-macro2", From bf51fd1513918215a8401ff42d19f4dac5501e20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Apr 2022 11:07:43 +0200 Subject: [PATCH 005/238] Bump clap from 3.1.9 to 3.1.10 (#1184) Bumps [clap](https://github.com/clap-rs/clap) from 3.1.9 to 3.1.10. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.9...v3.1.10) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0cf1e578fa..4b870a55a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1198,9 +1198,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.9" +version = "3.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aad2534fad53df1cc12519c5cda696dd3e20e6118a027e24054aea14a0bdcbe" +checksum = "3124f3f75ce09e22d1410043e1e24f2ecc44fad3afe4f08408f1f7663d68da2b" dependencies = [ "atty", "bitflags", @@ -1620,7 +1620,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.9", + "clap 3.1.10", "sc-cli", "sc-service", "url 2.2.2", @@ -2885,7 +2885,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17 dependencies = [ "Inflector", "chrono", - "clap 3.1.9", + "clap 3.1.10", "frame-benchmarking", "frame-support", "frame-system", @@ -6625,7 +6625,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.9", + "clap 3.1.10", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7218,7 +7218,7 @@ name = "polkadot-cli" version = "0.9.19" source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" dependencies = [ - "clap 3.1.9", + "clap 3.1.10", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7284,7 +7284,7 @@ dependencies = [ "assert_cmd", "async-trait", "canvas-kusama-runtime", - "clap 3.1.9", + "clap 3.1.10", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", @@ -9540,7 +9540,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ "chrono", - "clap 3.1.9", + "clap 3.1.10", "fdlimit", "futures 0.3.21", "hex", @@ -12572,7 +12572,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" dependencies = [ - "clap 3.1.9", + "clap 3.1.10", "jsonrpsee", "log", "parity-scale-codec", From 563ce7cb93be8d57a98797dda3dc37eda5dd27f3 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Wed, 20 Apr 2022 10:14:08 +0100 Subject: [PATCH 006/238] Deny using relay chain for reserve transfers (#1169) * Deny using relay chain for reserve transfers * match on junction as well. * Update polkadot-parachains/parachains-common/src/xcm_config.rs * Use Err to signal deny * Deny depisiting reserved assets + fmt * Allow DepositReserveAssets from relay chain Deny InitiateReserveWithdrawal * Rather than allow DepositReserveAsset, it was ReservAssetDeposited that should be allowed but logged. * don't reference common parachains. * Update parachain-template/runtime/src/xcm_config.rs * Warn if reserve asset deposited msg detected. Co-authored-by: Keith Yeung Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- parachain-template/runtime/src/xcm_config.rs | 83 +++++++++++++++++-- .../canvas-kusama/src/xcm_config.rs | 24 +++--- .../parachains-common/src/lib.rs | 2 + .../parachains-common/src/xcm_config.rs | 67 +++++++++++++++ .../statemine/src/xcm_config.rs | 28 ++++--- .../statemint/src/xcm_config.rs | 28 ++++--- .../westmint/src/xcm_config.rs | 28 ++++--- 7 files changed, 209 insertions(+), 51 deletions(-) create mode 100644 polkadot-parachains/parachains-common/src/xcm_config.rs diff --git a/parachain-template/runtime/src/xcm_config.rs b/parachain-template/runtime/src/xcm_config.rs index 75f203f97c..3c77efba37 100644 --- a/parachain-template/runtime/src/xcm_config.rs +++ b/parachain-template/runtime/src/xcm_config.rs @@ -2,8 +2,9 @@ use super::{ AccountId, Balances, Call, Event, Origin, ParachainInfo, ParachainSystem, PolkadotXcm, Runtime, WeightToFee, XcmpQueue, }; +use core::marker::PhantomData; use frame_support::{ - match_types, parameter_types, + log, match_types, parameter_types, traits::{Everything, Nothing}, weights::Weight, }; @@ -18,7 +19,7 @@ use xcm_builder::{ SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, }; -use xcm_executor::XcmExecutor; +use xcm_executor::{traits::ShouldExecute, XcmExecutor}; parameter_types! { pub const RelayLocation: MultiLocation = MultiLocation::parent(); @@ -87,12 +88,78 @@ match_types! { }; } -pub type Barrier = ( - TakeWeightCredit, - AllowTopLevelPaidExecutionFrom, - AllowUnpaidExecutionFrom, - // ^^^ Parent and its exec plurality get free execution -); +//TODO: move DenyThenTry to polkadot's xcm module. +/// Deny executing the xcm message if it matches any of the Deny filter regardless of anything else. +/// If it passes the Deny, and matches one of the Allow cases then it is let through. +pub struct DenyThenTry(PhantomData, PhantomData) +where + Deny: ShouldExecute, + Allow: ShouldExecute; + +impl ShouldExecute for DenyThenTry +where + Deny: ShouldExecute, + Allow: ShouldExecute, +{ + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + max_weight: Weight, + weight_credit: &mut Weight, + ) -> Result<(), ()> { + Deny::should_execute(origin, message, max_weight, weight_credit)?; + Allow::should_execute(origin, message, max_weight, weight_credit) + } +} + +// See issue #5233 +pub struct DenyReserveTransferToRelayChain; +impl ShouldExecute for DenyReserveTransferToRelayChain { + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + _max_weight: Weight, + _weight_credit: &mut Weight, + ) -> Result<(), ()> { + if message.0.iter().any(|inst| { + matches!( + inst, + InitiateReserveWithdraw { + reserve: MultiLocation { parents: 1, interior: Here }, + .. + } | DepositReserveAsset { dest: MultiLocation { parents: 1, interior: Here }, .. } | + TransferReserveAsset { + dest: MultiLocation { parents: 1, interior: Here }, + .. + } + ) + }) { + return Err(()) // Deny + } + + // allow reserve transfers to arrive from relay chain + if matches!(origin, MultiLocation { parents: 1, interior: Here }) && + message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. })) + { + log::warn!( + target: "xcm::barriers", + "Unexpected ReserveAssetDeposited from the relay chain", + ); + } + // Permit everything else + Ok(()) + } +} + +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + AllowUnpaidExecutionFrom, + // ^^^ Parent and its exec plurality get free execution + ), +>; pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { diff --git a/polkadot-parachains/canvas-kusama/src/xcm_config.rs b/polkadot-parachains/canvas-kusama/src/xcm_config.rs index c129d4d016..6a33909332 100644 --- a/polkadot-parachains/canvas-kusama/src/xcm_config.rs +++ b/polkadot-parachains/canvas-kusama/src/xcm_config.rs @@ -24,6 +24,7 @@ use frame_support::{ }; use frame_system::EnsureRoot; use pallet_xcm::{EnsureXcm, IsMajorityOfBody, XcmPassthrough}; +use parachains_common::xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}; use polkadot_parachain::primitives::Sibling; use xcm::latest::prelude::*; use xcm_builder::{ @@ -117,16 +118,19 @@ match_types! { }; } -pub type Barrier = ( - TakeWeightCredit, - AllowTopLevelPaidExecutionFrom, - // Parent and its exec plurality get free execution - AllowUnpaidExecutionFrom, - // Expected responses are OK. - AllowKnownQueryResponses, - // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, -); +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + // Parent and its exec plurality get free execution + AllowUnpaidExecutionFrom, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, + ), +>; pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { diff --git a/polkadot-parachains/parachains-common/src/lib.rs b/polkadot-parachains/parachains-common/src/lib.rs index c04f0a3779..fcec189a21 100644 --- a/polkadot-parachains/parachains-common/src/lib.rs +++ b/polkadot-parachains/parachains-common/src/lib.rs @@ -16,9 +16,11 @@ #![cfg_attr(not(feature = "std"), no_std)] pub mod impls; +pub mod xcm_config; pub use constants::*; pub use opaque::*; pub use types::*; + /// Common types of parachains. mod types { use sp_runtime::traits::{IdentifyAccount, Verify}; diff --git a/polkadot-parachains/parachains-common/src/xcm_config.rs b/polkadot-parachains/parachains-common/src/xcm_config.rs new file mode 100644 index 0000000000..63b388acae --- /dev/null +++ b/polkadot-parachains/parachains-common/src/xcm_config.rs @@ -0,0 +1,67 @@ +use core::marker::PhantomData; +use frame_support::{log, weights::Weight}; +use xcm::latest::prelude::*; +use xcm_executor::traits::ShouldExecute; + +//TODO: move DenyThenTry to polkadot's xcm module. +/// Deny executing the XCM if it matches any of the Deny filter regardless of anything else. +/// If it passes the Deny, and matches one of the Allow cases then it is let through. +pub struct DenyThenTry(PhantomData, PhantomData) +where + Deny: ShouldExecute, + Allow: ShouldExecute; + +impl ShouldExecute for DenyThenTry +where + Deny: ShouldExecute, + Allow: ShouldExecute, +{ + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + max_weight: Weight, + weight_credit: &mut Weight, + ) -> Result<(), ()> { + Deny::should_execute(origin, message, max_weight, weight_credit)?; + Allow::should_execute(origin, message, max_weight, weight_credit) + } +} + +// See issue #5233 +pub struct DenyReserveTransferToRelayChain; +impl ShouldExecute for DenyReserveTransferToRelayChain { + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + _max_weight: Weight, + _weight_credit: &mut Weight, + ) -> Result<(), ()> { + if message.0.iter().any(|inst| { + matches!( + inst, + InitiateReserveWithdraw { + reserve: MultiLocation { parents: 1, interior: Here }, + .. + } | DepositReserveAsset { dest: MultiLocation { parents: 1, interior: Here }, .. } | + TransferReserveAsset { + dest: MultiLocation { parents: 1, interior: Here }, + .. + } + ) + }) { + return Err(()) // Deny + } + + // allow reserve transfers to arrive from relay chain + if matches!(origin, MultiLocation { parents: 1, interior: Here }) && + message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. })) + { + log::info!( + target: "runtime::xcm-barier", + "Unexpected Reserve Assets Deposited on the relay chain", + ); + } + // Permit everything else + Ok(()) + } +} diff --git a/polkadot-parachains/statemine/src/xcm_config.rs b/polkadot-parachains/statemine/src/xcm_config.rs index 9bf8b827f1..7ace1bf2b3 100644 --- a/polkadot-parachains/statemine/src/xcm_config.rs +++ b/polkadot-parachains/statemine/src/xcm_config.rs @@ -23,7 +23,10 @@ use frame_support::{ weights::Weight, }; use pallet_xcm::XcmPassthrough; -use parachains_common::impls::ToStakingPot; +use parachains_common::{ + impls::ToStakingPot, + xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}, +}; use polkadot_parachain::primitives::Sibling; use xcm::latest::prelude::*; use xcm_builder::{ @@ -139,16 +142,19 @@ match_types! { }; } -pub type Barrier = ( - TakeWeightCredit, - AllowTopLevelPaidExecutionFrom, - // Parent and its exec plurality get free execution - AllowUnpaidExecutionFrom, - // Expected responses are OK. - AllowKnownQueryResponses, - // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, -); +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + // Parent and its exec plurality get free execution + AllowUnpaidExecutionFrom, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, + ), +>; pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { diff --git a/polkadot-parachains/statemint/src/xcm_config.rs b/polkadot-parachains/statemint/src/xcm_config.rs index bb4d16b474..f7f7206593 100644 --- a/polkadot-parachains/statemint/src/xcm_config.rs +++ b/polkadot-parachains/statemint/src/xcm_config.rs @@ -23,7 +23,10 @@ use frame_support::{ weights::Weight, }; use pallet_xcm::XcmPassthrough; -use parachains_common::impls::ToStakingPot; +use parachains_common::{ + impls::ToStakingPot, + xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}, +}; use polkadot_parachain::primitives::Sibling; use xcm::latest::prelude::*; use xcm_builder::{ @@ -139,16 +142,19 @@ match_types! { }; } -pub type Barrier = ( - TakeWeightCredit, - AllowTopLevelPaidExecutionFrom, - // Parent and its exec plurality get free execution - AllowUnpaidExecutionFrom, - // Expected responses are OK. - AllowKnownQueryResponses, - // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, -); +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + // Parent and its exec plurality get free execution + AllowUnpaidExecutionFrom, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, + ), +>; pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { diff --git a/polkadot-parachains/westmint/src/xcm_config.rs b/polkadot-parachains/westmint/src/xcm_config.rs index d95cbe7cfd..c0dd1da1fd 100644 --- a/polkadot-parachains/westmint/src/xcm_config.rs +++ b/polkadot-parachains/westmint/src/xcm_config.rs @@ -23,7 +23,10 @@ use frame_support::{ weights::Weight, }; use pallet_xcm::XcmPassthrough; -use parachains_common::impls::ToStakingPot; +use parachains_common::{ + impls::ToStakingPot, + xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}, +}; use polkadot_parachain::primitives::Sibling; use xcm::latest::prelude::*; use xcm_builder::{ @@ -135,16 +138,19 @@ match_types! { }; } -pub type Barrier = ( - TakeWeightCredit, - AllowTopLevelPaidExecutionFrom, - // Parent and its plurality get free execution - AllowUnpaidExecutionFrom, - // Expected responses are OK. - AllowKnownQueryResponses, - // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, -); +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + // Parent and its plurality get free execution + AllowUnpaidExecutionFrom, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, + ), +>; pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { From 8b31bce4031f5cd0d3a6849efa175cf2ff83d967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Thu, 21 Apr 2022 09:57:11 +0200 Subject: [PATCH 007/238] Aura: Switch to `SimpleSlotWorker` (#1186) * Aura: Switch to `SimpleSlotWorker` * Fix build * Update Substrate & Polkadot * Update again --- Cargo.lock | 532 ++++++++++++++++--------------- client/consensus/aura/src/lib.rs | 34 +- 2 files changed, 292 insertions(+), 274 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b870a55a2..0d59252f6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -452,7 +452,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "beefy-primitives", "fnv", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-runtime", "finality-grandpa", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-runtime", "frame-support", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "bp-runtime", @@ -776,7 +776,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-messages", "bp-runtime", @@ -794,7 +794,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -811,7 +811,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "hash-db", @@ -829,7 +829,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -844,7 +844,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -859,7 +859,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2841,7 +2841,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", ] @@ -2859,7 +2859,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -2881,7 +2881,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "Inflector", "chrono", @@ -2929,7 +2929,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2940,7 +2940,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2956,7 +2956,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -2984,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "bitflags", "frame-metadata", @@ -3014,7 +3014,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3026,7 +3026,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro2", "quote", @@ -3048,7 +3048,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "log", @@ -3065,7 +3065,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3080,7 +3080,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "sp-api", @@ -3089,7 +3089,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "sp-api", @@ -4128,7 +4128,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-primitives", "bitvec", @@ -4219,7 +4219,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "polkadot-primitives", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5405,6 +5405,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-format" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +dependencies = [ + "arrayvec 0.4.12", + "itoa 0.4.8", +] + [[package]] name = "num-integer" version = "0.1.44" @@ -5552,7 +5562,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -5569,7 +5579,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5583,7 +5593,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -5599,7 +5609,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -5615,7 +5625,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -5630,7 +5640,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5654,7 +5664,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5674,7 +5684,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5689,7 +5699,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "beefy-primitives", "frame-support", @@ -5705,7 +5715,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5728,7 +5738,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5746,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5763,7 +5773,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5785,7 +5795,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5806,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5851,7 +5861,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5868,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "bitflags", "frame-benchmarking", @@ -5895,7 +5905,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "bitflags", "parity-scale-codec", @@ -5910,7 +5920,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro2", "quote", @@ -5920,7 +5930,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5939,7 +5949,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5952,7 +5962,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5968,7 +5978,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5991,7 +6001,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6004,7 +6014,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6022,7 +6032,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6037,7 +6047,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6060,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6076,7 +6086,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6096,7 +6106,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6113,7 +6123,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6130,7 +6140,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6148,7 +6158,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6165,7 +6175,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6180,7 +6190,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6194,7 +6204,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6211,7 +6221,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6234,7 +6244,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6250,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6265,7 +6275,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6279,7 +6289,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6293,7 +6303,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6309,7 +6319,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6330,7 +6340,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6346,7 +6356,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6360,7 +6370,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6383,7 +6393,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6394,7 +6404,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "sp-arithmetic", @@ -6403,7 +6413,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6432,7 +6442,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6450,7 +6460,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6469,7 +6479,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-support", "frame-system", @@ -6486,7 +6496,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6503,7 +6513,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6514,7 +6524,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6531,7 +6541,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6546,7 +6556,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6562,7 +6572,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6577,7 +6587,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "frame-system", @@ -6595,7 +6605,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-benchmarking", "frame-support", @@ -7145,7 +7155,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7153,13 +7163,14 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", + "rand 0.8.5", "tracing-gum", ] [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7172,7 +7183,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "derive_more", "fatality", @@ -7195,7 +7206,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "fatality", "futures 0.3.21", @@ -7216,7 +7227,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "clap 3.1.10", "frame-benchmarking-cli", @@ -7240,7 +7251,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7356,7 +7367,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "always-assert", "fatality", @@ -7377,7 +7388,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7390,7 +7401,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "derive_more", "fatality", @@ -7413,7 +7424,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7427,7 +7438,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7447,7 +7458,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "futures 0.3.21", @@ -7466,7 +7477,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7484,7 +7495,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "derive_more", @@ -7513,7 +7524,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "futures 0.3.21", @@ -7533,7 +7544,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "futures 0.3.21", @@ -7551,7 +7562,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7566,7 +7577,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "futures 0.3.21", @@ -7584,7 +7595,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7599,7 +7610,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7616,7 +7627,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "fatality", "futures 0.3.21", @@ -7635,7 +7646,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "futures 0.3.21", @@ -7652,7 +7663,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "futures 0.3.21", @@ -7669,7 +7680,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "always-assert", "assert_matches", @@ -7699,7 +7710,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7715,7 +7726,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7733,7 +7744,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-std", "lazy_static", @@ -7751,7 +7762,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bs58", "futures 0.3.21", @@ -7770,7 +7781,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "fatality", @@ -7788,7 +7799,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7810,7 +7821,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7820,7 +7831,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "futures 0.3.21", @@ -7838,7 +7849,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "derive_more", "futures 0.3.21", @@ -7857,7 +7868,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "derive_more", @@ -7890,7 +7901,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7911,7 +7922,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "futures 0.3.21", @@ -7928,7 +7939,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -7940,7 +7951,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "derive_more", "frame-support", @@ -7957,7 +7968,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7972,7 +7983,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitvec", "frame-system", @@ -8002,7 +8013,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8034,7 +8045,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-primitives", "bitvec", @@ -8120,7 +8131,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-primitives", "bitvec", @@ -8167,7 +8178,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "polkadot-primitives", @@ -8179,7 +8190,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bs58", "parity-scale-codec", @@ -8191,7 +8202,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "bitflags", "bitvec", @@ -8234,7 +8245,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "async-trait", "beefy-gadget", @@ -8334,7 +8345,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8355,7 +8366,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8365,7 +8376,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8390,7 +8401,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-primitives", "bitvec", @@ -8452,7 +8463,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-benchmarking", "frame-system", @@ -9026,7 +9037,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9154,7 +9165,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9231,7 +9242,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "polkadot-primitives", @@ -9432,7 +9443,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "sp-core", @@ -9443,7 +9454,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9470,7 +9481,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9493,7 +9504,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9509,7 +9520,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9526,7 +9537,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9537,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "chrono", "clap 3.1.10", @@ -9575,7 +9586,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "fnv", "futures 0.3.21", @@ -9603,7 +9614,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "hash-db", "kvdb", @@ -9628,7 +9639,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9652,7 +9663,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9681,7 +9692,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "fork-tree", @@ -9724,7 +9735,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9748,7 +9759,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9761,7 +9772,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9786,7 +9797,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "sc-client-api", "sp-authorship", @@ -9797,7 +9808,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9824,7 +9835,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "environmental", "parity-scale-codec", @@ -9841,7 +9852,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "parity-scale-codec", @@ -9857,7 +9868,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9875,7 +9886,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "ahash", "async-trait", @@ -9915,7 +9926,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9939,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9956,7 +9967,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "hex", @@ -9971,7 +9982,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -10020,7 +10031,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "ahash", "futures 0.3.21", @@ -10037,7 +10048,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "bytes 1.1.0", "fnv", @@ -10065,7 +10076,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "libp2p", @@ -10078,7 +10089,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10087,7 +10098,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "hash-db", @@ -10118,7 +10129,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10144,7 +10155,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10161,7 +10172,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "directories", @@ -10226,7 +10237,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "parity-scale-codec", @@ -10240,7 +10251,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10261,7 +10272,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "libc", @@ -10280,7 +10291,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "chrono", "futures 0.3.21", @@ -10298,7 +10309,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "ansi_term", "atty", @@ -10329,7 +10340,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10340,7 +10351,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10367,7 +10378,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "log", @@ -10380,7 +10391,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10722,9 +10733,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c3bd8169c58782adad9290a9af5939994036b76187f7b4f0e6de91dbbfc0ec" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if 1.0.0", "cpufeatures 0.2.1", @@ -10853,7 +10864,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "enumn", "parity-scale-codec", @@ -10941,7 +10952,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "hash-db", "log", @@ -10958,7 +10969,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "blake2 0.10.2", "proc-macro-crate 1.1.3", @@ -10970,7 +10981,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -10983,7 +10994,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "integer-sqrt", "num-traits", @@ -10998,7 +11009,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11011,7 +11022,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "parity-scale-codec", @@ -11023,7 +11034,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "sp-api", @@ -11035,7 +11046,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "log", @@ -11053,7 +11064,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -11072,7 +11083,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "parity-scale-codec", @@ -11090,7 +11101,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "merlin", @@ -11113,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11127,7 +11138,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11139,7 +11150,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "base58", "bitflags", @@ -11185,12 +11196,12 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "blake2 0.10.2", "byteorder", "digest 0.10.3", - "sha2 0.10.1", + "sha2 0.10.2", "sha3 0.10.0", "sp-std", "twox-hash", @@ -11199,7 +11210,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro2", "quote", @@ -11210,7 +11221,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11219,7 +11230,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro2", "quote", @@ -11229,7 +11240,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "environmental", "parity-scale-codec", @@ -11240,7 +11251,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "finality-grandpa", "log", @@ -11258,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11272,7 +11283,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "hash-db", @@ -11297,7 +11308,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "lazy_static", "sp-core", @@ -11308,7 +11319,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -11325,7 +11336,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "thiserror", "zstd", @@ -11334,7 +11345,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "parity-scale-codec", @@ -11349,7 +11360,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11363,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "sp-api", "sp-core", @@ -11373,7 +11384,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "backtrace", "lazy_static", @@ -11383,7 +11394,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "rustc-hash", "serde", @@ -11393,7 +11404,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "either", "hash256-std-hasher", @@ -11415,7 +11426,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11432,7 +11443,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11444,7 +11455,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "parity-scale-codec", @@ -11458,7 +11469,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "serde", "serde_json", @@ -11467,7 +11478,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11481,7 +11492,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11492,7 +11503,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "hash-db", "log", @@ -11514,12 +11525,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11532,7 +11543,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "log", "sp-core", @@ -11545,7 +11556,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures-timer", @@ -11561,7 +11572,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "sp-std", @@ -11573,7 +11584,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "sp-api", "sp-runtime", @@ -11582,7 +11593,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "log", @@ -11598,7 +11609,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "hash-db", "memory-db", @@ -11614,7 +11625,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11631,7 +11642,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11642,7 +11653,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "impl-trait-for-tuples", "log", @@ -11660,11 +11671,12 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.12.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8319f44e20b42e5c11b88b1ad4130c35fe2974665a007b08b02322070177136a" +checksum = "7b84a70894df7a73666e0694f44b41a9571625e9546fb58a0818a565d2c7e084" dependencies = [ "Inflector", + "num-format", "proc-macro2", "quote", "serde", @@ -11922,7 +11934,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "platforms", ] @@ -11930,7 +11942,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11952,7 +11964,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures-util", "hyper", @@ -11965,7 +11977,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -11988,7 +12000,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "async-trait", "futures 0.3.21", @@ -12014,7 +12026,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12024,7 +12036,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -12035,7 +12047,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "ansi_term", "build-helper", @@ -12132,7 +12144,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "polkadot-primitives", @@ -12432,7 +12444,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12443,7 +12455,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12570,7 +12582,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#0a7e5ea46a17d71818eef8216e24eef0565bab57" +source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "clap 3.1.10", "jsonrpsee", @@ -13192,7 +13204,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "beefy-primitives", "bitvec", @@ -13279,7 +13291,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "polkadot-primitives", @@ -13499,7 +13511,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13512,7 +13524,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-support", "frame-system", @@ -13532,7 +13544,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "frame-benchmarking", "frame-support", @@ -13550,7 +13562,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e3d2bf1535854ca64d2a9792f0f15ef315e83c43" +source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/consensus/aura/src/lib.rs b/client/consensus/aura/src/lib.rs index 6e5df220f7..f88bca38d4 100644 --- a/client/consensus/aura/src/lib.rs +++ b/client/consensus/aura/src/lib.rs @@ -31,7 +31,7 @@ use cumulus_primitives_core::{relay_chain::v2::Hash as PHash, PersistedValidatio use futures::lock::Mutex; use sc_client_api::{backend::AuxStore, BlockOf}; use sc_consensus::BlockImport; -use sc_consensus_slots::{BackoffAuthoringBlocksStrategy, SlotInfo}; +use sc_consensus_slots::{BackoffAuthoringBlocksStrategy, SimpleSlotWorker, SlotInfo}; use sc_telemetry::TelemetryHandle; use sp_api::ProvideRuntimeApi; use sp_application_crypto::AppPublic; @@ -42,7 +42,7 @@ use sp_core::crypto::Pair; use sp_inherents::{CreateInherentDataProviders, InherentData, InherentDataProvider}; use sp_keystore::SyncCryptoStorePtr; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Member, NumberFor}; -use std::{convert::TryFrom, hash::Hash, sync::Arc}; +use std::{convert::TryFrom, hash::Hash, marker::PhantomData, sync::Arc}; mod import_queue; @@ -53,29 +53,25 @@ pub use sc_consensus_slots::InherentDataProviderExt; const LOG_TARGET: &str = "aura::cumulus"; /// The implementation of the AURA consensus for parachains. -pub struct AuraConsensus { +pub struct AuraConsensus { create_inherent_data_providers: Arc, - aura_worker: Arc< - Mutex< - dyn sc_consensus_slots::SlotWorker::Proof> - + Send - + 'static, - >, - >, + aura_worker: Arc>, slot_duration: SlotDuration, + _phantom: PhantomData, } -impl Clone for AuraConsensus { +impl Clone for AuraConsensus { fn clone(&self) -> Self { Self { create_inherent_data_providers: self.create_inherent_data_providers.clone(), aura_worker: self.aura_worker.clone(), slot_duration: self.slot_duration, + _phantom: PhantomData, } } } -impl AuraConsensus +impl AuraConsensus where B: BlockT, CIDP: CreateInherentDataProviders + 'static, @@ -134,13 +130,21 @@ where }, ); - Box::new(Self { + Box::new(AuraConsensus { create_inherent_data_providers: Arc::new(create_inherent_data_providers), aura_worker: Arc::new(Mutex::new(worker)), slot_duration, + _phantom: PhantomData, }) } +} +impl AuraConsensus +where + B: BlockT, + CIDP: CreateInherentDataProviders + 'static, + CIDP::InherentDataProviders: InherentDataProviderExt, +{ /// Create the inherent data. /// /// Returns the created inherent data and the inherent data providers used. @@ -178,11 +182,13 @@ where } #[async_trait::async_trait] -impl ParachainConsensus for AuraConsensus +impl ParachainConsensus for AuraConsensus where B: BlockT, CIDP: CreateInherentDataProviders + Send + Sync + 'static, CIDP::InherentDataProviders: InherentDataProviderExt + Send, + W: SimpleSlotWorker + Send + Sync, + W::Proposer: Proposer::Proof>, { async fn produce_candidate( &mut self, From 08bc38ddffa19cf039b30e1d18edae3abb33d377 Mon Sep 17 00:00:00 2001 From: girazoki Date: Thu, 21 Apr 2022 10:23:20 +0200 Subject: [PATCH 008/238] Implement set_block_number for runtime-bencmarks in RelayBlockNumberProiver (#1187) --- pallets/parachain-system/Cargo.toml | 4 ++++ pallets/parachain-system/src/lib.rs | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 6b220da5d7..5d08818813 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -73,3 +73,7 @@ std = [ "sp-trie/std", "xcm/std" ] + +runtime-benchmarks = [ + "sp-runtime/runtime-benchmarks" +] \ No newline at end of file diff --git a/pallets/parachain-system/src/lib.rs b/pallets/parachain-system/src/lib.rs index 2eb242e738..44da67e5dd 100644 --- a/pallets/parachain-system/src/lib.rs +++ b/pallets/parachain-system/src/lib.rs @@ -1047,4 +1047,11 @@ impl BlockNumberProvider for RelaychainBlockNumberProvider { .map(|d| d.relay_parent_number) .unwrap_or_default() } + #[cfg(feature = "runtime-benchmarks")] + fn set_block_number(block: Self::BlockNumber) { + if let Some(mut validation_data) = Pallet::::validation_data() { + validation_data.relay_parent_number = block; + ValidationData::::put(validation_data) + } + } } From 9aead492b71990aa6f7bfc0cd35108078f385ae6 Mon Sep 17 00:00:00 2001 From: girazoki Date: Thu, 21 Apr 2022 21:18:09 +0200 Subject: [PATCH 009/238] Make sure when storage is empty we set the block number (#1197) --- pallets/parachain-system/src/lib.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pallets/parachain-system/src/lib.rs b/pallets/parachain-system/src/lib.rs index 44da67e5dd..e10f628abf 100644 --- a/pallets/parachain-system/src/lib.rs +++ b/pallets/parachain-system/src/lib.rs @@ -1049,9 +1049,8 @@ impl BlockNumberProvider for RelaychainBlockNumberProvider { } #[cfg(feature = "runtime-benchmarks")] fn set_block_number(block: Self::BlockNumber) { - if let Some(mut validation_data) = Pallet::::validation_data() { - validation_data.relay_parent_number = block; - ValidationData::::put(validation_data) - } + let mut validation_data = Pallet::::validation_data().unwrap_or_default(); + validation_data.relay_parent_number = block; + ValidationData::::put(validation_data) } } From 98707fc3a2f3250b4990c33538690c53b0171414 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Apr 2022 08:53:57 +0200 Subject: [PATCH 010/238] Bump nix from 0.23.1 to 0.24.0 (#1200) Bumps [nix](https://github.com/nix-rust/nix) from 0.23.1 to 0.24.0. - [Release notes](https://github.com/nix-rust/nix/releases) - [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md) - [Commits](https://github.com/nix-rust/nix/commits) --- updated-dependencies: - dependency-name: nix dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 5 ++--- polkadot-parachains/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d59252f6f..90dcd6c457 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5342,12 +5342,11 @@ dependencies = [ [[package]] name = "nix" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6" +checksum = "8f6d99b651ff9697d6710f9613a07c5b4e0d655040faf56b3b471af108d55597" dependencies = [ "bitflags", - "cc", "cfg-if 1.0.0", "libc", "memoffset", diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index ee0ec22e7f..2bfe0759cb 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -90,7 +90,7 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/substrate" [dev-dependencies] assert_cmd = "2.0" -nix = "0.23" +nix = "0.24" tempfile = "3.2.0" [features] From d68e9bf27b38fff296ea9f57124d5f9b309018c3 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 22 Apr 2022 08:51:59 +0100 Subject: [PATCH 011/238] warn not info (#1190) * warn not info Co-authored-by: Keith Yeung --- polkadot-parachains/parachains-common/src/xcm_config.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/polkadot-parachains/parachains-common/src/xcm_config.rs b/polkadot-parachains/parachains-common/src/xcm_config.rs index 63b388acae..f5004c9c67 100644 --- a/polkadot-parachains/parachains-common/src/xcm_config.rs +++ b/polkadot-parachains/parachains-common/src/xcm_config.rs @@ -56,9 +56,9 @@ impl ShouldExecute for DenyReserveTransferToRelayChain { if matches!(origin, MultiLocation { parents: 1, interior: Here }) && message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. })) { - log::info!( - target: "runtime::xcm-barier", - "Unexpected Reserve Assets Deposited on the relay chain", + log::warn!( + target: "xcm::barrier", + "Unexpected ReserveAssetDeposited from the relay chain", ); } // Permit everything else From b1e97a8f1b2d2cdd351cc12d753d48bce91def41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Silva=20de=20Souza?= <77391175+joao-paulo-parity@users.noreply.github.com> Date: Fri, 22 Apr 2022 05:51:17 -0300 Subject: [PATCH 012/238] skip pr-custom-review if pull request is in Draft (#1188) --- .github/workflows/pr-custom-review.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.github/workflows/pr-custom-review.yml b/.github/workflows/pr-custom-review.yml index 322403da03..6cb16d931d 100644 --- a/.github/workflows/pr-custom-review.yml +++ b/.github/workflows/pr-custom-review.yml @@ -11,12 +11,31 @@ on: - synchronize - review_requested - review_request_removed + - ready_for_review + - converted_to_draft pull_request_review: jobs: pr-custom-review: runs-on: ubuntu-latest steps: + - name: Skip if pull request is in Draft + # `if: github.event.pull_request.draft == true` should be kept here, at + # the step level, rather than at the job level. The latter is not + # recommended because when the PR is moved from "Draft" to "Ready to + # review" the workflow will immediately be passing (since it was skipped), + # even though it hasn't actually ran, since it takes a few seconds for + # the workflow to start. This is also disclosed in: + # https://github.community/t/dont-run-actions-on-draft-pull-requests/16817/17 + # That scenario would open an opportunity for the check to be bypassed: + # 1. Get your PR approved + # 2. Move it to Draft + # 3. Push whatever commits you want + # 4. Move it to "Ready for review"; now the workflow is passing (it was + # skipped) and "Check reviews" is also passing (it won't be updated + # until the workflow is finished) + if: github.event.pull_request.draft == true + run: exit 1 - name: pr-custom-review uses: paritytech/pr-custom-review@v2 with: From ce6f0d78583d7d225d683dc11e770d1490852f67 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Fri, 22 Apr 2022 11:10:47 +0200 Subject: [PATCH 013/238] [ci] small fixes for benchmark jobs (#1195) --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2d88762bb5..77a78f7a02 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -202,7 +202,7 @@ benchmarks-build: script: - time cargo build --profile production --locked --features runtime-benchmarks - mkdir artifacts - - cp $CARGO_TARGET_DIR/production/polkadot-collator ./artifacts/ + - cp target/production/polkadot-collator ./artifacts/ benchmarks: stage: benchmarks-run @@ -220,7 +220,7 @@ benchmarks: - rm -rf .git/config - git config --global user.email "${GITHUB_EMAIL}" - git config --global user.name "${GITHUB_USER}" - - git config remote.origin.url "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com:/paritytech/${CI_PROJECT_NAME}.git" + - git config remote.origin.url "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/paritytech/${CI_PROJECT_NAME}.git" - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" # push results to github - git checkout -b $BRANCHNAME From 60b8c7bf1d993fb67ebd7e4f4bf923a2fc46c824 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Apr 2022 20:36:04 +0000 Subject: [PATCH 014/238] Bump jsonrpsee from 0.10.1 to 0.11.0 Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.10.1 to 0.11.0. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.10.1...v0.11.0) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 118 ++++++++++++++++---- client/relay-chain-rpc-interface/Cargo.toml | 2 +- 2 files changed, 100 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 90dcd6c457..18e6eb7365 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2101,7 +2101,7 @@ dependencies = [ "cumulus-primitives-core", "derive_more", "futures 0.3.21", - "jsonrpsee-core", + "jsonrpsee-core 0.10.1", "parity-scale-codec", "parking_lot 0.12.0", "polkadot-overseer", @@ -2126,7 +2126,7 @@ dependencies = [ "cumulus-relay-chain-interface", "futures 0.3.21", "futures-timer", - "jsonrpsee", + "jsonrpsee 0.11.0", "parity-scale-codec", "parking_lot 0.12.0", "polkadot-service", @@ -3990,11 +3990,22 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91dc760c341fa81173f9a434931aaf32baad5552b0230cc6c93e8fb7eaad4c19" dependencies = [ - "jsonrpsee-core", - "jsonrpsee-http-client", + "jsonrpsee-core 0.10.1", "jsonrpsee-proc-macros", - "jsonrpsee-types", - "jsonrpsee-ws-client", + "jsonrpsee-types 0.10.1", + "jsonrpsee-ws-client 0.10.1", +] + +[[package]] +name = "jsonrpsee" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d02a921aa22006ed979c2e1c407fd21302ac6049e5b544634ec5ec41516363d" +dependencies = [ + "jsonrpsee-core 0.11.0", + "jsonrpsee-http-client", + "jsonrpsee-types 0.11.0", + "jsonrpsee-ws-client 0.11.0", ] [[package]] @@ -4005,8 +4016,29 @@ checksum = "765f7a36d5087f74e3b3b47805c2188fef8eb54afcb587b078d9f8ebfe9c7220" dependencies = [ "futures 0.3.21", "http", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.10.1", + "jsonrpsee-types 0.10.1", + "pin-project 1.0.10", + "rustls-native-certs 0.6.1", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.23.2", + "tokio-util 0.7.1", + "tracing", + "webpki-roots 0.22.2", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4d7c4b01e336c32fc17034560291fa0690170aedace93ae746e9aa119a5b91" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core 0.11.0", + "jsonrpsee-types 0.11.0", "pin-project 1.0.10", "rustls-native-certs 0.6.1", "soketto", @@ -4031,7 +4063,7 @@ dependencies = [ "futures-channel", "futures-util", "hyper", - "jsonrpsee-types", + "jsonrpsee-types 0.10.1", "rustc-hash", "serde", "serde_json", @@ -4042,16 +4074,39 @@ dependencies = [ ] [[package]] -name = "jsonrpsee-http-client" -version = "0.10.1" +name = "jsonrpsee-core" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92709e0b8255691f4df954a0176b1cbc3312f151e7ed2e643812e8bd121f1d1c" +checksum = "8066473754794e7784c61808d25d60dfb68e1025a625792a6a1bc680d1ab700a" +dependencies = [ + "anyhow", + "async-lock", + "async-trait", + "beef", + "futures-channel", + "futures-timer", + "futures-util", + "hyper", + "jsonrpsee-types 0.11.0", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157df2774b82fddf37a297fd5c8f711601b158176608f86d2adb5d227c524506" dependencies = [ "async-trait", "hyper", "hyper-rustls 0.23.0", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.11.0", + "jsonrpsee-types 0.11.0", "rustc-hash", "serde", "serde_json", @@ -4086,15 +4141,40 @@ dependencies = [ "tracing", ] +[[package]] +name = "jsonrpsee-types" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd42e08ae7f0de7b00319f723f7b06e2d461ab69bfa615a611fab5dec00b192e" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] + [[package]] name = "jsonrpsee-ws-client" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd66d18bab78d956df24dd0d2e41e4c00afbb818fda94a98264bdd12ce8506ac" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.10.1", + "jsonrpsee-core 0.10.1", + "jsonrpsee-types 0.10.1", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10011be7e04339bdc8b5a8e3542eb5aa1aa08465d5c897044ce00b03ea8535b" +dependencies = [ + "jsonrpsee-client-transport 0.11.0", + "jsonrpsee-core 0.11.0", + "jsonrpsee-types 0.11.0", ] [[package]] @@ -9039,7 +9119,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "env_logger 0.9.0", - "jsonrpsee", + "jsonrpsee 0.10.1", "log", "parity-scale-codec", "serde", @@ -12584,7 +12664,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "clap 3.1.10", - "jsonrpsee", + "jsonrpsee 0.10.1", "log", "parity-scale-codec", "remote-externalities", diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 90f461251b..670a712f18 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -23,7 +23,7 @@ futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.2" parking_lot = "0.12.0" -jsonrpsee = { version = "0.10.1", features = ["client"] } +jsonrpsee = { version = "0.11.0", features = ["client"] } tracing = "0.1.34" async-trait = "0.1.53" url = "2.2.2" From 3f9a57dedb89ee1f14e9222ffa3d0b2eef093268 Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Fri, 22 Apr 2022 13:12:53 +0200 Subject: [PATCH 015/238] Bump jsonrpsee-core to 11.0 --- Cargo.lock | 2 +- client/relay-chain-interface/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18e6eb7365..df039cc8e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2101,7 +2101,7 @@ dependencies = [ "cumulus-primitives-core", "derive_more", "futures 0.3.21", - "jsonrpsee-core 0.10.1", + "jsonrpsee-core 0.11.0", "parity-scale-codec", "parking_lot 0.12.0", "polkadot-overseer", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index daacbbd905..71f29b72c7 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -23,5 +23,5 @@ parking_lot = "0.12.0" derive_more = "0.99.2" async-trait = "0.1.53" thiserror = "1.0.30" -jsonrpsee-core = "0.10.1" +jsonrpsee-core = "0.11.0" parity-scale-codec = "3.1.2" From de296554fb09d216471b6ae1c70989aaa540a7ec Mon Sep 17 00:00:00 2001 From: Chevdor Date: Fri, 22 Apr 2022 15:52:24 +0200 Subject: [PATCH 016/238] Fix priority thresholds (#1203) --- scripts/ci/changelog/templates/change.md.tera | 4 ++-- scripts/ci/changelog/templates/high_priority.md.tera | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/ci/changelog/templates/change.md.tera b/scripts/ci/changelog/templates/change.md.tera index b02b1d513c..cb40496266 100644 --- a/scripts/ci/changelog/templates/change.md.tera +++ b/scripts/ci/changelog/templates/change.md.tera @@ -3,9 +3,9 @@ {%- if c.meta.C and c.meta.C.value >= 7 -%} {%- set prio = " ‼️ HIGH" -%} -{%- elif c.meta.C and c.meta.C.value >= 5 -%} -{%- set prio = " ❗️ Medium" -%} {%- elif c.meta.C and c.meta.C.value >= 3 -%} +{%- set prio = " ❗️ Medium" -%} +{%- elif c.meta.C and c.meta.C.value < 3 -%} {%- set prio = " Low" -%} {%- else -%} {%- set prio = "" -%} diff --git a/scripts/ci/changelog/templates/high_priority.md.tera b/scripts/ci/changelog/templates/high_priority.md.tera index 501b75bdce..e23bbae942 100644 --- a/scripts/ci/changelog/templates/high_priority.md.tera +++ b/scripts/ci/changelog/templates/high_priority.md.tera @@ -22,14 +22,16 @@ {%- if p >= 7 or host_fn_count > 0 -%} {%- set prio = "‼️ HIGH" -%} {%- set text = "This is a **high priority** release and you must upgrade as as soon as possible." -%} -{%- elif p >= 5 -%} +{%- elif p >= 3 -%} {%- set prio = "❗️ Medium" -%} {%- set text = "This is a medium priority release and you should upgrade in a timely manner." -%} -{%- elif p >= 3 -%} +{%- else -%} {%- set prio = "Low" -%} {%- set text = "This is a low priority release and you may upgrade at your convenience." -%} {%- endif -%} + + {%- if prio -%} {{prio}}: {{text}} {%- else -%} From 68b4da78d079e110cd616b937ed2de738d32a2bf Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 22 Apr 2022 22:35:47 +0200 Subject: [PATCH 017/238] Default not implemented for non-std builds for PersistedValidationData (#1207) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Default not implemented for non-std builds for PersistedValidationData * Remove v1 * Remove v1 for v2, this time correct * More reverts of v1 for v2 * Update pallets/parachain-system/src/lib.rs * fmt Co-authored-by: Bastian Köcher --- pallets/parachain-system/src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pallets/parachain-system/src/lib.rs b/pallets/parachain-system/src/lib.rs index e10f628abf..a9d1446f46 100644 --- a/pallets/parachain-system/src/lib.rs +++ b/pallets/parachain-system/src/lib.rs @@ -1049,7 +1049,14 @@ impl BlockNumberProvider for RelaychainBlockNumberProvider { } #[cfg(feature = "runtime-benchmarks")] fn set_block_number(block: Self::BlockNumber) { - let mut validation_data = Pallet::::validation_data().unwrap_or_default(); + let mut validation_data = Pallet::::validation_data().unwrap_or_else(|| + // PersistedValidationData does not impl default in non-std + PersistedValidationData { + parent_head: vec![].into(), + relay_parent_number: Default::default(), + max_pov_size: Default::default(), + relay_parent_storage_root: Default::default(), + }); validation_data.relay_parent_number = block; ValidationData::::put(validation_data) } From 202b10072faeaadc59faaf10997fb4f61c5a3b1f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Apr 2022 20:42:44 +0000 Subject: [PATCH 018/238] Bump clap from 3.1.10 to 3.1.12 (#1208) Bumps [clap](https://github.com/clap-rs/clap) from 3.1.10 to 3.1.12. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.10...v3.1.12) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index df039cc8e0..8790592257 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1198,9 +1198,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.10" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3124f3f75ce09e22d1410043e1e24f2ecc44fad3afe4f08408f1f7663d68da2b" +checksum = "7c167e37342afc5f33fd87bbc870cedd020d2a6dffa05d45ccd9241fbdd146db" dependencies = [ "atty", "bitflags", @@ -1620,7 +1620,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.10", + "clap 3.1.12", "sc-cli", "sc-service", "url 2.2.2", @@ -2885,7 +2885,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba5451 dependencies = [ "Inflector", "chrono", - "clap 3.1.10", + "clap 3.1.12", "frame-benchmarking", "frame-support", "frame-system", @@ -6714,7 +6714,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.10", + "clap 3.1.12", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7308,7 +7308,7 @@ name = "polkadot-cli" version = "0.9.19" source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" dependencies = [ - "clap 3.1.10", + "clap 3.1.12", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7374,7 +7374,7 @@ dependencies = [ "assert_cmd", "async-trait", "canvas-kusama-runtime", - "clap 3.1.10", + "clap 3.1.12", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", @@ -9630,7 +9630,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ "chrono", - "clap 3.1.10", + "clap 3.1.12", "fdlimit", "futures 0.3.21", "hex", @@ -12663,7 +12663,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" dependencies = [ - "clap 3.1.10", + "clap 3.1.12", "jsonrpsee 0.10.1", "log", "parity-scale-codec", From 4f160f9ccda4cac15076d660d6b760e9cc03d5fd Mon Sep 17 00:00:00 2001 From: Squirrel Date: Sat, 23 Apr 2022 21:44:19 +0100 Subject: [PATCH 019/238] benchmark now takes a command. (#1191) --- scripts/benchmarks-ci.sh | 2 +- scripts/benchmarks.sh | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/benchmarks-ci.sh b/scripts/benchmarks-ci.sh index 91d24bb5dc..4fda1dde36 100755 --- a/scripts/benchmarks-ci.sh +++ b/scripts/benchmarks-ci.sh @@ -23,7 +23,7 @@ pallets=( for p in ${pallets[@]} do - ./artifacts/polkadot-collator benchmark \ + ./artifacts/polkadot-collator benchmark pallet \ --chain=$benhcmarkChainName \ --execution=wasm \ --wasm-execution=compiled \ diff --git a/scripts/benchmarks.sh b/scripts/benchmarks.sh index 9bf416a1bd..ba998a79a5 100755 --- a/scripts/benchmarks.sh +++ b/scripts/benchmarks.sh @@ -27,7 +27,7 @@ pallets=( for p in ${pallets[@]} do - ./target/production/polkadot-collator benchmark \ + ./target/production/polkadot-collator benchmark pallet \ --chain=$statemineChain \ --execution=wasm \ --wasm-execution=compiled \ @@ -39,7 +39,7 @@ do --header=./file_header.txt \ --output=$statemineOutput - ./target/production/polkadot-collator benchmark \ + ./target/production/polkadot-collator benchmark pallet \ --chain=$statemintChain \ --execution=wasm \ --wasm-execution=compiled \ @@ -51,7 +51,7 @@ do --header=./file_header.txt \ --output=$statemintOutput - ./target/production/polkadot-collator benchmark \ + ./target/production/polkadot-collator benchmark pallet \ --chain=$westmintChain \ --execution=wasm \ --wasm-execution=compiled \ From d5434b3054b14bdb77e63d803474e400b932f52b Mon Sep 17 00:00:00 2001 From: nodi-andy Date: Mon, 25 Apr 2022 10:38:21 +0200 Subject: [PATCH 020/238] bash tutorial: change the working path after clone (#1210) --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6957941bc8..0a46395d26 100644 --- a/README.md +++ b/README.md @@ -204,8 +204,11 @@ Launch a local setup including a Relay Chain and a Parachain. #### Launch the Relay Chain ```bash -# Compile Polkadot with the real overseer feature +# Clone git clone https://github.com/paritytech/polkadot +cd polkadot + +# Compile Polkadot with the real overseer feature cargo build --release # Generate a raw chain spec @@ -221,8 +224,11 @@ cargo build --release #### Launch the Parachain ```bash -# Compile +# Clone git clone https://github.com/paritytech/cumulus +cd cumulus + +# Compile cargo build --release # Export genesis state From d72a35698384208b7b9a53e6c4949ba13ae1a72c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:40:30 +0200 Subject: [PATCH 021/238] Bump nix from 0.24.0 to 0.24.1 (#1215) Bumps [nix](https://github.com/nix-rust/nix) from 0.24.0 to 0.24.1. - [Release notes](https://github.com/nix-rust/nix/releases) - [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md) - [Commits](https://github.com/nix-rust/nix/compare/v0.24.0...v0.24.1) --- updated-dependencies: - dependency-name: nix dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8790592257..9e1672edfb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5422,9 +5422,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d99b651ff9697d6710f9613a07c5b4e0d655040faf56b3b471af108d55597" +checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9" dependencies = [ "bitflags", "cfg-if 1.0.0", From a715b8b55171e41e1e68f2f35ce296af259ea718 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Tue, 26 Apr 2022 11:05:54 +0200 Subject: [PATCH 022/238] [ci] Fix benchmark branch name and typo (#1216) --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 77a78f7a02..2a5cd24729 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -215,7 +215,7 @@ benchmarks: - ./scripts/benchmarks-ci.sh statemint > ./artifacts/bench-statemint.log - ./scripts/benchmarks-ci.sh westmint > ./artifacts/bench-westmint.log - git status - - export BRANCHNAME="${CI_COMMIT_BRANCH}-weights" + - export BRANCHNAME="weights-${CI_COMMIT_BRANCH}" # Set git config - rm -rf .git/config - git config --global user.email "${GITHUB_EMAIL}" @@ -225,7 +225,7 @@ benchmarks: # push results to github - git checkout -b $BRANCHNAME - git add polkadot-parachains/* - - git commit -m "[benchmarks] pr with wieghts" + - git commit -m "[benchmarks] pr with weights" - git push origin $BRANCHNAME # create PR - curl -u ${GITHUB_USER}:${GITHUB_TOKEN} From 867eb8ebf966fbce6465cb5e9213edb113e93743 Mon Sep 17 00:00:00 2001 From: Koute Date: Tue, 26 Apr 2022 18:51:18 +0900 Subject: [PATCH 023/238] Companion for Substrate#11062 (#1113) * Align to changes in Substrate * Align to the newest changes in substrate * Update `Cargo.lock` * Add hwbenches to `parachain-template` too * update lockfile for {"polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 505 +++++++++--------- .../Cargo.toml | 1 + .../src/lib.rs | 11 +- parachain-template/node/Cargo.toml | 1 + parachain-template/node/src/cli.rs | 10 + parachain-template/node/src/command.rs | 23 +- parachain-template/node/src/service.rs | 19 + polkadot-parachains/Cargo.toml | 1 + polkadot-parachains/src/cli.rs | 10 + polkadot-parachains/src/command.rs | 17 +- polkadot-parachains/src/service.rs | 55 ++ 11 files changed, 400 insertions(+), 253 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e1672edfb..ad2b8b3994 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -452,7 +452,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "beefy-primitives", "fnv", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -720,9 +720,9 @@ dependencies = [ [[package]] name = "bounded-vec" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b47cca82fca99417fe405f09d93bb8fff90bdd03d13c631f18096ee123b4281c" +checksum = "3372be4090bf9d4da36bd8ba7ce6ca1669503d0cf6e667236c6df7f053153eb6" dependencies = [ "thiserror", ] @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-runtime", "finality-grandpa", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-runtime", "frame-support", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "bp-runtime", @@ -776,7 +776,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-messages", "bp-runtime", @@ -794,7 +794,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -811,7 +811,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "hash-db", @@ -829,7 +829,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -844,7 +844,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -859,7 +859,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2081,6 +2081,7 @@ dependencies = [ "sc-consensus-babe", "sc-network", "sc-service", + "sc-sysinfo", "sc-telemetry", "sc-tracing", "sp-api", @@ -2841,7 +2842,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", ] @@ -2859,7 +2860,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -2881,7 +2882,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "Inflector", "chrono", @@ -2929,7 +2930,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2940,7 +2941,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2956,7 +2957,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -2984,7 +2985,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "bitflags", "frame-metadata", @@ -3014,7 +3015,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3026,7 +3027,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3038,7 +3039,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro2", "quote", @@ -3048,7 +3049,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "log", @@ -3065,7 +3066,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -3080,7 +3081,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "sp-api", @@ -3089,7 +3090,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "sp-api", @@ -4208,7 +4209,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-primitives", "bitvec", @@ -4299,7 +4300,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "polkadot-primitives", @@ -5162,7 +5163,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5688,7 +5689,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -5704,7 +5705,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -5719,7 +5720,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5743,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5763,7 +5764,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5778,7 +5779,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "beefy-primitives", "frame-support", @@ -5794,7 +5795,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5817,7 +5818,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5835,7 +5836,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5852,7 +5853,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5874,7 +5875,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5895,7 +5896,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5940,7 +5941,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6041,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6057,7 +6058,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6080,7 +6081,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6093,7 +6094,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6111,7 +6112,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6126,7 +6127,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6149,7 +6150,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6165,7 +6166,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6202,7 +6203,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6219,7 +6220,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6237,7 +6238,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6254,7 +6255,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6269,7 +6270,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6283,7 +6284,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6300,7 +6301,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6323,7 +6324,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6339,7 +6340,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6368,7 +6369,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6382,7 +6383,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6398,7 +6399,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6419,7 +6420,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6435,7 +6436,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6449,7 +6450,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6472,7 +6473,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6483,7 +6484,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "sp-arithmetic", @@ -6492,7 +6493,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6521,7 +6522,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6539,7 +6540,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6558,7 +6559,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-support", "frame-system", @@ -6575,7 +6576,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6592,7 +6593,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6603,7 +6604,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6635,7 +6636,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6651,7 +6652,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6666,7 +6667,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "frame-system", @@ -6684,7 +6685,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-benchmarking", "frame-support", @@ -6750,6 +6751,7 @@ dependencies = [ "sc-rpc", "sc-rpc-api", "sc-service", + "sc-sysinfo", "sc-telemetry", "sc-tracing", "sc-transaction-pool", @@ -7234,7 +7236,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7249,7 +7251,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7262,7 +7264,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "derive_more", "fatality", @@ -7285,7 +7287,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "fatality", "futures 0.3.21", @@ -7306,7 +7308,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "clap 3.1.12", "frame-benchmarking-cli", @@ -7319,6 +7321,7 @@ dependencies = [ "polkadot-service", "sc-cli", "sc-service", + "sc-sysinfo", "sc-tracing", "sp-core", "sp-trie", @@ -7330,7 +7333,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7411,6 +7414,7 @@ dependencies = [ "sc-network", "sc-rpc", "sc-service", + "sc-sysinfo", "sc-telemetry", "sc-tracing", "sc-transaction-pool", @@ -7446,7 +7450,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "always-assert", "fatality", @@ -7467,7 +7471,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7480,7 +7484,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "derive_more", "fatality", @@ -7503,7 +7507,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7517,7 +7521,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7537,9 +7541,11 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ + "always-assert", "async-trait", + "bytes 1.1.0", "futures 0.3.21", "parity-scale-codec", "parking_lot 0.12.0", @@ -7556,7 +7562,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7574,7 +7580,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "derive_more", @@ -7603,7 +7609,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "futures 0.3.21", @@ -7623,7 +7629,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "futures 0.3.21", @@ -7641,7 +7647,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7656,7 +7662,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", "futures 0.3.21", @@ -7674,7 +7680,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7689,7 +7695,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7706,7 +7712,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "fatality", "futures 0.3.21", @@ -7725,7 +7731,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", "futures 0.3.21", @@ -7742,7 +7748,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "futures 0.3.21", @@ -7759,7 +7765,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "always-assert", "assert_matches", @@ -7789,7 +7795,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7805,7 +7811,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7823,7 +7829,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-std", "lazy_static", @@ -7841,7 +7847,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bs58", "futures 0.3.21", @@ -7860,15 +7866,17 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", + "derive_more", "fatality", "futures 0.3.21", "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-primitives", + "rand 0.8.5", "sc-authority-discovery", "sc-network", "strum 0.24.0", @@ -7878,7 +7886,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7900,7 +7908,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7910,7 +7918,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", "futures 0.3.21", @@ -7928,7 +7936,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "derive_more", "futures 0.3.21", @@ -7947,7 +7955,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", "derive_more", @@ -7980,7 +7988,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8001,7 +8009,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", "futures 0.3.21", @@ -8018,7 +8026,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8030,7 +8038,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "derive_more", "frame-support", @@ -8047,7 +8055,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8062,7 +8070,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitvec", "frame-system", @@ -8092,7 +8100,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8124,7 +8132,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-primitives", "bitvec", @@ -8210,7 +8218,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-primitives", "bitvec", @@ -8257,7 +8265,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "polkadot-primitives", @@ -8269,7 +8277,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bs58", "parity-scale-codec", @@ -8281,7 +8289,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "bitflags", "bitvec", @@ -8324,7 +8332,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "async-trait", "beefy-gadget", @@ -8393,9 +8401,11 @@ dependencies = [ "sc-offchain", "sc-service", "sc-sync-state-rpc", + "sc-sysinfo", "sc-telemetry", "sc-transaction-pool", "serde", + "serde_json", "sp-api", "sp-authority-discovery", "sp-block-builder", @@ -8424,7 +8434,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8445,7 +8455,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8455,7 +8465,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8480,7 +8490,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-primitives", "bitvec", @@ -8542,7 +8552,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-benchmarking", "frame-system", @@ -9116,7 +9126,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9244,7 +9254,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9321,7 +9331,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "polkadot-primitives", @@ -9522,7 +9532,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "sp-core", @@ -9533,7 +9543,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9560,7 +9570,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9583,7 +9593,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9599,7 +9609,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9616,7 +9626,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9627,7 +9637,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "chrono", "clap 3.1.12", @@ -9642,6 +9652,7 @@ dependencies = [ "regex", "rpassword", "sc-client-api", + "sc-client-db", "sc-keystore", "sc-network", "sc-service", @@ -9665,7 +9676,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "fnv", "futures 0.3.21", @@ -9693,7 +9704,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "hash-db", "kvdb", @@ -9718,7 +9729,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9771,7 +9782,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "fork-tree", @@ -9814,7 +9825,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9838,7 +9849,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9851,7 +9862,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9876,7 +9887,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "sc-client-api", "sp-authorship", @@ -9887,7 +9898,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9914,7 +9925,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "environmental", "parity-scale-codec", @@ -9931,7 +9942,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "parity-scale-codec", @@ -9947,7 +9958,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9965,7 +9976,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "ahash", "async-trait", @@ -10005,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10029,7 +10040,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10046,7 +10057,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "hex", @@ -10061,7 +10072,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -10110,7 +10121,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "ahash", "futures 0.3.21", @@ -10127,7 +10138,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "bytes 1.1.0", "fnv", @@ -10155,7 +10166,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "libp2p", @@ -10168,7 +10179,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10177,7 +10188,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "hash-db", @@ -10208,7 +10219,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10234,7 +10245,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10251,7 +10262,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "directories", @@ -10316,7 +10327,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "parity-scale-codec", @@ -10330,7 +10341,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10351,7 +10362,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "libc", @@ -10370,7 +10381,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "chrono", "futures 0.3.21", @@ -10388,7 +10399,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "ansi_term", "atty", @@ -10419,7 +10430,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10430,7 +10441,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10457,7 +10468,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "log", @@ -10470,7 +10481,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10943,7 +10954,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "enumn", "parity-scale-codec", @@ -11031,7 +11042,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "hash-db", "log", @@ -11048,7 +11059,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "blake2 0.10.2", "proc-macro-crate 1.1.3", @@ -11060,7 +11071,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11073,7 +11084,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "integer-sqrt", "num-traits", @@ -11088,7 +11099,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11101,7 +11112,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "parity-scale-codec", @@ -11113,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "sp-api", @@ -11125,7 +11136,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "log", @@ -11143,7 +11154,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures 0.3.21", @@ -11180,7 +11191,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "merlin", @@ -11203,7 +11214,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11217,7 +11228,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11229,7 +11240,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "base58", "bitflags", @@ -11275,7 +11286,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "blake2 0.10.2", "byteorder", @@ -11289,7 +11300,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro2", "quote", @@ -11300,7 +11311,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11309,7 +11320,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "proc-macro2", "quote", @@ -11319,7 +11330,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "environmental", "parity-scale-codec", @@ -11330,7 +11341,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "finality-grandpa", "log", @@ -11348,7 +11359,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11362,7 +11373,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures 0.3.21", "hash-db", @@ -11387,7 +11398,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "lazy_static", "sp-core", @@ -11398,7 +11409,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures 0.3.21", @@ -11415,7 +11426,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "thiserror", "zstd", @@ -11424,7 +11435,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "parity-scale-codec", @@ -11439,7 +11450,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11453,7 +11464,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "sp-api", "sp-core", @@ -11463,7 +11474,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "backtrace", "lazy_static", @@ -11473,7 +11484,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "rustc-hash", "serde", @@ -11483,7 +11494,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "either", "hash256-std-hasher", @@ -11505,7 +11516,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11522,7 +11533,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11548,7 +11559,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "serde", "serde_json", @@ -11557,7 +11568,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11571,7 +11582,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11582,7 +11593,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "hash-db", "log", @@ -11604,12 +11615,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11622,7 +11633,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "log", "sp-core", @@ -11635,7 +11646,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures-timer", @@ -11651,7 +11662,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "sp-std", @@ -11663,7 +11674,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "sp-api", "sp-runtime", @@ -11672,7 +11683,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "log", @@ -11688,7 +11699,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "hash-db", "memory-db", @@ -11704,7 +11715,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11721,7 +11732,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11732,7 +11743,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "impl-trait-for-tuples", "log", @@ -12013,7 +12024,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "platforms", ] @@ -12021,7 +12032,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12043,7 +12054,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "futures-util", "hyper", @@ -12056,7 +12067,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12079,7 +12090,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "async-trait", "futures 0.3.21", @@ -12126,7 +12137,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "ansi_term", "build-helper", @@ -12223,7 +12234,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "polkadot-primitives", @@ -12502,9 +12513,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.22" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23" +checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" dependencies = [ "lazy_static", "valuable", @@ -12523,7 +12534,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12534,7 +12545,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12545,12 +12556,14 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" dependencies = [ + "ahash", "lazy_static", "log", + "lru 0.7.5", "tracing-core", ] @@ -12661,7 +12674,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" dependencies = [ "clap 3.1.12", "jsonrpsee 0.10.1", @@ -13283,7 +13296,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "beefy-primitives", "bitvec", @@ -13370,7 +13383,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "polkadot-primitives", @@ -13590,7 +13603,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13603,7 +13616,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-support", "frame-system", @@ -13623,7 +13636,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "frame-benchmarking", "frame-support", @@ -13641,7 +13654,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#394446bb37e2ab53582cc92fbdecf1f254c1073d" +source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 96e0c4d87a..f53b472e4d 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -18,6 +18,7 @@ sc-network = { 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-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-api = { 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" } diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index 55e8c567e6..437bb7491b 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -327,6 +327,7 @@ fn build_polkadot_full_node( config: Configuration, parachain_config: &Configuration, telemetry_worker_handle: Option, + hwbench: Option, ) -> Result<(NewFull, Option), polkadot_service::Error> { let is_light = matches!(config.role, Role::Light); if is_light { @@ -348,6 +349,7 @@ fn build_polkadot_full_node( telemetry_worker_handle, true, polkadot_service::RealOverseerGen, + hwbench, )?; Ok((relay_chain_full_node, maybe_collator_key)) @@ -360,9 +362,14 @@ pub fn build_inprocess_relay_chain( parachain_config: &Configuration, telemetry_worker_handle: Option, task_manager: &mut TaskManager, + hwbench: Option, ) -> RelayChainResult<(Arc<(dyn RelayChainInterface + 'static)>, Option)> { - let (full_node, collator_key) = - build_polkadot_full_node(polkadot_config, parachain_config, telemetry_worker_handle)?; + let (full_node, collator_key) = build_polkadot_full_node( + polkadot_config, + parachain_config, + telemetry_worker_handle, + hwbench, + )?; let sync_oracle: Box = Box::new(full_node.network.clone()); let sync_oracle = Arc::new(Mutex::new(sync_oracle)); diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 31e58aac35..2151bd8857 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -40,6 +40,7 @@ sc-network = { 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-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-telemetry = { 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" } diff --git a/parachain-template/node/src/cli.rs b/parachain-template/node/src/cli.rs index b2e7019f69..0d36120a47 100644 --- a/parachain-template/node/src/cli.rs +++ b/parachain-template/node/src/cli.rs @@ -88,6 +88,16 @@ pub struct Cli { #[clap(flatten)] pub run: cumulus_client_cli::RunCmd, + /// Disable automatic hardware benchmarks. + /// + /// By default these benchmarks are automatically ran at startup and measure + /// the CPU speed, the memory bandwidth and the disk speed. + /// + /// The results are then printed out in the logs, and also sent as part of + /// telemetry, if telemetry is enabled. + #[clap(long)] + pub no_hardware_benchmarks: bool, + /// Relay chain arguments #[clap(raw = true)] pub relay_chain_args: Vec, diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index a721edb7e7..f1e5f17498 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -287,6 +287,15 @@ pub fn run() -> Result<()> { let collator_options = cli.run.collator_options(); runner.run_node_until_exit(|config| async move { + let hwbench = if !cli.no_hardware_benchmarks { + config.database.path().map(|database_path| { + let _ = std::fs::create_dir_all(&database_path); + sc_sysinfo::gather_hwbench(Some(database_path)) + }) + } else { + None + }; + let para_id = chain_spec::Extensions::try_get(&*config.chain_spec) .map(|e| e.para_id) .ok_or_else(|| "Could not find parachain ID in chain-spec.")?; @@ -317,10 +326,16 @@ pub fn run() -> Result<()> { info!("Parachain genesis state: {}", genesis_state); info!("Is collating: {}", if config.role.is_authority() { "yes" } else { "no" }); - crate::service::start_parachain_node(config, polkadot_config, collator_options, id) - .await - .map(|r| r.0) - .map_err(Into::into) + crate::service::start_parachain_node( + config, + polkadot_config, + collator_options, + id, + hwbench, + ) + .await + .map(|r| r.0) + .map_err(Into::into) }) }, } diff --git a/parachain-template/node/src/service.rs b/parachain-template/node/src/service.rs index 108d7c1851..3d1c65dd40 100644 --- a/parachain-template/node/src/service.rs +++ b/parachain-template/node/src/service.rs @@ -170,6 +170,7 @@ async fn build_relay_chain_interface( telemetry_worker_handle: Option, task_manager: &mut TaskManager, collator_options: CollatorOptions, + hwbench: Option, ) -> RelayChainResult<(Arc<(dyn RelayChainInterface + 'static)>, Option)> { match collator_options.relay_chain_rpc_url { Some(relay_chain_url) => @@ -179,6 +180,7 @@ async fn build_relay_chain_interface( parachain_config, telemetry_worker_handle, task_manager, + hwbench, ), } } @@ -195,6 +197,7 @@ async fn start_node_impl( _rpc_ext_builder: RB, build_import_queue: BIQ, build_consensus: BIC, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -270,6 +273,7 @@ where telemetry_worker_handle, &mut task_manager, collator_options.clone(), + hwbench.clone(), ) .await .map_err(|e| match e { @@ -325,6 +329,19 @@ where telemetry: telemetry.as_mut(), })?; + if let Some(hwbench) = hwbench { + sc_sysinfo::print_hwbench(&hwbench); + + if let Some(ref mut telemetry) = telemetry { + let telemetry_handle = telemetry.handle(); + task_manager.spawn_handle().spawn( + "telemetry_hwbench", + None, + sc_sysinfo::initialize_hwbench_telemetry(telemetry_handle, hwbench), + ); + } + } + let announce_block = { let network = network.clone(); Arc::new(move |hash, data| network.announce_block(hash, data)) @@ -434,6 +451,7 @@ pub async fn start_parachain_node( polkadot_config: Configuration, collator_options: CollatorOptions, id: ParaId, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -508,6 +526,7 @@ pub async fn start_parachain_node( }, )) }, + hwbench, ) .await } diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 2bfe0759cb..d2a6e222f2 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -58,6 +58,7 @@ sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "master sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "master" } substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } try-runtime-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-transaction-pool-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot-parachains/src/cli.rs b/polkadot-parachains/src/cli.rs index 6a9106c7ee..31ecb8a5aa 100644 --- a/polkadot-parachains/src/cli.rs +++ b/polkadot-parachains/src/cli.rs @@ -109,6 +109,16 @@ pub struct Cli { #[clap(flatten)] pub run: cumulus_client_cli::RunCmd, + /// Disable automatic hardware benchmarks. + /// + /// By default these benchmarks are automatically ran at startup and measure + /// the CPU speed, the memory bandwidth and the disk speed. + /// + /// The results are then printed out in the logs, and also sent as part of + /// telemetry, if telemetry is enabled. + #[clap(long)] + pub no_hardware_benchmarks: bool, + /// Relay chain arguments #[clap(raw = true, conflicts_with = "relay-chain-rpc-url")] pub relaychain_args: Vec, diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index f1f81017ba..289ae90008 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -543,6 +543,15 @@ pub fn run() -> Result<()> { let collator_options = cli.run.collator_options(); runner.run_node_until_exit(|config| async move { + let hwbench = if !cli.no_hardware_benchmarks { + config.database.path().map(|database_path| { + let _ = std::fs::create_dir_all(&database_path); + sc_sysinfo::gather_hwbench(Some(database_path)) + }) + } else { + None + }; + let para_id = chain_spec::Extensions::try_get(&*config.chain_spec) .map(|e| e.para_id) .ok_or_else(|| "Could not find parachain extension in chain-spec.")?; @@ -581,7 +590,7 @@ pub fn run() -> Result<()> { crate::service::start_statemint_node::< statemint_runtime::RuntimeApi, StatemintAuraId, - >(config, polkadot_config, collator_options, id) + >(config, polkadot_config, collator_options, id, hwbench) .await .map(|r| r.0) .map_err(Into::into) @@ -591,6 +600,7 @@ pub fn run() -> Result<()> { polkadot_config, collator_options, id, + hwbench, ) .await .map(|r| r.0) @@ -601,6 +611,7 @@ pub fn run() -> Result<()> { polkadot_config, collator_options, id, + hwbench, ) .await .map(|r| r.0) @@ -611,6 +622,7 @@ pub fn run() -> Result<()> { polkadot_config, collator_options, id, + hwbench, ) .await .map(|r| r.0) @@ -621,6 +633,7 @@ pub fn run() -> Result<()> { polkadot_config, collator_options, id, + hwbench, ) .await .map(|r| r.0) @@ -631,6 +644,7 @@ pub fn run() -> Result<()> { polkadot_config, collator_options, id, + hwbench, ) .await .map(|r| r.0) @@ -641,6 +655,7 @@ pub fn run() -> Result<()> { polkadot_config, collator_options, id, + hwbench, ) .await .map(|r| r.0) diff --git a/polkadot-parachains/src/service.rs b/polkadot-parachains/src/service.rs index 368b281cb0..ed84e02bc2 100644 --- a/polkadot-parachains/src/service.rs +++ b/polkadot-parachains/src/service.rs @@ -291,6 +291,7 @@ async fn build_relay_chain_interface( telemetry_worker_handle: Option, task_manager: &mut TaskManager, collator_options: CollatorOptions, + hwbench: Option, ) -> RelayChainResult<(Arc<(dyn RelayChainInterface + 'static)>, Option)> { match collator_options.relay_chain_rpc_url { Some(relay_chain_url) => @@ -300,6 +301,7 @@ async fn build_relay_chain_interface( parachain_config, telemetry_worker_handle, task_manager, + hwbench, ), } } @@ -316,6 +318,7 @@ async fn start_shell_node_impl( rpc_ext_builder: RB, build_import_queue: BIQ, build_consensus: BIC, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -389,6 +392,7 @@ where telemetry_worker_handle, &mut task_manager, collator_options.clone(), + hwbench.clone(), ) .await .map_err(|e| match e { @@ -432,6 +436,19 @@ where telemetry: telemetry.as_mut(), })?; + if let Some(hwbench) = hwbench { + sc_sysinfo::print_hwbench(&hwbench); + + if let Some(ref mut telemetry) = telemetry { + let telemetry_handle = telemetry.handle(); + task_manager.spawn_handle().spawn( + "telemetry_hwbench", + None, + sc_sysinfo::initialize_hwbench_telemetry(telemetry_handle, hwbench), + ); + } + } + let announce_block = { let network = network.clone(); Arc::new(move |hash, data| network.announce_block(hash, data)) @@ -501,6 +518,7 @@ async fn start_node_impl( _rpc_ext_builder: RB, build_import_queue: BIQ, build_consensus: BIC, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -575,6 +593,7 @@ where telemetry_worker_handle, &mut task_manager, collator_options.clone(), + hwbench.clone(), ) .await .map_err(|e| match e { @@ -630,6 +649,19 @@ where telemetry: telemetry.as_mut(), })?; + if let Some(hwbench) = hwbench { + sc_sysinfo::print_hwbench(&hwbench); + + if let Some(ref mut telemetry) = telemetry { + let telemetry_handle = telemetry.handle(); + task_manager.spawn_handle().spawn( + "telemetry_hwbench", + None, + sc_sysinfo::initialize_hwbench_telemetry(telemetry_handle, hwbench), + ); + } + } + let announce_block = { let network = network.clone(); Arc::new(move |hash, data| network.announce_block(hash, data)) @@ -740,6 +772,7 @@ pub async fn start_rococo_parachain_node( polkadot_config: Configuration, collator_options: CollatorOptions, id: ParaId, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -817,6 +850,7 @@ pub async fn start_rococo_parachain_node( }, )) }, + hwbench, ) .await } @@ -865,6 +899,7 @@ pub async fn start_shell_node( polkadot_config: Configuration, collator_options: CollatorOptions, id: ParaId, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -936,6 +971,7 @@ where }, )) }, + hwbench, ) .await } @@ -1133,6 +1169,7 @@ pub async fn start_statemint_node( polkadot_config: Configuration, collator_options: CollatorOptions, id: ParaId, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -1289,6 +1326,7 @@ where Ok(parachain_consensus) }, + hwbench, ) .await } @@ -1302,6 +1340,7 @@ async fn start_canvas_kusama_node_impl( _rpc_ext_builder: RB, build_import_queue: BIQ, build_consensus: BIC, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -1377,6 +1416,7 @@ where telemetry_worker_handle, &mut task_manager, collator_options.clone(), + hwbench.clone(), ) .await .map_err(|e| match e { @@ -1432,6 +1472,19 @@ where telemetry: telemetry.as_mut(), })?; + if let Some(hwbench) = hwbench { + sc_sysinfo::print_hwbench(&hwbench); + + if let Some(ref mut telemetry) = telemetry { + let telemetry_handle = telemetry.handle(); + task_manager.spawn_handle().spawn( + "telemetry_hwbench", + None, + sc_sysinfo::initialize_hwbench_telemetry(telemetry_handle, hwbench), + ); + } + } + let announce_block = { let network = network.clone(); Arc::new(move |hash, data| network.announce_block(hash, data)) @@ -1540,6 +1593,7 @@ pub async fn start_canvas_kusama_node( polkadot_config: Configuration, collator_options: CollatorOptions, id: ParaId, + hwbench: Option, ) -> sc_service::error::Result<( TaskManager, Arc>>, @@ -1616,6 +1670,7 @@ pub async fn start_canvas_kusama_node( }, )) }, + hwbench, ) .await } From 598755cf3c08551ef095e5fffa808d04ec11eb20 Mon Sep 17 00:00:00 2001 From: Oliver Tale-Yazdi Date: Tue, 26 Apr 2022 19:46:13 +0200 Subject: [PATCH 024/238] Co #11270: Update benchmark machine command (#1214) * Use polkadot reference hardware for benchmark machine Signed-off-by: Oliver Tale-Yazdi * Rename POLKADOT_REFERENCE_HARDWARE -> SUBSTRATE_REFERENCE_HARDWARE Signed-off-by: Oliver Tale-Yazdi * cargo update -p polkadot-primitives Signed-off-by: Oliver Tale-Yazdi * Revert "cargo update -p polkadot-primitives" This reverts commit 051d51c5ab3fdd80c6351e16d3255efc67288136. * cargo update -p polkadot-primitives Signed-off-by: Oliver Tale-Yazdi --- Cargo.lock | 489 +++++++++++++------------ parachain-template/node/src/command.rs | 5 +- polkadot-parachains/src/command.rs | 5 +- 3 files changed, 252 insertions(+), 247 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad2b8b3994..9a33ae5fd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -452,7 +452,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "beefy-primitives", "fnv", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-runtime", "finality-grandpa", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-runtime", "frame-support", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "bp-runtime", @@ -776,7 +776,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-messages", "bp-runtime", @@ -794,7 +794,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -811,7 +811,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "hash-db", @@ -829,7 +829,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -844,7 +844,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -859,7 +859,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2842,7 +2842,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", ] @@ -2860,7 +2860,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -2882,7 +2882,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "Inflector", "chrono", @@ -2895,6 +2895,7 @@ dependencies = [ "hex", "itertools", "kvdb", + "lazy_static", "linked-hash-map", "log", "memory-db", @@ -2924,13 +2925,14 @@ dependencies = [ "sp-storage", "sp-trie", "tempfile", + "thiserror", "thousands", ] [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2941,7 +2943,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2957,7 +2959,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -2985,7 +2987,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "bitflags", "frame-metadata", @@ -3015,7 +3017,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3027,7 +3029,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3039,7 +3041,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro2", "quote", @@ -3049,7 +3051,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "log", @@ -3066,7 +3068,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -3081,7 +3083,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "sp-api", @@ -3090,7 +3092,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "sp-api", @@ -4209,7 +4211,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-primitives", "bitvec", @@ -4300,7 +4302,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "polkadot-primitives", @@ -5163,7 +5165,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5689,7 +5691,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -5705,7 +5707,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -5720,7 +5722,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5744,7 +5746,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5764,7 +5766,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5779,7 +5781,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "beefy-primitives", "frame-support", @@ -5795,7 +5797,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5818,7 +5820,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5836,7 +5838,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5853,7 +5855,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5875,7 +5877,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5896,7 +5898,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5941,7 +5943,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6042,7 +6044,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6058,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6081,7 +6083,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6094,7 +6096,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6112,7 +6114,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6127,7 +6129,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6150,7 +6152,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6166,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6186,7 +6188,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6203,7 +6205,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6220,7 +6222,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6238,7 +6240,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6255,7 +6257,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6270,7 +6272,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -6284,7 +6286,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -6301,7 +6303,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6324,7 +6326,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6340,7 +6342,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6369,8 +6371,9 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ + "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", @@ -6383,7 +6386,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6399,7 +6402,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -6420,7 +6423,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6436,7 +6439,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -6450,7 +6453,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6473,7 +6476,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6484,7 +6487,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "sp-arithmetic", @@ -6493,7 +6496,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -6522,7 +6525,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6540,7 +6543,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6559,7 +6562,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-support", "frame-system", @@ -6576,7 +6579,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6593,7 +6596,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6604,7 +6607,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6636,7 +6639,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6652,7 +6655,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6667,7 +6670,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "frame-system", @@ -6685,7 +6688,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-benchmarking", "frame-support", @@ -7236,7 +7239,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7251,7 +7254,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7264,7 +7267,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "derive_more", "fatality", @@ -7287,7 +7290,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "fatality", "futures 0.3.21", @@ -7308,7 +7311,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "clap 3.1.12", "frame-benchmarking-cli", @@ -7333,7 +7336,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7450,7 +7453,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "always-assert", "fatality", @@ -7471,7 +7474,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7484,7 +7487,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "derive_more", "fatality", @@ -7507,7 +7510,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7521,7 +7524,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7541,7 +7544,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "always-assert", "async-trait", @@ -7562,7 +7565,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7580,7 +7583,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "derive_more", @@ -7609,7 +7612,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "futures 0.3.21", @@ -7629,7 +7632,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "futures 0.3.21", @@ -7647,7 +7650,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7662,7 +7665,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "futures 0.3.21", @@ -7680,7 +7683,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7695,7 +7698,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7712,7 +7715,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "fatality", "futures 0.3.21", @@ -7731,7 +7734,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "futures 0.3.21", @@ -7748,7 +7751,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "futures 0.3.21", @@ -7765,7 +7768,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "always-assert", "assert_matches", @@ -7795,7 +7798,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7811,7 +7814,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7829,7 +7832,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-std", "lazy_static", @@ -7847,7 +7850,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bs58", "futures 0.3.21", @@ -7866,7 +7869,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "derive_more", @@ -7886,7 +7889,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7908,7 +7911,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7918,7 +7921,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "futures 0.3.21", @@ -7936,7 +7939,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "derive_more", "futures 0.3.21", @@ -7955,7 +7958,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "derive_more", @@ -7988,7 +7991,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8009,7 +8012,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "futures 0.3.21", @@ -8026,7 +8029,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8038,7 +8041,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "derive_more", "frame-support", @@ -8055,7 +8058,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8070,7 +8073,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitvec", "frame-system", @@ -8100,7 +8103,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8132,7 +8135,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-primitives", "bitvec", @@ -8218,7 +8221,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-primitives", "bitvec", @@ -8265,7 +8268,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "polkadot-primitives", @@ -8277,7 +8280,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bs58", "parity-scale-codec", @@ -8289,7 +8292,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "bitflags", "bitvec", @@ -8332,7 +8335,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "async-trait", "beefy-gadget", @@ -8434,7 +8437,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8455,7 +8458,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8465,7 +8468,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8490,7 +8493,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-primitives", "bitvec", @@ -8552,7 +8555,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-benchmarking", "frame-system", @@ -9126,7 +9129,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9254,7 +9257,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9331,7 +9334,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "polkadot-primitives", @@ -9532,7 +9535,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "sp-core", @@ -9543,7 +9546,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures 0.3.21", @@ -9570,7 +9573,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9593,7 +9596,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9609,7 +9612,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9626,7 +9629,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9637,7 +9640,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "chrono", "clap 3.1.12", @@ -9676,7 +9679,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "fnv", "futures 0.3.21", @@ -9704,7 +9707,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "hash-db", "kvdb", @@ -9729,7 +9732,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures 0.3.21", @@ -9782,7 +9785,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "fork-tree", @@ -9825,7 +9828,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9849,7 +9852,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9862,7 +9865,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures 0.3.21", @@ -9887,7 +9890,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "sc-client-api", "sp-authorship", @@ -9898,7 +9901,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9925,13 +9928,13 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "environmental", "parity-scale-codec", "sc-allocator", - "sp-core", "sp-maybe-compressed-blob", + "sp-sandbox", "sp-serializer", "sp-wasm-interface", "thiserror", @@ -9942,15 +9945,15 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "parity-scale-codec", "sc-allocator", "sc-executor-common", "scoped-tls", - "sp-core", "sp-runtime-interface", + "sp-sandbox", "sp-wasm-interface", "wasmi", ] @@ -9958,7 +9961,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9967,8 +9970,8 @@ dependencies = [ "parity-wasm 0.42.2", "sc-allocator", "sc-executor-common", - "sp-core", "sp-runtime-interface", + "sp-sandbox", "sp-wasm-interface", "wasmtime", ] @@ -9976,7 +9979,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "ahash", "async-trait", @@ -10016,7 +10019,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10040,7 +10043,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10057,7 +10060,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "hex", @@ -10072,7 +10075,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -10121,7 +10124,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "ahash", "futures 0.3.21", @@ -10138,7 +10141,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "bytes 1.1.0", "fnv", @@ -10166,7 +10169,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "libp2p", @@ -10179,7 +10182,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10188,7 +10191,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "hash-db", @@ -10219,7 +10222,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10245,7 +10248,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10262,7 +10265,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "directories", @@ -10327,7 +10330,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "parity-scale-codec", @@ -10341,7 +10344,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10362,7 +10365,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "libc", @@ -10381,7 +10384,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "chrono", "futures 0.3.21", @@ -10399,7 +10402,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "ansi_term", "atty", @@ -10430,7 +10433,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10441,7 +10444,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10468,7 +10471,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "log", @@ -10481,7 +10484,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10954,7 +10957,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "enumn", "parity-scale-codec", @@ -11042,7 +11045,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "hash-db", "log", @@ -11059,7 +11062,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "blake2 0.10.2", "proc-macro-crate 1.1.3", @@ -11071,7 +11074,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11084,7 +11087,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "integer-sqrt", "num-traits", @@ -11099,7 +11102,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11112,7 +11115,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "parity-scale-codec", @@ -11124,7 +11127,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "sp-api", @@ -11136,7 +11139,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "log", @@ -11154,7 +11157,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures 0.3.21", @@ -11191,7 +11194,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "merlin", @@ -11214,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11228,7 +11231,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11240,7 +11243,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "base58", "bitflags", @@ -11286,7 +11289,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "blake2 0.10.2", "byteorder", @@ -11300,7 +11303,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro2", "quote", @@ -11311,7 +11314,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11320,7 +11323,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "proc-macro2", "quote", @@ -11330,7 +11333,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "environmental", "parity-scale-codec", @@ -11341,7 +11344,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "finality-grandpa", "log", @@ -11359,7 +11362,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11373,7 +11376,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures 0.3.21", "hash-db", @@ -11398,7 +11401,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "lazy_static", "sp-core", @@ -11409,7 +11412,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures 0.3.21", @@ -11426,7 +11429,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "thiserror", "zstd", @@ -11435,7 +11438,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "parity-scale-codec", @@ -11450,7 +11453,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11464,7 +11467,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "sp-api", "sp-core", @@ -11474,7 +11477,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "backtrace", "lazy_static", @@ -11484,7 +11487,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "rustc-hash", "serde", @@ -11494,7 +11497,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "either", "hash256-std-hasher", @@ -11516,7 +11519,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11533,7 +11536,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11559,7 +11562,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "serde", "serde_json", @@ -11568,7 +11571,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11582,7 +11585,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11593,7 +11596,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "hash-db", "log", @@ -11615,12 +11618,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11633,7 +11636,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "log", "sp-core", @@ -11646,7 +11649,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures-timer", @@ -11662,7 +11665,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "sp-std", @@ -11674,7 +11677,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "sp-api", "sp-runtime", @@ -11683,7 +11686,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "log", @@ -11699,7 +11702,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "hash-db", "memory-db", @@ -11715,7 +11718,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11732,7 +11735,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11743,7 +11746,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "impl-trait-for-tuples", "log", @@ -12024,7 +12027,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "platforms", ] @@ -12032,7 +12035,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12054,7 +12057,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "futures-util", "hyper", @@ -12067,7 +12070,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12090,7 +12093,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "async-trait", "futures 0.3.21", @@ -12137,7 +12140,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "ansi_term", "build-helper", @@ -12234,7 +12237,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "polkadot-primitives", @@ -12534,7 +12537,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12545,7 +12548,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12674,7 +12677,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6f11d9281c06c6dd980e1c2ee2d7d680cb7682bb" +source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" dependencies = [ "clap 3.1.12", "jsonrpsee 0.10.1", @@ -13296,7 +13299,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "beefy-primitives", "bitvec", @@ -13383,7 +13386,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "polkadot-primitives", @@ -13603,7 +13606,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13616,7 +13619,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-support", "frame-system", @@ -13636,7 +13639,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "frame-benchmarking", "frame-support", @@ -13654,7 +13657,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#15444a6e77c784abb8f2635ec4fd0c9f7a29e138" +source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index f1e5f17498..4b8db2e250 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -6,7 +6,7 @@ use crate::{ use codec::Encode; use cumulus_client_service::genesis::generate_genesis_block; use cumulus_primitives_core::ParaId; -use frame_benchmarking_cli::BenchmarkCmd; +use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; use parachain_template_runtime::{Block, RuntimeApi}; use polkadot_parachain::primitives::AccountIdConversion; @@ -262,7 +262,8 @@ pub fn run() -> Result<()> { cmd.run(config, partials.client.clone(), db, storage) }), BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()), - BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config)), + BenchmarkCmd::Machine(cmd) => + runner.sync_run(|config| cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())), } }, Some(Subcommand::TryRuntime(cmd)) => { diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 289ae90008..77293e49b4 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -25,7 +25,7 @@ use crate::{ use codec::Encode; use cumulus_client_service::genesis::generate_genesis_block; use cumulus_primitives_core::ParaId; -use frame_benchmarking_cli::BenchmarkCmd; +use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; use parachains_common::{AuraId, StatemintAuraId}; use polkadot_parachain::primitives::AccountIdConversion; @@ -502,7 +502,8 @@ pub fn run() -> Result<()> { }) }), BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()), - BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config)), + BenchmarkCmd::Machine(cmd) => + runner.sync_run(|config| cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())), } }, Some(Subcommand::TryRuntime(cmd)) => { From 423a7f5a3777b21bd8193cd3e8bd54afe088c633 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Apr 2022 10:56:12 +0200 Subject: [PATCH 025/238] Bump tokio from 1.17.0 to 1.18.0 (#1220) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.17.0 to 1.18.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.17.0...tokio-1.18.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 11 ++++++----- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9a33ae5fd1..2d9458a019 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5225,14 +5225,15 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" dependencies = [ "libc", "log", "miow 0.3.7", "ntapi", + "wasi 0.11.0+wasi-snapshot-preview1", "winapi 0.3.9", ] @@ -12386,14 +12387,14 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "0f48b6d60512a392e34dbf7fd456249fd2de3c83669ab642e021903f4015185b" dependencies = [ "bytes 1.1.0", "libc", "memchr", - "mio 0.8.0", + "mio 0.8.2", "num_cpus", "once_cell", "parking_lot 0.12.0", diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index a2cc2a8ea7..2b58f78fe1 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -33,7 +33,7 @@ cumulus-relay-chain-interface = { path = "../relay-chain-interface" } [dev-dependencies] portpicker = "0.1.1" -tokio = { version = "1.17.0", features = ["macros"] } +tokio = { version = "1.18.0", features = ["macros"] } url = "2.2.2" # Substrate diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index d5c2e33f72..d70342350a 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -31,7 +31,7 @@ cumulus-primitives-core = { path = "../../primitives/core" } cumulus-relay-chain-interface = {path = "../relay-chain-interface"} [dev-dependencies] -tokio = { version = "1.17.0", features = ["macros"] } +tokio = { version = "1.18.0", features = ["macros"] } # Cumulus cumulus-test-service = { path = "../../test/service" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 5d27ad1542..9af72cc8f8 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -12,7 +12,7 @@ jsonrpc-core = "18.0.0" parking_lot = "0.12.0" rand = "0.8.5" serde = { version = "1.0.132", features = ["derive"] } -tokio = { version = "1.17.0", features = ["macros"] } +tokio = { version = "1.18.0", features = ["macros"] } url = "2.2.2" # Substrate From c309952ea4b0271475200bd7c0158098b1168942 Mon Sep 17 00:00:00 2001 From: Joshua W <64296537+HashWarlock@users.noreply.github.com> Date: Thu, 28 Apr 2022 07:10:52 -0500 Subject: [PATCH 026/238] Companion for #11025 (Uniques Locker Trait) (#1085) * Add Locker trait to pallet_uniques * update lockfile for {"substrate"} * Updated lock file to latest master substrate and polkadot Co-authored-by: Shawn Tabrizi Co-authored-by: Giles Cope Co-authored-by: parity-processbot <> --- Cargo.lock | 518 +++++++++++------------ polkadot-parachains/statemine/src/lib.rs | 1 + polkadot-parachains/statemint/src/lib.rs | 1 + polkadot-parachains/westmint/src/lib.rs | 1 + 4 files changed, 259 insertions(+), 262 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d9458a019..935fdc68c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -452,7 +452,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "beefy-primitives", "fnv", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-runtime", "finality-grandpa", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-runtime", "frame-support", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", "bp-runtime", @@ -776,7 +776,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-messages", "bp-runtime", @@ -794,7 +794,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -811,7 +811,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "hash-db", @@ -829,7 +829,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -844,7 +844,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -859,7 +859,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2842,7 +2842,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", ] @@ -2860,7 +2860,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -2882,7 +2882,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "Inflector", "chrono", @@ -2932,7 +2932,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2943,7 +2943,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2959,7 +2959,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -2987,7 +2987,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "bitflags", "frame-metadata", @@ -3017,7 +3017,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3029,7 +3029,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3041,7 +3041,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro2", "quote", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "log", @@ -3068,7 +3068,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -3083,7 +3083,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "sp-api", @@ -3092,7 +3092,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "sp-api", @@ -4211,7 +4211,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-primitives", "bitvec", @@ -4302,7 +4302,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "polkadot-primitives", @@ -5165,7 +5165,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5645,7 +5645,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -5662,7 +5662,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -5676,7 +5676,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -5692,7 +5692,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -5708,7 +5708,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -5723,7 +5723,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -5747,7 +5747,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5767,7 +5767,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -5782,7 +5782,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "beefy-primitives", "frame-support", @@ -5798,7 +5798,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5821,7 +5821,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5856,7 +5856,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5899,7 +5899,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -5944,7 +5944,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "bitflags", "frame-benchmarking", @@ -5988,7 +5988,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "bitflags", "parity-scale-codec", @@ -6003,7 +6003,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro2", "quote", @@ -6013,7 +6013,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6032,7 +6032,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -6045,7 +6045,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6061,7 +6061,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6084,7 +6084,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6097,7 +6097,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6130,7 +6130,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6153,7 +6153,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6169,7 +6169,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6189,7 +6189,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6206,7 +6206,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6223,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6241,7 +6241,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6258,7 +6258,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6273,7 +6273,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6287,7 +6287,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6327,7 +6327,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6343,7 +6343,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6358,7 +6358,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6372,7 +6372,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6387,7 +6387,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6403,7 +6403,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6424,7 +6424,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6440,7 +6440,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6454,7 +6454,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6477,7 +6477,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6488,7 +6488,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "sp-arithmetic", @@ -6497,7 +6497,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6526,7 +6526,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6544,7 +6544,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6563,7 +6563,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-support", "frame-system", @@ -6580,7 +6580,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6597,7 +6597,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6608,7 +6608,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6625,7 +6625,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6640,7 +6640,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6656,7 +6656,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-benchmarking", "frame-support", @@ -6671,7 +6671,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "frame-system", @@ -6689,7 +6689,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-benchmarking", "frame-support", @@ -7240,7 +7240,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7255,7 +7255,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7268,7 +7268,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "derive_more", "fatality", @@ -7291,7 +7291,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "fatality", "futures 0.3.21", @@ -7312,7 +7312,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "clap 3.1.12", "frame-benchmarking-cli", @@ -7337,7 +7337,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7454,7 +7454,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "always-assert", "fatality", @@ -7475,7 +7475,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7488,7 +7488,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "derive_more", "fatality", @@ -7511,7 +7511,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7525,7 +7525,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7545,7 +7545,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "always-assert", "async-trait", @@ -7566,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7584,7 +7584,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", "derive_more", @@ -7613,7 +7613,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", "futures 0.3.21", @@ -7633,9 +7633,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", + "fatality", "futures 0.3.21", "polkadot-erasure-coding", "polkadot-node-primitives", @@ -7651,7 +7652,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7666,7 +7667,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "futures 0.3.21", @@ -7684,7 +7685,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7699,7 +7700,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7716,7 +7717,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "fatality", "futures 0.3.21", @@ -7735,7 +7736,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "futures 0.3.21", @@ -7752,7 +7753,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", "futures 0.3.21", @@ -7769,7 +7770,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "always-assert", "assert_matches", @@ -7799,7 +7800,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7815,7 +7816,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7833,7 +7834,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-std", "lazy_static", @@ -7851,7 +7852,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bs58", "futures 0.3.21", @@ -7870,7 +7871,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "derive_more", @@ -7890,7 +7891,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7912,7 +7913,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7922,7 +7923,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "futures 0.3.21", @@ -7940,7 +7941,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "derive_more", "futures 0.3.21", @@ -7959,7 +7960,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "derive_more", @@ -7992,7 +7993,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8013,7 +8014,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "futures 0.3.21", @@ -8030,7 +8031,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8042,7 +8043,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "derive_more", "frame-support", @@ -8059,7 +8060,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8074,7 +8075,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitvec", "frame-system", @@ -8104,7 +8105,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8136,7 +8137,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-primitives", "bitvec", @@ -8222,7 +8223,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-primitives", "bitvec", @@ -8269,7 +8270,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "polkadot-primitives", @@ -8281,7 +8282,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bs58", "parity-scale-codec", @@ -8293,7 +8294,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "bitflags", "bitvec", @@ -8336,7 +8337,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "async-trait", "beefy-gadget", @@ -8438,7 +8439,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8459,7 +8460,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8469,7 +8470,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8494,7 +8495,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-primitives", "bitvec", @@ -8556,7 +8557,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-benchmarking", "frame-system", @@ -9130,7 +9131,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9258,7 +9259,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9335,7 +9336,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "polkadot-primitives", @@ -9536,7 +9537,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "sp-core", @@ -9547,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -9574,7 +9575,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9597,7 +9598,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9613,7 +9614,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9630,7 +9631,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9641,7 +9642,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "chrono", "clap 3.1.12", @@ -9680,7 +9681,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "fnv", "futures 0.3.21", @@ -9708,7 +9709,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "hash-db", "kvdb", @@ -9733,7 +9734,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -9757,7 +9758,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -9786,7 +9787,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "fork-tree", @@ -9829,7 +9830,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9853,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9866,7 +9867,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -9891,7 +9892,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "sc-client-api", "sp-authorship", @@ -9902,7 +9903,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9929,7 +9930,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "environmental", "parity-scale-codec", @@ -9946,13 +9947,12 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "parity-scale-codec", "sc-allocator", "sc-executor-common", - "scoped-tls", "sp-runtime-interface", "sp-sandbox", "sp-wasm-interface", @@ -9962,7 +9962,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9980,7 +9980,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "ahash", "async-trait", @@ -10020,7 +10020,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10044,7 +10044,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10061,7 +10061,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "hex", @@ -10076,7 +10076,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -10125,7 +10125,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "ahash", "futures 0.3.21", @@ -10142,7 +10142,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "bytes 1.1.0", "fnv", @@ -10170,7 +10170,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "libp2p", @@ -10183,7 +10183,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10192,7 +10192,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "hash-db", @@ -10223,7 +10223,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10249,7 +10249,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10266,7 +10266,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "directories", @@ -10331,7 +10331,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "parity-scale-codec", @@ -10345,7 +10345,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10366,7 +10366,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "libc", @@ -10385,7 +10385,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "chrono", "futures 0.3.21", @@ -10403,7 +10403,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "ansi_term", "atty", @@ -10434,7 +10434,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10445,7 +10445,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10472,7 +10472,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "log", @@ -10485,7 +10485,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10549,12 +10549,6 @@ dependencies = [ "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" @@ -10958,7 +10952,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "enumn", "parity-scale-codec", @@ -11046,7 +11040,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "hash-db", "log", @@ -11063,7 +11057,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "blake2 0.10.2", "proc-macro-crate 1.1.3", @@ -11075,7 +11069,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -11088,7 +11082,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "integer-sqrt", "num-traits", @@ -11103,7 +11097,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -11116,7 +11110,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "parity-scale-codec", @@ -11128,7 +11122,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "sp-api", @@ -11140,7 +11134,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "log", @@ -11158,7 +11152,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -11177,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "parity-scale-codec", @@ -11195,7 +11189,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "merlin", @@ -11218,7 +11212,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -11232,7 +11226,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11244,7 +11238,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "base58", "bitflags", @@ -11290,7 +11284,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "blake2 0.10.2", "byteorder", @@ -11304,7 +11298,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro2", "quote", @@ -11315,7 +11309,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11324,7 +11318,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro2", "quote", @@ -11334,7 +11328,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "environmental", "parity-scale-codec", @@ -11345,7 +11339,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "finality-grandpa", "log", @@ -11363,7 +11357,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11377,7 +11371,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "hash-db", @@ -11402,7 +11396,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "lazy_static", "sp-core", @@ -11413,7 +11407,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -11430,7 +11424,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "thiserror", "zstd", @@ -11439,7 +11433,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "parity-scale-codec", @@ -11454,7 +11448,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -11468,7 +11462,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "sp-api", "sp-core", @@ -11478,7 +11472,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "backtrace", "lazy_static", @@ -11488,7 +11482,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "rustc-hash", "serde", @@ -11498,7 +11492,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "either", "hash256-std-hasher", @@ -11520,7 +11514,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11537,7 +11531,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11549,7 +11543,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "parity-scale-codec", @@ -11563,7 +11557,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "serde", "serde_json", @@ -11572,7 +11566,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -11586,7 +11580,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "scale-info", @@ -11597,7 +11591,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "hash-db", "log", @@ -11619,12 +11613,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11637,7 +11631,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "log", "sp-core", @@ -11650,7 +11644,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures-timer", @@ -11666,7 +11660,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "sp-std", @@ -11678,7 +11672,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "sp-api", "sp-runtime", @@ -11687,7 +11681,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "log", @@ -11703,7 +11697,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "hash-db", "memory-db", @@ -11719,7 +11713,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11736,7 +11730,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11747,7 +11741,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "impl-trait-for-tuples", "log", @@ -12028,7 +12022,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "platforms", ] @@ -12036,7 +12030,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12058,7 +12052,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures-util", "hyper", @@ -12071,7 +12065,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12094,7 +12088,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "async-trait", "futures 0.3.21", @@ -12120,7 +12114,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12130,7 +12124,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6091c6ba54516b65071095b146beee796372c59f" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -12141,7 +12135,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "ansi_term", "build-helper", @@ -12238,7 +12232,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "polkadot-primitives", @@ -12538,7 +12532,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12549,7 +12543,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12678,7 +12672,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4d3d480d8149fbca2834d05cc050a01f9a25afbf" +source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" dependencies = [ "clap 3.1.12", "jsonrpsee 0.10.1", @@ -13300,7 +13294,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "beefy-primitives", "bitvec", @@ -13387,7 +13381,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "polkadot-primitives", @@ -13607,7 +13601,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13620,7 +13614,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-support", "frame-system", @@ -13640,7 +13634,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "frame-benchmarking", "frame-support", @@ -13658,7 +13652,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#d3e67bb264f866215d9897764094b616117ba69f" +source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" dependencies = [ "Inflector", "proc-macro2", diff --git a/polkadot-parachains/statemine/src/lib.rs b/polkadot-parachains/statemine/src/lib.rs index 6d4a78081f..f9a4cac0da 100644 --- a/polkadot-parachains/statemine/src/lib.rs +++ b/polkadot-parachains/statemine/src/lib.rs @@ -528,6 +528,7 @@ impl pallet_uniques::Config for Runtime { #[cfg(feature = "runtime-benchmarks")] type Helper = (); type CreateOrigin = AsEnsureOriginWithArg>; + type Locker = (); } // Create the runtime by composing the FRAME pallets that were previously configured. diff --git a/polkadot-parachains/statemint/src/lib.rs b/polkadot-parachains/statemint/src/lib.rs index 2ad1beeb70..5ced35322d 100644 --- a/polkadot-parachains/statemint/src/lib.rs +++ b/polkadot-parachains/statemint/src/lib.rs @@ -529,6 +529,7 @@ impl pallet_uniques::Config for Runtime { #[cfg(feature = "runtime-benchmarks")] type Helper = (); type CreateOrigin = AsEnsureOriginWithArg>; + type Locker = (); } // Create the runtime by composing the FRAME pallets that were previously configured. diff --git a/polkadot-parachains/westmint/src/lib.rs b/polkadot-parachains/westmint/src/lib.rs index 75992f3006..d08224c02d 100644 --- a/polkadot-parachains/westmint/src/lib.rs +++ b/polkadot-parachains/westmint/src/lib.rs @@ -520,6 +520,7 @@ impl pallet_uniques::Config for Runtime { #[cfg(feature = "runtime-benchmarks")] type Helper = (); type CreateOrigin = AsEnsureOriginWithArg>; + type Locker = (); } // Create the runtime by composing the FRAME pallets that were previously configured. From 7255f0eb85ffb2ec5b88b5d85f44b4fc1fa333ae Mon Sep 17 00:00:00 2001 From: Koute Date: Thu, 28 Apr 2022 23:23:04 +0900 Subject: [PATCH 027/238] Bump `tempfile` to 3.3.0 (#1179) --- Cargo.lock | 10 +++++----- polkadot-parachains/Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 935fdc68c5..351986be0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2725,9 +2725,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" dependencies = [ "instant", ] @@ -12191,13 +12191,13 @@ checksum = "d9bffcddbc2458fa3e6058414599e3c838a022abae82e5c67b4f7f80298d5bff" [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", + "fastrand", "libc", - "rand 0.8.5", "redox_syscall 0.2.10", "remove_dir_all", "winapi 0.3.9", diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index d2a6e222f2..4feab9ed10 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -92,7 +92,7 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/substrate" [dev-dependencies] assert_cmd = "2.0" nix = "0.24" -tempfile = "3.2.0" +tempfile = "3.3.0" [features] default = [] From 9cf5871678d79dcd9e114b59bf674f051b513768 Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 30 Apr 2022 01:42:38 +0400 Subject: [PATCH 028/238] Companion for substrate#11009 (#1221) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Downgrade zeroize to v1.4.3 * Update Substrate & Polkadot Co-authored-by: Bastian Köcher --- Cargo.lock | 1214 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 703 insertions(+), 511 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 351986be0f..21c2613b53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,7 +44,7 @@ checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if 1.0.0", "cipher", - "cpufeatures 0.2.1", + "cpufeatures", "opaque-debug 0.3.0", ] @@ -230,7 +230,7 @@ dependencies = [ "parking", "polling", "slab", - "socket2 0.4.4", + "socket2", "waker-fn", "winapi 0.3.9", ] @@ -281,6 +281,7 @@ dependencies = [ "async-global-executor", "async-io", "async-lock", + "async-process", "crossbeam-utils", "futures-channel", "futures-core", @@ -300,15 +301,16 @@ dependencies = [ [[package]] name = "async-std-resolver" -version = "0.20.3" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed4e2c3da14d8ad45acb1e3191db7a918e9505b6f155b218e70a7c9a1a48c638" +checksum = "0f2f8a4a203be3325981310ab243a28e6e4ea55b6519bffce05d41ab60e09ad8" dependencies = [ "async-std", "async-trait", "futures-io", "futures-util", "pin-utils", + "socket2", "trust-dns-resolver", ] @@ -452,7 +454,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "beefy-primitives", "fnv", @@ -486,7 +488,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +511,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -577,17 +579,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake2" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" -dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "blake2" version = "0.10.2" @@ -730,7 +721,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-runtime", "finality-grandpa", @@ -747,7 +738,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-runtime", "frame-support", @@ -759,7 +750,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "bp-runtime", @@ -776,7 +767,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-messages", "bp-runtime", @@ -794,7 +785,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -811,7 +802,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "hash-db", @@ -829,7 +820,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -844,7 +835,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -859,7 +850,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1109,21 +1100,21 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chacha20" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" +checksum = "01b72a433d0cf2aef113ba70f62634c56fddb0f244e6377185c56a7cadbd8f91" dependencies = [ "cfg-if 1.0.0", "cipher", - "cpufeatures 0.1.5", + "cpufeatures", "zeroize", ] [[package]] name = "chacha20poly1305" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" +checksum = "3b84ed6d1d5f7aa9bdde921a5090e0ca4d934d250ea3b402a5fab3a994e28a2a" dependencies = [ "aead", "chacha20", @@ -1290,6 +1281,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cpp_demangle" version = "0.3.5" @@ -1299,15 +1299,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "cpufeatures" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" -dependencies = [ - "libc", -] - [[package]] name = "cpufeatures" version = "0.2.1" @@ -2309,6 +2300,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcf" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.3", + "subtle", + "zeroize", +] + [[package]] name = "data-encoding" version = "2.3.2" @@ -2479,9 +2483,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "dtoa" -version = "0.4.8" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" +checksum = "5caaa75cbd2b960ff1e5392d2cfb1f44717fffe12fc1f32b7b5d1267f99732a6" [[package]] name = "dyn-clonable" @@ -2577,11 +2581,11 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "enum-as-inner" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" dependencies = [ - "heck 0.3.3", + "heck 0.4.0", "proc-macro2", "quote", "syn", @@ -2704,7 +2708,7 @@ version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6" dependencies = [ - "blake2 0.10.2", + "blake2", "fs-err", "proc-macro2", "quote", @@ -2842,7 +2846,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", ] @@ -2860,7 +2864,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -2882,7 +2886,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "Inflector", "chrono", @@ -2932,7 +2936,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2943,7 +2947,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2959,7 +2963,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -2987,7 +2991,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "bitflags", "frame-metadata", @@ -3017,7 +3021,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3029,7 +3033,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3041,7 +3045,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro2", "quote", @@ -3051,7 +3055,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "log", @@ -3068,7 +3072,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -3083,7 +3087,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "sp-api", @@ -3092,7 +3096,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "sp-api", @@ -3239,13 +3243,13 @@ dependencies = [ [[package]] name = "futures-rustls" -version = "0.21.1" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" +checksum = "e01fe9932a224b72b45336d96040aa86386d674a31d0af27d800ea7bc8ca97fe" dependencies = [ "futures-io", - "rustls 0.19.1", - "webpki 0.21.4", + "rustls 0.20.2", + "webpki 0.22.0", ] [[package]] @@ -3614,7 +3618,7 @@ dependencies = [ "httpdate", "itoa 0.4.8", "pin-project-lite 0.2.7", - "socket2 0.4.4", + "socket2", "tokio", "tower-service", "tracing", @@ -3651,7 +3655,7 @@ dependencies = [ "rustls-native-certs 0.6.1", "tokio", "tokio-rustls 0.23.2", - "webpki-roots 0.22.2", + "webpki-roots", ] [[package]] @@ -3678,39 +3682,30 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.6.7" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2273e421f7c4f0fc99e1934fe4776f59d8df2972f4199d703fc0da9f2a9f73de" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" 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.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" +checksum = "ae8f4a3c3d4c89351ca83e120c1c00b27df945d38e05695668c9d4b4f7bc52f3" dependencies = [ "async-io", + "core-foundation", + "fnv", "futures 0.3.21", - "futures-lite", "if-addrs", "ipnet", - "libc", "log", - "winapi 0.3.9", + "rtnetlink", + "system-configuration", + "windows", ] [[package]] @@ -3800,11 +3795,11 @@ checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipconfig" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" +checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" dependencies = [ - "socket2 0.3.19", + "socket2", "widestring", "winapi 0.3.9", "winreg", @@ -4029,7 +4024,7 @@ dependencies = [ "tokio-rustls 0.23.2", "tokio-util 0.7.1", "tracing", - "webpki-roots 0.22.2", + "webpki-roots", ] [[package]] @@ -4050,7 +4045,7 @@ dependencies = [ "tokio-rustls 0.23.2", "tokio-util 0.7.1", "tracing", - "webpki-roots 0.22.2", + "webpki-roots", ] [[package]] @@ -4211,7 +4206,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-primitives", "bitvec", @@ -4302,7 +4297,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "polkadot-primitives", @@ -4405,14 +4400,18 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.40.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bec54343492ba5940a6c555e512c6721139835d28c59bc22febece72dfd0d9d" +checksum = "475ce2ac4a9727e53a519f6ee05b38abfcba8f0d39c4d24f103d184e36fd5b0f" dependencies = [ "atomic", "bytes 1.1.0", "futures 0.3.21", + "futures-timer", + "getrandom 0.2.3", + "instant", "lazy_static", + "libp2p-autonat", "libp2p-core", "libp2p-deflate", "libp2p-dns", @@ -4438,17 +4437,36 @@ dependencies = [ "libp2p-websocket", "libp2p-yamux", "multiaddr", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project 1.0.10", + "rand 0.7.3", "smallvec", - "wasm-timer", +] + +[[package]] +name = "libp2p-autonat" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13b690e65046af6a09c0b27bd9508fa1cab0efce889de74b0b643b9d2a98f9a" +dependencies = [ + "async-trait", + "futures 0.3.21", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-request-response", + "libp2p-swarm", + "log", + "prost", + "prost-build", + "rand 0.8.5", ] [[package]] name = "libp2p-core" -version = "0.30.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef22d9bba1e8bcb7ec300073e6802943fe8abb8190431842262b5f1c30abba1" +checksum = "db5b02602099fb75cb2d16f9ea860a320d6eb82ce41e95ab680912c454805cd5" dependencies = [ "asn1_der", "bs58", @@ -4457,20 +4475,21 @@ dependencies = [ "fnv", "futures 0.3.21", "futures-timer", + "instant", "lazy_static", "libsecp256k1", "log", "multiaddr", - "multihash 0.14.0", + "multihash 0.16.2", "multistream-select", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project 1.0.10", "prost", "prost-build", "rand 0.8.5", "ring", "rw-stream-sink", - "sha2 0.9.8", + "sha2 0.10.2", "smallvec", "thiserror", "unsigned-varint 0.7.1", @@ -4480,9 +4499,9 @@ dependencies = [ [[package]] name = "libp2p-deflate" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51a800adb195f33de63f4b17b63fe64cfc23bf2c6a0d3d0d5321328664e65197" +checksum = "6b1d37f042f748e224f04785d0e987ae09a2aa518d6401d82d412dad83e360ed" dependencies = [ "flate2", "futures 0.3.21", @@ -4491,9 +4510,9 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.30.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb8f89d15cb6e3c5bc22afff7513b11bab7856f2872d3cfba86f7f63a06bc498" +checksum = "066e33e854e10b5c93fc650458bf2179c7e0d143db260b0963e44a94859817f1" dependencies = [ "async-std-resolver", "futures 0.3.21", @@ -4505,9 +4524,9 @@ dependencies = [ [[package]] name = "libp2p-floodsub" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab3d7210901ea51b7bae2b581aa34521797af8c4ec738c980bda4a06434067f" +checksum = "733d3ea6ebe7a7a85df2bc86678b93f24b015fae5fe3b3acc4c400e795a55d2d" dependencies = [ "cuckoofilter", "fnv", @@ -4523,9 +4542,9 @@ dependencies = [ [[package]] name = "libp2p-gossipsub" -version = "0.33.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfeead619eb5dac46e65acc78c535a60aaec803d1428cca6407c3a4fc74d698d" +checksum = "a90c989a7c0969c2ab63e898da9bc735e3be53fb4f376e9c045ce516bcc9f928" dependencies = [ "asynchronous-codec 0.6.0", "base64", @@ -4534,14 +4553,16 @@ dependencies = [ "fnv", "futures 0.3.21", "hex_fmt", + "instant", "libp2p-core", "libp2p-swarm", "log", + "prometheus-client", "prost", "prost-build", "rand 0.7.3", "regex", - "sha2 0.9.8", + "sha2 0.10.2", "smallvec", "unsigned-varint 0.7.1", "wasm-timer", @@ -4549,26 +4570,26 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca1275574183f288ff8b72d535d5ffa5ea9292ef7829af8b47dcb197c7b0dcd" +checksum = "c5ef5a5b57904c7c33d6713ef918d239dc6b7553458f3475d87f8a18e9c651c8" dependencies = [ "futures 0.3.21", + "futures-timer", "libp2p-core", "libp2p-swarm", "log", - "lru 0.6.6", + "lru 0.7.5", "prost", "prost-build", "smallvec", - "wasm-timer", ] [[package]] name = "libp2p-kad" -version = "0.32.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2297dc0ca285f3a09d1368bde02449e539b46f94d32d53233f53f6625bcd3ba" +checksum = "564e6bd64d177446399ed835b9451a8825b07929d6daa6a94e6405592974725e" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", @@ -4576,25 +4597,27 @@ dependencies = [ "either", "fnv", "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.7.3", - "sha2 0.9.8", + "sha2 0.10.2", "smallvec", + "thiserror", "uint", "unsigned-varint 0.7.1", "void", - "wasm-timer", ] [[package]] name = "libp2p-mdns" -version = "0.32.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c864b64bdc8a84ff3910a0df88e6535f256191a450870f1e7e10cbf8e64d45" +checksum = "611ae873c8e280ccfab0d57c7a13cac5644f364529e233114ff07863946058b0" dependencies = [ "async-io", "data-encoding", @@ -4607,29 +4630,31 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2 0.4.4", + "socket2", "void", ] [[package]] name = "libp2p-metrics" -version = "0.1.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4af432fcdd2f8ba4579b846489f8f0812cfd738ced2c0af39df9b1c48bbb6ab2" +checksum = "985be799bb3796e0c136c768208c3c06604a38430571906a13dcfeda225a3b9d" dependencies = [ "libp2p-core", + "libp2p-gossipsub", "libp2p-identify", "libp2p-kad", "libp2p-ping", + "libp2p-relay", "libp2p-swarm", - "open-metrics-client", + "prometheus-client", ] [[package]] name = "libp2p-mplex" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2cd64ef597f40e14bfce0497f50ecb63dd6d201c61796daeb4227078834fbf" +checksum = "442eb0c9fff0bf22a34f015724b4143ce01877e079ed0963c722d94c07c72160" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", @@ -4637,7 +4662,7 @@ dependencies = [ "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.1", @@ -4645,9 +4670,9 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.33.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8772c7a99088221bb7ca9c5c0574bf55046a7ab4c319f3619b275f28c8fb87a" +checksum = "9dd7e0c94051cda67123be68cf6b65211ba3dde7277be9068412de3e7ffd63ef" dependencies = [ "bytes 1.1.0", "curve25519-dalek 3.2.0", @@ -4658,7 +4683,7 @@ dependencies = [ "prost", "prost-build", "rand 0.8.5", - "sha2 0.9.8", + "sha2 0.10.2", "snow", "static_assertions", "x25519-dalek", @@ -4667,24 +4692,25 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80ef7b0ec5cf06530d9eb6cf59ae49d46a2c45663bde31c25a12f682664adbcf" +checksum = "bf57a3c2e821331dda9fe612d4654d676ab6e33d18d9434a18cced72630df6ad" dependencies = [ "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "rand 0.7.3", "void", - "wasm-timer", ] [[package]] name = "libp2p-plaintext" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba1a6ff33e4a274c89a3b1d78b9f34f32af13265cc5c46c16938262d4e945a" +checksum = "962c0fb0e7212fb96a69b87f2d09bcefd317935239bdc79cda900e7a8897a3fe" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", @@ -4713,89 +4739,96 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.4.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2852b61c90fa8ce3c8fcc2aba76e6cefc20d648f9df29157d6b3a916278ef3e3" +checksum = "3aa754cb7bccef51ebc3c458c6bbcef89d83b578a9925438389be841527d408f" dependencies = [ "asynchronous-codec 0.6.0", "bytes 1.1.0", + "either", "futures 0.3.21", "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "pin-project 1.0.10", "prost", "prost-build", - "rand 0.7.3", + "rand 0.8.5", "smallvec", + "static_assertions", + "thiserror", "unsigned-varint 0.7.1", "void", - "wasm-timer", ] [[package]] name = "libp2p-rendezvous" -version = "0.1.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14a6d2b9e7677eff61dc3d2854876aaf3976d84a01ef6664b610c77a0c9407c5" +checksum = "bbd0baab894c5b84da510b915d53264d566c3c35889f09931fe9edbd2a773bee" dependencies = [ "asynchronous-codec 0.6.0", "bimap", "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "prost", "prost-build", "rand 0.8.5", - "sha2 0.9.8", + "sha2 0.10.2", "thiserror", "unsigned-varint 0.7.1", "void", - "wasm-timer", ] [[package]] name = "libp2p-request-response" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a877a4ced6d46bf84677e1974e8cf61fb434af73b2e96fb48d6cb6223a4634d8" +checksum = "b5e6a6fc6c9ad95661f46989473b34bd2993d14a4de497ff3b2668a910d4b869" dependencies = [ "async-trait", "bytes 1.1.0", "futures 0.3.21", + "instant", "libp2p-core", "libp2p-swarm", "log", - "lru 0.7.5", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.1", - "wasm-timer", ] [[package]] name = "libp2p-swarm" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f5184a508f223bc100a12665517773fb8730e9f36fc09eefb670bf01b107ae9" +checksum = "8f0c69ad9e8f7c5fc50ad5ad9c7c8b57f33716532a2b623197f69f93e374d14c" dependencies = [ "either", + "fnv", "futures 0.3.21", + "futures-timer", + "instant", "libp2p-core", "log", + "pin-project 1.0.10", "rand 0.7.3", "smallvec", + "thiserror", "void", - "wasm-timer", ] [[package]] name = "libp2p-swarm-derive" -version = "0.25.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072c290f727d39bdc4e9d6d1c847978693d25a673bd757813681e33e5f6c00c2" +checksum = "daf2fe8c80b43561355f4d51875273b5b6dfbac37952e8f64b1270769305c9d7" dependencies = [ "quote", "syn", @@ -4803,9 +4836,9 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7399c5b6361ef525d41c11fcf51635724f832baf5819b30d3d873eabb4fbae4b" +checksum = "193447aa729c85aac2376828df76d171c1a589c9e6b58fcc7f9d9a020734122c" dependencies = [ "async-io", "futures 0.3.21", @@ -4815,14 +4848,14 @@ dependencies = [ "libc", "libp2p-core", "log", - "socket2 0.4.4", + "socket2", ] [[package]] name = "libp2p-uds" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b7563e46218165dfd60f64b96f7ce84590d75f53ecbdc74a7dd01450dc5973" +checksum = "24bdab114f7f2701757d6541266e1131b429bbae382008f207f2114ee4222dcb" dependencies = [ "async-std", "futures 0.3.21", @@ -4832,9 +4865,9 @@ dependencies = [ [[package]] name = "libp2p-wasm-ext" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1008a302b73c5020251f9708c653f5ed08368e530e247cc9cd2f109ff30042cf" +checksum = "4f6ea0f84a967ef59a16083f222c18115ae2e91db69809dce275df62e101b279" dependencies = [ "futures 0.3.21", "js-sys", @@ -4846,9 +4879,9 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e12df82d1ed64969371a9e65ea92b91064658604cc2576c2757f18ead9a1cf" +checksum = "c932834c3754501c368d1bf3d0fb458487a642b90fc25df082a3a2f3d3b32e37" dependencies = [ "either", "futures 0.3.21", @@ -4859,18 +4892,18 @@ dependencies = [ "rw-stream-sink", "soketto", "url 2.2.2", - "webpki-roots 0.21.1", + "webpki-roots", ] [[package]] name = "libp2p-yamux" -version = "0.34.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7362abb8867d7187e7e93df17f460d554c997fc5c8ac57dc1259057f6889af" +checksum = "be902ebd89193cd020e89e89107726a38cfc0d16d18f613f4a37d046e92c7517" dependencies = [ "futures 0.3.21", "libp2p-core", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "thiserror", "yamux", ] @@ -5165,7 +5198,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5278,15 +5311,15 @@ checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" [[package]] name = "multiaddr" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" dependencies = [ "arrayref", "bs58", "byteorder", "data-encoding", - "multihash 0.14.0", + "multihash 0.16.2", "percent-encoding 2.1.0", "serde", "static_assertions", @@ -5316,7 +5349,7 @@ dependencies = [ "blake3 0.3.8", "digest 0.9.0", "generic-array 0.14.4", - "multihash-derive", + "multihash-derive 0.7.2", "sha2 0.9.8", "sha3 0.9.1", "unsigned-varint 0.5.1", @@ -5324,14 +5357,14 @@ dependencies = [ [[package]] name = "multihash" -version = "0.14.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" +checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689" dependencies = [ - "digest 0.9.0", - "generic-array 0.14.4", - "multihash-derive", - "sha2 0.9.8", + "core2", + "digest 0.10.3", + "multihash-derive 0.8.0", + "sha2 0.10.2", "unsigned-varint 0.7.1", ] @@ -5349,6 +5382,20 @@ dependencies = [ "synstructure", ] +[[package]] +name = "multihash-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +dependencies = [ + "proc-macro-crate 1.1.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "multimap" version = "0.8.3" @@ -5357,9 +5404,9 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" +checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b" dependencies = [ "bytes 1.1.0", "futures 0.3.21", @@ -5424,6 +5471,84 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "netlink-packet-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +dependencies = [ + "anyhow", + "byteorder", + "libc", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "733ea73609acfd7fa7ddadfb7bf709b0471668c456ad9513685af543a06342b2" +dependencies = [ + "anyhow", + "bitflags", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror", +] + +[[package]] +name = "netlink-proto" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8785b8141e8432aa45fceb922a7e876d7da3fad37fa7e7ec702ace3aa0826b" +dependencies = [ + "bytes 1.1.0", + "futures 0.3.21", + "log", + "netlink-packet-core", + "netlink-sys", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c9f9547a08241bee7b6558b9b98e1f290d187de8b7cfca2bbb4937bcaa8f8" +dependencies = [ + "async-io", + "bytes 1.1.0", + "futures 0.3.21", + "libc", + "log", +] + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + [[package]] name = "nix" version = "0.24.1" @@ -5586,29 +5711,6 @@ 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 0.4.8", - "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.4" @@ -5645,7 +5747,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -5662,7 +5764,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -5676,7 +5778,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -5692,7 +5794,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -5708,7 +5810,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -5723,7 +5825,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -5747,7 +5849,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5767,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -5782,7 +5884,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "beefy-primitives", "frame-support", @@ -5798,7 +5900,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5821,7 +5923,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -5839,7 +5941,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5856,7 +5958,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5878,7 +5980,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5899,7 +6001,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -5944,7 +6046,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "bitflags", "frame-benchmarking", @@ -5988,7 +6090,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "bitflags", "parity-scale-codec", @@ -6003,7 +6105,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro2", "quote", @@ -6013,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6032,7 +6134,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -6045,7 +6147,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6061,7 +6163,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6084,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6097,7 +6199,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6115,7 +6217,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6130,7 +6232,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6153,7 +6255,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6169,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6189,7 +6291,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6206,7 +6308,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6223,7 +6325,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6241,7 +6343,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6258,7 +6360,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6273,7 +6375,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6284,10 +6386,44 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-nomination-pools" +version = "1.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "sp-staking", + "sp-std", +] + +[[package]] +name = "pallet-nomination-pools-benchmarking" +version = "1.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "pallet-bags-list", + "pallet-nomination-pools", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-staking", + "sp-std", +] + [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6304,7 +6440,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6327,7 +6463,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6343,7 +6479,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6358,7 +6494,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6372,7 +6508,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6387,7 +6523,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6403,7 +6539,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6424,7 +6560,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6440,7 +6576,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6454,7 +6590,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6477,7 +6613,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6488,7 +6624,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "sp-arithmetic", @@ -6497,7 +6633,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6526,7 +6662,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6544,7 +6680,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6563,7 +6699,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-support", "frame-system", @@ -6580,7 +6716,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6597,7 +6733,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6608,7 +6744,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6625,7 +6761,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6640,7 +6776,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6656,7 +6792,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-benchmarking", "frame-support", @@ -6671,7 +6807,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "frame-system", @@ -6689,7 +6825,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-benchmarking", "frame-support", @@ -7240,7 +7376,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7255,7 +7391,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7268,7 +7404,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "derive_more", "fatality", @@ -7291,7 +7427,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "fatality", "futures 0.3.21", @@ -7312,7 +7448,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "clap 3.1.12", "frame-benchmarking-cli", @@ -7337,7 +7473,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7399,7 +7535,7 @@ dependencies = [ "hex-literal", "jsonrpc-core", "log", - "nix", + "nix 0.24.1", "pallet-contracts-rpc", "pallet-transaction-payment-rpc", "parachains-common", @@ -7454,7 +7590,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "always-assert", "fatality", @@ -7475,7 +7611,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7488,7 +7624,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "derive_more", "fatality", @@ -7511,7 +7647,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7525,7 +7661,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7545,7 +7681,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "always-assert", "async-trait", @@ -7566,7 +7702,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7584,7 +7720,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "derive_more", @@ -7613,7 +7749,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "futures 0.3.21", @@ -7633,7 +7769,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "fatality", @@ -7652,7 +7788,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7667,7 +7803,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "futures 0.3.21", @@ -7685,7 +7821,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7700,7 +7836,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7717,7 +7853,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "fatality", "futures 0.3.21", @@ -7736,7 +7872,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "futures 0.3.21", @@ -7753,7 +7889,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "futures 0.3.21", @@ -7770,7 +7906,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "always-assert", "assert_matches", @@ -7800,7 +7936,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7816,7 +7952,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7834,7 +7970,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-std", "lazy_static", @@ -7852,7 +7988,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bs58", "futures 0.3.21", @@ -7871,7 +8007,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "derive_more", @@ -7891,7 +8027,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7913,7 +8049,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7923,7 +8059,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "futures 0.3.21", @@ -7941,7 +8077,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "derive_more", "futures 0.3.21", @@ -7960,7 +8096,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "derive_more", @@ -7993,7 +8129,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8014,7 +8150,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "futures 0.3.21", @@ -8031,7 +8167,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8043,7 +8179,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "derive_more", "frame-support", @@ -8060,7 +8196,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8075,7 +8211,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitvec", "frame-system", @@ -8105,7 +8241,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8137,7 +8273,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-primitives", "bitvec", @@ -8223,7 +8359,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-primitives", "bitvec", @@ -8270,7 +8406,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "polkadot-primitives", @@ -8282,7 +8418,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bs58", "parity-scale-codec", @@ -8294,7 +8430,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "bitflags", "bitvec", @@ -8337,7 +8473,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "async-trait", "beefy-gadget", @@ -8439,7 +8575,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8460,7 +8596,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8470,7 +8606,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8495,7 +8631,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-primitives", "bitvec", @@ -8557,7 +8693,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-benchmarking", "frame-system", @@ -8627,7 +8763,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "cpufeatures 0.2.1", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash", ] @@ -8639,7 +8775,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash", ] @@ -8779,6 +8915,29 @@ dependencies = [ "thiserror", ] +[[package]] +name = "prometheus-client" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a896938cc6018c64f279888b8c7559d3725210d5db9a3a1ee6bc7188d51d34" +dependencies = [ + "dtoa", + "itoa 1.0.1", + "owning_ref", + "prometheus-client-derive-text-encode", +] + +[[package]] +name = "prometheus-client-derive-text-encode" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "prost" version = "0.9.0" @@ -9131,7 +9290,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9259,7 +9418,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9336,7 +9495,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "polkadot-primitives", @@ -9355,6 +9514,21 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "rtnetlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f54290e54521dac3de4149d83ddf9f62a359b3cc93bcb494a794a41e6f4744b" +dependencies = [ + "async-global-executor", + "futures 0.3.21", + "log", + "netlink-packet-route", + "netlink-proto", + "nix 0.22.3", + "thiserror", +] + [[package]] name = "rust-argon2" version = "0.8.3" @@ -9394,15 +9568,6 @@ dependencies = [ "semver 0.9.0", ] -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.0" @@ -9537,7 +9702,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "sp-core", @@ -9548,7 +9713,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -9575,7 +9740,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9598,7 +9763,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9614,7 +9779,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9631,7 +9796,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9642,7 +9807,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "chrono", "clap 3.1.12", @@ -9681,7 +9846,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "fnv", "futures 0.3.21", @@ -9709,7 +9874,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "hash-db", "kvdb", @@ -9734,7 +9899,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -9758,7 +9923,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -9787,7 +9952,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "fork-tree", @@ -9830,7 +9995,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9854,7 +10019,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9867,7 +10032,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -9892,7 +10057,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "sc-client-api", "sp-authorship", @@ -9903,7 +10068,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9930,7 +10095,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "environmental", "parity-scale-codec", @@ -9947,7 +10112,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "parity-scale-codec", @@ -9962,7 +10127,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9980,7 +10145,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "ahash", "async-trait", @@ -10020,7 +10185,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10044,7 +10209,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10061,7 +10226,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "hex", @@ -10076,7 +10241,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "asynchronous-codec 0.5.0", @@ -10125,7 +10290,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "ahash", "futures 0.3.21", @@ -10142,7 +10307,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "bytes 1.1.0", "fnv", @@ -10170,7 +10335,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "libp2p", @@ -10183,7 +10348,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10192,7 +10357,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "hash-db", @@ -10223,7 +10388,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10249,7 +10414,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10266,7 +10431,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "directories", @@ -10331,7 +10496,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "parity-scale-codec", @@ -10345,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10366,7 +10531,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "libc", @@ -10385,7 +10550,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "chrono", "futures 0.3.21", @@ -10403,7 +10568,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "ansi_term", "atty", @@ -10434,7 +10599,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10445,7 +10610,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10472,7 +10637,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "log", @@ -10485,7 +10650,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10674,7 +10839,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser 0.7.0", + "semver-parser", ] [[package]] @@ -10683,16 +10848,7 @@ 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", + "semver-parser", ] [[package]] @@ -10710,15 +10866,6 @@ 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.136" @@ -10789,7 +10936,7 @@ checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -10814,7 +10961,7 @@ checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -10826,7 +10973,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures", "digest 0.10.3", ] @@ -10952,7 +11099,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "enumn", "parity-scale-codec", @@ -10984,31 +11131,19 @@ checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" [[package]] name = "snow" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7" +checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" dependencies = [ "aes-gcm", - "blake2 0.9.2", + "blake2", "chacha20poly1305", - "rand 0.8.5", + "curve25519-dalek 4.0.0-pre.1", "rand_core 0.6.3", "ring", - "rustc_version 0.3.3", - "sha2 0.9.8", + "rustc_version 0.4.0", + "sha2 0.10.2", "subtle", - "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]] @@ -11040,7 +11175,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "hash-db", "log", @@ -11057,9 +11192,9 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ - "blake2 0.10.2", + "blake2", "proc-macro-crate 1.1.3", "proc-macro2", "quote", @@ -11069,7 +11204,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -11082,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "integer-sqrt", "num-traits", @@ -11097,7 +11232,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -11110,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "parity-scale-codec", @@ -11122,7 +11257,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "sp-api", @@ -11134,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "log", @@ -11152,7 +11287,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -11171,7 +11306,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "parity-scale-codec", @@ -11189,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "merlin", @@ -11212,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -11226,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11238,7 +11373,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "base58", "bitflags", @@ -11284,9 +11419,9 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ - "blake2 0.10.2", + "blake2", "byteorder", "digest 0.10.3", "sha2 0.10.2", @@ -11298,7 +11433,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro2", "quote", @@ -11309,7 +11444,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11318,7 +11453,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro2", "quote", @@ -11328,7 +11463,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "environmental", "parity-scale-codec", @@ -11339,7 +11474,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "finality-grandpa", "log", @@ -11357,7 +11492,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11371,7 +11506,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "hash-db", @@ -11396,7 +11531,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "lazy_static", "sp-core", @@ -11407,7 +11542,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -11424,7 +11559,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "thiserror", "zstd", @@ -11433,7 +11568,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "parity-scale-codec", @@ -11448,7 +11583,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -11462,7 +11597,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "sp-api", "sp-core", @@ -11472,7 +11607,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "backtrace", "lazy_static", @@ -11482,7 +11617,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "rustc-hash", "serde", @@ -11492,7 +11627,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "either", "hash256-std-hasher", @@ -11514,7 +11649,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11531,7 +11666,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11543,7 +11678,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "parity-scale-codec", @@ -11557,7 +11692,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "serde", "serde_json", @@ -11566,7 +11701,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -11580,7 +11715,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "scale-info", @@ -11591,7 +11726,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "hash-db", "log", @@ -11613,12 +11748,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11631,7 +11766,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "log", "sp-core", @@ -11644,7 +11779,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures-timer", @@ -11660,7 +11795,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "sp-std", @@ -11672,7 +11807,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "sp-api", "sp-runtime", @@ -11681,7 +11816,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "log", @@ -11697,7 +11832,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "hash-db", "memory-db", @@ -11713,7 +11848,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11730,7 +11865,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11741,7 +11876,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "impl-trait-for-tuples", "log", @@ -12022,7 +12157,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "platforms", ] @@ -12030,7 +12165,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12052,7 +12187,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures-util", "hyper", @@ -12065,7 +12200,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12088,7 +12223,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "async-trait", "futures 0.3.21", @@ -12114,7 +12249,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12124,7 +12259,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -12135,7 +12270,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "ansi_term", "build-helper", @@ -12177,6 +12312,27 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "system-configuration" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fd" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -12232,7 +12388,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "polkadot-primitives", @@ -12394,7 +12550,7 @@ dependencies = [ "parking_lot 0.12.0", "pin-project-lite 0.2.7", "signal-hook-registry", - "socket2 0.4.4", + "socket2", "tokio-macros", "winapi 0.3.9", ] @@ -12532,7 +12688,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12543,7 +12699,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12622,9 +12778,9 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.20.3" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0d7f5db438199a6e2609debe3f69f808d074e0a2888ee0bccb45fe234d03f4" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" dependencies = [ "async-trait", "cfg-if 1.0.0", @@ -12646,9 +12802,9 @@ dependencies = [ [[package]] name = "trust-dns-resolver" -version = "0.20.3" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ad17b608a64bd0735e67bde16b0636f8aa8591f831a25d18443ed00a699770" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" dependencies = [ "cfg-if 1.0.0", "futures-util", @@ -12656,7 +12812,7 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "resolv-conf", "smallvec", "thiserror", @@ -12672,7 +12828,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1b57cff6924e1de5958d40eacd9910896b4bf953" +source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "clap 3.1.12", "jsonrpsee 0.10.1", @@ -13264,15 +13420,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "webpki-roots" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" -dependencies = [ - "webpki 0.21.4", -] - [[package]] name = "webpki-roots" version = "0.22.2" @@ -13294,7 +13441,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "beefy-primitives", "bitvec", @@ -13325,6 +13472,8 @@ dependencies = [ "pallet-membership", "pallet-multisig", "pallet-nicks", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", @@ -13381,7 +13530,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "polkadot-primitives", @@ -13469,9 +13618,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" [[package]] name = "winapi" @@ -13516,43 +13665,86 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac7fef12f4b59cd0a29339406cc9203ab44e440ddff6b3f5a41455349fa9cf3" +dependencies = [ + "windows_aarch64_msvc 0.29.0", + "windows_i686_gnu 0.29.0", + "windows_i686_msvc 0.29.0", + "windows_x86_64_gnu 0.29.0", + "windows_x86_64_msvc 0.29.0", +] + [[package]] name = "windows-sys" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_msvc 0.32.0", + "windows_i686_gnu 0.32.0", + "windows_i686_msvc 0.32.0", + "windows_x86_64_gnu 0.32.0", + "windows_x86_64_msvc 0.32.0", ] +[[package]] +name = "windows_aarch64_msvc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d027175d00b01e0cbeb97d6ab6ebe03b12330a35786cbaca5252b1c4bf5d9b" + [[package]] name = "windows_aarch64_msvc" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" +[[package]] +name = "windows_i686_gnu" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8793f59f7b8e8b01eda1a652b2697d87b93097198ae85f823b969ca5b89bba58" + [[package]] name = "windows_i686_gnu" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" +[[package]] +name = "windows_i686_msvc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8602f6c418b67024be2996c512f5f995de3ba417f4c75af68401ab8756796ae4" + [[package]] name = "windows_i686_msvc" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" +[[package]] +name = "windows_x86_64_gnu" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d615f419543e0bd7d2b3323af0d86ff19cbc4f816e6453f36a2c2ce889c354" + [[package]] name = "windows_x86_64_gnu" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" +[[package]] +name = "windows_x86_64_msvc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d95421d9ed3672c280884da53201a5c46b7b2765ca6faf34b0d71cf34a3561" + [[package]] name = "windows_x86_64_msvc" version = "0.32.0" @@ -13561,9 +13753,9 @@ checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" [[package]] name = "winreg" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ "winapi 0.3.9", ] @@ -13601,7 +13793,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13614,7 +13806,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-support", "frame-system", @@ -13634,7 +13826,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "frame-benchmarking", "frame-support", @@ -13652,7 +13844,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3adf622731e32346ce8f962b470f628216842d13" +source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ "Inflector", "proc-macro2", @@ -13662,23 +13854,23 @@ dependencies = [ [[package]] name = "yamux" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" +checksum = "0c0608f53c1dc0bad505d03a34bbd49fbf2ad7b51eb036123e896365532745a1" dependencies = [ "futures 0.3.21", "log", "nohash-hasher", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "rand 0.8.5", "static_assertions", ] [[package]] name = "zeroize" -version = "1.5.4" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" +checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" dependencies = [ "zeroize_derive", ] From 51eeb6fd32a9d9e4d48f689b4a2db0aef206abd1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:55:52 +0200 Subject: [PATCH 029/238] Bump serde from 1.0.136 to 1.0.137 (#1229) Bumps [serde](https://github.com/serde-rs/serde) from 1.0.136 to 1.0.137. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.136...v1.0.137) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/aura-ext/Cargo.toml | 2 +- pallets/collator-selection/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- pallets/xcm/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/runtime/Cargo.toml | 2 +- polkadot-parachains/Cargo.toml | 2 +- polkadot-parachains/canvas-kusama/Cargo.toml | 2 +- polkadot-parachains/pallets/parachain-info/Cargo.toml | 2 +- polkadot-parachains/pallets/ping/Cargo.toml | 2 +- polkadot-parachains/rococo-parachain/Cargo.toml | 2 +- polkadot-parachains/shell/Cargo.toml | 2 +- polkadot-parachains/statemine/Cargo.toml | 2 +- polkadot-parachains/statemint/Cargo.toml | 2 +- polkadot-parachains/westmint/Cargo.toml | 2 +- test/runtime/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 18 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 21c2613b53..ebb80d87c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10868,9 +10868,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.136" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" dependencies = [ "serde_derive", ] @@ -10887,9 +10887,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/aura-ext/Cargo.toml b/pallets/aura-ext/Cargo.toml index e6e939c955..f935794c5f 100644 --- a/pallets/aura-ext/Cargo.toml +++ b/pallets/aura-ext/Cargo.toml @@ -8,7 +8,7 @@ description = "AURA consensus extension pallet for parachains" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/collator-selection/Cargo.toml b/pallets/collator-selection/Cargo.toml index 33dfea8ccc..ed443618df 100644 --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -17,7 +17,7 @@ log = { version = "0.4.16", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", default-features = false } +serde = { version = "1.0.137", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 5d08818813..1fb1a80cd7 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -11,7 +11,7 @@ environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/xcm/Cargo.toml b/pallets/xcm/Cargo.toml index 53b689fde3..1bfee67080 100644 --- a/pallets/xcm/Cargo.toml +++ b/pallets/xcm/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 2151bd8857..d232ce7f3d 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -18,7 +18,7 @@ clap = { version = "3.1", features = ["derive"] } derive_more = "0.99.2" log = "0.4.16" codec = { package = "parity-scale-codec", version = "3.0.0" } -serde = { version = "1.0.132", features = ["derive"] } +serde = { version = "1.0.137", features = ["derive"] } hex-literal = "0.3.4" jsonrpc-core = "18.0.0" diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index 4be12e85b1..14e33a36cb 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" # Local diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 4feab9ed10..25cf8da586 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -16,7 +16,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0" } futures = { version = "0.3.1", features = ["compat"] } hex-literal = "0.3.4" log = "0.4.16" -serde = { version = "1.0.132", features = ["derive"] } +serde = { version = "1.0.137", features = ["derive"] } # Local rococo-parachain-runtime = { path = "rococo-parachain" } diff --git a/polkadot-parachains/canvas-kusama/Cargo.toml b/polkadot-parachains/canvas-kusama/Cargo.toml index 8b4c312618..9a48004e58 100644 --- a/polkadot-parachains/canvas-kusama/Cargo.toml +++ b/polkadot-parachains/canvas-kusama/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.119", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" # Substrate diff --git a/polkadot-parachains/pallets/parachain-info/Cargo.toml b/polkadot-parachains/pallets/parachain-info/Cargo.toml index 5718a89979..383b811b8c 100644 --- a/polkadot-parachains/pallets/parachain-info/Cargo.toml +++ b/polkadot-parachains/pallets/parachain-info/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } 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" } diff --git a/polkadot-parachains/pallets/ping/Cargo.toml b/polkadot-parachains/pallets/ping/Cargo.toml index 7d7a1ca375..36fdae0baf 100644 --- a/polkadot-parachains/pallets/ping/Cargo.toml +++ b/polkadot-parachains/pallets/ping/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", 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" } diff --git a/polkadot-parachains/rococo-parachain/Cargo.toml b/polkadot-parachains/rococo-parachain/Cargo.toml index 90560d76b3..6a9bd7f500 100644 --- a/polkadot-parachains/rococo-parachain/Cargo.toml +++ b/polkadot-parachains/rococo-parachain/Cargo.toml @@ -9,7 +9,7 @@ description = "Simple runtime used by the rococo parachain(s)" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/polkadot-parachains/shell/Cargo.toml b/polkadot-parachains/shell/Cargo.toml index 2b7c016df6..08c0fd8bd3 100644 --- a/polkadot-parachains/shell/Cargo.toml +++ b/polkadot-parachains/shell/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/polkadot-parachains/statemine/Cargo.toml b/polkadot-parachains/statemine/Cargo.toml index bb048a83ee..f2cc752347 100644 --- a/polkadot-parachains/statemine/Cargo.toml +++ b/polkadot-parachains/statemine/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" # Substrate diff --git a/polkadot-parachains/statemint/Cargo.toml b/polkadot-parachains/statemint/Cargo.toml index d81e9f6332..dc745e946f 100644 --- a/polkadot-parachains/statemint/Cargo.toml +++ b/polkadot-parachains/statemint/Cargo.toml @@ -9,7 +9,7 @@ description = "Statemint parachain runtime" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.6.1" diff --git a/polkadot-parachains/westmint/Cargo.toml b/polkadot-parachains/westmint/Cargo.toml index e74c98999d..c98e3c6904 100644 --- a/polkadot-parachains/westmint/Cargo.toml +++ b/polkadot-parachains/westmint/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" # Substrate diff --git a/test/runtime/Cargo.toml b/test/runtime/Cargo.toml index 66a6e7472b..8403d39b0f 100644 --- a/test/runtime/Cargo.toml +++ b/test/runtime/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.137", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 9af72cc8f8..f375ab5a4b 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -11,7 +11,7 @@ criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpc-core = "18.0.0" parking_lot = "0.12.0" rand = "0.8.5" -serde = { version = "1.0.132", features = ["derive"] } +serde = { version = "1.0.137", features = ["derive"] } tokio = { version = "1.18.0", features = ["macros"] } url = "2.2.2" From 290615794e344a30fca3886e4eb6d516b2371e57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:56:41 +0200 Subject: [PATCH 030/238] Bump thiserror from 1.0.30 to 1.0.31 (#1230) Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.30 to 1.0.31. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.30...1.0.31) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- client/relay-chain-interface/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ebb80d87c5..d7150ed3a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12414,18 +12414,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 71f29b72c7..8340cbadff 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -22,6 +22,6 @@ futures = "0.3.21" parking_lot = "0.12.0" derive_more = "0.99.2" async-trait = "0.1.53" -thiserror = "1.0.30" +thiserror = "1.0.31" jsonrpsee-core = "0.11.0" parity-scale-codec = "3.1.2" From 4a2515c71f7e73c9fbd04fc8d436c3b0acda24bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 09:40:53 +0000 Subject: [PATCH 031/238] Bump syn from 1.0.91 to 1.0.92 (#1227) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.91 to 1.0.92. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.91...1.0.92) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d7150ed3a6..5a975b15da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12291,9 +12291,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.91" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index d66b730b95..06ce2620f6 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -9,7 +9,7 @@ description = "Proc macros provided by the parachain-system pallet" proc-macro = true [dependencies] -syn = "1.0.91" +syn = "1.0.92" proc-macro2 = "1.0.37" quote = "1.0.18" proc-macro-crate = "1.1.3" From 566b383f56f9cb56bf8b83f2490819c73a35ce35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 09:00:50 +0000 Subject: [PATCH 032/238] Bump tokio from 1.18.0 to 1.18.1 Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.18.0 to 1.18.1. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.18.0...tokio-1.18.1) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5a975b15da..ad5239888b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12537,9 +12537,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f48b6d60512a392e34dbf7fd456249fd2de3c83669ab642e021903f4015185b" +checksum = "dce653fb475565de9f6fb0614b28bca8df2c430c0cf84bcd9c843f15de5414cc" dependencies = [ "bytes 1.1.0", "libc", diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 2b58f78fe1..ae5fc8c9e7 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -33,7 +33,7 @@ cumulus-relay-chain-interface = { path = "../relay-chain-interface" } [dev-dependencies] portpicker = "0.1.1" -tokio = { version = "1.18.0", features = ["macros"] } +tokio = { version = "1.18.1", features = ["macros"] } url = "2.2.2" # Substrate diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index d70342350a..2e8f59ea82 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -31,7 +31,7 @@ cumulus-primitives-core = { path = "../../primitives/core" } cumulus-relay-chain-interface = {path = "../relay-chain-interface"} [dev-dependencies] -tokio = { version = "1.18.0", features = ["macros"] } +tokio = { version = "1.18.1", features = ["macros"] } # Cumulus cumulus-test-service = { path = "../../test/service" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index f375ab5a4b..412a41b011 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -12,7 +12,7 @@ jsonrpc-core = "18.0.0" parking_lot = "0.12.0" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } -tokio = { version = "1.18.0", features = ["macros"] } +tokio = { version = "1.18.1", features = ["macros"] } url = "2.2.2" # Substrate From 306bfbcb50a5cc1c4d584f03037c29f7e18fa9ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 13:41:45 +0000 Subject: [PATCH 033/238] Bump clap from 3.1.12 to 3.1.15 (#1231) Bumps [clap](https://github.com/clap-rs/clap) from 3.1.12 to 3.1.15. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.12...v3.1.15) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad5239888b..99a84130ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1189,9 +1189,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.12" +version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c167e37342afc5f33fd87bbc870cedd020d2a6dffa05d45ccd9241fbdd146db" +checksum = "85a35a599b11c089a7f49105658d089b8f2cf0882993c17daf6de15285c2c35d" dependencies = [ "atty", "bitflags", @@ -1219,9 +1219,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d716edb7c26222b1b21de6e6d505b274f9f3db9e7bc2e06baf389d57ae842df8" +checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" dependencies = [ "os_str_bytes", ] @@ -1611,7 +1611,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.12", + "clap 3.1.15", "sc-cli", "sc-service", "url 2.2.2", @@ -2890,7 +2890,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a76 dependencies = [ "Inflector", "chrono", - "clap 3.1.12", + "clap 3.1.15", "frame-benchmarking", "frame-support", "frame-system", @@ -5731,9 +5731,6 @@ name = "os_str_bytes" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] [[package]] name = "owning_ref" @@ -6855,7 +6852,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.12", + "clap 3.1.15", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7450,7 +7447,7 @@ name = "polkadot-cli" version = "0.9.19" source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" dependencies = [ - "clap 3.1.12", + "clap 3.1.15", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7517,7 +7514,7 @@ dependencies = [ "assert_cmd", "async-trait", "canvas-kusama-runtime", - "clap 3.1.12", + "clap 3.1.15", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", @@ -9810,7 +9807,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ "chrono", - "clap 3.1.12", + "clap 3.1.15", "fdlimit", "futures 0.3.21", "hex", @@ -12830,7 +12827,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" dependencies = [ - "clap 3.1.12", + "clap 3.1.15", "jsonrpsee 0.10.1", "log", "parity-scale-codec", From 0cbcea7acf224080f5effb8465138103ace4ff28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 3 May 2022 16:49:25 +0200 Subject: [PATCH 034/238] Update Substrate & Polkadot (#1234) --- Cargo.lock | 713 ++++++++++++++++++++++++++--------------------------- 1 file changed, 349 insertions(+), 364 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 99a84130ce..03aa4303a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,19 +331,6 @@ dependencies = [ "syn", ] -[[package]] -name = "asynchronous-codec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6" -dependencies = [ - "bytes 1.1.0", - "futures-sink", - "futures-util", - "memchr", - "pin-project-lite 0.2.7", -] - [[package]] name = "asynchronous-codec" version = "0.6.0" @@ -454,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "beefy-primitives", "fnv", @@ -488,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -511,12 +498,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -610,29 +597,25 @@ dependencies = [ ] [[package]] -name = "blake2s_simd" -version = "0.5.11" +name = "blake2b_simd" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" +checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" dependencies = [ "arrayref", - "arrayvec 0.5.2", + "arrayvec 0.7.2", "constant_time_eq", ] [[package]] -name = "blake3" -version = "0.3.8" +name = "blake2s_simd" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" dependencies = [ "arrayref", - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", + "arrayvec 0.7.2", "constant_time_eq", - "crypto-mac 0.8.0", - "digest 0.9.0", ] [[package]] @@ -721,7 +704,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-runtime", "finality-grandpa", @@ -738,7 +721,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-runtime", "frame-support", @@ -750,7 +733,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "bp-runtime", @@ -767,7 +750,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-messages", "bp-runtime", @@ -785,7 +768,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -802,7 +785,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "hash-db", @@ -820,7 +803,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -835,7 +818,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -850,7 +833,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1138,13 +1121,15 @@ dependencies = [ [[package]] name = "cid" -version = "0.6.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768" +checksum = "a52cffa791ce5cf490ac3b2d6df970dc04f931b04e727be3c3e220e17164dfc4" dependencies = [ + "core2", "multibase", - "multihash 0.13.2", - "unsigned-varint 0.5.1", + "multihash", + "serde", + "unsigned-varint", ] [[package]] @@ -2696,7 +2681,7 @@ version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881" dependencies = [ - "blake3 1.3.1", + "blake3", "fs-err", "proc-macro2", "quote", @@ -2846,7 +2831,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", ] @@ -2864,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -2886,7 +2871,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "Inflector", "chrono", @@ -2936,7 +2921,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2947,7 +2932,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2963,7 +2948,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -2991,7 +2976,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "bitflags", "frame-metadata", @@ -3021,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3033,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3045,7 +3030,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro2", "quote", @@ -3055,7 +3040,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "log", @@ -3072,7 +3057,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -3087,7 +3072,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "sp-api", @@ -3096,7 +3081,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "sp-api", @@ -4206,7 +4191,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-primitives", "bitvec", @@ -4297,7 +4282,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "polkadot-primitives", @@ -4480,7 +4465,7 @@ dependencies = [ "libsecp256k1", "log", "multiaddr", - "multihash 0.16.2", + "multihash", "multistream-select", "parking_lot 0.12.0", "pin-project 1.0.10", @@ -4492,7 +4477,7 @@ dependencies = [ "sha2 0.10.2", "smallvec", "thiserror", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", "zeroize", ] @@ -4546,7 +4531,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a90c989a7c0969c2ab63e898da9bc735e3be53fb4f376e9c045ce516bcc9f928" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "base64", "byteorder", "bytes 1.1.0", @@ -4564,7 +4549,7 @@ dependencies = [ "regex", "sha2 0.10.2", "smallvec", - "unsigned-varint 0.7.1", + "unsigned-varint", "wasm-timer", ] @@ -4592,7 +4577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "564e6bd64d177446399ed835b9451a8825b07929d6daa6a94e6405592974725e" dependencies = [ "arrayvec 0.5.2", - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bytes 1.1.0", "either", "fnv", @@ -4609,7 +4594,7 @@ dependencies = [ "smallvec", "thiserror", "uint", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", ] @@ -4656,7 +4641,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "442eb0c9fff0bf22a34f015724b4143ce01877e079ed0963c722d94c07c72160" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bytes 1.1.0", "futures 0.3.21", "libp2p-core", @@ -4665,7 +4650,7 @@ dependencies = [ "parking_lot 0.12.0", "rand 0.7.3", "smallvec", - "unsigned-varint 0.7.1", + "unsigned-varint", ] [[package]] @@ -4712,14 +4697,14 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "962c0fb0e7212fb96a69b87f2d09bcefd317935239bdc79cda900e7a8897a3fe" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bytes 1.1.0", "futures 0.3.21", "libp2p-core", "log", "prost", "prost-build", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", ] @@ -4743,7 +4728,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3aa754cb7bccef51ebc3c458c6bbcef89d83b578a9925438389be841527d408f" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bytes 1.1.0", "either", "futures 0.3.21", @@ -4759,7 +4744,7 @@ dependencies = [ "smallvec", "static_assertions", "thiserror", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", ] @@ -4769,7 +4754,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd0baab894c5b84da510b915d53264d566c3c35889f09931fe9edbd2a773bee" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bimap", "futures 0.3.21", "futures-timer", @@ -4782,7 +4767,7 @@ dependencies = [ "rand 0.8.5", "sha2 0.10.2", "thiserror", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", ] @@ -4801,7 +4786,7 @@ dependencies = [ "log", "rand 0.7.3", "smallvec", - "unsigned-varint 0.7.1", + "unsigned-varint", ] [[package]] @@ -5198,7 +5183,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5319,67 +5304,40 @@ dependencies = [ "bs58", "byteorder", "data-encoding", - "multihash 0.16.2", + "multihash", "percent-encoding 2.1.0", "serde", "static_assertions", - "unsigned-varint 0.7.1", + "unsigned-varint", "url 2.2.2", ] [[package]] name = "multibase" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" 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 0.3.8", - "digest 0.9.0", - "generic-array 0.14.4", - "multihash-derive 0.7.2", - "sha2 0.9.8", - "sha3 0.9.1", - "unsigned-varint 0.5.1", -] - [[package]] name = "multihash" version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689" dependencies = [ + "blake2b_simd 1.0.0", + "blake2s_simd", + "blake3", "core2", "digest 0.10.3", - "multihash-derive 0.8.0", + "multihash-derive", "sha2 0.10.2", - "unsigned-varint 0.7.1", -] - -[[package]] -name = "multihash-derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", - "synstructure", + "sha3 0.10.0", + "unsigned-varint", ] [[package]] @@ -5413,7 +5371,7 @@ dependencies = [ "log", "pin-project 1.0.10", "smallvec", - "unsigned-varint 0.7.1", + "unsigned-varint", ] [[package]] @@ -5744,7 +5702,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -5761,7 +5719,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5775,7 +5733,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -5791,7 +5749,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -5807,7 +5765,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -5822,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5846,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5866,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5881,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "beefy-primitives", "frame-support", @@ -5897,7 +5855,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5920,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5938,7 +5896,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5955,7 +5913,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5977,7 +5935,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5998,7 +5956,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6043,7 +6001,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6060,7 +6018,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "bitflags", "frame-benchmarking", @@ -6087,7 +6045,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "bitflags", "parity-scale-codec", @@ -6102,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro2", "quote", @@ -6112,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6131,7 +6089,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -6144,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6160,7 +6118,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6183,7 +6141,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6196,7 +6154,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6214,7 +6172,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6229,7 +6187,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6252,7 +6210,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6268,7 +6226,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6288,7 +6246,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6305,7 +6263,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6322,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6340,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6357,7 +6315,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6372,7 +6330,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6386,7 +6344,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6401,7 +6359,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6420,7 +6378,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6437,7 +6395,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6460,7 +6418,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6476,7 +6434,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6491,7 +6449,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6505,7 +6463,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6520,7 +6478,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6536,7 +6494,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6557,7 +6515,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6573,7 +6531,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6587,7 +6545,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6610,7 +6568,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6621,7 +6579,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "sp-arithmetic", @@ -6630,7 +6588,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6659,7 +6617,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6677,7 +6635,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6696,7 +6654,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-support", "frame-system", @@ -6713,7 +6671,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6730,7 +6688,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6741,7 +6699,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6758,7 +6716,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6773,7 +6731,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6789,7 +6747,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6804,7 +6762,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "frame-system", @@ -6822,7 +6780,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -7000,9 +6958,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f385d61562f5834282b90aa50b41f38a35cf64d5209b8b05487b50553dbe" +checksum = "6e73cd0b0a78045276b19eaae8eaaa20e44a1da9a0217ff934a810d9492ae701" dependencies = [ "blake2-rfc", "crc32fast", @@ -7373,7 +7331,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7388,7 +7346,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7401,7 +7359,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "derive_more", "fatality", @@ -7424,7 +7382,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "fatality", "futures 0.3.21", @@ -7445,7 +7403,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "clap 3.1.15", "frame-benchmarking-cli", @@ -7470,7 +7428,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7587,7 +7545,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "always-assert", "fatality", @@ -7608,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7621,7 +7579,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "derive_more", "fatality", @@ -7644,7 +7602,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7658,7 +7616,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7678,7 +7636,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "always-assert", "async-trait", @@ -7699,7 +7657,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7717,7 +7675,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "derive_more", @@ -7746,7 +7704,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "futures 0.3.21", @@ -7766,7 +7724,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "fatality", @@ -7785,7 +7743,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7800,7 +7758,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "futures 0.3.21", @@ -7818,7 +7776,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7833,7 +7791,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7850,7 +7808,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "fatality", "futures 0.3.21", @@ -7869,7 +7827,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "futures 0.3.21", @@ -7886,7 +7844,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "futures 0.3.21", @@ -7903,7 +7861,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "always-assert", "assert_matches", @@ -7933,7 +7891,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7949,7 +7907,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7967,7 +7925,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-std", "lazy_static", @@ -7985,7 +7943,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bs58", "futures 0.3.21", @@ -8004,7 +7962,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "derive_more", @@ -8024,7 +7982,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -8046,7 +8004,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -8056,7 +8014,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "futures 0.3.21", @@ -8074,7 +8032,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "derive_more", "futures 0.3.21", @@ -8093,7 +8051,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "derive_more", @@ -8126,7 +8084,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8147,7 +8105,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "futures 0.3.21", @@ -8164,7 +8122,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8176,7 +8134,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "derive_more", "frame-support", @@ -8193,7 +8151,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8208,7 +8166,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitvec", "frame-system", @@ -8238,7 +8196,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8270,7 +8228,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-primitives", "bitvec", @@ -8356,7 +8314,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-primitives", "bitvec", @@ -8403,7 +8361,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "polkadot-primitives", @@ -8415,7 +8373,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bs58", "parity-scale-codec", @@ -8427,7 +8385,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "bitflags", "bitvec", @@ -8470,7 +8428,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "async-trait", "beefy-gadget", @@ -8572,7 +8530,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8593,7 +8551,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8603,7 +8561,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8628,7 +8586,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-primitives", "bitvec", @@ -8690,7 +8648,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-benchmarking", "frame-system", @@ -9287,7 +9245,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9415,7 +9373,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9492,7 +9450,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "polkadot-primitives", @@ -9533,7 +9491,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ "base64", - "blake2b_simd", + "blake2b_simd 0.5.11", "constant_time_eq", "crossbeam-utils", ] @@ -9699,7 +9657,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "sp-core", @@ -9710,7 +9668,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -9737,7 +9695,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9760,7 +9718,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9776,7 +9734,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9793,7 +9751,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9804,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "chrono", "clap 3.1.15", @@ -9843,7 +9801,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "fnv", "futures 0.3.21", @@ -9871,7 +9829,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "hash-db", "kvdb", @@ -9896,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -9920,7 +9878,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -9949,7 +9907,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "fork-tree", @@ -9992,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10016,7 +9974,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "fork-tree", "parity-scale-codec", @@ -10029,7 +9987,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -10054,7 +10012,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "sc-client-api", "sp-authorship", @@ -10065,7 +10023,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "lazy_static", "lru 0.7.5", @@ -10092,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "environmental", "parity-scale-codec", @@ -10109,7 +10067,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "parity-scale-codec", @@ -10124,7 +10082,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "cfg-if 1.0.0", "libc", @@ -10142,7 +10100,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "ahash", "async-trait", @@ -10182,7 +10140,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10206,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10223,7 +10181,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "hex", @@ -10238,10 +10196,10 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", - "asynchronous-codec 0.5.0", + "asynchronous-codec", "bitflags", "bytes 1.1.0", "cid", @@ -10266,6 +10224,8 @@ dependencies = [ "sc-block-builder", "sc-client-api", "sc-consensus", + "sc-network-common", + "sc-network-sync", "sc-peerset", "sc-utils", "serde", @@ -10279,15 +10239,28 @@ dependencies = [ "sp-runtime", "substrate-prometheus-endpoint", "thiserror", - "unsigned-varint 0.6.0", + "unsigned-varint", "void", "zeroize", ] +[[package]] +name = "sc-network-common" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +dependencies = [ + "futures 0.3.21", + "libp2p", + "parity-scale-codec", + "prost-build", + "sc-peerset", + "smallvec", +] + [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "ahash", "futures 0.3.21", @@ -10301,10 +10274,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "sc-network-sync" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +dependencies = [ + "bitflags", + "either", + "fork-tree", + "futures 0.3.21", + "libp2p", + "log", + "lru 0.7.5", + "parity-scale-codec", + "prost", + "prost-build", + "sc-client-api", + "sc-consensus", + "sc-network-common", + "sc-peerset", + "smallvec", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-finality-grandpa", + "sp-runtime", + "thiserror", +] + [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "bytes 1.1.0", "fnv", @@ -10332,7 +10334,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "libp2p", @@ -10345,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10354,7 +10356,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "hash-db", @@ -10385,7 +10387,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10411,7 +10413,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10428,7 +10430,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "directories", @@ -10453,6 +10455,7 @@ dependencies = [ "sc-informant", "sc-keystore", "sc-network", + "sc-network-common", "sc-offchain", "sc-rpc", "sc-rpc-server", @@ -10493,7 +10496,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "parity-scale-codec", @@ -10507,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10528,7 +10531,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "libc", @@ -10547,7 +10550,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "chrono", "futures 0.3.21", @@ -10565,7 +10568,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "ansi_term", "atty", @@ -10596,7 +10599,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10607,7 +10610,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10634,7 +10637,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "log", @@ -10647,7 +10650,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "futures-timer", @@ -11096,7 +11099,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "enumn", "parity-scale-codec", @@ -11172,7 +11175,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "hash-db", "log", @@ -11189,7 +11192,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "blake2", "proc-macro-crate 1.1.3", @@ -11201,7 +11204,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11214,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "integer-sqrt", "num-traits", @@ -11229,7 +11232,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11242,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "parity-scale-codec", @@ -11254,7 +11257,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "sp-api", @@ -11266,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "log", @@ -11284,7 +11287,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -11303,7 +11306,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "parity-scale-codec", @@ -11321,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "merlin", @@ -11344,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11358,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -11370,7 +11373,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "base58", "bitflags", @@ -11416,7 +11419,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "blake2", "byteorder", @@ -11430,7 +11433,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro2", "quote", @@ -11441,7 +11444,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11450,7 +11453,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro2", "quote", @@ -11460,7 +11463,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "environmental", "parity-scale-codec", @@ -11471,7 +11474,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "finality-grandpa", "log", @@ -11489,7 +11492,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11503,7 +11506,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "hash-db", @@ -11528,7 +11531,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "lazy_static", "sp-core", @@ -11539,7 +11542,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -11556,7 +11559,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "thiserror", "zstd", @@ -11565,7 +11568,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "parity-scale-codec", @@ -11580,7 +11583,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11594,7 +11597,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "sp-api", "sp-core", @@ -11604,7 +11607,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "backtrace", "lazy_static", @@ -11614,7 +11617,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "rustc-hash", "serde", @@ -11624,7 +11627,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "either", "hash256-std-hasher", @@ -11646,7 +11649,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11663,7 +11666,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11675,7 +11678,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "parity-scale-codec", @@ -11689,7 +11692,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "serde", "serde_json", @@ -11698,7 +11701,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11712,7 +11715,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11723,7 +11726,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "hash-db", "log", @@ -11745,12 +11748,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11763,7 +11766,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "log", "sp-core", @@ -11776,7 +11779,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures-timer", @@ -11792,7 +11795,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "sp-std", @@ -11804,7 +11807,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "sp-api", "sp-runtime", @@ -11813,7 +11816,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "log", @@ -11829,7 +11832,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "hash-db", "memory-db", @@ -11845,7 +11848,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11862,7 +11865,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11873,7 +11876,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "impl-trait-for-tuples", "log", @@ -12154,7 +12157,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "platforms", ] @@ -12162,7 +12165,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12184,7 +12187,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures-util", "hyper", @@ -12197,7 +12200,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12220,7 +12223,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "async-trait", "futures 0.3.21", @@ -12246,7 +12249,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12256,7 +12259,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -12267,7 +12270,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "ansi_term", "build-helper", @@ -12385,7 +12388,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "polkadot-primitives", @@ -12685,7 +12688,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12696,7 +12699,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12825,7 +12828,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95067ccc3a7683768f8a10036785cde8d5f8a098" +source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" dependencies = [ "clap 3.1.15", "jsonrpsee 0.10.1", @@ -12941,31 +12944,13 @@ dependencies = [ "subtle", ] -[[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.1.0", - "futures-io", - "futures-util", -] - [[package]] name = "unsigned-varint" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bytes 1.1.0", "futures-io", "futures-util", @@ -13438,7 +13423,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "beefy-primitives", "bitvec", @@ -13527,7 +13512,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "polkadot-primitives", @@ -13790,7 +13775,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13803,7 +13788,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-support", "frame-system", @@ -13823,7 +13808,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -13841,7 +13826,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c3db494f54531bbf29d8da94c8fc5bd434189040" +source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" dependencies = [ "Inflector", "proc-macro2", From 7decc593340e87a6c369e1d7adf0fed4758bff5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 02:19:08 +0200 Subject: [PATCH 035/238] Bump log from 0.4.16 to 0.4.17 (#1235) Bumps [log](https://github.com/rust-lang/log) from 0.4.16 to 0.4.17. - [Release notes](https://github.com/rust-lang/log/releases) - [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/log/commits/0.4.17) --- updated-dependencies: - dependency-name: log dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/collator-selection/Cargo.toml | 2 +- pallets/dmp-queue/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- pallets/xcmp-queue/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/runtime/Cargo.toml | 2 +- polkadot-parachains/Cargo.toml | 2 +- polkadot-parachains/canvas-kusama/Cargo.toml | 2 +- polkadot-parachains/rococo-parachain/Cargo.toml | 2 +- polkadot-parachains/shell/Cargo.toml | 2 +- polkadot-parachains/statemine/Cargo.toml | 2 +- polkadot-parachains/statemint/Cargo.toml | 2 +- polkadot-parachains/westmint/Cargo.toml | 2 +- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 03aa4303a6..14c103be68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5009,9 +5009,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if 1.0.0", "value-bag", @@ -12993,9 +12993,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.0.0-alpha.8" +version = "1.0.0-alpha.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263f" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" dependencies = [ "ctor", "version_check", diff --git a/pallets/collator-selection/Cargo.toml b/pallets/collator-selection/Cargo.toml index ed443618df..bc6d018946 100644 --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -13,7 +13,7 @@ version = "3.0.0" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } diff --git a/pallets/dmp-queue/Cargo.toml b/pallets/dmp-queue/Cargo.toml index bd9d3eb5be..846bf801ca 100644 --- a/pallets/dmp-queue/Cargo.toml +++ b/pallets/dmp-queue/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ], default-features = false } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } # Substrate diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 1fb1a80cd7..99d53d93fb 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -9,7 +9,7 @@ description = "Base pallet for cumulus-based parachains" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } diff --git a/pallets/xcmp-queue/Cargo.toml b/pallets/xcmp-queue/Cargo.toml index 177fb035d9..06df500670 100644 --- a/pallets/xcmp-queue/Cargo.toml +++ b/pallets/xcmp-queue/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ], default-features = false } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } rand_chacha = { version = "0.3.0", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index d232ce7f3d..e4ebec9a88 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -16,7 +16,7 @@ path = "src/main.rs" [dependencies] clap = { version = "3.1", features = ["derive"] } derive_more = "0.99.2" -log = "0.4.16" +log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.137", features = ["derive"] } hex-literal = "0.3.4" diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index 14e33a36cb..63a499699c 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -17,7 +17,7 @@ substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", bran [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } hex-literal = { version = "0.3.4", optional = true } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 25cf8da586..e364640a3c 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -15,7 +15,7 @@ clap = { version = "3.1", features = ["derive"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = { version = "0.3.1", features = ["compat"] } hex-literal = "0.3.4" -log = "0.4.16" +log = "0.4.17" serde = { version = "1.0.137", features = ["derive"] } # Local diff --git a/polkadot-parachains/canvas-kusama/Cargo.toml b/polkadot-parachains/canvas-kusama/Cargo.toml index 9a48004e58..35bc6095e6 100644 --- a/polkadot-parachains/canvas-kusama/Cargo.toml +++ b/polkadot-parachains/canvas-kusama/Cargo.toml @@ -13,7 +13,7 @@ substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", bran [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } hex-literal = { version = "0.3.4", optional = true } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" diff --git a/polkadot-parachains/rococo-parachain/Cargo.toml b/polkadot-parachains/rococo-parachain/Cargo.toml index 6a9bd7f500..1d4f605e30 100644 --- a/polkadot-parachains/rococo-parachain/Cargo.toml +++ b/polkadot-parachains/rococo-parachain/Cargo.toml @@ -7,7 +7,7 @@ description = "Simple runtime used by the rococo parachain(s)" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } diff --git a/polkadot-parachains/shell/Cargo.toml b/polkadot-parachains/shell/Cargo.toml index 08c0fd8bd3..0d390948a1 100644 --- a/polkadot-parachains/shell/Cargo.toml +++ b/polkadot-parachains/shell/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } diff --git a/polkadot-parachains/statemine/Cargo.toml b/polkadot-parachains/statemine/Cargo.toml index f2cc752347..eef06ae41b 100644 --- a/polkadot-parachains/statemine/Cargo.toml +++ b/polkadot-parachains/statemine/Cargo.toml @@ -8,7 +8,7 @@ description = "Kusama variant of Statemint parachain runtime" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" diff --git a/polkadot-parachains/statemint/Cargo.toml b/polkadot-parachains/statemint/Cargo.toml index dc745e946f..640d7fd2ea 100644 --- a/polkadot-parachains/statemint/Cargo.toml +++ b/polkadot-parachains/statemint/Cargo.toml @@ -8,7 +8,7 @@ description = "Statemint parachain runtime" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } serde = { version = "1.0.137", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.6.1" diff --git a/polkadot-parachains/westmint/Cargo.toml b/polkadot-parachains/westmint/Cargo.toml index c98e3c6904..986d379c6d 100644 --- a/polkadot-parachains/westmint/Cargo.toml +++ b/polkadot-parachains/westmint/Cargo.toml @@ -8,7 +8,7 @@ description = "Westend variant of Statemint parachain runtime" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } -log = { version = "0.4.16", default-features = false } +log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } smallvec = "1.6.1" From a2fd67acb183376b13518924c25d3e29901d5fb3 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Thu, 5 May 2022 16:15:43 +0100 Subject: [PATCH 036/238] Companion for Force Batch (#1236) * add force-batch weights * update lockfile for {"polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 491 +++++++++--------- .../statemine/src/weights/pallet_utility.rs | 7 + .../statemint/src/weights/pallet_utility.rs | 7 + .../westmint/src/weights/pallet_utility.rs | 7 + 4 files changed, 267 insertions(+), 245 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 14c103be68..1b5ec9baf5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -498,12 +498,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -704,7 +704,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-runtime", "finality-grandpa", @@ -721,7 +721,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-runtime", "frame-support", @@ -733,7 +733,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "bp-runtime", @@ -750,7 +750,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-messages", "bp-runtime", @@ -768,7 +768,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -785,7 +785,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "hash-db", @@ -803,7 +803,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -818,7 +818,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -833,7 +833,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2831,7 +2831,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", ] @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -2871,7 +2871,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "Inflector", "chrono", @@ -2921,7 +2921,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2932,7 +2932,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2948,7 +2948,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -2976,7 +2976,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "bitflags", "frame-metadata", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3018,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3030,7 +3030,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro2", "quote", @@ -3040,7 +3040,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "log", @@ -3057,7 +3057,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3072,7 +3072,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "sp-api", @@ -3081,7 +3081,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "sp-api", @@ -4191,7 +4191,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-primitives", "bitvec", @@ -4282,7 +4282,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "polkadot-primitives", @@ -5183,7 +5183,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5749,7 +5749,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -5765,7 +5765,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -5780,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5824,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "beefy-primitives", "frame-support", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5896,7 +5896,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5913,7 +5913,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5935,7 +5935,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5956,7 +5956,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6001,7 +6001,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6102,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6118,7 +6118,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6141,7 +6141,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6154,7 +6154,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6172,7 +6172,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6187,7 +6187,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6210,7 +6210,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6226,7 +6226,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6246,7 +6246,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6263,7 +6263,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6280,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6298,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6315,7 +6315,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6344,7 +6344,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6359,7 +6359,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6378,7 +6378,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6395,7 +6395,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6418,7 +6418,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6463,7 +6463,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6478,7 +6478,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6494,7 +6494,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6515,7 +6515,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6568,7 +6568,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6579,7 +6579,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "sp-arithmetic", @@ -6588,7 +6588,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6617,7 +6617,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6635,7 +6635,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6654,7 +6654,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-support", "frame-system", @@ -6671,7 +6671,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6688,7 +6688,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6699,7 +6699,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6731,7 +6731,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6747,7 +6747,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6762,7 +6762,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "frame-system", @@ -6780,7 +6780,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-benchmarking", "frame-support", @@ -7331,7 +7331,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7346,7 +7346,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7359,7 +7359,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "derive_more", "fatality", @@ -7382,7 +7382,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "fatality", "futures 0.3.21", @@ -7403,7 +7403,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "clap 3.1.15", "frame-benchmarking-cli", @@ -7428,7 +7428,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7545,7 +7545,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "always-assert", "fatality", @@ -7566,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7579,7 +7579,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "derive_more", "fatality", @@ -7602,7 +7602,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7616,7 +7616,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7636,7 +7636,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "always-assert", "async-trait", @@ -7657,7 +7657,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7675,7 +7675,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "derive_more", @@ -7704,7 +7704,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "futures 0.3.21", @@ -7724,7 +7724,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "fatality", @@ -7743,7 +7743,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7758,7 +7758,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "futures 0.3.21", @@ -7776,7 +7776,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7791,7 +7791,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "fatality", "futures 0.3.21", @@ -7827,7 +7827,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "futures 0.3.21", @@ -7844,7 +7844,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "futures 0.3.21", @@ -7861,7 +7861,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "always-assert", "assert_matches", @@ -7891,7 +7891,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7907,7 +7907,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7925,7 +7925,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-std", "lazy_static", @@ -7943,7 +7943,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bs58", "futures 0.3.21", @@ -7962,7 +7962,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "derive_more", @@ -7982,7 +7982,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -8004,7 +8004,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -8014,7 +8014,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "futures 0.3.21", @@ -8032,7 +8032,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "derive_more", "futures 0.3.21", @@ -8051,7 +8051,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "derive_more", @@ -8084,7 +8084,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8105,7 +8105,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "futures 0.3.21", @@ -8122,7 +8122,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8134,7 +8134,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "derive_more", "frame-support", @@ -8151,7 +8151,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8166,7 +8166,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitvec", "frame-system", @@ -8196,7 +8196,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8228,7 +8228,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-primitives", "bitvec", @@ -8314,7 +8314,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-primitives", "bitvec", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "polkadot-primitives", @@ -8373,7 +8373,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bs58", "parity-scale-codec", @@ -8385,7 +8385,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "bitflags", "bitvec", @@ -8428,7 +8428,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "async-trait", "beefy-gadget", @@ -8530,7 +8530,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8551,7 +8551,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8561,7 +8561,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8586,7 +8586,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-primitives", "bitvec", @@ -8648,7 +8648,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-benchmarking", "frame-system", @@ -9245,7 +9245,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9373,7 +9373,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9450,7 +9450,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "polkadot-primitives", @@ -9657,7 +9657,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "sp-core", @@ -9668,7 +9668,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9695,7 +9695,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9718,7 +9718,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9734,7 +9734,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9751,7 +9751,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9762,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "chrono", "clap 3.1.15", @@ -9801,7 +9801,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "fnv", "futures 0.3.21", @@ -9829,7 +9829,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "hash-db", "kvdb", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9907,7 +9907,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "fork-tree", @@ -9950,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9974,7 +9974,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9987,7 +9987,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures 0.3.21", @@ -10012,7 +10012,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "sc-client-api", "sp-authorship", @@ -10023,7 +10023,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "lazy_static", "lru 0.7.5", @@ -10050,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "environmental", "parity-scale-codec", @@ -10067,7 +10067,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "parity-scale-codec", @@ -10082,7 +10082,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "cfg-if 1.0.0", "libc", @@ -10100,7 +10100,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "ahash", "async-trait", @@ -10140,7 +10140,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10164,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10181,7 +10181,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "hex", @@ -10196,7 +10196,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "asynchronous-codec", @@ -10247,7 +10247,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "libp2p", @@ -10260,7 +10260,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "ahash", "futures 0.3.21", @@ -10277,7 +10277,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "bitflags", "either", @@ -10306,7 +10306,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "bytes 1.1.0", "fnv", @@ -10334,7 +10334,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "libp2p", @@ -10347,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10356,7 +10356,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "hash-db", @@ -10387,7 +10387,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10413,7 +10413,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10430,7 +10430,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "directories", @@ -10496,7 +10496,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "parity-scale-codec", @@ -10510,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10531,7 +10531,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "libc", @@ -10550,7 +10550,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "chrono", "futures 0.3.21", @@ -10568,7 +10568,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "ansi_term", "atty", @@ -10599,7 +10599,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10610,7 +10610,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10637,7 +10637,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "log", @@ -10650,7 +10650,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -11099,7 +11099,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "enumn", "parity-scale-codec", @@ -11175,7 +11175,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "hash-db", "log", @@ -11192,7 +11192,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "blake2", "proc-macro-crate 1.1.3", @@ -11204,7 +11204,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11217,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "integer-sqrt", "num-traits", @@ -11232,7 +11232,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11245,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "parity-scale-codec", @@ -11257,7 +11257,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "sp-api", @@ -11269,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "log", @@ -11287,7 +11287,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures 0.3.21", @@ -11324,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "merlin", @@ -11347,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11361,9 +11361,10 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", + "scale-info", "schnorrkel", "sp-core", "sp-runtime", @@ -11373,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "base58", "bitflags", @@ -11419,7 +11420,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "blake2", "byteorder", @@ -11433,7 +11434,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro2", "quote", @@ -11444,7 +11445,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11453,7 +11454,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "proc-macro2", "quote", @@ -11463,7 +11464,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "environmental", "parity-scale-codec", @@ -11474,7 +11475,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "finality-grandpa", "log", @@ -11492,7 +11493,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11506,7 +11507,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures 0.3.21", "hash-db", @@ -11531,7 +11532,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "lazy_static", "sp-core", @@ -11542,7 +11543,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures 0.3.21", @@ -11559,7 +11560,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "thiserror", "zstd", @@ -11568,7 +11569,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "parity-scale-codec", @@ -11583,7 +11584,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11597,7 +11598,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "sp-api", "sp-core", @@ -11607,7 +11608,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "backtrace", "lazy_static", @@ -11617,7 +11618,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "rustc-hash", "serde", @@ -11627,7 +11628,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "either", "hash256-std-hasher", @@ -11649,7 +11650,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11666,7 +11667,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11678,7 +11679,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "parity-scale-codec", @@ -11692,7 +11693,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "serde", "serde_json", @@ -11701,7 +11702,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11715,7 +11716,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11726,7 +11727,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "hash-db", "log", @@ -11748,12 +11749,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11766,7 +11767,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "log", "sp-core", @@ -11779,7 +11780,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures-timer", @@ -11795,7 +11796,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "sp-std", @@ -11807,7 +11808,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "sp-api", "sp-runtime", @@ -11816,7 +11817,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "log", @@ -11832,7 +11833,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "hash-db", "memory-db", @@ -11848,7 +11849,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11865,7 +11866,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11876,7 +11877,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "impl-trait-for-tuples", "log", @@ -12157,7 +12158,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "platforms", ] @@ -12165,7 +12166,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12187,7 +12188,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "futures-util", "hyper", @@ -12200,7 +12201,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12223,7 +12224,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "async-trait", "futures 0.3.21", @@ -12270,7 +12271,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "ansi_term", "build-helper", @@ -12388,7 +12389,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "polkadot-primitives", @@ -12688,7 +12689,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12699,7 +12700,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12828,7 +12829,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" dependencies = [ "clap 3.1.15", "jsonrpsee 0.10.1", @@ -13423,7 +13424,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "beefy-primitives", "bitvec", @@ -13512,7 +13513,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "polkadot-primitives", @@ -13775,7 +13776,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13788,7 +13789,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-support", "frame-system", @@ -13808,7 +13809,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "frame-benchmarking", "frame-support", @@ -13826,7 +13827,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#c0a7d624f72e0b452c3e24a43d639211c2af51c1" +source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" dependencies = [ "Inflector", "proc-macro2", diff --git a/polkadot-parachains/statemine/src/weights/pallet_utility.rs b/polkadot-parachains/statemine/src/weights/pallet_utility.rs index 0df62fbc03..4ee7ce53e3 100644 --- a/polkadot-parachains/statemine/src/weights/pallet_utility.rs +++ b/polkadot-parachains/statemine/src/weights/pallet_utility.rs @@ -60,4 +60,11 @@ impl pallet_utility::WeightInfo for WeightInfo { fn dispatch_as() -> Weight { (8_310_000 as Weight) } + fn force_batch(c: u32, ) -> Weight { + (13_470_000 as Weight) + // Standard Error: 1_000 + .saturating_add((4_229_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)) + } } diff --git a/polkadot-parachains/statemint/src/weights/pallet_utility.rs b/polkadot-parachains/statemint/src/weights/pallet_utility.rs index 185a7d0e2d..7ffae32dcb 100644 --- a/polkadot-parachains/statemint/src/weights/pallet_utility.rs +++ b/polkadot-parachains/statemint/src/weights/pallet_utility.rs @@ -60,4 +60,11 @@ impl pallet_utility::WeightInfo for WeightInfo { fn dispatch_as() -> Weight { (8_834_000 as Weight) } + fn force_batch(c: u32, ) -> Weight { + (13_470_000 as Weight) + // Standard Error: 1_000 + .saturating_add((4_229_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)) + } } diff --git a/polkadot-parachains/westmint/src/weights/pallet_utility.rs b/polkadot-parachains/westmint/src/weights/pallet_utility.rs index 90673fd8db..0be7182758 100644 --- a/polkadot-parachains/westmint/src/weights/pallet_utility.rs +++ b/polkadot-parachains/westmint/src/weights/pallet_utility.rs @@ -60,4 +60,11 @@ impl pallet_utility::WeightInfo for WeightInfo { fn dispatch_as() -> Weight { (8_891_000 as Weight) } + fn force_batch(c: u32, ) -> Weight { + (13_470_000 as Weight) + // Standard Error: 1_000 + .saturating_add((4_229_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)) + } } From 00d679afec6ecf3c79165a2112bf806cc18285dc Mon Sep 17 00:00:00 2001 From: Chevdor Date: Fri, 6 May 2022 09:24:55 +0200 Subject: [PATCH 037/238] CI deps ugrade (#1237) * Switch to actions/checkout v3 * Upgrade subwasm version * Bump srtool-actions to v0.4 * Remove srtool runs from master --- .github/workflows/check-labels.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/extrinsic-ordering-check-from-bin.yml | 2 +- .github/workflows/quick-check.yml | 2 +- .github/workflows/release-01_rc-automation.yml | 4 ++-- .github/workflows/release-02_create-draft.yml | 2 +- .github/workflows/release-10_docker-manual.yml | 2 +- .github/workflows/release-10_docker.yml | 2 +- .github/workflows/srtool.yml | 7 +++---- 9 files changed, 12 insertions(+), 13 deletions(-) diff --git a/.github/workflows/check-labels.yml b/.github/workflows/check-labels.yml index 28d38d3ecd..f0f5556ebe 100644 --- a/.github/workflows/check-labels.yml +++ b/.github/workflows/check-labels.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index b2b0a32d5b..8d0d6bd0a7 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2.3.4 + uses: actions/checkout@v3 - name: Rust versions run: rustup show diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index 9998608c71..b730e2de20 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -27,7 +27,7 @@ jobs: REF_URL: ${{github.event.inputs.reference_url}} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Fetch binary run: | diff --git a/.github/workflows/quick-check.yml b/.github/workflows/quick-check.yml index dbfdba8618..edd05fe0b0 100644 --- a/.github/workflows/quick-check.yml +++ b/.github/workflows/quick-check.yml @@ -31,7 +31,7 @@ jobs: target key: ${{ runner.os }}-${{ matrix.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Cargo fmt uses: actions-rs/cargo@v1 diff --git a/.github/workflows/release-01_rc-automation.yml b/.github/workflows/release-01_rc-automation.yml index 138c950df3..439e4bd3fb 100644 --- a/.github/workflows/release-01_rc-automation.yml +++ b/.github/workflows/release-01_rc-automation.yml @@ -4,13 +4,13 @@ on: branches: - release-**v[0-9]+.[0-9]+.[0-9]+ workflow_dispatch: - + jobs: tag_rc: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 - id: compute_tag diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index 8e7fa38ad4..c6ab7c19ad 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -63,7 +63,7 @@ jobs: - name: Build ${{ matrix.runtime }} runtime if: ${{ github.event.inputs.release_type != 'client' }} id: srtool_build - uses: chevdor/srtool-actions@v0.3.0 + uses: chevdor/srtool-actions@v0.4.0 with: image: paritytech/srtool chain: ${{ matrix.runtime }} diff --git a/.github/workflows/release-10_docker-manual.yml b/.github/workflows/release-10_docker-manual.yml index 142f456805..b394d686c6 100644 --- a/.github/workflows/release-10_docker-manual.yml +++ b/.github/workflows/release-10_docker-manual.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: ${{ github.event.release.tag_name }} diff --git a/.github/workflows/release-10_docker.yml b/.github/workflows/release-10_docker.yml index 4d07cad290..c65fc8e1cc 100644 --- a/.github/workflows/release-10_docker.yml +++ b/.github/workflows/release-10_docker.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: ${{ github.event.release.tag_name }} diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index 5405cda416..52a1e656ed 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -1,7 +1,7 @@ name: Srtool build env: - SUBWASM_VERSION: 0.15.0 + SUBWASM_VERSION: 0.17.0 on: push: @@ -16,7 +16,6 @@ on: branches: - "release*" - - "master" schedule: - cron: "00 02 * * 1" # 2AM weekly on monday @@ -30,13 +29,13 @@ jobs: matrix: chain: ["statemine", "westmint", "statemint", "rococo-parachain", "shell", "canvas-kusama"] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Srtool build id: srtool_build - uses: chevdor/srtool-actions@v0.3.0 + uses: chevdor/srtool-actions@v0.4.0 with: chain: ${{ matrix.chain }} runtime_dir: polkadot-parachains/${{ matrix.chain }} From 0eb8efa6f1e4edb7bb548573dc671b41e4dffa5c Mon Sep 17 00:00:00 2001 From: Roman Gafiyatullin Date: Fri, 6 May 2022 15:09:41 +0300 Subject: [PATCH 038/238] A companion PR to the https://github.com/paritytech/substrate/pull/10995 (#1162) * Substrate API change: https://github.com/paritytech/substrate/issues/8103 * fix fallout of https://github.com/paritytech/polkadot/pull/5454 * update lockfile for {"polkadot"} Co-authored-by: Bernhard Schuster Co-authored-by: parity-processbot <> --- Cargo.lock | 494 +++++++++--------- .../src/lib.rs | 1 + test/service/src/lib.rs | 2 +- 3 files changed, 249 insertions(+), 248 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b5ec9baf5..8e953f0cc0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -498,12 +498,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -704,7 +704,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-runtime", "finality-grandpa", @@ -721,7 +721,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-runtime", "frame-support", @@ -733,7 +733,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "bp-runtime", @@ -750,7 +750,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-messages", "bp-runtime", @@ -768,7 +768,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -785,7 +785,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "hash-db", @@ -803,7 +803,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -818,7 +818,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -833,7 +833,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2831,7 +2831,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", ] @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -2871,7 +2871,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "Inflector", "chrono", @@ -2921,7 +2921,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2932,7 +2932,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2948,7 +2948,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -2976,7 +2976,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "bitflags", "frame-metadata", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3018,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3030,7 +3030,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro2", "quote", @@ -3040,7 +3040,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "log", @@ -3057,7 +3057,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -3072,7 +3072,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "sp-api", @@ -3081,7 +3081,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "sp-api", @@ -4162,9 +4162,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc5937366afd3b38071f400d1ce5bd8b1d40b5083cc14e6f8dbcc4032a7f5bb" +checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" dependencies = [ "cfg-if 1.0.0", "ecdsa", @@ -4191,7 +4191,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-primitives", "bitvec", @@ -4282,7 +4282,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "polkadot-primitives", @@ -5183,7 +5183,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5749,7 +5749,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -5765,7 +5765,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -5780,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5824,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "beefy-primitives", "frame-support", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -5896,7 +5896,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5913,7 +5913,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5935,7 +5935,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5956,7 +5956,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6001,7 +6001,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6102,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6118,7 +6118,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6141,7 +6141,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6154,7 +6154,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6172,7 +6172,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6187,7 +6187,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6210,7 +6210,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6226,7 +6226,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6246,7 +6246,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6263,7 +6263,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6280,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6298,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6315,7 +6315,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6344,7 +6344,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6359,7 +6359,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6378,7 +6378,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6395,7 +6395,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6418,7 +6418,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6463,7 +6463,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6478,7 +6478,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6494,7 +6494,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6515,7 +6515,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6568,7 +6568,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6579,7 +6579,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "sp-arithmetic", @@ -6588,7 +6588,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6617,7 +6617,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6635,7 +6635,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6654,7 +6654,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-support", "frame-system", @@ -6671,7 +6671,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6688,7 +6688,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6699,7 +6699,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6731,7 +6731,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6747,7 +6747,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6762,7 +6762,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "frame-system", @@ -6780,7 +6780,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-benchmarking", "frame-support", @@ -7331,7 +7331,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7346,7 +7346,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7359,7 +7359,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "derive_more", "fatality", @@ -7382,7 +7382,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "fatality", "futures 0.3.21", @@ -7403,7 +7403,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "clap 3.1.15", "frame-benchmarking-cli", @@ -7428,7 +7428,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7545,7 +7545,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "always-assert", "fatality", @@ -7566,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7579,7 +7579,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "derive_more", "fatality", @@ -7602,7 +7602,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7616,7 +7616,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7636,7 +7636,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "always-assert", "async-trait", @@ -7657,7 +7657,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7675,7 +7675,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "derive_more", @@ -7704,7 +7704,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "futures 0.3.21", @@ -7724,7 +7724,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "fatality", @@ -7743,7 +7743,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7758,7 +7758,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "futures 0.3.21", @@ -7776,7 +7776,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7791,7 +7791,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "fatality", "futures 0.3.21", @@ -7827,7 +7827,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "futures 0.3.21", @@ -7844,7 +7844,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "futures 0.3.21", @@ -7861,7 +7861,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "always-assert", "assert_matches", @@ -7891,7 +7891,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7907,7 +7907,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7925,7 +7925,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-std", "lazy_static", @@ -7943,7 +7943,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bs58", "futures 0.3.21", @@ -7962,7 +7962,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "derive_more", @@ -7982,7 +7982,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -8004,7 +8004,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -8014,7 +8014,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "futures 0.3.21", @@ -8032,7 +8032,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "derive_more", "futures 0.3.21", @@ -8051,7 +8051,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "derive_more", @@ -8084,7 +8084,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8105,7 +8105,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "futures 0.3.21", @@ -8122,7 +8122,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -8134,7 +8134,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "derive_more", "frame-support", @@ -8151,7 +8151,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8166,7 +8166,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitvec", "frame-system", @@ -8196,7 +8196,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -8228,7 +8228,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-primitives", "bitvec", @@ -8314,7 +8314,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-primitives", "bitvec", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "polkadot-primitives", @@ -8373,7 +8373,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bs58", "parity-scale-codec", @@ -8385,7 +8385,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "bitflags", "bitvec", @@ -8428,7 +8428,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "async-trait", "beefy-gadget", @@ -8530,7 +8530,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8551,7 +8551,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8561,7 +8561,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8586,7 +8586,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-primitives", "bitvec", @@ -8648,7 +8648,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-benchmarking", "frame-system", @@ -9245,7 +9245,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9373,7 +9373,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9450,7 +9450,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "polkadot-primitives", @@ -9657,7 +9657,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "sp-core", @@ -9668,7 +9668,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures 0.3.21", @@ -9695,7 +9695,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9718,7 +9718,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9734,7 +9734,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9751,7 +9751,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9762,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "chrono", "clap 3.1.15", @@ -9801,7 +9801,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "fnv", "futures 0.3.21", @@ -9829,7 +9829,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "hash-db", "kvdb", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures 0.3.21", @@ -9907,7 +9907,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "fork-tree", @@ -9950,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9974,7 +9974,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9987,7 +9987,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures 0.3.21", @@ -10012,7 +10012,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "sc-client-api", "sp-authorship", @@ -10023,7 +10023,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "lazy_static", "lru 0.7.5", @@ -10050,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "environmental", "parity-scale-codec", @@ -10067,7 +10067,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "parity-scale-codec", @@ -10082,7 +10082,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "cfg-if 1.0.0", "libc", @@ -10100,7 +10100,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "ahash", "async-trait", @@ -10140,7 +10140,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10164,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10181,7 +10181,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "hex", @@ -10196,7 +10196,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "asynchronous-codec", @@ -10247,7 +10247,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "libp2p", @@ -10260,7 +10260,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "ahash", "futures 0.3.21", @@ -10277,7 +10277,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "bitflags", "either", @@ -10306,7 +10306,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "bytes 1.1.0", "fnv", @@ -10334,7 +10334,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "libp2p", @@ -10347,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10356,7 +10356,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "hash-db", @@ -10387,7 +10387,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10413,7 +10413,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10430,7 +10430,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "directories", @@ -10496,7 +10496,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "parity-scale-codec", @@ -10510,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10531,7 +10531,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "libc", @@ -10550,7 +10550,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "chrono", "futures 0.3.21", @@ -10568,7 +10568,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "ansi_term", "atty", @@ -10599,7 +10599,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10610,7 +10610,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10637,7 +10637,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "log", @@ -10650,7 +10650,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "futures-timer", @@ -11099,7 +11099,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "enumn", "parity-scale-codec", @@ -11175,7 +11175,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "hash-db", "log", @@ -11192,7 +11192,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "blake2", "proc-macro-crate 1.1.3", @@ -11204,7 +11204,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11217,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "integer-sqrt", "num-traits", @@ -11232,7 +11232,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11245,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "parity-scale-codec", @@ -11257,7 +11257,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "sp-api", @@ -11269,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "log", @@ -11287,7 +11287,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures 0.3.21", @@ -11324,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "merlin", @@ -11347,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11361,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11374,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "base58", "bitflags", @@ -11420,7 +11420,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "blake2", "byteorder", @@ -11434,7 +11434,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro2", "quote", @@ -11445,7 +11445,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11454,7 +11454,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "proc-macro2", "quote", @@ -11464,7 +11464,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "environmental", "parity-scale-codec", @@ -11475,7 +11475,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "finality-grandpa", "log", @@ -11493,7 +11493,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11507,7 +11507,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures 0.3.21", "hash-db", @@ -11532,7 +11532,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "lazy_static", "sp-core", @@ -11543,7 +11543,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures 0.3.21", @@ -11560,7 +11560,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "thiserror", "zstd", @@ -11569,7 +11569,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "parity-scale-codec", @@ -11584,7 +11584,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11598,7 +11598,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "sp-api", "sp-core", @@ -11608,7 +11608,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "backtrace", "lazy_static", @@ -11618,7 +11618,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "rustc-hash", "serde", @@ -11628,7 +11628,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "either", "hash256-std-hasher", @@ -11650,7 +11650,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11667,7 +11667,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11679,7 +11679,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "parity-scale-codec", @@ -11693,7 +11693,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "serde", "serde_json", @@ -11702,7 +11702,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11716,7 +11716,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "scale-info", @@ -11727,7 +11727,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "hash-db", "log", @@ -11749,12 +11749,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11767,7 +11767,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "log", "sp-core", @@ -11780,7 +11780,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures-timer", @@ -11796,7 +11796,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "sp-std", @@ -11808,7 +11808,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "sp-api", "sp-runtime", @@ -11817,7 +11817,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "log", @@ -11833,7 +11833,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "hash-db", "memory-db", @@ -11849,7 +11849,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11866,7 +11866,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11877,7 +11877,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "impl-trait-for-tuples", "log", @@ -12158,7 +12158,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "platforms", ] @@ -12166,7 +12166,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12188,7 +12188,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "futures-util", "hyper", @@ -12201,7 +12201,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12224,7 +12224,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "async-trait", "futures 0.3.21", @@ -12271,7 +12271,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "ansi_term", "build-helper", @@ -12389,7 +12389,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "polkadot-primitives", @@ -12689,7 +12689,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12700,7 +12700,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "expander 0.0.6", "proc-macro-crate 1.1.3", @@ -12829,7 +12829,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#06d43cba9c2498d058a600dfe200c75e36d1181f" +source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "clap 3.1.15", "jsonrpsee 0.10.1", @@ -13424,7 +13424,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "beefy-primitives", "bitvec", @@ -13513,7 +13513,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "polkadot-primitives", @@ -13776,7 +13776,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13789,7 +13789,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-support", "frame-system", @@ -13809,7 +13809,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "frame-benchmarking", "frame-support", @@ -13827,7 +13827,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#cac02e0dec59db5cb9539768479d0f19caa571bd" +source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index 437bb7491b..5c461463b4 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -349,6 +349,7 @@ fn build_polkadot_full_node( telemetry_worker_handle, true, polkadot_service::RealOverseerGen, + None, hwbench, )?; diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index f70465fb90..904ca2e7c3 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -656,7 +656,7 @@ pub fn node_config( database: DatabaseSource::RocksDb { path: root.join("db"), cache_size: 128 }, state_cache_size: 67108864, state_cache_child_ratio: None, - state_pruning: PruningMode::ArchiveAll, + state_pruning: Some(PruningMode::ArchiveAll), keep_blocks: KeepBlocks::All, chain_spec: spec, wasm_method: WasmExecutionMethod::Interpreted, From 40176f664ab60d69cbb337343c608ec804a3cf9b Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko <85877331+sergejparity@users.noreply.github.com> Date: Fri, 6 May 2022 16:37:55 +0300 Subject: [PATCH 039/238] [ci] update review rules (#1239) * update approval rules * add comment --- .github/pr-custom-review.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/pr-custom-review.yml b/.github/pr-custom-review.yml index 4b6b1799d5..cc28140944 100644 --- a/.github/pr-custom-review.yml +++ b/.github/pr-custom-review.yml @@ -19,11 +19,20 @@ rules: check_type: changed_files condition: include: .* - exclude: ^polkadot-parachains/(statemine|statemint)/src/[^/]+\.rs$ + # excluding files from 'Runtime files' and 'CI team' rules + exclude: ^polkadot-parachains/(statemine|statemint)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.* min_approvals: 2 teams: - core-devs + - name: CI team + check_type: changed_files + condition: + include: ^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.* + min_approvals: 2 + teams: + - ci + prevent-review-request: teams: - core-devs From 39ceb079a9098147c1c807915dace993611f174c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 7 May 2022 22:48:00 +0200 Subject: [PATCH 040/238] Bump proc-macro2 from 1.0.37 to 1.0.38 (#1244) Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.37 to 1.0.38. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.37...1.0.38) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e953f0cc0..17e6f6089d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8849,9 +8849,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" dependencies = [ "unicode-xid", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 06ce2620f6..9e200c573e 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -10,7 +10,7 @@ proc-macro = true [dependencies] syn = "1.0.92" -proc-macro2 = "1.0.37" +proc-macro2 = "1.0.38" quote = "1.0.18" proc-macro-crate = "1.1.3" From 476e7dbb727a84a33275b92cd3ba6e00ba6b8a70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 May 2022 20:30:31 +0000 Subject: [PATCH 041/238] Bump clap from 3.1.15 to 3.1.17 Bumps [clap](https://github.com/clap-rs/clap) from 3.1.15 to 3.1.17. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.15...v3.1.17) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17e6f6089d..8107f04164 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1174,9 +1174,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.15" +version = "3.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a35a599b11c089a7f49105658d089b8f2cf0882993c17daf6de15285c2c35d" +checksum = "47582c09be7c8b32c0ab3a6181825ababb713fde6fff20fc573a3870dd45c6a0" dependencies = [ "atty", "bitflags", @@ -1596,7 +1596,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.15", + "clap 3.1.17", "sc-cli", "sc-service", "url 2.2.2", @@ -2875,7 +2875,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6 dependencies = [ "Inflector", "chrono", - "clap 3.1.15", + "clap 3.1.17", "frame-benchmarking", "frame-support", "frame-system", @@ -6810,7 +6810,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.15", + "clap 3.1.17", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7405,7 +7405,7 @@ name = "polkadot-cli" version = "0.9.19" source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" dependencies = [ - "clap 3.1.15", + "clap 3.1.17", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7472,7 +7472,7 @@ dependencies = [ "assert_cmd", "async-trait", "canvas-kusama-runtime", - "clap 3.1.15", + "clap 3.1.17", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", @@ -9765,7 +9765,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ "chrono", - "clap 3.1.15", + "clap 3.1.17", "fdlimit", "futures 0.3.21", "hex", @@ -12831,7 +12831,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" dependencies = [ - "clap 3.1.15", + "clap 3.1.17", "jsonrpsee 0.10.1", "log", "parity-scale-codec", From 30c2a2fc424cf2ddbc6201aca14740cb491286ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Thei=C3=9Fen?= Date: Mon, 9 May 2022 12:00:44 +0200 Subject: [PATCH 042/238] Companion for contracts dos vector fix (#1242) * Companion for contracts dos vector fix * update lockfile for {"substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 360 +++++++++--------- .../canvas-kusama/src/contracts.rs | 6 +- 2 files changed, 184 insertions(+), 182 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8107f04164..3563ecc116 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -498,12 +498,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -2831,7 +2831,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", ] @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -2871,7 +2871,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "Inflector", "chrono", @@ -2921,7 +2921,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -2932,7 +2932,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2948,7 +2948,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -2976,7 +2976,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "bitflags", "frame-metadata", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3018,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.3", @@ -3030,7 +3030,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro2", "quote", @@ -3040,7 +3040,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "log", @@ -3057,7 +3057,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -3072,7 +3072,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "sp-api", @@ -3081,7 +3081,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "sp-api", @@ -5702,7 +5702,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -5719,7 +5719,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5733,7 +5733,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -5749,7 +5749,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -5765,7 +5765,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -5780,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5824,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "beefy-primitives", "frame-support", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5956,7 +5956,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6001,7 +6001,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6018,7 +6018,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "bitflags", "frame-benchmarking", @@ -6045,7 +6045,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "bitflags", "parity-scale-codec", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro2", "quote", @@ -6070,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6089,7 +6089,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -6102,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6118,7 +6118,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6141,7 +6141,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6154,7 +6154,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6172,7 +6172,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6187,7 +6187,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6210,7 +6210,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6226,7 +6226,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6246,7 +6246,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6263,7 +6263,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6280,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6298,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6315,7 +6315,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6344,7 +6344,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6359,7 +6359,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6378,7 +6378,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6395,7 +6395,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6418,7 +6418,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6449,7 +6449,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6463,7 +6463,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6478,7 +6478,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6494,7 +6494,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6515,7 +6515,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6568,7 +6568,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -6579,7 +6579,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "sp-arithmetic", @@ -6588,7 +6588,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6617,7 +6617,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6635,7 +6635,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6654,7 +6654,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-support", "frame-system", @@ -6671,7 +6671,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -6688,7 +6688,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6699,7 +6699,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6716,7 +6716,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6731,7 +6731,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6747,7 +6747,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6958,9 +6958,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e73cd0b0a78045276b19eaae8eaaa20e44a1da9a0217ff934a810d9492ae701" +checksum = "55a7901b85874402471e131de3332dde0e51f38432c69a3853627c8e25433048" dependencies = [ "blake2-rfc", "crc32fast", @@ -9245,7 +9245,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "env_logger 0.9.0", "jsonrpsee 0.10.1", @@ -9657,7 +9657,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "sp-core", @@ -9668,7 +9668,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9695,7 +9695,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9718,7 +9718,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9734,7 +9734,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9751,7 +9751,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -9762,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "chrono", "clap 3.1.17", @@ -9801,7 +9801,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "fnv", "futures 0.3.21", @@ -9829,7 +9829,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "hash-db", "kvdb", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9878,7 +9878,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9907,7 +9907,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "fork-tree", @@ -9950,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -9974,7 +9974,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9987,7 +9987,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -10012,7 +10012,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "sc-client-api", "sp-authorship", @@ -10023,7 +10023,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "lazy_static", "lru 0.7.5", @@ -10050,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "environmental", "parity-scale-codec", @@ -10067,7 +10067,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "parity-scale-codec", @@ -10082,7 +10082,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "cfg-if 1.0.0", "libc", @@ -10100,7 +10100,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "ahash", "async-trait", @@ -10140,7 +10140,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -10164,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10181,7 +10181,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "hex", @@ -10196,7 +10196,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "asynchronous-codec", @@ -10247,7 +10247,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "libp2p", @@ -10260,7 +10260,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "ahash", "futures 0.3.21", @@ -10277,7 +10277,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "bitflags", "either", @@ -10306,7 +10306,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "bytes 1.1.0", "fnv", @@ -10334,7 +10334,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "libp2p", @@ -10347,7 +10347,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10356,7 +10356,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "hash-db", @@ -10387,7 +10387,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10413,7 +10413,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "jsonrpc-core", @@ -10430,7 +10430,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "directories", @@ -10496,7 +10496,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "parity-scale-codec", @@ -10510,7 +10510,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -10531,7 +10531,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "libc", @@ -10550,7 +10550,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "chrono", "futures 0.3.21", @@ -10568,7 +10568,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "ansi_term", "atty", @@ -10599,7 +10599,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -10610,7 +10610,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10637,7 +10637,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "log", @@ -10650,7 +10650,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -11175,7 +11175,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "hash-db", "log", @@ -11192,7 +11192,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "blake2", "proc-macro-crate 1.1.3", @@ -11204,7 +11204,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11217,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "integer-sqrt", "num-traits", @@ -11232,7 +11232,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11245,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "parity-scale-codec", @@ -11257,7 +11257,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "sp-api", @@ -11269,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "log", @@ -11287,7 +11287,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -11306,7 +11306,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "parity-scale-codec", @@ -11324,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "merlin", @@ -11347,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11361,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11374,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "base58", "bitflags", @@ -11420,7 +11420,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "blake2", "byteorder", @@ -11434,7 +11434,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro2", "quote", @@ -11445,7 +11445,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11454,7 +11454,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro2", "quote", @@ -11464,7 +11464,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "environmental", "parity-scale-codec", @@ -11475,7 +11475,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "finality-grandpa", "log", @@ -11493,7 +11493,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11507,7 +11507,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "hash-db", @@ -11532,7 +11532,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "lazy_static", "sp-core", @@ -11543,7 +11543,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -11560,7 +11560,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "thiserror", "zstd", @@ -11569,7 +11569,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "parity-scale-codec", @@ -11584,7 +11584,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11598,7 +11598,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "sp-api", "sp-core", @@ -11608,7 +11608,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "backtrace", "lazy_static", @@ -11618,7 +11618,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "rustc-hash", "serde", @@ -11628,7 +11628,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "either", "hash256-std-hasher", @@ -11650,7 +11650,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11667,7 +11667,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "Inflector", "proc-macro-crate 1.1.3", @@ -11679,7 +11679,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "parity-scale-codec", @@ -11693,7 +11693,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "serde", "serde_json", @@ -11702,7 +11702,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11716,7 +11716,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11727,7 +11727,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "hash-db", "log", @@ -11749,12 +11749,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11767,7 +11767,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "log", "sp-core", @@ -11780,7 +11780,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures-timer", @@ -11796,7 +11796,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "sp-std", @@ -11808,7 +11808,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "sp-api", "sp-runtime", @@ -11817,7 +11817,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "log", @@ -11833,7 +11833,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "hash-db", "memory-db", @@ -11849,7 +11849,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11866,7 +11866,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11877,7 +11877,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "impl-trait-for-tuples", "log", @@ -12158,7 +12158,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "platforms", ] @@ -12166,7 +12166,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -12188,7 +12188,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures-util", "hyper", @@ -12201,7 +12201,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -12224,7 +12224,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "async-trait", "futures 0.3.21", @@ -12250,7 +12250,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12260,7 +12260,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c2fc4b3ca0d7a15cc3f9cb1e5f441d99ec8d6e0b" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "proc-macro-crate 1.1.3", "proc-macro2", @@ -12271,7 +12271,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "ansi_term", "build-helper", @@ -12829,7 +12829,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#99bc7b5ae6b6e0b44b9af53fc0b9852e4e1e28be" +source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" dependencies = [ "clap 3.1.17", "jsonrpsee 0.10.1", diff --git a/polkadot-parachains/canvas-kusama/src/contracts.rs b/polkadot-parachains/canvas-kusama/src/contracts.rs index d5c368fa7c..84aa1a0c26 100644 --- a/polkadot-parachains/canvas-kusama/src/contracts.rs +++ b/polkadot-parachains/canvas-kusama/src/contracts.rs @@ -8,8 +8,9 @@ use frame_support::{ weights::Weight, }; use pallet_contracts::{ + migration, weights::{SubstrateWeight, WeightInfo}, - Config, DefaultAddressGenerator, Frame, Schedule, + Config, DefaultAddressGenerator, DefaultContractAccessWeight, Frame, Schedule, }; pub use parachains_common::AVERAGE_ON_INITIALIZE_RATIO; @@ -55,11 +56,12 @@ impl Config for Runtime { type Schedule = MySchedule; type CallStack = [Frame; 31]; type AddressGenerator = DefaultAddressGenerator; + type ContractAccessWeight = DefaultContractAccessWeight; } pub struct Migrations; impl OnRuntimeUpgrade for Migrations { fn on_runtime_upgrade() -> Weight { - pallet_contracts::migration::migrate::() + migration::migrate::() } } From 3d982fef1c42a5f6288c9ecb81c406dd410d87fa Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Tue, 10 May 2022 12:53:21 +0200 Subject: [PATCH 043/238] companion #8738 (jsonrpsee) (#823) * update polkadot and substrate * add jsonrpsee glue code * fix tests * update substrate & polkadot * update substrate & polkadot * update Cargo.lock * revert Cargo.toml * revert changes in Cargo.toml * update companion * revert substrate change * add Cargo.lock * update substrate manually * update polkadot --- Cargo.lock | 1354 +++++++---------- ...cks_from_tip_without_connected_collator.rs | 2 +- client/pov-recovery/tests/pov_recovery.rs | 2 +- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/node/src/rpc.rs | 19 +- parachain-template/node/src/service.rs | 13 +- polkadot-parachains/Cargo.toml | 2 +- polkadot-parachains/src/rpc.rs | 41 +- polkadot-parachains/src/service.rs | 32 +- test/service/Cargo.toml | 2 +- test/service/src/lib.rs | 14 +- test/service/tests/full_node_catching_up.rs | 2 +- test/service/tests/migrate_solo_to_para.rs | 2 +- test/service/tests/runtime_upgrade.rs | 2 +- 17 files changed, 586 insertions(+), 909 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3563ecc116..58e3fee196 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,7 +94,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -232,7 +232,7 @@ dependencies = [ "slab", "socket2", "waker-fn", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -267,7 +267,7 @@ dependencies = [ "libc", "once_cell", "signal-hook", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -337,7 +337,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-sink", "futures-util", "memchr", @@ -367,7 +367,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "beefy-primitives", "fnv", @@ -475,15 +475,12 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "beefy-gadget", "beefy-primitives", "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.0", @@ -498,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -704,7 +701,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-runtime", "finality-grandpa", @@ -721,7 +718,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-runtime", "frame-support", @@ -733,7 +730,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", "bp-runtime", @@ -750,7 +747,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-messages", "bp-runtime", @@ -768,7 +765,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -785,7 +782,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "hash-db", @@ -803,7 +800,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -818,7 +815,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -833,7 +830,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -906,16 +903,6 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -dependencies = [ - "byteorder", - "iovec", -] - [[package]] name = "bytes" version = "1.1.0" @@ -1116,7 +1103,7 @@ dependencies = [ "num-integer", "num-traits", "time", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1599,7 +1586,7 @@ dependencies = [ "clap 3.1.17", "sc-cli", "sc-service", - "url 2.2.2", + "url", ] [[package]] @@ -1741,7 +1728,7 @@ dependencies = [ "substrate-test-utils", "tokio", "tracing", - "url 2.2.2", + "url", ] [[package]] @@ -1878,7 +1865,7 @@ dependencies = [ name = "cumulus-pallet-parachain-system-proc-macro" version = "0.1.0" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -2078,7 +2065,7 @@ dependencies = [ "cumulus-primitives-core", "derive_more", "futures 0.3.21", - "jsonrpsee-core 0.11.0", + "jsonrpsee-core", "parity-scale-codec", "parking_lot 0.12.0", "polkadot-overseer", @@ -2103,7 +2090,7 @@ dependencies = [ "cumulus-relay-chain-interface", "futures 0.3.21", "futures-timer", - "jsonrpsee 0.11.0", + "jsonrpsee", "parity-scale-codec", "parking_lot 0.12.0", "polkadot-service", @@ -2115,7 +2102,7 @@ dependencies = [ "sp-state-machine", "sp-storage", "tracing", - "url 2.2.2", + "url", ] [[package]] @@ -2221,7 +2208,7 @@ dependencies = [ "frame-system", "frame-system-rpc-runtime-api", "futures 0.3.21", - "jsonrpc-core", + "jsonrpsee", "pallet-transaction-payment", "parity-scale-codec", "parking_lot 0.12.0", @@ -2256,7 +2243,7 @@ dependencies = [ "substrate-test-client", "substrate-test-utils", "tokio", - "url 2.2.2", + "url", ] [[package]] @@ -2419,7 +2406,7 @@ checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" dependencies = [ "libc", "redox_users 0.3.5", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2430,7 +2417,7 @@ checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", "redox_users 0.4.0", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2441,7 +2428,7 @@ checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", "redox_users 0.4.0", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2598,9 +2585,9 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e58b112d5099aa0857c5d05f0eacab86406dd8c0f85fe5d320a13256d29ecf4" +checksum = "052bc8773a98bd051ff37db74a8a25f00e6bfa2cbd03373390c72e9f7afbf344" dependencies = [ "proc-macro2", "quote", @@ -2647,7 +2634,7 @@ checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ "errno-dragonfly", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2739,7 +2726,7 @@ checksum = "f5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bd" dependencies = [ "expander 0.0.4", "indexmap", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -2831,7 +2818,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", ] @@ -2843,13 +2830,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" dependencies = [ "matches", - "percent-encoding 2.1.0", + "percent-encoding", ] [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -2871,7 +2858,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "Inflector", "chrono", @@ -2921,9 +2908,9 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -2932,7 +2919,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2948,7 +2935,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -2976,7 +2963,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "bitflags", "frame-metadata", @@ -3006,7 +2993,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3018,10 +3005,10 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -3030,7 +3017,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "proc-macro2", "quote", @@ -3040,7 +3027,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "log", @@ -3057,7 +3044,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -3072,7 +3059,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "sp-api", @@ -3081,7 +3068,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "sp-api", @@ -3104,7 +3091,7 @@ dependencies = [ "lazy_static", "libc", "libloading 0.5.2", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3114,7 +3101,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3123,22 +3110,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" -[[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 = "2.0.0" @@ -3254,6 +3225,10 @@ name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +dependencies = [ + "gloo-timers", + "send_wrapper", +] [[package]] name = "futures-util" @@ -3357,6 +3332,26 @@ dependencies = [ "regex", ] +[[package]] +name = "gloo-net" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d37f728c2b2b8c568bd2efb34ce9087e347c182db68f101a969b4fe23054d5" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project 1.0.10", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "gloo-timers" version = "0.2.1" @@ -3370,6 +3365,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "gloo-utils" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0bbef55e98d946adbd89f3c65a497cf9adb995a73b99573f30180e8813ab21" +dependencies = [ + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "group" version = "0.11.0" @@ -3387,7 +3393,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f072413d126e57991455e0a922b31e4c8ba7c2ffbebf6b78b4f8521397d65cd" dependencies = [ - "bytes 1.1.0", + "bytes", "fnv", "futures-core", "futures-sink", @@ -3534,7 +3540,7 @@ checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" dependencies = [ "libc", "match_cfg", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3543,7 +3549,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" dependencies = [ - "bytes 1.1.0", + "bytes", "fnv", "itoa 0.4.8", ] @@ -3554,7 +3560,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ - "bytes 1.1.0", + "bytes", "http", "pin-project-lite 0.2.7", ] @@ -3592,7 +3598,7 @@ version = "0.14.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-channel", "futures-core", "futures-util", @@ -3643,17 +3649,6 @@ dependencies = [ "webpki-roots", ] -[[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.3" @@ -3672,7 +3667,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3763,15 +3758,6 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec58677acfea8a15352d42fc87d11d63596ade9239e0a7c9352914417515dbe6" -[[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.4.1" @@ -3786,7 +3772,7 @@ checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" dependencies = [ "socket2", "widestring", - "winapi 0.3.9", + "winapi", "winreg", ] @@ -3835,193 +3821,37 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonrpc-client-transports" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" -dependencies = [ - "derive_more", - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-pubsub", - "log", - "serde", - "serde_json", - "url 1.7.2", -] - -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures 0.3.21", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "jsonrpc-core-client" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" -dependencies = [ - "futures 0.3.21", - "jsonrpc-client-transports", -] - -[[package]] -name = "jsonrpc-derive" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" -dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "jsonrpc-http-server" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" -dependencies = [ - "futures 0.3.21", - "hyper", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "net2", - "parking_lot 0.11.2", - "unicase", -] - -[[package]] -name = "jsonrpc-ipc-server" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" -dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "parity-tokio-ipc", - "parking_lot 0.11.2", - "tower-service", -] - -[[package]] -name = "jsonrpc-pubsub" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" -dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "lazy_static", - "log", - "parking_lot 0.11.2", - "rand 0.7.3", - "serde", -] - -[[package]] -name = "jsonrpc-server-utils" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" -dependencies = [ - "bytes 1.1.0", - "futures 0.3.21", - "globset", - "jsonrpc-core", - "lazy_static", - "log", - "tokio", - "tokio-stream", - "tokio-util 0.6.9", - "unicase", -] - -[[package]] -name = "jsonrpc-ws-server" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" -dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "parity-ws", - "parking_lot 0.11.2", - "slab", -] - [[package]] name = "jsonrpsee" -version = "0.10.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91dc760c341fa81173f9a434931aaf32baad5552b0230cc6c93e8fb7eaad4c19" +checksum = "ad6f9ff3481f3069c92474b697c104502f7e9191d29b34bfa38ae9a19415f1cd" dependencies = [ - "jsonrpsee-core 0.10.1", - "jsonrpsee-proc-macros", - "jsonrpsee-types 0.10.1", - "jsonrpsee-ws-client 0.10.1", -] - -[[package]] -name = "jsonrpsee" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d02a921aa22006ed979c2e1c407fd21302ac6049e5b544634ec5ec41516363d" -dependencies = [ - "jsonrpsee-core 0.11.0", + "jsonrpsee-core", "jsonrpsee-http-client", - "jsonrpsee-types 0.11.0", - "jsonrpsee-ws-client 0.11.0", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765f7a36d5087f74e3b3b47805c2188fef8eb54afcb587b078d9f8ebfe9c7220" -dependencies = [ - "futures 0.3.21", - "http", - "jsonrpsee-core 0.10.1", - "jsonrpsee-types 0.10.1", - "pin-project 1.0.10", - "rustls-native-certs 0.6.1", - "soketto", - "thiserror", - "tokio", - "tokio-rustls 0.23.2", - "tokio-util 0.7.1", + "jsonrpsee-http-server", + "jsonrpsee-proc-macros", + "jsonrpsee-types", + "jsonrpsee-wasm-client", + "jsonrpsee-ws-client", + "jsonrpsee-ws-server", "tracing", - "webpki-roots", ] [[package]] name = "jsonrpsee-client-transport" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4d7c4b01e336c32fc17034560291fa0690170aedace93ae746e9aa119a5b91" +checksum = "4358e100faf43b2f3b7b0ecf0ad4ce3e6275fe12fda8428dedda2979751dd184" dependencies = [ + "anyhow", + "futures-channel", + "futures-timer", "futures-util", + "gloo-net", "http", - "jsonrpsee-core 0.11.0", - "jsonrpsee-types 0.11.0", + "jsonrpsee-core", + "jsonrpsee-types", "pin-project 1.0.10", "rustls-native-certs 0.6.1", "soketto", @@ -4035,34 +3865,12 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.10.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82ef77ecd20c2254d54f5da8c0738eacca61e6b6511268a8f2753e3148c6c706" +checksum = "8e1d26ab3868749d6f716345a5fbd3334a100c0709fe464bd9189ee9d78adcde" dependencies = [ "anyhow", "arrayvec 0.7.2", - "async-trait", - "beef", - "futures-channel", - "futures-util", - "hyper", - "jsonrpsee-types 0.10.1", - "rustc-hash", - "serde", - "serde_json", - "soketto", - "thiserror", - "tokio", - "tracing", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8066473754794e7784c61808d25d60dfb68e1025a625792a6a1bc680d1ab700a" -dependencies = [ - "anyhow", "async-lock", "async-trait", "beef", @@ -4070,26 +3878,30 @@ dependencies = [ "futures-timer", "futures-util", "hyper", - "jsonrpsee-types 0.11.0", + "jsonrpsee-types", + "parking_lot 0.12.0", + "rand 0.8.5", "rustc-hash", "serde", "serde_json", + "soketto", "thiserror", "tokio", "tracing", + "wasm-bindgen-futures", ] [[package]] name = "jsonrpsee-http-client" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157df2774b82fddf37a297fd5c8f711601b158176608f86d2adb5d227c524506" +checksum = "11e689d2d20891e636919ead565fef2ebf8a7ad863ddcd9ff112a79b281fcba1" dependencies = [ "async-trait", "hyper", "hyper-rustls 0.23.0", - "jsonrpsee-core 0.11.0", - "jsonrpsee-types 0.11.0", + "jsonrpsee-core", + "jsonrpsee-types", "rustc-hash", "serde", "serde_json", @@ -4099,12 +3911,31 @@ dependencies = [ ] [[package]] -name = "jsonrpsee-proc-macros" -version = "0.10.1" +name = "jsonrpsee-http-server" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7291c72805bc7d413b457e50d8ef3e87aa554da65ecbbc278abb7dfc283e7f0" +checksum = "ee87f19a7a01a55248fc4b4861d822331c4fd60151d99e7ac9c6771999132671" dependencies = [ - "proc-macro-crate 1.1.3", + "futures-channel", + "futures-util", + "globset", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "lazy_static", + "serde_json", + "tokio", + "tracing", + "unicase", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75da57d54817577801c2f7a1b638610819dfd86f0470c21a2af81b06eb41ba6" +dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -4112,9 +3943,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.10.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b6aa52f322cbf20c762407629b8300f39bcc0cf0619840d9252a2f65fd2dd9" +checksum = "f5fe5a629443d17a30ff564881ba68881a710fd7eb02a538087b0bc51cb4962c" dependencies = [ "anyhow", "beef", @@ -4125,41 +3956,44 @@ dependencies = [ ] [[package]] -name = "jsonrpsee-types" -version = "0.11.0" +name = "jsonrpsee-wasm-client" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd42e08ae7f0de7b00319f723f7b06e2d461ab69bfa615a611fab5dec00b192e" +checksum = "1b8e908214ac419d4931726d4026d0e3ab8a304577b6ea561c1a72328cebf9e9" dependencies = [ - "anyhow", - "beef", - "serde", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba31eb2b9a4b73d8833f53fe55e579516289f8b31adb6104b3dbc629755acf7d" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", +] + +[[package]] +name = "jsonrpsee-ws-server" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "179fe584af5c0145f922c581770d073c661a514ae6cdfa5b1a0bce41fdfdf646" +dependencies = [ + "futures-channel", + "futures-util", + "jsonrpsee-core", + "jsonrpsee-types", "serde_json", - "thiserror", + "soketto", + "tokio", + "tokio-util 0.7.1", "tracing", ] -[[package]] -name = "jsonrpsee-ws-client" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd66d18bab78d956df24dd0d2e41e4c00afbb818fda94a98264bdd12ce8506ac" -dependencies = [ - "jsonrpsee-client-transport 0.10.1", - "jsonrpsee-core 0.10.1", - "jsonrpsee-types 0.10.1", -] - -[[package]] -name = "jsonrpsee-ws-client" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10011be7e04339bdc8b5a8e3542eb5aa1aa08465d5c897044ce00b03ea8535b" -dependencies = [ - "jsonrpsee-client-transport 0.11.0", - "jsonrpsee-core 0.11.0", - "jsonrpsee-types 0.11.0", -] - [[package]] name = "k256" version = "0.10.4" @@ -4178,20 +4012,10 @@ 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 = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-primitives", "bitvec", @@ -4282,7 +4106,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "polkadot-primitives", @@ -4364,7 +4188,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" dependencies = [ "cc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -4374,7 +4198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afe203d669ec979b7128619bae5a63b7b42e9203c1b29146079ee05e2f604b52" dependencies = [ "cfg-if 1.0.0", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -4390,7 +4214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "475ce2ac4a9727e53a519f6ee05b38abfcba8f0d39c4d24f103d184e36fd5b0f" dependencies = [ "atomic", - "bytes 1.1.0", + "bytes", "futures 0.3.21", "futures-timer", "getrandom 0.2.3", @@ -4534,7 +4358,7 @@ dependencies = [ "asynchronous-codec", "base64", "byteorder", - "bytes 1.1.0", + "bytes", "fnv", "futures 0.3.21", "hex_fmt", @@ -4578,7 +4402,7 @@ checksum = "564e6bd64d177446399ed835b9451a8825b07929d6daa6a94e6405592974725e" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec", - "bytes 1.1.0", + "bytes", "either", "fnv", "futures 0.3.21", @@ -4642,7 +4466,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "442eb0c9fff0bf22a34f015724b4143ce01877e079ed0963c722d94c07c72160" dependencies = [ "asynchronous-codec", - "bytes 1.1.0", + "bytes", "futures 0.3.21", "libp2p-core", "log", @@ -4659,7 +4483,7 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dd7e0c94051cda67123be68cf6b65211ba3dde7277be9068412de3e7ffd63ef" dependencies = [ - "bytes 1.1.0", + "bytes", "curve25519-dalek 3.2.0", "futures 0.3.21", "lazy_static", @@ -4698,7 +4522,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "962c0fb0e7212fb96a69b87f2d09bcefd317935239bdc79cda900e7a8897a3fe" dependencies = [ "asynchronous-codec", - "bytes 1.1.0", + "bytes", "futures 0.3.21", "libp2p-core", "log", @@ -4729,7 +4553,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3aa754cb7bccef51ebc3c458c6bbcef89d83b578a9925438389be841527d408f" dependencies = [ "asynchronous-codec", - "bytes 1.1.0", + "bytes", "either", "futures 0.3.21", "futures-timer", @@ -4778,7 +4602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6a6fc6c9ad95661f46989473b34bd2993d14a4de497ff3b2668a910d4b869" dependencies = [ "async-trait", - "bytes 1.1.0", + "bytes", "futures 0.3.21", "instant", "libp2p-core", @@ -4876,7 +4700,7 @@ dependencies = [ "quicksink", "rw-stream-sink", "soketto", - "url 2.2.2", + "url", "webpki-roots", ] @@ -5183,7 +5007,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5222,25 +5046,6 @@ dependencies = [ "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" version = "0.8.2" @@ -5249,34 +5054,10 @@ checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" dependencies = [ "libc", "log", - "miow 0.3.7", + "miow", "ntapi", "wasi 0.11.0+wasi-snapshot-preview1", - "winapi 0.3.9", -] - -[[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio 0.6.23", - "slab", -] - -[[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", + "winapi", ] [[package]] @@ -5285,7 +5066,7 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -5305,11 +5086,11 @@ dependencies = [ "byteorder", "data-encoding", "multihash", - "percent-encoding 2.1.0", + "percent-encoding", "serde", "static_assertions", "unsigned-varint", - "url 2.2.2", + "url", ] [[package]] @@ -5346,7 +5127,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", @@ -5366,7 +5147,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b" dependencies = [ - "bytes 1.1.0", + "bytes", "futures 0.3.21", "log", "pin-project 1.0.10", @@ -5418,17 +5199,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -[[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 = "netlink-packet-core" version = "0.4.2" @@ -5473,7 +5243,7 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef8785b8141e8432aa45fceb922a7e876d7da3fad37fa7e7ec702ace3aa0826b" dependencies = [ - "bytes 1.1.0", + "bytes", "futures 0.3.21", "log", "netlink-packet-core", @@ -5488,7 +5258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e4c9f9547a08241bee7b6558b9b98e1f290d187de8b7cfca2bbb4937bcaa8f8" dependencies = [ "async-io", - "bytes 1.1.0", + "bytes", "futures 0.3.21", "libc", "log", @@ -5548,7 +5318,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -5702,7 +5472,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -5719,7 +5489,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5733,7 +5503,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -5749,7 +5519,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -5765,7 +5535,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -5780,7 +5550,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5574,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5824,7 +5594,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5839,7 +5609,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "beefy-primitives", "frame-support", @@ -5855,7 +5625,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5878,7 +5648,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5896,7 +5666,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5913,7 +5683,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5935,7 +5705,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5956,7 +5726,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6001,7 +5771,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6018,7 +5788,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "bitflags", "frame-benchmarking", @@ -6045,7 +5815,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "bitflags", "parity-scale-codec", @@ -6060,7 +5830,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "proc-macro2", "quote", @@ -6070,11 +5840,9 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "pallet-contracts-primitives", "pallet-contracts-rpc-runtime-api", "parity-scale-codec", @@ -6089,7 +5857,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -6102,7 +5870,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6118,7 +5886,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6141,7 +5909,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6154,7 +5922,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6172,7 +5940,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6187,7 +5955,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6210,7 +5978,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6226,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6246,7 +6014,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6263,7 +6031,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6280,7 +6048,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6298,11 +6066,9 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "parity-scale-codec", "serde", "sp-api", @@ -6315,7 +6081,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6330,7 +6096,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6344,7 +6110,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6359,7 +6125,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6378,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6395,7 +6161,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6418,7 +6184,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6434,7 +6200,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6449,7 +6215,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6463,7 +6229,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6478,7 +6244,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6494,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6515,7 +6281,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6531,7 +6297,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6545,7 +6311,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6568,9 +6334,9 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -6579,7 +6345,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "sp-arithmetic", @@ -6588,7 +6354,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6617,7 +6383,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6635,7 +6401,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6654,7 +6420,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-support", "frame-system", @@ -6671,11 +6437,9 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", "sp-api", @@ -6688,7 +6452,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6699,7 +6463,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6716,7 +6480,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6731,7 +6495,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6747,7 +6511,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6762,7 +6526,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "frame-system", @@ -6780,7 +6544,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-benchmarking", "frame-support", @@ -6826,7 +6590,7 @@ dependencies = [ "frame-benchmarking", "frame-benchmarking-cli", "hex-literal", - "jsonrpc-core", + "jsonrpsee", "log", "pallet-transaction-payment-rpc", "parachain-template-runtime", @@ -6995,7 +6759,7 @@ version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -7007,20 +6771,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" -[[package]] -name = "parity-tokio-ipc" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" -dependencies = [ - "futures 0.3.21", - "libc", - "log", - "rand 0.7.3", - "tokio", - "winapi 0.3.9", -] - [[package]] name = "parity-util-mem" version = "0.11.0" @@ -7034,7 +6784,7 @@ dependencies = [ "parking_lot 0.12.0", "primitive-types", "smallvec", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -7063,24 +6813,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" -[[package]] -name = "parity-ws" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "httparse", - "log", - "mio 0.6.23", - "mio-extras", - "rand 0.7.3", - "sha-1 0.8.2", - "slab", - "url 2.2.2", -] - [[package]] name = "parking" version = "2.0.0" @@ -7119,7 +6851,7 @@ dependencies = [ "libc", "redox_syscall 0.2.10", "smallvec", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -7165,12 +6897,6 @@ 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" @@ -7331,7 +7057,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7346,20 +7072,21 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", + "rand 0.8.5", "tracing-gum", ] [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "derive_more", "fatality", @@ -7382,7 +7109,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "fatality", "futures 0.3.21", @@ -7403,7 +7130,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "clap 3.1.17", "frame-benchmarking-cli", @@ -7428,7 +7155,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7488,7 +7215,7 @@ dependencies = [ "frame-benchmarking-cli", "futures 0.3.21", "hex-literal", - "jsonrpc-core", + "jsonrpsee", "log", "nix 0.24.1", "pallet-contracts-rpc", @@ -7545,7 +7272,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "always-assert", "fatality", @@ -7566,7 +7293,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7579,7 +7306,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "derive_more", "fatality", @@ -7602,7 +7329,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7616,7 +7343,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7636,11 +7363,11 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "always-assert", "async-trait", - "bytes 1.1.0", + "bytes", "futures 0.3.21", "parity-scale-codec", "parking_lot 0.12.0", @@ -7657,7 +7384,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7675,7 +7402,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", "derive_more", @@ -7704,7 +7431,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", "futures 0.3.21", @@ -7724,7 +7451,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", "fatality", @@ -7743,7 +7470,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7758,7 +7485,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "futures 0.3.21", @@ -7776,7 +7503,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7791,7 +7518,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7808,7 +7535,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "fatality", "futures 0.3.21", @@ -7827,7 +7554,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "futures 0.3.21", @@ -7844,9 +7571,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", + "fatality", "futures 0.3.21", "futures-timer", "polkadot-node-primitives", @@ -7861,7 +7589,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "always-assert", "assert_matches", @@ -7891,7 +7619,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7907,7 +7635,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7925,7 +7653,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-std", "lazy_static", @@ -7943,7 +7671,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bs58", "futures 0.3.21", @@ -7962,7 +7690,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "derive_more", @@ -7982,7 +7710,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -8004,7 +7732,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -8014,7 +7742,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "futures 0.3.21", @@ -8032,7 +7760,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "derive_more", "futures 0.3.21", @@ -8051,7 +7779,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "derive_more", @@ -8084,7 +7812,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "futures 0.3.21", "futures-timer", @@ -8105,7 +7833,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "futures 0.3.21", @@ -8122,10 +7850,10 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "expander 0.0.6", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -8134,7 +7862,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "derive_more", "frame-support", @@ -8151,7 +7879,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -8166,7 +7894,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitvec", "frame-system", @@ -8196,11 +7924,11 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", - "jsonrpc-core", + "jsonrpsee", "pallet-mmr-rpc", "pallet-transaction-payment-rpc", "polkadot-primitives", @@ -8228,7 +7956,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-primitives", "bitvec", @@ -8314,7 +8042,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-primitives", "bitvec", @@ -8361,7 +8089,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "polkadot-primitives", @@ -8373,7 +8101,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bs58", "parity-scale-codec", @@ -8385,7 +8113,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "bitflags", "bitvec", @@ -8428,7 +8156,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "async-trait", "beefy-gadget", @@ -8530,7 +8258,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8551,7 +8279,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8561,7 +8289,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8586,7 +8314,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-primitives", "bitvec", @@ -8648,7 +8376,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-benchmarking", "frame-system", @@ -8709,7 +8437,7 @@ dependencies = [ "libc", "log", "wepoll-ffi", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -8804,15 +8532,6 @@ dependencies = [ "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.1.3" @@ -8899,7 +8618,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ - "bytes 1.1.0", + "bytes", "prost-derive", ] @@ -8909,7 +8628,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ - "bytes 1.1.0", + "bytes", "heck 0.3.3", "itertools", "lazy_static", @@ -8942,7 +8661,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" dependencies = [ - "bytes 1.1.0", + "bytes", "prost", ] @@ -9239,16 +8958,16 @@ dependencies = [ "bitflags", "libc", "mach", - "winapi 0.3.9", + "winapi", ] [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "env_logger 0.9.0", - "jsonrpsee 0.10.1", + "jsonrpsee", "log", "parity-scale-codec", "serde", @@ -9265,7 +8984,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -9307,7 +9026,7 @@ dependencies = [ "spin", "untrusted", "web-sys", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -9373,7 +9092,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9450,7 +9169,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "polkadot-primitives", @@ -9466,7 +9185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -9543,7 +9262,7 @@ dependencies = [ "io-lifetimes", "libc", "linux-raw-sys", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -9657,7 +9376,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "sp-core", @@ -9668,7 +9387,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9695,7 +9414,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9718,7 +9437,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9734,7 +9453,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9751,9 +9470,9 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -9762,7 +9481,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "chrono", "clap 3.1.17", @@ -9801,7 +9520,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "fnv", "futures 0.3.21", @@ -9829,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "hash-db", "kvdb", @@ -9854,7 +9573,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9878,7 +9597,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9907,7 +9626,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "fork-tree", @@ -9950,12 +9669,10 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "sc-consensus-babe", "sc-consensus-epochs", "sc-rpc-api", @@ -9974,7 +9691,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9987,7 +9704,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -10012,7 +9729,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "sc-client-api", "sp-authorship", @@ -10023,7 +9740,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "lazy_static", "lru 0.7.5", @@ -10050,7 +9767,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "environmental", "parity-scale-codec", @@ -10067,7 +9784,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "parity-scale-codec", @@ -10082,7 +9799,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -10100,7 +9817,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "ahash", "async-trait", @@ -10140,14 +9857,11 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "finality-grandpa", "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", "sc-client-api", @@ -10164,7 +9878,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "ansi_term", "futures 0.3.21", @@ -10181,7 +9895,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "hex", @@ -10196,12 +9910,12 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "asynchronous-codec", "bitflags", - "bytes 1.1.0", + "bytes", "cid", "either", "fnv", @@ -10247,7 +9961,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "libp2p", @@ -10260,7 +9974,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "ahash", "futures 0.3.21", @@ -10277,7 +9991,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "bitflags", "either", @@ -10306,9 +10020,9 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "bytes 1.1.0", + "bytes", "fnv", "futures 0.3.21", "futures-timer", @@ -10334,7 +10048,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "libp2p", @@ -10347,7 +10061,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10356,12 +10070,11 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "hash-db", - "jsonrpc-core", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.0", @@ -10387,13 +10100,10 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.0", @@ -10413,14 +10123,10 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-http-server", - "jsonrpc-ipc-server", - "jsonrpc-pubsub", - "jsonrpc-ws-server", + "jsonrpsee", "log", "serde_json", "substrate-prometheus-endpoint", @@ -10430,7 +10136,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "directories", @@ -10438,8 +10144,7 @@ dependencies = [ "futures 0.3.21", "futures-timer", "hash-db", - "jsonrpc-core", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", "parity-util-mem", @@ -10496,7 +10201,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "parity-scale-codec", @@ -10510,11 +10215,9 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "parity-scale-codec", "sc-chain-spec", "sc-client-api", @@ -10531,7 +10234,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "libc", @@ -10550,7 +10253,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "chrono", "futures 0.3.21", @@ -10568,7 +10271,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "ansi_term", "atty", @@ -10599,9 +10302,9 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -10610,7 +10313,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10637,7 +10340,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "log", @@ -10650,7 +10353,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10680,7 +10383,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4260c630e8a8a33429d1688eff2f163f24c65a4e1b1578ef6b565061336e4b6f" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -10693,7 +10396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ "lazy_static", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -10866,6 +10569,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + [[package]] name = "serde" version = "1.0.137" @@ -11099,7 +10808,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "enumn", "parity-scale-codec", @@ -11153,7 +10862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -11163,7 +10872,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64", - "bytes 1.1.0", + "bytes", "flate2", "futures 0.3.21", "httparse", @@ -11175,7 +10884,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "hash-db", "log", @@ -11192,10 +10901,10 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "blake2", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -11204,7 +10913,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11217,7 +10926,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "integer-sqrt", "num-traits", @@ -11232,7 +10941,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11245,7 +10954,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "parity-scale-codec", @@ -11257,7 +10966,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "sp-api", @@ -11269,7 +10978,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "log", @@ -11287,7 +10996,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -11306,7 +11015,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "parity-scale-codec", @@ -11324,7 +11033,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "merlin", @@ -11347,7 +11056,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11361,7 +11070,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11374,7 +11083,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "base58", "bitflags", @@ -11420,7 +11129,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "blake2", "byteorder", @@ -11434,7 +11143,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "proc-macro2", "quote", @@ -11445,7 +11154,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11454,7 +11163,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "proc-macro2", "quote", @@ -11464,7 +11173,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "environmental", "parity-scale-codec", @@ -11475,7 +11184,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "finality-grandpa", "log", @@ -11493,7 +11202,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11507,7 +11216,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "hash-db", @@ -11532,7 +11241,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "lazy_static", "sp-core", @@ -11543,7 +11252,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -11560,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "thiserror", "zstd", @@ -11569,7 +11278,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "parity-scale-codec", @@ -11584,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11598,7 +11307,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "sp-api", "sp-core", @@ -11608,7 +11317,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "backtrace", "lazy_static", @@ -11618,7 +11327,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "rustc-hash", "serde", @@ -11628,7 +11337,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "either", "hash256-std-hasher", @@ -11650,7 +11359,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11667,10 +11376,10 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "Inflector", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -11679,7 +11388,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "parity-scale-codec", @@ -11693,7 +11402,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "serde", "serde_json", @@ -11702,7 +11411,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11716,7 +11425,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11727,7 +11436,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "hash-db", "log", @@ -11749,12 +11458,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11767,7 +11476,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "log", "sp-core", @@ -11780,7 +11489,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures-timer", @@ -11796,7 +11505,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "sp-std", @@ -11808,7 +11517,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "sp-api", "sp-runtime", @@ -11817,7 +11526,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "log", @@ -11833,7 +11542,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "hash-db", "memory-db", @@ -11849,7 +11558,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11866,7 +11575,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11877,7 +11586,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "impl-trait-for-tuples", "log", @@ -12158,7 +11867,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "platforms", ] @@ -12166,18 +11875,17 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "log", "parity-scale-codec", "sc-client-api", "sc-rpc-api", "sc-transaction-pool-api", + "serde_json", "sp-api", "sp-block-builder", "sp-blockchain", @@ -12188,7 +11896,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures-util", "hyper", @@ -12201,11 +11909,9 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "log", "parity-scale-codec", "sc-client-api", @@ -12224,7 +11930,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "async-trait", "futures 0.3.21", @@ -12250,7 +11956,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -12260,9 +11966,9 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -12271,7 +11977,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "ansi_term", "build-helper", @@ -12357,7 +12063,7 @@ dependencies = [ "libc", "redox_syscall 0.2.10", "remove_dir_all", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -12368,7 +12074,7 @@ checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" dependencies = [ "byteorder", "dirs", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -12389,7 +12095,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "polkadot-primitives", @@ -12489,7 +12195,7 @@ checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -12542,10 +12248,10 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dce653fb475565de9f6fb0614b28bca8df2c430c0cf84bcd9c843f15de5414cc" dependencies = [ - "bytes 1.1.0", + "bytes", "libc", "memchr", - "mio 0.8.2", + "mio", "num_cpus", "once_cell", "parking_lot 0.12.0", @@ -12553,7 +12259,7 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -12589,24 +12295,13 @@ dependencies = [ "webpki 0.22.0", ] -[[package]] -name = "tokio-stream" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" -dependencies = [ - "futures-core", - "pin-project-lite 0.2.7", - "tokio", -] - [[package]] name = "tokio-util" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-core", "futures-sink", "log", @@ -12620,7 +12315,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-core", "futures-io", "futures-sink", @@ -12689,7 +12384,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12700,10 +12395,10 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "expander 0.0.6", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -12790,7 +12485,7 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna 0.2.3", + "idna", "ipnet", "lazy_static", "log", @@ -12798,7 +12493,7 @@ dependencies = [ "smallvec", "thiserror", "tinyvec", - "url 2.2.2", + "url", ] [[package]] @@ -12829,10 +12524,10 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e5ee5155aaf8f9c25a1a2292f73a041ab501ed7" +source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "clap 3.1.17", - "jsonrpsee 0.10.1", + "jsonrpsee", "log", "parity-scale-codec", "remote-externalities", @@ -12952,7 +12647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" dependencies = [ "asynchronous-codec", - "bytes 1.1.0", + "bytes", "futures-io", "futures-util", ] @@ -12963,17 +12658,6 @@ 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.2" @@ -12981,9 +12665,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ "form_urlencoded", - "idna 0.2.3", + "idna", "matches", - "percent-encoding 2.1.0", + "percent-encoding", ] [[package]] @@ -13042,7 +12726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", - "winapi 0.3.9", + "winapi", "winapi-util", ] @@ -13081,6 +12765,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" dependencies = [ "cfg-if 1.0.0", + "serde", + "serde_json", "wasm-bindgen-macro", ] @@ -13234,7 +12920,7 @@ dependencies = [ "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -13253,7 +12939,7 @@ dependencies = [ "serde", "sha2 0.9.8", "toml", - "winapi 0.3.9", + "winapi", "zstd", ] @@ -13322,7 +13008,7 @@ dependencies = [ "wasmtime-environ", "wasmtime-jit-debug", "wasmtime-runtime", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -13358,7 +13044,7 @@ dependencies = [ "thiserror", "wasmtime-environ", "wasmtime-jit-debug", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -13424,7 +13110,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "beefy-primitives", "bitvec", @@ -13513,7 +13199,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "polkadot-primitives", @@ -13605,12 +13291,6 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" -[[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" @@ -13621,12 +13301,6 @@ dependencies = [ "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" @@ -13639,7 +13313,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -13740,17 +13414,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" 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", + "winapi", ] [[package]] @@ -13776,7 +13440,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13789,7 +13453,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-support", "frame-system", @@ -13809,7 +13473,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "frame-benchmarking", "frame-support", @@ -13827,7 +13491,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#712f57d91f7979e8da72c95237204bb29af06358" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs b/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs index e056678882..6b4f17bc52 100644 --- a/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs +++ b/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs @@ -18,7 +18,7 @@ use cumulus_primitives_core::ParaId; use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*}; use futures::join; -#[substrate_test_utils::test] +#[substrate_test_utils::test(flavor = "multi_thread")] #[ignore] async fn sync_blocks_from_tip_without_being_connected_to_a_collator() { let mut builder = sc_cli::LoggerBuilder::new(""); diff --git a/client/pov-recovery/tests/pov_recovery.rs b/client/pov-recovery/tests/pov_recovery.rs index 2994d40225..bd93d00dd4 100644 --- a/client/pov-recovery/tests/pov_recovery.rs +++ b/client/pov-recovery/tests/pov_recovery.rs @@ -23,7 +23,7 @@ use std::sync::Arc; /// If there is a block of the parachain included/backed by the relay chain that isn't circulated in /// the parachain network, we need to recover the PoV from the relay chain. Using this PoV we can /// recover the block, import it and share it with the other nodes of the parachain network. -#[substrate_test_utils::test] +#[substrate_test_utils::test(flavor = "multi_thread")] #[ignore] async fn pov_recovery() { let mut builder = sc_cli::LoggerBuilder::new(""); diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 8340cbadff..f0602c5203 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -23,5 +23,5 @@ parking_lot = "0.12.0" derive_more = "0.99.2" async-trait = "0.1.53" thiserror = "1.0.31" -jsonrpsee-core = "0.11.0" +jsonrpsee-core = "0.12.0" parity-scale-codec = "3.1.2" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 670a712f18..8654a0ff4b 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -23,7 +23,7 @@ futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.2" parking_lot = "0.12.0" -jsonrpsee = { version = "0.11.0", features = ["client"] } +jsonrpsee = { version = "0.12.0", features = ["client"] } tracing = "0.1.34" async-trait = "0.1.53" url = "2.2.2" diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 99d53d93fb..5aab22fce3 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -76,4 +76,4 @@ std = [ runtime-benchmarks = [ "sp-runtime/runtime-benchmarks" -] \ No newline at end of file +] diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index e4ebec9a88..9e8c411738 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -20,7 +20,7 @@ log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.137", features = ["derive"] } hex-literal = "0.3.4" -jsonrpc-core = "18.0.0" +jsonrpsee = { version = "0.12.0", features = ["server"] } # Local parachain-template-runtime = { path = "../runtime" } diff --git a/parachain-template/node/src/rpc.rs b/parachain-template/node/src/rpc.rs index 5d3dd817c8..c71b3f3690 100644 --- a/parachain-template/node/src/rpc.rs +++ b/parachain-template/node/src/rpc.rs @@ -17,7 +17,7 @@ use sp_block_builder::BlockBuilder; use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; /// A type representing all RPC extensions. -pub type RpcExtension = jsonrpc_core::IoHandler; +pub type RpcExtension = jsonrpsee::RpcModule<()>; /// Full client dependencies pub struct FullDeps { @@ -30,7 +30,9 @@ pub struct FullDeps { } /// Instantiate all RPC extensions. -pub fn create_full(deps: FullDeps) -> RpcExtension +pub fn create_full( + deps: FullDeps, +) -> Result> where C: ProvideRuntimeApi + HeaderBackend @@ -44,14 +46,13 @@ where C::Api: BlockBuilder, P: TransactionPool + Sync + Send + 'static, { - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - use substrate_frame_rpc_system::{FullSystem, SystemApi}; + use pallet_transaction_payment_rpc::{TransactionPaymentApiServer, TransactionPaymentRpc}; + use substrate_frame_rpc_system::{SystemApiServer, SystemRpc}; - let mut io = jsonrpc_core::IoHandler::default(); + let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - io.extend_with(SystemApi::to_delegate(FullSystem::new(client.clone(), pool, deny_unsafe))); - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client))); - - io + module.merge(SystemRpc::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?; + module.merge(TransactionPaymentRpc::new(client.clone()).into_rpc())?; + Ok(module) } diff --git a/parachain-template/node/src/service.rs b/parachain-template/node/src/service.rs index 3d1c65dd40..aec1ce8e8b 100644 --- a/parachain-template/node/src/service.rs +++ b/parachain-template/node/src/service.rs @@ -3,6 +3,9 @@ // std use std::{sync::Arc, time::Duration}; +// rpc +use jsonrpsee::RpcModule; + use cumulus_client_cli::CollatorOptions; // Local Runtime Types use parachain_template_runtime::{ @@ -222,7 +225,7 @@ where Executor: sc_executor::NativeExecutionDispatch + 'static, RB: Fn( Arc>, - ) -> Result, sc_service::Error> + ) -> Result, sc_service::Error> + Send + 'static, BIQ: FnOnce( @@ -301,7 +304,7 @@ where warp_sync: None, })?; - let rpc_extensions_builder = { + let rpc_builder = { let client = client.clone(); let transaction_pool = transaction_pool.clone(); @@ -312,12 +315,12 @@ where deny_unsafe, }; - Ok(crate::rpc::create_full(deps)) + crate::rpc::create_full(deps).map_err(Into::into) }) }; sc_service::spawn_tasks(sc_service::SpawnTasksParams { - rpc_extensions_builder, + rpc_builder, client: client.clone(), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, @@ -461,7 +464,7 @@ pub async fn start_parachain_node( polkadot_config, collator_options, id, - |_| Ok(Default::default()), + |_| Ok(RpcModule::new(())), parachain_build_import_queue, |client, prometheus_registry, diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index e364640a3c..0426d8e8eb 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -26,7 +26,7 @@ statemint-runtime = { path = "statemint" } statemine-runtime = { path = "statemine" } westmint-runtime = { path = "westmint" } canvas-kusama-runtime = { path = "canvas-kusama" } -jsonrpc-core = "18.0.0" +jsonrpsee = { version = "0.12.0", features = ["server"] } parachains-common = { path = "parachains-common" } # Substrate diff --git a/polkadot-parachains/src/rpc.rs b/polkadot-parachains/src/rpc.rs index 11e6d0ba0b..04671aa8ef 100644 --- a/polkadot-parachains/src/rpc.rs +++ b/polkadot-parachains/src/rpc.rs @@ -20,7 +20,6 @@ use std::sync::Arc; -use pallet_contracts_rpc::{Contracts, ContractsApi}; use parachains_common::{AccountId, Balance, Block, BlockNumber, Hash, Index as Nonce}; use sc_client_api::AuxStore; pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor}; @@ -30,7 +29,7 @@ use sp_block_builder::BlockBuilder; use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; /// A type representing all RPC extensions. -pub type RpcExtension = jsonrpc_core::IoHandler; +pub type RpcExtension = jsonrpsee::RpcModule<()>; /// Full client dependencies pub struct FullDeps { @@ -43,7 +42,9 @@ pub struct FullDeps { } /// Instantiate all RPC extensions. -pub fn create_full(deps: FullDeps) -> RpcExtension +pub fn create_full( + deps: FullDeps, +) -> Result> where C: ProvideRuntimeApi + HeaderBackend @@ -57,20 +58,22 @@ where C::Api: BlockBuilder, P: TransactionPool + Sync + Send + 'static, { - use frame_rpc_system::{FullSystem, SystemApi}; - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; + use frame_rpc_system::{SystemApiServer, SystemRpc}; + use pallet_transaction_payment_rpc::{TransactionPaymentApiServer, TransactionPaymentRpc}; - let mut io = jsonrpc_core::IoHandler::default(); + let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - io.extend_with(SystemApi::to_delegate(FullSystem::new(client.clone(), pool, deny_unsafe))); - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client.clone()))); + module.merge(SystemRpc::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(TransactionPaymentRpc::new(client.clone()).into_rpc())?; - io + Ok(module) } /// Instantiate all RPCs we want at the canvas-kusama chain. -pub fn create_canvas_kusama(deps: FullDeps) -> RpcExtension +pub fn create_canvas_kusama( + deps: FullDeps, +) -> Result> where C: ProvideRuntimeApi + sc_client_api::BlockBackend @@ -86,16 +89,18 @@ where C::Api: BlockBuilder, P: TransactionPool + Sync + Send + 'static, { - use frame_rpc_system::{FullSystem, SystemApi}; - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; + use frame_rpc_system::{SystemApiServer, SystemRpc}; + use pallet_contracts_rpc::{ContractsApiServer, ContractsRpc}; + use pallet_transaction_payment_rpc::{TransactionPaymentApiServer, TransactionPaymentRpc}; + use sc_rpc::dev::{Dev, DevApiServer}; - let mut io = jsonrpc_core::IoHandler::default(); + let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - 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(ContractsApi::to_delegate(Contracts::new(client.clone()))); - io.extend_with(sc_rpc::dev::DevApi::to_delegate(sc_rpc::dev::Dev::new(client, deny_unsafe))); + module.merge(SystemRpc::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(TransactionPaymentRpc::new(client.clone()).into_rpc())?; + module.merge(ContractsRpc::new(client.clone()).into_rpc())?; + module.merge(Dev::new(client, deny_unsafe).into_rpc())?; - io + Ok(module) } diff --git a/polkadot-parachains/src/service.rs b/polkadot-parachains/src/service.rs index ed84e02bc2..09e8414256 100644 --- a/polkadot-parachains/src/service.rs +++ b/polkadot-parachains/src/service.rs @@ -34,6 +34,8 @@ use cumulus_relay_chain_rpc_interface::RelayChainRPCInterface; use polkadot_service::CollatorPair; use sp_core::Pair; +use jsonrpsee::RpcModule; + use crate::rpc; pub use parachains_common::{AccountId, Balance, Block, BlockNumber, Hash, Header, Index as Nonce}; @@ -340,7 +342,7 @@ where sc_client_api::StateBackendFor, Block>: sp_api::StateBackend, RB: Fn( Arc>>, - ) -> Result, sc_service::Error> + ) -> Result, sc_service::Error> + Send + 'static, BIQ: FnOnce( @@ -421,10 +423,10 @@ where })?; let rpc_client = client.clone(); - let rpc_extensions_builder = Box::new(move |_, _| rpc_ext_builder(rpc_client.clone())); + let rpc_builder = Box::new(move |_, _| rpc_ext_builder(rpc_client.clone())); sc_service::spawn_tasks(sc_service::SpawnTasksParams { - rpc_extensions_builder, + rpc_builder, client: client.clone(), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, @@ -542,7 +544,7 @@ where sc_client_api::StateBackendFor, Block>: sp_api::StateBackend, RB: Fn( Arc>>, - ) -> Result, sc_service::Error> + ) -> Result, sc_service::Error> + Send + 'static, BIQ: FnOnce( @@ -621,7 +623,7 @@ where warp_sync: None, })?; - let rpc_extensions_builder = { + let rpc_builder = { let client = client.clone(); let transaction_pool = transaction_pool.clone(); @@ -632,12 +634,12 @@ where deny_unsafe, }; - Ok(rpc::create_full(deps)) + rpc::create_full(deps).map_err(Into::into) }) }; sc_service::spawn_tasks(sc_service::SpawnTasksParams { - rpc_extensions_builder, + rpc_builder, client: client.clone(), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, @@ -782,7 +784,7 @@ pub async fn start_rococo_parachain_node( polkadot_config, collator_options, id, - |_| Ok(Default::default()), + |_| Ok(RpcModule::new(())), rococo_parachain_build_import_queue, |client, prometheus_registry, @@ -925,7 +927,7 @@ where polkadot_config, collator_options, id, - |_| Ok(Default::default()), + |_| Ok(RpcModule::new(())), shell_build_import_queue, |client, prometheus_registry, @@ -1200,7 +1202,7 @@ where polkadot_config, collator_options, id, - |_| Ok(Default::default()), + |_| Ok(RpcModule::new(())), statemint_build_import_queue::<_, AuraId>, |client, prometheus_registry, @@ -1365,7 +1367,7 @@ where sc_client_api::StateBackendFor, Block>: sp_api::StateBackend, RB: Fn( Arc>>, - ) -> Result, sc_service::Error> + ) -> Result, sc_service::Error> + Send + 'static, BIQ: FnOnce( @@ -1444,7 +1446,7 @@ where warp_sync: None, })?; - let rpc_extensions_builder = { + let rpc_builder = { let client = client.clone(); let transaction_pool = transaction_pool.clone(); @@ -1455,12 +1457,12 @@ where deny_unsafe, }; - Ok(crate::rpc::create_canvas_kusama(deps)) + crate::rpc::create_canvas_kusama(deps).map_err(Into::into) }) }; sc_service::spawn_tasks(sc_service::SpawnTasksParams { - rpc_extensions_builder, + rpc_builder, client: client.clone(), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, @@ -1603,7 +1605,7 @@ pub async fn start_canvas_kusama_node( polkadot_config, collator_options, id, - |_| Ok(Default::default()), + |_| Ok(RpcModule::new(())), canvas_kusama_build_import_queue, |client, prometheus_registry, diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 412a41b011..3cdc5d49bd 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" async-trait = "0.1.53" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } -jsonrpc-core = "18.0.0" +jsonrpsee = { version = "0.12.0", features = ["server"] } parking_lot = "0.12.0" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index 904ca2e7c3..3c2d44a9e1 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -225,9 +225,7 @@ async fn start_node_impl( TransactionPool, )> where - RB: Fn(Arc) -> Result, sc_service::Error> - + Send - + 'static, + RB: Fn(Arc) -> Result, sc_service::Error> + Send + 'static, { if matches!(parachain_config.role, Role::Light) { return Err("Light client not supported!".into()) @@ -272,14 +270,14 @@ where warp_sync: None, })?; - let rpc_extensions_builder = { + let rpc_builder = { let client = client.clone(); Box::new(move |_, _| rpc_ext_builder(client.clone())) }; let rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { - rpc_extensions_builder, + rpc_builder, client: client.clone(), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, @@ -581,7 +579,7 @@ impl TestNodeBuilder { relay_chain_config, self.para_id, self.wrap_announce_block, - |_| Ok(Default::default()), + |_| Ok(jsonrpsee::RpcModule::new(())), self.consensus, collator_options, ) @@ -675,6 +673,10 @@ pub fn node_config( rpc_cors: None, rpc_methods: Default::default(), rpc_max_payload: None, + rpc_max_request_size: None, + rpc_max_response_size: None, + rpc_id_provider: None, + rpc_max_subs_per_conn: None, ws_max_out_buffer_capacity: None, prometheus_config: None, telemetry_endpoints: None, diff --git a/test/service/tests/full_node_catching_up.rs b/test/service/tests/full_node_catching_up.rs index 5e66de9e74..1dee360fc8 100644 --- a/test/service/tests/full_node_catching_up.rs +++ b/test/service/tests/full_node_catching_up.rs @@ -18,7 +18,7 @@ use cumulus_primitives_core::ParaId; use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*}; use futures::join; -#[substrate_test_utils::test] +#[substrate_test_utils::test(flavor = "multi_thread")] #[ignore] async fn test_full_node_catching_up() { let mut builder = sc_cli::LoggerBuilder::new(""); diff --git a/test/service/tests/migrate_solo_to_para.rs b/test/service/tests/migrate_solo_to_para.rs index f2b7e3d37f..89afd8d42b 100644 --- a/test/service/tests/migrate_solo_to_para.rs +++ b/test/service/tests/migrate_solo_to_para.rs @@ -30,7 +30,7 @@ use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Ke use sc_client_api::{BlockBackend, UsageProvider}; use sp_runtime::generic::BlockId; -#[substrate_test_utils::test] +#[substrate_test_utils::test(flavor = "multi_thread")] #[ignore] async fn test_migrate_solo_to_para() { let mut builder = sc_cli::LoggerBuilder::new(""); diff --git a/test/service/tests/runtime_upgrade.rs b/test/service/tests/runtime_upgrade.rs index 236c31acb4..37eb82d8e0 100644 --- a/test/service/tests/runtime_upgrade.rs +++ b/test/service/tests/runtime_upgrade.rs @@ -20,7 +20,7 @@ use futures::StreamExt; use sc_client_api::BlockchainEvents; use sp_runtime::generic::BlockId; -#[substrate_test_utils::test] +#[substrate_test_utils::test(flavor = "multi_thread")] #[ignore] async fn test_runtime_upgrade() { let mut builder = sc_cli::LoggerBuilder::new("runtime=debug"); From 25eabddb3c6bab643edb8df02de6dcd0151ea09a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 May 2022 13:46:40 +0200 Subject: [PATCH 044/238] Bump tokio from 1.18.1 to 1.18.2 (#1249) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.18.1 to 1.18.2. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.18.1...tokio-1.18.2) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 58e3fee196..eaa215fdd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12244,9 +12244,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.18.1" +version = "1.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce653fb475565de9f6fb0614b28bca8df2c430c0cf84bcd9c843f15de5414cc" +checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395" dependencies = [ "bytes", "libc", diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index ae5fc8c9e7..ef2d77e6fd 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -33,7 +33,7 @@ cumulus-relay-chain-interface = { path = "../relay-chain-interface" } [dev-dependencies] portpicker = "0.1.1" -tokio = { version = "1.18.1", features = ["macros"] } +tokio = { version = "1.18.2", features = ["macros"] } url = "2.2.2" # Substrate diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index 2e8f59ea82..9360fba4b6 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -31,7 +31,7 @@ cumulus-primitives-core = { path = "../../primitives/core" } cumulus-relay-chain-interface = {path = "../relay-chain-interface"} [dev-dependencies] -tokio = { version = "1.18.1", features = ["macros"] } +tokio = { version = "1.18.2", features = ["macros"] } # Cumulus cumulus-test-service = { path = "../../test/service" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 3cdc5d49bd..1595f06db2 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -12,7 +12,7 @@ jsonrpsee = { version = "0.12.0", features = ["server"] } parking_lot = "0.12.0" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } -tokio = { version = "1.18.1", features = ["macros"] } +tokio = { version = "1.18.2", features = ["macros"] } url = "2.2.2" # Substrate From f7b4b841ac98918c81680174919cb0a3cc3dbcbd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 10:39:42 +0200 Subject: [PATCH 045/238] Bump clap from 3.1.17 to 3.1.18 (#1252) Bumps [clap](https://github.com/clap-rs/clap) from 3.1.17 to 3.1.18. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.17...v3.1.18) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eaa215fdd9..f03e533858 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1161,9 +1161,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.17" +version = "3.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47582c09be7c8b32c0ab3a6181825ababb713fde6fff20fc573a3870dd45c6a0" +checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" dependencies = [ "atty", "bitflags", @@ -1178,9 +1178,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.1.7" +version = "3.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1" +checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -1583,7 +1583,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.17", + "clap 3.1.18", "sc-cli", "sc-service", "url", @@ -2862,7 +2862,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8b dependencies = [ "Inflector", "chrono", - "clap 3.1.17", + "clap 3.1.18", "frame-benchmarking", "frame-support", "frame-system", @@ -6574,7 +6574,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.17", + "clap 3.1.18", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7132,7 +7132,7 @@ name = "polkadot-cli" version = "0.9.19" source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" dependencies = [ - "clap 3.1.17", + "clap 3.1.18", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7199,7 +7199,7 @@ dependencies = [ "assert_cmd", "async-trait", "canvas-kusama-runtime", - "clap 3.1.17", + "clap 3.1.18", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", @@ -9484,7 +9484,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ "chrono", - "clap 3.1.17", + "clap 3.1.18", "fdlimit", "futures 0.3.21", "hex", @@ -12526,7 +12526,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" dependencies = [ - "clap 3.1.17", + "clap 3.1.18", "jsonrpsee", "log", "parity-scale-codec", From bb79d05836544e573500f058358dfefc1bef55cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 09:16:47 +0000 Subject: [PATCH 046/238] Bump syn from 1.0.92 to 1.0.93 (#1251) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.92 to 1.0.93. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.92...1.0.93) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f03e533858..9b8aa606b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11998,9 +11998,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" +checksum = "04066589568b72ec65f42d65a1a52436e954b168773148893c020269563decf2" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 9e200c573e..08e90f4dbb 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -9,7 +9,7 @@ description = "Proc macros provided by the parachain-system pallet" proc-macro = true [dependencies] -syn = "1.0.92" +syn = "1.0.93" proc-macro2 = "1.0.38" quote = "1.0.18" proc-macro-crate = "1.1.3" From e3d0895dc60dbc3ac9800aea34a69b25cffb8404 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Wed, 11 May 2022 15:02:22 +0200 Subject: [PATCH 047/238] companion 11395 (#1253) * companion for 11395 * companion for 11395 * update polkadot --- Cargo.lock | 650 +++++++++----------- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachains/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 6 files changed, 283 insertions(+), 377 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9b8aa606b8..7b658a47a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -701,7 +701,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-runtime", "finality-grandpa", @@ -718,7 +718,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-runtime", "frame-support", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "bp-runtime", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-messages", "bp-runtime", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -782,7 +782,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "hash-db", @@ -800,7 +800,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -830,7 +830,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2818,7 +2818,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", ] @@ -2836,7 +2836,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -2858,7 +2858,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "Inflector", "chrono", @@ -2908,7 +2908,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2919,7 +2919,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2935,7 +2935,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -2963,7 +2963,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "bitflags", "frame-metadata", @@ -2993,7 +2993,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3005,7 +3005,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3017,7 +3017,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro2", "quote", @@ -3027,7 +3027,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "log", @@ -3044,7 +3044,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -3059,7 +3059,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "sp-api", @@ -3068,7 +3068,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "sp-api", @@ -3225,10 +3225,6 @@ name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" -dependencies = [ - "gloo-timers", - "send_wrapper", -] [[package]] name = "futures-util" @@ -3332,26 +3328,6 @@ dependencies = [ "regex", ] -[[package]] -name = "gloo-net" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d37f728c2b2b8c568bd2efb34ce9087e347c182db68f101a969b4fe23054d5" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "gloo-utils", - "js-sys", - "pin-project 1.0.10", - "serde", - "serde_json", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "gloo-timers" version = "0.2.1" @@ -3365,17 +3341,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gloo-utils" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0bbef55e98d946adbd89f3c65a497cf9adb995a73b99573f30180e8813ab21" -dependencies = [ - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "group" version = "0.11.0" @@ -3633,22 +3598,6 @@ dependencies = [ "webpki 0.21.4", ] -[[package]] -name = "hyper-rustls" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" -dependencies = [ - "http", - "hyper", - "log", - "rustls 0.20.2", - "rustls-native-certs 0.6.1", - "tokio", - "tokio-rustls 0.23.2", - "webpki-roots", -] - [[package]] name = "idna" version = "0.2.3" @@ -3823,16 +3772,14 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad6f9ff3481f3069c92474b697c104502f7e9191d29b34bfa38ae9a19415f1cd" +checksum = "eae63f7fdeb51700b35e9b28bf92e8d233951590968c186ed79510b6c12fa3d9" dependencies = [ "jsonrpsee-core", - "jsonrpsee-http-client", "jsonrpsee-http-server", "jsonrpsee-proc-macros", "jsonrpsee-types", - "jsonrpsee-wasm-client", "jsonrpsee-ws-client", "jsonrpsee-ws-server", "tracing", @@ -3840,15 +3787,11 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4358e100faf43b2f3b7b0ecf0ad4ce3e6275fe12fda8428dedda2979751dd184" +checksum = "32feb1f2f0b5ce37a03b96a988a6dadccc3f529a2f930356bac93f13c09cf385" dependencies = [ - "anyhow", - "futures-channel", - "futures-timer", "futures-util", - "gloo-net", "http", "jsonrpsee-core", "jsonrpsee-types", @@ -3865,9 +3808,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d26ab3868749d6f716345a5fbd3334a100c0709fe464bd9189ee9d78adcde" +checksum = "31e6b13067b615dd050ced7c19517a52cde490eee2c754d5447ce513f2275f7d" dependencies = [ "anyhow", "arrayvec 0.7.2", @@ -3888,33 +3831,13 @@ dependencies = [ "thiserror", "tokio", "tracing", - "wasm-bindgen-futures", -] - -[[package]] -name = "jsonrpsee-http-client" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11e689d2d20891e636919ead565fef2ebf8a7ad863ddcd9ff112a79b281fcba1" -dependencies = [ - "async-trait", - "hyper", - "hyper-rustls 0.23.0", - "jsonrpsee-core", - "jsonrpsee-types", - "rustc-hash", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", ] [[package]] name = "jsonrpsee-http-server" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee87f19a7a01a55248fc4b4861d822331c4fd60151d99e7ac9c6771999132671" +checksum = "b34f1090bdc8f7f14ad8811fc84501867c23a9046ce79d49c0cd929a256c501e" dependencies = [ "futures-channel", "futures-util", @@ -3931,9 +3854,9 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da57d54817577801c2f7a1b638610819dfd86f0470c21a2af81b06eb41ba6" +checksum = "5d8dc7a8b629e371cd5ca9d128883763ae00c5b63158ace4a6a61345726a21b7" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3943,9 +3866,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fe5a629443d17a30ff564881ba68881a710fd7eb02a538087b0bc51cb4962c" +checksum = "44f1835f131e77cd766b4dcb025873944cb1e479cd5debb639e2dc11f90df24a" dependencies = [ "anyhow", "beef", @@ -3955,22 +3878,11 @@ dependencies = [ "tracing", ] -[[package]] -name = "jsonrpsee-wasm-client" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e908214ac419d4931726d4026d0e3ab8a304577b6ea561c1a72328cebf9e9" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", -] - [[package]] name = "jsonrpsee-ws-client" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba31eb2b9a4b73d8833f53fe55e579516289f8b31adb6104b3dbc629755acf7d" +checksum = "9d75df866743c9733b3e2f5421e56df2f5b4630f7de39f82c44eaab350604926" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -3979,9 +3891,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-server" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179fe584af5c0145f922c581770d073c661a514ae6cdfa5b1a0bce41fdfdf646" +checksum = "099971913436e7f6b1bc80180d4e5f014ec944660636da45d2f372c23d6308c3" dependencies = [ "futures-channel", "futures-util", @@ -4015,7 +3927,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-primitives", "bitvec", @@ -4050,6 +3962,8 @@ dependencies = [ "pallet-membership", "pallet-multisig", "pallet-nicks", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", @@ -4106,7 +4020,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "polkadot-primitives", @@ -5007,7 +4921,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5472,7 +5386,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -5489,7 +5403,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5503,7 +5417,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -5519,7 +5433,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -5535,7 +5449,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -5550,7 +5464,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5574,7 +5488,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5594,7 +5508,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5609,7 +5523,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "beefy-primitives", "frame-support", @@ -5625,7 +5539,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5648,7 +5562,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5666,7 +5580,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5683,7 +5597,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5705,7 +5619,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5726,7 +5640,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5771,7 +5685,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5788,7 +5702,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "bitflags", "frame-benchmarking", @@ -5815,7 +5729,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "bitflags", "parity-scale-codec", @@ -5830,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro2", "quote", @@ -5840,7 +5754,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5857,7 +5771,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5870,7 +5784,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5886,7 +5800,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5909,7 +5823,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5922,7 +5836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5940,7 +5854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5955,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -5978,7 +5892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5994,7 +5908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6014,7 +5928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6031,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6048,7 +5962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6066,7 +5980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6081,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6096,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6110,7 +6024,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6125,7 +6039,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6144,7 +6058,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6161,7 +6075,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6184,7 +6098,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6200,7 +6114,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6215,7 +6129,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6229,7 +6143,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6244,7 +6158,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6260,7 +6174,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6281,7 +6195,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6297,7 +6211,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6311,7 +6225,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6334,7 +6248,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6345,7 +6259,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "sp-arithmetic", @@ -6354,7 +6268,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6383,7 +6297,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6401,7 +6315,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6420,7 +6334,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-support", "frame-system", @@ -6437,7 +6351,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6452,7 +6366,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6463,7 +6377,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6480,7 +6394,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6495,7 +6409,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6511,7 +6425,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-benchmarking", "frame-support", @@ -6526,7 +6440,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "frame-system", @@ -6544,7 +6458,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-benchmarking", "frame-support", @@ -7057,7 +6971,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7072,7 +6986,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7086,7 +7000,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "derive_more", "fatality", @@ -7109,7 +7023,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "fatality", "futures 0.3.21", @@ -7130,7 +7044,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7155,7 +7069,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7272,7 +7186,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "always-assert", "fatality", @@ -7293,7 +7207,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7306,7 +7220,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "derive_more", "fatality", @@ -7329,7 +7243,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7343,7 +7257,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7363,7 +7277,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "always-assert", "async-trait", @@ -7384,7 +7298,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7402,7 +7316,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "derive_more", @@ -7431,7 +7345,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "futures 0.3.21", @@ -7451,7 +7365,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "fatality", @@ -7470,7 +7384,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7485,7 +7399,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "futures 0.3.21", @@ -7503,7 +7417,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7518,7 +7432,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7535,7 +7449,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "fatality", "futures 0.3.21", @@ -7554,7 +7468,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "futures 0.3.21", @@ -7571,7 +7485,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "fatality", @@ -7589,7 +7503,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "always-assert", "assert_matches", @@ -7619,7 +7533,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7635,7 +7549,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7653,7 +7567,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-std", "lazy_static", @@ -7671,7 +7585,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bs58", "futures 0.3.21", @@ -7690,7 +7604,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "derive_more", @@ -7710,7 +7624,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7732,7 +7646,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7742,7 +7656,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "futures 0.3.21", @@ -7760,7 +7674,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "derive_more", "futures 0.3.21", @@ -7779,7 +7693,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "derive_more", @@ -7812,7 +7726,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7833,7 +7747,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "futures 0.3.21", @@ -7850,7 +7764,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -7862,7 +7776,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "derive_more", "frame-support", @@ -7879,7 +7793,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7894,7 +7808,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitvec", "frame-system", @@ -7924,7 +7838,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7956,7 +7870,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-primitives", "bitvec", @@ -8042,7 +7956,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-primitives", "bitvec", @@ -8089,7 +8003,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "polkadot-primitives", @@ -8101,7 +8015,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bs58", "parity-scale-codec", @@ -8113,7 +8027,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "bitflags", "bitvec", @@ -8156,7 +8070,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "async-trait", "beefy-gadget", @@ -8258,7 +8172,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8279,7 +8193,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8289,7 +8203,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8314,7 +8228,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-primitives", "bitvec", @@ -8376,7 +8290,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-benchmarking", "frame-system", @@ -8964,7 +8878,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9092,7 +9006,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9169,7 +9083,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "polkadot-primitives", @@ -9376,7 +9290,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "sp-core", @@ -9387,7 +9301,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -9414,7 +9328,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9437,7 +9351,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9453,7 +9367,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9470,7 +9384,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9481,7 +9395,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "chrono", "clap 3.1.18", @@ -9520,7 +9434,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "fnv", "futures 0.3.21", @@ -9548,7 +9462,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "hash-db", "kvdb", @@ -9573,7 +9487,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -9597,7 +9511,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -9626,7 +9540,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "fork-tree", @@ -9669,7 +9583,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9691,7 +9605,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9704,7 +9618,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -9729,7 +9643,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "sc-client-api", "sp-authorship", @@ -9740,7 +9654,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9767,7 +9681,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "environmental", "parity-scale-codec", @@ -9784,7 +9698,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "parity-scale-codec", @@ -9799,7 +9713,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9817,7 +9731,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "ahash", "async-trait", @@ -9857,7 +9771,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9878,7 +9792,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9895,7 +9809,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "hex", @@ -9910,7 +9824,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "asynchronous-codec", @@ -9961,7 +9875,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "libp2p", @@ -9974,7 +9888,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "ahash", "futures 0.3.21", @@ -9991,7 +9905,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "bitflags", "either", @@ -10020,7 +9934,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "bytes", "fnv", @@ -10028,7 +9942,7 @@ dependencies = [ "futures-timer", "hex", "hyper", - "hyper-rustls 0.22.1", + "hyper-rustls", "num_cpus", "once_cell", "parity-scale-codec", @@ -10048,7 +9962,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "libp2p", @@ -10061,7 +9975,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10070,7 +9984,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "hash-db", @@ -10100,7 +10014,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10123,7 +10037,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10136,7 +10050,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "directories", @@ -10201,7 +10115,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "parity-scale-codec", @@ -10215,7 +10129,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10234,7 +10148,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "libc", @@ -10253,7 +10167,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "chrono", "futures 0.3.21", @@ -10271,7 +10185,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "ansi_term", "atty", @@ -10302,7 +10216,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10313,7 +10227,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10340,7 +10254,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "log", @@ -10353,7 +10267,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10569,12 +10483,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - [[package]] name = "serde" version = "1.0.137" @@ -10808,7 +10716,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "enumn", "parity-scale-codec", @@ -10884,7 +10792,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "hash-db", "log", @@ -10901,7 +10809,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "blake2", "proc-macro-crate", @@ -10913,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -10926,7 +10834,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "integer-sqrt", "num-traits", @@ -10941,7 +10849,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -10954,7 +10862,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "parity-scale-codec", @@ -10966,7 +10874,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "sp-api", @@ -10978,7 +10886,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "log", @@ -10996,7 +10904,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -11015,7 +10923,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "parity-scale-codec", @@ -11033,7 +10941,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "merlin", @@ -11056,7 +10964,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -11070,7 +10978,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -11083,7 +10991,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "base58", "bitflags", @@ -11129,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "blake2", "byteorder", @@ -11143,7 +11051,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro2", "quote", @@ -11154,7 +11062,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11163,7 +11071,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro2", "quote", @@ -11173,7 +11081,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "environmental", "parity-scale-codec", @@ -11184,7 +11092,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "finality-grandpa", "log", @@ -11202,7 +11110,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11216,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "hash-db", @@ -11241,7 +11149,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "lazy_static", "sp-core", @@ -11252,7 +11160,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -11269,7 +11177,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "thiserror", "zstd", @@ -11278,7 +11186,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "parity-scale-codec", @@ -11293,7 +11201,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -11307,7 +11215,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "sp-api", "sp-core", @@ -11317,7 +11225,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "backtrace", "lazy_static", @@ -11327,7 +11235,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "rustc-hash", "serde", @@ -11337,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "either", "hash256-std-hasher", @@ -11359,7 +11267,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11376,7 +11284,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "Inflector", "proc-macro-crate", @@ -11388,7 +11296,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "parity-scale-codec", @@ -11402,7 +11310,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "serde", "serde_json", @@ -11411,7 +11319,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -11425,7 +11333,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "scale-info", @@ -11436,7 +11344,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "hash-db", "log", @@ -11458,12 +11366,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11476,7 +11384,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "log", "sp-core", @@ -11489,7 +11397,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures-timer", @@ -11505,7 +11413,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "sp-std", @@ -11517,7 +11425,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "sp-api", "sp-runtime", @@ -11526,7 +11434,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "log", @@ -11542,7 +11450,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "hash-db", "memory-db", @@ -11558,7 +11466,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11575,7 +11483,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11586,7 +11494,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "impl-trait-for-tuples", "log", @@ -11867,7 +11775,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "platforms", ] @@ -11875,7 +11783,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11896,7 +11804,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures-util", "hyper", @@ -11909,7 +11817,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "jsonrpsee", "log", @@ -11930,7 +11838,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "async-trait", "futures 0.3.21", @@ -11956,7 +11864,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11966,7 +11874,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11977,7 +11885,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "ansi_term", "build-helper", @@ -12095,7 +12003,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "polkadot-primitives", @@ -12384,7 +12292,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12395,7 +12303,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12524,7 +12432,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e0ccd008fe8bfaf29357ea87561e60f3baaae08c" +source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12765,8 +12673,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" dependencies = [ "cfg-if 1.0.0", - "serde", - "serde_json", "wasm-bindgen-macro", ] @@ -13110,7 +13016,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "beefy-primitives", "bitvec", @@ -13199,7 +13105,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "polkadot-primitives", @@ -13440,7 +13346,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13453,7 +13359,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-support", "frame-system", @@ -13473,7 +13379,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "frame-benchmarking", "frame-support", @@ -13491,7 +13397,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7c4ac3fc8d56da14d695bd9736a2cb28aac8f83" +source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index f0602c5203..87cd753d6a 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -23,5 +23,5 @@ parking_lot = "0.12.0" derive_more = "0.99.2" async-trait = "0.1.53" thiserror = "1.0.31" -jsonrpsee-core = "0.12.0" +jsonrpsee-core = "0.13.0" parity-scale-codec = "3.1.2" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 8654a0ff4b..0905450bee 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -23,7 +23,7 @@ futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.2" parking_lot = "0.12.0" -jsonrpsee = { version = "0.12.0", features = ["client"] } +jsonrpsee = { version = "0.13.0", features = ["ws-client"] } tracing = "0.1.34" async-trait = "0.1.53" url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 9e8c411738..f2ef5a5c6c 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -20,7 +20,7 @@ log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.137", features = ["derive"] } hex-literal = "0.3.4" -jsonrpsee = { version = "0.12.0", features = ["server"] } +jsonrpsee = { version = "0.13.0", features = ["server"] } # Local parachain-template-runtime = { path = "../runtime" } diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 0426d8e8eb..4c0cc465cc 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -26,7 +26,7 @@ statemint-runtime = { path = "statemint" } statemine-runtime = { path = "statemine" } westmint-runtime = { path = "westmint" } canvas-kusama-runtime = { path = "canvas-kusama" } -jsonrpsee = { version = "0.12.0", features = ["server"] } +jsonrpsee = { version = "0.13.0", features = ["server"] } parachains-common = { path = "parachains-common" } # Substrate diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 1595f06db2..2026be0758 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" async-trait = "0.1.53" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } -jsonrpsee = { version = "0.12.0", features = ["server"] } +jsonrpsee = { version = "0.13.0", features = ["server"] } parking_lot = "0.12.0" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } From 8d44f9bcae6d5f34fcd5894416b1765ca959678d Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 13 May 2022 14:02:52 +0100 Subject: [PATCH 048/238] rename polkadot-collator to polkadot-parachain (#1241) * rename polkadot-collator to polkadot-parachain Not every node has to be a collator. * Update README.md Co-authored-by: Chevdor * rename docker file * Update .github/workflows/extrinsic-ordering-check-from-bin.yml Co-authored-by: Chevdor * Versioning scheme that tracks polkadot relay chain but allows for patch releases by having a 0 at the end. (`-patch1` patch naming schemes were discussed but they were judged to cause downstream packagers pain.) * update name * update lock file Co-authored-by: Chevdor --- .dockerignore | 2 +- .github/ISSUE_TEMPLATE/release.md | 2 +- .../extrinsic-ordering-check-from-bin.yml | 12 +- .../workflows/release-10_docker-manual.yml | 2 +- .github/workflows/release-10_docker.yml | 2 +- .gitlab-ci.yml | 8 +- Cargo.lock | 198 +++++++++--------- README.md | 34 +-- docker/docker-compose.yml | 2 +- docker/injected.Dockerfile | 12 +- ... polkadot-parachain_builder.Containerfile} | 22 +- docker/scripts/build-injected-image.sh | 2 +- docker/scripts/inject_bootnodes.sh | 4 +- docker/test-parachain-collator.dockerfile | 8 +- polkadot-parachains/Cargo.toml | 7 +- polkadot-parachains/src/command.rs | 8 +- .../tests/benchmark_storage_works.rs | 2 +- .../tests/polkadot_argument_parsing.rs | 2 +- .../tests/polkadot_mdns_issue.rs | 2 +- .../tests/purge_chain_works.rs | 4 +- .../tests/running_the_node_and_interrupt.rs | 2 +- scripts/benchmarks-ci.sh | 2 +- scripts/benchmarks.sh | 6 +- .../changelog/templates/docker_image.md.tera | 4 +- scripts/create_seedling_spec.sh | 2 +- scripts/create_shell_spec.sh | 2 +- scripts/generate_genesis_value.sh | 4 +- 27 files changed, 179 insertions(+), 178 deletions(-) rename docker/{polkadot-collator_builder.Containerfile => polkadot-parachain_builder.Containerfile} (53%) diff --git a/.dockerignore b/.dockerignore index 913065a3fa..d01eb7ec3a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,7 +3,7 @@ **/*.txt **/*.md /docker/ -!/target/release/polkadot-collator +!/target/release/polkadot-parachain # dotfiles in the repo root /.* diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md index 1cc8fb2de2..342213360d 100644 --- a/.github/ISSUE_TEMPLATE/release.md +++ b/.github/ISSUE_TEMPLATE/release.md @@ -39,7 +39,7 @@ candidate branch or started an additional release candidate branch (rc-2, rc-3, ### All Releases -- [ ] Check that the new polkadot-collator versions have [run on the network](#burn-in) +- [ ] Check that the new polkadot-parachain versions have [run on the network](#burn-in) without issue. - [ ] Check that a draft release has been created at https://github.com/paritytech/cumulus/releases with relevant [release diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index b730e2de20..76652e1bcb 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -10,7 +10,7 @@ on: required: true binary_url: description: A url to a Linux binary for the node containing the runtime to test - default: https://github.com/paritytech/cumulus/releases/download/statemine_v3/polkadot-collator + default: https://releases.parity.io/cumulus/polkadot-v0.9.21/polkadot-parachain required: true chain: description: The name of the chain under test. Usually, you would pass a local chain @@ -33,17 +33,17 @@ jobs: run: | echo Fetching $BIN_URL wget $BIN_URL - chmod a+x polkadot-collator - ./polkadot-collator --version + chmod a+x polkadot-parachain + ./polkadot-parachain --version - name: Start local node run: | echo Running on $CHAIN - ./polkadot-collator --chain=$CHAIN -- --chain polkadot-local & + ./polkadot-parachain --chain=$CHAIN -- --chain polkadot-local & - name: Prepare output run: | - VERSION=$(./polkadot-collator --version) + VERSION=$(./polkadot-parachain --version) echo "Metadata comparison:" >> output.txt echo "Date: $(date)" >> output.txt echo "Reference: $REF_URL" >> output.txt @@ -71,7 +71,7 @@ jobs: - name: Stop our local node run: | - pkill polkadot-collator + pkill polkadot-parachain continue-on-error: true - name: Save output as artifact diff --git a/.github/workflows/release-10_docker-manual.yml b/.github/workflows/release-10_docker-manual.yml index b394d686c6..3cab851812 100644 --- a/.github/workflows/release-10_docker-manual.yml +++ b/.github/workflows/release-10_docker-manual.yml @@ -19,7 +19,7 @@ on: jobs: docker_build_publish: env: - BINARY: polkadot-collator + BINARY: polkadot-parachain runs-on: ubuntu-latest steps: - name: Checkout sources diff --git a/.github/workflows/release-10_docker.yml b/.github/workflows/release-10_docker.yml index c65fc8e1cc..9ddcd70b9a 100644 --- a/.github/workflows/release-10_docker.yml +++ b/.github/workflows/release-10_docker.yml @@ -14,7 +14,7 @@ on: jobs: docker_build_publish: env: - BINARY: polkadot-collator + BINARY: polkadot-parachain runs-on: ubuntu-latest steps: - name: Checkout sources diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2a5cd24729..e3510e9232 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -116,10 +116,10 @@ test-linux-stable: # it goes with the debug assertions. - if [ "${ARE_WE_RELEASING_YET}" ]; then echo "___Building a binary___"; - time cargo build --release --locked --bin polkadot-collator; + time cargo build --release --locked --bin polkadot-parachain; echo "___Packing the artifacts___"; mkdir -p ./artifacts; - mv ${CARGO_TARGET_DIR}/release/polkadot-collator ./artifacts/.; + mv ${CARGO_TARGET_DIR}/release/polkadot-parachain ./artifacts/.; echo "___The VERSION is either a tag name or the curent branch if triggered not by a tag___"; echo ${CI_COMMIT_REF_NAME} | tee ./artifacts/VERSION; else @@ -179,7 +179,7 @@ publish-s3: # Job will fail if no artifacts were provided by test-linux-stable job. It's only possible for # this test to fail if the pipeline was triggered by web or schedule trigger without supplying # a nono-empty ARE_WE_RELEASING_YET variable. - - test -e ./artifacts/polkadot-collator || + - test -e ./artifacts/polkadot-parachain || ( echo "___No artifacts were provided by the previous job, please check the build there___"; exit 1 ) script: - echo "___Publishing a binary with debug assertions!___" @@ -202,7 +202,7 @@ benchmarks-build: script: - time cargo build --profile production --locked --features runtime-benchmarks - mkdir artifacts - - cp target/production/polkadot-collator ./artifacts/ + - cp target/production/polkadot-parachain ./artifacts/ benchmarks: stage: benchmarks-run diff --git a/Cargo.lock b/Cargo.lock index 7b658a47a5..697acffc2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -978,7 +978,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-runtime-common", "scale-info", "serde", @@ -1709,7 +1709,7 @@ dependencies = [ "parking_lot 0.12.0", "polkadot-client", "polkadot-node-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-service", "polkadot-test-client", @@ -1843,7 +1843,7 @@ dependencies = [ "log", "pallet-balances", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "sc-client-api", "scale-info", "serde", @@ -1962,7 +1962,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "sp-api", "sp-runtime", @@ -2017,7 +2017,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "sp-runtime", "sp-std", @@ -2118,7 +2118,7 @@ dependencies = [ "pallet-balances", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "sc-block-builder", "sc-consensus", @@ -6510,7 +6510,7 @@ dependencies = [ "parachain-template-runtime", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-service", "sc-basic-authorship", @@ -6585,7 +6585,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-runtime-common", "scale-info", "serde", @@ -7106,83 +7106,6 @@ dependencies = [ "sp-transaction-pool", ] -[[package]] -name = "polkadot-collator" -version = "5.4.0" -dependencies = [ - "assert_cmd", - "async-trait", - "canvas-kusama-runtime", - "clap 3.1.18", - "cumulus-client-cli", - "cumulus-client-consensus-aura", - "cumulus-client-consensus-common", - "cumulus-client-consensus-relay-chain", - "cumulus-client-network", - "cumulus-client-service", - "cumulus-primitives-core", - "cumulus-primitives-parachain-inherent", - "cumulus-relay-chain-inprocess-interface", - "cumulus-relay-chain-interface", - "cumulus-relay-chain-rpc-interface", - "frame-benchmarking", - "frame-benchmarking-cli", - "futures 0.3.21", - "hex-literal", - "jsonrpsee", - "log", - "nix 0.24.1", - "pallet-contracts-rpc", - "pallet-transaction-payment-rpc", - "parachains-common", - "parity-scale-codec", - "polkadot-cli", - "polkadot-parachain", - "polkadot-primitives", - "polkadot-service", - "rococo-parachain-runtime", - "sc-basic-authorship", - "sc-chain-spec", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-executor", - "sc-network", - "sc-rpc", - "sc-service", - "sc-sysinfo", - "sc-telemetry", - "sc-tracing", - "sc-transaction-pool", - "sc-transaction-pool-api", - "seedling-runtime", - "serde", - "shell-runtime", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-inherents", - "sp-io", - "sp-keystore", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-timestamp", - "sp-transaction-pool", - "statemine-runtime", - "statemint-runtime", - "substrate-build-script-utils", - "substrate-frame-rpc-system", - "substrate-prometheus-endpoint", - "tempfile", - "try-runtime-cli", - "westmint-runtime", - "xcm", -] - [[package]] name = "polkadot-collator-protocol" version = "0.9.19" @@ -7408,7 +7331,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -7515,7 +7438,7 @@ dependencies = [ "pin-project 1.0.10", "polkadot-core-primitives", "polkadot-node-subsystem-util", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "rand 0.8.5", "sc-executor", "sc-executor-common", @@ -7629,7 +7552,7 @@ dependencies = [ "bounded-vec", "futures 0.3.21", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "schnorrkel", "serde", @@ -7790,6 +7713,83 @@ dependencies = [ "sp-std", ] +[[package]] +name = "polkadot-parachain" +version = "0.9.190" +dependencies = [ + "assert_cmd", + "async-trait", + "canvas-kusama-runtime", + "clap 3.1.18", + "cumulus-client-cli", + "cumulus-client-consensus-aura", + "cumulus-client-consensus-common", + "cumulus-client-consensus-relay-chain", + "cumulus-client-network", + "cumulus-client-service", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-relay-chain-inprocess-interface", + "cumulus-relay-chain-interface", + "cumulus-relay-chain-rpc-interface", + "frame-benchmarking", + "frame-benchmarking-cli", + "futures 0.3.21", + "hex-literal", + "jsonrpsee", + "log", + "nix 0.24.1", + "pallet-contracts-rpc", + "pallet-transaction-payment-rpc", + "parachains-common", + "parity-scale-codec", + "polkadot-cli", + "polkadot-parachain 0.9.19", + "polkadot-primitives", + "polkadot-service", + "rococo-parachain-runtime", + "sc-basic-authorship", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-executor", + "sc-network", + "sc-rpc", + "sc-service", + "sc-sysinfo", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "sc-transaction-pool-api", + "seedling-runtime", + "serde", + "shell-runtime", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-timestamp", + "sp-transaction-pool", + "statemine-runtime", + "statemint-runtime", + "substrate-build-script-utils", + "substrate-frame-rpc-system", + "substrate-prometheus-endpoint", + "tempfile", + "try-runtime-cli", + "westmint-runtime", + "xcm", +] + [[package]] name = "polkadot-performance-test" version = "0.9.19" @@ -7816,7 +7816,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "scale-info", "serde", "sp-api", @@ -8114,7 +8114,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", @@ -8256,7 +8256,7 @@ dependencies = [ "pallet-vesting", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8303,7 +8303,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-common", @@ -8982,7 +8982,7 @@ dependencies = [ "parachain-info", "parachains-common", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "scale-info", "serde", "sp-api", @@ -9050,7 +9050,7 @@ dependencies = [ "pallet-utility", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -11575,7 +11575,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-runtime-common", "scale-info", "serde", @@ -11641,7 +11641,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", @@ -13070,7 +13070,7 @@ dependencies = [ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -13156,7 +13156,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "polkadot-runtime-common", "scale-info", "serde", @@ -13366,7 +13366,7 @@ dependencies = [ "log", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain 0.9.19", "scale-info", "sp-arithmetic", "sp-io", diff --git a/README.md b/README.md index 0a46395d26..da1021e810 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ and treat as best. ### Collator A Polkadot [collator](https://wiki.polkadot.network/docs/en/learn-collator) for the parachain is -implemented by the `polkadot-collator` binary. +implemented by the `polkadot-parachain` binary (previously called `polkadot-collator`). ## Statemint 🪙 @@ -44,17 +44,17 @@ Statemint is a common good parachain providing an asset store for the Polkadot e ### Build & Launch a Node To run a Statemine or Westmint node (Statemint is not deployed, yet) you will need to compile the -`polkadot-collator` binary: +`polkadot-parachain` binary: ```bash -cargo build --release --locked -p polkadot-collator +cargo build --release --locked -p polkadot-parachain ``` Once the executable is built, launch the parachain node via: ```bash CHAIN=westmint # or statemine -./target/release/polkadot-collator --chain $CHAIN +./target/release/polkadot-parachain --chain $CHAIN ``` Refer to the [setup instructions below](#local-setup) to run a local network for development. @@ -105,16 +105,16 @@ If you are looking for a quickstart, we can recommend ### Build & Launch a Node To run a Canvas node that connects to Rococo (Kusama and Polkadot parachains are not deployed, yet) -you will need to compile the `polkadot-collator` binary: +you will need to compile the `polkadot-parachain` binary: ```bash -cargo build --release --locked -p polkadot-collator +cargo build --release --locked -p polkadot-parachain ``` Once the executable is built, launch the parachain node via: ```bash -./target/release/polkadot-collator --chain rocanvas +./target/release/polkadot-parachain --chain rocanvas ``` Refer to the [setup instructions below](#local-setup) to run a local network for development. @@ -164,7 +164,7 @@ eventually be included by the relay chain for a parachain. To run a Rococo collator you will need to compile the following binary: ```bash -cargo build --release --locked -p polkadot-collator +cargo build --release --locked -p polkadot-parachain ``` Otherwise you can compile it with @@ -173,7 +173,7 @@ Otherwise you can compile it with ```bash docker run --rm -it -w /shellhere/cumulus \ -v $(pwd):/shellhere/cumulus \ - paritytech/ci-linux:production cargo build --release --locked -p polkadot-collator + paritytech/ci-linux:production cargo build --release --locked -p polkadot-parachain sudo chown -R $(id -u):$(id -g) target/ ``` @@ -184,7 +184,7 @@ Once the executable is built, launch collators for each parachain (repeat once e `tick`, `trick`, `track`): ```bash -./target/release/polkadot-collator --chain $CHAIN --validator +./target/release/polkadot-parachain --chain $CHAIN --validator ``` ### Parachains @@ -232,19 +232,19 @@ cd cumulus cargo build --release # Export genesis state -./target/release/polkadot-collator export-genesis-state > genesis-state +./target/release/polkadot-parachain export-genesis-state > genesis-state # Export genesis wasm -./target/release/polkadot-collator export-genesis-wasm > genesis-wasm +./target/release/polkadot-parachain export-genesis-wasm > genesis-wasm # Collator1 -./target/release/polkadot-collator --collator --alice --force-authoring --tmp --port 40335 --ws-port 9946 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30335 +./target/release/polkadot-parachain --collator --alice --force-authoring --tmp --port 40335 --ws-port 9946 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30335 # Collator2 -./target/release/polkadot-collator --collator --bob --force-authoring --tmp --port 40336 --ws-port 9947 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30336 +./target/release/polkadot-parachain --collator --bob --force-authoring --tmp --port 40336 --ws-port 9947 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30336 # Parachain Full Node 1 -./target/release/polkadot-collator --tmp --port 40337 --ws-port 9948 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30337 +./target/release/polkadot-parachain --tmp --port 40337 --ws-port 9948 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30337 ``` #### Register the parachain @@ -253,7 +253,7 @@ cargo build --release ### Containerize -After building `polkadot-collator` with cargo or with Parity CI image as documented in [this chapter](#build--launch-rococo-collators), +After building `polkadot-parachain` with cargo or with Parity CI image as documented in [this chapter](#build--launch-rococo-collators), the following will allow producing a new docker image where the compiled binary is injected: ```bash @@ -263,7 +263,7 @@ the following will allow producing a new docker image where the compiled binary Alternatively, you can build an image with a builder pattern: ```bash -docker build --tag $OWNER/$IMAGE_NAME --file ./docker/polkadot-collator_builder.Containerfile . +docker build --tag $OWNER/$IMAGE_NAME --file ./docker/polkadot-parachain_builder.Containerfile . You may then run your new container: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 052879039a..0a0821984f 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -66,7 +66,7 @@ services: volumes: - "genesis-state:/data" command: > - polkadot-collator + polkadot-parachain export-genesis-state /data/genesis-state diff --git a/docker/injected.Dockerfile b/docker/injected.Dockerfile index f2d3ab6c45..a251758344 100644 --- a/docker/injected.Dockerfile +++ b/docker/injected.Dockerfile @@ -34,18 +34,18 @@ RUN apt-get update && \ ln -s /data /polkadot/.local/share/polkadot && \ mkdir -p /specs -# add polkadot-collator binary to the docker image -COPY ./target/release/polkadot-collator /usr/local/bin -COPY ./target/release/polkadot-collator.asc /usr/local/bin -COPY ./target/release/polkadot-collator.sha256 /usr/local/bin +# add polkadot-parachain binary to the docker image +COPY ./target/release/polkadot-parachain /usr/local/bin +COPY ./target/release/polkadot-parachain.asc /usr/local/bin +COPY ./target/release/polkadot-parachain.sha256 /usr/local/bin COPY ./polkadot-parachains/res/*.json /specs/ USER polkadot # check if executable works in this container -RUN /usr/local/bin/polkadot-collator --version +RUN /usr/local/bin/polkadot-parachain --version EXPOSE 30333 9933 9944 VOLUME ["/polkadot"] -ENTRYPOINT ["/usr/local/bin/polkadot-collator"] +ENTRYPOINT ["/usr/local/bin/polkadot-parachain"] diff --git a/docker/polkadot-collator_builder.Containerfile b/docker/polkadot-parachain_builder.Containerfile similarity index 53% rename from docker/polkadot-collator_builder.Containerfile rename to docker/polkadot-parachain_builder.Containerfile index 8698bf874d..159bcb3236 100644 --- a/docker/polkadot-collator_builder.Containerfile +++ b/docker/polkadot-parachain_builder.Containerfile @@ -1,11 +1,11 @@ # This file is sourced from https://github.com/paritytech/polkadot/blob/master/scripts/ci/dockerfiles/polkadot/polkadot_builder.Dockerfile -# This is the build stage for Polkadot-collator. Here we create the binary in a temporary image. +# This is the build stage for polkadot-parachain. Here we create the binary in a temporary image. FROM docker.io/paritytech/ci-linux:production as builder WORKDIR /cumulus COPY . /cumulus -RUN cargo build --release --locked -p polkadot-collator +RUN cargo build --release --locked -p polkadot-parachain # This is the 2nd stage: a very small image where we copy the Polkadot binary." FROM docker.io/library/ubuntu:20.04 @@ -13,24 +13,24 @@ FROM docker.io/library/ubuntu:20.04 LABEL io.parity.image.type="builder" \ io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ - io.parity.image.description="Multistage Docker image for Polkadot-collator" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/ci/dockerfiles/polkadot/polkadot-collator_builder.Dockerfile" \ + io.parity.image.description="Multistage Docker image for polkadot-parachain" \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/ci/dockerfiles/polkadot/polkadot-parachain_builder.Dockerfile" \ io.parity.image.documentation="https://github.com/paritytech/cumulus" -COPY --from=builder /cumulus/target/release/polkadot-collator /usr/local/bin +COPY --from=builder /cumulus/target/release/polkadot-parachain /usr/local/bin -RUN useradd -m -u 1000 -U -s /bin/sh -d /cumulus polkadot-collator && \ +RUN useradd -m -u 1000 -U -s /bin/sh -d /cumulus polkadot-parachain && \ mkdir -p /data /cumulus/.local/share && \ - chown -R polkadot-collator:polkadot-collator /data && \ - ln -s /data /cumulus/.local/share/polkadot-collator && \ + chown -R polkadot-parachain:polkadot-parachain /data && \ + ln -s /data /cumulus/.local/share/polkadot-parachain && \ # unclutter and minimize the attack surface rm -rf /usr/bin /usr/sbin && \ # check if executable works in this container - /usr/local/bin/polkadot-collator --version + /usr/local/bin/polkadot-parachain --version -USER polkadot-collator +USER polkadot-parachain EXPOSE 30333 9933 9944 9615 VOLUME ["/data"] -ENTRYPOINT ["/usr/local/bin/polkadot-collator"] +ENTRYPOINT ["/usr/local/bin/polkadot-parachain"] diff --git a/docker/scripts/build-injected-image.sh b/docker/scripts/build-injected-image.sh index 6ba392d121..4a53aabf3e 100755 --- a/docker/scripts/build-injected-image.sh +++ b/docker/scripts/build-injected-image.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash OWNER=${OWNER:-parity} -IMAGE_NAME=${IMAGE_NAME:-polkadot-collator} +IMAGE_NAME=${IMAGE_NAME:-polkadot-parachain} docker build --no-cache --build-arg IMAGE_NAME=$IMAGE_NAME -t $OWNER/$IMAGE_NAME -f ./docker/injected.Dockerfile . docker images | grep $IMAGE_NAME diff --git a/docker/scripts/inject_bootnodes.sh b/docker/scripts/inject_bootnodes.sh index 99740a3fab..5b2dbae454 100755 --- a/docker/scripts/inject_bootnodes.sh +++ b/docker/scripts/inject_bootnodes.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# this script runs the polkadot-collator after fetching +# this script runs the polkadot-parachain after fetching # appropriate bootnode IDs # # this is _not_ a general-purpose script; it is closely tied to the @@ -8,7 +8,7 @@ set -e -o pipefail -ctpc="/usr/bin/polkadot-collator" +ctpc="/usr/bin/polkadot-parachain" if [ ! -x "$ctpc" ]; then echo "FATAL: $ctpc does not exist or is not executable" diff --git a/docker/test-parachain-collator.dockerfile b/docker/test-parachain-collator.dockerfile index 42fe4c17da..9c2d8fbe58 100644 --- a/docker/test-parachain-collator.dockerfile +++ b/docker/test-parachain-collator.dockerfile @@ -4,7 +4,7 @@ FROM docker.io/paritytech/ci-linux:production as builder WORKDIR /cumulus COPY . /cumulus -RUN cargo build --release --locked -p polkadot-collator +RUN cargo build --release --locked -p polkadot-parachain # the collator stage is normally built once, cached, and then ignored, but can # be specified with the --target build flag. This adds some extra tooling to the @@ -23,7 +23,7 @@ RUN apt-get update && apt-get install jq curl bash -y && \ npm install --global yarn && \ yarn global add @polkadot/api-cli@0.10.0-beta.14 COPY --from=builder \ - /paritytech/cumulus/target/release/polkadot-collator /usr/bin + /paritytech/cumulus/target/release/polkadot-parachain /usr/bin COPY ./docker/scripts/inject_bootnodes.sh /usr/bin CMD ["/usr/bin/inject_bootnodes.sh"] COPY ./docker/scripts/healthcheck.sh /usr/bin/ @@ -41,6 +41,6 @@ CMD ["cp", "-v", "/var/opt/cumulus_test_parachain_runtime.compact.wasm", "/runti FROM debian:buster-slim COPY --from=builder \ - /paritytech/cumulus/target/release/polkadot-collator /usr/bin + /paritytech/cumulus/target/release/polkadot-parachain /usr/bin -CMD ["/usr/bin/polkadot-collator"] +CMD ["/usr/bin/polkadot-parachain"] diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 4c0cc465cc..619d524bc5 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -1,12 +1,13 @@ [package] -name = "polkadot-collator" -version = "5.4.0" +name = "polkadot-parachain" +version = "0.9.190" authors = ["Parity Technologies "] build = "build.rs" edition = "2021" +description = "Runs a polkadot parachain node which could be a collator." [[bin]] -name = "polkadot-collator" +name = "polkadot-parachain" path = "src/main.rs" [dependencies] diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 77293e49b4..62530a76a2 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -167,7 +167,7 @@ fn load_spec(id: &str) -> std::result::Result, St impl SubstrateCli for Cli { fn impl_name() -> String { - "Polkadot collator".into() + "Polkadot parachain".into() } fn impl_version() -> String { @@ -176,7 +176,7 @@ impl SubstrateCli for Cli { fn description() -> String { format!( - "Polkadot collator\n\nThe command-line arguments provided first will be \ + "Polkadot parachain\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]", @@ -221,7 +221,7 @@ impl SubstrateCli for Cli { impl SubstrateCli for RelayChainCli { fn impl_name() -> String { - "Polkadot collator".into() + "Polkadot parachain".into() } fn impl_version() -> String { @@ -230,7 +230,7 @@ impl SubstrateCli for RelayChainCli { fn description() -> String { format!( - "Polkadot collator\n\nThe command-line arguments provided first will be \ + "Polkadot parachain\n\nThe command-line arguments provided first will be \ passed to the parachain node, while the arguments provided after -- will be passed \ to the relay chain node.\n\n\ {} [parachain-args] -- [relay_chain-args]", diff --git a/polkadot-parachains/tests/benchmark_storage_works.rs b/polkadot-parachains/tests/benchmark_storage_works.rs index f2cf691953..df3c7fe919 100644 --- a/polkadot-parachains/tests/benchmark_storage_works.rs +++ b/polkadot-parachains/tests/benchmark_storage_works.rs @@ -28,7 +28,7 @@ fn benchmark_storage_works() { /// Invoke the `benchmark storage` sub-command for the given database and runtime. fn benchmark_storage(db: &str, runtime: &str, base_path: &Path) -> ExitStatus { - Command::new(cargo_bin("polkadot-collator")) + Command::new(cargo_bin("polkadot-parachain")) .args(&["benchmark", "storage", "--chain", runtime]) .arg("--db") .arg(db) diff --git a/polkadot-parachains/tests/polkadot_argument_parsing.rs b/polkadot-parachains/tests/polkadot_argument_parsing.rs index 53a7bf2ee2..4b4078fcfc 100644 --- a/polkadot-parachains/tests/polkadot_argument_parsing.rs +++ b/polkadot-parachains/tests/polkadot_argument_parsing.rs @@ -33,7 +33,7 @@ fn polkadot_argument_parsing() { fn run_command_and_kill(signal: Signal) { let _ = fs::remove_dir_all("polkadot_argument_parsing"); - let mut cmd = Command::new(cargo_bin("polkadot-collator")) + let mut cmd = Command::new(cargo_bin("polkadot-parachain")) .args(&[ "-d", "polkadot_argument_parsing", diff --git a/polkadot-parachains/tests/polkadot_mdns_issue.rs b/polkadot-parachains/tests/polkadot_mdns_issue.rs index af1c5a55d4..1f04e2a72f 100644 --- a/polkadot-parachains/tests/polkadot_mdns_issue.rs +++ b/polkadot-parachains/tests/polkadot_mdns_issue.rs @@ -33,7 +33,7 @@ fn interrupt_polkadot_mdns_issue_test() { fn run_command_and_kill(signal: Signal) { let _ = fs::remove_dir_all("interrupt_polkadot_mdns_issue_test"); - let mut cmd = Command::new(cargo_bin("polkadot-collator")) + let mut cmd = Command::new(cargo_bin("polkadot-parachain")) .args(&["-d", "interrupt_polkadot_mdns_issue_test", "--", "--dev"]) .spawn() .unwrap(); diff --git a/polkadot-parachains/tests/purge_chain_works.rs b/polkadot-parachains/tests/purge_chain_works.rs index d7e218d33f..ea93c4275f 100644 --- a/polkadot-parachains/tests/purge_chain_works.rs +++ b/polkadot-parachains/tests/purge_chain_works.rs @@ -31,7 +31,7 @@ fn purge_chain_works() { let base_path = tempfile::tempdir().unwrap(); - let mut cmd = Command::new(cargo_bin("polkadot-collator")) + let mut cmd = Command::new(cargo_bin("polkadot-parachain")) .args(&["-d"]) .arg(base_path.path()) .args(&["--", "--dev"]) @@ -56,7 +56,7 @@ fn purge_chain_works() { assert!(base_path.path().join("chains/local_testnet/db/full").exists()); assert!(base_path.path().join("polkadot/chains/dev/db/full").exists()); - let status = Command::new(cargo_bin("polkadot-collator")) + let status = Command::new(cargo_bin("polkadot-parachain")) .args(&["purge-chain", "-d"]) .arg(base_path.path()) .arg("-y") diff --git a/polkadot-parachains/tests/running_the_node_and_interrupt.rs b/polkadot-parachains/tests/running_the_node_and_interrupt.rs index 25be2e394d..f28e8f19b2 100644 --- a/polkadot-parachains/tests/running_the_node_and_interrupt.rs +++ b/polkadot-parachains/tests/running_the_node_and_interrupt.rs @@ -33,7 +33,7 @@ fn running_the_node_works_and_can_be_interrupted() { fn run_command_and_kill(signal: Signal) { let _ = fs::remove_dir_all("interrupt_test"); - let mut cmd = Command::new(cargo_bin("polkadot-collator")) + let mut cmd = Command::new(cargo_bin("polkadot-parachain")) .args(&["-d", "interrupt_test", "--", "--dev"]) .spawn() .unwrap(); diff --git a/scripts/benchmarks-ci.sh b/scripts/benchmarks-ci.sh index 4fda1dde36..90f28e7759 100755 --- a/scripts/benchmarks-ci.sh +++ b/scripts/benchmarks-ci.sh @@ -23,7 +23,7 @@ pallets=( for p in ${pallets[@]} do - ./artifacts/polkadot-collator benchmark pallet \ + ./artifacts/polkadot-parachain benchmark pallet \ --chain=$benhcmarkChainName \ --execution=wasm \ --wasm-execution=compiled \ diff --git a/scripts/benchmarks.sh b/scripts/benchmarks.sh index ba998a79a5..371c57ccac 100755 --- a/scripts/benchmarks.sh +++ b/scripts/benchmarks.sh @@ -27,7 +27,7 @@ pallets=( for p in ${pallets[@]} do - ./target/production/polkadot-collator benchmark pallet \ + ./target/production/polkadot-parachain benchmark pallet \ --chain=$statemineChain \ --execution=wasm \ --wasm-execution=compiled \ @@ -39,7 +39,7 @@ do --header=./file_header.txt \ --output=$statemineOutput - ./target/production/polkadot-collator benchmark pallet \ + ./target/production/polkadot-parachain benchmark pallet \ --chain=$statemintChain \ --execution=wasm \ --wasm-execution=compiled \ @@ -51,7 +51,7 @@ do --header=./file_header.txt \ --output=$statemintOutput - ./target/production/polkadot-collator benchmark pallet \ + ./target/production/polkadot-parachain benchmark pallet \ --chain=$westmintChain \ --execution=wasm \ --wasm-execution=compiled \ diff --git a/scripts/ci/changelog/templates/docker_image.md.tera b/scripts/ci/changelog/templates/docker_image.md.tera index 59f631106b..0506e43b90 100644 --- a/scripts/ci/changelog/templates/docker_image.md.tera +++ b/scripts/ci/changelog/templates/docker_image.md.tera @@ -1,11 +1,11 @@ diff --git a/scripts/create_seedling_spec.sh b/scripts/create_seedling_spec.sh index 4e6a8d8641..a4ac0b2ab5 100755 --- a/scripts/create_seedling_spec.sh +++ b/scripts/create_seedling_spec.sh @@ -26,7 +26,7 @@ sudo=$8 [ -z "$para_$id" ] && usage [ -z "$sudo" ] && usage -binary="./target/release/polkadot-collator" +binary="./target/release/polkadot-parachain" # build the chain spec we'll manipulate $binary build-spec --disable-default-bootnode --chain seedling > seedling-spec-plain.json diff --git a/scripts/create_shell_spec.sh b/scripts/create_shell_spec.sh index de9348ef17..6d6675044d 100755 --- a/scripts/create_shell_spec.sh +++ b/scripts/create_shell_spec.sh @@ -10,7 +10,7 @@ set -e rt_path=$1 -binary="./target/release/polkadot-collator" +binary="./target/release/polkadot-parachain" # build the chain spec we'll manipulate $binary build-spec --chain shell > shell-spec-plain.json diff --git a/scripts/generate_genesis_value.sh b/scripts/generate_genesis_value.sh index 55e853ea16..370c4f8c69 100755 --- a/scripts/generate_genesis_value.sh +++ b/scripts/generate_genesis_value.sh @@ -27,7 +27,7 @@ chain_spec_summary() { } check_collator() { - BIN=target/release/polkadot-collator + BIN=target/release/polkadot-parachain if [ -f $BIN ]; then echo "✅ Collator binary found:" $BIN --version @@ -58,7 +58,7 @@ if [[ "$rpc_endpoint" =~ "localhost" ]]; then check_collator echo -e "Make sure you have a collator running with the correct version at $rpc_endpoint." echo -e "If you don't, NOW is the time to start it with:" - echo -e "target/release/polkadot-collator --chain polkadot-parachains/res/shell-statemint.json --tmp\n" + echo -e "target/release/polkadot-parachain --chain polkadot-parachains/res/shell-statemint.json --tmp\n" read -p "You can abort with CTRL+C if this is not correct, otherwise press ENTER " fi From 6087137c75795416adf859a413d0d5896621c8ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 May 2022 23:25:43 +0200 Subject: [PATCH 049/238] Bump syn from 1.0.93 to 1.0.94 (#1258) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.93 to 1.0.94. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.93...1.0.94) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 697acffc2d..4d0e9eb28c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11906,9 +11906,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04066589568b72ec65f42d65a1a52436e954b168773148893c020269563decf2" +checksum = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 08e90f4dbb..eb8ea5487a 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -9,7 +9,7 @@ description = "Proc macros provided by the parachain-system pallet" proc-macro = true [dependencies] -syn = "1.0.93" +syn = "1.0.94" proc-macro2 = "1.0.38" quote = "1.0.18" proc-macro-crate = "1.1.3" From 3b6c0a1a43c824f722b571d719c9c0869dc86998 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 11:18:35 +0200 Subject: [PATCH 050/238] Bump jsonrpsee-core from 0.13.0 to 0.13.1 (#1259) Bumps jsonrpsee-core from 0.13.0 to 0.13.1. --- updated-dependencies: - dependency-name: jsonrpsee-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- client/relay-chain-interface/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d0e9eb28c..519f684a23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3808,9 +3808,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6b13067b615dd050ced7c19517a52cde490eee2c754d5447ce513f2275f7d" +checksum = "6e27462b21279edf9a6a91f46ffbe125e9cdc58b901d2e08bf59b31a47d7d0ab" dependencies = [ "anyhow", "arrayvec 0.7.2", @@ -3866,9 +3866,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f1835f131e77cd766b4dcb025873944cb1e479cd5debb639e2dc11f90df24a" +checksum = "8fd11763134104122ddeb0f97e4bbe393058017dfb077db63fbf44b4dd0dd86e" dependencies = [ "anyhow", "beef", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 87cd753d6a..81d510b3c3 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -23,5 +23,5 @@ parking_lot = "0.12.0" derive_more = "0.99.2" async-trait = "0.1.53" thiserror = "1.0.31" -jsonrpsee-core = "0.13.0" +jsonrpsee-core = "0.13.1" parity-scale-codec = "3.1.2" From 0e011af6a9e3f1c0ca4b437b2617ac4b2fdd5136 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Mon, 16 May 2022 13:53:14 -0400 Subject: [PATCH 051/238] Companion to #11389 (Uniques Rename) (#1256) * rename * weight rename * update lockfile for {"substrate"} * cargo update -p xcm Co-authored-by: parity-processbot <> --- Cargo.lock | 795 ++++++++++-------- polkadot-parachains/statemine/src/lib.rs | 20 +- .../statemine/src/weights/pallet_uniques.rs | 10 +- polkadot-parachains/statemint/src/lib.rs | 20 +- .../statemint/src/weights/pallet_uniques.rs | 10 +- polkadot-parachains/westmint/src/lib.rs | 20 +- .../westmint/src/weights/pallet_uniques.rs | 10 +- 7 files changed, 466 insertions(+), 419 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 519f684a23..dc2c91e11f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -701,7 +701,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-runtime", "finality-grandpa", @@ -718,7 +718,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-runtime", "frame-support", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "bp-runtime", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-messages", "bp-runtime", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -782,7 +782,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "hash-db", @@ -800,7 +800,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -830,7 +830,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -978,7 +978,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-runtime-common", "scale-info", "serde", @@ -1709,7 +1709,7 @@ dependencies = [ "parking_lot 0.12.0", "polkadot-client", "polkadot-node-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-service", "polkadot-test-client", @@ -1843,7 +1843,7 @@ dependencies = [ "log", "pallet-balances", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "sc-client-api", "scale-info", "serde", @@ -1962,7 +1962,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "sp-api", "sp-runtime", @@ -2017,7 +2017,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "sp-runtime", "sp-std", @@ -2118,7 +2118,7 @@ dependencies = [ "pallet-balances", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "sc-block-builder", "sc-consensus", @@ -2818,7 +2818,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", ] @@ -2836,7 +2836,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -2858,7 +2858,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "Inflector", "chrono", @@ -2908,7 +2908,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2919,7 +2919,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2935,7 +2935,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -2963,7 +2963,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "bitflags", "frame-metadata", @@ -2993,7 +2993,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3005,7 +3005,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3017,7 +3017,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro2", "quote", @@ -3027,7 +3027,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "log", @@ -3044,7 +3044,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -3059,7 +3059,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "sp-api", @@ -3068,7 +3068,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "sp-api", @@ -3926,8 +3926,8 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-primitives", "bitvec", @@ -4019,8 +4019,8 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "polkadot-primitives", @@ -4180,7 +4180,7 @@ dependencies = [ "libp2p-request-response", "libp2p-swarm", "log", - "prost", + "prost 0.9.0", "prost-build", "rand 0.8.5", ] @@ -4207,7 +4207,7 @@ dependencies = [ "multistream-select", "parking_lot 0.12.0", "pin-project 1.0.10", - "prost", + "prost 0.9.0", "prost-build", "rand 0.8.5", "ring", @@ -4257,7 +4257,7 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", + "prost 0.9.0", "prost-build", "rand 0.7.3", "smallvec", @@ -4281,7 +4281,7 @@ dependencies = [ "libp2p-swarm", "log", "prometheus-client", - "prost", + "prost 0.9.0", "prost-build", "rand 0.7.3", "regex", @@ -4303,7 +4303,7 @@ dependencies = [ "libp2p-swarm", "log", "lru 0.7.5", - "prost", + "prost 0.9.0", "prost-build", "smallvec", ] @@ -4325,7 +4325,7 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", + "prost 0.9.0", "prost-build", "rand 0.7.3", "sha2 0.10.2", @@ -4403,7 +4403,7 @@ dependencies = [ "lazy_static", "libp2p-core", "log", - "prost", + "prost 0.9.0", "prost-build", "rand 0.8.5", "sha2 0.10.2", @@ -4440,7 +4440,7 @@ dependencies = [ "futures 0.3.21", "libp2p-core", "log", - "prost", + "prost 0.9.0", "prost-build", "unsigned-varint", "void", @@ -4476,7 +4476,7 @@ dependencies = [ "libp2p-swarm", "log", "pin-project 1.0.10", - "prost", + "prost 0.9.0", "prost-build", "rand 0.8.5", "smallvec", @@ -4500,7 +4500,7 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", + "prost 0.9.0", "prost-build", "rand 0.8.5", "sha2 0.10.2", @@ -4920,8 +4920,8 @@ dependencies = [ [[package]] name = "metered-channel" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5386,7 +5386,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -5403,7 +5403,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5417,7 +5417,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -5433,7 +5433,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -5449,7 +5449,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -5464,7 +5464,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5488,7 +5488,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5508,7 +5508,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5523,7 +5523,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "beefy-primitives", "frame-support", @@ -5539,7 +5539,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5562,7 +5562,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5580,7 +5580,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5597,7 +5597,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5619,7 +5619,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5640,7 +5640,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5685,7 +5685,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5702,7 +5702,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "bitflags", "frame-benchmarking", @@ -5729,7 +5729,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "bitflags", "parity-scale-codec", @@ -5744,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro2", "quote", @@ -5754,7 +5754,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5771,7 +5771,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5784,7 +5784,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5800,7 +5800,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5823,7 +5823,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5836,7 +5836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5854,7 +5854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5892,7 +5892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5908,7 +5908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5928,7 +5928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -5962,7 +5962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5980,7 +5980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5995,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6010,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6024,10 +6024,11 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", + "log", "parity-scale-codec", "scale-info", "sp-core", @@ -6039,7 +6040,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6058,7 +6059,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6075,7 +6076,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6098,7 +6099,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6114,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6129,7 +6130,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6143,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6158,7 +6159,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6174,7 +6175,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6195,7 +6196,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6211,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6225,7 +6226,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6248,7 +6249,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6259,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "sp-arithmetic", @@ -6268,7 +6269,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6297,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6315,7 +6316,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6334,7 +6335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-support", "frame-system", @@ -6351,7 +6352,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6366,7 +6367,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6377,7 +6378,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6394,7 +6395,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6409,7 +6410,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6425,7 +6426,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-benchmarking", "frame-support", @@ -6439,8 +6440,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "frame-system", @@ -6457,8 +6458,8 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6510,7 +6511,7 @@ dependencies = [ "parachain-template-runtime", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-service", "sc-basic-authorship", @@ -6585,7 +6586,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-runtime-common", "scale-info", "serde", @@ -6970,8 +6971,8 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6985,8 +6986,8 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6999,8 +7000,8 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "derive_more", "fatality", @@ -7022,8 +7023,8 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "fatality", "futures 0.3.21", @@ -7043,8 +7044,8 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7068,8 +7069,8 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7108,8 +7109,8 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "always-assert", "fatality", @@ -7129,8 +7130,8 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7142,8 +7143,8 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "derive_more", "fatality", @@ -7165,8 +7166,8 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7179,8 +7180,8 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7199,8 +7200,8 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "always-assert", "async-trait", @@ -7220,8 +7221,8 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7238,8 +7239,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "derive_more", @@ -7267,8 +7268,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "futures 0.3.21", @@ -7287,8 +7288,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "fatality", @@ -7306,8 +7307,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7321,8 +7322,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7331,7 +7332,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -7339,8 +7340,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7354,8 +7355,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7371,8 +7372,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "fatality", "futures 0.3.21", @@ -7390,8 +7391,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7407,8 +7408,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "fatality", @@ -7425,8 +7426,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "always-assert", "assert_matches", @@ -7438,7 +7439,7 @@ dependencies = [ "pin-project 1.0.10", "polkadot-core-primitives", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "rand 0.8.5", "sc-executor", "sc-executor-common", @@ -7455,8 +7456,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7471,8 +7472,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7489,8 +7490,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-std", "lazy_static", @@ -7507,8 +7508,8 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bs58", "futures 0.3.21", @@ -7526,8 +7527,8 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "derive_more", @@ -7546,13 +7547,13 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bounded-vec", "futures 0.3.21", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "schnorrkel", "serde", @@ -7568,8 +7569,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7578,8 +7579,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7596,8 +7597,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "derive_more", "futures 0.3.21", @@ -7615,8 +7616,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "derive_more", @@ -7648,8 +7649,8 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7669,8 +7670,8 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7686,10 +7687,11 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "expander 0.0.6", + "petgraph", "proc-macro-crate", "proc-macro2", "quote", @@ -7698,8 +7700,8 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "derive_more", "frame-support", @@ -7744,7 +7746,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-service", "rococo-parachain-runtime", @@ -7792,8 +7794,8 @@ dependencies = [ [[package]] name = "polkadot-performance-test" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7807,8 +7809,8 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitvec", "frame-system", @@ -7816,7 +7818,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "scale-info", "serde", "sp-api", @@ -7837,8 +7839,8 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7869,8 +7871,8 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-primitives", "bitvec", @@ -7955,8 +7957,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-primitives", "bitvec", @@ -8002,8 +8004,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "polkadot-primitives", @@ -8014,8 +8016,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bs58", "parity-scale-codec", @@ -8026,8 +8028,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "bitflags", "bitvec", @@ -8069,8 +8071,8 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "async-trait", "beefy-gadget", @@ -8112,9 +8114,10 @@ dependencies = [ "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", + "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", @@ -8171,8 +8174,8 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8192,8 +8195,8 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8202,8 +8205,8 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8227,8 +8230,8 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-primitives", "bitvec", @@ -8256,7 +8259,7 @@ dependencies = [ "pallet-vesting", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8289,8 +8292,8 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-benchmarking", "frame-system", @@ -8303,7 +8306,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-common", @@ -8533,7 +8536,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.9.0", +] + +[[package]] +name = "prost" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc03e116981ff7d8da8e5c220e374587b98d294af7ba7dd7fda761158f00086f" +dependencies = [ + "bytes", + "prost-derive 0.10.1", ] [[package]] @@ -8549,7 +8562,7 @@ dependencies = [ "log", "multimap", "petgraph", - "prost", + "prost 0.9.0", "prost-types", "regex", "tempfile", @@ -8569,6 +8582,19 @@ dependencies = [ "syn", ] +[[package]] +name = "prost-derive" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "prost-types" version = "0.9.0" @@ -8576,7 +8602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" dependencies = [ "bytes", - "prost", + "prost 0.9.0", ] [[package]] @@ -8878,7 +8904,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8982,7 +9008,7 @@ dependencies = [ "parachain-info", "parachains-common", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "scale-info", "serde", "sp-api", @@ -9005,8 +9031,8 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9050,7 +9076,7 @@ dependencies = [ "pallet-utility", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -9082,8 +9108,8 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "polkadot-primitives", @@ -9290,7 +9316,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "sp-core", @@ -9301,7 +9327,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -9310,7 +9336,7 @@ dependencies = [ "libp2p", "log", "parity-scale-codec", - "prost", + "prost 0.10.3", "prost-build", "rand 0.7.3", "sc-client-api", @@ -9328,7 +9354,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9351,7 +9377,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9367,7 +9393,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9384,7 +9410,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9395,7 +9421,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "chrono", "clap 3.1.18", @@ -9434,7 +9460,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "fnv", "futures 0.3.21", @@ -9462,7 +9488,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "hash-db", "kvdb", @@ -9487,7 +9513,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -9511,7 +9537,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -9540,7 +9566,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "fork-tree", @@ -9583,7 +9609,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9605,7 +9631,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9618,7 +9644,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -9643,7 +9669,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "sc-client-api", "sp-authorship", @@ -9654,7 +9680,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9681,7 +9707,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "environmental", "parity-scale-codec", @@ -9698,7 +9724,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "parity-scale-codec", @@ -9713,7 +9739,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9731,7 +9757,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "ahash", "async-trait", @@ -9771,7 +9797,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9792,7 +9818,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9809,7 +9835,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "hex", @@ -9824,7 +9850,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "asynchronous-codec", @@ -9846,13 +9872,14 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.0", "pin-project 1.0.10", - "prost", + "prost 0.10.3", "prost-build", "rand 0.7.3", "sc-block-builder", "sc-client-api", "sc-consensus", "sc-network-common", + "sc-network-light", "sc-network-sync", "sc-peerset", "sc-utils", @@ -9875,7 +9902,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "libp2p", @@ -9888,7 +9915,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "ahash", "futures 0.3.21", @@ -9902,10 +9929,30 @@ dependencies = [ "tracing", ] +[[package]] +name = "sc-network-light" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +dependencies = [ + "futures 0.3.21", + "libp2p", + "log", + "parity-scale-codec", + "prost 0.10.3", + "prost-build", + "sc-client-api", + "sc-network-common", + "sc-peerset", + "sp-blockchain", + "sp-core", + "sp-runtime", + "thiserror", +] + [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "bitflags", "either", @@ -9915,7 +9962,7 @@ dependencies = [ "log", "lru 0.7.5", "parity-scale-codec", - "prost", + "prost 0.10.3", "prost-build", "sc-client-api", "sc-consensus", @@ -9934,7 +9981,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "bytes", "fnv", @@ -9962,7 +10009,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "libp2p", @@ -9975,7 +10022,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9984,7 +10031,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "hash-db", @@ -10014,7 +10061,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10037,7 +10084,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10050,7 +10097,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "directories", @@ -10115,7 +10162,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "parity-scale-codec", @@ -10129,7 +10176,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10148,7 +10195,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "libc", @@ -10167,7 +10214,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "chrono", "futures 0.3.21", @@ -10185,7 +10232,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "ansi_term", "atty", @@ -10216,7 +10263,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10227,7 +10274,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10254,7 +10301,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "log", @@ -10267,7 +10314,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10515,9 +10562,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" dependencies = [ "itoa 1.0.1", "ryu", @@ -10715,8 +10762,8 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "enumn", "parity-scale-codec", @@ -10792,7 +10839,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "hash-db", "log", @@ -10809,7 +10856,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "blake2", "proc-macro-crate", @@ -10821,7 +10868,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -10834,7 +10881,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "integer-sqrt", "num-traits", @@ -10849,7 +10896,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -10862,7 +10909,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "parity-scale-codec", @@ -10874,7 +10921,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "sp-api", @@ -10886,7 +10933,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "log", @@ -10904,7 +10951,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -10923,7 +10970,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "parity-scale-codec", @@ -10941,7 +10988,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "merlin", @@ -10964,7 +11011,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -10978,7 +11025,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -10991,7 +11038,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "base58", "bitflags", @@ -11037,7 +11084,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "blake2", "byteorder", @@ -11051,7 +11098,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro2", "quote", @@ -11062,7 +11109,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11071,7 +11118,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro2", "quote", @@ -11081,7 +11128,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "environmental", "parity-scale-codec", @@ -11092,7 +11139,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "finality-grandpa", "log", @@ -11110,7 +11157,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11124,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "hash-db", @@ -11149,7 +11196,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "lazy_static", "sp-core", @@ -11160,7 +11207,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -11177,7 +11224,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "thiserror", "zstd", @@ -11186,7 +11233,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "parity-scale-codec", @@ -11201,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -11215,7 +11262,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "sp-api", "sp-core", @@ -11225,7 +11272,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "backtrace", "lazy_static", @@ -11235,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "rustc-hash", "serde", @@ -11245,7 +11292,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "either", "hash256-std-hasher", @@ -11267,7 +11314,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11284,7 +11331,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "Inflector", "proc-macro-crate", @@ -11296,7 +11343,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "parity-scale-codec", @@ -11310,7 +11357,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "serde", "serde_json", @@ -11319,7 +11366,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -11333,7 +11380,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "scale-info", @@ -11344,7 +11391,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "hash-db", "log", @@ -11366,12 +11413,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11384,7 +11431,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "log", "sp-core", @@ -11397,7 +11444,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures-timer", @@ -11413,7 +11460,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "sp-std", @@ -11425,7 +11472,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "sp-api", "sp-runtime", @@ -11434,7 +11481,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "log", @@ -11450,7 +11497,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "hash-db", "memory-db", @@ -11466,7 +11513,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11483,7 +11530,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11494,7 +11541,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "impl-trait-for-tuples", "log", @@ -11512,9 +11559,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b84a70894df7a73666e0694f44b41a9571625e9546fb58a0818a565d2c7e084" +checksum = "ceb8b72a924ccfe7882d0e26144c114503760a4d1248bb5cd06c8ab2d55404cc" dependencies = [ "Inflector", "num-format", @@ -11575,7 +11622,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-runtime-common", "scale-info", "serde", @@ -11641,7 +11688,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", @@ -11775,7 +11822,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "platforms", ] @@ -11783,7 +11830,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11804,7 +11851,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures-util", "hyper", @@ -11817,7 +11864,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "jsonrpsee", "log", @@ -11838,7 +11885,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "async-trait", "futures 0.3.21", @@ -11864,7 +11911,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11874,7 +11921,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11885,7 +11932,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "ansi_term", "build-helper", @@ -12002,8 +12049,8 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "polkadot-primitives", @@ -12291,8 +12338,8 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12302,8 +12349,8 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12432,7 +12479,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd1853bad31e29ee18db86e21825965ce3e30f20" +source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -13015,8 +13062,8 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "beefy-primitives", "bitvec", @@ -13070,7 +13117,7 @@ dependencies = [ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -13104,8 +13151,8 @@ dependencies = [ [[package]] name = "westend-runtime-constants" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "polkadot-primitives", @@ -13156,7 +13203,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "polkadot-runtime-common", "scale-info", "serde", @@ -13345,8 +13392,8 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13358,15 +13405,15 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-support", "frame-system", "log", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.19", + "polkadot-parachain 0.9.22", "scale-info", "sp-arithmetic", "sp-io", @@ -13378,8 +13425,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.19" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "frame-benchmarking", "frame-support", @@ -13397,7 +13444,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#6ed790ba2d6cc7a34a2a176e2c22e8c3c6ed1de8" +source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" dependencies = [ "Inflector", "proc-macro2", @@ -13442,18 +13489,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.10.0+zstd.1.5.2" +version = "0.10.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b1365becbe415f3f0fcd024e2f7b45bacfb5bdd055f0dc113571394114e7bdd" +checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.4+zstd.1.5.2" +version = "4.1.6+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7cd17c9af1a4d6c24beb1cc54b17e2ef7b593dc92f19e9d9acad8b182bbaee" +checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb" dependencies = [ "libc", "zstd-sys", diff --git a/polkadot-parachains/statemine/src/lib.rs b/polkadot-parachains/statemine/src/lib.rs index f9a4cac0da..4f778ba869 100644 --- a/polkadot-parachains/statemine/src/lib.rs +++ b/polkadot-parachains/statemine/src/lib.rs @@ -344,10 +344,10 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::set_team { .. }) | Call::Uniques(pallet_uniques::Call::set_metadata { .. }) | Call::Uniques(pallet_uniques::Call::set_attribute { .. }) | - Call::Uniques(pallet_uniques::Call::set_class_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::set_collection_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_attribute { .. }) | - Call::Uniques(pallet_uniques::Call::clear_class_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::clear_collection_metadata { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::AssetManager => matches!( @@ -362,8 +362,8 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::burn { .. }) | Call::Uniques(pallet_uniques::Call::freeze { .. }) | Call::Uniques(pallet_uniques::Call::thaw { .. }) | - Call::Uniques(pallet_uniques::Call::freeze_class { .. }) | - Call::Uniques(pallet_uniques::Call::thaw_class { .. }) | + Call::Uniques(pallet_uniques::Call::freeze_collection { .. }) | + Call::Uniques(pallet_uniques::Call::thaw_collection { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::Collator => matches!( @@ -500,8 +500,8 @@ impl pallet_asset_tx_payment::Config for Runtime { } parameter_types! { - pub const ClassDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class - pub const InstanceDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance + pub const CollectionDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class + pub const ItemDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance pub const KeyLimit: u32 = 32; // Max 32 bytes per key pub const ValueLimit: u32 = 64; // Max 64 bytes per value pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); @@ -512,12 +512,12 @@ parameter_types! { impl pallet_uniques::Config for Runtime { type Event = Event; - type ClassId = u32; - type InstanceId = u32; + type CollectionId = u32; + type ItemId = u32; type Currency = Balances; type ForceOrigin = AssetsForceOrigin; - type ClassDeposit = ClassDeposit; - type InstanceDeposit = InstanceDeposit; + type CollectionDeposit = CollectionDeposit; + type ItemDeposit = ItemDeposit; type MetadataDepositBase = UniquesMetadataDepositBase; type AttributeDepositBase = AttributeDepositBase; type DepositPerByte = DepositPerByte; diff --git a/polkadot-parachains/statemine/src/weights/pallet_uniques.rs b/polkadot-parachains/statemine/src/weights/pallet_uniques.rs index 2dd398592e..781905e2c7 100644 --- a/polkadot-parachains/statemine/src/weights/pallet_uniques.rs +++ b/polkadot-parachains/statemine/src/weights/pallet_uniques.rs @@ -130,13 +130,13 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) - fn freeze_class() -> Weight { + fn freeze_collection() -> Weight { (13_243_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) - fn thaw_class() -> Weight { + fn thaw_collection() -> Weight { (12_996_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -157,7 +157,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) - fn force_asset_status() -> Weight { + fn force_item_status() -> Weight { (16_719_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) @@ -194,14 +194,14 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) - fn set_class_metadata() -> Weight { + fn set_collection_metadata() -> Weight { (28_446_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) - fn clear_class_metadata() -> Weight { + fn clear_collection_metadata() -> Weight { (26_425_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) diff --git a/polkadot-parachains/statemint/src/lib.rs b/polkadot-parachains/statemint/src/lib.rs index 5ced35322d..b2e255a402 100644 --- a/polkadot-parachains/statemint/src/lib.rs +++ b/polkadot-parachains/statemint/src/lib.rs @@ -345,10 +345,10 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::set_team { .. }) | Call::Uniques(pallet_uniques::Call::set_metadata { .. }) | Call::Uniques(pallet_uniques::Call::set_attribute { .. }) | - Call::Uniques(pallet_uniques::Call::set_class_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::set_collection_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_attribute { .. }) | - Call::Uniques(pallet_uniques::Call::clear_class_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::clear_collection_metadata { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::AssetManager => matches!( @@ -363,8 +363,8 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::burn { .. }) | Call::Uniques(pallet_uniques::Call::freeze { .. }) | Call::Uniques(pallet_uniques::Call::thaw { .. }) | - Call::Uniques(pallet_uniques::Call::freeze_class { .. }) | - Call::Uniques(pallet_uniques::Call::thaw_class { .. }) | + Call::Uniques(pallet_uniques::Call::freeze_collection { .. }) | + Call::Uniques(pallet_uniques::Call::thaw_collection { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::Collator => matches!( @@ -501,8 +501,8 @@ impl pallet_asset_tx_payment::Config for Runtime { } parameter_types! { - pub const ClassDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class - pub const InstanceDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance + pub const CollectionDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class + pub const ItemDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance pub const KeyLimit: u32 = 32; // Max 32 bytes per key pub const ValueLimit: u32 = 64; // Max 64 bytes per value pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); @@ -513,12 +513,12 @@ parameter_types! { impl pallet_uniques::Config for Runtime { type Event = Event; - type ClassId = u32; - type InstanceId = u32; + type CollectionId = u32; + type ItemId = u32; type Currency = Balances; type ForceOrigin = AssetsForceOrigin; - type ClassDeposit = ClassDeposit; - type InstanceDeposit = InstanceDeposit; + type CollectionDeposit = CollectionDeposit; + type ItemDeposit = ItemDeposit; type MetadataDepositBase = UniquesMetadataDepositBase; type AttributeDepositBase = AttributeDepositBase; type DepositPerByte = DepositPerByte; diff --git a/polkadot-parachains/statemint/src/weights/pallet_uniques.rs b/polkadot-parachains/statemint/src/weights/pallet_uniques.rs index 3b383f96a1..2c9fbadcbe 100644 --- a/polkadot-parachains/statemint/src/weights/pallet_uniques.rs +++ b/polkadot-parachains/statemint/src/weights/pallet_uniques.rs @@ -130,13 +130,13 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) - fn freeze_class() -> Weight { + fn freeze_collection() -> Weight { (13_259_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) - fn thaw_class() -> Weight { + fn thaw_collection() -> Weight { (13_207_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -157,7 +157,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) - fn force_asset_status() -> Weight { + fn force_item_status() -> Weight { (16_812_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) @@ -194,14 +194,14 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) - fn set_class_metadata() -> Weight { + fn set_collection_metadata() -> Weight { (28_613_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) - fn clear_class_metadata() -> Weight { + fn clear_collection_metadata() -> Weight { (26_273_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) diff --git a/polkadot-parachains/westmint/src/lib.rs b/polkadot-parachains/westmint/src/lib.rs index d08224c02d..b777a73c2a 100644 --- a/polkadot-parachains/westmint/src/lib.rs +++ b/polkadot-parachains/westmint/src/lib.rs @@ -339,10 +339,10 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::set_team { .. }) | Call::Uniques(pallet_uniques::Call::set_metadata { .. }) | Call::Uniques(pallet_uniques::Call::set_attribute { .. }) | - Call::Uniques(pallet_uniques::Call::set_class_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::set_collection_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_attribute { .. }) | - Call::Uniques(pallet_uniques::Call::clear_class_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::clear_collection_metadata { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::AssetManager => matches!( @@ -357,8 +357,8 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::burn { .. }) | Call::Uniques(pallet_uniques::Call::freeze { .. }) | Call::Uniques(pallet_uniques::Call::thaw { .. }) | - Call::Uniques(pallet_uniques::Call::freeze_class { .. }) | - Call::Uniques(pallet_uniques::Call::thaw_class { .. }) | + Call::Uniques(pallet_uniques::Call::freeze_collection { .. }) | + Call::Uniques(pallet_uniques::Call::thaw_collection { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::Collator => matches!( @@ -492,8 +492,8 @@ impl pallet_asset_tx_payment::Config for Runtime { } parameter_types! { - pub const ClassDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class - pub const InstanceDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance + pub const CollectionDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class + pub const ItemDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance pub const KeyLimit: u32 = 32; // Max 32 bytes per key pub const ValueLimit: u32 = 64; // Max 64 bytes per value pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); @@ -504,12 +504,12 @@ parameter_types! { impl pallet_uniques::Config for Runtime { type Event = Event; - type ClassId = u32; - type InstanceId = u32; + type CollectionId = u32; + type ItemId = u32; type Currency = Balances; type ForceOrigin = AssetsForceOrigin; - type ClassDeposit = ClassDeposit; - type InstanceDeposit = InstanceDeposit; + type CollectionDeposit = CollectionDeposit; + type ItemDeposit = ItemDeposit; type MetadataDepositBase = UniquesMetadataDepositBase; type AttributeDepositBase = AttributeDepositBase; type DepositPerByte = DepositPerByte; diff --git a/polkadot-parachains/westmint/src/weights/pallet_uniques.rs b/polkadot-parachains/westmint/src/weights/pallet_uniques.rs index a1346573f2..e22f1b826e 100644 --- a/polkadot-parachains/westmint/src/weights/pallet_uniques.rs +++ b/polkadot-parachains/westmint/src/weights/pallet_uniques.rs @@ -130,13 +130,13 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) - fn freeze_class() -> Weight { + fn freeze_collection() -> Weight { (13_277_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) - fn thaw_class() -> Weight { + fn thaw_collection() -> Weight { (12_984_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -157,7 +157,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) - fn force_asset_status() -> Weight { + fn force_item_status() -> Weight { (16_252_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) @@ -194,14 +194,14 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) - fn set_class_metadata() -> Weight { + fn set_collection_metadata() -> Weight { (28_141_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) - fn clear_class_metadata() -> Weight { + fn clear_collection_metadata() -> Weight { (26_122_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) From 8e0f82cd737bfb734d872758745d4aa9ab429089 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 17 May 2022 03:12:13 -0400 Subject: [PATCH 052/238] Companion for Polkadot #5536 (Remove Duplicate Traits) (#1264) * change deps * update lockfile for {"polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 162 ++++++++++++------------- parachain-template/node/src/command.rs | 3 +- polkadot-parachains/src/command.rs | 3 +- 3 files changed, 83 insertions(+), 85 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dc2c91e11f..edd07dd33d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -701,7 +701,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-runtime", "finality-grandpa", @@ -718,7 +718,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-runtime", "frame-support", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "bp-runtime", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-messages", "bp-runtime", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -782,7 +782,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "hash-db", @@ -800,7 +800,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -830,7 +830,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -3927,7 +3927,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-primitives", "bitvec", @@ -4020,7 +4020,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "polkadot-primitives", @@ -4921,7 +4921,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5580,7 +5580,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5597,7 +5597,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5619,7 +5619,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "bp-message-dispatch", @@ -6441,7 +6441,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "frame-system", @@ -6459,7 +6459,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6972,7 +6972,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6987,7 +6987,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7001,7 +7001,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "derive_more", "fatality", @@ -7024,7 +7024,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "fatality", "futures 0.3.21", @@ -7045,7 +7045,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7070,7 +7070,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7110,7 +7110,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "always-assert", "fatality", @@ -7131,7 +7131,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7144,7 +7144,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "derive_more", "fatality", @@ -7167,7 +7167,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7181,7 +7181,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7201,7 +7201,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "always-assert", "async-trait", @@ -7222,7 +7222,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7240,7 +7240,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "derive_more", @@ -7269,7 +7269,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "futures 0.3.21", @@ -7289,7 +7289,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "fatality", @@ -7308,7 +7308,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7323,7 +7323,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7341,7 +7341,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7356,7 +7356,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7373,7 +7373,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "fatality", "futures 0.3.21", @@ -7392,7 +7392,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7409,7 +7409,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "fatality", @@ -7427,7 +7427,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "always-assert", "assert_matches", @@ -7457,7 +7457,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7473,7 +7473,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7491,7 +7491,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-std", "lazy_static", @@ -7509,7 +7509,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bs58", "futures 0.3.21", @@ -7528,7 +7528,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "derive_more", @@ -7548,7 +7548,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7570,7 +7570,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7580,7 +7580,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7598,7 +7598,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "derive_more", "futures 0.3.21", @@ -7617,7 +7617,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "derive_more", @@ -7650,7 +7650,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7671,7 +7671,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7688,7 +7688,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "expander 0.0.6", "petgraph", @@ -7701,7 +7701,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "derive_more", "frame-support", @@ -7795,7 +7795,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7810,7 +7810,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitvec", "frame-system", @@ -7840,7 +7840,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7872,7 +7872,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-primitives", "bitvec", @@ -7958,7 +7958,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-primitives", "bitvec", @@ -8005,7 +8005,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "polkadot-primitives", @@ -8017,7 +8017,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bs58", "parity-scale-codec", @@ -8029,7 +8029,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "bitflags", "bitvec", @@ -8072,7 +8072,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "async-trait", "beefy-gadget", @@ -8175,7 +8175,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8196,7 +8196,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8206,7 +8206,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8231,7 +8231,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-primitives", "bitvec", @@ -8293,7 +8293,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-benchmarking", "frame-system", @@ -9032,7 +9032,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9109,7 +9109,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "polkadot-primitives", @@ -10763,7 +10763,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "enumn", "parity-scale-codec", @@ -12050,7 +12050,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "polkadot-primitives", @@ -12339,7 +12339,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12350,7 +12350,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -13063,7 +13063,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "beefy-primitives", "bitvec", @@ -13152,7 +13152,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "polkadot-primitives", @@ -13393,7 +13393,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13406,7 +13406,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-support", "frame-system", @@ -13426,7 +13426,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "frame-benchmarking", "frame-support", @@ -13444,7 +13444,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3161228f2993a4cc30658bf31f00d603b4da75e5" +source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index 4b8db2e250..e697e4ad1f 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -9,7 +9,6 @@ use cumulus_primitives_core::ParaId; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; use parachain_template_runtime::{Block, RuntimeApi}; -use polkadot_parachain::primitives::AccountIdConversion; use sc_cli::{ ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result, RuntimeVersion, SharedParams, SubstrateCli, @@ -19,7 +18,7 @@ use sc_service::{ TaskManager, }; use sp_core::hexdisplay::HexDisplay; -use sp_runtime::traits::Block as BlockT; +use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; use std::{io::Write, net::SocketAddr}; fn load_spec(id: &str) -> std::result::Result, String> { diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 62530a76a2..29d998980a 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -28,7 +28,6 @@ use cumulus_primitives_core::ParaId; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; use parachains_common::{AuraId, StatemintAuraId}; -use polkadot_parachain::primitives::AccountIdConversion; use sc_cli::{ ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result, RuntimeVersion, SharedParams, SubstrateCli, @@ -38,7 +37,7 @@ use sc_service::{ TaskManager, }; use sp_core::hexdisplay::HexDisplay; -use sp_runtime::traits::Block as BlockT; +use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; use std::{io::Write, net::SocketAddr}; trait IdentifyChain { From 7158f357bc8440327a31e617292cc28f18db1cec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 May 2022 22:14:05 +0200 Subject: [PATCH 053/238] Bump jsonrpsee from 0.13.0 to 0.13.1 (#1263) Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.13.0 to 0.13.1. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.13.0...v0.13.1) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++----------- client/relay-chain-rpc-interface/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachains/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index edd07dd33d..c5be369974 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3772,9 +3772,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae63f7fdeb51700b35e9b28bf92e8d233951590968c186ed79510b6c12fa3d9" +checksum = "a1f2ab5a60e558e74ea93bcf5164ebc47939a7fff8938fa9b5233bbc63e16061" dependencies = [ "jsonrpsee-core", "jsonrpsee-http-server", @@ -3787,9 +3787,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32feb1f2f0b5ce37a03b96a988a6dadccc3f529a2f930356bac93f13c09cf385" +checksum = "26d682f4a55081a2be3e639280c640523070e4aeb8ee2fd8dd9168fdae57a9db" dependencies = [ "futures-util", "http", @@ -3835,9 +3835,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-server" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34f1090bdc8f7f14ad8811fc84501867c23a9046ce79d49c0cd929a256c501e" +checksum = "7178f16eabd7154c094e24d295b9ee355ec1e5f24c328759c56255ff7bbd4548" dependencies = [ "futures-channel", "futures-util", @@ -3854,9 +3854,9 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8dc7a8b629e371cd5ca9d128883763ae00c5b63158ace4a6a61345726a21b7" +checksum = "8b8d7f449cab3b747f12c3efc27f5cad537f3b597c6a3838b0fac628f4bf730a" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3880,9 +3880,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d75df866743c9733b3e2f5421e56df2f5b4630f7de39f82c44eaab350604926" +checksum = "76f15180afb3761c7a3a32c0a8b680788176dcfdfe725b24c1758c90b1d1595b" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -3891,9 +3891,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-server" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099971913436e7f6b1bc80180d4e5f014ec944660636da45d2f372c23d6308c3" +checksum = "dfb6c21556c551582b56e4e8e6e6249b0bbdb69bb7fa39efe9b9a6b54af9f206" dependencies = [ "futures-channel", "futures-util", diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 0905450bee..cbb364c50b 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -23,7 +23,7 @@ futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.2" parking_lot = "0.12.0" -jsonrpsee = { version = "0.13.0", features = ["ws-client"] } +jsonrpsee = { version = "0.13.1", features = ["ws-client"] } tracing = "0.1.34" async-trait = "0.1.53" url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index f2ef5a5c6c..f4ccbe786f 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -20,7 +20,7 @@ log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.137", features = ["derive"] } hex-literal = "0.3.4" -jsonrpsee = { version = "0.13.0", features = ["server"] } +jsonrpsee = { version = "0.13.1", features = ["server"] } # Local parachain-template-runtime = { path = "../runtime" } diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 619d524bc5..14bdc7bd91 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -27,7 +27,7 @@ statemint-runtime = { path = "statemint" } statemine-runtime = { path = "statemine" } westmint-runtime = { path = "westmint" } canvas-kusama-runtime = { path = "canvas-kusama" } -jsonrpsee = { version = "0.13.0", features = ["server"] } +jsonrpsee = { version = "0.13.1", features = ["server"] } parachains-common = { path = "parachains-common" } # Substrate diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 2026be0758..0008b0f13a 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" async-trait = "0.1.53" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } -jsonrpsee = { version = "0.13.0", features = ["server"] } +jsonrpsee = { version = "0.13.1", features = ["server"] } parking_lot = "0.12.0" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } From 2228c57b5cd666f78e460aeef0ce10d3099e5f88 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 17 May 2022 18:29:38 -0400 Subject: [PATCH 054/238] Companion for Substrate #10719 (Into Account Truncating) (#1262) * into account truncating * more truncating * Update Cargo.lock --- Cargo.lock | 647 +++++++++++-------------- pallets/collator-selection/src/lib.rs | 2 +- parachain-template/node/src/command.rs | 2 +- polkadot-parachains/src/command.rs | 2 +- 4 files changed, 294 insertions(+), 359 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c5be369974..5e7d3395d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -582,17 +582,6 @@ dependencies = [ "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 = "blake2b_simd" version = "1.0.0" @@ -701,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-runtime", "finality-grandpa", @@ -718,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-runtime", "frame-support", @@ -730,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "bp-runtime", @@ -747,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-messages", "bp-runtime", @@ -765,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -782,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "hash-db", @@ -800,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -815,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -830,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1210,6 +1199,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "comfy-table" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b103d85ca6e209388771bfb7aa6b68a7aeec4afbf6f0a0264bfbf50360e5212e" +dependencies = [ + "strum 0.23.0", + "strum_macros 0.23.1", + "unicode-width", +] + [[package]] name = "concurrent-queue" version = "1.2.2" @@ -2398,17 +2398,6 @@ dependencies = [ "dirs-sys-next", ] -[[package]] -name = "dirs" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" -dependencies = [ - "libc", - "redox_users 0.3.5", - "winapi", -] - [[package]] name = "dirs-sys" version = "0.3.6" @@ -2416,7 +2405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", - "redox_users 0.4.0", + "redox_users", "winapi", ] @@ -2427,7 +2416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.4.0", + "redox_users", "winapi", ] @@ -2545,12 +2534,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - [[package]] name = "enum-as-inner" version = "0.4.0" @@ -2818,7 +2801,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", ] @@ -2836,7 +2819,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -2858,11 +2841,12 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "Inflector", "chrono", "clap 3.1.18", + "comfy-table", "frame-benchmarking", "frame-support", "frame-system", @@ -2876,7 +2860,6 @@ dependencies = [ "log", "memory-db", "parity-scale-codec", - "prettytable-rs", "rand 0.8.5", "rand_pcg 0.3.1", "sc-block-builder", @@ -2908,7 +2891,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2919,7 +2902,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2935,7 +2918,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -2963,7 +2946,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "bitflags", "frame-metadata", @@ -2993,7 +2976,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3005,7 +2988,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3017,7 +3000,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro2", "quote", @@ -3027,7 +3010,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "log", @@ -3044,7 +3027,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -3059,7 +3042,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "sp-api", @@ -3068,7 +3051,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "sp-api", @@ -3927,7 +3910,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-primitives", "bitvec", @@ -4020,7 +4003,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "polkadot-primitives", @@ -4921,7 +4904,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5024,7 +5007,7 @@ version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689" dependencies = [ - "blake2b_simd 1.0.0", + "blake2b_simd", "blake2s_simd", "blake3", "core2", @@ -5386,7 +5369,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -5403,7 +5386,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5417,7 +5400,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -5433,7 +5416,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -5449,7 +5432,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -5464,7 +5447,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5488,7 +5471,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5508,7 +5491,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5523,7 +5506,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "beefy-primitives", "frame-support", @@ -5539,7 +5522,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5562,7 +5545,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5580,7 +5563,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5597,7 +5580,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5619,7 +5602,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5640,7 +5623,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5685,7 +5668,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5702,7 +5685,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "bitflags", "frame-benchmarking", @@ -5729,7 +5712,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "bitflags", "parity-scale-codec", @@ -5744,7 +5727,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro2", "quote", @@ -5754,7 +5737,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5771,7 +5754,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5784,7 +5767,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5800,7 +5783,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5823,7 +5806,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5836,7 +5819,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5854,7 +5837,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5852,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5892,7 +5875,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5908,7 +5891,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5928,7 +5911,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5945,7 +5928,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5962,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5980,7 +5963,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5995,7 +5978,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6010,7 +5993,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6024,7 +6007,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6040,7 +6023,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6059,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6076,7 +6059,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6099,7 +6082,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6115,7 +6098,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6130,7 +6113,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6127,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6159,7 +6142,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6175,7 +6158,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6196,7 +6179,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6212,7 +6195,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6226,7 +6209,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6249,7 +6232,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6260,7 +6243,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "sp-arithmetic", @@ -6269,7 +6252,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6298,7 +6281,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6316,7 +6299,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6335,7 +6318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-support", "frame-system", @@ -6352,7 +6335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6367,7 +6350,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6378,7 +6361,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6395,7 +6378,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6410,7 +6393,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6426,7 +6409,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6441,7 +6424,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "frame-system", @@ -6459,7 +6442,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-benchmarking", "frame-support", @@ -6764,7 +6747,7 @@ dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.2.10", + "redox_syscall", "smallvec", "winapi", ] @@ -6777,7 +6760,7 @@ checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.10", + "redox_syscall", "smallvec", "windows-sys", ] @@ -6972,7 +6955,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6987,7 +6970,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7001,7 +6984,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "derive_more", "fatality", @@ -7024,7 +7007,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "fatality", "futures 0.3.21", @@ -7045,7 +7028,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7070,7 +7053,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7110,7 +7093,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "always-assert", "fatality", @@ -7131,7 +7114,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7144,7 +7127,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "derive_more", "fatality", @@ -7167,7 +7150,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7181,7 +7164,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7201,7 +7184,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "always-assert", "async-trait", @@ -7222,7 +7205,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7240,7 +7223,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "derive_more", @@ -7269,7 +7252,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "futures 0.3.21", @@ -7289,7 +7272,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "fatality", @@ -7308,7 +7291,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7323,7 +7306,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "futures 0.3.21", @@ -7341,7 +7324,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7356,7 +7339,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7373,7 +7356,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "fatality", "futures 0.3.21", @@ -7392,7 +7375,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "futures 0.3.21", @@ -7409,7 +7392,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "fatality", @@ -7427,7 +7410,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "always-assert", "assert_matches", @@ -7457,7 +7440,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7473,7 +7456,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7491,7 +7474,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-std", "lazy_static", @@ -7509,7 +7492,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bs58", "futures 0.3.21", @@ -7528,7 +7511,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "derive_more", @@ -7548,7 +7531,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7570,7 +7553,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7580,7 +7563,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "futures 0.3.21", @@ -7598,7 +7581,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "derive_more", "futures 0.3.21", @@ -7617,7 +7600,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "derive_more", @@ -7650,7 +7633,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7671,7 +7654,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "futures 0.3.21", @@ -7688,7 +7671,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "expander 0.0.6", "petgraph", @@ -7701,7 +7684,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "derive_more", "frame-support", @@ -7795,7 +7778,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7810,7 +7793,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitvec", "frame-system", @@ -7840,7 +7823,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7872,7 +7855,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-primitives", "bitvec", @@ -7958,7 +7941,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-primitives", "bitvec", @@ -8005,7 +7988,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "polkadot-primitives", @@ -8017,7 +8000,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bs58", "parity-scale-codec", @@ -8029,7 +8012,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "bitflags", "bitvec", @@ -8072,7 +8055,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "async-trait", "beefy-gadget", @@ -8175,7 +8158,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8196,7 +8179,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8206,7 +8189,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8231,7 +8214,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-primitives", "bitvec", @@ -8293,7 +8276,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-benchmarking", "frame-system", @@ -8422,20 +8405,6 @@ dependencies = [ "termtree", ] -[[package]] -name = "prettytable-rs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" -dependencies = [ - "atty", - "csv", - "encode_unicode", - "lazy_static", - "term", - "unicode-width", -] - [[package]] name = "primitive-types" version = "0.11.1" @@ -8485,11 +8454,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" +checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -8783,12 +8752,6 @@ dependencies = [ "num_cpus", ] -[[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.10" @@ -8798,17 +8761,6 @@ 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" @@ -8816,7 +8768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ "getrandom 0.2.3", - "redox_syscall 0.2.10", + "redox_syscall", ] [[package]] @@ -8904,7 +8856,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9032,7 +8984,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9109,7 +9061,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "polkadot-primitives", @@ -9143,18 +9095,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64", - "blake2b_simd 0.5.11", - "constant_time_eq", - "crossbeam-utils", -] - [[package]] name = "rustc-demangle" version = "0.1.21" @@ -9316,7 +9256,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "sp-core", @@ -9327,7 +9267,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9354,7 +9294,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9377,7 +9317,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9393,7 +9333,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9410,7 +9350,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9421,7 +9361,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "chrono", "clap 3.1.18", @@ -9460,7 +9400,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "fnv", "futures 0.3.21", @@ -9488,7 +9428,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "hash-db", "kvdb", @@ -9513,7 +9453,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9537,7 +9477,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9566,7 +9506,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "fork-tree", @@ -9609,7 +9549,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9631,7 +9571,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9644,7 +9584,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9669,7 +9609,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "sc-client-api", "sp-authorship", @@ -9680,7 +9620,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9707,7 +9647,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "environmental", "parity-scale-codec", @@ -9724,7 +9664,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "parity-scale-codec", @@ -9739,7 +9679,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9757,7 +9697,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "ahash", "async-trait", @@ -9797,7 +9737,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9818,7 +9758,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9835,7 +9775,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "hex", @@ -9850,7 +9790,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "asynchronous-codec", @@ -9902,7 +9842,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "libp2p", @@ -9915,7 +9855,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "ahash", "futures 0.3.21", @@ -9932,7 +9872,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "libp2p", @@ -9952,7 +9892,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "bitflags", "either", @@ -9981,7 +9921,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "bytes", "fnv", @@ -10009,7 +9949,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "libp2p", @@ -10022,7 +9962,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10031,7 +9971,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "hash-db", @@ -10061,7 +10001,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10084,7 +10024,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10097,7 +10037,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "directories", @@ -10162,7 +10102,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "parity-scale-codec", @@ -10176,7 +10116,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10195,7 +10135,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "libc", @@ -10214,7 +10154,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "chrono", "futures 0.3.21", @@ -10232,7 +10172,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "ansi_term", "atty", @@ -10263,7 +10203,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10274,7 +10214,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10301,7 +10241,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "log", @@ -10314,7 +10254,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10763,7 +10703,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "enumn", "parity-scale-codec", @@ -10839,7 +10779,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "hash-db", "log", @@ -10856,7 +10796,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "blake2", "proc-macro-crate", @@ -10868,7 +10808,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -10881,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "integer-sqrt", "num-traits", @@ -10896,7 +10836,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -10909,7 +10849,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "parity-scale-codec", @@ -10921,7 +10861,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "sp-api", @@ -10933,7 +10873,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "log", @@ -10951,7 +10891,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -10970,7 +10910,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "parity-scale-codec", @@ -10988,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "merlin", @@ -11011,7 +10951,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11025,7 +10965,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11038,7 +10978,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "base58", "bitflags", @@ -11084,7 +11024,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "blake2", "byteorder", @@ -11098,7 +11038,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro2", "quote", @@ -11109,7 +11049,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11118,7 +11058,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro2", "quote", @@ -11128,7 +11068,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "environmental", "parity-scale-codec", @@ -11139,7 +11079,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "finality-grandpa", "log", @@ -11157,7 +11097,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11171,7 +11111,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "hash-db", @@ -11196,7 +11136,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "lazy_static", "sp-core", @@ -11207,7 +11147,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -11224,7 +11164,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "thiserror", "zstd", @@ -11233,7 +11173,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "parity-scale-codec", @@ -11248,7 +11188,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11262,7 +11202,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "sp-api", "sp-core", @@ -11272,7 +11212,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "backtrace", "lazy_static", @@ -11282,7 +11222,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "rustc-hash", "serde", @@ -11292,7 +11232,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "either", "hash256-std-hasher", @@ -11314,7 +11254,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11331,7 +11271,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "Inflector", "proc-macro-crate", @@ -11343,7 +11283,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "parity-scale-codec", @@ -11357,7 +11297,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "serde", "serde_json", @@ -11366,7 +11306,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11380,7 +11320,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11391,7 +11331,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "hash-db", "log", @@ -11413,12 +11353,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11431,7 +11371,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "log", "sp-core", @@ -11444,7 +11384,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures-timer", @@ -11460,7 +11400,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "sp-std", @@ -11472,7 +11412,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "sp-api", "sp-runtime", @@ -11481,7 +11421,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "log", @@ -11497,7 +11437,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "hash-db", "memory-db", @@ -11513,7 +11453,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11530,7 +11470,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11541,7 +11481,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "impl-trait-for-tuples", "log", @@ -11822,7 +11762,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "platforms", ] @@ -11830,7 +11770,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11851,7 +11791,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures-util", "hyper", @@ -11864,7 +11804,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "jsonrpsee", "log", @@ -11885,7 +11825,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "async-trait", "futures 0.3.21", @@ -11911,7 +11851,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11921,7 +11861,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11932,7 +11872,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "ansi_term", "build-helper", @@ -11953,13 +11893,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a" +checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -12016,22 +11956,11 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "libc", - "redox_syscall 0.2.10", + "redox_syscall", "remove_dir_all", "winapi", ] -[[package]] -name = "term" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" -dependencies = [ - "byteorder", - "dirs", - "winapi", -] - [[package]] name = "termcolor" version = "1.1.2" @@ -12050,7 +11979,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "polkadot-primitives", @@ -12339,7 +12268,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12350,7 +12279,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12479,7 +12408,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#5d3e7c4ee9f5c8e370022d5f3fa9723185710831" +source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12558,6 +12487,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +[[package]] +name = "unicode-ident" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" + [[package]] name = "unicode-normalization" version = "0.1.19" @@ -13063,7 +12998,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "beefy-primitives", "bitvec", @@ -13152,7 +13087,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "polkadot-primitives", @@ -13393,7 +13328,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13406,7 +13341,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-support", "frame-system", @@ -13426,7 +13361,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "frame-benchmarking", "frame-support", @@ -13444,7 +13379,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#21323b7d2e3c19e149d2f24b51c7bada4782a0c5" +source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" dependencies = [ "Inflector", "proc-macro2", diff --git a/pallets/collator-selection/src/lib.rs b/pallets/collator-selection/src/lib.rs index fab70a3d0d..717fbc2dda 100644 --- a/pallets/collator-selection/src/lib.rs +++ b/pallets/collator-selection/src/lib.rs @@ -407,7 +407,7 @@ pub mod pallet { impl Pallet { /// Get a unique, inaccessible account id from the `PotId`. pub fn account_id() -> T::AccountId { - T::PotId::get().into_account() + T::PotId::get().into_account_truncating() } /// Removes a candidate if they exist and sends them back their deposit diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index e697e4ad1f..7e011cac09 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -308,7 +308,7 @@ pub fn run() -> Result<()> { let id = ParaId::from(para_id); let parachain_account = - AccountIdConversion::::into_account(&id); + AccountIdConversion::::into_account_truncating(&id); let state_version = RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 29d998980a..7e259d9698 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -566,7 +566,7 @@ pub fn run() -> Result<()> { let id = ParaId::from(para_id); let parachain_account = - AccountIdConversion::::into_account(&id); + AccountIdConversion::::into_account_truncating(&id); let state_version = RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); From b98a9a003299307c97475da6be3d42def9481054 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 May 2022 08:56:25 +0200 Subject: [PATCH 055/238] Bump proc-macro2 from 1.0.38 to 1.0.39 (#1268) Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.38 to 1.0.39. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.38...1.0.39) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index eb8ea5487a..7ac06a1b6e 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -10,7 +10,7 @@ proc-macro = true [dependencies] syn = "1.0.94" -proc-macro2 = "1.0.38" +proc-macro2 = "1.0.39" quote = "1.0.18" proc-macro-crate = "1.1.3" From a5bfd11b5f16abde954bf204ad2de70424de0f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Thei=C3=9Fen?= Date: Wed, 18 May 2022 10:48:31 +0200 Subject: [PATCH 056/238] Companion for bounded contracts storage (#1261) * Companion for bounded contracts storage * Add missing import * update lockfile for {"substrate"} * bump polkadot Co-authored-by: parity-processbot <> --- Cargo.lock | 617 ++++++++---------- .../canvas-kusama/src/contracts.rs | 4 +- 2 files changed, 278 insertions(+), 343 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e7d3395d6..0089b521ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1540,15 +1540,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ct-logs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" -dependencies = [ - "sct 0.6.1", -] - [[package]] name = "ctor" version = "0.1.21" @@ -2801,7 +2792,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", ] @@ -2819,7 +2810,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -2841,7 +2832,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "Inflector", "chrono", @@ -2891,7 +2882,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2902,7 +2893,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2918,7 +2909,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -2946,7 +2937,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "bitflags", "frame-metadata", @@ -2976,7 +2967,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2988,7 +2979,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3000,7 +2991,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro2", "quote", @@ -3010,7 +3001,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "log", @@ -3027,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -3042,7 +3033,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "sp-api", @@ -3051,7 +3042,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "sp-api", @@ -3187,8 +3178,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01fe9932a224b72b45336d96040aa86386d674a31d0af27d800ea7bc8ca97fe" dependencies = [ "futures-io", - "rustls 0.20.2", - "webpki 0.22.0", + "rustls", + "webpki", ] [[package]] @@ -3566,19 +3557,17 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" dependencies = [ - "ct-logs", - "futures-util", + "http", "hyper", "log", - "rustls 0.19.1", - "rustls-native-certs 0.5.0", + "rustls", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", - "webpki 0.21.4", + "tokio-rustls", ] [[package]] @@ -3779,11 +3768,11 @@ dependencies = [ "jsonrpsee-core", "jsonrpsee-types", "pin-project 1.0.10", - "rustls-native-certs 0.6.1", + "rustls-native-certs", "soketto", "thiserror", "tokio", - "tokio-rustls 0.23.2", + "tokio-rustls", "tokio-util 0.7.1", "tracing", "webpki-roots", @@ -3910,7 +3899,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-primitives", "bitvec", @@ -4003,7 +3992,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "polkadot-primitives", @@ -4904,7 +4893,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5369,7 +5358,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "frame-support", "frame-system", @@ -5386,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "frame-benchmarking", "frame-support", @@ -5400,7 +5389,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "frame-support", "frame-system", @@ -5416,7 +5405,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -5432,7 +5421,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -5447,7 +5436,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5471,7 +5460,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5491,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5506,7 +5495,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "beefy-primitives", "frame-support", @@ -5522,7 +5511,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5545,7 +5534,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5563,7 +5552,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5580,7 +5569,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5602,7 +5591,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5623,7 +5612,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5668,7 +5657,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5685,7 +5674,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "bitflags", "frame-benchmarking", @@ -5712,7 +5701,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "bitflags", "parity-scale-codec", @@ -5727,7 +5716,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "proc-macro2", "quote", @@ -5737,7 +5726,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5754,7 +5743,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5767,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5783,7 +5772,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5806,7 +5795,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5819,7 +5808,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5837,7 +5826,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5852,7 +5841,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5875,7 +5864,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5891,7 +5880,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5911,7 +5900,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5928,7 +5917,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5945,7 +5934,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5963,7 +5952,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5978,7 +5967,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5993,7 +5982,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6007,7 +5996,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6023,7 +6012,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6042,7 +6031,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6059,7 +6048,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6082,7 +6071,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6098,7 +6087,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6113,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "frame-support", "frame-system", @@ -6127,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6142,7 +6131,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6158,7 +6147,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6179,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6195,7 +6184,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6209,7 +6198,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6232,7 +6221,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6243,7 +6232,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "sp-arithmetic", @@ -6252,7 +6241,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6281,7 +6270,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6299,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6318,7 +6307,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-support", "frame-system", @@ -6335,7 +6324,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6350,7 +6339,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6361,7 +6350,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6378,7 +6367,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6393,7 +6382,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6409,7 +6398,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-benchmarking", "frame-support", @@ -6424,7 +6413,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "frame-system", @@ -6442,7 +6431,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-benchmarking", "frame-support", @@ -6955,7 +6944,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6970,7 +6959,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6984,7 +6973,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "derive_more", "fatality", @@ -7007,7 +6996,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "fatality", "futures 0.3.21", @@ -7028,7 +7017,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7053,7 +7042,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7093,7 +7082,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "always-assert", "fatality", @@ -7114,7 +7103,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7127,7 +7116,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "derive_more", "fatality", @@ -7150,7 +7139,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7164,7 +7153,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7184,7 +7173,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "always-assert", "async-trait", @@ -7205,7 +7194,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7223,7 +7212,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "derive_more", @@ -7252,7 +7241,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "futures 0.3.21", @@ -7272,7 +7261,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "fatality", @@ -7291,7 +7280,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7306,7 +7295,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "futures 0.3.21", @@ -7324,7 +7313,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7339,7 +7328,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7356,7 +7345,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "fatality", "futures 0.3.21", @@ -7375,7 +7364,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "futures 0.3.21", @@ -7392,7 +7381,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "fatality", @@ -7410,7 +7399,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "always-assert", "assert_matches", @@ -7440,7 +7429,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7456,7 +7445,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7474,7 +7463,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-std", "lazy_static", @@ -7492,7 +7481,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bs58", "futures 0.3.21", @@ -7511,7 +7500,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "derive_more", @@ -7531,7 +7520,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7553,7 +7542,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7563,7 +7552,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "futures 0.3.21", @@ -7581,7 +7570,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "derive_more", "futures 0.3.21", @@ -7600,7 +7589,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "derive_more", @@ -7633,7 +7622,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7654,7 +7643,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "futures 0.3.21", @@ -7671,7 +7660,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "expander 0.0.6", "petgraph", @@ -7684,7 +7673,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "derive_more", "frame-support", @@ -7778,7 +7767,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7793,7 +7782,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitvec", "frame-system", @@ -7823,7 +7812,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7855,7 +7844,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-primitives", "bitvec", @@ -7941,7 +7930,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-primitives", "bitvec", @@ -7988,7 +7977,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "polkadot-primitives", @@ -8000,7 +7989,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bs58", "parity-scale-codec", @@ -8012,7 +8001,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "bitflags", "bitvec", @@ -8055,7 +8044,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "async-trait", "beefy-gadget", @@ -8158,7 +8147,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8179,7 +8168,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8189,7 +8178,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8214,7 +8203,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-primitives", "bitvec", @@ -8276,7 +8265,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-benchmarking", "frame-system", @@ -8856,7 +8845,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8984,7 +8973,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9061,7 +9050,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "polkadot-primitives", @@ -9145,19 +9134,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "rustls" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" -dependencies = [ - "base64", - "log", - "ring", - "sct 0.6.1", - "webpki 0.21.4", -] - [[package]] name = "rustls" version = "0.20.2" @@ -9166,20 +9142,8 @@ checksum = "d37e5e2290f3e040b594b1a9e04377c2c671f1a1cfd9bfdef82106ac1c113f84" dependencies = [ "log", "ring", - "sct 0.7.0", - "webpki 0.22.0", -] - -[[package]] -name = "rustls-native-certs" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" -dependencies = [ - "openssl-probe", - "rustls 0.19.1", - "schannel", - "security-framework", + "sct", + "webpki", ] [[package]] @@ -9256,7 +9220,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "sp-core", @@ -9267,7 +9231,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures 0.3.21", @@ -9294,7 +9258,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9317,7 +9281,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9333,7 +9297,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9350,7 +9314,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9361,7 +9325,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "chrono", "clap 3.1.18", @@ -9400,7 +9364,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "fnv", "futures 0.3.21", @@ -9428,7 +9392,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "hash-db", "kvdb", @@ -9453,7 +9417,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures 0.3.21", @@ -9477,7 +9441,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "async-trait", "futures 0.3.21", @@ -9506,7 +9470,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "fork-tree", @@ -9549,7 +9513,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9571,7 +9535,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9584,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures 0.3.21", @@ -9609,7 +9573,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "sc-client-api", "sp-authorship", @@ -9620,7 +9584,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9647,7 +9611,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "environmental", "parity-scale-codec", @@ -9664,7 +9628,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "parity-scale-codec", @@ -9679,7 +9643,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9697,7 +9661,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "ahash", "async-trait", @@ -9737,7 +9701,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9758,7 +9722,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9775,7 +9739,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "hex", @@ -9790,7 +9754,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "asynchronous-codec", @@ -9842,7 +9806,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "libp2p", @@ -9855,7 +9819,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "ahash", "futures 0.3.21", @@ -9872,7 +9836,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "libp2p", @@ -9892,7 +9856,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "bitflags", "either", @@ -9921,7 +9885,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "bytes", "fnv", @@ -9949,7 +9913,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "libp2p", @@ -9962,7 +9926,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9971,7 +9935,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "hash-db", @@ -10001,7 +9965,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10024,7 +9988,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10037,7 +10001,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "directories", @@ -10102,7 +10066,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "parity-scale-codec", @@ -10116,7 +10080,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10135,7 +10099,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "libc", @@ -10154,7 +10118,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "chrono", "futures 0.3.21", @@ -10172,7 +10136,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "ansi_term", "atty", @@ -10203,7 +10167,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10214,7 +10178,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10241,7 +10205,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "log", @@ -10254,7 +10218,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10324,16 +10288,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "sct" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "sct" version = "0.7.0" @@ -10703,7 +10657,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "enumn", "parity-scale-codec", @@ -10779,7 +10733,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "hash-db", "log", @@ -10796,7 +10750,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "blake2", "proc-macro-crate", @@ -10808,7 +10762,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -10821,7 +10775,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "integer-sqrt", "num-traits", @@ -10836,7 +10790,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -10849,7 +10803,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "parity-scale-codec", @@ -10861,7 +10815,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "sp-api", @@ -10873,7 +10827,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "log", @@ -10891,7 +10845,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures 0.3.21", @@ -10910,7 +10864,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "async-trait", "parity-scale-codec", @@ -10928,7 +10882,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "merlin", @@ -10951,7 +10905,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -10965,7 +10919,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -10978,7 +10932,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "base58", "bitflags", @@ -11024,7 +10978,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "blake2", "byteorder", @@ -11038,7 +10992,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro2", "quote", @@ -11049,7 +11003,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11058,7 +11012,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "proc-macro2", "quote", @@ -11068,7 +11022,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "environmental", "parity-scale-codec", @@ -11079,7 +11033,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "finality-grandpa", "log", @@ -11097,7 +11051,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11111,7 +11065,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures 0.3.21", "hash-db", @@ -11136,7 +11090,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "lazy_static", "sp-core", @@ -11147,7 +11101,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures 0.3.21", @@ -11164,7 +11118,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "thiserror", "zstd", @@ -11173,7 +11127,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "parity-scale-codec", @@ -11188,7 +11142,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -11202,7 +11156,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "sp-api", "sp-core", @@ -11212,7 +11166,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "backtrace", "lazy_static", @@ -11222,7 +11176,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "rustc-hash", "serde", @@ -11232,7 +11186,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "either", "hash256-std-hasher", @@ -11254,7 +11208,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11271,7 +11225,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "Inflector", "proc-macro-crate", @@ -11283,7 +11237,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "parity-scale-codec", @@ -11297,7 +11251,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "serde", "serde_json", @@ -11306,7 +11260,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -11320,7 +11274,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "scale-info", @@ -11331,7 +11285,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "hash-db", "log", @@ -11353,12 +11307,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11371,7 +11325,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "log", "sp-core", @@ -11384,7 +11338,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures-timer", @@ -11400,7 +11354,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "sp-std", @@ -11412,7 +11366,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "sp-api", "sp-runtime", @@ -11421,7 +11375,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "log", @@ -11437,7 +11391,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "hash-db", "memory-db", @@ -11453,7 +11407,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11470,7 +11424,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11481,7 +11435,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "impl-trait-for-tuples", "log", @@ -11762,7 +11716,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "platforms", ] @@ -11770,7 +11724,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11791,7 +11745,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "futures-util", "hyper", @@ -11804,7 +11758,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "jsonrpsee", "log", @@ -11825,7 +11779,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "async-trait", "futures 0.3.21", @@ -11851,7 +11805,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11861,7 +11815,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11872,7 +11826,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "ansi_term", "build-helper", @@ -11979,7 +11933,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "polkadot-primitives", @@ -12157,26 +12111,15 @@ dependencies = [ "syn", ] -[[package]] -name = "tokio-rustls" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" -dependencies = [ - "rustls 0.19.1", - "tokio", - "webpki 0.21.4", -] - [[package]] name = "tokio-rustls" version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a27d5f2b839802bd8267fa19b0530f5a08b9c08cd417976be2a65d130fe1c11b" dependencies = [ - "rustls 0.20.2", + "rustls", "tokio", - "webpki 0.22.0", + "webpki", ] [[package]] @@ -12268,7 +12211,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12279,7 +12222,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12408,7 +12351,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2823dc4de5030aada6032e2ac58f4781f8dbfaf3" +source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12957,16 +12900,6 @@ dependencies = [ "wasm-bindgen", ] -[[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" @@ -12983,7 +12916,7 @@ version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" dependencies = [ - "webpki 0.22.0", + "webpki", ] [[package]] @@ -12998,7 +12931,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "beefy-primitives", "bitvec", @@ -13087,7 +13020,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "polkadot-primitives", @@ -13328,7 +13261,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13341,7 +13274,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-support", "frame-system", @@ -13361,7 +13294,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "frame-benchmarking", "frame-support", @@ -13379,7 +13312,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#03d41438a547756392804a82c1af1a97a8af21ee" +source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" dependencies = [ "Inflector", "proc-macro2", diff --git a/polkadot-parachains/canvas-kusama/src/contracts.rs b/polkadot-parachains/canvas-kusama/src/contracts.rs index 84aa1a0c26..f577e9dc1d 100644 --- a/polkadot-parachains/canvas-kusama/src/contracts.rs +++ b/polkadot-parachains/canvas-kusama/src/contracts.rs @@ -4,7 +4,7 @@ use crate::{ }; use frame_support::{ parameter_types, - traits::{Nothing, OnRuntimeUpgrade}, + traits::{ConstU32, Nothing, OnRuntimeUpgrade}, weights::Weight, }; use pallet_contracts::{ @@ -57,6 +57,8 @@ impl Config for Runtime { type CallStack = [Frame; 31]; type AddressGenerator = DefaultAddressGenerator; type ContractAccessWeight = DefaultContractAccessWeight; + type MaxCodeLen = ConstU32<{ 128 * 1024 }>; + type RelaxedMaxCodeLen = ConstU32<{ 256 * 1024 }>; } pub struct Migrations; From d0e13bc3119505303939862dce600718b2a3e460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 18 May 2022 11:56:34 +0200 Subject: [PATCH 057/238] Rename `canvas` to `contracts` (#1265) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update SVG * Rename `canvas-kusama` folder `contracts-rococo` * Search-Replace `canvas-kusama` with `contracts-rococo` * Search-Replace `canvas_kusama` with `contracts_rococo` * Search-Replace `canvas_rococo` with `contracts_rococo` * Rename `canvas-rococo.json` to `contracts-rococo.json` * Rename `CanvasKusamaChainSpec` to `ContractsRococoChainSpec` * Migrate chain specs and configurations to `contracts-rococo` * Adapt readme * Improve directory structure * Remove last occurrences of `canvas` * Apply `cargo fmt` * Update README.md Co-authored-by: Alexander Theißen * Fix funny indentation * Fix wasm path renaming Co-authored-by: Alexander Theißen Co-authored-by: Wilfried Kopp Co-authored-by: Chevdor --- .github/workflows/release-02_create-draft.yml | 9 +- .github/workflows/srtool.yml | 2 +- Cargo.lock | 134 +++++++++--------- Cargo.toml | 2 +- README.md | 92 +----------- polkadot-parachains/Cargo.toml | 4 +- .../Cargo.toml | 2 +- .../contracts-rococo/README.md | 88 ++++++++++++ .../build.rs | 0 .../contracts-rococo/contracts-overview.svg | 103 +++++--------- .../src/constants.rs | 0 .../src/contracts.rs | 0 .../src/lib.rs | 6 +- .../src/weights/block_weights.rs | 0 .../src/weights/extrinsic_weights.rs | 0 .../src/weights/mod.rs | 0 .../src/weights/paritydb_weights.rs | 0 .../src/weights/rocksdb_weights.rs | 0 .../src/xcm_config.rs | 0 ...nvas-rococo.json => contracts-rococo.json} | 6 +- polkadot-parachains/src/chain_spec.rs | 93 ++++++------ polkadot-parachains/src/command.rs | 41 +++--- polkadot-parachains/src/rpc.rs | 4 +- polkadot-parachains/src/service.rs | 30 ++-- scripts/ci/changelog/bin/changelog | 6 +- 25 files changed, 292 insertions(+), 330 deletions(-) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/Cargo.toml (99%) create mode 100644 polkadot-parachains/contracts-rococo/README.md rename polkadot-parachains/{canvas-kusama => contracts-rococo}/build.rs (100%) rename docs/canvas-overview.svg => polkadot-parachains/contracts-rococo/contracts-overview.svg (96%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/constants.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/contracts.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/lib.rs (99%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/weights/block_weights.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/weights/extrinsic_weights.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/weights/mod.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/weights/paritydb_weights.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/weights/rocksdb_weights.rs (100%) rename polkadot-parachains/{canvas-kusama => contracts-rococo}/src/xcm_config.rs (100%) rename polkadot-parachains/res/{canvas-rococo.json => contracts-rococo.json} (99%) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index c6ab7c19ad..f189d5e266 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "canvas-kusama"] + runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "contracts-rococo"] steps: - name: Checkout sources uses: actions/checkout@v3 @@ -135,7 +135,7 @@ jobs: STATEMINE_DIGEST: ${{ github.workspace}}/statemine-srtool-json/statemine-srtool-digest.json STATEMINT_DIGEST: ${{ github.workspace}}/statemint-srtool-json/statemint-srtool-digest.json ROCOCO_PARA_DIGEST: ${{ github.workspace}}/rococo-parachain-srtool-json/rococo-parachain-srtool-digest.json - CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/canvas-kusama-srtool-json/canvas-kusama-srtool-digest.json + CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/contracts-rococo-srtool-json/contracts-rococo-srtool-digest.json REF1: ${{ github.event.inputs.ref1 }} REF2: ${{ github.event.inputs.ref2 }} PRE_RELEASE: ${{ github.event.inputs.pre_release }} @@ -191,7 +191,7 @@ jobs: RUNTIME_DIR: polkadot-parachains strategy: matrix: - runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "canvas-kusama"] + runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "contracts-rococo"] steps: - name: Checkout sources uses: actions/checkout@v3 @@ -221,8 +221,7 @@ jobs: id: fix-runtime-path run: | cd "${{ matrix.runtime }}-runtime/" - mv "$(sed 's/-parachain/_parachain/' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true - mv "$(sed 's/-kusama/_kusama/' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true + mv "$(sed -E 's/-(.*)/_\1/' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true - name: Upload compressed ${{ matrix.runtime }} wasm uses: actions/upload-release-asset@v1 diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index 52a1e656ed..42fdde095c 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - chain: ["statemine", "westmint", "statemint", "rococo-parachain", "shell", "canvas-kusama"] + chain: ["statemine", "westmint", "statemint", "rococo-parachain", "shell", "contracts-rococo"] steps: - uses: actions/checkout@v3 with: diff --git a/Cargo.lock b/Cargo.lock index 0089b521ff..e54e8a58e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -924,72 +924,6 @@ dependencies = [ "serde", ] -[[package]] -name = "canvas-kusama-runtime" -version = "0.2.0" -dependencies = [ - "cumulus-pallet-aura-ext", - "cumulus-pallet-dmp-queue", - "cumulus-pallet-parachain-system", - "cumulus-pallet-session-benchmarking", - "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", - "frame-try-runtime", - "hex-literal", - "kusama-runtime-constants", - "log", - "pallet-aura", - "pallet-authorship", - "pallet-balances", - "pallet-collator-selection", - "pallet-contracts", - "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", - "pallet-multisig", - "pallet-randomness-collective-flip", - "pallet-session", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-utility", - "pallet-xcm", - "parachain-info", - "parachains-common", - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain 0.9.22", - "polkadot-runtime-common", - "scale-info", - "serde", - "smallvec", - "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 = "cargo-platform" version = "0.1.2" @@ -1231,6 +1165,72 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "contracts-rococo-runtime" +version = "0.2.0" +dependencies = [ + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-session-benchmarking", + "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", + "frame-try-runtime", + "hex-literal", + "kusama-runtime-constants", + "log", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", + "pallet-multisig", + "pallet-randomness-collective-flip", + "pallet-session", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-utility", + "pallet-xcm", + "parachain-info", + "parachains-common", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain 0.9.22", + "polkadot-runtime-common", + "scale-info", + "serde", + "smallvec", + "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 = "convert_case" version = "0.4.0" @@ -7693,8 +7693,8 @@ version = "0.9.190" dependencies = [ "assert_cmd", "async-trait", - "canvas-kusama-runtime", "clap 3.1.18", + "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", diff --git a/Cargo.toml b/Cargo.toml index 31e3db293a..f9a0bcc87a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ members = [ "polkadot-parachains/statemint", "polkadot-parachains/statemine", "polkadot-parachains/westmint", - "polkadot-parachains/canvas-kusama", + "polkadot-parachains/contracts-rococo", "test/client", "test/relay-sproof-builder", "test/relay-validation-worker-provider", diff --git a/README.md b/README.md index da1021e810..58b802077d 100644 --- a/README.md +++ b/README.md @@ -59,95 +59,9 @@ CHAIN=westmint # or statemine Refer to the [setup instructions below](#local-setup) to run a local network for development. -## Canvas 🧑‍🎨 +## Contracts 📝 -[![matrix][k1]][k2] [![discord][l1]][l2] - -[k1]: https://img.shields.io/badge/matrix-chat-brightgreen.svg?style=flat -[k2]: https://riot.im/app/#/room/#ink:matrix.parity.io -[l1]: https://img.shields.io/discord/722223075629727774?style=flat-square&label=discord -[l2]: https://discord.com/invite/wGUDt2p - -This is a node implementation of `Canvas`, a common good parachain for `pallet-contracts` -based wasm smart contracts. Right now this repository only contains the `canvas-kusama` runtime -which we plan to use for both Rococo and Kusama. - -If you have any questions, feel free to talk to us on [Element][k2] or on [Discord][l2] -(in the [`ink_smart-contracts`](https://discord.com/channels/722223075629727774/765280480609828864) channel). - -## Developing Smart Contracts for Canvas - -![Canvas Overview](./docs/canvas-overview.svg) - -This node contains Substrate's smart contracts module ‒ the -[`contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts) pallet. -This `contracts` pallet takes smart contracts as WebAssembly blobs and defines an API -for everything a smart contract needs (storage access, …). -As long as a programming language compiles to WebAssembly and there exists an implementation -of this API in it, you can write a smart contract for this pallet ‒ and thus for Canvas ‒ in -that language. - -This is a list of languages you can currently choose from: - -* [Parity's ink!](https://github.com/paritytech/ink) for Rust -* [ask!](https://github.com/patractlabs/ask) for Assembly Script -* The [Solang](https://github.com/hyperledger-labs/solang) compiler for Solidity - -There are also different user interfaces and command-line tools you can use to deploy -or interact with contracts: - -* [polkadot-js](https://polkadot.js.org/apps/) -* [Canvas UI](https://paritytech.github.io/canvas-ui/) (outdated) - -If you are looking for a quickstart, we can recommend -[ink!'s Guided Tutorial for Beginners](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/). - -### Build & Launch a Node - -To run a Canvas node that connects to Rococo (Kusama and Polkadot parachains are not deployed, yet) -you will need to compile the `polkadot-parachain` binary: - -```bash -cargo build --release --locked -p polkadot-parachain -``` - -Once the executable is built, launch the parachain node via: - -```bash -./target/release/polkadot-parachain --chain rocanvas -``` - -Refer to the [setup instructions below](#local-setup) to run a local network for development. - -### Rococo Deployment - -We have a live deployment of the Canvas parachain on [Rococo](https://wiki.polkadot.network/docs/build-pdk#rococo-testnet) ‒ -a testnet for Polkadot and Kusama parachains. -You can interact with the network through Polkadot JS Apps, -[click here for a direct link to Canvas](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-canvas-rpc.polkadot.io#/explorer). - -The Canvas parachain uses the Rococo relay chain's native token (ROC) instead of having its own token. -Due to this you'll need ROC in order to deploy contracts on Canvas. - -As a first step, you should create an account. See [here](https://wiki.polkadot.network/docs/learn-account-generation) -for a detailed guide. - -As a second step, you have to get ROC testnet tokens through the [Rococo Faucet](https://wiki.polkadot.network/docs/learn-DOT#getting-rococo-tokens). -This is a chat room in which you need to write: - -```bash -!drip YOUR_SS_58_ADDRESS:1002 -``` - -The number `1002` is the parachain id of Canvas on Rococo, by supplying it the faucet will teleport ROC -tokens directly to your account on the parachain. - -If everything worked out, the teleported ROC tokens will show up under -[the "Accounts" tab for Canvas](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-canvas-rpc.polkadot.io#/accounts). - -Once you have ROC on Canvas you can deploy a contract as you would normally. -If you're unsure about this, our [guided tutorial](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/) -will clarify that for you in no time. +See [the `contracts-rococo` readme](polkadot-parachains/contracts-rococo/README.md) for details. ## Rococo 👑 @@ -190,7 +104,7 @@ Once the executable is built, launch collators for each parachain (repeat once e ### Parachains * [Statemint](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-statemint-rpc.polkadot.io#/explorer) -* [Canvas on Rococo](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-canvas-rpc.polkadot.io#/explorer) +* [Contracts on Rococo](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/explorer) * [RILT](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo.kilt.io#/explorer) The network uses horizontal message passing (HRMP) to enable communication between parachains and diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 14bdc7bd91..f1a6e282dd 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -26,8 +26,8 @@ seedling-runtime = { path = "seedling" } statemint-runtime = { path = "statemint" } statemine-runtime = { path = "statemine" } westmint-runtime = { path = "westmint" } -canvas-kusama-runtime = { path = "canvas-kusama" } -jsonrpsee = { version = "0.13.1", features = ["server"] } +contracts-rococo-runtime = { path = "contracts-rococo" } +jsonrpsee = { version = "0.13.0", features = ["server"] } parachains-common = { path = "parachains-common" } # Substrate diff --git a/polkadot-parachains/canvas-kusama/Cargo.toml b/polkadot-parachains/contracts-rococo/Cargo.toml similarity index 99% rename from polkadot-parachains/canvas-kusama/Cargo.toml rename to polkadot-parachains/contracts-rococo/Cargo.toml index 35bc6095e6..1bea26bb98 100644 --- a/polkadot-parachains/canvas-kusama/Cargo.toml +++ b/polkadot-parachains/contracts-rococo/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "canvas-kusama-runtime" +name = "contracts-rococo-runtime" version = "0.2.0" authors = ["Parity Technologies "] edition = "2021" diff --git a/polkadot-parachains/contracts-rococo/README.md b/polkadot-parachains/contracts-rococo/README.md new file mode 100644 index 0000000000..973d84a14b --- /dev/null +++ b/polkadot-parachains/contracts-rococo/README.md @@ -0,0 +1,88 @@ +# Contracts 📝 + +This is a parachain node for smart contracts; it contains a default configuration of +Substrate's module for smart contracts ‒ the [`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts). + +The node is only available on Rococo, a testnet for Polkadot and Kusama parachains. +It has been configured as a common good parachain, as such it uses the Rococo relay +chain's native token `ROC` instead of defining a token of its own. +See the section [Rococo Deployment](#rococo-deployment) below for more details. + +If you have any questions, it's best to ask in the +[Substrate StackExchange](https://substrate.stackexchange.com/). + +## Smart Contracts Development + +![Contracts Overview](./contracts-overview.svg) + +This node contains Substrate's smart contracts module ‒ the +[`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts). +This pallet takes smart contracts as WebAssembly blobs and defines an API +for everything a smart contract needs (storage access, …). +As long as a programming language compiles to WebAssembly and there exists an implementation +of this API in it, you can write a smart contract for this pallet (and thus for this parachain) +in that language. + +This is a list of languages you can currently choose from: + +* [Parity's ink!](https://github.com/paritytech/ink) for Rust. +* [ask!](https://github.com/patractlabs/ask) for Assembly Script. +* The [Solang](https://github.com/hyperledger-labs/solang) compiler for Solidity. + +There are also different user interfaces and command-line tools you can use to deploy +or interact with contracts: + +* [Contracts UI](https://paritytech.github.io/contracts-ui/) ‒ a beginner-friendly UI for smart contract developers. +* [polkadot-js](https://polkadot.js.org/apps/) ‒ the go-to expert UI for smart contract developers. +* [cargo-contract](https://github.com/paritytech/cargo-contract) ‒ a CLI tool, ideal for scripting or your terminal workflow. + +If you are looking for a quickstart, we can recommend +[ink!'s Guided Tutorial for Beginners](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/). + +### Build & Launch a Node + +To run a Contracts node that connects to Rococo +you will need to compile the `polkadot-parachain` binary: + +```bash +cargo build --release --locked -p polkadot-parachain +``` + +Once the executable is built, launch the parachain node via: + +```bash +./target/release/polkadot-parachain --chain contracts-rococo +``` + +Refer to the [setup instructions below](#local-setup) to run a local network for development. + +### Rococo Deployment + +We have a live deployment on [Rococo](https://wiki.polkadot.network/docs/build-pdk#rococo-testnet) ‒ +a testnet for Polkadot and Kusama parachains. + +You can interact with the network through Polkadot JS Apps, +[click here for a direct link to the parachain](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/explorer). + +This parachain uses the Rococo relay chain's native token `ROC` instead of defining a token of its own. +Due to this you'll need `ROC` in order to deploy contracts on this parachain. + +As a first step, you should create an account. See [here](https://wiki.polkadot.network/docs/learn-account-generation) +for a detailed guide. + +As a second step, you have to get `ROC` testnet tokens through the [Rococo Faucet](https://wiki.polkadot.network/docs/learn-DOT#getting-rococo-tokens). +This is a chat room in which you need to write: + +```bash +!drip YOUR_SS_58_ADDRESS:1002 +``` + +The number `1002` is the id of this parachain on Rococo, by supplying it the faucet will teleport `ROC` +tokens directly to your account on the parachain. + +If everything worked out, the teleported `ROC` tokens will show up under +[the "Accounts" tab](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/accounts). + +Once you have `ROC` you can deploy a contract as you would normally. +If you're unsure about this, our [guided tutorial](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/) +will clarify that for you in no time. diff --git a/polkadot-parachains/canvas-kusama/build.rs b/polkadot-parachains/contracts-rococo/build.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/build.rs rename to polkadot-parachains/contracts-rococo/build.rs diff --git a/docs/canvas-overview.svg b/polkadot-parachains/contracts-rococo/contracts-overview.svg similarity index 96% rename from docs/canvas-overview.svg rename to polkadot-parachains/contracts-rococo/contracts-overview.svg index a4a480f9bf..ad48df6510 100644 --- a/docs/canvas-overview.svg +++ b/polkadot-parachains/contracts-rococo/contracts-overview.svg @@ -5,8 +5,8 @@ viewBox="0 0 829 715" version="1.1" id="svg8" - inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" - sodipodi:docname="how-it-works.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)" + sodipodi:docname="contracts-overview.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" @@ -18,6 +18,12 @@ xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> + The WebAssembly blob targetsThe WebAssembly blob targetsan API exposed by Substrate'san API exposed by Substrate'scontracts module. + y="650.11108" + style="font-size:15.875px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.264583" + id="tspan2432" + sodipodi:role="line">contracts module. - - Canvas - - - - - - - - - + diff --git a/polkadot-parachains/canvas-kusama/src/constants.rs b/polkadot-parachains/contracts-rococo/src/constants.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/constants.rs rename to polkadot-parachains/contracts-rococo/src/constants.rs diff --git a/polkadot-parachains/canvas-kusama/src/contracts.rs b/polkadot-parachains/contracts-rococo/src/contracts.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/contracts.rs rename to polkadot-parachains/contracts-rococo/src/contracts.rs diff --git a/polkadot-parachains/canvas-kusama/src/lib.rs b/polkadot-parachains/contracts-rococo/src/lib.rs similarity index 99% rename from polkadot-parachains/canvas-kusama/src/lib.rs rename to polkadot-parachains/contracts-rococo/src/lib.rs index ddf15918b3..6eda8971bb 100644 --- a/polkadot-parachains/canvas-kusama/src/lib.rs +++ b/polkadot-parachains/contracts-rococo/src/lib.rs @@ -108,8 +108,8 @@ impl_opaque_keys! { #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("canvas-kusama"), - impl_name: create_runtime_str!("canvas-kusama"), + spec_name: create_runtime_str!("contracts-rococo"), + impl_name: create_runtime_str!("contracts-rococo"), authoring_version: 1, spec_version: 900, impl_version: 0, @@ -538,7 +538,7 @@ impl pallet_contracts_rpc_runtime_api::ContractsApi for Runtime { fn on_runtime_upgrade() -> (Weight, Weight) { - log::info!("try-runtime::on_runtime_upgrade canvas"); + log::info!("try-runtime::on_runtime_upgrade contracts"); let weight = Executive::try_runtime_upgrade().unwrap(); (weight, RuntimeBlockWeights::get().max_block) } diff --git a/polkadot-parachains/canvas-kusama/src/weights/block_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/block_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/block_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/block_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/extrinsic_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/extrinsic_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/extrinsic_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/extrinsic_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/mod.rs b/polkadot-parachains/contracts-rococo/src/weights/mod.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/mod.rs rename to polkadot-parachains/contracts-rococo/src/weights/mod.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/paritydb_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/paritydb_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/paritydb_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/paritydb_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/rocksdb_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/rocksdb_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/rocksdb_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/rocksdb_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/xcm_config.rs b/polkadot-parachains/contracts-rococo/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/xcm_config.rs rename to polkadot-parachains/contracts-rococo/src/xcm_config.rs diff --git a/polkadot-parachains/res/canvas-rococo.json b/polkadot-parachains/res/contracts-rococo.json similarity index 99% rename from polkadot-parachains/res/canvas-rococo.json rename to polkadot-parachains/res/contracts-rococo.json index 2bebd97590..7d1b84be20 100644 --- a/polkadot-parachains/res/canvas-rococo.json +++ b/polkadot-parachains/res/contracts-rococo.json @@ -1,6 +1,6 @@ { - "name": "Canvas on Rococo", - "id": "canvas-rococo", + "name": "Contracts on Rococo", + "id": "contracts-rococo", "chainType": "Live", "bootNodes": [ "/ip4/34.90.191.237/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj", @@ -80,4 +80,4 @@ "childrenDefault": {} } } -} \ No newline at end of file +} diff --git a/polkadot-parachains/src/chain_spec.rs b/polkadot-parachains/src/chain_spec.rs index ec3a6e84d0..9b65ac8e59 100644 --- a/polkadot-parachains/src/chain_spec.rs +++ b/polkadot-parachains/src/chain_spec.rs @@ -835,39 +835,38 @@ fn westmint_genesis( } } -/// We use the same runtime on kusama and rococo. -pub type CanvasKusamaChainSpec = - sc_service::GenericChainSpec; +pub type ContractsRococoChainSpec = + sc_service::GenericChainSpec; /// No relay chain suffix because the id is the same over all relay chains. -const CANVAS_PARACHAIN_ID: u32 = 1002; +const CONTRACTS_PARACHAIN_ID: u32 = 1002; -/// The existential deposit is determined by the runtime "canvas-kusama". -const CANVAS_KUSAMA_ED: canvas_kusama_runtime::Balance = - canvas_kusama_runtime::constants::currency::EXISTENTIAL_DEPOSIT; +/// The existential deposit is determined by the runtime "contracts-rococo". +const CONTRACTS_ROCOCO_ED: contracts_rococo_runtime::Balance = + contracts_rococo_runtime::constants::currency::EXISTENTIAL_DEPOSIT; -pub fn canvas_rococo_development_config() -> CanvasKusamaChainSpec { +pub fn contracts_rococo_development_config() -> ContractsRococoChainSpec { let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "ROC".into()); properties.insert("tokenDecimals".into(), 12.into()); - CanvasKusamaChainSpec::from_genesis( + ContractsRococoChainSpec::from_genesis( // Name - "Canvas on Rococo Development", + "Contracts on Rococo Development", // ID - "canvas-rococo-dev", + "contracts-rococo-dev", ChainType::Development, move || { - canvas_kusama_genesis( + contracts_rococo_genesis( // initial collators. vec![ ( get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), ), ( get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), + get_collator_keys_from_seed::("Bob"), ), ], vec![ @@ -884,7 +883,7 @@ pub fn canvas_rococo_development_config() -> CanvasKusamaChainSpec { get_account_id_from_seed::("Eve//stash"), get_account_id_from_seed::("Ferdie//stash"), ], - CANVAS_PARACHAIN_ID.into(), + CONTRACTS_PARACHAIN_ID.into(), ) }, Vec::new(), @@ -894,33 +893,33 @@ pub fn canvas_rococo_development_config() -> CanvasKusamaChainSpec { None, Extensions { relay_chain: "rococo-local".into(), // You MUST set this to the correct network! - para_id: CANVAS_PARACHAIN_ID, + para_id: CONTRACTS_PARACHAIN_ID, }, ) } -pub fn canvas_rococo_local_config() -> CanvasKusamaChainSpec { +pub fn contracts_rococo_local_config() -> ContractsRococoChainSpec { let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "ROC".into()); properties.insert("tokenDecimals".into(), 12.into()); - CanvasKusamaChainSpec::from_genesis( + ContractsRococoChainSpec::from_genesis( // Name - "Canvas on Rococo", + "Contracts on Rococo", // ID - "canvas-rococo-local", + "contracts-rococo-local", ChainType::Local, move || { - canvas_kusama_genesis( + contracts_rococo_genesis( // initial collators. vec![ ( get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), ), ( get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), + get_collator_keys_from_seed::("Bob"), ), ], vec![ @@ -937,7 +936,7 @@ pub fn canvas_rococo_local_config() -> CanvasKusamaChainSpec { get_account_id_from_seed::("Eve//stash"), get_account_id_from_seed::("Ferdie//stash"), ], - CANVAS_PARACHAIN_ID.into(), + CONTRACTS_PARACHAIN_ID.into(), ) }, // Bootnodes @@ -953,25 +952,25 @@ pub fn canvas_rococo_local_config() -> CanvasKusamaChainSpec { // Extensions Extensions { relay_chain: "rococo-local".into(), // You MUST set this to the correct network! - para_id: CANVAS_PARACHAIN_ID, + para_id: CONTRACTS_PARACHAIN_ID, }, ) } -pub fn canvas_rococo_config() -> CanvasKusamaChainSpec { +pub fn contracts_rococo_config() -> ContractsRococoChainSpec { // Give your base currency a unit name and decimal places let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "ROC".into()); properties.insert("tokenDecimals".into(), 12.into()); - CanvasKusamaChainSpec::from_genesis( + ContractsRococoChainSpec::from_genesis( // Name - "Canvas on Rococo", + "Contracts on Rococo", // ID - "canvas-rococo", + "contracts-rococo", ChainType::Live, move || { - canvas_kusama_genesis( + contracts_rococo_genesis( vec![ // 5GKFbTTgrVS4Vz1UWWHPqMZQNFWZtqo7H2KpCDyYhEL3aS26 ( @@ -1012,7 +1011,7 @@ pub fn canvas_rococo_config() -> CanvasKusamaChainSpec { // AccountId of an account which `ink-waterfall` uses for automated testing hex!["0e47e2344d523c3cc5c34394b0d58b9a4200e813a038e6c5a6163cc07d70b069"].into(), ], - CANVAS_PARACHAIN_ID.into(), + CONTRACTS_PARACHAIN_ID.into(), ) }, // Bootnodes @@ -1039,38 +1038,38 @@ pub fn canvas_rococo_config() -> CanvasKusamaChainSpec { // Properties Some(properties), // Extensions - Extensions { relay_chain: "rococo".into(), para_id: CANVAS_PARACHAIN_ID }, + Extensions { relay_chain: "rococo".into(), para_id: CONTRACTS_PARACHAIN_ID }, ) } -fn canvas_kusama_genesis( +fn contracts_rococo_genesis( invulnerables: Vec<(AccountId, AuraId)>, endowed_accounts: Vec, id: ParaId, -) -> canvas_kusama_runtime::GenesisConfig { - canvas_kusama_runtime::GenesisConfig { - system: canvas_kusama_runtime::SystemConfig { - code: canvas_kusama_runtime::WASM_BINARY +) -> contracts_rococo_runtime::GenesisConfig { + contracts_rococo_runtime::GenesisConfig { + system: contracts_rococo_runtime::SystemConfig { + code: contracts_rococo_runtime::WASM_BINARY .expect("WASM binary was not build, please build it!") .to_vec(), }, - balances: canvas_kusama_runtime::BalancesConfig { + balances: contracts_rococo_runtime::BalancesConfig { balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), }, - parachain_info: canvas_kusama_runtime::ParachainInfoConfig { parachain_id: id }, - collator_selection: canvas_kusama_runtime::CollatorSelectionConfig { + parachain_info: contracts_rococo_runtime::ParachainInfoConfig { parachain_id: id }, + collator_selection: contracts_rococo_runtime::CollatorSelectionConfig { invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), - candidacy_bond: CANVAS_KUSAMA_ED * 16, + candidacy_bond: CONTRACTS_ROCOCO_ED * 16, ..Default::default() }, - session: canvas_kusama_runtime::SessionConfig { + session: contracts_rococo_runtime::SessionConfig { keys: invulnerables .into_iter() .map(|(acc, aura)| { ( - acc.clone(), // account id - acc, // validator id - canvas_kusama_runtime::SessionKeys { aura }, // session keys + acc.clone(), // account id + acc, // validator id + contracts_rococo_runtime::SessionKeys { aura }, // session keys ) }) .collect(), @@ -1080,10 +1079,10 @@ fn canvas_kusama_genesis( aura: Default::default(), aura_ext: Default::default(), parachain_system: Default::default(), - polkadot_xcm: canvas_kusama_runtime::PolkadotXcmConfig { + polkadot_xcm: contracts_rococo_runtime::PolkadotXcmConfig { safe_xcm_version: Some(SAFE_XCM_VERSION), }, - sudo: canvas_kusama_runtime::SudoConfig { + sudo: contracts_rococo_runtime::SudoConfig { key: Some( hex!["2681a28014e7d3a5bfb32a003b3571f53c408acbc28d351d6bf58f5028c4ef14"].into(), ), diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 7e259d9698..9836501fe1 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -46,7 +46,7 @@ trait IdentifyChain { fn is_statemint(&self) -> bool; fn is_statemine(&self) -> bool; fn is_westmint(&self) -> bool; - fn is_canvas_kusama(&self) -> bool; + fn is_contracts_rococo(&self) -> bool; } impl IdentifyChain for dyn sc_service::ChainSpec { @@ -65,9 +65,8 @@ impl IdentifyChain for dyn sc_service::ChainSpec { fn is_westmint(&self) -> bool { self.id().starts_with("westmint") } - fn is_canvas_kusama(&self) -> bool { - // we use the same runtime on rococo and kusama - self.id().starts_with("canvas-kusama") || self.id().starts_with("canvas-rococo") + fn is_contracts_rococo(&self) -> bool { + self.id().starts_with("contracts-rococo") } } @@ -87,8 +86,8 @@ impl IdentifyChain for T { fn is_westmint(&self) -> bool { ::is_westmint(self) } - fn is_canvas_kusama(&self) -> bool { - ::is_canvas_kusama(self) + fn is_contracts_rococo(&self) -> bool { + ::is_contracts_rococo(self) } } @@ -133,12 +132,12 @@ fn load_spec(id: &str) -> std::result::Result, St "westmint" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../res/westmint.json")[..], )?), - // -- Canvas on Rococo - "canvas-rococo-dev" => Box::new(chain_spec::canvas_rococo_development_config()), - "canvas-rococo-local" => Box::new(chain_spec::canvas_rococo_local_config()), - "canvas-rococo-genesis" => Box::new(chain_spec::canvas_rococo_config()), - "canvas-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/canvas-rococo.json")[..], + // -- Contracts on Rococo + "contracts-rococo-dev" => Box::new(chain_spec::contracts_rococo_development_config()), + "contracts-rococo-local" => Box::new(chain_spec::contracts_rococo_local_config()), + "contracts-rococo-genesis" => Box::new(chain_spec::contracts_rococo_config()), + "contracts-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( + &include_bytes!("../res/contracts-rococo.json")[..], )?), // -- Fallback (generic chainspec) "" => Box::new(chain_spec::get_chain_spec()), @@ -155,8 +154,8 @@ fn load_spec(id: &str) -> std::result::Result, St Box::new(chain_spec::ShellChainSpec::from_json_file(path.into())?) } else if chain_spec.is_seedling() { Box::new(chain_spec::SeedlingChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_canvas_kusama() { - Box::new(chain_spec::CanvasKusamaChainSpec::from_json_file(path.into())?) + } else if chain_spec.is_contracts_rococo() { + Box::new(chain_spec::ContractsRococoChainSpec::from_json_file(path.into())?) } else { Box::new(chain_spec) } @@ -210,8 +209,8 @@ impl SubstrateCli for Cli { &shell_runtime::VERSION } else if chain_spec.is_seedling() { &seedling_runtime::VERSION - } else if chain_spec.is_canvas_kusama() { - &canvas_kusama_runtime::VERSION + } else if chain_spec.is_contracts_rococo() { + &contracts_rococo_runtime::VERSION } else { &rococo_parachain_runtime::VERSION } @@ -343,11 +342,11 @@ macro_rules! construct_async_run { let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) }) - } else if runner.config().chain_spec.is_canvas_kusama() { + } else if runner.config().chain_spec.is_contracts_rococo() { runner.async_run(|$config| { - let $components = new_partial::( + let $components = new_partial::( &$config, - crate::service::canvas_kusama_build_import_queue, + crate::service::contracts_rococo_build_import_queue, )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) @@ -638,8 +637,8 @@ pub fn run() -> Result<()> { .await .map(|r| r.0) .map_err(Into::into) - } else if config.chain_spec.is_canvas_kusama() { - crate::service::start_canvas_kusama_node( + } else if config.chain_spec.is_contracts_rococo() { + crate::service::start_contracts_rococo_node( config, polkadot_config, collator_options, diff --git a/polkadot-parachains/src/rpc.rs b/polkadot-parachains/src/rpc.rs index 04671aa8ef..ef26b8595d 100644 --- a/polkadot-parachains/src/rpc.rs +++ b/polkadot-parachains/src/rpc.rs @@ -70,8 +70,8 @@ where Ok(module) } -/// Instantiate all RPCs we want at the canvas-kusama chain. -pub fn create_canvas_kusama( +/// Instantiate all RPCs we want at the contracts-rococo chain. +pub fn create_contracts_rococo( deps: FullDeps, ) -> Result> where diff --git a/polkadot-parachains/src/service.rs b/polkadot-parachains/src/service.rs index 09e8414256..38b23fac89 100644 --- a/polkadot-parachains/src/service.rs +++ b/polkadot-parachains/src/service.rs @@ -158,18 +158,18 @@ impl sc_executor::NativeExecutionDispatch for WestmintRuntimeExecutor { } } -/// Native Canvas on Kusama executor instance. -pub struct CanvasKusamaRuntimeExecutor; +/// Native Contracts on Rococo executor instance. +pub struct ContractsRococoRuntimeExecutor; -impl sc_executor::NativeExecutionDispatch for CanvasKusamaRuntimeExecutor { +impl sc_executor::NativeExecutionDispatch for ContractsRococoRuntimeExecutor { type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; fn dispatch(method: &str, data: &[u8]) -> Option> { - canvas_kusama_runtime::api::dispatch(method, data) + contracts_rococo_runtime::api::dispatch(method, data) } fn native_version() -> sc_executor::NativeVersion { - canvas_kusama_runtime::native_version() + contracts_rococo_runtime::native_version() } } @@ -1334,7 +1334,7 @@ where } #[sc_tracing::logging::prefix_logs_with("Parachain")] -async fn start_canvas_kusama_node_impl( +async fn start_contracts_rococo_node_impl( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, @@ -1457,7 +1457,7 @@ where deny_unsafe, }; - crate::rpc::create_canvas_kusama(deps).map_err(Into::into) + crate::rpc::create_contracts_rococo(deps).map_err(Into::into) }) }; @@ -1545,15 +1545,17 @@ where } #[allow(clippy::type_complexity)] -pub fn canvas_kusama_build_import_queue( - client: Arc>>, +pub fn contracts_rococo_build_import_queue( + client: Arc< + TFullClient>, + >, config: &Configuration, telemetry: Option, task_manager: &TaskManager, ) -> Result< sc_consensus::DefaultImportQueue< Block, - TFullClient>, + TFullClient>, >, sc_service::Error, > { @@ -1590,7 +1592,7 @@ pub fn canvas_kusama_build_import_queue( } /// Start a parachain node. -pub async fn start_canvas_kusama_node( +pub async fn start_contracts_rococo_node( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, @@ -1598,15 +1600,15 @@ pub async fn start_canvas_kusama_node( hwbench: Option, ) -> sc_service::error::Result<( TaskManager, - Arc>>, + Arc>>, )> { - start_canvas_kusama_node_impl::( + start_contracts_rococo_node_impl::( parachain_config, polkadot_config, collator_options, id, |_| Ok(RpcModule::new(())), - canvas_kusama_build_import_queue, + contracts_rococo_build_import_queue, |client, prometheus_registry, telemetry, diff --git a/scripts/ci/changelog/bin/changelog b/scripts/ci/changelog/bin/changelog index 85044f8022..e9df4a4ca2 100755 --- a/scripts/ci/changelog/bin/changelog +++ b/scripts/ci/changelog/bin/changelog @@ -81,7 +81,7 @@ WESTMINT_DIGEST = ENV['WESTMINT_DIGEST'] || 'digests/westmint-srtool-digest.json STATEMINE_DIGEST = ENV['STATEMINE_DIGEST'] || 'digests/statemine-srtool-digest.json' STATEMINT_DIGEST = ENV['STATEMINT_DIGEST'] || 'digests/statemint-srtool-digest.json' ROCOCO_PARA_DIGEST = ENV['ROCOCO_PARA_DIGEST'] || 'digests/rococo-parachain-srtool-digest.json' -CANVAS_KUSAMA_DIGEST = ENV['CANVAS_KUSAMA_DIGEST'] || 'digests/canvas-kusama-srtool-digest.json' +CANVAS_KUSAMA_DIGEST = ENV['CANVAS_KUSAMA_DIGEST'] || 'digests/contracts-rococo-srtool-digest.json' logger.debug("Release type: #{ENV['RELEASE_TYPE']}") @@ -111,7 +111,7 @@ else --slurpfile srtool_statemine %s \ --slurpfile srtool_statemint %s \ --slurpfile srtool_rococo_parachain %s \ - --slurpfile srtool_canvas_kusama %s \ + --slurpfile srtool_contracts_rococo %s \ -n \'{ cumulus: $cumulus[0], substrate: $substrate[0], @@ -122,7 +122,7 @@ else { name: "westmint", data: $srtool_westmint[0] }, { name: "statemint", data: $srtool_statemint[0] }, { name: "statemine", data: $srtool_statemine[0] }, - { name: "canvas", data: $srtool_canvas_kusama[0] } + { name: "contracts", data: $srtool_contracts_rococo[0] } ] }\' > context.json', cumulus_data, substrate_data, polkadot_data, SHELL_DIGEST, WESTMINT_DIGEST, From 404c9d424805ae42c4a73ed91e18e36f27c6a352 Mon Sep 17 00:00:00 2001 From: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com> Date: Wed, 18 May 2022 13:59:36 +0200 Subject: [PATCH 058/238] Companion to #11441 (Uniques Max Supply) (#1267) * Companion to #11441 * update lockfile for {"substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 358 +++++++++--------- polkadot-parachains/statemine/src/lib.rs | 1 + .../statemine/src/weights/pallet_uniques.rs | 7 + polkadot-parachains/statemint/src/lib.rs | 1 + .../statemint/src/weights/pallet_uniques.rs | 7 + polkadot-parachains/westmint/src/lib.rs | 1 + .../westmint/src/weights/pallet_uniques.rs | 7 + 7 files changed, 203 insertions(+), 179 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e54e8a58e1..4895aef6e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -2792,7 +2792,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", ] @@ -2810,7 +2810,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -2832,7 +2832,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "Inflector", "chrono", @@ -2882,7 +2882,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2893,7 +2893,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2909,7 +2909,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -2937,7 +2937,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "bitflags", "frame-metadata", @@ -2967,7 +2967,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2979,7 +2979,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2991,7 +2991,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro2", "quote", @@ -3001,7 +3001,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "log", @@ -3018,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -3033,7 +3033,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "sp-api", @@ -3042,7 +3042,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "sp-api", @@ -5358,7 +5358,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -5375,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5389,7 +5389,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -5405,7 +5405,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -5421,7 +5421,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -5436,7 +5436,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5460,7 +5460,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5495,7 +5495,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "beefy-primitives", "frame-support", @@ -5511,7 +5511,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5534,7 +5534,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5612,7 +5612,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5657,7 +5657,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5674,7 +5674,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "bitflags", "frame-benchmarking", @@ -5701,7 +5701,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "bitflags", "parity-scale-codec", @@ -5716,7 +5716,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro2", "quote", @@ -5726,7 +5726,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5743,7 +5743,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5756,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5795,7 +5795,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5808,7 +5808,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5826,7 +5826,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5841,7 +5841,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5864,7 +5864,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5880,7 +5880,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5900,7 +5900,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5917,7 +5917,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5934,7 +5934,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5952,7 +5952,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5967,7 +5967,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5982,7 +5982,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -5996,7 +5996,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6012,7 +6012,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6031,7 +6031,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6048,7 +6048,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6071,7 +6071,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6087,7 +6087,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6102,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6116,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6131,7 +6131,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6147,7 +6147,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6184,7 +6184,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6198,7 +6198,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6221,7 +6221,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6232,7 +6232,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "sp-arithmetic", @@ -6241,7 +6241,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6270,7 +6270,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6288,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6307,7 +6307,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-support", "frame-system", @@ -6324,7 +6324,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6339,7 +6339,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6350,7 +6350,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6367,7 +6367,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6382,7 +6382,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6398,7 +6398,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -8845,7 +8845,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9220,7 +9220,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "sp-core", @@ -9231,7 +9231,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9258,7 +9258,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9281,7 +9281,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9297,7 +9297,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9314,7 +9314,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9325,7 +9325,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "chrono", "clap 3.1.18", @@ -9364,7 +9364,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "fnv", "futures 0.3.21", @@ -9392,7 +9392,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "hash-db", "kvdb", @@ -9417,7 +9417,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9441,7 +9441,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9470,7 +9470,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "fork-tree", @@ -9513,7 +9513,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9535,7 +9535,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9548,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -9573,7 +9573,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "sc-client-api", "sp-authorship", @@ -9584,7 +9584,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9611,7 +9611,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "environmental", "parity-scale-codec", @@ -9628,7 +9628,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "parity-scale-codec", @@ -9643,7 +9643,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9661,7 +9661,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "ahash", "async-trait", @@ -9701,7 +9701,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9722,7 +9722,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9739,7 +9739,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "hex", @@ -9754,7 +9754,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "asynchronous-codec", @@ -9806,7 +9806,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "libp2p", @@ -9819,7 +9819,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "ahash", "futures 0.3.21", @@ -9836,7 +9836,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "libp2p", @@ -9856,7 +9856,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "bitflags", "either", @@ -9885,7 +9885,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "bytes", "fnv", @@ -9913,7 +9913,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "libp2p", @@ -9926,7 +9926,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9935,7 +9935,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "hash-db", @@ -9965,7 +9965,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9988,7 +9988,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10001,7 +10001,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "directories", @@ -10066,7 +10066,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "parity-scale-codec", @@ -10080,7 +10080,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10099,7 +10099,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "libc", @@ -10118,7 +10118,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "chrono", "futures 0.3.21", @@ -10136,7 +10136,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "ansi_term", "atty", @@ -10167,7 +10167,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10178,7 +10178,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10205,7 +10205,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "log", @@ -10218,7 +10218,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10733,7 +10733,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "hash-db", "log", @@ -10750,7 +10750,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "blake2", "proc-macro-crate", @@ -10762,7 +10762,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -10775,7 +10775,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "integer-sqrt", "num-traits", @@ -10790,7 +10790,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -10803,7 +10803,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "parity-scale-codec", @@ -10815,7 +10815,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "sp-api", @@ -10827,7 +10827,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "log", @@ -10845,7 +10845,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -10864,7 +10864,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "parity-scale-codec", @@ -10882,7 +10882,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "merlin", @@ -10905,7 +10905,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -10919,7 +10919,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -10932,7 +10932,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "base58", "bitflags", @@ -10978,7 +10978,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "blake2", "byteorder", @@ -10992,7 +10992,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro2", "quote", @@ -11003,7 +11003,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11012,7 +11012,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro2", "quote", @@ -11022,7 +11022,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "environmental", "parity-scale-codec", @@ -11033,7 +11033,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "finality-grandpa", "log", @@ -11051,7 +11051,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11065,7 +11065,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "hash-db", @@ -11090,7 +11090,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "lazy_static", "sp-core", @@ -11101,7 +11101,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -11118,7 +11118,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "thiserror", "zstd", @@ -11127,7 +11127,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "parity-scale-codec", @@ -11142,7 +11142,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11156,7 +11156,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "sp-api", "sp-core", @@ -11166,7 +11166,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "backtrace", "lazy_static", @@ -11176,7 +11176,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "rustc-hash", "serde", @@ -11186,7 +11186,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "either", "hash256-std-hasher", @@ -11208,7 +11208,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11225,7 +11225,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "Inflector", "proc-macro-crate", @@ -11237,7 +11237,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "parity-scale-codec", @@ -11251,7 +11251,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "serde", "serde_json", @@ -11260,7 +11260,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11274,7 +11274,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -11285,7 +11285,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "hash-db", "log", @@ -11307,12 +11307,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11325,7 +11325,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "log", "sp-core", @@ -11338,7 +11338,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures-timer", @@ -11354,7 +11354,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "sp-std", @@ -11366,7 +11366,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "sp-api", "sp-runtime", @@ -11375,7 +11375,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "log", @@ -11391,7 +11391,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "hash-db", "memory-db", @@ -11407,7 +11407,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11424,7 +11424,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11435,7 +11435,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "impl-trait-for-tuples", "log", @@ -11716,7 +11716,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "platforms", ] @@ -11724,7 +11724,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11745,7 +11745,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures-util", "hyper", @@ -11758,7 +11758,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "jsonrpsee", "log", @@ -11779,7 +11779,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -11805,7 +11805,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11815,7 +11815,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c00ed052e7cd72cfc4bc0e00e38722081b789ff5" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11826,7 +11826,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "ansi_term", "build-helper", @@ -12351,7 +12351,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d45e3837bc89338c6eae1ff5dc250d01e1cae0e6" +source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" dependencies = [ "clap 3.1.18", "jsonrpsee", diff --git a/polkadot-parachains/statemine/src/lib.rs b/polkadot-parachains/statemine/src/lib.rs index 4f778ba869..1ddfd1a177 100644 --- a/polkadot-parachains/statemine/src/lib.rs +++ b/polkadot-parachains/statemine/src/lib.rs @@ -348,6 +348,7 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::clear_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_attribute { .. }) | Call::Uniques(pallet_uniques::Call::clear_collection_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::set_collection_max_supply { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::AssetManager => matches!( diff --git a/polkadot-parachains/statemine/src/weights/pallet_uniques.rs b/polkadot-parachains/statemine/src/weights/pallet_uniques.rs index 781905e2c7..0d6ccb4ce9 100644 --- a/polkadot-parachains/statemine/src/weights/pallet_uniques.rs +++ b/polkadot-parachains/statemine/src/weights/pallet_uniques.rs @@ -227,4 +227,11 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques Class (r:1 w:0) + // Storage: Uniques Asset (r:1 w:1) + fn set_collection_max_supply() -> Weight { + (19_417_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } diff --git a/polkadot-parachains/statemint/src/lib.rs b/polkadot-parachains/statemint/src/lib.rs index b2e255a402..1b7d01481f 100644 --- a/polkadot-parachains/statemint/src/lib.rs +++ b/polkadot-parachains/statemint/src/lib.rs @@ -349,6 +349,7 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::clear_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_attribute { .. }) | Call::Uniques(pallet_uniques::Call::clear_collection_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::set_collection_max_supply { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::AssetManager => matches!( diff --git a/polkadot-parachains/statemint/src/weights/pallet_uniques.rs b/polkadot-parachains/statemint/src/weights/pallet_uniques.rs index 2c9fbadcbe..a296fdc2ce 100644 --- a/polkadot-parachains/statemint/src/weights/pallet_uniques.rs +++ b/polkadot-parachains/statemint/src/weights/pallet_uniques.rs @@ -227,4 +227,11 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques Class (r:1 w:0) + // Storage: Uniques Asset (r:1 w:1) + fn set_collection_max_supply() -> Weight { + (19_417_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } diff --git a/polkadot-parachains/westmint/src/lib.rs b/polkadot-parachains/westmint/src/lib.rs index b777a73c2a..d368dc4417 100644 --- a/polkadot-parachains/westmint/src/lib.rs +++ b/polkadot-parachains/westmint/src/lib.rs @@ -343,6 +343,7 @@ impl InstanceFilter for ProxyType { Call::Uniques(pallet_uniques::Call::clear_metadata { .. }) | Call::Uniques(pallet_uniques::Call::clear_attribute { .. }) | Call::Uniques(pallet_uniques::Call::clear_collection_metadata { .. }) | + Call::Uniques(pallet_uniques::Call::set_collection_max_supply { .. }) | Call::Utility { .. } | Call::Multisig { .. } ), ProxyType::AssetManager => matches!( diff --git a/polkadot-parachains/westmint/src/weights/pallet_uniques.rs b/polkadot-parachains/westmint/src/weights/pallet_uniques.rs index e22f1b826e..11289f327b 100644 --- a/polkadot-parachains/westmint/src/weights/pallet_uniques.rs +++ b/polkadot-parachains/westmint/src/weights/pallet_uniques.rs @@ -227,4 +227,11 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques Class (r:1 w:0) + // Storage: Uniques Asset (r:1 w:1) + fn set_collection_max_supply() -> Weight { + (19_417_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } From 45a45be9b8e831296687f1a1f66dbffae9e983ba Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko <85877331+sergejparity@users.noreply.github.com> Date: Wed, 18 May 2022 17:09:41 +0300 Subject: [PATCH 059/238] add GHA checks to dependabot (#1270) * add GHA checks to dependabot * Update .github/dependabot.yml Co-authored-by: Chevdor Co-authored-by: Chevdor --- .github/dependabot.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3f1dd78191..2e9f57f539 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -23,3 +23,8 @@ updates: - dependency-name: "westend-*" schedule: interval: "daily" + - package-ecosystem: github-actions + directory: '/' + labels: ["A2-insubstantial", "B0-silent", "C1-low 📌", "E3-dependencies"] + schedule: + interval: daily From b1a5d70256f7344a23bedaa72924b6559b187845 Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Wed, 18 May 2022 16:41:48 +0200 Subject: [PATCH 060/238] Create binary for cumulus testing node #1128 (#1158) * Create binary for cumulus testing node * Fix call to wrong method * Fix iterator bug * Add real networking to polkadot node * Allow using of file chain specs * Implement export of wasm blob and genesis state * Add parachain id to test service export * Remove debug logs * Fix main.rs * Do not use cli from polkadot-collator * Add tracing dependency * Improve cli structure * Use struct instead of enum for export commands * Add missing license header * Fix benchmark * add build-spec subcommand (#19) * add build-spec subcommand * reorder args * Fix formatting * Add zombienet test (#26) * add migrated tests * rename test files * uncomment args and remove extra collator node * Fix indentation (#27) * add migrated tests * rename test files * uncomment args and remove extra collator node * fix identation * Review comments * Remove unwanted version changes Co-authored-by: Sebastian Kunert Co-authored-by: Javier Viola --- Cargo.lock | 5 + client/cli/src/lib.rs | 11 +- test/service/Cargo.toml | 12 +- test/service/src/cli.rs | 344 ++++++++++++++++++ test/service/src/lib.rs | 5 +- test/service/src/main.rs | 178 +++++++++ ...rom_tip_without_connected_collator.feature | 17 + ...s_from_tip_without_connected_collator.toml | 52 +++ zombienet_tests/0002-pov_recovery.feature | 13 + zombienet_tests/0002-pov_recovery.toml | 46 +++ .../0003-test_full_node_catching_up.feature | 13 + .../0003-test_full_node_catching_up.toml | 44 +++ 12 files changed, 728 insertions(+), 12 deletions(-) create mode 100644 test/service/src/cli.rs create mode 100644 test/service/src/main.rs create mode 100644 zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.feature create mode 100644 zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.toml create mode 100644 zombienet_tests/0002-pov_recovery.feature create mode 100644 zombienet_tests/0002-pov_recovery.toml create mode 100644 zombienet_tests/0003-test_full_node_catching_up.feature create mode 100644 zombienet_tests/0003-test_full_node_catching_up.toml diff --git a/Cargo.lock b/Cargo.lock index 4895aef6e1..7310f44ccd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2183,6 +2183,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", + "clap 3.1.17", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2201,8 +2202,10 @@ dependencies = [ "futures 0.3.21", "jsonrpsee", "pallet-transaction-payment", + "parachains-common", "parity-scale-codec", "parking_lot 0.12.0", + "polkadot-cli", "polkadot-primitives", "polkadot-service", "polkadot-test-service", @@ -2217,6 +2220,7 @@ dependencies = [ "sc-network", "sc-rpc", "sc-service", + "sc-telemetry", "sc-tracing", "sc-transaction-pool", "sc-transaction-pool-api", @@ -2234,6 +2238,7 @@ dependencies = [ "substrate-test-client", "substrate-test-utils", "tokio", + "tracing", "url", ] diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index 0c1cb4f6be..a30ef306c1 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -150,15 +150,8 @@ pub struct RunCmd { long, parse(try_from_str), validator = validate_relay_chain_url, - conflicts_with = "collator", - conflicts_with = "validator", - conflicts_with = "alice", - conflicts_with = "bob", - conflicts_with = "charlie", - conflicts_with = "dave", - conflicts_with = "eve", - conflicts_with = "ferdie" - )] + conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "ferdie", "one", "two"] ) + ] pub relay_chain_rpc_url: Option, } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 0008b0f13a..8d9ddad4a5 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -4,6 +4,10 @@ version = "0.1.0" authors = ["Parity Technologies "] edition = "2021" +[[bin]] +name = "test-parachain" +path = "src/main.rs" + [dependencies] async-trait = "0.1.53" codec = { package = "parity-scale-codec", version = "3.0.0" } @@ -30,6 +34,7 @@ sc-service = { 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" } sc-transaction-pool-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } 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" } @@ -37,18 +42,23 @@ sp-io = { 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", default-features = false, branch = "master" } sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } +clap = { version = "3.1", features = ["derive"] } +tracing = "0.1.25" # Polkadot 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" } +polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "master" } # Cumulus cumulus-client-cli = { path = "../../client/cli" } +parachains-common = { path = "../../polkadot-parachains/parachains-common" } cumulus-client-consensus-common = { path = "../../client/consensus/common" } cumulus-client-consensus-relay-chain = { path = "../../client/consensus/relay-chain" } cumulus-client-network = { path = "../../client/network" } diff --git a/test/service/src/cli.rs b/test/service/src/cli.rs new file mode 100644 index 0000000000..13995d6ed3 --- /dev/null +++ b/test/service/src/cli.rs @@ -0,0 +1,344 @@ +// Copyright 2022 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 . + +use clap::{Parser, Subcommand}; +use polkadot_service::{ChainSpec, ParaId, PrometheusConfig}; +use sc_cli::{ + CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, + Result as CliResult, RuntimeVersion, SharedParams, SubstrateCli, +}; +use sc_service::BasePath; +use std::{net::SocketAddr, path::PathBuf}; + +#[derive(Debug, Parser)] +pub struct ExportGenesisStateCommand { + #[clap(default_value_t = 2000u32)] + pub parachain_id: u32, + + /// Output file name or stdout if unspecified. + #[clap(parse(from_os_str))] + pub output: Option, + + /// Write output in binary. Default is to write in hex. + #[clap(short, long)] + pub raw: bool, + + /// The name of the chain for that the genesis state should be exported. + #[clap(long)] + pub chain: Option, +} + +/// Command for exporting the genesis wasm file. +#[derive(Debug, Parser)] +pub struct ExportGenesisWasmCommand { + #[clap(default_value_t = 2000u32)] + pub parachain_id: u32, + + /// Output file name or stdout if unspecified. + #[clap(parse(from_os_str))] + pub output: Option, + + /// Write output in binary. Default is to write in hex. + #[clap(short, long)] + pub raw: bool, + + /// The name of the chain for that the genesis wasm file should be exported. + #[clap(long)] + pub chain: Option, +} +#[derive(Subcommand, Debug)] +pub enum Commands { + #[clap(name = "export-genesis-wasm")] + ExportGenesisWasm(ExportGenesisWasmCommand), + + #[clap(name = "export-genesis-state")] + ExportGenesisState(ExportGenesisStateCommand), + + /// Build a chain specification. + BuildSpec(sc_cli::BuildSpecCmd), +} + +#[derive(Debug, Parser)] +#[clap( + version, + propagate_version = true, + args_conflicts_with_subcommands = true, + subcommand_negates_reqs = true +)] +pub struct TestCollatorCli { + #[clap(subcommand)] + pub subcommand: Option, + + #[clap(flatten)] + pub run: cumulus_client_cli::RunCmd, + + #[clap(default_value_t = 2000u32)] + pub parachain_id: u32, + + /// Relay chain arguments + #[clap(raw = true, conflicts_with = "relay-chain-rpc-url")] + pub relaychain_args: Vec, + + #[clap(long)] + pub use_null_consensus: bool, + + #[clap(long)] + pub disable_block_announcements: bool, +} + +#[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 base_path = para_config.base_path.as_ref().map(|x| x.path().join("polkadot")); + Self { base_path, chain_id: None, base: polkadot_cli::RunCmd::parse_from(relay_chain_args) } + } +} + +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) -> CliResult> { + Ok(self + .shared_params() + .base_path() + .or_else(|| self.base_path.clone().map(Into::into))) + } + + fn rpc_http(&self, default_listen_port: u16) -> CliResult> { + self.base.base.rpc_http(default_listen_port) + } + + fn rpc_ipc(&self) -> CliResult> { + self.base.base.rpc_ipc() + } + + fn rpc_ws(&self, default_listen_port: u16) -> CliResult> { + self.base.base.rpc_ws(default_listen_port) + } + + fn prometheus_config( + &self, + default_listen_port: u16, + chain_spec: &Box, + ) -> CliResult> { + self.base.base.prometheus_config(default_listen_port, chain_spec) + } + + fn init( + &self, + _support_url: &String, + _impl_version: &String, + _logger_hook: F, + _config: &sc_service::Configuration, + ) -> CliResult<()> + where + F: FnOnce(&mut sc_cli::LoggerBuilder, &sc_service::Configuration), + { + unreachable!("PolkadotCli is never initialized; qed"); + } + + fn chain_id(&self, is_dev: bool) -> CliResult { + 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) -> CliResult { + self.base.base.role(is_dev) + } + + fn transaction_pool(&self) -> CliResult { + self.base.base.transaction_pool() + } + + fn state_cache_child_ratio(&self) -> CliResult> { + self.base.base.state_cache_child_ratio() + } + + fn rpc_methods(&self) -> CliResult { + self.base.base.rpc_methods() + } + + fn rpc_ws_max_connections(&self) -> CliResult> { + self.base.base.rpc_ws_max_connections() + } + + fn rpc_cors(&self, is_dev: bool) -> CliResult>> { + self.base.base.rpc_cors(is_dev) + } + + fn default_heap_pages(&self) -> CliResult> { + self.base.base.default_heap_pages() + } + + fn force_authoring(&self) -> CliResult { + self.base.base.force_authoring() + } + + fn disable_grandpa(&self) -> CliResult { + self.base.base.disable_grandpa() + } + + fn max_runtime_instances(&self) -> CliResult> { + self.base.base.max_runtime_instances() + } + + fn announce_block(&self) -> CliResult { + self.base.base.announce_block() + } + + fn telemetry_endpoints( + &self, + chain_spec: &Box, + ) -> CliResult> { + self.base.base.telemetry_endpoints(chain_spec) + } + + fn node_name(&self) -> CliResult { + self.base.base.node_name() + } +} + +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 SubstrateCli for TestCollatorCli { + fn impl_name() -> String { + "Cumulus zombienet test parachain".into() + } + + fn impl_version() -> String { + String::new() + } + + fn description() -> String { + format!( + "Cumulus zombienet test parachain\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/paritytech/cumulus/issues/new".into() + } + + fn copyright_start_year() -> i32 { + 2017 + } + + fn load_spec(&self, _: &str) -> std::result::Result, String> { + Ok(Box::new(cumulus_test_service::get_chain_spec(ParaId::from(self.parachain_id))) + as Box<_>) + } + + fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { + &cumulus_test_service::runtime::VERSION + } +} + +impl SubstrateCli for RelayChainCli { + fn impl_name() -> String { + "Polkadot collator".into() + } + + fn impl_version() -> String { + String::new() + } + + fn description() -> String { + format!( + "Polkadot collator\n\nThe command-line arguments provided first will be \ + passed to the parachain node, while the arguments provided after -- will be passed \ + to the relay chain node.\n\n\ + {} [parachain-args] -- [relay_chain-args]", + Self::executable_name() + ) + } + + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() + } + + fn support_url() -> String { + "https://github.com/paritytech/cumulus/issues/new".into() + } + + fn copyright_start_year() -> i32 { + 2017 + } + + fn load_spec(&self, id: &str) -> std::result::Result, String> { + ::from_iter( + [RelayChainCli::executable_name().to_string()].iter(), + ) + .load_spec(id) + } + + fn native_runtime_version(chain_spec: &Box) -> &'static RuntimeVersion { + polkadot_cli::Cli::native_runtime_version(chain_spec) + } +} diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index 3c2d44a9e1..cf87fd826a 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -208,7 +208,7 @@ async fn build_relay_chain_interface( /// /// This is the actual implementation that is abstract over the executor and the runtime api. #[sc_tracing::logging::prefix_logs_with(parachain_config.network.node_name.as_str())] -async fn start_node_impl( +pub async fn start_node_impl( parachain_config: Configuration, collator_key: Option, relay_chain_config: Configuration, @@ -396,7 +396,8 @@ pub struct TestNode { pub transaction_pool: TransactionPool, } -enum Consensus { +#[allow(missing_docs)] +pub enum Consensus { /// Use the relay-chain provided consensus. RelayChain, /// Use the null consensus that will never produce any block. diff --git a/test/service/src/main.rs b/test/service/src/main.rs new file mode 100644 index 0000000000..791621dafa --- /dev/null +++ b/test/service/src/main.rs @@ -0,0 +1,178 @@ +// Copyright 2022 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 . +mod cli; + +use clap::Parser; +use cli::{Commands, RelayChainCli, TestCollatorCli}; +use cumulus_client_service::genesis::generate_genesis_block; +use cumulus_primitives_core::{relay_chain::v2::CollatorPair, ParaId}; +use cumulus_test_service::AnnounceBlockFn; +use polkadot_service::runtime_traits::AccountIdConversion; +use sc_cli::{CliConfiguration, SubstrateCli}; +use sp_core::{hexdisplay::HexDisplay, Encode, Pair}; +use sp_runtime::traits::Block; +use std::{io::Write, sync::Arc}; + +fn extract_genesis_wasm(chain_spec: &Box) -> Result, String> { + 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()) +} + +pub fn wrap_announce_block() -> Box AnnounceBlockFn> { + tracing::info!("Block announcements disabled."); + Box::new(|_| { + // Never announce any block + Arc::new(|_, _| {}) + }) +} + +fn main() -> Result<(), sc_cli::Error> { + let cli = TestCollatorCli::parse(); + + match &cli.subcommand { + Some(Commands::BuildSpec(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) + }, + Some(Commands::ExportGenesisState(params)) => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); + let _ = builder.init(); + + let parachain_id = ParaId::from(params.parachain_id); + let spec = Box::new(cumulus_test_service::get_chain_spec(parachain_id)) as Box<_>; + let state_version = cumulus_test_service::runtime::VERSION.state_version(); + + let block: parachains_common::Block = generate_genesis_block(&spec, state_version)?; + 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(Commands::ExportGenesisWasm(params)) => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); + let _ = builder.init(); + + let parachain_id = ParaId::from(params.parachain_id); + let spec = Box::new(cumulus_test_service::get_chain_spec(parachain_id)) as Box<_>; + let raw_wasm_blob = extract_genesis_wasm(&spec)?; + 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(()) + }, + None => { + let mut builder = sc_cli::LoggerBuilder::new(""); + builder.with_colors(true); + let _ = builder.init(); + + let collator_options = cli.run.collator_options(); + let tokio_runtime = sc_cli::build_runtime()?; + let tokio_handle = tokio_runtime.handle(); + let config = cli + .run + .normalize() + .create_configuration(&cli, tokio_handle.clone()) + .expect("Should be able to generate config"); + + let parachain_id = ParaId::from(cli.parachain_id); + let polkadot_cli = RelayChainCli::new( + &config, + [RelayChainCli::executable_name().to_string()] + .iter() + .chain(cli.relaychain_args.iter()), + ); + + let parachain_account = + AccountIdConversion::::into_account( + ¶chain_id, + ); + + let state_version = + RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); + + let block: parachains_common::Block = + generate_genesis_block(&config.chain_spec, state_version) + .map_err(|e| format!("{:?}", e))?; + let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); + + let tokio_handle = config.tokio_handle.clone(); + let polkadot_config = + SubstrateCli::create_configuration(&polkadot_cli, &polkadot_cli, tokio_handle) + .map_err(|err| format!("Relay chain argument error: {}", err))?; + + tracing::info!("Parachain id: {:?}", parachain_id); + tracing::info!("Parachain Account: {}", parachain_account); + tracing::info!("Parachain genesis state: {}", genesis_state); + tracing::info!( + "Is collating: {}", + if config.role.is_authority() { "yes" } else { "no" } + ); + + let collator_key = Some(CollatorPair::generate().0); + + let consensus = cli + .use_null_consensus + .then(|| { + tracing::info!("Using null consensus."); + cumulus_test_service::Consensus::Null + }) + .unwrap_or(cumulus_test_service::Consensus::RelayChain); + + let (mut task_manager, _, _, _, _) = tokio_runtime + .block_on(cumulus_test_service::start_node_impl( + config, + collator_key, + polkadot_config, + parachain_id, + cli.disable_block_announcements.then(wrap_announce_block), + |_| Ok(jsonrpsee::RpcModule::new(())), + consensus, + collator_options, + )) + .expect("could not create Cumulus test service"); + + tokio_runtime + .block_on(task_manager.future()) + .expect("Could not run service to completion"); + Ok(()) + }, + } +} diff --git a/zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.feature b/zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.feature new file mode 100644 index 0000000000..6f84041c07 --- /dev/null +++ b/zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.feature @@ -0,0 +1,17 @@ +Description: Small Network test +Network: ./0001-sync_blocks_from_tip_without_connected_collator.toml +Creds: config + + +alice: is up +bob: is up +charlie: is up +dave: is up +ferdie: is up +eve: is up + +alice: parachain 2000 is registered within 225 seconds +alice: parachain 2000 block height is at least 10 within 250 seconds + +ferdie: reports block height is at least 12 within 250 seconds +eve: reports block height is at least 12 within 250 seconds diff --git a/zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.toml b/zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.toml new file mode 100644 index 0000000000..8f2d8a3a8c --- /dev/null +++ b/zombienet_tests/0001-sync_blocks_from_tip_without_connected_collator.toml @@ -0,0 +1,52 @@ +[relaychain] +default_image = "docker.io/paritypr/polkadot-debug:master" +default_command = "polkadot" +default_args = [ "-lparachain=debug" ] + +chain = "rococo-local" + + [[relaychain.nodes]] + name = "alice" + validator = true + + [[relaychain.nodes]] + name = "bob" + image = "docker.io/paritypr/polkadot-debug:5236-0.9.18-c55660e9-be16bd72" + validator = true + args = ["--database=paritydb-experimental"] + +[[parachains]] +id = 2000 +cumulus_based = true + + # run charlie as parachain collator + [[parachains.collators]] + name = "charlie" + validator = true + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["-lparachain=debug"] + + # run dave as parachain full node + [[parachains.collators]] + name = "dave" + validator = false + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["-lparachain=debug"] + + # run eve as parachain full node that is only connected to dave + [[parachains.collators]] + name = "eve" + validator = false + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["--reserved-only", "--reserved-nodes {{'dave'|zombie}}"] + + # run ferdie as parachain full node that is only connected to dave + [[parachains.collators]] + name = "ferdie" + validator = false + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["--reserved-only", "--reserved-nodes {{'dave'|zombie}}"] \ No newline at end of file diff --git a/zombienet_tests/0002-pov_recovery.feature b/zombienet_tests/0002-pov_recovery.feature new file mode 100644 index 0000000000..5f33c5ff4a --- /dev/null +++ b/zombienet_tests/0002-pov_recovery.feature @@ -0,0 +1,13 @@ +Description: Small Network test +Network: ./0002-pov_recovery.toml +Creds: config + + +alice: is up +bob: is up +charlie: is up +dave: is up +eve: is up +alice: parachain 2000 is registered within 225 seconds +dave: reports block height is at least 7 within 250 seconds +eve: reports block height is at least 7 within 250 seconds diff --git a/zombienet_tests/0002-pov_recovery.toml b/zombienet_tests/0002-pov_recovery.toml new file mode 100644 index 0000000000..5913cf8275 --- /dev/null +++ b/zombienet_tests/0002-pov_recovery.toml @@ -0,0 +1,46 @@ +[relaychain] +default_image = "docker.io/paritypr/polkadot-debug:master" +default_command = "polkadot" +default_args = [ "-lparachain=debug" ] + +chain = "rococo-local" + + [[relaychain.nodes]] + name = "alice" + validator = true + + [[relaychain.nodes]] + name = "bob" + image = "docker.io/paritypr/polkadot-debug:5236-0.9.18-c55660e9-be16bd72" + validator = true + args = ["--database=paritydb-experimental"] + +[[parachains]] +id = 2000 +cumulus_based = true + + # run charlie as parachain collator + [[parachains.collators]] + name = "charlie" + validator = true + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["-lparachain=debug"] + + # Run dave as parachain collator and eve as parachain full node + # + # They will need to recover the pov blocks through availability recovery. + [[parachains.collators]] + name = "dave" + validator = true + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["--reserved-only", "--reserved-nodes {{'charlie'|zombie}}", "--use-null-consensus", "--disable-block-announcements"] + + # run eve as parachain full node that is only connected to dave + [[parachains.collators]] + name = "eve" + validator = false + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["--reserved-only", "--reserved-nodes {{'charlie'|zombie}}", "--use-null-consensus", "--disable-block-announcements"] diff --git a/zombienet_tests/0003-test_full_node_catching_up.feature b/zombienet_tests/0003-test_full_node_catching_up.feature new file mode 100644 index 0000000000..f7e5e4df3a --- /dev/null +++ b/zombienet_tests/0003-test_full_node_catching_up.feature @@ -0,0 +1,13 @@ +Description: Small Network test +Network: ./0003-test_full_node_catching_up.toml +Creds: config + + +alice: is up +bob: is up +charlie: is up +dave: is up +eve: is up +alice: parachain 2000 is registered within 225 seconds +dave: reports block height is at least 7 within 250 seconds +eve: reports block height is at least 7 within 250 seconds diff --git a/zombienet_tests/0003-test_full_node_catching_up.toml b/zombienet_tests/0003-test_full_node_catching_up.toml new file mode 100644 index 0000000000..59ec912181 --- /dev/null +++ b/zombienet_tests/0003-test_full_node_catching_up.toml @@ -0,0 +1,44 @@ +[relaychain] +default_image = "docker.io/paritypr/polkadot-debug:master" +default_command = "polkadot" +default_args = [ "-lparachain=debug" ] + +chain = "rococo-local" + + [[relaychain.nodes]] + name = "alice" + validator = true + + [[relaychain.nodes]] + name = "bob" + image = "docker.io/paritypr/polkadot-debug:5236-0.9.18-c55660e9-be16bd72" + validator = true + args = ["--database=paritydb-experimental"] + +[[parachains]] +id = 2000 +cumulus_based = true + + # run charlie as parachain collator + [[parachains.collators]] + name = "charlie" + validator = true + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["-lparachain=debug"] + + # run cumulus dave (a parachain full node) and wait for it to sync some blocks + [[parachains.collators]] + name = "dave" + validator = false + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["--reserved-only", "--reserved-nodes {{'charlie'|zombie}}"] + + # run cumulus eve (a parachain full node) and wait for it to sync some blocks + [[parachains.collators]] + name = "eve" + validator = false + image = "docker.io/parity/polkadot-collator:latest" + command = "test-collator" + args = ["--reserved-only", "--reserved-nodes {{'charlie'|zombie}}"] From 820153b7851bb5915d4aaf70532d52c227d0eb7d Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Thu, 19 May 2022 15:38:57 -0400 Subject: [PATCH 061/238] Fix Cumulus Compile (into_account_truncating) (#1277) * fix cumulus compile * Update Cargo.lock --- Cargo.lock | 605 ++++++++++++++++++++------------------- test/service/src/main.rs | 2 +- 2 files changed, 309 insertions(+), 298 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7310f44ccd..250dafa437 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2183,7 +2183,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.1.17", + "clap 3.1.18", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2797,7 +2797,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", ] @@ -2815,7 +2815,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -2837,7 +2837,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "Inflector", "chrono", @@ -2887,7 +2887,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2898,7 +2898,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2914,7 +2914,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -2942,7 +2942,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "bitflags", "frame-metadata", @@ -2972,7 +2972,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2984,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2996,7 +2996,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro2", "quote", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "log", @@ -3023,7 +3023,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "sp-api", @@ -3047,7 +3047,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "sp-api", @@ -3904,7 +3904,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-primitives", "bitvec", @@ -3997,7 +3997,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "polkadot-primitives", @@ -4830,6 +4830,15 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +[[package]] +name = "memfd" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6627dc657574b49d6ad27105ed671822be56e0d2547d413bfbf3e8d8fa92e7a" +dependencies = [ + "libc", +] + [[package]] name = "memmap2" version = "0.2.3" @@ -4898,7 +4907,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "coarsetime", "crossbeam-queue", @@ -4907,7 +4916,7 @@ dependencies = [ "futures-timer", "nanorand", "thiserror", - "tracing-gum", + "tracing", ] [[package]] @@ -5336,6 +5345,35 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +[[package]] +name = "orchestra" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +dependencies = [ + "async-trait", + "dyn-clonable", + "futures 0.3.21", + "futures-timer", + "metered-channel", + "orchestra-proc-macro", + "pin-project 1.0.10", + "thiserror", + "tracing", +] + +[[package]] +name = "orchestra-proc-macro" +version = "0.9.22" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +dependencies = [ + "expander 0.0.6", + "petgraph", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "ordered-float" version = "1.1.1" @@ -5363,7 +5401,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -5380,7 +5418,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5394,7 +5432,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -5410,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -5426,7 +5464,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -5441,7 +5479,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5465,7 +5503,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5485,7 +5523,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5500,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "beefy-primitives", "frame-support", @@ -5516,7 +5554,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5539,7 +5577,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5557,7 +5595,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5574,7 +5612,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5596,7 +5634,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5617,7 +5655,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5662,7 +5700,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5679,7 +5717,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "bitflags", "frame-benchmarking", @@ -5706,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "bitflags", "parity-scale-codec", @@ -5721,7 +5759,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro2", "quote", @@ -5731,7 +5769,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5748,7 +5786,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5761,7 +5799,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5777,7 +5815,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5800,7 +5838,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5813,7 +5851,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5831,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5846,7 +5884,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5907,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5885,7 +5923,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5905,7 +5943,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5922,7 +5960,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5939,7 +5977,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5957,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5972,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5987,7 +6025,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6001,7 +6039,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6017,7 +6055,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6036,7 +6074,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6053,7 +6091,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6076,7 +6114,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6092,7 +6130,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6107,7 +6145,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6121,7 +6159,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6136,7 +6174,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6152,7 +6190,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6173,7 +6211,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6189,7 +6227,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6203,7 +6241,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6226,7 +6264,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6237,7 +6275,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "sp-arithmetic", @@ -6246,7 +6284,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6275,7 +6313,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6293,7 +6331,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6312,7 +6350,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-support", "frame-system", @@ -6329,7 +6367,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6344,7 +6382,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6355,7 +6393,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6372,7 +6410,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6387,7 +6425,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6403,7 +6441,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6418,7 +6456,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "frame-system", @@ -6436,7 +6474,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6949,7 +6987,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6964,7 +7002,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6978,7 +7016,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "derive_more", "fatality", @@ -7001,7 +7039,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "fatality", "futures 0.3.21", @@ -7022,7 +7060,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7047,7 +7085,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7087,7 +7125,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "always-assert", "fatality", @@ -7108,7 +7146,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7121,7 +7159,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "derive_more", "fatality", @@ -7144,7 +7182,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7158,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7178,7 +7216,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "always-assert", "async-trait", @@ -7199,7 +7237,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7217,7 +7255,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "derive_more", @@ -7246,7 +7284,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "futures 0.3.21", @@ -7266,7 +7304,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "fatality", @@ -7285,7 +7323,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7300,7 +7338,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7318,7 +7356,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7333,7 +7371,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7350,7 +7388,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "fatality", "futures 0.3.21", @@ -7369,7 +7407,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7386,7 +7424,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "fatality", @@ -7404,7 +7442,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "always-assert", "assert_matches", @@ -7428,13 +7466,14 @@ dependencies = [ "sp-maybe-compressed-blob", "sp-tracing", "sp-wasm-interface", + "tempfile", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7450,7 +7489,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7461,14 +7500,13 @@ dependencies = [ "sp-api", "sp-authority-discovery", "sp-consensus-babe", - "sp-core", "tracing-gum", ] [[package]] name = "polkadot-node-jaeger" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-std", "lazy_static", @@ -7486,7 +7524,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bs58", "futures 0.3.21", @@ -7505,7 +7543,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-trait", "derive_more", @@ -7520,12 +7558,13 @@ dependencies = [ "sc-network", "strum 0.24.0", "thiserror", + "tracing-gum", ] [[package]] name = "polkadot-node-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7547,7 +7586,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7557,7 +7596,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7575,14 +7614,14 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "derive_more", "futures 0.3.21", + "orchestra", "polkadot-node-jaeger", "polkadot-node-network-protocol", "polkadot-node-primitives", - "polkadot-overseer-gen", "polkadot-primitives", "polkadot-statement-table", "sc-network", @@ -7594,7 +7633,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-trait", "derive_more", @@ -7627,58 +7666,29 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "futures 0.3.21", "futures-timer", "lru 0.7.5", + "orchestra", "parity-util-mem", "parking_lot 0.12.0", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem-types", - "polkadot-overseer-gen", "polkadot-primitives", "sc-client-api", "sp-api", + "sp-core", "tracing-gum", ] -[[package]] -name = "polkadot-overseer-gen" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" -dependencies = [ - "async-trait", - "futures 0.3.21", - "futures-timer", - "metered-channel", - "pin-project 1.0.10", - "polkadot-node-network-protocol", - "polkadot-node-primitives", - "polkadot-overseer-gen-proc-macro", - "thiserror", - "tracing-gum", -] - -[[package]] -name = "polkadot-overseer-gen-proc-macro" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" -dependencies = [ - "expander 0.0.6", - "petgraph", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "polkadot-parachain" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "derive_more", "frame-support", @@ -7772,7 +7782,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7787,7 +7797,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitvec", "frame-system", @@ -7817,7 +7827,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7849,7 +7859,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-primitives", "bitvec", @@ -7935,7 +7945,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-primitives", "bitvec", @@ -7982,7 +7992,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "polkadot-primitives", @@ -7994,7 +8004,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bs58", "parity-scale-codec", @@ -8006,7 +8016,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "bitflags", "bitvec", @@ -8049,7 +8059,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "async-trait", "beefy-gadget", @@ -8152,7 +8162,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8173,7 +8183,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8183,7 +8193,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8208,7 +8218,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-primitives", "bitvec", @@ -8270,7 +8280,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-benchmarking", "frame-system", @@ -8850,7 +8860,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8978,7 +8988,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9055,7 +9065,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "polkadot-primitives", @@ -9225,7 +9235,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "sp-core", @@ -9236,7 +9246,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -9263,7 +9273,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9286,7 +9296,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9302,7 +9312,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9319,7 +9329,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9330,7 +9340,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "chrono", "clap 3.1.18", @@ -9369,7 +9379,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "fnv", "futures 0.3.21", @@ -9397,7 +9407,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "hash-db", "kvdb", @@ -9422,7 +9432,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -9446,7 +9456,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -9475,7 +9485,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "fork-tree", @@ -9518,7 +9528,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9540,7 +9550,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9553,7 +9563,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -9578,7 +9588,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "sc-client-api", "sp-authorship", @@ -9589,7 +9599,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9616,7 +9626,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "environmental", "parity-scale-codec", @@ -9633,7 +9643,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "parity-scale-codec", @@ -9648,7 +9658,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9666,7 +9676,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "ahash", "async-trait", @@ -9706,7 +9716,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9727,7 +9737,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9744,7 +9754,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "hex", @@ -9759,7 +9769,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "asynchronous-codec", @@ -9811,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "libp2p", @@ -9824,7 +9834,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "ahash", "futures 0.3.21", @@ -9841,7 +9851,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "libp2p", @@ -9861,7 +9871,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "bitflags", "either", @@ -9890,7 +9900,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "bytes", "fnv", @@ -9918,7 +9928,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "libp2p", @@ -9931,7 +9941,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9940,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "hash-db", @@ -9970,7 +9980,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9993,7 +10003,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10006,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "directories", @@ -10071,7 +10081,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "parity-scale-codec", @@ -10085,7 +10095,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10104,7 +10114,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "libc", @@ -10123,7 +10133,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "chrono", "futures 0.3.21", @@ -10141,7 +10151,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "ansi_term", "atty", @@ -10172,7 +10182,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10183,7 +10193,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10210,7 +10220,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "log", @@ -10223,7 +10233,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10235,9 +10245,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8980cafbe98a7ee7a9cc16b32ebce542c77883f512d83fbf2ddc8f6a85ea74c9" +checksum = "c46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99a" dependencies = [ "bitvec", "cfg-if 1.0.0", @@ -10249,9 +10259,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4260c630e8a8a33429d1688eff2f163f24c65a4e1b1578ef6b565061336e4b6f" +checksum = "50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10662,7 +10672,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "enumn", "parity-scale-codec", @@ -10738,7 +10748,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "hash-db", "log", @@ -10755,7 +10765,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "blake2", "proc-macro-crate", @@ -10767,7 +10777,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10780,7 +10790,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "integer-sqrt", "num-traits", @@ -10795,7 +10805,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10808,7 +10818,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "parity-scale-codec", @@ -10820,7 +10830,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "sp-api", @@ -10832,7 +10842,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "log", @@ -10850,7 +10860,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -10869,7 +10879,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "parity-scale-codec", @@ -10887,7 +10897,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "merlin", @@ -10910,7 +10920,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10924,7 +10934,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10937,7 +10947,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "base58", "bitflags", @@ -10983,7 +10993,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "blake2", "byteorder", @@ -10997,7 +11007,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro2", "quote", @@ -11008,7 +11018,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11017,7 +11027,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro2", "quote", @@ -11027,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "environmental", "parity-scale-codec", @@ -11038,7 +11048,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "finality-grandpa", "log", @@ -11056,7 +11066,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11070,7 +11080,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "hash-db", @@ -11095,7 +11105,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "lazy_static", "sp-core", @@ -11106,7 +11116,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -11123,7 +11133,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "thiserror", "zstd", @@ -11132,7 +11142,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "parity-scale-codec", @@ -11147,7 +11157,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11161,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "sp-api", "sp-core", @@ -11171,7 +11181,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "backtrace", "lazy_static", @@ -11181,7 +11191,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "rustc-hash", "serde", @@ -11191,7 +11201,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "either", "hash256-std-hasher", @@ -11213,7 +11223,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11230,7 +11240,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "Inflector", "proc-macro-crate", @@ -11242,7 +11252,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "parity-scale-codec", @@ -11256,7 +11266,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "serde", "serde_json", @@ -11265,7 +11275,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11279,7 +11289,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11290,7 +11300,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "hash-db", "log", @@ -11312,12 +11322,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11330,7 +11340,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "log", "sp-core", @@ -11343,7 +11353,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures-timer", @@ -11359,7 +11369,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "sp-std", @@ -11371,7 +11381,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "sp-api", "sp-runtime", @@ -11380,7 +11390,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "log", @@ -11396,7 +11406,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "hash-db", "memory-db", @@ -11412,7 +11422,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11429,7 +11439,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11440,7 +11450,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "impl-trait-for-tuples", "log", @@ -11721,7 +11731,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "platforms", ] @@ -11729,7 +11739,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11750,7 +11760,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures-util", "hyper", @@ -11763,7 +11773,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "jsonrpsee", "log", @@ -11784,7 +11794,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "async-trait", "futures 0.3.21", @@ -11810,7 +11820,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11820,7 +11830,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11831,7 +11841,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "ansi_term", "build-helper", @@ -11938,7 +11948,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "polkadot-primitives", @@ -12216,7 +12226,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12227,7 +12237,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12356,7 +12366,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#8c80d3691bcc36d2bcbe105848e3639105e265a7" +source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12872,6 +12882,7 @@ dependencies = [ "libc", "log", "mach", + "memfd", "memoffset", "more-asserts", "rand 0.8.5", @@ -12936,7 +12947,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "beefy-primitives", "bitvec", @@ -13025,7 +13036,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "polkadot-primitives", @@ -13266,7 +13277,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13279,7 +13290,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-support", "frame-system", @@ -13299,7 +13310,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "frame-benchmarking", "frame-support", @@ -13317,7 +13328,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#1a445d96bdaf3fe781ce642368d0e9d1b2ad3b39" +source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" dependencies = [ "Inflector", "proc-macro2", diff --git a/test/service/src/main.rs b/test/service/src/main.rs index 791621dafa..6bb0a3dc9b 100644 --- a/test/service/src/main.rs +++ b/test/service/src/main.rs @@ -121,7 +121,7 @@ fn main() -> Result<(), sc_cli::Error> { ); let parachain_account = - AccountIdConversion::::into_account( + AccountIdConversion::::into_account_truncating( ¶chain_id, ); From 9405a969f06b323becee6bda75570c99bb7b1515 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 20 May 2022 13:43:04 +0100 Subject: [PATCH 062/238] dir restructure to support more CGP (#1266) * rerame res to chain-specs * split polkadot-parachains dir * rename dir parachains-common to common Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Wilfried Kopp Co-authored-by: Chevdor --- .github/ISSUE_TEMPLATE/release.md | 6 +- .github/pr-custom-review.yml | 4 +- .github/workflows/release-02_create-draft.yml | 48 +++++++++++--- .github/workflows/srtool.yml | 65 ++++++++++++------- .gitlab-ci.yml | 2 +- Cargo.toml | 21 +++--- README.md | 2 +- docker/docker-compose.yml | 4 +- docker/injected.Dockerfile | 2 +- parachain-template/runtime/Cargo.toml | 2 +- .../chain-specs}/contracts-rococo.json | 0 .../chain-specs}/shell-statemint-head-data | 0 .../chain-specs}/shell-statemint.json | 0 .../chain-specs}/statemine.json | 0 .../chain-specs}/statemine_genesis.json | 0 .../statemine_genesis_values.json | 0 .../chain-specs}/statemint.json | 0 .../chain-specs}/statemint_genesis.json | 0 .../statemint_genesis_values.json | 0 .../statemint_genesis_values.scale | 0 .../res => parachains/chain-specs}/tick.json | 0 .../res => parachains/chain-specs}/track.json | 0 .../res => parachains/chain-specs}/trick.json | 0 .../chain-specs}/westmint.json | 0 .../chain-specs}/westmint_genesis.json | 0 .../chain-specs}/westmint_genesis_values.json | 0 .../common}/Cargo.toml | 0 .../common}/src/impls.rs | 0 .../common}/src/lib.rs | 0 .../common}/src/xcm_config.rs | 0 .../pallets/parachain-info/Cargo.toml | 0 .../pallets/parachain-info/src/lib.rs | 0 .../pallets/ping/Cargo.toml | 0 .../pallets/ping/src/lib.rs | 0 .../runtimes/assets}/statemine/Cargo.toml | 26 ++++---- .../runtimes/assets/statemine}/build.rs | 0 .../assets/statemine}/src/constants.rs | 0 .../runtimes/assets}/statemine/src/lib.rs | 0 .../statemine}/src/weights/block_weights.rs | 0 .../src/weights/cumulus_pallet_xcmp_queue.rs | 0 .../src/weights/extrinsic_weights.rs | 0 .../statemine/src/weights/frame_system.rs | 0 .../assets}/statemine/src/weights/mod.rs | 0 .../statemine/src/weights/pallet_assets.rs | 0 .../statemine/src/weights/pallet_balances.rs | 0 .../src/weights/pallet_collator_selection.rs | 0 .../statemine/src/weights/pallet_multisig.rs | 0 .../statemine/src/weights/pallet_proxy.rs | 0 .../statemine/src/weights/pallet_session.rs | 0 .../statemine/src/weights/pallet_timestamp.rs | 0 .../statemine/src/weights/pallet_uniques.rs | 0 .../statemine/src/weights/pallet_utility.rs | 0 .../src/weights/paritydb_weights.rs | 0 .../statemine}/src/weights/rocksdb_weights.rs | 0 .../assets}/statemine/src/xcm_config.rs | 0 .../runtimes/assets}/statemint/Cargo.toml | 26 ++++---- .../runtimes/assets/statemint}/build.rs | 0 .../assets}/statemint/src/constants.rs | 0 .../runtimes/assets}/statemint/src/lib.rs | 0 .../statemint}/src/weights/block_weights.rs | 0 .../src/weights/cumulus_pallet_xcmp_queue.rs | 0 .../src/weights/extrinsic_weights.rs | 0 .../statemint/src/weights/frame_system.rs | 0 .../assets}/statemint/src/weights/mod.rs | 0 .../statemint/src/weights/pallet_assets.rs | 0 .../statemint/src/weights/pallet_balances.rs | 0 .../src/weights/pallet_collator_selection.rs | 0 .../statemint/src/weights/pallet_multisig.rs | 0 .../statemint/src/weights/pallet_proxy.rs | 0 .../statemint/src/weights/pallet_session.rs | 0 .../statemint/src/weights/pallet_timestamp.rs | 0 .../statemint/src/weights/pallet_uniques.rs | 0 .../statemint/src/weights/pallet_utility.rs | 0 .../src/weights/paritydb_weights.rs | 0 .../statemint}/src/weights/rocksdb_weights.rs | 0 .../assets}/statemint/src/xcm_config.rs | 0 .../runtimes/assets}/westmint/Cargo.toml | 26 ++++---- .../runtimes/assets/westmint}/build.rs | 0 .../assets}/westmint/src/constants.rs | 0 .../runtimes/assets}/westmint/src/lib.rs | 0 .../westmint}/src/weights/block_weights.rs | 0 .../src/weights/cumulus_pallet_xcmp_queue.rs | 0 .../src/weights/extrinsic_weights.rs | 0 .../westmint/src/weights/frame_system.rs | 0 .../assets}/westmint/src/weights/mod.rs | 0 .../westmint/src/weights/pallet_assets.rs | 0 .../westmint/src/weights/pallet_balances.rs | 0 .../src/weights/pallet_collator_selection.rs | 0 .../westmint/src/weights/pallet_multisig.rs | 0 .../westmint/src/weights/pallet_proxy.rs | 0 .../westmint/src/weights/pallet_session.rs | 0 .../westmint/src/weights/pallet_timestamp.rs | 0 .../westmint/src/weights/pallet_uniques.rs | 0 .../westmint/src/weights/pallet_utility.rs | 0 .../westmint}/src/weights/paritydb_weights.rs | 0 .../westmint}/src/weights/rocksdb_weights.rs | 0 .../assets}/westmint/src/xcm_config.rs | 0 .../contracts}/contracts-rococo/Cargo.toml | 24 +++---- .../contracts}/contracts-rococo/README.md | 0 .../contracts/contracts-rococo}/build.rs | 0 .../contracts-rococo/contracts-overview.svg | 0 .../contracts-rococo}/src/constants.rs | 0 .../contracts-rococo/src/contracts.rs | 0 .../contracts}/contracts-rococo/src/lib.rs | 0 .../src/weights/block_weights.rs | 0 .../src/weights/extrinsic_weights.rs | 0 .../contracts-rococo/src/weights/mod.rs | 0 .../src/weights/paritydb_weights.rs | 0 .../src/weights/rocksdb_weights.rs | 0 .../contracts-rococo/src/xcm_config.rs | 0 .../runtimes/starters}/seedling/Cargo.toml | 8 +-- .../runtimes/starters/seedling}/build.rs | 0 .../runtimes/starters}/seedling/src/lib.rs | 0 .../runtimes/starters}/shell/Cargo.toml | 12 ++-- .../runtimes/starters/shell}/build.rs | 0 .../runtimes/starters}/shell/src/lib.rs | 0 .../starters}/shell/src/xcm_config.rs | 0 .../testing}/rococo-parachain/Cargo.toml | 22 +++---- .../testing/rococo-parachain}/build.rs | 0 .../testing}/rococo-parachain/src/lib.rs | 0 .../Cargo.toml | 18 ++--- .../build.rs | 0 .../src/chain_spec.rs | 0 .../src/cli.rs | 0 .../src/command.rs | 14 ++-- .../src/main.rs | 0 .../src/rpc.rs | 0 .../src/service.rs | 0 .../tests/benchmark_storage_works.rs | 0 .../tests/common.rs | 0 .../tests/polkadot_argument_parsing.rs | 0 .../tests/polkadot_mdns_issue.rs | 0 .../tests/purge_chain_works.rs | 0 .../tests/running_the_node_and_interrupt.rs | 0 scripts/benchmarks-ci.sh | 2 +- scripts/benchmarks.sh | 6 +- scripts/generate_genesis_value.sh | 6 +- test/service/Cargo.toml | 2 +- 138 files changed, 197 insertions(+), 151 deletions(-) rename {polkadot-parachains/res => parachains/chain-specs}/contracts-rococo.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/shell-statemint-head-data (100%) rename {polkadot-parachains/res => parachains/chain-specs}/shell-statemint.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemine.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemine_genesis.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemine_genesis_values.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemint.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemint_genesis.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemint_genesis_values.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/statemint_genesis_values.scale (100%) rename {polkadot-parachains/res => parachains/chain-specs}/tick.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/track.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/trick.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/westmint.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/westmint_genesis.json (100%) rename {polkadot-parachains/res => parachains/chain-specs}/westmint_genesis_values.json (100%) rename {polkadot-parachains/parachains-common => parachains/common}/Cargo.toml (100%) rename {polkadot-parachains/parachains-common => parachains/common}/src/impls.rs (100%) rename {polkadot-parachains/parachains-common => parachains/common}/src/lib.rs (100%) rename {polkadot-parachains/parachains-common => parachains/common}/src/xcm_config.rs (100%) rename {polkadot-parachains => parachains}/pallets/parachain-info/Cargo.toml (100%) rename {polkadot-parachains => parachains}/pallets/parachain-info/src/lib.rs (100%) rename {polkadot-parachains => parachains}/pallets/ping/Cargo.toml (100%) rename {polkadot-parachains => parachains}/pallets/ping/src/lib.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/Cargo.toml (86%) rename {polkadot-parachains/contracts-rococo => parachains/runtimes/assets/statemine}/build.rs (100%) rename {polkadot-parachains/contracts-rococo => parachains/runtimes/assets/statemine}/src/constants.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/lib.rs (100%) rename {polkadot-parachains/contracts-rococo => parachains/runtimes/assets/statemine}/src/weights/block_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/cumulus_pallet_xcmp_queue.rs (100%) rename {polkadot-parachains/contracts-rococo => parachains/runtimes/assets/statemine}/src/weights/extrinsic_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/frame_system.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/mod.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_assets.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_balances.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_collator_selection.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_multisig.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_proxy.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_session.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_timestamp.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_uniques.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/weights/pallet_utility.rs (100%) rename {polkadot-parachains/contracts-rococo => parachains/runtimes/assets/statemine}/src/weights/paritydb_weights.rs (100%) rename {polkadot-parachains/contracts-rococo => parachains/runtimes/assets/statemine}/src/weights/rocksdb_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemine/src/xcm_config.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/Cargo.toml (86%) rename {polkadot-parachains/statemine => parachains/runtimes/assets/statemint}/build.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/constants.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/lib.rs (100%) rename {polkadot-parachains/statemine => parachains/runtimes/assets/statemint}/src/weights/block_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/cumulus_pallet_xcmp_queue.rs (100%) rename {polkadot-parachains/statemine => parachains/runtimes/assets/statemint}/src/weights/extrinsic_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/frame_system.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/mod.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_assets.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_balances.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_collator_selection.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_multisig.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_proxy.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_session.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_timestamp.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_uniques.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/weights/pallet_utility.rs (100%) rename {polkadot-parachains/statemine => parachains/runtimes/assets/statemint}/src/weights/paritydb_weights.rs (100%) rename {polkadot-parachains/statemine => parachains/runtimes/assets/statemint}/src/weights/rocksdb_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/statemint/src/xcm_config.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/Cargo.toml (86%) rename {polkadot-parachains/statemint => parachains/runtimes/assets/westmint}/build.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/constants.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/lib.rs (100%) rename {polkadot-parachains/statemint => parachains/runtimes/assets/westmint}/src/weights/block_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/cumulus_pallet_xcmp_queue.rs (100%) rename {polkadot-parachains/statemint => parachains/runtimes/assets/westmint}/src/weights/extrinsic_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/frame_system.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/mod.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_assets.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_balances.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_collator_selection.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_multisig.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_proxy.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_session.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_timestamp.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_uniques.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/weights/pallet_utility.rs (100%) rename {polkadot-parachains/statemint => parachains/runtimes/assets/westmint}/src/weights/paritydb_weights.rs (100%) rename {polkadot-parachains/statemint => parachains/runtimes/assets/westmint}/src/weights/rocksdb_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/assets}/westmint/src/xcm_config.rs (100%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/Cargo.toml (87%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/README.md (100%) rename {polkadot-parachains/westmint => parachains/runtimes/contracts/contracts-rococo}/build.rs (100%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/contracts-overview.svg (100%) rename {polkadot-parachains/statemine => parachains/runtimes/contracts/contracts-rococo}/src/constants.rs (100%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/src/contracts.rs (100%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/src/lib.rs (100%) rename {polkadot-parachains/westmint => parachains/runtimes/contracts/contracts-rococo}/src/weights/block_weights.rs (100%) rename {polkadot-parachains/westmint => parachains/runtimes/contracts/contracts-rococo}/src/weights/extrinsic_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/src/weights/mod.rs (100%) rename {polkadot-parachains/westmint => parachains/runtimes/contracts/contracts-rococo}/src/weights/paritydb_weights.rs (100%) rename {polkadot-parachains/westmint => parachains/runtimes/contracts/contracts-rococo}/src/weights/rocksdb_weights.rs (100%) rename {polkadot-parachains => parachains/runtimes/contracts}/contracts-rococo/src/xcm_config.rs (100%) rename {polkadot-parachains => parachains/runtimes/starters}/seedling/Cargo.toml (88%) rename {polkadot-parachains/rococo-parachain => parachains/runtimes/starters/seedling}/build.rs (100%) rename {polkadot-parachains => parachains/runtimes/starters}/seedling/src/lib.rs (100%) rename {polkadot-parachains => parachains/runtimes/starters}/shell/Cargo.toml (86%) rename {polkadot-parachains/seedling => parachains/runtimes/starters/shell}/build.rs (100%) rename {polkadot-parachains => parachains/runtimes/starters}/shell/src/lib.rs (100%) rename {polkadot-parachains => parachains/runtimes/starters}/shell/src/xcm_config.rs (100%) rename {polkadot-parachains => parachains/runtimes/testing}/rococo-parachain/Cargo.toml (83%) rename {polkadot-parachains/shell => parachains/runtimes/testing/rococo-parachain}/build.rs (100%) rename {polkadot-parachains => parachains/runtimes/testing}/rococo-parachain/src/lib.rs (100%) rename {polkadot-parachains => polkadot-parachain}/Cargo.toml (89%) rename {polkadot-parachains => polkadot-parachain}/build.rs (100%) rename {polkadot-parachains => polkadot-parachain}/src/chain_spec.rs (100%) rename {polkadot-parachains => polkadot-parachain}/src/cli.rs (100%) rename {polkadot-parachains => polkadot-parachain}/src/command.rs (98%) rename {polkadot-parachains => polkadot-parachain}/src/main.rs (100%) rename {polkadot-parachains => polkadot-parachain}/src/rpc.rs (100%) rename {polkadot-parachains => polkadot-parachain}/src/service.rs (100%) rename {polkadot-parachains => polkadot-parachain}/tests/benchmark_storage_works.rs (100%) rename {polkadot-parachains => polkadot-parachain}/tests/common.rs (100%) rename {polkadot-parachains => polkadot-parachain}/tests/polkadot_argument_parsing.rs (100%) rename {polkadot-parachains => polkadot-parachain}/tests/polkadot_mdns_issue.rs (100%) rename {polkadot-parachains => polkadot-parachain}/tests/purge_chain_works.rs (100%) rename {polkadot-parachains => polkadot-parachain}/tests/running_the_node_and_interrupt.rs (100%) diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md index 342213360d..702fec940c 100644 --- a/.github/ISSUE_TEMPLATE/release.md +++ b/.github/ISSUE_TEMPLATE/release.md @@ -150,7 +150,7 @@ Until #631 is done, running the benchmarks is a manual process: 5. From the root directory run `nohup ./scripts/benchmarks.sh &` (it will take quite a few hours) 6. Checkout in your local machine to the branch of cumulus that has the version of Statemine you want to release 7. `scp` from the host to your local machine the weights for Statemine, Westmint and Statemint you'll find in: - - `/polkadot-parachains/statemine/src/weights` - - `/polkadot-parachains/westmint/src/weights` - - `/polkadot-parachains/statemint/src/weights` + - `/parachains/runtimes/assets/statemine/src/weights` + - `/parachains/runtimes/assets/statemint/src/weights` + - `/parachains/runtimes/assets/westmint/src/weights` 8. Commit the changes in your local and create a PR diff --git a/.github/pr-custom-review.yml b/.github/pr-custom-review.yml index cc28140944..821f528405 100644 --- a/.github/pr-custom-review.yml +++ b/.github/pr-custom-review.yml @@ -6,7 +6,7 @@ action-review-team: ci rules: - name: Runtime files check_type: changed_files - condition: ^polkadot-parachains/(statemine|statemint)/src/[^/]+\.rs$ + condition: ^parachains/runtimes/assets/(statemine|statemint)/src/[^/]+\.rs$ all_distinct: - min_approvals: 1 teams: @@ -20,7 +20,7 @@ rules: condition: include: .* # excluding files from 'Runtime files' and 'CI team' rules - exclude: ^polkadot-parachains/(statemine|statemint)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.* + exclude: ^parachains/runtimes/assets/(statemine|statemint)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.* min_approvals: 2 teams: - core-devs diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index f189d5e266..5fa9a46d66 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -5,11 +5,11 @@ on: inputs: ref1: description: The 'from' tag to use for the diff - default: parachains-v7.0.0 + default: parachains-v9.0.0 required: true ref2: description: The 'to' tag to use for the diff - default: release-parachains-v8.0.0 + default: release-parachains-v10.0.0 required: true release_type: description: Pass "client" for client releases, leave empty otherwise @@ -42,8 +42,22 @@ jobs: build-runtimes: runs-on: ubuntu-latest strategy: - matrix: - runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "contracts-rococo"] + matrix: + include: + - category: assets + runtime: statemine + - category: assets + runtime: statemint + - category: assets + runtime: westmint + - category: contracts + runtime: contracts-rococo + - category: starters + runtime: seedling + - category: starters + runtime: shell + - category: testing + runtime: rococo-parachain steps: - name: Checkout sources uses: actions/checkout@v3 @@ -67,7 +81,7 @@ jobs: with: image: paritytech/srtool chain: ${{ matrix.runtime }} - runtime_dir: polkadot-parachains/${{ matrix.runtime }} + runtime_dir: parachains/runtimes/${{ matrix.category }}/${{ matrix.runtime }} - name: Store srtool digest to disk if: ${{ github.event.inputs.release_type != 'client' }} @@ -188,10 +202,24 @@ jobs: runs-on: ubuntu-latest needs: ["publish-draft-release"] env: - RUNTIME_DIR: polkadot-parachains + RUNTIME_DIR: parachains/runtimes strategy: - matrix: - runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "contracts-rococo"] + matrix: + include: + - category: assets + runtime: statemine + - category: assets + runtime: statemint + - category: assets + runtime: westmint + - category: contracts + runtime: contracts-rococo + - category: starters + runtime: seedling + - category: starters + runtime: shell + - category: testing + runtime: rococo-parachain steps: - name: Checkout sources uses: actions/checkout@v3 @@ -209,10 +237,10 @@ jobs: id: get-runtime-ver run: | echo "require './scripts/ci/github/runtime-version.rb'" > script.rb - echo "puts get_runtime(runtime: \"${{ matrix.runtime }}\", runtime_dir: \"$RUNTIME_DIR\")" >> script.rb + echo "puts get_runtime(runtime: \"${{ matrix.runtime }}\", runtime_dir: \"$RUNTIME_DIR/${{ matrix.category }}\")" >> script.rb echo "Current folder: $PWD" - ls "$RUNTIME_DIR/${{ matrix.runtime }}" + ls "$RUNTIME_DIR/${{ matrix.category }}/${{ matrix.runtime }}" runtime_ver=$(ruby script.rb) echo "Found version: >$runtime_ver<" echo "::set-output name=runtime_ver::$runtime_ver" diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index 42fdde095c..32640c5679 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -8,11 +8,14 @@ on: tags: - "*" - paths-ignore: - - "docker" - - "docs" - - "scripts" - - "test" + # paths-ignore: + # - "docker" + # - "docs" + # - "scripts" + # - "test" + # - "client" + paths: + - parachains/runtimes/**/* branches: - "release*" @@ -27,7 +30,21 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - chain: ["statemine", "westmint", "statemint", "rococo-parachain", "shell", "contracts-rococo"] + include: + - category: assets + runtime: statemine + - category: assets + runtime: statemint + - category: assets + runtime: westmint + - category: contracts + runtime: contracts-rococo + - category: starters + runtime: seedling + - category: starters + runtime: shell + - category: testing + runtime: rococo-parachain steps: - uses: actions/checkout@v3 with: @@ -37,25 +54,25 @@ jobs: id: srtool_build uses: chevdor/srtool-actions@v0.4.0 with: - chain: ${{ matrix.chain }} - runtime_dir: polkadot-parachains/${{ matrix.chain }} + chain: ${{ matrix.runtime }} + runtime_dir: parachains/runtimes/${{ matrix.category }}/${{ matrix.runtime }} - name: Summary run: | - echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.chain }}-srtool-digest.json - cat ${{ matrix.chain }}-srtool-digest.json + echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.runtime }}-srtool-digest.json + cat ${{ matrix.runtime }}-srtool-digest.json echo "Compact Runtime: ${{ steps.srtool_build.outputs.wasm }}" echo "Compressed Runtime: ${{ steps.srtool_build.outputs.wasm_compressed }}" # it takes a while to build the runtime, so let's save the artifact as soon as we have it - - name: Archive Artifacts for ${{ matrix.chain }} + - name: Archive Artifacts for ${{ matrix.runtime }} uses: actions/upload-artifact@v2 with: - name: ${{ matrix.chain }}-runtime + name: ${{ matrix.runtime }}-runtime path: | ${{ steps.srtool_build.outputs.wasm }} ${{ steps.srtool_build.outputs.wasm_compressed }} - ${{ matrix.chain }}-srtool-digest.json + ${{ matrix.runtime }}-srtool-digest.json # We now get extra information thanks to subwasm - name: Install subwasm @@ -69,29 +86,29 @@ jobs: run: | subwasm info ${{ steps.srtool_build.outputs.wasm }} subwasm info ${{ steps.srtool_build.outputs.wasm_compressed }} - subwasm --json info ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.chain }}-info.json - subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.chain }}-compressed-info.json + subwasm --json info ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-info.json + subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-compressed-info.json - name: Extract the metadata shell: bash run: | subwasm meta ${{ steps.srtool_build.outputs.wasm }} - subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.chain }}-metadata.json + subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json - name: Check the metadata diff shell: bash # the following subwasm call will error for chains that are not known and/or live, that includes shell for instance run: | - subwasm diff ${{ steps.srtool_build.outputs.wasm }} --chain-b ${{ matrix.chain }} || \ - echo "Subwasm call failed, check the logs. This is likely because ${{ matrix.chain }} is not known by subwasm" | \ - tee ${{ matrix.chain }}-diff.txt + subwasm diff ${{ steps.srtool_build.outputs.wasm }} --chain-b ${{ matrix.runtime }} || \ + echo "Subwasm call failed, check the logs. This is likely because ${{ matrix.runtime }} is not known by subwasm" | \ + tee ${{ matrix.runtime }}-diff.txt - name: Archive Subwasm results uses: actions/upload-artifact@v2 with: - name: ${{ matrix.chain }}-runtime + name: ${{ matrix.runtime }}-runtime path: | - ${{ matrix.chain }}-info.json - ${{ matrix.chain }}-compressed-info.json - ${{ matrix.chain }}-metadata.json - ${{ matrix.chain }}-diff.txt + ${{ matrix.runtime }}-info.json + ${{ matrix.runtime }}-compressed-info.json + ${{ matrix.runtime }}-metadata.json + ${{ matrix.runtime }}-diff.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e3510e9232..bbe63c4c06 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -224,7 +224,7 @@ benchmarks: - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" # push results to github - git checkout -b $BRANCHNAME - - git add polkadot-parachains/* + - git add parachains/* - git commit -m "[benchmarks] pr with weights" - git push origin $BRANCHNAME # create PR diff --git a/Cargo.toml b/Cargo.toml index f9a0bcc87a..9c6bd5af20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,16 +24,17 @@ members = [ "primitives/parachain-inherent", "primitives/timestamp", "primitives/utility", - "polkadot-parachains/", - "polkadot-parachains/pallets/parachain-info", - "polkadot-parachains/pallets/ping", - "polkadot-parachains/rococo-parachain", - "polkadot-parachains/shell", - "polkadot-parachains/parachains-common", - "polkadot-parachains/statemint", - "polkadot-parachains/statemine", - "polkadot-parachains/westmint", - "polkadot-parachains/contracts-rococo", + "polkadot-parachain/", + "parachains/common", + "parachains/pallets/parachain-info", + "parachains/pallets/ping", + "parachains/runtimes/testing/rococo-parachain", + "parachains/runtimes/starters/shell", + "parachains/runtimes/starters/seedling", + "parachains/runtimes/assets/statemint", + "parachains/runtimes/assets/statemine", + "parachains/runtimes/assets/westmint", + "parachains/runtimes/contracts/contracts-rococo", "test/client", "test/relay-sproof-builder", "test/relay-validation-worker-provider", diff --git a/README.md b/README.md index 58b802077d..2df7aa0583 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Refer to the [setup instructions below](#local-setup) to run a local network for ## Contracts 📝 -See [the `contracts-rococo` readme](polkadot-parachains/contracts-rococo/README.md) for details. +See [the `contracts-rococo` readme](parachains/runtimes/contracts/contracts-rococo/README.md) for details. ## Rococo 👑 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 0a0821984f..8344ad43bb 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -9,7 +9,7 @@ services: volumes: - "polkadot-data-alice:/data" - type: bind - source: ./test/parachain/res/polkadot_chainspec.json + source: ./test/parachain/chain-specs/polkadot_chainspec.json target: /chainspec.json read_only: true command: > @@ -38,7 +38,7 @@ services: volumes: - "polkadot-data-bob:/data" - type: bind - source: ./test/parachain/res/polkadot_chainspec.json + source: ./test/parachain/chain-specs/polkadot_chainspec.json target: /chainspec.json read_only: true command: > diff --git a/docker/injected.Dockerfile b/docker/injected.Dockerfile index a251758344..93d0561ca8 100644 --- a/docker/injected.Dockerfile +++ b/docker/injected.Dockerfile @@ -38,7 +38,7 @@ RUN apt-get update && \ COPY ./target/release/polkadot-parachain /usr/local/bin COPY ./target/release/polkadot-parachain.asc /usr/local/bin COPY ./target/release/polkadot-parachain.sha256 /usr/local/bin -COPY ./polkadot-parachains/res/*.json /specs/ +COPY ./parachains/chain-specs/*.json /specs/ USER polkadot diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index 63a499699c..77c8c12e12 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -73,7 +73,7 @@ cumulus-primitives-core = { path = "../../primitives/core", default-features = f cumulus-primitives-timestamp = { path = "../../primitives/timestamp", default-features = false } cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } pallet-collator-selection = { path = "../../pallets/collator-selection", default-features = false } -parachain-info = { path = "../../polkadot-parachains/pallets/parachain-info", default-features = false } +parachain-info = { path = "../../parachains/pallets/parachain-info", default-features = false } [features] default = [ diff --git a/polkadot-parachains/res/contracts-rococo.json b/parachains/chain-specs/contracts-rococo.json similarity index 100% rename from polkadot-parachains/res/contracts-rococo.json rename to parachains/chain-specs/contracts-rococo.json diff --git a/polkadot-parachains/res/shell-statemint-head-data b/parachains/chain-specs/shell-statemint-head-data similarity index 100% rename from polkadot-parachains/res/shell-statemint-head-data rename to parachains/chain-specs/shell-statemint-head-data diff --git a/polkadot-parachains/res/shell-statemint.json b/parachains/chain-specs/shell-statemint.json similarity index 100% rename from polkadot-parachains/res/shell-statemint.json rename to parachains/chain-specs/shell-statemint.json diff --git a/polkadot-parachains/res/statemine.json b/parachains/chain-specs/statemine.json similarity index 100% rename from polkadot-parachains/res/statemine.json rename to parachains/chain-specs/statemine.json diff --git a/polkadot-parachains/res/statemine_genesis.json b/parachains/chain-specs/statemine_genesis.json similarity index 100% rename from polkadot-parachains/res/statemine_genesis.json rename to parachains/chain-specs/statemine_genesis.json diff --git a/polkadot-parachains/res/statemine_genesis_values.json b/parachains/chain-specs/statemine_genesis_values.json similarity index 100% rename from polkadot-parachains/res/statemine_genesis_values.json rename to parachains/chain-specs/statemine_genesis_values.json diff --git a/polkadot-parachains/res/statemint.json b/parachains/chain-specs/statemint.json similarity index 100% rename from polkadot-parachains/res/statemint.json rename to parachains/chain-specs/statemint.json diff --git a/polkadot-parachains/res/statemint_genesis.json b/parachains/chain-specs/statemint_genesis.json similarity index 100% rename from polkadot-parachains/res/statemint_genesis.json rename to parachains/chain-specs/statemint_genesis.json diff --git a/polkadot-parachains/res/statemint_genesis_values.json b/parachains/chain-specs/statemint_genesis_values.json similarity index 100% rename from polkadot-parachains/res/statemint_genesis_values.json rename to parachains/chain-specs/statemint_genesis_values.json diff --git a/polkadot-parachains/res/statemint_genesis_values.scale b/parachains/chain-specs/statemint_genesis_values.scale similarity index 100% rename from polkadot-parachains/res/statemint_genesis_values.scale rename to parachains/chain-specs/statemint_genesis_values.scale diff --git a/polkadot-parachains/res/tick.json b/parachains/chain-specs/tick.json similarity index 100% rename from polkadot-parachains/res/tick.json rename to parachains/chain-specs/tick.json diff --git a/polkadot-parachains/res/track.json b/parachains/chain-specs/track.json similarity index 100% rename from polkadot-parachains/res/track.json rename to parachains/chain-specs/track.json diff --git a/polkadot-parachains/res/trick.json b/parachains/chain-specs/trick.json similarity index 100% rename from polkadot-parachains/res/trick.json rename to parachains/chain-specs/trick.json diff --git a/polkadot-parachains/res/westmint.json b/parachains/chain-specs/westmint.json similarity index 100% rename from polkadot-parachains/res/westmint.json rename to parachains/chain-specs/westmint.json diff --git a/polkadot-parachains/res/westmint_genesis.json b/parachains/chain-specs/westmint_genesis.json similarity index 100% rename from polkadot-parachains/res/westmint_genesis.json rename to parachains/chain-specs/westmint_genesis.json diff --git a/polkadot-parachains/res/westmint_genesis_values.json b/parachains/chain-specs/westmint_genesis_values.json similarity index 100% rename from polkadot-parachains/res/westmint_genesis_values.json rename to parachains/chain-specs/westmint_genesis_values.json diff --git a/polkadot-parachains/parachains-common/Cargo.toml b/parachains/common/Cargo.toml similarity index 100% rename from polkadot-parachains/parachains-common/Cargo.toml rename to parachains/common/Cargo.toml diff --git a/polkadot-parachains/parachains-common/src/impls.rs b/parachains/common/src/impls.rs similarity index 100% rename from polkadot-parachains/parachains-common/src/impls.rs rename to parachains/common/src/impls.rs diff --git a/polkadot-parachains/parachains-common/src/lib.rs b/parachains/common/src/lib.rs similarity index 100% rename from polkadot-parachains/parachains-common/src/lib.rs rename to parachains/common/src/lib.rs diff --git a/polkadot-parachains/parachains-common/src/xcm_config.rs b/parachains/common/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/parachains-common/src/xcm_config.rs rename to parachains/common/src/xcm_config.rs diff --git a/polkadot-parachains/pallets/parachain-info/Cargo.toml b/parachains/pallets/parachain-info/Cargo.toml similarity index 100% rename from polkadot-parachains/pallets/parachain-info/Cargo.toml rename to parachains/pallets/parachain-info/Cargo.toml diff --git a/polkadot-parachains/pallets/parachain-info/src/lib.rs b/parachains/pallets/parachain-info/src/lib.rs similarity index 100% rename from polkadot-parachains/pallets/parachain-info/src/lib.rs rename to parachains/pallets/parachain-info/src/lib.rs diff --git a/polkadot-parachains/pallets/ping/Cargo.toml b/parachains/pallets/ping/Cargo.toml similarity index 100% rename from polkadot-parachains/pallets/ping/Cargo.toml rename to parachains/pallets/ping/Cargo.toml diff --git a/polkadot-parachains/pallets/ping/src/lib.rs b/parachains/pallets/ping/src/lib.rs similarity index 100% rename from polkadot-parachains/pallets/ping/src/lib.rs rename to parachains/pallets/ping/src/lib.rs diff --git a/polkadot-parachains/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml similarity index 86% rename from polkadot-parachains/statemine/Cargo.toml rename to parachains/runtimes/assets/statemine/Cargo.toml index eef06ae41b..61df2484a8 100644 --- a/polkadot-parachains/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -59,19 +59,19 @@ xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-aura-ext = { path = "../../pallets/aura-ext", default-features = false } -cumulus-pallet-dmp-queue = { path = "../../pallets/dmp-queue", default-features = false } -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-session-benchmarking = {path = "../../pallets/session-benchmarking", default-features = false, version = "3.0.0"} -cumulus-pallet-xcm = { path = "../../pallets/xcm", default-features = false } -cumulus-pallet-xcmp-queue = { path = "../../pallets/xcmp-queue", default-features = false } -cumulus-ping = { path = "../pallets/ping", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } -cumulus-primitives-timestamp = { path = "../../primitives/timestamp", default-features = false } -cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } -pallet-collator-selection = { path = "../../pallets/collator-selection", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } -parachains-common = { path = "../parachains-common", default-features = false } +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-session-benchmarking = {path = "../../../../pallets/session-benchmarking", default-features = false, version = "3.0.0"} +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-ping = { path = "../../../pallets/ping", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } +parachains-common = { path = "../../../common", default-features = false } [dev-dependencies] diff --git a/polkadot-parachains/contracts-rococo/build.rs b/parachains/runtimes/assets/statemine/build.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/build.rs rename to parachains/runtimes/assets/statemine/build.rs diff --git a/polkadot-parachains/contracts-rococo/src/constants.rs b/parachains/runtimes/assets/statemine/src/constants.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/constants.rs rename to parachains/runtimes/assets/statemine/src/constants.rs diff --git a/polkadot-parachains/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs similarity index 100% rename from polkadot-parachains/statemine/src/lib.rs rename to parachains/runtimes/assets/statemine/src/lib.rs diff --git a/polkadot-parachains/contracts-rococo/src/weights/block_weights.rs b/parachains/runtimes/assets/statemine/src/weights/block_weights.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/weights/block_weights.rs rename to parachains/runtimes/assets/statemine/src/weights/block_weights.rs diff --git a/polkadot-parachains/statemine/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/cumulus_pallet_xcmp_queue.rs rename to parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs diff --git a/polkadot-parachains/contracts-rococo/src/weights/extrinsic_weights.rs b/parachains/runtimes/assets/statemine/src/weights/extrinsic_weights.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/weights/extrinsic_weights.rs rename to parachains/runtimes/assets/statemine/src/weights/extrinsic_weights.rs diff --git a/polkadot-parachains/statemine/src/weights/frame_system.rs b/parachains/runtimes/assets/statemine/src/weights/frame_system.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/frame_system.rs rename to parachains/runtimes/assets/statemine/src/weights/frame_system.rs diff --git a/polkadot-parachains/statemine/src/weights/mod.rs b/parachains/runtimes/assets/statemine/src/weights/mod.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/mod.rs rename to parachains/runtimes/assets/statemine/src/weights/mod.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_assets.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_assets.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_balances.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_balances.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_collator_selection.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_multisig.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_proxy.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_session.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_session.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_session.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_timestamp.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_uniques.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs diff --git a/polkadot-parachains/statemine/src/weights/pallet_utility.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/pallet_utility.rs rename to parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs diff --git a/polkadot-parachains/contracts-rococo/src/weights/paritydb_weights.rs b/parachains/runtimes/assets/statemine/src/weights/paritydb_weights.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/weights/paritydb_weights.rs rename to parachains/runtimes/assets/statemine/src/weights/paritydb_weights.rs diff --git a/polkadot-parachains/contracts-rococo/src/weights/rocksdb_weights.rs b/parachains/runtimes/assets/statemine/src/weights/rocksdb_weights.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/weights/rocksdb_weights.rs rename to parachains/runtimes/assets/statemine/src/weights/rocksdb_weights.rs diff --git a/polkadot-parachains/statemine/src/xcm_config.rs b/parachains/runtimes/assets/statemine/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/statemine/src/xcm_config.rs rename to parachains/runtimes/assets/statemine/src/xcm_config.rs diff --git a/polkadot-parachains/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml similarity index 86% rename from polkadot-parachains/statemint/Cargo.toml rename to parachains/runtimes/assets/statemint/Cargo.toml index 640d7fd2ea..56cc82ad80 100644 --- a/polkadot-parachains/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -59,19 +59,19 @@ xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-aura-ext = { path = "../../pallets/aura-ext", default-features = false } -cumulus-pallet-dmp-queue = { path = "../../pallets/dmp-queue", default-features = false } -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-session-benchmarking = { path = "../../pallets/session-benchmarking", default-features = false, version = "3.0.0" } -cumulus-pallet-xcm = { path = "../../pallets/xcm", default-features = false } -cumulus-pallet-xcmp-queue = { path = "../../pallets/xcmp-queue", default-features = false } -cumulus-ping = { path = "../pallets/ping", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } -cumulus-primitives-timestamp = { path = "../../primitives/timestamp", default-features = false } -cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } -pallet-collator-selection = { path = "../../pallets/collator-selection", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } -parachains-common = { path = "../parachains-common", default-features = false } +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false, version = "3.0.0" } +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-ping = { path = "../../../pallets/ping", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } +parachains-common = { path = "../../../common", default-features = false } [dev-dependencies] hex-literal = "0.3.4" diff --git a/polkadot-parachains/statemine/build.rs b/parachains/runtimes/assets/statemint/build.rs similarity index 100% rename from polkadot-parachains/statemine/build.rs rename to parachains/runtimes/assets/statemint/build.rs diff --git a/polkadot-parachains/statemint/src/constants.rs b/parachains/runtimes/assets/statemint/src/constants.rs similarity index 100% rename from polkadot-parachains/statemint/src/constants.rs rename to parachains/runtimes/assets/statemint/src/constants.rs diff --git a/polkadot-parachains/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs similarity index 100% rename from polkadot-parachains/statemint/src/lib.rs rename to parachains/runtimes/assets/statemint/src/lib.rs diff --git a/polkadot-parachains/statemine/src/weights/block_weights.rs b/parachains/runtimes/assets/statemint/src/weights/block_weights.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/block_weights.rs rename to parachains/runtimes/assets/statemint/src/weights/block_weights.rs diff --git a/polkadot-parachains/statemint/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/cumulus_pallet_xcmp_queue.rs rename to parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs diff --git a/polkadot-parachains/statemine/src/weights/extrinsic_weights.rs b/parachains/runtimes/assets/statemint/src/weights/extrinsic_weights.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/extrinsic_weights.rs rename to parachains/runtimes/assets/statemint/src/weights/extrinsic_weights.rs diff --git a/polkadot-parachains/statemint/src/weights/frame_system.rs b/parachains/runtimes/assets/statemint/src/weights/frame_system.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/frame_system.rs rename to parachains/runtimes/assets/statemint/src/weights/frame_system.rs diff --git a/polkadot-parachains/statemint/src/weights/mod.rs b/parachains/runtimes/assets/statemint/src/weights/mod.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/mod.rs rename to parachains/runtimes/assets/statemint/src/weights/mod.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_assets.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_assets.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_balances.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_balances.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_collator_selection.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_multisig.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_proxy.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_session.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_session.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_session.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_timestamp.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_uniques.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs diff --git a/polkadot-parachains/statemint/src/weights/pallet_utility.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/pallet_utility.rs rename to parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs diff --git a/polkadot-parachains/statemine/src/weights/paritydb_weights.rs b/parachains/runtimes/assets/statemint/src/weights/paritydb_weights.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/paritydb_weights.rs rename to parachains/runtimes/assets/statemint/src/weights/paritydb_weights.rs diff --git a/polkadot-parachains/statemine/src/weights/rocksdb_weights.rs b/parachains/runtimes/assets/statemint/src/weights/rocksdb_weights.rs similarity index 100% rename from polkadot-parachains/statemine/src/weights/rocksdb_weights.rs rename to parachains/runtimes/assets/statemint/src/weights/rocksdb_weights.rs diff --git a/polkadot-parachains/statemint/src/xcm_config.rs b/parachains/runtimes/assets/statemint/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/statemint/src/xcm_config.rs rename to parachains/runtimes/assets/statemint/src/xcm_config.rs diff --git a/polkadot-parachains/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml similarity index 86% rename from polkadot-parachains/westmint/Cargo.toml rename to parachains/runtimes/assets/westmint/Cargo.toml index 986d379c6d..3fc7d857ac 100644 --- a/polkadot-parachains/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -58,19 +58,19 @@ xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-aura-ext = { path = "../../pallets/aura-ext", default-features = false } -cumulus-pallet-dmp-queue = { path = "../../pallets/dmp-queue", default-features = false } -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-session-benchmarking = {path = "../../pallets/session-benchmarking", default-features = false, version = "3.0.0"} -cumulus-pallet-xcm = { path = "../../pallets/xcm", default-features = false } -cumulus-pallet-xcmp-queue = { path = "../../pallets/xcmp-queue", default-features = false } -cumulus-ping = { path = "../pallets/ping", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } -cumulus-primitives-timestamp = { path = "../../primitives/timestamp", default-features = false } -cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } -pallet-collator-selection = { path = "../../pallets/collator-selection", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } -parachains-common = { path = "../parachains-common", default-features = false } +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-session-benchmarking = {path = "../../../../pallets/session-benchmarking", default-features = false, version = "3.0.0"} +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-ping = { path = "../../../pallets/ping", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } +parachains-common = { path = "../../../common", default-features = false } [dev-dependencies] hex-literal = "0.3.4" diff --git a/polkadot-parachains/statemint/build.rs b/parachains/runtimes/assets/westmint/build.rs similarity index 100% rename from polkadot-parachains/statemint/build.rs rename to parachains/runtimes/assets/westmint/build.rs diff --git a/polkadot-parachains/westmint/src/constants.rs b/parachains/runtimes/assets/westmint/src/constants.rs similarity index 100% rename from polkadot-parachains/westmint/src/constants.rs rename to parachains/runtimes/assets/westmint/src/constants.rs diff --git a/polkadot-parachains/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs similarity index 100% rename from polkadot-parachains/westmint/src/lib.rs rename to parachains/runtimes/assets/westmint/src/lib.rs diff --git a/polkadot-parachains/statemint/src/weights/block_weights.rs b/parachains/runtimes/assets/westmint/src/weights/block_weights.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/block_weights.rs rename to parachains/runtimes/assets/westmint/src/weights/block_weights.rs diff --git a/polkadot-parachains/westmint/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/cumulus_pallet_xcmp_queue.rs rename to parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs diff --git a/polkadot-parachains/statemint/src/weights/extrinsic_weights.rs b/parachains/runtimes/assets/westmint/src/weights/extrinsic_weights.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/extrinsic_weights.rs rename to parachains/runtimes/assets/westmint/src/weights/extrinsic_weights.rs diff --git a/polkadot-parachains/westmint/src/weights/frame_system.rs b/parachains/runtimes/assets/westmint/src/weights/frame_system.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/frame_system.rs rename to parachains/runtimes/assets/westmint/src/weights/frame_system.rs diff --git a/polkadot-parachains/westmint/src/weights/mod.rs b/parachains/runtimes/assets/westmint/src/weights/mod.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/mod.rs rename to parachains/runtimes/assets/westmint/src/weights/mod.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_assets.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_assets.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_balances.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_balances.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_collator_selection.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_multisig.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_proxy.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_session.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_session.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_session.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_timestamp.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_uniques.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs diff --git a/polkadot-parachains/westmint/src/weights/pallet_utility.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/pallet_utility.rs rename to parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs diff --git a/polkadot-parachains/statemint/src/weights/paritydb_weights.rs b/parachains/runtimes/assets/westmint/src/weights/paritydb_weights.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/paritydb_weights.rs rename to parachains/runtimes/assets/westmint/src/weights/paritydb_weights.rs diff --git a/polkadot-parachains/statemint/src/weights/rocksdb_weights.rs b/parachains/runtimes/assets/westmint/src/weights/rocksdb_weights.rs similarity index 100% rename from polkadot-parachains/statemint/src/weights/rocksdb_weights.rs rename to parachains/runtimes/assets/westmint/src/weights/rocksdb_weights.rs diff --git a/polkadot-parachains/westmint/src/xcm_config.rs b/parachains/runtimes/assets/westmint/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/westmint/src/xcm_config.rs rename to parachains/runtimes/assets/westmint/src/xcm_config.rs diff --git a/polkadot-parachains/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml similarity index 87% rename from polkadot-parachains/contracts-rococo/Cargo.toml rename to parachains/runtimes/contracts/contracts-rococo/Cargo.toml index 1bea26bb98..998da49648 100644 --- a/polkadot-parachains/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -64,18 +64,18 @@ xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-aura-ext = { path = "../../pallets/aura-ext", default-features = false } -cumulus-pallet-dmp-queue = { path = "../../pallets/dmp-queue", default-features = false } -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-session-benchmarking = { path = "../../pallets/session-benchmarking", default-features = false } -cumulus-pallet-xcm = { path = "../../pallets/xcm", default-features = false } -cumulus-pallet-xcmp-queue = { path = "../../pallets/xcmp-queue", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } -cumulus-primitives-timestamp = { path = "../../primitives/timestamp", default-features = false } -cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } -pallet-collator-selection = { path = "../../pallets/collator-selection", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } -parachains-common = { path = "../parachains-common", default-features = false } +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false } +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } +parachains-common = { path = "../../../common", default-features = false } [features] default = [ diff --git a/polkadot-parachains/contracts-rococo/README.md b/parachains/runtimes/contracts/contracts-rococo/README.md similarity index 100% rename from polkadot-parachains/contracts-rococo/README.md rename to parachains/runtimes/contracts/contracts-rococo/README.md diff --git a/polkadot-parachains/westmint/build.rs b/parachains/runtimes/contracts/contracts-rococo/build.rs similarity index 100% rename from polkadot-parachains/westmint/build.rs rename to parachains/runtimes/contracts/contracts-rococo/build.rs diff --git a/polkadot-parachains/contracts-rococo/contracts-overview.svg b/parachains/runtimes/contracts/contracts-rococo/contracts-overview.svg similarity index 100% rename from polkadot-parachains/contracts-rococo/contracts-overview.svg rename to parachains/runtimes/contracts/contracts-rococo/contracts-overview.svg diff --git a/polkadot-parachains/statemine/src/constants.rs b/parachains/runtimes/contracts/contracts-rococo/src/constants.rs similarity index 100% rename from polkadot-parachains/statemine/src/constants.rs rename to parachains/runtimes/contracts/contracts-rococo/src/constants.rs diff --git a/polkadot-parachains/contracts-rococo/src/contracts.rs b/parachains/runtimes/contracts/contracts-rococo/src/contracts.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/contracts.rs rename to parachains/runtimes/contracts/contracts-rococo/src/contracts.rs diff --git a/polkadot-parachains/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/lib.rs rename to parachains/runtimes/contracts/contracts-rococo/src/lib.rs diff --git a/polkadot-parachains/westmint/src/weights/block_weights.rs b/parachains/runtimes/contracts/contracts-rococo/src/weights/block_weights.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/block_weights.rs rename to parachains/runtimes/contracts/contracts-rococo/src/weights/block_weights.rs diff --git a/polkadot-parachains/westmint/src/weights/extrinsic_weights.rs b/parachains/runtimes/contracts/contracts-rococo/src/weights/extrinsic_weights.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/extrinsic_weights.rs rename to parachains/runtimes/contracts/contracts-rococo/src/weights/extrinsic_weights.rs diff --git a/polkadot-parachains/contracts-rococo/src/weights/mod.rs b/parachains/runtimes/contracts/contracts-rococo/src/weights/mod.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/weights/mod.rs rename to parachains/runtimes/contracts/contracts-rococo/src/weights/mod.rs diff --git a/polkadot-parachains/westmint/src/weights/paritydb_weights.rs b/parachains/runtimes/contracts/contracts-rococo/src/weights/paritydb_weights.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/paritydb_weights.rs rename to parachains/runtimes/contracts/contracts-rococo/src/weights/paritydb_weights.rs diff --git a/polkadot-parachains/westmint/src/weights/rocksdb_weights.rs b/parachains/runtimes/contracts/contracts-rococo/src/weights/rocksdb_weights.rs similarity index 100% rename from polkadot-parachains/westmint/src/weights/rocksdb_weights.rs rename to parachains/runtimes/contracts/contracts-rococo/src/weights/rocksdb_weights.rs diff --git a/polkadot-parachains/contracts-rococo/src/xcm_config.rs b/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/contracts-rococo/src/xcm_config.rs rename to parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs diff --git a/polkadot-parachains/seedling/Cargo.toml b/parachains/runtimes/starters/seedling/Cargo.toml similarity index 88% rename from polkadot-parachains/seedling/Cargo.toml rename to parachains/runtimes/starters/seedling/Cargo.toml index 4b7ae861f7..97fc40b998 100644 --- a/polkadot-parachains/seedling/Cargo.toml +++ b/parachains/runtimes/starters/seedling/Cargo.toml @@ -29,10 +29,10 @@ sp-transaction-pool = { git = "https://github.com/paritytech/substrate", default sp-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-solo-to-para = { path = "../../pallets/solo-to-para", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-solo-to-para = { path = "../../../../pallets/solo-to-para", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot-parachains/rococo-parachain/build.rs b/parachains/runtimes/starters/seedling/build.rs similarity index 100% rename from polkadot-parachains/rococo-parachain/build.rs rename to parachains/runtimes/starters/seedling/build.rs diff --git a/polkadot-parachains/seedling/src/lib.rs b/parachains/runtimes/starters/seedling/src/lib.rs similarity index 100% rename from polkadot-parachains/seedling/src/lib.rs rename to parachains/runtimes/starters/seedling/src/lib.rs diff --git a/polkadot-parachains/shell/Cargo.toml b/parachains/runtimes/starters/shell/Cargo.toml similarity index 86% rename from polkadot-parachains/shell/Cargo.toml rename to parachains/runtimes/starters/shell/Cargo.toml index 0d390948a1..51242257e3 100644 --- a/polkadot-parachains/shell/Cargo.toml +++ b/parachains/runtimes/starters/shell/Cargo.toml @@ -33,12 +33,12 @@ xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-dmp-queue = { path = "../../pallets/dmp-queue", default-features = false } -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-xcm = { path = "../../pallets/xcm", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } -cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot-parachains/seedling/build.rs b/parachains/runtimes/starters/shell/build.rs similarity index 100% rename from polkadot-parachains/seedling/build.rs rename to parachains/runtimes/starters/shell/build.rs diff --git a/polkadot-parachains/shell/src/lib.rs b/parachains/runtimes/starters/shell/src/lib.rs similarity index 100% rename from polkadot-parachains/shell/src/lib.rs rename to parachains/runtimes/starters/shell/src/lib.rs diff --git a/polkadot-parachains/shell/src/xcm_config.rs b/parachains/runtimes/starters/shell/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/shell/src/xcm_config.rs rename to parachains/runtimes/starters/shell/src/xcm_config.rs diff --git a/polkadot-parachains/rococo-parachain/Cargo.toml b/parachains/runtimes/testing/rococo-parachain/Cargo.toml similarity index 83% rename from polkadot-parachains/rococo-parachain/Cargo.toml rename to parachains/runtimes/testing/rococo-parachain/Cargo.toml index 1d4f605e30..243888af67 100644 --- a/polkadot-parachains/rococo-parachain/Cargo.toml +++ b/parachains/runtimes/testing/rococo-parachain/Cargo.toml @@ -44,17 +44,17 @@ xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus -cumulus-pallet-aura-ext = { path = "../../pallets/aura-ext", default-features = false } -cumulus-pallet-dmp-queue = { path = "../../pallets/dmp-queue", default-features = false } -cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } -cumulus-pallet-xcm = { path = "../../pallets/xcm", default-features = false } -cumulus-pallet-xcmp-queue = { path = "../../pallets/xcmp-queue", default-features = false } -cumulus-ping = { path = "../pallets/ping", default-features = false } -cumulus-primitives-core = { path = "../../primitives/core", default-features = false } -cumulus-primitives-timestamp = { path = "../../primitives/timestamp", default-features = false } -cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } -parachains-common = { path = "../parachains-common", default-features = false } -parachain-info = { path = "../pallets/parachain-info", default-features = false } +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-ping = { path = "../../../pallets/ping", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +parachains-common = { path = "../../../common", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot-parachains/shell/build.rs b/parachains/runtimes/testing/rococo-parachain/build.rs similarity index 100% rename from polkadot-parachains/shell/build.rs rename to parachains/runtimes/testing/rococo-parachain/build.rs diff --git a/polkadot-parachains/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs similarity index 100% rename from polkadot-parachains/rococo-parachain/src/lib.rs rename to parachains/runtimes/testing/rococo-parachain/src/lib.rs diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachain/Cargo.toml similarity index 89% rename from polkadot-parachains/Cargo.toml rename to polkadot-parachain/Cargo.toml index f1a6e282dd..aaab54335d 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -20,15 +20,15 @@ log = "0.4.17" serde = { version = "1.0.137", features = ["derive"] } # Local -rococo-parachain-runtime = { path = "rococo-parachain" } -shell-runtime = { path = "shell" } -seedling-runtime = { path = "seedling" } -statemint-runtime = { path = "statemint" } -statemine-runtime = { path = "statemine" } -westmint-runtime = { path = "westmint" } -contracts-rococo-runtime = { path = "contracts-rococo" } -jsonrpsee = { version = "0.13.0", features = ["server"] } -parachains-common = { path = "parachains-common" } +rococo-parachain-runtime = { path = "../parachains/runtimes/testing/rococo-parachain" } +shell-runtime = { path = "../parachains/runtimes/starters/shell" } +seedling-runtime = { path = "../parachains/runtimes/starters/seedling" } +statemint-runtime = { path = "../parachains/runtimes/assets/statemint" } +statemine-runtime = { path = "../parachains/runtimes/assets/statemine" } +westmint-runtime = { path = "../parachains/runtimes/assets/westmint" } +contracts-rococo-runtime = { path = "../parachains/runtimes/contracts/contracts-rococo" } +jsonrpsee = { version = "0.13", features = ["server"] } +parachains-common = { path = "../parachains/common" } # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot-parachains/build.rs b/polkadot-parachain/build.rs similarity index 100% rename from polkadot-parachains/build.rs rename to polkadot-parachain/build.rs diff --git a/polkadot-parachains/src/chain_spec.rs b/polkadot-parachain/src/chain_spec.rs similarity index 100% rename from polkadot-parachains/src/chain_spec.rs rename to polkadot-parachain/src/chain_spec.rs diff --git a/polkadot-parachains/src/cli.rs b/polkadot-parachain/src/cli.rs similarity index 100% rename from polkadot-parachains/src/cli.rs rename to polkadot-parachain/src/cli.rs diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachain/src/command.rs similarity index 98% rename from polkadot-parachains/src/command.rs rename to polkadot-parachain/src/command.rs index 9836501fe1..c6753564ab 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -95,13 +95,13 @@ fn load_spec(id: &str) -> std::result::Result, St Ok(match id { "staging" => Box::new(chain_spec::staging_test_net()), "tick" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/tick.json")[..], + &include_bytes!("../../parachains/chain-specs/tick.json")[..], )?), "trick" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/trick.json")[..], + &include_bytes!("../../parachains/chain-specs/trick.json")[..], )?), "track" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/track.json")[..], + &include_bytes!("../../parachains/chain-specs/track.json")[..], )?), "shell" => Box::new(chain_spec::get_shell_chain_spec()), // -- Statemint @@ -112,7 +112,7 @@ fn load_spec(id: &str) -> std::result::Result, St "statemint-genesis" => Box::new(chain_spec::statemint_config()), // the shell-based chain spec as used for syncing "statemint" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/statemint.json")[..], + &include_bytes!("../../parachains/chain-specs/statemint.json")[..], )?), // -- Statemine "statemine-dev" => Box::new(chain_spec::statemine_development_config()), @@ -121,7 +121,7 @@ fn load_spec(id: &str) -> std::result::Result, St "statemine-genesis" => Box::new(chain_spec::statemine_config()), // the shell-based chain spec as used for syncing "statemine" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/statemine.json")[..], + &include_bytes!("../../parachains/chain-specs/statemine.json")[..], )?), // -- Westmint "westmint-dev" => Box::new(chain_spec::westmint_development_config()), @@ -130,14 +130,14 @@ fn load_spec(id: &str) -> std::result::Result, St "westmint-genesis" => Box::new(chain_spec::westmint_config()), // the shell-based chain spec as used for syncing "westmint" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/westmint.json")[..], + &include_bytes!("../../parachains/chain-specs/westmint.json")[..], )?), // -- Contracts on Rococo "contracts-rococo-dev" => Box::new(chain_spec::contracts_rococo_development_config()), "contracts-rococo-local" => Box::new(chain_spec::contracts_rococo_local_config()), "contracts-rococo-genesis" => Box::new(chain_spec::contracts_rococo_config()), "contracts-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/contracts-rococo.json")[..], + &include_bytes!("../../parachains/chain-specs/contracts-rococo.json")[..], )?), // -- Fallback (generic chainspec) "" => Box::new(chain_spec::get_chain_spec()), diff --git a/polkadot-parachains/src/main.rs b/polkadot-parachain/src/main.rs similarity index 100% rename from polkadot-parachains/src/main.rs rename to polkadot-parachain/src/main.rs diff --git a/polkadot-parachains/src/rpc.rs b/polkadot-parachain/src/rpc.rs similarity index 100% rename from polkadot-parachains/src/rpc.rs rename to polkadot-parachain/src/rpc.rs diff --git a/polkadot-parachains/src/service.rs b/polkadot-parachain/src/service.rs similarity index 100% rename from polkadot-parachains/src/service.rs rename to polkadot-parachain/src/service.rs diff --git a/polkadot-parachains/tests/benchmark_storage_works.rs b/polkadot-parachain/tests/benchmark_storage_works.rs similarity index 100% rename from polkadot-parachains/tests/benchmark_storage_works.rs rename to polkadot-parachain/tests/benchmark_storage_works.rs diff --git a/polkadot-parachains/tests/common.rs b/polkadot-parachain/tests/common.rs similarity index 100% rename from polkadot-parachains/tests/common.rs rename to polkadot-parachain/tests/common.rs diff --git a/polkadot-parachains/tests/polkadot_argument_parsing.rs b/polkadot-parachain/tests/polkadot_argument_parsing.rs similarity index 100% rename from polkadot-parachains/tests/polkadot_argument_parsing.rs rename to polkadot-parachain/tests/polkadot_argument_parsing.rs diff --git a/polkadot-parachains/tests/polkadot_mdns_issue.rs b/polkadot-parachain/tests/polkadot_mdns_issue.rs similarity index 100% rename from polkadot-parachains/tests/polkadot_mdns_issue.rs rename to polkadot-parachain/tests/polkadot_mdns_issue.rs diff --git a/polkadot-parachains/tests/purge_chain_works.rs b/polkadot-parachain/tests/purge_chain_works.rs similarity index 100% rename from polkadot-parachains/tests/purge_chain_works.rs rename to polkadot-parachain/tests/purge_chain_works.rs diff --git a/polkadot-parachains/tests/running_the_node_and_interrupt.rs b/polkadot-parachain/tests/running_the_node_and_interrupt.rs similarity index 100% rename from polkadot-parachains/tests/running_the_node_and_interrupt.rs rename to polkadot-parachain/tests/running_the_node_and_interrupt.rs diff --git a/scripts/benchmarks-ci.sh b/scripts/benchmarks-ci.sh index 90f28e7759..e74842868e 100755 --- a/scripts/benchmarks-ci.sh +++ b/scripts/benchmarks-ci.sh @@ -4,7 +4,7 @@ steps=50 repeat=20 chainName=$1 -benhcmarkOutput=./polkadot-parachains/$chainName/src/weights +benhcmarkOutput=./parachains/runtimes/$chainName/src/weights benhcmarkChainName="$chainName-dev" pallets=( diff --git a/scripts/benchmarks.sh b/scripts/benchmarks.sh index 371c57ccac..eddd1e9215 100755 --- a/scripts/benchmarks.sh +++ b/scripts/benchmarks.sh @@ -3,9 +3,9 @@ steps=50 repeat=20 -statemineOutput=./polkadot-parachains/statemine/src/weights -statemintOutput=./polkadot-parachains/statemint/src/weights -westmintOutput=./polkadot-parachains/westmint/src/weights +statemineOutput=./parachains/runtimes/statemine/src/weights +statemintOutput=./parachains/runtimes/statemint/src/weights +westmintOutput=./parachains/runtimes/westmint/src/weights statemineChain=statemine-dev statemintChain=statemint-dev diff --git a/scripts/generate_genesis_value.sh b/scripts/generate_genesis_value.sh index 370c4f8c69..07e9fca59d 100755 --- a/scripts/generate_genesis_value.sh +++ b/scripts/generate_genesis_value.sh @@ -41,7 +41,7 @@ set -e chain_id=$1 rpc_endpoint=$2 -work_dir="polkadot-parachains/res" +work_dir="parachains/chain-specs" chain_spec=$work_dir/$chain_id.json chain_values=$work_dir/${chain_id}_values.json chain_values_scale=$work_dir/${chain_id}_values.scale @@ -58,7 +58,7 @@ if [[ "$rpc_endpoint" =~ "localhost" ]]; then check_collator echo -e "Make sure you have a collator running with the correct version at $rpc_endpoint." echo -e "If you don't, NOW is the time to start it with:" - echo -e "target/release/polkadot-parachain --chain polkadot-parachains/res/shell-statemint.json --tmp\n" + echo -e "target/release/polkadot-parachain --chain parachains/chain-specs/shell-statemint.json --tmp\n" read -p "You can abort with CTRL+C if this is not correct, otherwise press ENTER " fi @@ -77,4 +77,4 @@ popd node scripts/scale_encode_genesis $chain_values $chain_values_scale $rpc_endpoint -ls -al polkadot-parachains/res/${chain_id}_value*.* +ls -al parachains/chain-specs/${chain_id}_value*.* diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 8d9ddad4a5..0f01f81755 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -58,7 +58,7 @@ polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "maste # Cumulus cumulus-client-cli = { path = "../../client/cli" } -parachains-common = { path = "../../polkadot-parachains/parachains-common" } +parachains-common = { path = "../../parachains/common" } cumulus-client-consensus-common = { path = "../../client/consensus/common" } cumulus-client-consensus-relay-chain = { path = "../../client/consensus/relay-chain" } cumulus-client-network = { path = "../../client/network" } From 11f6ba61e9f0f5370f7d8350e178e3de0bb70e6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 15:49:08 +0300 Subject: [PATCH 063/238] Bump actions/cache from 2 to 3 (#1274) Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/quick-check.yml | 2 +- .github/workflows/release-02_create-draft.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/quick-check.yml b/.github/workflows/quick-check.yml index edd05fe0b0..5026aeaf09 100644 --- a/.github/workflows/quick-check.yml +++ b/.github/workflows/quick-check.yml @@ -23,7 +23,7 @@ jobs: components: clippy, rustfmt - name: Cache Dependencies & Build Outputs - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.cargo/registry diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index 5fa9a46d66..10520064d3 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -66,7 +66,7 @@ jobs: - name: Cache target dir if: ${{ github.event.inputs.release_type != 'client' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} From f90837b000f44645029479f66ba5d6fa131c81a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 14:52:54 +0200 Subject: [PATCH 064/238] Bump actions/download-artifact from 2 to 3 (#1273) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 3. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-02_create-draft.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index 10520064d3..fe1c9979c8 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -123,7 +123,7 @@ jobs: ruby-version: 3.0.0 - name: Download srtool json output - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 - name: Prepare tooling run: | @@ -227,7 +227,7 @@ jobs: ref: ${{ github.event.inputs.ref2 }} - name: Download artifacts - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 - uses: ruby/setup-ruby@v1 with: From 1c32be67e2ac0d4602be4c660abc3813c6aecb6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 16:11:37 +0300 Subject: [PATCH 065/238] Bump docker/login-action from 1 to 2 (#1272) Bumps [docker/login-action](https://github.com/docker/login-action) from 1 to 2. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v1...v2) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-10_docker-manual.yml | 2 +- .github/workflows/release-10_docker.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-10_docker-manual.yml b/.github/workflows/release-10_docker-manual.yml index 3cab851812..653c9b3796 100644 --- a/.github/workflows/release-10_docker-manual.yml +++ b/.github/workflows/release-10_docker-manual.yml @@ -80,7 +80,7 @@ jobs: ./docker/scripts/build-injected-image.sh - name: Login to Dockerhub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/release-10_docker.yml b/.github/workflows/release-10_docker.yml index 9ddcd70b9a..3ce5fd8ee4 100644 --- a/.github/workflows/release-10_docker.yml +++ b/.github/workflows/release-10_docker.yml @@ -81,7 +81,7 @@ jobs: ./docker/scripts/build-injected-image.sh - name: Login to Dockerhub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} From d54e2d1d495a65bb8a070c5faa7ee6bd0e5dc1cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 16:20:52 +0200 Subject: [PATCH 066/238] Bump actions/upload-artifact from 2 to 3 (#1271) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/extrinsic-ordering-check-from-bin.yml | 2 +- .github/workflows/srtool.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index 76652e1bcb..09d6ee1377 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -75,7 +75,7 @@ jobs: continue-on-error: true - name: Save output as artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ env.CHAIN }} path: | diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index 32640c5679..c87f5cd026 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -66,7 +66,7 @@ jobs: # it takes a while to build the runtime, so let's save the artifact as soon as we have it - name: Archive Artifacts for ${{ matrix.runtime }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ matrix.runtime }}-runtime path: | @@ -104,7 +104,7 @@ jobs: tee ${{ matrix.runtime }}-diff.txt - name: Archive Subwasm results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ matrix.runtime }}-runtime path: | From eb643b89b87fd818cbb78c08883b4bfded7a1f6c Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Sat, 21 May 2022 17:14:02 +0800 Subject: [PATCH 067/238] Companion for polkadot#5569 (#1281) * Companion for polkadot#5569 Signed-off-by: koushiro * update lockfile for {"polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 492 ++++++++++++++--------------- client/collator/src/lib.rs | 4 +- parachain-template/node/src/rpc.rs | 8 +- polkadot-parachain/src/rpc.rs | 20 +- 4 files changed, 262 insertions(+), 262 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 250dafa437..4fdb453cee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2797,7 +2797,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", ] @@ -2815,7 +2815,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -2837,7 +2837,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "Inflector", "chrono", @@ -2887,7 +2887,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2898,7 +2898,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2914,7 +2914,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -2942,7 +2942,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "bitflags", "frame-metadata", @@ -2972,7 +2972,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2984,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2996,7 +2996,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro2", "quote", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "log", @@ -3023,7 +3023,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "sp-api", @@ -3047,7 +3047,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "sp-api", @@ -3904,7 +3904,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-primitives", "bitvec", @@ -3997,7 +3997,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "polkadot-primitives", @@ -4907,7 +4907,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "coarsetime", "crossbeam-queue", @@ -5348,7 +5348,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "dyn-clonable", @@ -5364,7 +5364,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "expander 0.0.6", "petgraph", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -5464,7 +5464,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -5479,7 +5479,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5503,7 +5503,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5523,7 +5523,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5538,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "beefy-primitives", "frame-support", @@ -5554,7 +5554,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5577,7 +5577,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5595,7 +5595,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5612,7 +5612,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5634,7 +5634,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5655,7 +5655,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5700,7 +5700,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5799,7 +5799,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5815,7 +5815,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5838,7 +5838,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5851,7 +5851,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5884,7 +5884,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5907,7 +5907,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5923,7 +5923,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5943,7 +5943,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5960,7 +5960,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -5977,7 +5977,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5995,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6010,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6025,7 +6025,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6039,7 +6039,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6055,7 +6055,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6074,7 +6074,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6091,7 +6091,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6114,7 +6114,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6130,7 +6130,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6159,7 +6159,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6174,7 +6174,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6190,7 +6190,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6211,7 +6211,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6227,7 +6227,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6241,7 +6241,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6264,7 +6264,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6275,7 +6275,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "sp-arithmetic", @@ -6284,7 +6284,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6313,7 +6313,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6331,7 +6331,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6350,7 +6350,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-support", "frame-system", @@ -6367,7 +6367,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6382,7 +6382,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6393,7 +6393,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6425,7 +6425,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6441,7 +6441,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -6456,7 +6456,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "frame-system", @@ -6474,7 +6474,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-benchmarking", "frame-support", @@ -6987,7 +6987,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7002,7 +7002,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7016,7 +7016,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "derive_more", "fatality", @@ -7039,7 +7039,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "fatality", "futures 0.3.21", @@ -7060,7 +7060,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7085,7 +7085,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7125,7 +7125,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "always-assert", "fatality", @@ -7146,7 +7146,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7159,7 +7159,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "derive_more", "fatality", @@ -7182,7 +7182,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7216,7 +7216,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "always-assert", "async-trait", @@ -7237,7 +7237,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7255,7 +7255,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "derive_more", @@ -7284,7 +7284,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "futures 0.3.21", @@ -7304,7 +7304,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "fatality", @@ -7323,7 +7323,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7338,7 +7338,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "futures 0.3.21", @@ -7356,7 +7356,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7371,7 +7371,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7388,7 +7388,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "fatality", "futures 0.3.21", @@ -7407,7 +7407,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "futures 0.3.21", @@ -7424,7 +7424,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "fatality", @@ -7442,7 +7442,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "always-assert", "assert_matches", @@ -7473,7 +7473,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7489,7 +7489,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7506,7 +7506,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-std", "lazy_static", @@ -7524,7 +7524,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bs58", "futures 0.3.21", @@ -7543,7 +7543,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "derive_more", @@ -7564,7 +7564,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7586,7 +7586,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7596,7 +7596,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "futures 0.3.21", @@ -7614,7 +7614,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "derive_more", "futures 0.3.21", @@ -7633,7 +7633,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "derive_more", @@ -7666,7 +7666,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7688,7 +7688,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "derive_more", "frame-support", @@ -7782,7 +7782,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7797,7 +7797,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitvec", "frame-system", @@ -7827,7 +7827,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7859,7 +7859,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-primitives", "bitvec", @@ -7945,7 +7945,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-primitives", "bitvec", @@ -7992,7 +7992,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "polkadot-primitives", @@ -8004,7 +8004,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bs58", "parity-scale-codec", @@ -8016,7 +8016,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "bitflags", "bitvec", @@ -8059,7 +8059,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "async-trait", "beefy-gadget", @@ -8162,7 +8162,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8183,7 +8183,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8193,7 +8193,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8218,7 +8218,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-primitives", "bitvec", @@ -8280,7 +8280,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-benchmarking", "frame-system", @@ -8860,7 +8860,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8988,7 +8988,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9065,7 +9065,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "polkadot-primitives", @@ -9235,7 +9235,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "sp-core", @@ -9246,7 +9246,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9273,7 +9273,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9296,7 +9296,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9312,7 +9312,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9329,7 +9329,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9340,7 +9340,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "chrono", "clap 3.1.18", @@ -9379,7 +9379,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "fnv", "futures 0.3.21", @@ -9407,7 +9407,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "hash-db", "kvdb", @@ -9432,7 +9432,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9485,7 +9485,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "fork-tree", @@ -9528,7 +9528,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9550,7 +9550,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9563,7 +9563,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures 0.3.21", @@ -9588,7 +9588,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "sc-client-api", "sp-authorship", @@ -9599,7 +9599,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9626,7 +9626,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "environmental", "parity-scale-codec", @@ -9643,7 +9643,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "parity-scale-codec", @@ -9658,7 +9658,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9676,7 +9676,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "ahash", "async-trait", @@ -9716,7 +9716,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9737,7 +9737,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9754,7 +9754,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "hex", @@ -9769,7 +9769,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "asynchronous-codec", @@ -9821,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "libp2p", @@ -9834,7 +9834,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "ahash", "futures 0.3.21", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "libp2p", @@ -9871,7 +9871,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "bitflags", "either", @@ -9900,7 +9900,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "bytes", "fnv", @@ -9928,7 +9928,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "libp2p", @@ -9941,7 +9941,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9950,7 +9950,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "hash-db", @@ -9980,7 +9980,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10003,7 +10003,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10016,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "directories", @@ -10081,7 +10081,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "parity-scale-codec", @@ -10095,7 +10095,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10114,7 +10114,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "libc", @@ -10133,7 +10133,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "chrono", "futures 0.3.21", @@ -10151,7 +10151,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "ansi_term", "atty", @@ -10182,7 +10182,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10193,7 +10193,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10220,7 +10220,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "log", @@ -10233,7 +10233,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10672,7 +10672,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "enumn", "parity-scale-codec", @@ -10748,7 +10748,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "hash-db", "log", @@ -10765,7 +10765,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "blake2", "proc-macro-crate", @@ -10777,7 +10777,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -10790,7 +10790,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "integer-sqrt", "num-traits", @@ -10805,7 +10805,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -10818,7 +10818,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "parity-scale-codec", @@ -10830,7 +10830,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "sp-api", @@ -10842,7 +10842,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "log", @@ -10860,7 +10860,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures 0.3.21", @@ -10897,7 +10897,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "merlin", @@ -10920,7 +10920,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -10934,7 +10934,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -10947,7 +10947,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "base58", "bitflags", @@ -10993,7 +10993,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "blake2", "byteorder", @@ -11007,7 +11007,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro2", "quote", @@ -11018,7 +11018,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11027,7 +11027,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "proc-macro2", "quote", @@ -11037,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "environmental", "parity-scale-codec", @@ -11048,7 +11048,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "finality-grandpa", "log", @@ -11066,7 +11066,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11080,7 +11080,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures 0.3.21", "hash-db", @@ -11105,7 +11105,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "lazy_static", "sp-core", @@ -11116,7 +11116,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures 0.3.21", @@ -11133,7 +11133,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "thiserror", "zstd", @@ -11142,7 +11142,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "parity-scale-codec", @@ -11157,7 +11157,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11171,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "sp-api", "sp-core", @@ -11181,7 +11181,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "backtrace", "lazy_static", @@ -11191,7 +11191,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "rustc-hash", "serde", @@ -11201,7 +11201,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "either", "hash256-std-hasher", @@ -11223,7 +11223,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11240,7 +11240,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "Inflector", "proc-macro-crate", @@ -11252,7 +11252,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "parity-scale-codec", @@ -11266,7 +11266,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "serde", "serde_json", @@ -11275,7 +11275,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11289,7 +11289,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -11300,7 +11300,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "hash-db", "log", @@ -11322,12 +11322,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11340,7 +11340,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "log", "sp-core", @@ -11353,7 +11353,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures-timer", @@ -11369,7 +11369,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "sp-std", @@ -11381,7 +11381,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "sp-api", "sp-runtime", @@ -11390,7 +11390,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "log", @@ -11406,7 +11406,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "hash-db", "memory-db", @@ -11422,7 +11422,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11439,7 +11439,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11450,7 +11450,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "impl-trait-for-tuples", "log", @@ -11731,7 +11731,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "platforms", ] @@ -11739,7 +11739,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11760,7 +11760,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "futures-util", "hyper", @@ -11773,7 +11773,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "jsonrpsee", "log", @@ -11794,7 +11794,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "async-trait", "futures 0.3.21", @@ -11841,7 +11841,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "ansi_term", "build-helper", @@ -11948,7 +11948,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "polkadot-primitives", @@ -12226,7 +12226,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12237,7 +12237,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12366,7 +12366,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12947,7 +12947,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "beefy-primitives", "bitvec", @@ -13036,7 +13036,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "polkadot-primitives", @@ -13277,7 +13277,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13290,7 +13290,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-support", "frame-system", @@ -13310,7 +13310,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "frame-benchmarking", "frame-support", @@ -13328,7 +13328,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#731979d91922211033a3e8d1d3b4d7c8017b25d5" +source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/collator/src/lib.rs b/client/collator/src/lib.rs index 05dcb244ac..94072fbee2 100644 --- a/client/collator/src/lib.rs +++ b/client/collator/src/lib.rs @@ -478,8 +478,8 @@ mod tests { .0 .into_memory_db(); - let backend = - sp_state_machine::new_in_mem::().update_backend(*header.state_root(), db); + let backend = sp_state_machine::new_in_mem_hash_key::() + .update_backend(*header.state_root(), db); // Should return an error, as it was not included while building the proof. assert!(backend diff --git a/parachain-template/node/src/rpc.rs b/parachain-template/node/src/rpc.rs index c71b3f3690..5ea7609000 100644 --- a/parachain-template/node/src/rpc.rs +++ b/parachain-template/node/src/rpc.rs @@ -46,13 +46,13 @@ where C::Api: BlockBuilder, P: TransactionPool + Sync + Send + 'static, { - use pallet_transaction_payment_rpc::{TransactionPaymentApiServer, TransactionPaymentRpc}; - use substrate_frame_rpc_system::{SystemApiServer, SystemRpc}; + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; + use substrate_frame_rpc_system::{System, SystemApiServer}; let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - module.merge(SystemRpc::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?; - module.merge(TransactionPaymentRpc::new(client.clone()).into_rpc())?; + module.merge(System::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?; + module.merge(TransactionPayment::new(client.clone()).into_rpc())?; Ok(module) } diff --git a/polkadot-parachain/src/rpc.rs b/polkadot-parachain/src/rpc.rs index ef26b8595d..36fdb68199 100644 --- a/polkadot-parachain/src/rpc.rs +++ b/polkadot-parachain/src/rpc.rs @@ -58,14 +58,14 @@ where C::Api: BlockBuilder, P: TransactionPool + Sync + Send + 'static, { - use frame_rpc_system::{SystemApiServer, SystemRpc}; - use pallet_transaction_payment_rpc::{TransactionPaymentApiServer, TransactionPaymentRpc}; + use frame_rpc_system::{System, SystemApiServer}; + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - module.merge(SystemRpc::new(client.clone(), pool, deny_unsafe).into_rpc())?; - module.merge(TransactionPaymentRpc::new(client.clone()).into_rpc())?; + module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(TransactionPayment::new(client.clone()).into_rpc())?; Ok(module) } @@ -89,17 +89,17 @@ where C::Api: BlockBuilder, P: TransactionPool + Sync + Send + 'static, { - use frame_rpc_system::{SystemApiServer, SystemRpc}; - use pallet_contracts_rpc::{ContractsApiServer, ContractsRpc}; - use pallet_transaction_payment_rpc::{TransactionPaymentApiServer, TransactionPaymentRpc}; + use frame_rpc_system::{System, SystemApiServer}; + use pallet_contracts_rpc::{Contracts, ContractsApiServer}; + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; use sc_rpc::dev::{Dev, DevApiServer}; let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - module.merge(SystemRpc::new(client.clone(), pool, deny_unsafe).into_rpc())?; - module.merge(TransactionPaymentRpc::new(client.clone()).into_rpc())?; - module.merge(ContractsRpc::new(client.clone()).into_rpc())?; + module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(TransactionPayment::new(client.clone()).into_rpc())?; + module.merge(Contracts::new(client.clone()).into_rpc())?; module.merge(Dev::new(client, deny_unsafe).into_rpc())?; Ok(module) From f9bc77c3c801973b4b6943cb6f236fb3934eb993 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Mon, 23 May 2022 09:23:27 +0100 Subject: [PATCH 068/238] Use named events in cumulus pallets (#1260) * Use named events * For now standardise on message_id * cargo fmt * reverting xcm changes * remove superfluous comments * renaming * updating benches --- .../collator-selection/src/benchmarking.rs | 14 ++-- pallets/collator-selection/src/lib.rs | 20 +++--- pallets/dmp-queue/src/lib.rs | 64 ++++++++++--------- pallets/parachain-system/src/lib.rs | 23 ++++--- pallets/parachain-system/src/tests.rs | 5 +- 5 files changed, 68 insertions(+), 58 deletions(-) diff --git a/pallets/collator-selection/src/benchmarking.rs b/pallets/collator-selection/src/benchmarking.rs index ce26c020ff..a08b2c7a43 100644 --- a/pallets/collator-selection/src/benchmarking.rs +++ b/pallets/collator-selection/src/benchmarking.rs @@ -117,7 +117,7 @@ benchmarks! { ); } verify { - assert_last_event::(Event::NewInvulnerables(new_invulnerables).into()); + assert_last_event::(Event::NewInvulnerables{invulnerables: new_invulnerables}.into()); } set_desired_candidates { @@ -129,19 +129,19 @@ benchmarks! { ); } verify { - assert_last_event::(Event::NewDesiredCandidates(max).into()); + assert_last_event::(Event::NewDesiredCandidates{desired_candidates: max}.into()); } set_candidacy_bond { - let bond: BalanceOf = T::Currency::minimum_balance() * 10u32.into(); + let bond_amount: BalanceOf = T::Currency::minimum_balance() * 10u32.into(); let origin = T::UpdateOrigin::successful_origin(); }: { assert_ok!( - >::set_candidacy_bond(origin, bond.clone()) + >::set_candidacy_bond(origin, bond_amount.clone()) ); } verify { - assert_last_event::(Event::NewCandidacyBond(bond).into()); + assert_last_event::(Event::NewCandidacyBond{bond_amount}.into()); } // worse case is when we have all the max-candidate slots filled except one, and we fill that @@ -167,7 +167,7 @@ benchmarks! { }: _(RawOrigin::Signed(caller.clone())) verify { - assert_last_event::(Event::CandidateAdded(caller, bond / 2u32.into()).into()); + assert_last_event::(Event::CandidateAdded{account_id: caller, deposit: bond / 2u32.into()}.into()); } // worse case is the last candidate leaving. @@ -183,7 +183,7 @@ benchmarks! { whitelist!(leaving); }: _(RawOrigin::Signed(leaving.clone())) verify { - assert_last_event::(Event::CandidateRemoved(leaving).into()); + assert_last_event::(Event::CandidateRemoved{account_id: leaving}.into()); } // worse case is paying a non-existing candidate account. diff --git a/pallets/collator-selection/src/lib.rs b/pallets/collator-selection/src/lib.rs index 717fbc2dda..0aeb44dc68 100644 --- a/pallets/collator-selection/src/lib.rs +++ b/pallets/collator-selection/src/lib.rs @@ -248,11 +248,11 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { - NewInvulnerables(Vec), - NewDesiredCandidates(u32), - NewCandidacyBond(BalanceOf), - CandidateAdded(T::AccountId, BalanceOf), - CandidateRemoved(T::AccountId), + NewInvulnerables { invulnerables: Vec }, + NewDesiredCandidates { desired_candidates: u32 }, + NewCandidacyBond { bond_amount: BalanceOf }, + CandidateAdded { account_id: T::AccountId, deposit: BalanceOf }, + CandidateRemoved { account_id: T::AccountId }, } // Errors inform users that something went wrong. @@ -308,7 +308,7 @@ pub mod pallet { } >::put(&new); - Self::deposit_event(Event::NewInvulnerables(new)); + Self::deposit_event(Event::NewInvulnerables { invulnerables: new }); Ok(().into()) } @@ -326,7 +326,7 @@ pub mod pallet { log::warn!("max > T::MaxCandidates; you might need to run benchmarks again"); } >::put(&max); - Self::deposit_event(Event::NewDesiredCandidates(max)); + Self::deposit_event(Event::NewDesiredCandidates { desired_candidates: max }); Ok(().into()) } @@ -338,7 +338,7 @@ pub mod pallet { ) -> DispatchResultWithPostInfo { T::UpdateOrigin::ensure_origin(origin)?; >::put(&bond); - Self::deposit_event(Event::NewCandidacyBond(bond)); + Self::deposit_event(Event::NewCandidacyBond { bond_amount: bond }); Ok(().into()) } @@ -381,7 +381,7 @@ pub mod pallet { } })?; - Self::deposit_event(Event::CandidateAdded(who, deposit)); + Self::deposit_event(Event::CandidateAdded { account_id: who, deposit }); Ok(Some(T::WeightInfo::register_as_candidate(current_count as u32)).into()) } @@ -423,7 +423,7 @@ pub mod pallet { >::remove(who.clone()); Ok(candidates.len()) })?; - Self::deposit_event(Event::CandidateRemoved(who.clone())); + Self::deposit_event(Event::CandidateRemoved { account_id: who.clone() }); Ok(current_count) } diff --git a/pallets/dmp-queue/src/lib.rs b/pallets/dmp-queue/src/lib.rs index c0c151b0ab..a811bf5405 100644 --- a/pallets/dmp-queue/src/lib.rs +++ b/pallets/dmp-queue/src/lib.rs @@ -149,11 +149,11 @@ pub mod pallet { T::ExecuteOverweightOrigin::ensure_origin(origin)?; let (sent_at, data) = Overweight::::get(index).ok_or(Error::::Unknown)?; - let used = Self::try_service_message(weight_limit, sent_at, &data[..]) + let weight_used = Self::try_service_message(weight_limit, sent_at, &data[..]) .map_err(|_| Error::::OverLimit)?; Overweight::::remove(index); - Self::deposit_event(Event::OverweightServiced(index, used)); - Ok(Some(used.saturating_add(1_000_000)).into()) + Self::deposit_event(Event::OverweightServiced { overweight_index: index, weight_used }); + Ok(Some(weight_used.saturating_add(1_000_000)).into()) } } @@ -161,23 +161,21 @@ pub mod pallet { #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { /// Downward message is invalid XCM. - /// \[ id \] - InvalidFormat(MessageId), + InvalidFormat { message_id: MessageId }, /// Downward message is unsupported version of XCM. - /// \[ id \] - UnsupportedVersion(MessageId), + UnsupportedVersion { message_id: MessageId }, /// Downward message executed with the given outcome. - /// \[ id, outcome \] - ExecutedDownward(MessageId, Outcome), + ExecutedDownward { message_id: MessageId, outcome: Outcome }, /// The weight limit for handling downward messages was reached. - /// \[ id, remaining, required \] - WeightExhausted(MessageId, Weight, Weight), + WeightExhausted { message_id: MessageId, remaining_weight: Weight, required_weight: Weight }, /// Downward message is overweight and was placed in the overweight queue. - /// \[ id, index, required \] - OverweightEnqueued(MessageId, OverweightIndex, Weight), + OverweightEnqueued { + message_id: MessageId, + overweight_index: OverweightIndex, + required_weight: Weight, + }, /// Downward message from the overweight queue was executed. - /// \[ index, used \] - OverweightServiced(OverweightIndex, Weight), + OverweightServiced { overweight_index: OverweightIndex, weight_used: Weight }, } impl Pallet { @@ -225,7 +223,7 @@ pub mod pallet { _sent_at: RelayBlockNumber, mut data: &[u8], ) -> Result { - let id = sp_io::hashing::blake2_256(data); + let message_id = sp_io::hashing::blake2_256(data); let maybe_msg = VersionedXcm::::decode_all_with_depth_limit( MAX_XCM_DECODE_DEPTH, &mut data, @@ -233,21 +231,21 @@ pub mod pallet { .map(Xcm::::try_from); match maybe_msg { Err(_) => { - Self::deposit_event(Event::InvalidFormat(id)); + Self::deposit_event(Event::InvalidFormat { message_id }); Ok(0) }, Ok(Err(())) => { - Self::deposit_event(Event::UnsupportedVersion(id)); + Self::deposit_event(Event::UnsupportedVersion { message_id }); Ok(0) }, Ok(Ok(x)) => { let outcome = T::XcmExecutor::execute_xcm(Parent, x, limit); match outcome { Outcome::Error(XcmError::WeightLimitReached(required)) => - Err((id, required)), + Err((message_id, required)), outcome => { let weight_used = outcome.weight_used(); - Self::deposit_event(Event::ExecutedDownward(id, outcome)); + Self::deposit_event(Event::ExecutedDownward { message_id, outcome }); Ok(weight_used) }, } @@ -283,18 +281,22 @@ pub mod pallet { for (i, (sent_at, data)) in iter.enumerate() { if maybe_enqueue_page.is_none() { // We're not currently enqueuing - try to execute inline. - let remaining = limit.saturating_sub(used); - match Self::try_service_message(remaining, sent_at, &data[..]) { + let remaining_weight = limit.saturating_sub(used); + match Self::try_service_message(remaining_weight, sent_at, &data[..]) { Ok(consumed) => used += consumed, - Err((id, required)) => + Err((message_id, required_weight)) => // Too much weight required right now. { - if required > config.max_individual { + if required_weight > config.max_individual { // overweight - add to overweight queue and continue with // message execution. - let index = page_index.overweight_count; - Overweight::::insert(index, (sent_at, data)); - Self::deposit_event(Event::OverweightEnqueued(id, index, required)); + let overweight_index = page_index.overweight_count; + Overweight::::insert(overweight_index, (sent_at, data)); + Self::deposit_event(Event::OverweightEnqueued { + message_id, + overweight_index, + required_weight, + }); page_index.overweight_count += 1; // Not needed for control flow, but only to ensure that the compiler // understands that we won't attempt to re-use `data` later. @@ -304,9 +306,11 @@ pub mod pallet { // from here on. let item_count_left = item_count.saturating_sub(i); maybe_enqueue_page = Some(Vec::with_capacity(item_count_left)); - Self::deposit_event(Event::WeightExhausted( - id, remaining, required, - )); + Self::deposit_event(Event::WeightExhausted { + message_id, + remaining_weight, + required_weight, + }); } }, } diff --git a/pallets/parachain-system/src/lib.rs b/pallets/parachain-system/src/lib.rs index a9d1446f46..abb78adbf7 100644 --- a/pallets/parachain-system/src/lib.rs +++ b/pallets/parachain-system/src/lib.rs @@ -330,7 +330,9 @@ pub mod pallet { Self::put_parachain_code(&validation_code); ::on_validation_code_applied(); - Self::deposit_event(Event::ValidationFunctionApplied(vfp.relay_parent_number)); + Self::deposit_event(Event::ValidationFunctionApplied { + relay_chain_block_num: vfp.relay_parent_number, + }); }, Some(relay_chain::v2::UpgradeGoAhead::Abort) => { >::kill(); @@ -389,7 +391,7 @@ pub mod pallet { AuthorizedUpgrade::::put(&code_hash); - Self::deposit_event(Event::UpgradeAuthorized(code_hash)); + Self::deposit_event(Event::UpgradeAuthorized { code_hash }); Ok(()) } @@ -411,17 +413,15 @@ pub mod pallet { /// The validation function has been scheduled to apply. ValidationFunctionStored, /// The validation function was applied as of the contained relay chain block number. - ValidationFunctionApplied(RelayChainBlockNumber), + ValidationFunctionApplied { relay_chain_block_num: RelayChainBlockNumber }, /// The relay-chain aborted the upgrade process. ValidationFunctionDiscarded, /// An upgrade has been authorized. - UpgradeAuthorized(T::Hash), + UpgradeAuthorized { code_hash: T::Hash }, /// Some downward messages have been received and will be processed. - /// \[ count \] - DownwardMessagesReceived(u32), + DownwardMessagesReceived { count: u32 }, /// Downward messages were processed using the given weight. - /// \[ weight_used, result_mqc_head \] - DownwardMessagesProcessed(Weight, relay_chain::Hash), + DownwardMessagesProcessed { weight_used: Weight, dmq_head: relay_chain::Hash }, } #[pallet::error] @@ -750,7 +750,7 @@ impl Pallet { let mut weight_used = 0; if dm_count != 0 { - Self::deposit_event(Event::DownwardMessagesReceived(dm_count)); + Self::deposit_event(Event::DownwardMessagesReceived { count: dm_count }); let max_weight = >::get().unwrap_or_else(T::ReservedDmpWeight::get); @@ -763,7 +763,10 @@ impl Pallet { weight_used += T::DmpMessageHandler::handle_dmp_messages(message_iter, max_weight); >::put(&dmq_head); - Self::deposit_event(Event::DownwardMessagesProcessed(weight_used, dmq_head.head())); + Self::deposit_event(Event::DownwardMessagesProcessed { + weight_used, + dmq_head: dmq_head.head(), + }); } // After hashing each message in the message queue chain submitted by the collator, we diff --git a/pallets/parachain-system/src/tests.rs b/pallets/parachain-system/src/tests.rs index 652cfd3d78..0f7ac4b198 100755 --- a/pallets/parachain-system/src/tests.rs +++ b/pallets/parachain-system/src/tests.rs @@ -415,7 +415,10 @@ fn events() { let events = System::events(); assert_eq!( events[0].event, - Event::ParachainSystem(crate::Event::ValidationFunctionApplied(1234).into()) + Event::ParachainSystem( + crate::Event::ValidationFunctionApplied { relay_chain_block_num: 1234 } + .into() + ) ); }, ); From 08d5019bd50a667f0a765c353226eab4e7e88174 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 23 May 2022 14:37:20 +0200 Subject: [PATCH 069/238] Runtime version bump to 922 (#1283) * Runtime version bump to 922 * Switch to 9220 --- parachains/runtimes/assets/statemine/src/lib.rs | 2 +- parachains/runtimes/assets/statemint/src/lib.rs | 2 +- parachains/runtimes/assets/westmint/src/lib.rs | 2 +- parachains/runtimes/contracts/contracts-rococo/src/lib.rs | 2 +- parachains/runtimes/starters/seedling/src/lib.rs | 2 +- parachains/runtimes/testing/rococo-parachain/src/lib.rs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index 1ddfd1a177..6746ad9d20 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -82,7 +82,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("statemine"), impl_name: create_runtime_str!("statemine"), authoring_version: 1, - spec_version: 900, + spec_version: 9220, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 6, diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 1b7d01481f..5c0a55389d 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -83,7 +83,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("statemint"), impl_name: create_runtime_str!("statemint"), authoring_version: 1, - spec_version: 900, + spec_version: 9220, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 6, diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index d368dc4417..3120f4fdb5 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -80,7 +80,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("westmint"), impl_name: create_runtime_str!("westmint"), authoring_version: 1, - spec_version: 900, + spec_version: 9220, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 6, diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index 6eda8971bb..d702e9a297 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -111,7 +111,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("contracts-rococo"), impl_name: create_runtime_str!("contracts-rococo"), authoring_version: 1, - spec_version: 900, + spec_version: 9220, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/parachains/runtimes/starters/seedling/src/lib.rs b/parachains/runtimes/starters/seedling/src/lib.rs index 7ca8829b1d..6d66bc1b49 100644 --- a/parachains/runtimes/starters/seedling/src/lib.rs +++ b/parachains/runtimes/starters/seedling/src/lib.rs @@ -56,7 +56,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("seedling"), impl_name: create_runtime_str!("seedling"), authoring_version: 1, - spec_version: 900, + spec_version: 9220, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 1f0afa1baf..09e9709f39 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -93,7 +93,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("test-parachain"), impl_name: create_runtime_str!("test-parachain"), authoring_version: 1, - spec_version: 900, + spec_version: 9220, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, From c3edc026c737ae4008569dc0b6250f9c5f6b8785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Silva=20de=20Souza?= <77391175+joao-paulo-parity@users.noreply.github.com> Date: Mon, 23 May 2022 10:14:35 -0300 Subject: [PATCH 070/238] use API for pr-custom-review (#1279) --- .github/workflows/pr-custom-review.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-custom-review.yml b/.github/workflows/pr-custom-review.yml index 6cb16d931d..8e40c9ee72 100644 --- a/.github/workflows/pr-custom-review.yml +++ b/.github/workflows/pr-custom-review.yml @@ -37,6 +37,6 @@ jobs: if: github.event.pull_request.draft == true run: exit 1 - name: pr-custom-review - uses: paritytech/pr-custom-review@v2 + uses: paritytech/pr-custom-review@action-v3 with: - token: ${{ secrets.PRCR_TOKEN }} + checks-reviews-api: http://pcr.parity-prod.parity.io/api/v1/check_reviews From 8aadf6a02599513bda33020816af6284b2c145e6 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 23 May 2022 16:03:39 +0200 Subject: [PATCH 071/238] Node bump to v0.9.220 (#1284) * Node bump to v0.9.220 * Runtime version bump to 922 (#1283) * Runtime version bump to 922 * Switch to 9220 * Update cargo.lock --- Cargo.lock | 2 +- polkadot-parachain/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4fdb453cee..c1cf75e336 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7704,7 +7704,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.190" +version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index aaab54335d..7743694d84 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-parachain" -version = "0.9.190" +version = "0.9.220" authors = ["Parity Technologies "] build = "build.rs" edition = "2021" From c492f9e603d7538dda128774823accfdcfb15105 Mon Sep 17 00:00:00 2001 From: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Date: Tue, 24 May 2022 12:58:39 +0200 Subject: [PATCH 072/238] Runtime Documentation (#1282) * add docs to parachain runtimes * update and add top readme * clarify docs * review plus licenses * Update parachains/README.md * Update parachains/runtimes/assets/README.md Co-authored-by: Bernhard Schuster * Update parachains/runtimes/assets/README.md Co-authored-by: Bernhard Schuster Co-authored-by: Bernhard Schuster --- parachains/README.md | 22 ++++++++++++ parachains/runtimes/assets/README.md | 25 +++++++++++++ .../runtimes/assets/statemine/src/lib.rs | 6 ++-- .../runtimes/assets/statemint/src/lib.rs | 35 +++++++++++++++++-- .../runtimes/assets/westmint/src/lib.rs | 6 ++-- .../contracts/contracts-rococo/src/lib.rs | 6 +++- .../runtimes/starters/seedling/src/lib.rs | 7 +++- parachains/runtimes/starters/shell/src/lib.rs | 9 ++++- .../testing/rococo-parachain/src/lib.rs | 2 +- 9 files changed, 108 insertions(+), 10 deletions(-) create mode 100644 parachains/README.md create mode 100644 parachains/runtimes/assets/README.md diff --git a/parachains/README.md b/parachains/README.md new file mode 100644 index 0000000000..6230ccb738 --- /dev/null +++ b/parachains/README.md @@ -0,0 +1,22 @@ +# Parachains + +This directory is the home of Parity-developed parachain runtimes. This directory is _runtime +focused_, and does not include builds of parachain _nodes_. + +The general internal structure is: + +- `chain-specs`: Chain specs for the runtimes contained in its sibling dir `runtimes`. +- `common`: Common configurations, `impl`s, etc. used by several parachain runtimes. +- `pallets`: FRAME pallets that are specific to parachains. +- `runtimes`: The entry point for parachain runtimes. + +## Common Good Parachains + +The `runtimes` directory includes many, but is not limited to, +[common good parachains](https://wiki.polkadot.network/docs/learn-common-goods). Likewise, not all +common good parachains are in this repo. + +## Releases + +The project maintainers generally try to release a set of parachain runtimes for each Polkadot +Relay Chain runtime release. diff --git a/parachains/runtimes/assets/README.md b/parachains/runtimes/assets/README.md new file mode 100644 index 0000000000..7f995d043c --- /dev/null +++ b/parachains/runtimes/assets/README.md @@ -0,0 +1,25 @@ +# Assets Parachain + +Implementation of _Statemint_, a blockchain to support generic assets in the Polkadot and Kusama +networks. + +Statemint allows users to: + +- Deploy promise-backed assets, both fungible and non-fungible, with a DOT/KSM deposit. +- Set admin roles to manage assets and asset classes. +- Register assets as "self-sufficient" if the Relay Chain agrees, i.e. gain the ability for an + asset to justify the existance of accounts sans DOT/KSM. +- Pay transaction fees using sufficient assets. +- Transfer (and approve transfer) assets. +- Interact with the chain via its transactional API or XCM. + +Statemint must stay fully aligned with the Relay Chain it is connected to. As such, it will accept +the Relay Chain's governance origins as its own. + +See +[the article on Statemint as common good parachain](https://www.parity.io/blog/statemint-generic-assets-chain-proposing-a-common-good-parachain-to-polkadot-governance/) +for a higher level description. + +Wallets, custodians, etc. should see +[the Polkadot Wiki's Integration Guide](https://wiki.polkadot.network/docs/build-integrate-assets) +for details about support. diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index 6746ad9d20..b1789b214a 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// Copyright (C) 2021-2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +13,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Statemine runtime. +//! # Statemine Runtime +//! +//! Statemine is the canary network for its Polkadot cousin, Statemint. #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit = "256"] diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 5c0a55389d..68cd94a202 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// Copyright (C) 2021-2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +13,38 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Statemint runtime. +//! # Statemint Runtime +//! +//! Statemint is a parachain that provides an interface to create, manage, and use assets. Assets +//! may be fungible or non-fungible. +//! +//! ## Assets +//! +//! - Fungibles: Configuration of `pallet-assets`. +//! - Non-Fungibles (NFTs): Configuration of `pallet-uniques`. +//! +//! ## Other Functionality +//! +//! ### Native Balances +//! +//! Statemint uses its parent DOT token as its native asset. +//! +//! ### Governance +//! +//! As a common good parachain, Statemint defers its governance (namely, its `Root` origin), to its +//! Relay Chain parent, Polkadot. +//! +//! ### Collator Selection +//! +//! Statemint uses `pallet-collator-selection`, a simple first-come-first-served registration +//! system where collators can reserve a small bond to join the block producer set. There is no +//! slashing. +//! +//! ### XCM +//! +//! Because Statemint is fully under the control of the Relay Chain, it is meant to be a +//! `TrustedTeleporter`. It can also serve as a reserve location to other parachains for DOT as well +//! as other local assets. #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit = "256"] diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index 3120f4fdb5..14f5bead6c 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// Copyright (C) 2021-2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +13,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Westmint runtime. +//! # Westmint Runtime +//! +//! Westmint is the testnet for Statemint. #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit = "256"] diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index d702e9a297..eb0813a75e 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2021 Parity Technologies (UK) Ltd. +// Copyright (C) 2018-2022 Parity Technologies (UK) Ltd. // SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // // This program is free software: you can redistribute it and/or modify @@ -14,6 +14,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +//! # Contracts Parachain +//! +//! A parachain for using FRAME's `pallet-contracts` and ink! contracts. + #![cfg_attr(not(feature = "std"), no_std)] #![recursion_limit = "256"] diff --git a/parachains/runtimes/starters/seedling/src/lib.rs b/parachains/runtimes/starters/seedling/src/lib.rs index 6d66bc1b49..58071e1acb 100644 --- a/parachains/runtimes/starters/seedling/src/lib.rs +++ b/parachains/runtimes/starters/seedling/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// Copyright 2019-2022 Parity Technologies (UK) Ltd. // This file is part of Cumulus. // Cumulus is free software: you can redistribute it and/or modify @@ -14,6 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . +//! # Seedling Runtime +//! +//! Seedling is a parachain meant to help parachain auction winners migrate a blockchain from +//! another consensus system into the consensus system of a given Relay Chain. + #![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"] diff --git a/parachains/runtimes/starters/shell/src/lib.rs b/parachains/runtimes/starters/shell/src/lib.rs index 9170f14eb1..787d72816a 100644 --- a/parachains/runtimes/starters/shell/src/lib.rs +++ b/parachains/runtimes/starters/shell/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// Copyright 2019-2022 Parity Technologies (UK) Ltd. // This file is part of Cumulus. // Cumulus is free software: you can redistribute it and/or modify @@ -14,6 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . +//! # Shell Runtime +//! +//! The Shell runtime defines a minimal parachain. It can listen for a downward message authorizing +//! an upgrade into another parachain. +//! +//! Generally (so far) only used as the first parachain on a Relay. + #![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"] diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 09e9709f39..2819870664 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// Copyright 2019-2022 Parity Technologies (UK) Ltd. // This file is part of Cumulus. // Cumulus is free software: you can redistribute it and/or modify From da577b3f51d052a2a164d74c87228ce2e21749bd Mon Sep 17 00:00:00 2001 From: Squirrel Date: Tue, 24 May 2022 13:13:31 +0100 Subject: [PATCH 073/238] sudo was removed but we were still pulling in the crate. (#1289) --- Cargo.lock | 2 -- parachains/runtimes/assets/statemine/Cargo.toml | 2 -- parachains/runtimes/assets/statemint/Cargo.toml | 2 -- 3 files changed, 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1cf75e336..8abede0406 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11520,7 +11520,6 @@ dependencies = [ "pallet-multisig", "pallet-proxy", "pallet-session", - "pallet-sudo", "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", @@ -11586,7 +11585,6 @@ dependencies = [ "pallet-multisig", "pallet-proxy", "pallet-session", - "pallet-sudo", "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index 61df2484a8..7fdcbbe90c 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -29,7 +29,6 @@ pallet-balances = { git = "https://github.com/paritytech/substrate", default-fea pallet-multisig = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-proxy = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } -pallet-sudo = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-timestamp = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } @@ -124,7 +123,6 @@ std = [ "pallet-multisig/std", "pallet-proxy/std", "pallet-session/std", - "pallet-sudo/std", "pallet-timestamp/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index 56cc82ad80..9e549bc20e 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -29,7 +29,6 @@ pallet-balances = { git = "https://github.com/paritytech/substrate", default-fea pallet-multisig = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-proxy = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } -pallet-sudo = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-timestamp = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } @@ -122,7 +121,6 @@ std = [ "pallet-multisig/std", "pallet-proxy/std", "pallet-session/std", - "pallet-sudo/std", "pallet-timestamp/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", From 514499e7a175fa14ca94aa2ee6efc8f49e167260 Mon Sep 17 00:00:00 2001 From: Egor_P Date: Wed, 25 May 2022 16:46:37 +0200 Subject: [PATCH 074/238] deleted unnecessary repo checkout to fix fetch binary step (#1296) * deleted unnecessary repo checkout to fix fetch binary step * Update .github/workflows/extrinsic-ordering-check-from-bin.yml Co-authored-by: Mara Robin B. Co-authored-by: Chevdor Co-authored-by: Mara Robin B. --- .github/workflows/extrinsic-ordering-check-from-bin.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index 09d6ee1377..8b2540c8f0 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -27,8 +27,6 @@ jobs: REF_URL: ${{github.event.inputs.reference_url}} steps: - - uses: actions/checkout@v3 - - name: Fetch binary run: | echo Fetching $BIN_URL From 93a01eda224f76448a52f9f5b513c5f92987470a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Thei=C3=9Fen?= Date: Thu, 26 May 2022 12:57:40 +0200 Subject: [PATCH 075/238] contracts: Update bootnodes (#1294) --- parachains/chain-specs/contracts-rococo.json | 10 +++++----- polkadot-parachain/src/chain_spec.rs | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/parachains/chain-specs/contracts-rococo.json b/parachains/chain-specs/contracts-rococo.json index 7d1b84be20..a74ab22e05 100644 --- a/parachains/chain-specs/contracts-rococo.json +++ b/parachains/chain-specs/contracts-rococo.json @@ -3,10 +3,10 @@ "id": "contracts-rococo", "chainType": "Live", "bootNodes": [ - "/ip4/34.90.191.237/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj", - "/ip4/35.204.68.28/tcp/30333/p2p/12D3KooWPEXYrz8tHU3nDtPoPw4V7ou5dzMEWSTuUj7vaWiYVAVh", - "/ip4/34.90.139.15/tcp/30333/p2p/12D3KooWEVU8AFNary4nP4qEnEcwJaRuy59Wefekzdu9pKbnVEhk", - "/ip4/35.204.99.97/tcp/30333/p2p/12D3KooWP6pV3ZmcXzGDjv8ZMgA6nZxfAKDxSz4VNiLx6vVCQgJX" + "/dns/contracts-collator-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj", + "/dns/contracts-collator-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWPEXYrz8tHU3nDtPoPw4V7ou5dzMEWSTuUj7vaWiYVAVh", + "/dns/contracts-collator-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWEVU8AFNary4nP4qEnEcwJaRuy59Wefekzdu9pKbnVEhk", + "/dns/contracts-collator-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWP6pV3ZmcXzGDjv8ZMgA6nZxfAKDxSz4VNiLx6vVCQgJX" ], "telemetryEndpoints": null, "protocolId": null, @@ -80,4 +80,4 @@ "childrenDefault": {} } } -} +} \ No newline at end of file diff --git a/polkadot-parachain/src/chain_spec.rs b/polkadot-parachain/src/chain_spec.rs index 9b65ac8e59..421e571a02 100644 --- a/polkadot-parachain/src/chain_spec.rs +++ b/polkadot-parachain/src/chain_spec.rs @@ -1016,16 +1016,16 @@ pub fn contracts_rococo_config() -> ContractsRococoChainSpec { }, // Bootnodes vec![ - "/ip4/34.90.191.237/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj" + "/dns/contracts-collator-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj" .parse() .expect("MultiaddrWithPeerId"), - "/ip4/35.204.68.28/tcp/30333/p2p/12D3KooWPEXYrz8tHU3nDtPoPw4V7ou5dzMEWSTuUj7vaWiYVAVh" + "/dns/contracts-collator-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWPEXYrz8tHU3nDtPoPw4V7ou5dzMEWSTuUj7vaWiYVAVh" .parse() .expect("MultiaddrWithPeerId"), - "/ip4/34.90.139.15/tcp/30333/p2p/12D3KooWEVU8AFNary4nP4qEnEcwJaRuy59Wefekzdu9pKbnVEhk" + "/dns/contracts-collator-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWEVU8AFNary4nP4qEnEcwJaRuy59Wefekzdu9pKbnVEhk" .parse() .expect("MultiaddrWithPeerId"), - "/ip4/35.204.99.97/tcp/30333/p2p/12D3KooWP6pV3ZmcXzGDjv8ZMgA6nZxfAKDxSz4VNiLx6vVCQgJX" + "/dns/contracts-collator-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWP6pV3ZmcXzGDjv8ZMgA6nZxfAKDxSz4VNiLx6vVCQgJX" .parse() .expect("MultiaddrWithPeerId"), ], From c326bf329a2b542b03284b610cb3af6c50fa2927 Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko <85877331+sergejparity@users.noreply.github.com> Date: Thu, 26 May 2022 16:06:48 +0300 Subject: [PATCH 076/238] change ci rule to run benchmarks (#1301) --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bbe63c4c06..60e07f918d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,17 +56,17 @@ variables: .benchmarks-manual-refs: &benchmarks-manual-refs rules: - if: $CI_PIPELINE_SOURCE == "web" && - $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9]+\.[0-9]+.*$/ # run from web and on branch release-parachains-v* (i.e. 1.0, 2.1rc1) + $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # run from web and on branch release-parachains-v* (i.e. 1.0, 2.1rc1, 3) when: manual - - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9]+\.[0-9]+.*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1 + - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000 when: manual # run benchmarks only on release-parachains-v* branch .benchmarks-refs: &benchmarks-refs rules: - if: $CI_PIPELINE_SOURCE == "web" && - $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9]+\.[0-9]+.*$/ # run from web and on branch release-parachains-v* (i.e. 1.0, 2.1rc1) - - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9]+\.[0-9]+.*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1 + $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # run from web and on branch release-parachains-v* (i.e. 1.0, 2.1rc1, 3) + - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000 .docker-env: &docker-env image: "${CI_IMAGE}" From 1fe20e90221d291697154a585b9c0cd297cf0603 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 27 May 2022 11:49:55 +0100 Subject: [PATCH 077/238] transfer ownership of uniques looks cheaper. (#1302) batch all now looking a bit expensive compared to batch. no big changes. --- .../src/weights/cumulus_pallet_xcmp_queue.rs | 11 +-- .../statemine/src/weights/frame_system.rs | 27 +++---- .../statemine/src/weights/pallet_assets.rs | 73 ++++++++--------- .../statemine/src/weights/pallet_balances.rs | 21 ++--- .../src/weights/pallet_collator_selection.rs | 35 ++++---- .../statemine/src/weights/pallet_multisig.rs | 61 +++++++------- .../statemine/src/weights/pallet_proxy.rs | 75 +++++++++--------- .../statemine/src/weights/pallet_session.rs | 11 +-- .../statemine/src/weights/pallet_timestamp.rs | 11 +-- .../statemine/src/weights/pallet_uniques.rs | 79 ++++++++++--------- .../statemine/src/weights/pallet_utility.rs | 27 +++---- .../src/weights/cumulus_pallet_xcmp_queue.rs | 11 +-- .../statemint/src/weights/frame_system.rs | 23 +++--- .../statemint/src/weights/pallet_assets.rs | 69 ++++++++-------- .../statemint/src/weights/pallet_balances.rs | 21 ++--- .../src/weights/pallet_collator_selection.rs | 35 ++++---- .../statemint/src/weights/pallet_multisig.rs | 65 ++++++++------- .../statemint/src/weights/pallet_proxy.rs | 61 +++++++------- .../statemint/src/weights/pallet_session.rs | 11 +-- .../statemint/src/weights/pallet_timestamp.rs | 11 +-- .../statemint/src/weights/pallet_uniques.rs | 79 ++++++++++--------- .../statemint/src/weights/pallet_utility.rs | 27 +++---- .../src/weights/cumulus_pallet_xcmp_queue.rs | 11 +-- .../westmint/src/weights/frame_system.rs | 21 +++-- .../westmint/src/weights/pallet_assets.rs | 71 ++++++++--------- .../westmint/src/weights/pallet_balances.rs | 21 ++--- .../src/weights/pallet_collator_selection.rs | 37 ++++----- .../westmint/src/weights/pallet_multisig.rs | 57 ++++++------- .../westmint/src/weights/pallet_proxy.rs | 63 +++++++-------- .../westmint/src/weights/pallet_session.rs | 11 +-- .../westmint/src/weights/pallet_timestamp.rs | 11 +-- .../westmint/src/weights/pallet_uniques.rs | 73 ++++++++--------- .../westmint/src/weights/pallet_utility.rs | 29 ++++--- 33 files changed, 630 insertions(+), 619 deletions(-) diff --git a/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs index 72c08c5347..1376461f30 100644 --- a/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,13 +47,13 @@ pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_u32() -> Weight { - (2_591_000 as Weight) + (2_742_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_weight() -> Weight { - (2_529_000 as Weight) + (2_723_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/frame_system.rs b/parachains/runtimes/assets/statemine/src/weights/frame_system.rs index 353fc66cd0..6ac6820bf2 100644 --- a/parachains/runtimes/assets/statemine/src/weights/frame_system.rs +++ b/parachains/runtimes/assets/statemine/src/weights/frame_system.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -44,20 +45,18 @@ 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 { + fn remark(_b: u32, ) -> Weight { + (0 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 remark_with_event(b: u32, ) -> Weight { - (231_272_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) - } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (2_466_000 as Weight) + (2_661_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -65,21 +64,21 @@ impl frame_system::WeightInfo for WeightInfo { fn set_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((407_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((408_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { - (0 as Weight) + (868_000 as Weight) // Standard Error: 0 - .saturating_add((300_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((301_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((672_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((677_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/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs index 3b3706edf7..25ffd4a38f 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_assets` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,13 +47,13 @@ pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) fn create() -> Weight { - (21_739_000 as Weight) + (21_627_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_create() -> Weight { - (12_261_000 as Weight) + (11_668_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -63,12 +64,12 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Approvals (r:501 w:500) fn destroy(c: u32, s: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 38_000 - .saturating_add((12_675_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 38_000 - .saturating_add((15_906_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 380_000 - .saturating_add((13_383_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 40_000 + .saturating_add((14_590_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 40_000 + .saturating_add((17_099_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 402_000 + .saturating_add((16_521_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) @@ -81,14 +82,14 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn mint() -> Weight { - (24_951_000 as Weight) + (25_181_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn burn() -> Weight { - (28_334_000 as Weight) + (28_345_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -96,7 +97,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (41_250_000 as Weight) + (41_418_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -104,7 +105,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (34_843_000 as Weight) + (35_087_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -112,93 +113,89 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn force_transfer() -> Weight { - (41_377_000 as Weight) + (41_546_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn freeze() -> Weight { - (16_794_000 as Weight) + (16_980_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn thaw() -> Weight { - (16_600_000 as Weight) + (17_244_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn freeze_asset() -> Weight { - (13_729_000 as Weight) + (13_896_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn thaw_asset() -> Weight { - (13_749_000 as Weight) + (13_645_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Metadata (r:1 w:0) fn transfer_ownership() -> Weight { - (14_651_000 as Weight) + (15_188_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn set_team() -> Weight { - (13_393_000 as Weight) + (13_773_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) - fn set_metadata(n: u32, s: u32, ) -> Weight { - (26_365_000 as Weight) + fn set_metadata(_n: u32, s: u32, ) -> Weight { + (26_675_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((2_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn clear_metadata() -> Weight { - (26_123_000 as Weight) + (26_721_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) - fn force_set_metadata(_n: u32, s: u32, ) -> Weight { - (15_431_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + fn force_set_metadata(_n: u32, _s: u32, ) -> Weight { + (15_048_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_clear_metadata() -> Weight { - (26_658_000 as Weight) + (26_543_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_asset_status() -> Weight { - (13_875_000 as Weight) + (13_155_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn approve_transfer() -> Weight { - (29_797_000 as Weight) + (29_278_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -207,21 +204,21 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_approved() -> Weight { - (53_337_000 as Weight) + (53_600_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn cancel_approval() -> Weight { - (29_970_000 as Weight) + (30_325_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn force_cancel_approval() -> Weight { - (31_972_000 as Weight) + (31_541_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs index cfb8cd23b3..2ff177cec7 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_balances` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,43 +47,43 @@ pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (34_472_000 as Weight) + (35_771_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (26_282_000 as Weight) + (27_333_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (15_707_000 as Weight) + (17_049_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (18_951_000 as Weight) + (20_318_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (34_740_000 as Weight) + (36_298_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (31_709_000 as Weight) + (32_829_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (14_427_000 as Weight) + (14_966_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs index 1137b86ce8..b1a7f9ae53 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_collator_selection` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,20 +48,20 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection Invulnerables (r:0 w:1) fn set_invulnerables(b: u32, ) -> Weight { - (10_709_000 as Weight) - // Standard Error: 3_000 - .saturating_add((2_851_000 as Weight).saturating_mul(b as Weight)) + (7_537_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_134_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection DesiredCandidates (r:0 w:1) fn set_desired_candidates() -> Weight { - (9_173_000 as Weight) + (8_482_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection CandidacyBond (r:0 w:1) fn set_candidacy_bond() -> Weight { - (9_226_000 as Weight) + (8_830_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) @@ -70,18 +71,18 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: CollatorSelection CandidacyBond (r:1 w:0) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn register_as_candidate(c: u32, ) -> Weight { - (47_870_000 as Weight) + (49_340_000 as Weight) // Standard Error: 1_000 - .saturating_add((96_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((73_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn leave_intent(c: u32, ) -> Weight { - (49_602_000 as Weight) + (47_670_000 as Weight) // Standard Error: 1_000 - .saturating_add((105_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((84_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -89,7 +90,7 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn note_author() -> Weight { - (31_361_000 as Weight) + (31_969_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -100,10 +101,10 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) fn new_session(r: u32, c: u32, ) -> Weight { (0 as Weight) - // Standard Error: 2_219_000 - .saturating_add((13_259_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 2_219_000 - .saturating_add((58_670_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 1_622_000 + .saturating_add((9_012_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 1_622_000 + .saturating_add((43_791_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs index 12468f3d6f..3b37ba3065 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_multisig` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -44,19 +45,17 @@ 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 { - (12_699_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) + fn as_multi_threshold_1(_z: u32, ) -> Weight { + (11_793_000 as Weight) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (27_757_000 as Weight) + (31_457_000 as Weight) // Standard Error: 0 - .saturating_add((113_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((89_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .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)) } @@ -64,9 +63,9 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (30_855_000 as Weight) + (33_873_000 as Weight) // Standard Error: 1_000 - .saturating_add((112_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((92_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)) @@ -74,20 +73,20 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (16_828_000 as Weight) + (20_886_000 as Weight) + // Standard Error: 1_000 + .saturating_add((78_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((120_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (29_937_000 as Weight) + (32_658_000 as Weight) // Standard Error: 1_000 - .saturating_add((123_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((88_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)) @@ -97,29 +96,29 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (38_564_000 as Weight) + (40_252_000 as Weight) + // Standard Error: 1_000 + .saturating_add((123_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((162_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .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(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (27_560_000 as Weight) - // Standard Error: 0 - .saturating_add((112_000 as Weight).saturating_mul(s as Weight)) + (28_117_000 as Weight) + // Standard Error: 1_000 + .saturating_add((105_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (16_925_000 as Weight) + (17_435_000 as Weight) // Standard Error: 0 - .saturating_add((121_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((99_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)) } @@ -127,18 +126,18 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (71_474_000 as Weight) + (56_681_000 as Weight) // Standard Error: 1_000 - .saturating_add((164_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((137_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (49_848_000 as Weight) + (44_968_000 as Weight) // Standard Error: 1_000 - .saturating_add((111_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((107_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/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs index 55053fe6ba..95f4fb539d 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_proxy` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,42 +47,42 @@ pub struct WeightInfo(PhantomData); impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Proxies (r:1 w:0) fn proxy(p: u32, ) -> Weight { - (13_530_000 as Weight) - // Standard Error: 2_000 - .saturating_add((91_000 as Weight).saturating_mul(p as Weight)) + (13_370_000 as Weight) + // Standard Error: 1_000 + .saturating_add((76_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn proxy_announced(a: u32, p: u32, ) -> Weight { - (29_316_000 as Weight) - // Standard Error: 1_000 - .saturating_add((218_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((92_000 as Weight).saturating_mul(p as Weight)) + (29_628_000 as Weight) + // Standard Error: 2_000 + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((91_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)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn remove_announcement(a: u32, p: u32, ) -> Weight { - (19_752_000 as Weight) - // Standard Error: 1_000 - .saturating_add((230_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((14_000 as Weight).saturating_mul(p as Weight)) + (20_690_000 as Weight) + // Standard Error: 2_000 + .saturating_add((178_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((25_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn reject_announcement(a: u32, p: u32, ) -> Weight { - (19_699_000 as Weight) + (20_705_000 as Weight) // Standard Error: 1_000 - .saturating_add((231_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((16_000 as Weight).saturating_mul(p as Weight)) + .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(2 as Weight)) } @@ -89,52 +90,52 @@ impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn announce(a: u32, p: u32, ) -> Weight { - (27_298_000 as Weight) - // Standard Error: 1_000 - .saturating_add((218_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((88_000 as Weight).saturating_mul(p as Weight)) + (28_504_000 as Weight) + // Standard Error: 2_000 + .saturating_add((154_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((82_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)) } // Storage: Proxy Proxies (r:1 w:1) fn add_proxy(p: u32, ) -> Weight { - (22_349_000 as Weight) - // Standard Error: 2_000 - .saturating_add((147_000 as Weight).saturating_mul(p as Weight)) + (23_725_000 as Weight) + // Standard Error: 3_000 + .saturating_add((107_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)) } // Storage: Proxy Proxies (r:1 w:1) fn remove_proxy(p: u32, ) -> Weight { - (18_618_000 as Weight) + (23_878_000 as Weight) // Standard Error: 2_000 - .saturating_add((161_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((104_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)) } // Storage: Proxy Proxies (r:1 w:1) fn remove_proxies(p: u32, ) -> Weight { - (18_655_000 as Weight) - // Standard Error: 1_000 - .saturating_add((85_000 as Weight).saturating_mul(p as Weight)) + (19_794_000 as Weight) + // Standard Error: 2_000 + .saturating_add((66_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)) } // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) // Storage: Proxy Proxies (r:1 w:1) fn anonymous(p: u32, ) -> Weight { - (25_367_000 as Weight) + (26_583_000 as Weight) // Standard Error: 2_000 - .saturating_add((29_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((21_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)) } // Storage: Proxy Proxies (r:1 w:1) fn kill_anonymous(p: u32, ) -> Weight { - (19_688_000 as Weight) - // Standard Error: 1_000 - .saturating_add((84_000 as Weight).saturating_mul(p as Weight)) + (20_573_000 as Weight) + // Standard Error: 2_000 + .saturating_add((68_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/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs index 03504325bf..40c6b9a260 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_session` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,14 +48,14 @@ impl pallet_session::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (11_938_000 as Weight) + (13_104_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (9_197_000 as Weight) + (10_083_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs index 24b7842db9..202ec83005 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_timestamp` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,11 +47,11 @@ pub struct WeightInfo(PhantomData); impl pallet_timestamp::WeightInfo for WeightInfo { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (3_420_000 as Weight) + (3_852_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (2_265_000 as Weight) + (2_335_000 as Weight) } } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs index 0d6ccb4ce9..d0d570e760 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,14 +48,14 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (23_105_000 as Weight) + (23_692_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (13_084_000 as Weight) + (13_308_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -67,12 +68,12 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:20) fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 14_000 - .saturating_add((9_091_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 14_000 - .saturating_add((977_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 14_000 - .saturating_add((864_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 17_000 + .saturating_add((9_675_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 17_000 + .saturating_add((975_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 17_000 + .saturating_add((860_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) @@ -82,17 +83,18 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:1) + // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (28_885_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + (31_547_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:1) fn burn() -> Weight { - (30_093_000 as Weight) + (30_845_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -100,7 +102,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:2) fn transfer() -> Weight { - (22_434_000 as Weight) + (23_188_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -108,8 +110,8 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:100 w:100) fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 12_000 - .saturating_add((11_849_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 13_000 + .saturating_add((12_385_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -118,47 +120,47 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (17_567_000 as Weight) + (18_475_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (17_245_000 as Weight) + (18_166_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (13_243_000 as Weight) + (13_385_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (12_996_000 as Weight) + (13_377_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques OwnershipAcceptance (r:1 w:1) // Storage: Uniques Class (r:1 w:1) - // Storage: System Account (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (29_714_000 as Weight) + (20_471_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (13_567_000 as Weight) + (13_902_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (16_719_000 as Weight) + (16_642_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -166,7 +168,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (36_533_000 as Weight) + (37_957_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -174,64 +176,63 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (34_897_000 as Weight) + (35_937_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (28_928_000 as Weight) + (30_125_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (28_986_000 as Weight) + (29_919_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (28_446_000 as Weight) + (28_912_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (26_425_000 as Weight) + (26_897_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (19_368_000 as Weight) + (19_927_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (19_094_000 as Weight) + (19_894_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques Class (r:1 w:0) - // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (19_417_000 as Weight) + (17_053_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) - // Storage: Uniques Asset (r:1 w:1) fn set_collection_max_supply() -> Weight { - (19_417_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) + (16_929_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs index 4ee7ce53e3..0468fa48d5 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_utility` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemine-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemine.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,26 +46,24 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_utility::WeightInfo for WeightInfo { fn batch(c: u32, ) -> Weight { - (15_856_000 as Weight) - // Standard Error: 2_000 - .saturating_add((3_602_000 as Weight).saturating_mul(c as Weight)) + (13_031_000 as Weight) + // Standard Error: 1_000 + .saturating_add((2_829_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (2_394_000 as Weight) + (1_740_000 as Weight) } fn batch_all(c: u32, ) -> Weight { - (18_190_000 as Weight) + (17_846_000 as Weight) // Standard Error: 2_000 - .saturating_add((3_901_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((3_074_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (8_310_000 as Weight) + (8_741_000 as Weight) } fn force_batch(c: u32, ) -> Weight { - (13_470_000 as Weight) + (11_543_000 as Weight) // Standard Error: 1_000 - .saturating_add((4_229_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)) + .saturating_add((2_832_000 as Weight).saturating_mul(c as Weight)) } } diff --git a/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs index 0d322f742d..034c5223a6 100644 --- a/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,13 +47,13 @@ pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_u32() -> Weight { - (2_711_000 as Weight) + (2_947_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_weight() -> Weight { - (2_627_000 as Weight) + (2_953_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/frame_system.rs b/parachains/runtimes/assets/statemint/src/weights/frame_system.rs index 89a63ce760..13e338fed0 100644 --- a/parachains/runtimes/assets/statemint/src/weights/frame_system.rs +++ b/parachains/runtimes/assets/statemint/src/weights/frame_system.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -44,20 +45,18 @@ 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 { + fn remark(_b: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (2_470_000 as Weight) + (2_796_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -65,21 +64,21 @@ impl frame_system::WeightInfo for WeightInfo { fn set_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((403_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((406_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((304_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((300_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 1_000 - .saturating_add((677_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 0 + .saturating_add((675_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/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs index f7964cfa7f..25c402ca66 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_assets` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,13 +47,13 @@ pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) fn create() -> Weight { - (21_863_000 as Weight) + (21_125_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_create() -> Weight { - (12_397_000 as Weight) + (11_436_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -63,12 +64,12 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Approvals (r:501 w:500) fn destroy(c: u32, s: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 33_000 - .saturating_add((13_738_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 33_000 - .saturating_add((16_229_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 333_000 - .saturating_add((16_128_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 41_000 + .saturating_add((14_276_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 41_000 + .saturating_add((17_058_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 413_000 + .saturating_add((16_349_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) @@ -81,14 +82,14 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn mint() -> Weight { - (25_048_000 as Weight) + (25_174_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn burn() -> Weight { - (28_836_000 as Weight) + (28_685_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -96,7 +97,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (41_618_000 as Weight) + (41_884_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -104,7 +105,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (34_970_000 as Weight) + (34_928_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -112,93 +113,93 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn force_transfer() -> Weight { - (41_599_000 as Weight) + (41_850_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn freeze() -> Weight { - (17_589_000 as Weight) + (17_476_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn thaw() -> Weight { - (17_125_000 as Weight) + (16_933_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn freeze_asset() -> Weight { - (14_462_000 as Weight) + (14_108_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn thaw_asset() -> Weight { - (14_305_000 as Weight) + (13_892_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Metadata (r:1 w:0) fn transfer_ownership() -> Weight { - (14_822_000 as Weight) + (15_156_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn set_team() -> Weight { - (13_671_000 as Weight) + (13_664_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn set_metadata(n: u32, s: u32, ) -> Weight { - (26_785_000 as Weight) + (26_528_000 as Weight) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(n as Weight)) + .saturating_add((4_000 as Weight).saturating_mul(n as Weight)) // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((7_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn clear_metadata() -> Weight { - (26_324_000 as Weight) + (26_473_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_set_metadata(_n: u32, s: u32, ) -> Weight { - (15_401_000 as Weight) + (15_111_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((1_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_clear_metadata() -> Weight { - (27_105_000 as Weight) + (26_530_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_asset_status() -> Weight { - (13_699_000 as Weight) + (13_531_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn approve_transfer() -> Weight { - (29_677_000 as Weight) + (29_424_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -207,21 +208,21 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_approved() -> Weight { - (53_717_000 as Weight) + (53_931_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn cancel_approval() -> Weight { - (30_229_000 as Weight) + (30_317_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn force_cancel_approval() -> Weight { - (32_073_000 as Weight) + (31_712_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs index e9e8231286..028f18aff0 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_balances` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,43 +47,43 @@ pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (35_007_000 as Weight) + (35_623_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (26_281_000 as Weight) + (26_691_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (15_471_000 as Weight) + (16_902_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (19_057_000 as Weight) + (19_859_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (35_036_000 as Weight) + (35_804_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (31_988_000 as Weight) + (32_500_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (14_337_000 as Weight) + (15_231_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs index a55a2f8b7c..f17ef6ce86 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_collator_selection` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,20 +48,20 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection Invulnerables (r:0 w:1) fn set_invulnerables(b: u32, ) -> Weight { - (8_883_000 as Weight) - // Standard Error: 3_000 - .saturating_add((2_927_000 as Weight).saturating_mul(b as Weight)) + (7_491_000 as Weight) + // Standard Error: 4_000 + .saturating_add((3_088_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection DesiredCandidates (r:0 w:1) fn set_desired_candidates() -> Weight { - (9_058_000 as Weight) + (8_499_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection CandidacyBond (r:0 w:1) fn set_candidacy_bond() -> Weight { - (9_102_000 as Weight) + (8_828_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) @@ -70,18 +71,18 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: CollatorSelection CandidacyBond (r:1 w:0) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn register_as_candidate(c: u32, ) -> Weight { - (52_247_000 as Weight) + (50_408_000 as Weight) // Standard Error: 1_000 - .saturating_add((94_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((74_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn leave_intent(c: u32, ) -> Weight { - (42_428_000 as Weight) + (46_529_000 as Weight) // Standard Error: 1_000 - .saturating_add((117_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((88_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -89,7 +90,7 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn note_author() -> Weight { - (30_722_000 as Weight) + (32_010_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -100,10 +101,10 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) fn new_session(r: u32, c: u32, ) -> Weight { (0 as Weight) - // Standard Error: 2_230_000 - .saturating_add((13_222_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 2_230_000 - .saturating_add((58_957_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 1_634_000 + .saturating_add((9_177_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 1_634_000 + .saturating_add((44_101_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs index 11297f2356..2db8e0c9be 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_multisig` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -44,19 +45,17 @@ 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 { - (13_015_000 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) + fn as_multi_threshold_1(_z: u32, ) -> Weight { + (11_820_000 as Weight) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (27_696_000 as Weight) - // Standard Error: 1_000 - .saturating_add((111_000 as Weight).saturating_mul(s as Weight)) + (30_833_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((97_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)) } @@ -64,9 +63,9 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (31_594_000 as Weight) + (34_326_000 as Weight) // Standard Error: 1_000 - .saturating_add((110_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((76_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)) @@ -74,20 +73,20 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (18_129_000 as Weight) + (19_773_000 as Weight) + // Standard Error: 1_000 + .saturating_add((80_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((117_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (30_517_000 as Weight) + (32_978_000 as Weight) // Standard Error: 1_000 - .saturating_add((123_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((88_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)) @@ -97,29 +96,29 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (38_882_000 as Weight) + (43_388_000 as Weight) + // Standard Error: 1_000 + .saturating_add((115_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((170_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .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(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (27_825_000 as Weight) - // Standard Error: 0 - .saturating_add((117_000 as Weight).saturating_mul(s as Weight)) + (28_277_000 as Weight) + // Standard Error: 1_000 + .saturating_add((106_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (17_556_000 as Weight) + (17_706_000 as Weight) // Standard Error: 0 - .saturating_add((118_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((99_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)) } @@ -127,18 +126,18 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (72_797_000 as Weight) + (56_982_000 as Weight) // Standard Error: 1_000 - .saturating_add((166_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((142_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (50_955_000 as Weight) - // Standard Error: 0 - .saturating_add((112_000 as Weight).saturating_mul(s as Weight)) + (45_280_000 as Weight) + // Standard Error: 1_000 + .saturating_add((106_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/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs index 163e7f85df..f714523cb5 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_proxy` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,42 +47,42 @@ pub struct WeightInfo(PhantomData); impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Proxies (r:1 w:0) fn proxy(p: u32, ) -> Weight { - (13_697_000 as Weight) + (13_319_000 as Weight) // Standard Error: 1_000 - .saturating_add((92_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((74_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn proxy_announced(a: u32, p: u32, ) -> Weight { - (29_761_000 as Weight) + (29_744_000 as Weight) // Standard Error: 1_000 - .saturating_add((225_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((151_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((90_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((71_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)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn remove_announcement(a: u32, p: u32, ) -> Weight { - (20_197_000 as Weight) + (20_491_000 as Weight) // Standard Error: 1_000 - .saturating_add((235_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((167_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((13_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((20_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn reject_announcement(a: u32, p: u32, ) -> Weight { - (20_483_000 as Weight) + (20_322_000 as Weight) // Standard Error: 1_000 - .saturating_add((227_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((168_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((10_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((23_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -89,52 +90,52 @@ impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn announce(a: u32, p: u32, ) -> Weight { - (27_439_000 as Weight) + (27_196_000 as Weight) // Standard Error: 2_000 - .saturating_add((222_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((165_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 2_000 - .saturating_add((98_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((82_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)) } // Storage: Proxy Proxies (r:1 w:1) fn add_proxy(p: u32, ) -> Weight { - (22_789_000 as Weight) - // Standard Error: 2_000 - .saturating_add((148_000 as Weight).saturating_mul(p as Weight)) + (22_891_000 as Weight) + // Standard Error: 3_000 + .saturating_add((112_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)) } // Storage: Proxy Proxies (r:1 w:1) fn remove_proxy(p: u32, ) -> Weight { - (19_009_000 as Weight) - // Standard Error: 2_000 - .saturating_add((163_000 as Weight).saturating_mul(p as Weight)) + (22_819_000 as Weight) + // Standard Error: 3_000 + .saturating_add((123_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)) } // Storage: Proxy Proxies (r:1 w:1) fn remove_proxies(p: u32, ) -> Weight { - (18_810_000 as Weight) + (19_067_000 as Weight) // Standard Error: 1_000 - .saturating_add((102_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((75_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)) } // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) // Storage: Proxy Proxies (r:1 w:1) fn anonymous(p: u32, ) -> Weight { - (25_779_000 as Weight) - // Standard Error: 1_000 - .saturating_add((33_000 as Weight).saturating_mul(p as Weight)) + (25_335_000 as Weight) + // Standard Error: 2_000 + .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)) } // Storage: Proxy Proxies (r:1 w:1) fn kill_anonymous(p: u32, ) -> Weight { - (19_961_000 as Weight) + (20_262_000 as Weight) // Standard Error: 2_000 - .saturating_add((90_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((70_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/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs index 1f08fb458a..422b3779ac 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_session` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,14 +48,14 @@ impl pallet_session::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (12_325_000 as Weight) + (12_809_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (9_910_000 as Weight) + (9_844_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs index c2497125b5..4ba7092bae 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_timestamp` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,11 +47,11 @@ pub struct WeightInfo(PhantomData); impl pallet_timestamp::WeightInfo for WeightInfo { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (3_509_000 as Weight) + (3_742_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (2_157_000 as Weight) + (2_217_000 as Weight) } } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs index a296fdc2ce..18c11a8f76 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,14 +48,14 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (23_032_000 as Weight) + (22_749_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (13_321_000 as Weight) + (13_806_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -67,12 +68,12 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:20) fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 14_000 - .saturating_add((8_952_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 14_000 - .saturating_add((859_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 14_000 - .saturating_add((698_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 16_000 + .saturating_add((9_523_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 16_000 + .saturating_add((1_015_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 16_000 + .saturating_add((957_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) @@ -82,17 +83,18 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:1) + // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (29_716_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + (31_084_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:1) fn burn() -> Weight { - (29_977_000 as Weight) + (30_007_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -100,7 +102,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:2) fn transfer() -> Weight { - (22_807_000 as Weight) + (23_247_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -108,8 +110,8 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:100 w:100) fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 14_000 - .saturating_add((11_919_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 12_000 + .saturating_add((12_143_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -118,47 +120,47 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (17_684_000 as Weight) + (17_750_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (17_465_000 as Weight) + (17_991_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (13_259_000 as Weight) + (13_329_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (13_207_000 as Weight) + (13_084_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques OwnershipAcceptance (r:1 w:1) // Storage: Uniques Class (r:1 w:1) - // Storage: System Account (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (29_501_000 as Weight) + (20_520_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (13_808_000 as Weight) + (13_873_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (16_812_000 as Weight) + (15_979_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -166,7 +168,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (36_347_000 as Weight) + (37_161_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -174,64 +176,63 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (34_931_000 as Weight) + (35_578_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (29_234_000 as Weight) + (29_693_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (28_822_000 as Weight) + (29_248_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (28_613_000 as Weight) + (28_479_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (26_273_000 as Weight) + (26_495_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (19_537_000 as Weight) + (19_533_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (19_292_000 as Weight) + (19_479_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques Class (r:1 w:0) - // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (19_417_000 as Weight) + (16_551_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) - // Storage: Uniques Asset (r:1 w:1) fn set_collection_max_supply() -> Weight { - (19_417_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) + (16_254_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs index 7ffae32dcb..108bfc7088 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_utility` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=statemint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-statemint.json // --header=./file_header.txt -// --output=./polkadot-parachains/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,26 +46,24 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_utility::WeightInfo for WeightInfo { fn batch(c: u32, ) -> Weight { - (19_538_000 as Weight) - // Standard Error: 2_000 - .saturating_add((3_650_000 as Weight).saturating_mul(c as Weight)) + (12_413_000 as Weight) + // Standard Error: 1_000 + .saturating_add((3_011_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (2_477_000 as Weight) + (1_748_000 as Weight) } fn batch_all(c: u32, ) -> Weight { - (22_204_000 as Weight) + (20_755_000 as Weight) // Standard Error: 2_000 - .saturating_add((3_957_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((3_254_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (8_834_000 as Weight) + (8_936_000 as Weight) } fn force_batch(c: u32, ) -> Weight { - (13_470_000 as Weight) + (12_159_000 as Weight) // Standard Error: 1_000 - .saturating_add((4_229_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)) + .saturating_add((3_063_000 as Weight).saturating_mul(c as Weight)) } } diff --git a/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs index 6bce6bbb44..fa8084e394 100644 --- a/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,13 +47,13 @@ pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_u32() -> Weight { - (2_598_000 as Weight) + (2_926_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_weight() -> Weight { - (2_647_000 as Weight) + (2_822_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/frame_system.rs b/parachains/runtimes/assets/westmint/src/weights/frame_system.rs index 450967b7f2..84806b92cd 100644 --- a/parachains/runtimes/assets/westmint/src/weights/frame_system.rs +++ b/parachains/runtimes/assets/westmint/src/weights/frame_system.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -44,20 +45,18 @@ 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 { + fn remark(_b: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (2_664_000 as Weight) + (2_765_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -65,21 +64,21 @@ impl frame_system::WeightInfo for WeightInfo { fn set_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((410_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((407_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_storage(i: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((310_000 as Weight).saturating_mul(i as Weight)) + .saturating_add((301_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((667_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((675_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/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs index 4e3ed82c8d..cdd196cb30 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_assets` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,13 +47,13 @@ pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) fn create() -> Weight { - (21_200_000 as Weight) + (21_904_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_create() -> Weight { - (11_195_000 as Weight) + (11_278_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -63,12 +64,12 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Approvals (r:501 w:500) fn destroy(c: u32, s: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 35_000 - .saturating_add((13_500_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 35_000 - .saturating_add((16_261_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 354_000 - .saturating_add((15_962_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 40_000 + .saturating_add((14_319_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 40_000 + .saturating_add((17_186_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 405_000 + .saturating_add((16_886_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) @@ -81,14 +82,14 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn mint() -> Weight { - (24_295_000 as Weight) + (25_484_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn burn() -> Weight { - (28_157_000 as Weight) + (29_034_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -96,7 +97,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (39_882_000 as Weight) + (41_422_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -104,7 +105,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (34_294_000 as Weight) + (35_411_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -112,93 +113,91 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn force_transfer() -> Weight { - (41_000_000 as Weight) + (42_224_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn freeze() -> Weight { - (16_904_000 as Weight) + (17_089_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn thaw() -> Weight { - (16_618_000 as Weight) + (17_264_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn freeze_asset() -> Weight { - (13_786_000 as Weight) + (14_186_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn thaw_asset() -> Weight { - (13_482_000 as Weight) + (14_050_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Metadata (r:1 w:0) fn transfer_ownership() -> Weight { - (14_502_000 as Weight) + (15_416_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn set_team() -> Weight { - (13_035_000 as Weight) + (13_897_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) - fn set_metadata(n: u32, s: u32, ) -> Weight { - (26_316_000 as Weight) + fn set_metadata(_n: u32, s: u32, ) -> Weight { + (27_021_000 as Weight) // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 0 - .saturating_add((3_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((1_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn clear_metadata() -> Weight { - (25_683_000 as Weight) + (26_549_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_set_metadata(_n: u32, s: u32, ) -> Weight { - (14_517_000 as Weight) + (14_947_000 as Weight) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((1_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_clear_metadata() -> Weight { - (26_239_000 as Weight) + (26_334_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_asset_status() -> Weight { - (13_044_000 as Weight) + (13_291_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn approve_transfer() -> Weight { - (28_954_000 as Weight) + (29_781_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -207,21 +206,21 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_approved() -> Weight { - (52_533_000 as Weight) + (54_111_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn cancel_approval() -> Weight { - (29_980_000 as Weight) + (30_413_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn force_cancel_approval() -> Weight { - (30_987_000 as Weight) + (31_635_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs index 6ce47ca46d..ce4646373e 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_balances` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,43 +47,43 @@ pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (34_518_000 as Weight) + (37_133_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (26_614_000 as Weight) + (28_339_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (15_226_000 as Weight) + (16_854_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (18_785_000 as Weight) + (20_043_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (34_624_000 as Weight) + (37_927_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (32_020_000 as Weight) + (34_600_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (14_463_000 as Weight) + (15_697_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs index 7b82cb670e..6dbad537e2 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_collator_selection` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,20 +48,20 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection Invulnerables (r:0 w:1) fn set_invulnerables(b: u32, ) -> Weight { - (9_558_000 as Weight) - // Standard Error: 3_000 - .saturating_add((2_853_000 as Weight).saturating_mul(b as Weight)) + (7_367_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_108_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection DesiredCandidates (r:0 w:1) fn set_desired_candidates() -> Weight { - (8_576_000 as Weight) + (8_408_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection CandidacyBond (r:0 w:1) fn set_candidacy_bond() -> Weight { - (8_576_000 as Weight) + (8_465_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) @@ -70,18 +71,18 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: CollatorSelection CandidacyBond (r:1 w:0) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn register_as_candidate(c: u32, ) -> Weight { - (47_896_000 as Weight) - // Standard Error: 1_000 - .saturating_add((98_000 as Weight).saturating_mul(c as Weight)) + (47_256_000 as Weight) + // Standard Error: 0 + .saturating_add((80_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn leave_intent(c: u32, ) -> Weight { - (51_772_000 as Weight) + (47_184_000 as Weight) // Standard Error: 1_000 - .saturating_add((105_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((93_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -89,7 +90,7 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn note_author() -> Weight { - (30_967_000 as Weight) + (31_830_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -100,10 +101,10 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) fn new_session(r: u32, c: u32, ) -> Weight { (0 as Weight) - // Standard Error: 2_210_000 - .saturating_add((13_171_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 2_210_000 - .saturating_add((58_460_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 1_712_000 + .saturating_add((9_418_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 1_712_000 + .saturating_add((46_064_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs index 3e0bdd1596..d61d2d9f7f 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_multisig` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,18 +46,18 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_multisig::WeightInfo for WeightInfo { fn as_multi_threshold_1(z: u32, ) -> Weight { - (12_779_000 as Weight) + (12_152_000 as Weight) // Standard Error: 0 .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create(s: u32, z: u32, ) -> Weight { - (27_921_000 as Weight) + (30_804_000 as Weight) // Standard Error: 0 - .saturating_add((108_000 as Weight).saturating_mul(s as Weight)) + .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((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)) } @@ -64,9 +65,9 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (31_493_000 as Weight) + (34_003_000 as Weight) // Standard Error: 1_000 - .saturating_add((111_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((77_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)) @@ -74,20 +75,20 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (17_965_000 as Weight) + (20_754_000 as Weight) // Standard Error: 1_000 - .saturating_add((110_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((78_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (31_632_000 as Weight) + (32_903_000 as Weight) // Standard Error: 1_000 - .saturating_add((115_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((89_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)) @@ -97,19 +98,19 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (38_352_000 as Weight) + (40_647_000 as Weight) + // Standard Error: 1_000 + .saturating_add((126_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((162_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(z as Weight)) + .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(3 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) fn approve_as_multi_create(s: u32, ) -> Weight { - (27_503_000 as Weight) - // Standard Error: 0 + (28_386_000 as Weight) + // Standard Error: 1_000 .saturating_add((105_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)) @@ -117,9 +118,9 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) fn approve_as_multi_approve(s: u32, ) -> Weight { - (17_138_000 as Weight) + (17_693_000 as Weight) // Standard Error: 0 - .saturating_add((109_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((104_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)) } @@ -127,18 +128,18 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) fn approve_as_multi_complete(s: u32, ) -> Weight { - (71_044_000 as Weight) - // Standard Error: 0 - .saturating_add((165_000 as Weight).saturating_mul(s as Weight)) + (59_428_000 as Weight) + // Standard Error: 1_000 + .saturating_add((142_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) fn cancel_as_multi(s: u32, ) -> Weight { - (49_662_000 as Weight) - // Standard Error: 0 - .saturating_add((108_000 as Weight).saturating_mul(s as Weight)) + (46_106_000 as Weight) + // Standard Error: 1_000 + .saturating_add((109_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/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs index 86fdf795e0..f7070665b7 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_proxy` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,42 +47,42 @@ pub struct WeightInfo(PhantomData); impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Proxies (r:1 w:0) fn proxy(p: u32, ) -> Weight { - (13_531_000 as Weight) - // Standard Error: 2_000 - .saturating_add((89_000 as Weight).saturating_mul(p as Weight)) + (13_141_000 as Weight) + // Standard Error: 1_000 + .saturating_add((77_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn proxy_announced(a: u32, p: u32, ) -> Weight { - (28_971_000 as Weight) + (29_038_000 as Weight) // Standard Error: 1_000 - .saturating_add((217_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((169_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((94_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((83_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)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn remove_announcement(a: u32, p: u32, ) -> Weight { - (19_617_000 as Weight) + (20_094_000 as Weight) // Standard Error: 1_000 - .saturating_add((230_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((20_000 as Weight).saturating_mul(p as Weight)) + .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(2 as Weight)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn reject_announcement(a: u32, p: u32, ) -> Weight { - (19_839_000 as Weight) + (20_103_000 as Weight) // Standard Error: 1_000 - .saturating_add((226_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((13_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((28_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -89,52 +90,52 @@ impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) fn announce(a: u32, p: u32, ) -> Weight { - (26_993_000 as Weight) - // Standard Error: 1_000 - .saturating_add((214_000 as Weight).saturating_mul(a as Weight)) + (27_273_000 as Weight) // Standard Error: 1_000 + .saturating_add((157_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 .saturating_add((87_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)) } // Storage: Proxy Proxies (r:1 w:1) fn add_proxy(p: u32, ) -> Weight { - (22_458_000 as Weight) + (22_950_000 as Weight) // Standard Error: 2_000 - .saturating_add((142_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((102_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)) } // Storage: Proxy Proxies (r:1 w:1) fn remove_proxy(p: u32, ) -> Weight { - (18_739_000 as Weight) - // Standard Error: 2_000 - .saturating_add((164_000 as Weight).saturating_mul(p as Weight)) + (22_740_000 as Weight) + // Standard Error: 3_000 + .saturating_add((120_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)) } // Storage: Proxy Proxies (r:1 w:1) fn remove_proxies(p: u32, ) -> Weight { - (18_824_000 as Weight) - // Standard Error: 2_000 - .saturating_add((88_000 as Weight).saturating_mul(p as Weight)) + (18_937_000 as Weight) + // Standard Error: 1_000 + .saturating_add((75_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)) } // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) // Storage: Proxy Proxies (r:1 w:1) fn anonymous(p: u32, ) -> Weight { - (24_943_000 as Weight) - // Standard Error: 1_000 - .saturating_add((31_000 as Weight).saturating_mul(p as Weight)) + (25_617_000 as Weight) + // Standard Error: 2_000 + .saturating_add((24_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)) } // Storage: Proxy Proxies (r:1 w:1) fn kill_anonymous(p: u32, ) -> Weight { - (19_465_000 as Weight) + (19_880_000 as Weight) // Standard Error: 2_000 - .saturating_add((88_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((80_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/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs index 79f8fdfb43..31334d9874 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_session` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,14 +48,14 @@ impl pallet_session::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (12_155_000 as Weight) + (12_489_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (9_352_000 as Weight) + (9_671_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs index c0b1314135..099c2e10af 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_timestamp` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -46,11 +47,11 @@ pub struct WeightInfo(PhantomData); impl pallet_timestamp::WeightInfo for WeightInfo { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (3_578_000 as Weight) + (3_849_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (2_260_000 as Weight) + (2_393_000 as Weight) } } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs index 11289f327b..04a771c06c 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -47,14 +48,14 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (23_292_000 as Weight) + (23_011_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (12_580_000 as Weight) + (12_898_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -68,11 +69,11 @@ impl pallet_uniques::WeightInfo for WeightInfo { fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) // Standard Error: 15_000 - .saturating_add((9_064_000 as Weight).saturating_mul(n as Weight)) + .saturating_add((9_683_000 as Weight).saturating_mul(n as Weight)) // Standard Error: 15_000 - .saturating_add((958_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((921_000 as Weight).saturating_mul(m as Weight)) // Standard Error: 15_000 - .saturating_add((865_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((800_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) @@ -82,17 +83,18 @@ impl pallet_uniques::WeightInfo for WeightInfo { } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:1) + // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (28_805_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + (31_760_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:1) fn burn() -> Weight { - (30_339_000 as Weight) + (30_857_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -100,7 +102,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:2) fn transfer() -> Weight { - (22_566_000 as Weight) + (23_536_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -108,8 +110,8 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:100 w:100) fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 10_000 - .saturating_add((11_708_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 12_000 + .saturating_add((12_171_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -118,47 +120,47 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (17_405_000 as Weight) + (18_224_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (17_724_000 as Weight) + (17_667_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (13_277_000 as Weight) + (13_398_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (12_984_000 as Weight) + (13_278_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques OwnershipAcceptance (r:1 w:1) // Storage: Uniques Class (r:1 w:1) - // Storage: System Account (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (29_717_000 as Weight) + (20_275_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (13_830_000 as Weight) + (13_910_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (16_252_000 as Weight) + (16_235_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -166,7 +168,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (35_708_000 as Weight) + (36_968_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -174,64 +176,63 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (34_426_000 as Weight) + (34_767_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (28_270_000 as Weight) + (29_045_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (27_983_000 as Weight) + (29_331_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (28_141_000 as Weight) + (28_240_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (26_122_000 as Weight) + (26_270_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (18_738_000 as Weight) + (19_122_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (18_879_000 as Weight) + (18_930_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques Class (r:1 w:0) - // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (19_417_000 as Weight) + (16_708_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) - // Storage: Uniques Asset (r:1 w:1) fn set_collection_max_supply() -> Weight { - (19_417_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) + (16_300_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs index 0be7182758..98954e058c 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs @@ -17,12 +17,13 @@ //! Autogenerated weights for `pallet_utility` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-03-28, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-collator +// ./target/production/polkadot-parachain // benchmark +// pallet // --chain=westmint-dev // --execution=wasm // --wasm-execution=compiled @@ -32,7 +33,7 @@ // --repeat=20 // --json-file=./bench-westmint.json // --header=./file_header.txt -// --output=./polkadot-parachains/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,26 +46,24 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_utility::WeightInfo for WeightInfo { fn batch(c: u32, ) -> Weight { - (17_310_000 as Weight) - // Standard Error: 2_000 - .saturating_add((3_675_000 as Weight).saturating_mul(c as Weight)) + (11_572_000 as Weight) + // Standard Error: 1_000 + .saturating_add((2_896_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (2_522_000 as Weight) + (1_697_000 as Weight) } fn batch_all(c: u32, ) -> Weight { - (18_929_000 as Weight) - // Standard Error: 2_000 - .saturating_add((4_001_000 as Weight).saturating_mul(c as Weight)) + (20_744_000 as Weight) + // Standard Error: 1_000 + .saturating_add((3_144_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (8_891_000 as Weight) + (8_621_000 as Weight) } fn force_batch(c: u32, ) -> Weight { - (13_470_000 as Weight) + (13_931_000 as Weight) // Standard Error: 1_000 - .saturating_add((4_229_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)) + .saturating_add((2_888_000 as Weight).saturating_mul(c as Weight)) } } From 1cd6dee55d08a04716d5af487fb80e1cc6a19f97 Mon Sep 17 00:00:00 2001 From: Egor_P Date: Mon, 30 May 2022 10:47:25 +0200 Subject: [PATCH 078/238] bringing back repo checkout and adding a temp dir to avoid name duplication between binary and repo dir (#1299) * bringing back repo checkout and adding a temp dir to avoid name duplication between binary and repo dir * added hash to the action Co-authored-by: Chevdor * adjusted extrinsic ordering action * addressed comments from PR * addressed comments from PR * variables reoredering Co-authored-by: Chevdor --- .../extrinsic-ordering-check-from-bin.yml | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index 8b2540c8f0..2c54859602 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -23,25 +23,31 @@ jobs: runs-on: ubuntu-latest env: CHAIN: ${{github.event.inputs.chain}} + BIN: node-bin + BIN_PATH: ./tmp/$BIN BIN_URL: ${{github.event.inputs.binary_url}} REF_URL: ${{github.event.inputs.reference_url}} - steps: + steps: + - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + - name: Fetch binary run: | + echo Creating a temp dir to download and run binary + mkdir -p tmp echo Fetching $BIN_URL - wget $BIN_URL - chmod a+x polkadot-parachain - ./polkadot-parachain --version + wget $BIN_URL -O $BIN_PATH + chmod a+x $BIN_PATH + $BIN_PATH --version - name: Start local node run: | echo Running on $CHAIN - ./polkadot-parachain --chain=$CHAIN -- --chain polkadot-local & + $BIN_PATH --chain=$CHAIN -- --chain polkadot-local & - name: Prepare output run: | - VERSION=$(./polkadot-parachain --version) + VERSION=$($BIN_PATH --version) echo "Metadata comparison:" >> output.txt echo "Date: $(date)" >> output.txt echo "Reference: $REF_URL" >> output.txt @@ -69,7 +75,7 @@ jobs: - name: Stop our local node run: | - pkill polkadot-parachain + pkill $BIN continue-on-error: true - name: Save output as artifact From 03d15c3471f0caee8b02f679e032363c833f1245 Mon Sep 17 00:00:00 2001 From: Xiliang Chen Date: Mon, 30 May 2022 22:11:21 +1200 Subject: [PATCH 079/238] use RuntimeDebug (#1306) --- pallets/xcm/src/lib.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pallets/xcm/src/lib.rs b/pallets/xcm/src/lib.rs index 10c306f1be..649bb5ad69 100644 --- a/pallets/xcm/src/lib.rs +++ b/pallets/xcm/src/lib.rs @@ -27,7 +27,7 @@ use cumulus_primitives_core::{ use frame_support::dispatch::Weight; pub use pallet::*; use scale_info::TypeInfo; -use sp_runtime::traits::BadOrigin; +use sp_runtime::{traits::BadOrigin, RuntimeDebug}; use sp_std::{convert::TryFrom, prelude::*}; use xcm::{ latest::{ExecuteXcm, Outcome, Parent, Xcm}, @@ -77,8 +77,7 @@ pub mod pallet { } /// Origin for the parachains module. - #[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] - #[cfg_attr(feature = "std", derive(Debug))] + #[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] #[pallet::origin] pub enum Origin { /// It comes from the (parent) relay chain. From 154ea86efb8566e3c128ac21cfa867d01399c962 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Mon, 30 May 2022 18:47:28 +0100 Subject: [PATCH 080/238] Companion to Substrate #11490 (#1305) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix warnings * Bump * Fix build * Fix the build * Fixes * Formatting Co-authored-by: Bastian Köcher --- Cargo.lock | 751 +++++++++--------- pallets/parachain-system/src/migration.rs | 2 + .../src/validate_block/implementation.rs | 24 +- .../testing/rococo-parachain/src/lib.rs | 1 + 4 files changed, 372 insertions(+), 406 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8abede0406..bbfec3eaa8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1208,7 +1208,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-runtime-common", "scale-info", "serde", @@ -1700,7 +1700,7 @@ dependencies = [ "parking_lot 0.12.0", "polkadot-client", "polkadot-node-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-service", "polkadot-test-client", @@ -1834,7 +1834,7 @@ dependencies = [ "log", "pallet-balances", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "sc-client-api", "scale-info", "serde", @@ -1953,7 +1953,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "sp-api", "sp-runtime", @@ -2008,7 +2008,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "sp-runtime", "sp-std", @@ -2109,7 +2109,7 @@ dependencies = [ "pallet-balances", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "sc-block-builder", "sc-consensus", @@ -2797,7 +2797,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", ] @@ -2815,7 +2815,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -2837,7 +2837,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "Inflector", "chrono", @@ -2887,7 +2887,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2898,7 +2898,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2914,7 +2914,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -2942,7 +2942,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "bitflags", "frame-metadata", @@ -2972,7 +2972,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2984,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2996,7 +2996,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro2", "quote", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "log", @@ -3023,7 +3023,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "sp-api", @@ -3047,7 +3047,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "sp-api", @@ -3903,8 +3903,8 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-primitives", "bitvec", @@ -3938,7 +3938,6 @@ dependencies = [ "pallet-indices", "pallet-membership", "pallet-multisig", - "pallet-nicks", "pallet-nomination-pools", "pallet-nomination-pools-benchmarking", "pallet-offences", @@ -3996,8 +3995,8 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "polkadot-primitives", @@ -4904,21 +4903,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "metered-channel" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" -dependencies = [ - "coarsetime", - "crossbeam-queue", - "derive_more", - "futures 0.3.21", - "futures-timer", - "nanorand", - "thiserror", - "tracing", -] - [[package]] name = "mick-jaeger" version = "0.1.8" @@ -5347,24 +5331,24 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.0.1" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "dyn-clonable", "futures 0.3.21", "futures-timer", - "metered-channel", "orchestra-proc-macro", "pin-project 1.0.10", + "prioritized-metered-channel", "thiserror", "tracing", ] [[package]] name = "orchestra-proc-macro" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.0.1" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "expander 0.0.6", "petgraph", @@ -5401,7 +5385,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -5418,7 +5402,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5432,7 +5416,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -5448,7 +5432,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -5464,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -5479,7 +5463,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5503,7 +5487,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5523,7 +5507,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5538,7 +5522,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "beefy-primitives", "frame-support", @@ -5554,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5577,7 +5561,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5595,7 +5579,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5612,7 +5596,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5634,7 +5618,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5655,7 +5639,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5700,7 +5684,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5717,7 +5701,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "bitflags", "frame-benchmarking", @@ -5744,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "bitflags", "parity-scale-codec", @@ -5759,7 +5743,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro2", "quote", @@ -5769,7 +5753,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5786,7 +5770,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5799,7 +5783,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5815,7 +5799,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5838,7 +5822,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5851,7 +5835,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5853,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5884,7 +5868,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5907,7 +5891,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5923,7 +5907,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5943,7 +5927,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5960,7 +5944,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -5977,7 +5961,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5995,7 +5979,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6010,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6022,24 +6006,10 @@ dependencies = [ "sp-std", ] -[[package]] -name = "pallet-nicks" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -6055,7 +6025,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6074,7 +6044,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -6091,7 +6061,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6114,7 +6084,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6130,7 +6100,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6145,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -6159,7 +6129,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6174,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6190,7 +6160,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -6211,7 +6181,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6227,7 +6197,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -6241,7 +6211,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6264,7 +6234,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6275,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "sp-arithmetic", @@ -6284,7 +6254,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", @@ -6313,7 +6283,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6331,7 +6301,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6350,14 +6320,13 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "scale-info", "serde", - "smallvec", "sp-core", "sp-io", "sp-runtime", @@ -6367,7 +6336,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6382,7 +6351,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6393,7 +6362,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6410,7 +6379,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6425,7 +6394,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6441,7 +6410,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-benchmarking", "frame-support", @@ -6455,8 +6424,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "frame-system", @@ -6473,8 +6442,8 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-benchmarking", "frame-support", @@ -6526,7 +6495,7 @@ dependencies = [ "parachain-template-runtime", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-service", "sc-basic-authorship", @@ -6601,7 +6570,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-runtime-common", "scale-info", "serde", @@ -6986,8 +6955,8 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7001,8 +6970,8 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7015,8 +6984,8 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "derive_more", "fatality", @@ -7038,8 +7007,8 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "fatality", "futures 0.3.21", @@ -7059,8 +7028,8 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7084,8 +7053,8 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7124,8 +7093,8 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "always-assert", "fatality", @@ -7145,8 +7114,8 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7158,8 +7127,8 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "derive_more", "fatality", @@ -7181,8 +7150,8 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7195,8 +7164,8 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7215,8 +7184,8 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "always-assert", "async-trait", @@ -7236,8 +7205,8 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7254,8 +7223,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "derive_more", @@ -7283,8 +7252,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "futures 0.3.21", @@ -7303,8 +7272,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "fatality", @@ -7322,8 +7291,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7337,8 +7306,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "futures 0.3.21", @@ -7347,7 +7316,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -7355,8 +7324,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7370,8 +7339,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7387,8 +7356,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "fatality", "futures 0.3.21", @@ -7406,8 +7375,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "futures 0.3.21", @@ -7423,8 +7392,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "fatality", @@ -7441,8 +7410,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "always-assert", "assert_matches", @@ -7454,7 +7423,7 @@ dependencies = [ "pin-project 1.0.10", "polkadot-core-primitives", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "rand 0.8.5", "sc-executor", "sc-executor-common", @@ -7472,8 +7441,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7488,8 +7457,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7505,8 +7474,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-std", "lazy_static", @@ -7523,16 +7492,16 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bs58", "futures 0.3.21", "futures-timer", "log", - "metered-channel", "parity-scale-codec", "polkadot-primitives", + "prioritized-metered-channel", "sc-cli", "sc-service", "sc-tracing", @@ -7542,8 +7511,8 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "derive_more", @@ -7563,13 +7532,13 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bounded-vec", "futures 0.3.21", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "schnorrkel", "serde", @@ -7585,8 +7554,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7595,8 +7564,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "futures 0.3.21", @@ -7613,8 +7582,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "derive_more", "futures 0.3.21", @@ -7632,8 +7601,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "derive_more", @@ -7642,7 +7611,6 @@ dependencies = [ "itertools", "kvdb", "lru 0.7.5", - "metered-channel", "parity-db", "parity-scale-codec", "parity-util-mem", @@ -7655,6 +7623,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-overseer", "polkadot-primitives", + "prioritized-metered-channel", "rand 0.8.5", "sp-application-crypto", "sp-core", @@ -7665,8 +7634,8 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7687,8 +7656,8 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "derive_more", "frame-support", @@ -7733,7 +7702,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-service", "rococo-parachain-runtime", @@ -7781,8 +7750,8 @@ dependencies = [ [[package]] name = "polkadot-performance-test" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7796,8 +7765,8 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitvec", "frame-system", @@ -7805,7 +7774,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "scale-info", "serde", "sp-api", @@ -7826,8 +7795,8 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7858,8 +7827,8 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-primitives", "bitvec", @@ -7891,7 +7860,6 @@ dependencies = [ "pallet-indices", "pallet-membership", "pallet-multisig", - "pallet-nicks", "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", @@ -7944,8 +7912,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-primitives", "bitvec", @@ -7991,8 +7959,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "polkadot-primitives", @@ -8003,8 +7971,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bs58", "parity-scale-codec", @@ -8015,8 +7983,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "bitflags", "bitvec", @@ -8058,8 +8026,8 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "async-trait", "beefy-gadget", @@ -8104,7 +8072,7 @@ dependencies = [ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", @@ -8161,8 +8129,8 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8182,8 +8150,8 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8192,8 +8160,8 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8217,8 +8185,8 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-primitives", "bitvec", @@ -8234,7 +8202,6 @@ dependencies = [ "pallet-balances", "pallet-grandpa", "pallet-indices", - "pallet-nicks", "pallet-offences", "pallet-session", "pallet-staking", @@ -8246,7 +8213,7 @@ dependencies = [ "pallet-vesting", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8279,8 +8246,8 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-benchmarking", "frame-system", @@ -8293,7 +8260,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-common", @@ -8422,6 +8389,21 @@ dependencies = [ "uint", ] +[[package]] +name = "prioritized-metered-channel" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +dependencies = [ + "coarsetime", + "crossbeam-queue", + "derive_more", + "futures 0.3.21", + "futures-timer", + "nanorand", + "thiserror", + "tracing", +] + [[package]] name = "proc-macro-crate" version = "1.1.3" @@ -8860,7 +8842,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8964,7 +8946,7 @@ dependencies = [ "parachain-info", "parachains-common", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "scale-info", "serde", "sp-api", @@ -8987,8 +8969,8 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9032,7 +9014,7 @@ dependencies = [ "pallet-utility", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -9064,8 +9046,8 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "polkadot-primitives", @@ -9235,7 +9217,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "sp-core", @@ -9246,7 +9228,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -9273,7 +9255,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9296,7 +9278,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9312,7 +9294,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9329,7 +9311,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9340,7 +9322,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "chrono", "clap 3.1.18", @@ -9379,7 +9361,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "fnv", "futures 0.3.21", @@ -9407,7 +9389,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "hash-db", "kvdb", @@ -9432,7 +9414,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -9456,7 +9438,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -9485,7 +9467,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "fork-tree", @@ -9528,7 +9510,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9550,7 +9532,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9563,7 +9545,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -9588,7 +9570,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "sc-client-api", "sp-authorship", @@ -9599,7 +9581,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9626,7 +9608,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "environmental", "parity-scale-codec", @@ -9643,7 +9625,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "parity-scale-codec", @@ -9658,7 +9640,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9676,7 +9658,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "ahash", "async-trait", @@ -9716,7 +9698,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9737,7 +9719,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9754,7 +9736,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "hex", @@ -9769,7 +9751,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "asynchronous-codec", @@ -9821,7 +9803,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "libp2p", @@ -9834,7 +9816,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "ahash", "futures 0.3.21", @@ -9851,7 +9833,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "libp2p", @@ -9871,7 +9853,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "bitflags", "either", @@ -9900,7 +9882,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "bytes", "fnv", @@ -9928,7 +9910,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "libp2p", @@ -9941,7 +9923,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9950,7 +9932,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "hash-db", @@ -9980,7 +9962,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10003,7 +9985,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10016,7 +9998,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "directories", @@ -10081,7 +10063,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "parity-scale-codec", @@ -10095,7 +10077,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10114,7 +10096,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "libc", @@ -10133,7 +10115,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "chrono", "futures 0.3.21", @@ -10151,7 +10133,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "ansi_term", "atty", @@ -10182,7 +10164,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10193,7 +10175,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10220,7 +10202,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "log", @@ -10233,7 +10215,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10671,8 +10653,8 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "enumn", "parity-scale-codec", @@ -10748,7 +10730,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "hash-db", "log", @@ -10765,7 +10747,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "blake2", "proc-macro-crate", @@ -10777,7 +10759,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -10790,7 +10772,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "integer-sqrt", "num-traits", @@ -10805,7 +10787,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -10818,7 +10800,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "parity-scale-codec", @@ -10830,7 +10812,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "sp-api", @@ -10842,7 +10824,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "log", @@ -10860,7 +10842,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -10879,7 +10861,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "parity-scale-codec", @@ -10897,7 +10879,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "merlin", @@ -10920,7 +10902,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -10934,7 +10916,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -10947,7 +10929,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "base58", "bitflags", @@ -10993,7 +10975,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "blake2", "byteorder", @@ -11007,7 +10989,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro2", "quote", @@ -11018,7 +11000,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11027,7 +11009,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro2", "quote", @@ -11037,7 +11019,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "environmental", "parity-scale-codec", @@ -11048,7 +11030,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "finality-grandpa", "log", @@ -11066,7 +11048,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11080,7 +11062,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "hash-db", @@ -11105,7 +11087,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "lazy_static", "sp-core", @@ -11116,7 +11098,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -11133,7 +11115,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "thiserror", "zstd", @@ -11142,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "parity-scale-codec", @@ -11157,7 +11139,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -11171,7 +11153,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "sp-api", "sp-core", @@ -11181,7 +11163,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "backtrace", "lazy_static", @@ -11191,7 +11173,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "rustc-hash", "serde", @@ -11201,7 +11183,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "either", "hash256-std-hasher", @@ -11223,7 +11205,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11240,7 +11222,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "Inflector", "proc-macro-crate", @@ -11252,7 +11234,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "parity-scale-codec", @@ -11266,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "serde", "serde_json", @@ -11275,7 +11257,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -11289,7 +11271,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "scale-info", @@ -11300,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "hash-db", "log", @@ -11322,12 +11304,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11340,7 +11322,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "log", "sp-core", @@ -11353,7 +11335,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures-timer", @@ -11369,7 +11351,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "sp-std", @@ -11381,7 +11363,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "sp-api", "sp-runtime", @@ -11390,7 +11372,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "log", @@ -11406,7 +11388,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "hash-db", "memory-db", @@ -11422,7 +11404,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11439,7 +11421,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11450,7 +11432,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "impl-trait-for-tuples", "log", @@ -11530,7 +11512,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-runtime-common", "scale-info", "serde", @@ -11595,7 +11577,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", @@ -11729,7 +11711,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "platforms", ] @@ -11737,7 +11719,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11758,7 +11740,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures-util", "hyper", @@ -11771,7 +11753,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "jsonrpsee", "log", @@ -11792,7 +11774,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "async-trait", "futures 0.3.21", @@ -11818,7 +11800,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11828,7 +11810,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#57c420ca1873ebf68ca12d5194c16b1f9100fb8d" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11839,7 +11821,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "ansi_term", "build-helper", @@ -11945,8 +11927,8 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "polkadot-primitives", @@ -12223,8 +12205,8 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12234,8 +12216,8 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12364,7 +12346,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eddf888394cba28b048bd79e319e8b27f4b414f3" +source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12944,8 +12926,8 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "beefy-primitives", "bitvec", @@ -12975,7 +12957,6 @@ dependencies = [ "pallet-indices", "pallet-membership", "pallet-multisig", - "pallet-nicks", "pallet-nomination-pools", "pallet-nomination-pools-benchmarking", "pallet-offences", @@ -12999,7 +12980,7 @@ dependencies = [ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -13033,8 +13014,8 @@ dependencies = [ [[package]] name = "westend-runtime-constants" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "polkadot-primitives", @@ -13085,7 +13066,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "polkadot-runtime-common", "scale-info", "serde", @@ -13274,8 +13255,8 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13287,15 +13268,15 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-support", "frame-system", "log", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.22", + "polkadot-parachain 0.9.23", "scale-info", "sp-arithmetic", "sp-io", @@ -13307,8 +13288,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.22" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +version = "0.9.23" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "frame-benchmarking", "frame-support", @@ -13326,7 +13307,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#297572bc325a97f5b0313ebe278841cd9b21c072" +source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" dependencies = [ "Inflector", "proc-macro2", diff --git a/pallets/parachain-system/src/migration.rs b/pallets/parachain-system/src/migration.rs index ad635f6bee..b3738d2151 100644 --- a/pallets/parachain-system/src/migration.rs +++ b/pallets/parachain-system/src/migration.rs @@ -41,9 +41,11 @@ pub fn on_runtime_upgrade() -> Weight { /// mechanism now uses signals instead of block offsets. mod v1 { use crate::{Config, Pallet}; + #[allow(deprecated)] use frame_support::{migration::remove_storage_prefix, pallet_prelude::*}; pub fn migrate() -> Weight { + #[allow(deprecated)] remove_storage_prefix(>::name().as_bytes(), b"LastUpgrade", b""); T::DbWeight::get().writes(1) } diff --git a/pallets/parachain-system/src/validate_block/implementation.rs b/pallets/parachain-system/src/validate_block/implementation.rs index 3dcbf29158..7ef3d81a54 100644 --- a/pallets/parachain-system/src/validate_block/implementation.rs +++ b/pallets/parachain-system/src/validate_block/implementation.rs @@ -222,13 +222,7 @@ fn host_storage_root(version: StateVersion) -> Vec { } fn host_storage_clear_prefix(prefix: &[u8], limit: Option) -> KillStorageResult { - with_externalities(|ext| { - let (all_removed, num_removed) = ext.clear_prefix(prefix, limit); - match all_removed { - true => KillStorageResult::AllRemoved(num_removed), - false => KillStorageResult::SomeRemaining(num_removed), - } - }) + with_externalities(|ext| ext.clear_prefix(prefix, limit, None).into()) } fn host_storage_append(key: &[u8], value: Vec) { @@ -294,13 +288,7 @@ fn host_default_child_storage_storage_kill( limit: Option, ) -> KillStorageResult { let child_info = ChildInfo::new_default(storage_key); - with_externalities(|ext| { - let (all_removed, num_removed) = ext.kill_child_storage(&child_info, limit); - match all_removed { - true => KillStorageResult::AllRemoved(num_removed), - false => KillStorageResult::SomeRemaining(num_removed), - } - }) + with_externalities(|ext| ext.kill_child_storage(&child_info, limit, None).into()) } fn host_default_child_storage_exists(storage_key: &[u8], key: &[u8]) -> bool { @@ -314,13 +302,7 @@ fn host_default_child_storage_clear_prefix( limit: Option, ) -> KillStorageResult { let child_info = ChildInfo::new_default(storage_key); - with_externalities(|ext| { - let (all_removed, num_removed) = ext.clear_child_prefix(&child_info, prefix, limit); - match all_removed { - true => KillStorageResult::AllRemoved(num_removed), - false => KillStorageResult::SomeRemaining(num_removed), - } - }) + with_externalities(|ext| ext.clear_child_prefix(&child_info, prefix, limit, None).into()) } fn host_default_child_storage_root(storage_key: &[u8], version: StateVersion) -> Vec { diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 2819870664..7ebdfb3793 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -592,6 +592,7 @@ 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` + #[allow(deprecated)] migration::remove_storage_prefix(b"RandomnessCollectiveFlip", b"RandomMaterial", b""); ::DbWeight::get().writes(1) } From 6f416eece2c30586d6d3a04d2a6ff68dad0090bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 30 May 2022 19:50:00 +0200 Subject: [PATCH 081/238] Ensure we send the correct polkadot node version to telemetry (#1307) This is basically a hack, but with the current way we initialize the node this is the easiest solution to ensure we send the correct version etc. --- Cargo.lock | 2 ++ client/relay-chain-inprocess-interface/Cargo.toml | 2 ++ client/relay-chain-inprocess-interface/src/lib.rs | 8 +++++++- parachain-template/node/src/command.rs | 3 +-- polkadot-parachain/src/command.rs | 3 +-- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bbfec3eaa8..bc163eb1f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2027,10 +2027,12 @@ dependencies = [ "futures 0.3.21", "futures-timer", "parking_lot 0.12.0", + "polkadot-cli", "polkadot-client", "polkadot-primitives", "polkadot-service", "polkadot-test-client", + "sc-cli", "sc-client-api", "sc-consensus-babe", "sc-network", diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index f53b472e4d..37f3255345 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -12,6 +12,7 @@ parking_lot = "0.12.0" tracing = "0.1.34" # Substrate +sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -27,6 +28,7 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } # Polkadot +polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "master" } polkadot-client = { git = "https://github.com/paritytech/polkadot", branch = "master" } polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "master" } diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index 5c461463b4..3e7af9ed60 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -32,6 +32,7 @@ use polkadot_client::{ClientHandle, ExecuteWithClient, FullBackend}; use polkadot_service::{ AuxStore, BabeApi, CollatorPair, Configuration, Handle, NewFull, Role, TaskManager, }; +use sc_cli::SubstrateCli; use sc_client_api::{ blockchain::BlockStatus, Backend, BlockchainEvents, HeaderBackend, ImportNotifications, StorageProof, UsageProvider, @@ -359,12 +360,17 @@ fn build_polkadot_full_node( /// Builds a relay chain interface by constructing a full relay chain node pub fn build_inprocess_relay_chain( - polkadot_config: Configuration, + mut polkadot_config: Configuration, parachain_config: &Configuration, telemetry_worker_handle: Option, task_manager: &mut TaskManager, hwbench: Option, ) -> RelayChainResult<(Arc<(dyn RelayChainInterface + 'static)>, Option)> { + // This is essentially a hack, but we want to ensure that we send the correct node version + // to the telemetry. + polkadot_config.impl_version = polkadot_cli::Cli::impl_version(); + polkadot_config.impl_name = polkadot_cli::Cli::impl_name(); + let (full_node, collator_key) = build_polkadot_full_node( polkadot_config, parachain_config, diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index 7e011cac09..47691d41e0 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -310,8 +310,7 @@ pub fn run() -> Result<()> { let parachain_account = AccountIdConversion::::into_account_truncating(&id); - let state_version = - RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); + let state_version = Cli::native_runtime_version(&config.chain_spec).state_version(); let block: Block = generate_genesis_block(&config.chain_spec, state_version) .map_err(|e| format!("{:?}", e))?; let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index c6753564ab..daf24797b5 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -567,8 +567,7 @@ pub fn run() -> Result<()> { let parachain_account = AccountIdConversion::::into_account_truncating(&id); - let state_version = - RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); + let state_version = Cli::native_runtime_version(&config.chain_spec).state_version(); let block: crate::service::Block = generate_genesis_block(&config.chain_spec, state_version) From fefd160138cc967de25c112bf7873288cd43824a Mon Sep 17 00:00:00 2001 From: Squirrel Date: Tue, 31 May 2022 11:06:42 +0100 Subject: [PATCH 082/238] Add rockmine json (#1290) --- parachains/chain-specs/rockmine.json | 80 ++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 parachains/chain-specs/rockmine.json diff --git a/parachains/chain-specs/rockmine.json b/parachains/chain-specs/rockmine.json new file mode 100644 index 0000000000..a300adb9e5 --- /dev/null +++ b/parachains/chain-specs/rockmine.json @@ -0,0 +1,80 @@ +{ + "name": "Rockmine", + "id": "statemine-rococo", + "chainType": "Live", + "bootNodes": [ + "/dns/rococo-statemint-collator-0.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWRrZMndHAopzao34uGsN7srjS3gh9nAjTGKLSyJeU31Lg", + "/dns/rococo-statemint-collator-1.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWAewimoNJqMaiiV5pYiowA5hLuh5JS5QiRJCCyWVrrSTS", + "/dns/rococo-statemint-collator-2.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWA3cVSDJFrN5HEYbt11cK2W7zJbiPHxR2joJXcgqzVt8K", + "/dns/rococo-statemint-collator-3.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWPf3MtBZKJ3G6wYyvCTxFCi9vgzxDdHbjJJRCrFu3FgJb" + ], + "telemetryEndpoints": null, + "protocolId": null, + "properties": { + "tokenDecimals": 12, + "tokenSymbol": "ROC" + }, + "relay_chain": "rococo", + "para_id": 1000, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x0d715f2646c8f85767b5d2764bb2782604a74d81251e398fd8a0a4d55023bb3f": "0xe8030000", + "0x0d715f2646c8f85767b5d2764bb278264e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x15464cac3378d46f113cd5b7a4d71c84476f594316a7dfe49c1f352d95abdaf1": "0x00000000", + "0x15464cac3378d46f113cd5b7a4d71c844e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x15464cac3378d46f113cd5b7a4d71c845579297f4dfb9609e7e4c2ebab9ce40a": "0x1058c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1facf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0x15464cac3378d46f113cd5b7a4d71c84579f5a43435b04a98d64da0cefe18505": "0x50cd2d03000000000000000000000000", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x267ada16405529c2f7ef2727d71edbde4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90395122802460ba3fef86b6eef716f2358c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1f": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da936311af37f3d62b64610d04a45b423a8acf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a79b78a206a5c0e4c36a85f8342b9ea5fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9dcdb4d826419bfb6cb11a9e4558a0deee803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x110e2473746174656d696e65", + "0x3a63": "0x", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00589c9d04bec6c5c9114f1068ca261d6898ea2b6f604b838543946d20353b4808a1172684cc7f2c32f33a1e6d3deda1da9643964377abf0d25fd0ab56e867512ce027e7200a8d6ec55d3b5793e2e8ddc8de726f29a59432a51480120611ac111ec0dae74809f3f79485ccdfe48839820b0d6400034e6fc09ab3efee0d37fb302380396c2ed7584d726ec34397aa8bf9ba6bbc73e7d0f943e715fbb93560cfebb2f1f0c6a74b5526e952c57ee812741dbad41e3a06de78e81ce81ef7d3968d15f3d0e6eb0d3ebd85cb43cfe9523f8410bad5251d9805ad99be42bdb9c971ddc33fcdb12eed983aca7cb57924b3f9a4a151f2bcb5e82dba74d81a8cad357a855f4a7fbc1d3dee3f2ab320e894b71da053eed3d2a3432abd39146a9794920a61790f4b515191103f7d2f20d7acbda484d07d5a5f403246086343d3777bd81696f7de7befbd4885e2993367eef8e8b32de93eeda850fb98557e9909cdac36cb1bad43fd23af7cee05645dc15e8a2b12e2ab74a178871067fe8a7ce98e064d77de68bdbcf2e72dab58ad553a21a9650821beca15f8d1afc4b762fa98b5ead1dabcf2960df58f3221bee3e74587faa75b54a8fdcc7094f0e99dbb0bc879455b953eddd12bfdce67f7573e798b449fbed7111ab32a84e59d57eed38dd6e71cb36afac87b01452c0fbd51495b7ff32684e55fa3ecb27db5627af626d4fe49a1f6cefb52e2de65416f89fbe77d297959107bcb84b07c6dcf8e7d5374d2389ce6eccd9be2346f8f3e9bf4c957129fdf2d52a3b34b1a675b7c1d698f2e697b53d21ea33729a5efa5048877e200d3b76cb7883cf25c3a841ed43cfa94b48ad09a292afaa11e2fc4675e7a15a1057c5b23cdab0c596ba4f9107ca1057caf91e60d887e272feb034c2fb3dd22adaf23cf5b26dda7cd6635dab32d49d9639b7c21e123fc2ec32ca601e38822333c30818011648cf0d2fb80250ec0a8d97e43e37cbaf6c9d7720dc6947f29302b9f34d3d75752d2799ea2e88d5c5f1cf897fa1ae1f9f5a7e479e5b3a26d55f4f95e482a7f3e5dd17da6225f47240dffdc0b68b9066b12e5d2a3f3055465d5f495fb349f8ef486ba26ad53743e7a85bff215b62a4af9a3fb6eb6e6d64642ed718eb4972e335f23ebfc8f52595074e915dd779790fce77bed105d6634bb3556cdf975e7cd6f9ab4ce5712e8eb956cd2428a037dc51415bd007e465aa34b9fa6a7bca295bf7249ab034c65fc6e91caa5fbb48ab24bba3fd9da8bca84dab7cb7621f7cfab739809f1bfcc14d99d99354c5107122f80038d379af0b3d6dc9ebb5d06bb69123bd624f6f8fc3d5875b69e9d6f7876761dbaf49eddbbb46366d0e5d975ba877ff8ab0dcfebecabc3adbd51245850731abe3efbdcc5a1f2fc333d25d5bff99cd79655a26f5ea91d160affb22fce9f2f75fea8056a408219677ed61bad58be55e8524c517cf44af4cf7773d8ada1ee890826fc107fcca6ec1b2fd4ce9c79987dc1b24e64d2c2cc8fcb8a2a967f596d5ea96ff7698dd2f0932d47d7f7d2c006a1cb4fa3347c236253b72602a94b5ae0e8b996a90db9e6d680b557f9ad796bde9ab796e58a6fadb52665320063df3ec0face2c5cdebbd4deeea64bed3a5d72dfa721cc7cbbd53dedc77d2df29df3ebcc4365b233eda15b77b7e6f25b86b3a4f9f3d62dabfcedbe7db237f6dad89b2f7b505ba6cecc5fe941d37ffa2bf09acddac581bd56fee6ebb3511db0e6eb7b2169999ccd62dafeba022d37fe8a355a1caa70d10b2de0d9dbfb62e28a8a9e9d2f2558d1b35b5ddaefa2a5abd33d85b9bf5daaedebae9dbdae6f93b649ce0f80b533690fda96f9b4a93902736bc09cd79b7fced3a52a6fe852c5485daa3cfffcb90d5d6aff4e4468f9e739ddd33f3afcfb5ae49f635d6a7f6ed3a5e6cf9f5b5d627fbe3a2f0bda13d15c5f9dcaf3cde752fec917906b12fb3689b33ad4de355f409c2971be747fcebd90c0acfa43977d2dd7b8266575a87de5375d9ade3ca74b71468aca2ae59553d1c27e1deb52f4e6365da2bcf98c947f52749bb44db29c2f24fcae4956562daf3cd27d8b0eb5a77c722fb7d146ba3fe97e45ddfcba6c3d46f8cff6ceae919af39b55e8cf9bcfb6eb68e5175ac0baa443efd7faf639dbda0b664c9756f9ebed5aaed9264d77edd6584dd26952f3e8dea4d8207559e587be14a3dba4f697c9263576d3a5fde68eee7b97d69bcbd6e38a9a9316875675be39cfaf0ca68a9f0be62200dbd31045bfa7223a0cf07b12828bf76fdfeb06ec54e4c657f7ed3e2dd9a5dcd6b3bd53b167afd857f9edae4bebeddb25e8ebae4bd17f7d46ba0f29ff5c1eac597c01c18cb1e87b25d9e8932f25d06356a1439f7d29c11efa5eae49cef7027aeed3d0f76a732f9955d34b8fb44a1869751f7d2f20e933d2da808f3ef7a2b21ac4531e69ddd34787b4c2243c60c0c90f40d4203efa3629ba4f83749fa242edcc9933743cf448ab0eef7cb215a97326f1a3a442f16156f96326c467ce9c39f3d5f4cf275b90eeef35d4fe65dba4ea9e1ddd26b137ba4daa36cfbe3a2db9696156f9ebb3293f5366abe9beebd2f3f5c96c3df6d9d662ed43ac2e60cddb9fb70be8658cb1cf663dcadf17fb5ecd7d7a2fa0769f9e6c31dd6fcabf1704f6d97ddaa74dccccc4dc01609366752af6cdb74becedce99ba26359fcb837195df7c2fa06d52739f2e61fcec38ecfbdba4f5ce7096c86f97df19ce92f6e7ed2f1be2e76c9be4b2ea7ebdf95e4ad83babedec3ebd3a2d0bc27e653035e624e66e0c9816e7e5442689d7b2668a8a8a8a7ec0ec9830c4fcfeeacc0d80010a40006cdfdc0660557ebbecd28ea9a3ccb75b5dda93162ddf8e7569bddda64beced378b037ffbea7416e4bf3298981530b7066c4f424cf155febaecd29ec494f975ab7bf867fda64b3ba68e32bfbe5ddaaf39bfbe3a9b05f9af0c26e6054cf6ed525de76c9bb4be6e62fe31f754e4e537ceb501db375700d8beb9d8fa42cb08bca5882b2a6b0a9614ac255841b0946025c162c35ac322825504eb07d6180b0d8b079618eb0bcb0b0b0c2b07161756171613ac32d616d6159611da0e1a196d0c98051807c4026402ba002e31b330e398589857985598549870585f2c2a1e0da21462149c175785ab819381a5868b8193c2d9c045e168d0bef40ede10bc8583819b62aa317f307d307b30d39863261a53cc3c63869966ccd32c63ee607231b7985acc19cc2c261613ccb4625631bf4c2a660de61493065306d3cb9462c260be6042319f984ecc263a09ad84364223a189d045e8367a08cd461fa1d7e8310d8426d33e68335a4c07a1cfe834ba072d84fe8155036b8ab98539c794a3c9b062604961c1c08ac27a810585f544d7a051d164d08afa4c77a1b9d072f4145a0a3d47d7d155682a341c7dea321a4c4fd14f34146e0b6381afc056603738094d0cce81b4825bc02ce0151829c2810d9c00082a534420e549098e98200139e00064b96121c1ea8115c632c33a4d226616be01db80abe02f4c05d780a7601af00c5806ec8563c052300c380a7e0143c14fb013dc0433c12ee0259a4b45a6fa41d583cea3faa2f2a2eaa2e2a2ca41b545a5459545854585830a4c754565457583ca065515d5978a8aaa06d514d518ac846a0624a85e50415135d15fa0b84079c14a83ca02a505ea0a541c1416a839ac332839a82d5056a0aa404d819202f504ca0c4505aa0b54142c329610ac362c1f5847a08e4019812a0245048a0ce504ab09d4102821506c5048a09240b5d1633017bd855202e506d5048a09d412a832141c1414283aa837a82f5041a080c066a83a283b283ca83b2835da0eea071d054a0ccfc159a04e4d0c4506250615060506f505d505c50595036a0b4a0bca07540fa834a831141a140f281b50545035e036282f1c86824163c14ca0bca0cea0c250665065503ba0c6a0744065416141e18002435dc1633018dd0565057503aa0aea0b350545036a06940ca818505274172a0aea051414d413941354131413940ba825a816502ba0ba502aa052402941254121411d41194171a18aa088a0b6505a980b54166a084a08aa489e9179483ce41dd20e5987fc82a4437a81b720bb20b920e79072c82d482d4833320b320e8905790569055905490509879c8294828c827c4342413e413a41ba219b2099209720cb4825c824c836241b1209f208d208720d590449042ec2d243c82148325208320812085c865443fe40fa40f640a6d15bc831128d1646f2408a9167c830d20c7962391a07ac05b90349861c438a21c36021740ad80a0946c3829bc04ee028f014180ed985e4a2b520b7682ea416cd825e42d42282894d4423e0175a08f9256611958048b4114f0b2fcbcb82fbf2d278631c156e066d8dcea285d172d0b6685ab42c1a0efa8bd64187d14fe82d38e926b4180d467bd15af40c7a05d41a4d4467691a341e4d477ba1ef602f7017b80a4c0586024b81dfe02770195e0223a1b53010580d0e02ff807dc06934303c86d1601eb0183e8377c064f017ac031683c3602f5a05ac0567c158740b18070c86af60214c210081059a090ba80005de1561f22f535da86e50ac3cf94013209e40f9a14993c9cd8729509a34a996a148f9c093a12923004193a11ea05489e2c394284d9a08a9b030aaaed043132a2098a2448a142a0c18ea018a142954182080ca0a6b454a942743507c6802050a0868a8a8b0544030254a931254813202a1265180f8a12950445082273c7805c742e9610a95294d9e348902c443e9610a15080c4d1901951e7a7818aa29f840a507283e10a9a4b0564a0025a889152b2580b2640a952856ac409900ada2b0248802c45781125485ca0598d0ea8d8532f4c48728529e5c69026504504610010af800250421784201015450582b413d40f9a10737d6cad0142855a0fc30258a574d9812050438d512b6872856a644a9321404942625900204104f9a5481e283942823f809ea818a949f9caacc8aa0c993a1273e3c1982b2434da504134491f224ca509429517e546c6c500f54a47ca00994a111f4002508283d2a246c152a0cb0aa23ac15285186a254a1f2c3d0089ef8a88cb053a844197a5265043e3419a222c54a932840fc932a23f81f405e12914c1a4e88f935cd3d15153d9b9a10e8d6706b30101c1d0318b00c58c00296015bb9c7cd5c75d5cddccd32bc57c950ad5b57b9dde7e2baaa7231be0729e82aebb957b58bf155eec15745e7d8519583cef5c2f75cdce7aaaa7a303a18ab7695ec57b9aa6a55bb76b1b57e0d5d4357b976f1390aeac4172be8e4bae7de8b313ae762007e02e064a8a273ef558fbbb95f77573939392e2727a7aa72727272ba48d5b1aaaa2a56b1bfaa7a880f2f4001b2ba9a8170bf4ac87575732740871c70a8aaaaeab6aa21dd5d75d5558500aeaac7950c55cbc0c37c43d5d3aa8a5fc5d5907efd7698b9c2b8723b1577f30cef55fdb85455cc554df55ebbaa7a5d5591abaede7b55abfa55556b55ab5a6b55f55e1fc0bdaa498f00cf86aa717cef55d5ab5cf5aa0254068855acaa573d9e57bdf70a400012e5ba7a03a8dceb8ab9ea19aaaa6a9eae5eab5c55bdc7afaabae2ae6aa866a8aaeab9f6d195ab5ef5ba7a5575d355e59eebea55ef41e71c15ab1823350023ce45f7aa2233b4f79c7b0210800b400002f0deabaa9ddee97e6d4855f5ab48edbdf7ba55ef7155bd57b9c734341a666eaeba5fc55c55ae7a55d58fbbe2565515572ecaf8a2e357b9e798b9bb7aef55ccbc15775575f59839ba2a42a713a3a49ce52a6b06f81e5b33bc58cdf0f801a0c1d71673f77b55535555bdf7baabea75c5cddc91691e57afbb9bb92b171d25a3833ad1b2acf76255f173705dc32a565106e7aae79a9febee2a36333b7e9bd15de66526e2fc989d6bb75cbdc75c5555c5ccf06d2589cc6e9cc78f2bae78e356f15996655995d59a65b565040b092d8625c0d0932a50a64009010008e003141960d80220800007384001aac890b3058062c50a942a4088804a0f4daa40b942a50728559a3cb1e2430f509a1020a874800200d103941e1c1fa05481e243152a50a254190a00941f726a40303482264353a2540102069a1fac4499120504240b0451aa40b9d2e4871e869e7c80ca101025a8d2030d3e44106568ca08aa34e9c14a14110c590284808a142198d70401c58729519a4c89f2e4871e4000022a9901a44409e21142c30d2908a947911e340009c00f1ecc0729517ee8a1c99094113c0101141f76aa3c19b242036645c8dc0250a1526548500f4f3e20450a952a01b07902a5ca901240096a321404942931f81882120221232b4356a2040125c75a024ca11265a8872756a63ca932d464288a08444085d4630b1044141040a902445653e50914293de0603e4c810204104f9a4009c1932a5486ace4d0488172058a9426413c1141084240450a111b4a30044185044331dc5000028c4a072840930240097a22e5034d423025ca0f569efce04d04315c9902a5f512a0c9142a51ac548172a50914285540d0a40a95a1273d509122e54993a120a0e45c9902a5f9d82e41152a2280220278650a9416802b4c2f111111918988d7c99a1e9189c8244dce5411352293c9999c245aa2e728274b6432992a9373b244444b44444444c444a6289d9898a8393199d8c444a6e68488c8d49c6c13392726222632111135274444ed6489d8c91211b51313af131313b113222632b5935d2744a6364527265ed373b226e864d76432999c13139bd8c99ab89d98d8643235270d6874f0eeb208ac3cd9557ebd79d75abaa849ae08ec6575dd782e7a27dd20f276c8ccb918f3d8d0de16932e875e46df87fe6896e8584c3fd12753e9916e8940169d69db6187b4a2a0e8a1b78b89738e11d89fe73eddfcd12da69fa58ed6ce1a67ce44fc7a0713a77dbf3aad3c78f4c95657599050f3dacff76916e7584c3fce1f358173a1e6556655be6cca39e7b22dd0a9f6e83e4d561e3eeafc3ae422e4c77953a12f2e33c2f996f79cf3b7bbc3bec5ad3fdfc2eed85f86b59df52dbb3b2ebb693bebfe5be4779fa899fa392f7375aa07451f7975cffcdb7ab068d93ccefc549e658be9874bfca9b26d3b9453535ab24b41cee78d03a1958707e2373e777178374f884fb6863835841a420da1865043bc929eba39f3427c5a59756fb57feda97eaaffb5c73933ca97caaae5a35d232fab9603719f66511e7e442bcf9149e34270665784fc74cb9bee1ab1b2fa9cc6294ae37c29912f04dd4a90e5371e64f9a38134d029a7a1a8e596d3b84f53d4ca84268ef7c0b92ef7e1108756ecaf1bdf0fe243e88dd3f85e48b8e8778d08c9ea4df69c0608a5f120b4f2f034d1875866b0e8345ee5d3f8648bc66b741a57129df2a724fe732651889fa2e8fe83d7f3a6958f502e2586dddcf8535e9df454fbc82bc98ae542d36b10ff7c17072abb22e481787d6ef97cd6cb84a657aa726b3ae5963f4aeb73ca7ddaaba84c0848f6c5881ffea3fa51d9f4f0e15bb6779e63bee565edfb34eec3a75b3b729fb6a1b2edb4fba0376da7bd07dd52d38e6558db69a7a195871ff98cd676c9f279c58b06399fcfa7452d2f60d3f9cc57ca2de70bc8ca18b32c6f599d19957da9bc5d95cf477194b87f2edffd181d88f92abf8d11c38d6fadd1ca7f2504d5f453e20fb57f6e7a217e2fc35942f9732a7b3b5ce197198e12f9d0a5c4bfd23e66d0f9cbac26312482f1f52062ae4eedd316ccb95b1c96ab582f8f416f2fd0ab68d06b67d16083f1cebb4872e92eedc4bb24fc5ab0ca5ed84bb77be9f67af341bcdd1b6c125e40d05bb3a1fd732fca25a5a28c93ad01601750e5998cd3239dde28f429ac49f7a90ba8b9941425259509c547f96c926aee7b51b37974d85c3e8f147d9fe6d3728ddee636b2f1cae7646bb11be70be88be50dc3c1f1b73d97d778bd7a30af3f4ad16b0e8eeb3ce983a4938a14699273c717e5a2b6e33cd25d52748c6edb1942c4dde2900383b7acf2f0550acff7e8e142cf6b104232a13df35f687c362a44480cfe326f92f31e990e67c19c03f1bd4842fcd2a76c59dbe9e13d322126a8f11e3c6442cfa5f790cd85c8cf7677aa10efe13ecd453f7e3891acca1f3e24abd86e69975483fc0f8f590df2958bfac2f176015138de865efa7689f21ac45b9810df0b4848b64dea0b02fc114b05e26556a3f770be807a587660fe356652783e48e8796d7ea5fd17ccf7a557f692a5c6b1987e6a1ca326a8117a5e8778737701f14004ff5c7ef95e12d89f9a1a9ac554f493050bd199329a90052fd881c7999f1adf62faa9c9b68cfcca76776af31e4232a118b22f983f1f42f761a05f6a3c877ee1e23f352e69e5e17bf8881271d1c94b172e5a8610e227cb9ef9a1c9b808f9c1322330bf30cc2fd976dc162cc352c540065d3ce182327ee0e5672fdf82398d6f196558db715ee35b68b29bb6e37ce4eca5f5d4644eda8ef3d110aff2cab6ed0871f68265f5e62b7bb970701cd6dc49f321599542b28a7d5d375acb1ad302e6c6b30061b9cceacdd775435220cb0e8c729e26b99821a1fc8626b9fd46ad2e6094df00b58c31cadd3581fdb1a8ec0b17ffb1b276935529568c71d24af4715613e424becabde21a696c9982ad7629e123b806e994c388e134e7249ec7789f9e14652e5c03f4b8dba4d956a4cde7115c03f4d920749f163d892633a1f836947fb60df4489b4b0a7dce6849ead3e0a524fef44c524ea249d2295a4d4fbd4c287e739f96cd278d968c92b78d6caafd204068f577fe8356795fd9cb3bb7a143fc40d0ab7fbeadc7881adf82d560966c3d468c7ccb35ba2eaf3182c6b78c684623af71e737adc7081fbe85c6478dd3605e931971f3b305cb8c903f5b88968d2af0d8b2c61b46c803cccf163094d738e6354ee32e7ad579e73de88ed1011bbfad677f2ae99daf103fd58677be98741da44b31d84bafabc6bbdda9372fb3c6b46067d011a6866edb918e51d976a4d3dcf0d2473c2ffda2db762ae9a55bd4db8e748a6eabc19a349d7249b7d5584d9a99742a9b8b513e17ab9a346bb64933734da2bccab64914e57b49f7e9244e8cd1251ce994ef69064b385f4054c698fcedd29ef802921963eef792591227c668d2be4f47c6f87d1ad2d7a75f194c1634c947448c2a622aa09e80060daa882edf7bef25e1df8bb249ec1009f4e83ecd316324888a1087194428f306128e50f140081718cff960f2700ed69627b51ef7b3be3af4e32e98fcc874bf10f1fc8061ff02bdd1a1f6405fb8f80fcc88787ec0bc0c6789fbe6ceb9c6679cc1c5ef29cc125f80df53182a9ec9f01a7331e97b010d3520e83edd5efead3b5f773dc048ce51e96da83de5d239e554a9bd6532c31c85d48609ec514ea34b2e7b589ea2b2da1c5e48606683b51e3eb59de7aff2a962fff8d4a4e7ed02cc79e5d33f314d7aee5c5226e3d39cf54ce69ff3a94bd09fb398eec18a8a8ab4fc3c775d720e7dd7dfa71db59a84b51ef7f35a269bf4dca797c0aafcb764befa3faf6be69f3b793e74c9f9f31f3807fee741607b0a33c53b6f5efddb8b736372b57ada6b91dfaac3ef8af95d27d9d03df2671dd2b91dc0768c13d8f89adf316e98f9bdba34fa6a732a2a2a22e2a7e6f4ec4fd579e8db7a7eca48d186171880b9c20b7ea8872719dce0e1182d54f130ab5278fe653223c2f6d9b7f5c81f666f4d5defb0a300bbf93dc980055ffd9e64c0e589d8c4ad6710c57abf63b4408328d8a4915eb1df6af3ebf5e6d72baf3a95546df8dd759e1bbad4dcf4904aafa8e923b5d25e3a0dd532f70298f3e8faa34f67d1502d344e042f019af38fa3a1448079ce3ff3597b452bd27d1aba3f7b45f7e92a086789e5d32d9fdeef685b236b8935b2a253d0712edfafdc519c2b3b4279e555f665beff42428d6f56d074cba7b326854e5d5ef95e4aae6cd748bdbc799509f119be98f45f59509dee9c7faf25fc5556fb839c5b313dbc96f05b59e53e8d29cb0e4c7a8dde96f43bff2a331ce7d09dc70cc7398ecb963c87999297ed1a69ee325e238d884db3610ce612607d27124b345e9dec9f6f37adbcaf0798ca684db99a5e394bca832c9fd3fbba2ef7e9b6da55ab2a13a2a9a9f1ae46d528be6dfc9c15bdf2e713a33818e615e6238a83ad1d3fa2fdedab5135a2c1e347ed694634eed365686823a9c95c939a53d9a4e6230a3da8f2e9d5a79bbe1712f639a7fbf47457129fea555555f9e4afd61a692e79b9d98dbafd80b92221fef2e693a2d53de5eda2f1d69ef28bc64723ca87e08f7cb245d1da4ff945ab8c7c083e8defb5a409cde8a214ddeb0194536a5dd2ca31c39a94fdcb6e9ad4eed3341cb760a2a9cdd9b74bce1d84c2bb4c52cea96c8accaa7429262dcc3ccc249677ce2ebd51170415bcccbe4ce895e82ba4724a02b49c1e7a75590de2db940d4297875e4df04e6653f60d1eaad8410d4808e3b888f99cdf13172a7eb60569143ff14b1110266891850a45cef94b110c4ad460092f5500e0058b348a8680d837fe4b510d4808537425015a4e4198e0a17f1962dff88959d1bef1b3199675a22952c8a00d21ee282afa79599196a2226f5905e29bf5e8baa3cdfbdacb02354e6002157964397366af2436dfdad4446c622236f58365cceef2cd9b22c182a0d3f015669c4493f62727016571a8c2f35fd64d2b0567dfcd5ca68508233fceb9f8f849a24b36df7c88e505ac4a794ea249cd79a2c083163784554ee29bd78dc237c7b28eb51dd3cf72218a2f62f045166e1415fd38e71fa645ce8a14d060881990f1a38508233fec5c7cfc6821a27f9e7351c00fbba35c14f083050c05d8b1f0d0769a33996fee1c0b180a3c7719169fb6d3fc6558c050c0396758bced347719cfb69d2abfeee9c45e97cc76a1881e7cc142126ee00422587860fb6372811a64482185196c6c21c7cffeac571e0a7851d10f7b125da281bb10b5899b93a239479f3b8ef23d6f2e9fc7f7a0a30cd45d34e979bb9ef3ef890833fea6496f368b9dc3c7efba9fd0dc75695d2e0eaf7193de286fd01bf4e6147409a137bf69ad357fd0675b4d86739f6e87ced0711c8e2b03fa8bd0b5991eea984fb0beb8acf14e263f59bff8adc581bdddead2b21c7bfae76e717813521b9af488c8c1f334e9f95eadca27d25b4fe5cf49ad67faf39c2eb926497f7ec3e2e06b44faf349b1de915e51d93bd265ebb9e91de9cf6fba44f90bf2cf7789af36fcf320507acb82cfb8f4e6bf66e461e6739a24a5e3446fdf8ff3d1f744c417bf2722baf89b26498794a96c9b24237d6b648dacfb34a4fc446d7addb89842fc9d0232482c7fded40a7f7b5f49f6a92ce8d1daff9c69155e23cf87e40bed999fded711cbab6a6623b8f9a19be7ac5f537e8bee80cdbd006639e573be4939d3cacf4ed1a6d5f4cdb452dedcf2bd94506eb94f23893e9de9748a5adeae25d2a573b66b84dda72d5a3ba37cd2dacfeed3aa75ea8a7ca19647d1af475a87d804b9dde0a26f2efaf5d93dfb958bbeb6dfd3a90a262cc46f56b9e872bef48afb754797d0ece2509dcb84687eeb9ef9dadc5aea42d8b78c8bc098db3dd279a3fc5afe9df1108a25de3ffadc1f6c4f4fccf1fecee79bee524281297ef015491e4330f83a54140237be0e752912fa3af40432f1eb08563006086eb871a43223c50bed9933792cb9214b169e7d3e8b2fa08a3516bfa71590f9f6f27b5241164ffa3da5c08d6f3edb8257c59a17bf27265af07cfa3d2d51840fc0efa90567be395f4c645111b41c6d2fa996256325fe95fe105461246ec9f3ceeae90553bcf3f6771d7190e22c39e39d3f1af4bc5a31bdcbaefc80f351a13d73e60c13ffe831ab267ae547154788bc739f6eface784887fa9df3b584c8bb25cedb210d72de3ee191e7d1f752f23c6643f3b749754f504cf143fd30abceaff0c346fd21f57743134888ff0212eab61acd9e2f20215754f4ed716ce1e7b31add397e3e0b5e47b6ccb3cf7d1042e81ac2c6104ad288bdbf519e2762d36b0806a3e1ddcf5985e785b85b5ceee62274cbceb9d1fa9c6d3d8f1427fa3e8e92ea5b2644f35786fa91f03c0f294e74fe7e86d47dfb46970bd3598dae1d0f69ffa49ad73d0a8ed6178f67da1e0af199873ee3368e6eb4eed3fc8d6e995fcaeed336734d621ae91af9016b217e9bb45cf332ac4934bccb6e9ac491db14669b8d46c1d8abfb7d59d2f8ee6e7fee8a82b1efbb95b91f6009607b52e28a17c0cfbd00f6bc259146121e30904416adb546ea12ce53220a6961c0491277b81fe75a0a9c701d0c74a9929c74a9623f38779bc63b77fe802eb977ced3a53d2961e69ddbd03defc74917d378e3dd5ee1dde379e745ba549bb73b1c25aec87dc3fa99b3e7adca90f5cf776915f621f84df975ba24c467de625a657d08fe73be9634f9f64785887067bb45f83ac2de7c3e68f175849b375a9b439f90d613fc732c2840015124eaac9abebdadcc6a7b50cc6af3f5fa7c7ddda7dba5a4356f5945c1cb2a7f37bbcfa68d9bf712f6b6841dbaf31c481fddc76c4e4914f18fbec76cbaf4dcf97c94f1c8238fdfebcc16597f94cffc5e455b64dda71fed22219e1f535acc8582351f304b3a21737bc09c73e75c3677be3a6e00edeb349d05d1b6ce3e9dc5d7916bc97ab3ef0730e8fbedec93af23b47d42baff98406f8f34087afb7c96bb1eb0147abb76581cf82f25701d66952bf7e959d15a396baf3a9d270deaebc82ac1a2effa9c7bed40f9667c0905a16508218abe4ae5564c5f552e544960071e67deca92a96289237eba15d3cf6c9b5465759750d985a47a08e17bcf39d75aebee771de18fdede5cabaf2355b6feae23d5ef1aa9fb4b7196445f5f8f3588cd82a42b915fa1733ba45b63fd9e88b8e2dd1a79545213c5ef093fe6d680b1d79b9c2eb56fdf76d73abd4db0f66a6100981b734e97969c4e425772addb99339d430755e197ef8ad379b49a445155ca0def9ca2e488afb6da74d5a3b64bd5f973189b7400cc831e0f015beff648a5fceae83a1847358877ceeb7ecbf867bd86a96cc188d31529b0c214c61633c8a20d3ae490e38a196aa85b220c127444a1c7efc90675b49e1c8c400713c26cd1861800b0c0b40216e8b8230c2858e0051d47e68580d6a150938a8777de2867f5d16a02daecb94f63762ba62f43c9906a8ac13b874d7897ed1ad9acb6ac018ebb47d5f43e4d60ed754f41607b12a3e5d9d7fbed1671ded61badcf57096c526dbe4c5e56b1e03477dfdca7dd2e69b3a055e29e7dc9b41c48d85420830d3efacd151f2194523a94504624624c426267fcbc41e38b981bb4a0cd5184151a4481066108a1032c8a64a0c20ae42f1a4fe0c14e2af2eba429308082175660a30ba72464ee073ed79a6367bc29065f10620a2cb294a1441a3ff49b93c47c3b638e2775a9928a74a93d9ff1c6b3db744feb3cfb0ed6de57e30b887b80c9df7e1d481e6e65cc6d3d4be238820865ae10842694e017a85620002deef0a28c2394380d81c817bc9cbe7002f27bfac20dbeb0c48bf2864da3e47adccf5a5b84cc29ccf810a28262050ffd06ca17a3b34b965c62f46d3d45b8e8e2022d3c11c70ea6f0135d7629868f8e6de1e313787c84cf39c7ccbc739b1be7dea5ea9d93b4c013069ee1c3062724ac2046117ac083a229c060c61a2f3852668920a4a00d25c080053956b8808a1a17541e90a1851a617041420f706e90052b8a689ab05205357070ea220658dc60c80ddc40e3893000f83ddd4007ffe3770c1737683a363333475fac31336795f2e8448ad8a0838e7baad4bc521e7d5294f2a6bc51ac65edbcde540c52599599cc0e80f9ef37ccaa7c59c5bee5fc8ddb1df6ed52f7b89ff675efd3987b622ed6526258d65875fe32e71c66aebd3a5f47a57bd73ec8b96b52abced7fd6ea94af7b5a4c90360fcfbcdb7f5f0cfe65085dfd17ebe96ec8c96a3fcbb380cf5f792057c4be7b89531c40641f8510512d87b5fecf867852f4ba8f9a206cdefe90b1944c82d3abc1c2a3133cb0f30e0a2280a4f58a3e80d21360823cc1598b8b43c41451d79308185327640c68d0dae30c306752801450c1153a49186154728234817141a5fcad880090ccae12c85227edeeb7fd15d86458ebe8cb59e7d6f0c21fc6be2e73d28a133bff7c6f8e29f133fef6199633635bfa731a8f88ab90a4c5e4c81074098c269093ed001902e4898628822e400074518228c1f988b7b03223bac80c20c164f588111365594a9e20acf0c22b0208a234811071a2cf0510512aaf062f3104208c374a18587eb7efc9eaa0883b91f5c5d4458c51546fc4408cd88438d2184fca25105186ffd9eaaf0f215f3e6848e8e57f1b173604ad83b9736cfab6c1fe9c5ccd934895d12e19c738ea1114611ef62760333eca6edb0b357b7deddbc3b7da9e25d515151d1961fe7365995a2f3ceb1267117d83efb6698cd905f33b420c4c3df9318707cc55c7a994d7c81c1dfd03c1a346f6bd24699dc0ecaca1a613d6c2ca648f685f80c0d33c796bf69d2ee3237d9680dccb81a408199bb01e9e29c7b300815d28a3146490121635a555555d3aa8a30b2aeebba4634f0f744c5126a2c0cc3b09a1e3d7e4f2715d8583e7cf8f061f3830a2804b18000010224c88d1a510cb18408112264084ecdef890a2dc060e55c407bfa9b266dce25e43ee70212e2334fad91f69c0b0985e19a3158dce41a691f2284ed898aa2af96e5a8c561e5e240fd9ebe0cf1374d2262b1f57bfa82c4dfcc8a92113ed79ad71aed1a59ffc14415c3ef690c2edfbf6664e10899c46e018a1618010b5cdcb8238e1e769c4e592a2d5070606646efbdf74e6524e15f966a8c1345545023c82f1a4fb4f13e7e4f658c914500c5f1a50b2735bc7cc1849a0e7cc1c416c06002971560016b3ddb8614ec90c20b332df8c2135863606e97d88b8a8a86f8711263bfe952f5bc17ab800b840be012c71086a0820eb470c10f1c3db4821c34bfa71317ef7ecd88230a17d0ac81cd00a7484c1b271d68710116ae1acc600b21ef8867a24205605e40471c7810918535c5991a3861ad200354c0838e3a8ec882125a30a790630c0bc81ce0f734c50e1ec8ef698a2a5e133a49f74d93dc8d6b6657e3439330c8dced9c73103ee79c7bef393a628c51c6183dfa5235146812f662e49632c618294ac618a3f4d9ddb223149c73cbee9c7b8faeacf1695273e6e5f77699d939e79c73bbecd8c2981fbb329a796284fc0086903946d8fde01cce39e71c747f8739e7e07bef3de79c7b0fc2e79c73ef3dc765ee00305f870e77d7d570a049d2a14787fc24c65a6b913ee677bcbedfcbcd0cb1b60379799979a5dcb8cbcd6dd9490a39b2c378924e51b2190671e50c47496cca9fe7344932659612724b29655551524a495194cc82785ac72ad4e079499850438d7508630da9f9e6bbb92164ee6eff77d3761e764512ceb5bb0b88bb9b6384ccaebdeb48b7ec12b743c8ddceb0095338f101b8c250992ff27ba24116ffae6eadb51a20ba7999b98edde5aeae9bb9460a3373736bddecb5bf9d39dbdde5e666a6d9b6d6cdcbccfb84f77a16c275350d70ee3dd79c730d1e816198a458b76ed9beafe6872651dedcf7796bad51925a4dea76d72ddb39ee4c3ad75a6bedda75b773ed5cb7d8dd4e8528c46fc5f410baf4086b7880eebc41081d4a192384efbd07238c10528aa2282a46d8ae23f07d61ee7677cf7abb806493641226d8b99386ceb596020cc39c73d0db9f6f3be71d2f200799b12717c39c6bdd5aeb31babb39e7fdded6e8d024ac49cd6a526baebde75c6bae35d7dddd5c73ed3d08db73ae756bad5f151c4d1226d450e3b918656c527b1e1dfa94cfe3832f93ce3977ee3908df73ee39f75a6bcd3df79ca3d5613166dbe07bae39e7da13a0bbea2094cff7d560a062eba4d505d86ebac40e1deb12bc8060bc92ec634d7a1ea9d5a4f7dcbdd7e28b11c2faf361ef1e7cf03d5add3f08b36d11c2f71c36a18e24f60b77dc8c7105cdea446abaa4fc43ac2e60384b9c4b9799f32a331c25cfa33f8f33a3bc9d68e0e5757e4f33b8e3e353591226d490d54929a3afabc9691256c57d956ffae8f0924d8a6e22edbf6b873ad44f51499858a34bcf179378e64c1226d6e897cefe499828d36b748f6c3bd0f7933041268adfd30cb460bf63a4b8e2c3d891c4ef4906737cbd79e837bf63a418e3a3f705d41750f42e5379e555765559357d1cea979e840937224dc2041b4ddaef0b280913649ab49f840935ba64fa7dbe9230a146d72461228d26ed57f99f840932179318b3244ca8d1a47d588489647fbd6d2b0263df1c2617c15bb0f58ddf7e45f6e643ac2e608df23b20f6be9ab3c376e6299c0ead03e7d042dc704380baf3eb95fe2e55cde66e5a0fa9ed3c97d02bf6442a917f4e6a3d3cb49de75242d237e97b3e6b390747316a51d924e715a5e875a4ffc7ee387f36103172030018deb9b322e5e7a1f500d1769e4b49860ce507827d39ab3fbeddccfbd7a0973edf728f38b35923d892da1bb596d43ea95c527b45ddee111bcc3a228fb877991096972eb33bfe791c02a249cfcd7017a884c6cd3d7cce0df550ff1176216676bc83c754f6445e1cfa975df6c5f209e13abc8036838b83252de74b3a5b40d45e55564d5ff1ab54d2550263e75d52031aeace1c13f73dfdb984ecef4ab2cfd950ff74bfd7cc709654ceced995fef6caab267a766ecd61797677ed5045b61aa0bb4b49fbf62bfdd2eb7be84deb099e1d5e3bb42ae32541879712f7edf05ad25efae46edc4695b72a136a2f2b352b4bd2a5ae779cef0533470411b7832f9847a25b36c09e3b4712f47c88df79cc82da87f8f94dcda5b93a57b01d6385997fee7fd3cdcedb598bb1bb0ba8f97bef416bb1e7f002626fed39c8dc68733595a79da76d939ccbdcbb90f83fe91cd30ba8edb527c78508a157716ee535d8288351419557de3ee1b584ffcd08fd29a91c5610ba75a4ffd1fe8eaf4b8dc5701aacc6efba2969d073e990d617953cd72e252fbe18331ce947fa5fcae8d261352b6b4e5ab1cb1a5d47f8f431abd647276556db291a44732d99987529812e7dafad5c7a76a47f9b34fb7d5ac5d6bad1e1d12109059c480982b570178e82ab602e68fa0705a48a10b3b64b41d09f5555e95da107b996348f71de44792991ecf2b94b099cad1d6f7b23a6f83a626e97bea0e55ba89db9e3d9fb52d2454ed22badc4451f925f65087bf6dd1a38abcea11252758ec53d252878d712f7adb9e9db85c4f4ce65979af3b54347aba5d52e25ae35b791f4bd8eb49799c36cbbe4983c6f3bbccc55fe964953e4a6a3bdca1d00d62ce66fd72debc63f9fb55d72ce1710678cb5bb2bc97e73dff09db116ace9c03d84b93b60cd9f4b37def9ee2f067d2ef67cf205041dbe26356ecd8d768dc02ae4e15b7e0e1ff2f5acb53ec7f78b0c3e047a8e4f7701e5f43581fd91c1275b39947faf1cbaef2e1c9f3e3d7128ffa48bc390f6d05d192ddffc01f1bd806edca26d494284c4dd11b2350871222fc4a9202fc425cd0bf1e8d3e974e9397452978238f4225d0ae2fe51ab0bcfe7ab82b8bc92ec07f1bd808204b974dc07ad33b80fff41eb0f27e213ce68411aa76892f37204561f99a2978447e6adf1d8d011e241bcca6f770c696632af4ecb3b6f2edc5f3a06dd44aba091e823de3d21908867de0432df1cc7e76888c70be879bc8074e0c548603ebc797b0c4ec461f0494383cb0b68069717100d3eab19301a66a061a706dbe921390d3300a0c74e8feed1463bec83f2e17b1df1e17304039118ba2ce144145e2666e1d07d8a9a16911968e5cf7c2e56c4f7021280ef0554c4e7f2721bd110846e938450d7c39281d65c8fcc5be388e8c54c8482735040578bc3be731c1adc799ca24b333800bcca225ee31502f08a05c06be4e29d373ada1c553c4f13980ade5557c4bbdace942cafcd8e77beb5d5f1cea70f0be769709f9eeda37db4110d8ed317927e1d1c217ee857dcbff7bcbdcaaef0c3acfaf0ccf93a92f98eef85241b3204074221412014820361902119ce92cc777c276b5c7469c79d37305a0fc969bc8bbaa4e3ce5b4b73e924bad45dba34c49df712456873a349ce0540db1b4d721e00dae06892f339ad9a0bc90cfe9c089dc171e8fe7c948697d1e07c21c111e2dff12b2e73181c47887f885f71382e44f33838de0e2f26443ccbaef0ef64f5790cfe2e26cd71b22bfc43b2fadc87fbb4474386b36406c7719c2cc8874f9f210b8ac187f889b84f3fba3db8b7f57823e8d077684ba349ce49b4a9d13bce69a06d8d26399f8136369ae41c00b4956952148f7946bb8a21b4a7a0ed250a21b475682f41bb0bed2460a0cd85b61623b0202ec46b33f3ce6bdc69e91e2d60e073e7cd8c2bea52e6ae87b7391a1ded8e2eb93b9fce1a6211a1beae051d19dd2742f95f5ca23a18afbda83b8fd6904b495b44a87b48bfc8e04f86d3d747e61df630ab5cad7f3ea3135d22e20e893f0c1e8357f744fc22925518322b86eb92ee8a10cd43c7a9d1cbbbe8e50a30c4902903479ca3280927a6c8628c34e41a5dea773e65a05ac03c27c27fc0408f4e509f94c5d70e411c66357bead9982db87cb3b06b495ca249ce61566d9ae4fc65d1892639cfe83e76614d72ce5cb01abb1071770141cf683f0eddada15217e27d31217aead18997d57eead8b52488d3ac5ee1cf99f26282bd0b71be9804f11c9f4ef91f6d67ce7c0eed213ec721adf21cfaa4b1883491181cd22a3038f409831371488408112230401fd07a741f3618204e1022b495c01959d6e599102be9af28781c9f4330eb512704067b212142c43de71ca1f99709d1fcf31868fb9b0b09f6426ce688bf10bbb13100a12c48376788b3629839fb0c03e517625930cc68c540f961a0fc39941f1ea9441c1209f1d067eddaf278e85df96370774ee45a12c473b2fac37a48bae81f123ef344b25d233164f5390c9e93c5703109e295ff3519ff2abf107f179205fccb8416f0cf73283fce3e6e37b2d20f24c4a3135de277de2ea0203e84f2c72e5d12e2cee3125d0ae2cea3133e4d0805e23734086d2e4d726e432bbf8dcfca62430899775e6b1e56eaa1efe28064dfc6a1f3f6f834c9f37b01e98b49f3e7d6b5e4b2f8daa1fdf8e10cd892e5ce7d38871bb806e7ce7f16071cd68873e7f506dbb6137db7e7729ff663df07ddef41ab4ba28ac368ed2bde390dad373fa2b5a778e717ad129d5b749754170acf3ee9107ff38a0ac5e63753c0c1f90d9cc3720dcf9defe270e6d9a9acde78e1d9e5cd6f169e3d66015574c9f2f649593de810c7a810ff41f9292a029d0f1ae2d0a7256fe4e4f90173492aaf2bab3cf0fcf4b9d8c8f702da0b683457470acf5f59a3ac4b043a7f6541d3737c424af9a439396ed3a51aefe110ba2f0e411cca1ee7ef87c38cc9b49df6d95ebe6b6aa40c42bf70f12a1fce6bbae5d3a2589320f48bfea035d4a649d07bd01b9ad33b13cbb6493a0f336ac8109f7488ef35736895a2332beb07b3d1a4768cf21a4d6aef41990c0c2a93f9f6bea24b550acf4f1fe2658a2e0919e2ed9d45979692538e7e64d81a69afa1364d6a1742bf38b7e845abcdbb6cdb4edffc80a9f1bd806a1cf32bab377fd18a8dbcba39a74bda2fc06a7b692fadc7797b57d125e8ed17ccaed1e57c0159cf27b5c168957233a90bc826636c4ef73ce49e5d686da8fb2a53e3db6bd2b8997ed12a7fd2ea6f01f18bee8fa810968fd524d480d01b68d5a14636c96a924d478135afd6b7e6738df7df317770793cc43ccfef183c9678eb47d798335e9ef43b260f3ae65b3e7d58cda1cfcaa22ca7b06d3d34cef25a52fd152f243d3cfabefdd7a54bcfa7cf0b68ceec07b5e69555f797573ea2157b78391cc1cbe1c87dda68a8ab8bd6f623df4b497b1b77d3abd1121f04da643695cf20e83540fcf2bd98d86440b2da3f8364b5aabc5e5eafea1a8dacbd90b4af331bf9452bf6262c4441fc6555145ceed32e5a398aa01a27fa496bfbcbaf4b49334d5addcbcba7f4a1fe2b136a5ff9a14f5f1793da5fe3974bf75af99c59e52e2f9d1a6533ab5436d40fb3a1fe4bfa805ee3d3abf4ca5d6c5a8f8f25d06b247f8d0fbf6a668653b9e5f2f2995525974f2697e523672e9cc3f451368178e52e6f790f5af97bf8bc908c7c6641d36bbc1a59f2029249eb92523a7521b92c97d76549ecf41356104208ab1a994d672e3f68e53d30f741697acc0c03b3c6f26a4dab66e496f4e9735a7c04e700b7cc1c6299c1a6d799d52df3d087da8fb2a0cb299fd6e5b0f5b81d46d36566d13ad4fef299e148af1ccea17ecbeb96f92ab3ba800db5b7bc0eb51f392cf375a86986dabb90581e34ca2a771713eb2d2bab564c3fbdcaf808ca471710753df892ee5fb496e02f3fc15f7efde55e2a994fb9b52e7d3a07bad47c4ee7233807fee9d6053433c6b84b97cbe528c3b180731a9780739a6cdbcec84d3f6995d5bde517adfc978f689d7e21995e5dd4f4165d367ed2fd2ae323b88698bd46c4a68a884d1d972cd1dc3b982722c4d0c1df34a9df1a691784edc90c2d1f7f4f629af8268688931829b691b0f17951e9395d92365d8acd7196486f4ee3ad563e7cd7480f97b407f541abf49ae6557a6ceee3593993b2e405045d52cb6dba147d18a99249731f595f4c9ecf9165f33c4aef41790f8a03fdf27dcc7d9ac66b688dde8e519c25cf69fc394d86031d67c9e5945f4e3935f211bda845832695c9afcf6366135b5bc2dc0f60cedb1d4d4e977096489f2e7d3a732fcd884bddbe39e7cdb1109f990fbae9d055115ac0377c58054ee7f0b9222fabedef01fe7cd2584d9b3faaa4bd65ed0bad499df385a4dd496fcee75e4aa45f3e6da8a49537dd7fe39de32cc92a7420ee807e78b7d34c26ce6b7b182defbc993107d00f9714f3a6359ed325cc39ba4f6f195f4c283975bab43e9dd3a5cad99f8ffc519c1f6ee32edda781b8a4384b2807e29403c9707e64474cefc37196d8f8c86d7ce423df8b872cfcc36597003da0db501f3de8b69d1a1ad49c728c56e82da3a14123eca2d127bda149dc59a532e81e29cf75c465f03ad2eebcaf253c3658e16fd9ae91f6ceaab56ba48e9edde488d88435c9466bdc1e0d6a25e73c41cea12b591cf83ae21c1ae106f834695aadc7a6777a3a6e27b03d62fa1b6cd0a1cac6dd46cd67cbb056b246d89bbb0a73fba67d60428a8408ccb09b1c7fe3db75dab1c6e1db2dbee18a1ce6e9a2a984d70837c110c2930c1e429d2edc0ae6c41c8c7b83054e194bfccbb610758210e48b1f3300529d76904445461d300b84d5890c2c08f93d91b1c60c3357a7ae1bdf8a342909cc75b8a124e69b3fa04bed0636beb563a03d4c0b18ce484dca282555d2b317e1e912bf8c272335a9911a8fdc1ed3184648810b2344a1088a2afc34c7b667efd0620c22145991023260fc34bfd99e057c31033258d4a185195efc34f7ed4940911c45b8020c146020e1a7b91b6bcccada18638c31c618a5fb748c9b05456f47a2c7f7de7befbdf79efbb4a0e7ce8ae99fcf4a4a29a594524a29a595054987d0ad985e42aa72cba7555d973319ed5252f9d59792ebbaae8b56ced0ba68d0c82f9f23fafca2cee525bdaf7801451fd1e8176dd3b22cbe9854ce5550e5ecb3a2cf993a26557497557eee9c9dafe74c8364f57c2f6931adbc5dcf2b1a24fb7a337a45a373b68ede5c3c6930b74b55b2d7e6ae35efd6dc65dd5aaf2bb9c6adbd323766666f6627ba478b7422fc476660da69507bf3219617b0f655d2de9ad748b7735f3bb42a90b706d7be5de987192fc9bd7727709712186326d45ce688d804bb6921461c5d6aeb00ccc5b7462c14847047163188d8d2460d10d00417d0186286315ce8720522e4182e64f1d7ef983884780d0c1eea391eb38522b9d239e7e0182d8c6931464a9a8ae470811c65ac78c30a63fcc41b3e8e894308f89ce7c900ca20038f186540d1bc49241d7f1d17c30a9bd84b7a7650e7a9c01d60092bc49c80a0e50c377e5ccf3b27461bef5e146389f79c7361e0f1ae891fe7dc73aed3e3d78c2d4908038eafce039bd8ede961c28e72913fce21a54017fd385f5a897e7194b09787af659508fb7115c24c88a69abe2d1771d13bba6da7ed742b420a8ad24843093313c0d60c24bc7c95d585c1c6b7b724d376b7756badb5d69edbd75a6bad35af1b71934209374845cc38628caf374770419a34d3716b1ec2aedb7539bc6e1dbf11e4d7ae7595d06bf36daf39b7d7563669336e9277ddaeeb75e85e670dbba85d383c44df9f55a685881b7ea273913fd3dbb1d643c599551e29455120be65cd0df0ef5ab253f8967dc1798e654f3f25885e02ca5dc9b5760bfcc4cec155e1f7e78ed3321e287f9904f687cab6edc8b6b3eed3cf596b649d8d8d8f76c367b07af38d8413df9ed33dfc5349df4528d0453f94cf46d71f55d27cb3ca1f332ef287f276b80c597ea1b278d37682f8e620843268a8bf6557da3bf7f1f15a42c3bbec4b09a2bb926bddce9cd975bb6ecf9cf989bb6ed77d89be970516f0135d73aebd6809b9a9f9a57e7b7877d63973e7cc7960eccf35e71aeb7c73cef130119b9e1bb2860a649939f7dacc91706b9b918090f05f40bb48f8a183b0354348f112e6835152724f74701670b417365a17e9714f74701670b41736fac108e9e02ce0682ffde0db131d9c051cfddc890ecea2db9ee8e8ba27c68365954c8d5c6bdad25823eb26c9d41673756a73e37bb7bb4a777c4716d4d80e3becb0c30e3becb0036b1ea51c3977d6b3a0152d2f707416749c980bd781359f4bc99173d9769abf806d75fbd32e5b0fff7463e3bbb9a104d2e7908ae8403d57c9207c6c1f239549e7dcf2e98a47c2bea132795324c618230f892464a60e28a058a24b185e28f1fce09b17813ce001e4017c38064f15214b33675cff9caa320cd21b1b1b4849c8020344810b4f98420842182105073899d1e29f5b2ccc51c9c5a48b2a18c3c51472e0600a58e0e1031bcc6c97076395f188282b78638e2958d1022e4430401c5280557481318b038c17fd06f33356e09ca4f3b035fefdf386f9d3691223f11e035a50441a36c841145438c2cf2bc03f2c0ce19fcb4863cc3c6144e6efc591847fef3d1821b4f12190d9e2f0b9eb54bfa72cdce0afafce23695ec0634159615fb4c0fae8d2a67d946e492933796a3bfbcf27adfc2aaa93820e281103218081630b551c410039c20823471992227d4184128ddd6036376178c15a8fdf784147493a7b9398e43a19894cdbd997d2bd8003db5825185cc0e8a2c4b2c1042fb42c21451c6a74c183853261bca001c975aabfeb90745e16323e92dc49d88debb0a009ce535171c9e86105254609267efc8a49628e31742c3184174d30e2e4050fbc9a3a3cfb74d1822abacf257a679ff2ed1e1f2fa2e89d7decaf242a2fa6f878f2428b8ff0b9eef922b8d176f69d3363056bfcfb35830866a80647174a10d1451144c8df9317648cc1821b59bac8a2a58ba22c3c38e28c8fbf3c408209180770861053982fcb7bef95f907239459ce1822050fcf282ae247bf6748a10820ccd56987d336cd3dd19b17b9a101bdb35e73b0de59af3c3d94571dfe66d3f8ee9d76abd3889ac9351be1d7b90ac6473d41e5748715753cb1852accd4f0852b8ce19e7bcf6a81498a1544b1042f4d14618528065047145cd8808b16b42fa81723175b3ec6181d45c598832f7c8c3152ce27456f9a44c518d70a1f471f3dc6ac4ac9d865968f113eeb370c12a77fbf6192a0e22be6110923468c90400c257891042ba0a1c517466094010f177408a10d23ecf0224711337c40bd970330fe5539c08114ee26a7080d57941c8ea2729c73ce6ffc260b5a6e6eb8b51bf80be128c12578700414a81a5c2970c0181ba881c6174708030a02c8c1113968024638dae28e2db0f01e13a82d4c08f3b0e36194110a11e60c11639c100763bf61f250e371692ea094a0469722ca78c1105f028046992b6cc186cdef690b313f7fc3c4e00534bf691c5184b9cde209efbdf8a2cb82095908e1352fa4169d209cd1061264aca08c1a3b598c89e22901811808c1841258d0c08a364863ae10832cbc4008d338c2cc43eb374c1751c862074664910324e07b2f0b30ffde7bf065e16508436051842c61f228f3eef7944514481688b348028d2226701c8da6877799b010dfb2ca45d7121a7aa5ed36ae617d361b400c0fb81082cb290b22b4c8f07bc2020a581c016b8ea5744e390c75d45405dbd3154e745b1c1cab2089bf21633633bfef5dd5d8340907fa9eb878e39be3c0ec483f74fe2dd2a50d83011fbaa79d360c1e74f06c1a5a5c511e5dbe2e192d56983beef8ba657e9338014693f61f4dc244a3499810d324d7e9120dbf499c38ed92d8a649fb6a9230314793f67d7cc57ec1a0f1eb56977cfcfaea6c16b4668ae6ea14016bbe985bcc39d69acb1aa6050c03317700cc5d701ccb6797cf19ce12f6e7ec2f1baa2e0b0fc81023a68cf4389d73ce39e79c5be79c50fc9705b9dadc8ae988f33625ad324608df73aeb5eecdaa49287e9505412b26e84cab74ca274597d7c0aa4a56d2831c10c5f202a21ccf762991ce590d0a72dea4f3e55cd220e88f2f27adb885aa7c573667d2bcb9926b6de13a2f7cadedb656356f2dcb6952f376ff865943c098d6f5e8d26b8ceb713d2866dba4d70e69e5babe1ea3a375e8fd7a269bb472cbf4dabefeda5de6d8955cdbcea17bbbb3d6edb84d31b95b03b220d0d005e432c96fc5fc80e1b74538f0cf1d8458d6e548d169459ad48874f801e3b0e85c111e770e4ad1e19d6bd993ef7d21bae1070cb3d5da0ddfdc50bb8cbf10e9fc8079debd6fa34e944d8a991c7aff9cfc73b7aede0cbd7f6dba768ef78d768d38ac3df75a66610ca70dcf3e7908d063853042d8dee473f75e9107fdadf7f01a1a7dd6488d3f5a57ccd7e870c328ab3a3ff28a9a5e9d4bcc6553dd347eb9a3d22f9c25f29dcb7719ce92cb9d5fd2e5a5c4f995d5e72ec8b974524ae99c93ef4deab9f79c94cf49f99e93f2bdd168341a8da265494b4a4b4a4b8e7c34b261448b34a9c6493ad362abc6275bd65a394daa7124948f7c52ca929685599665c927e57b4fbef7a47cef4929331b9a349da255879fd67bef3d5293e68befbd77d3a46959cf7aef3debbdf766ce4ff85cfbf92cd73fa1f52c781d71bb469e4f6739e72ce7629396e4d92ce72ce7648c319b5693a65b96f5735a1892fd1bd688b3a26561d67bd67bef49afef59ef49e7de935edfb3de93cebd27bdbe67bd279d9b71d678936a7cbb64f176c95aab06b3a29591b01a6fafe941ab9415f3ce6b726a2a1a1b8a3489721a5a6f78ca67b373eeb5b52ceb3dcb7aefbd6745daae8ddcf52c386325294a567142eb5d6ed4681ae31a6b7459342318d608e5efab73cec167559da79c871091603e7247b1eb9aeebdf75e5f40d650b7656d979e37cbeb7bef59ceede95d96d32487d1aaf36e9b4493f91a71ce44c0f6bdf7de9cefcdf95e8d31c6f99e1bd12a45075e40cf494da2bc49143311b0f5e79c9bdbcd3d1879e528678d508eedb68d313a17bd3ae75c8c317a8c31db97ec9cf318638c31c618638c31c618638c31c618638c31c618637ccfbdf377f368a39ba8c449d9a83341cc39c8109a119a49129000231640303018108b45c38124499a0f14801191a45250204b635112c4280a8320831022c410000c00c0185343449c00ed78fb9a2d8854db1a7d5ab0ab6ef43ef2e84186ec2066fea225ef0081ba52419caa8dd7b794c588fd0ed01338d80c7d8073c8c5b138b6b9521f56cbebb8da8ecb1108e45e91094bd5aaa470500c6d8881010d430e08aa5a78db39a7cee30682885f4d3600af31018f51cd2b5d814687beb70b9ebb5b2c289cb2fbb92e285b4ccab90ea15c5d48104518c094b2c20f19ce1dd0204e9ec193c95a6c40d1bad760f4dd8ed8d3f2dc812ce48f9ef5416662528b6deaac79c6fabdabbbaead5c5d3280604443e9e7c66d18c3cf3639c43a7f29fc8225a76fba766de87eca674222b8f1851e9d88622da398db5e176636e6c6b75655ee3e68e6859359f80e4c51a793ecfce02b85e71ea19217a53abc4c1e93ca8d9f47b43c2d69aa83c7ab409705dc26277528d1e1978819bf9ef612f5bd92637660640aeee08caa88b67595026cc076b86e8d9f71ddeb442b79d426880da338ef3f7a89199b997566f6c9f733e3508222ef6c00fcab618a66ada23d33a744105766deeb8ab0e92eda9491d70d50cf535b7c58ee5650d78db923653381e72d8ab5f1042e7c181b1f65e07e1c44e0d9d5536a0e4739d57ce7eb53a08042f89441571d3b6afb66b189668989a9a53b8ba7952e968728b483dc4289f5c4eefef541c06e7a36327af1729ec9b7a0db95bfe78c44978527b0d387b24a7344cc8f608fd45a26e06b923281a4bf5365758822594b0d14ebbc8a339a12523238ab2351fafac63894bcd9d192c0f3252787b8e6259c8dbe3dd4b8bc1c22f567676ea7dfd733767372d648110875abff3ab6a9362c66389f403559f48cfd9277f61a4890a1daf3c55447da4f8b64d58decea4fb95906e271ffc2a1b42d22beb1ba7879c9a6b6ef2671ec08964a432afc53c1e6fa60f3f5345b49c427ae4f1426029ecb8e82ddba569f17911249eda77988c74e86a28b4dc612151cd583e0dada18aa9d692a2b2f08137aaf23170b4971cf92ce5fb6f3956812efb1882095b5749566d3f1ff953bebd1a446a5b4b1718fe8cdca332396787a384a33f1f62fc59a226d79fe3ca9196d6d0883681aa458b4720e2598b5336726f190c71cd225aa9554c6f28ae8d4082c38ac0552631f4b246e626c740da0a5bb43b31b6734913cf869eccc6ac68664658cb06d5676460284a69c40ca7bf977be3442c3cb514e8b0d883d56b15272e1cc75616793ef8edd69efdc036d4b4b00e30d6b2dc38d242df6ca0e36244955c8dbdbfb26cb0bf25c9f5f220987da291b7a119916b08dddd881d2c1a07ee4db7be3fb4e8ce8607f3fb369e8ed5eb53401c862a090cc5415436586f03d2f3c9394119bce10098f2029f9d4dbaffcb30ba2679cc7d298f9eacf491f80334efede9dcb59aede02ae94ea4464df2421abae4676f502c3725a968f20cb22e1e995df9b5623665e3c814750146126a0f3e6077a0393e187b9a9681dd0333094de60bea8f8e1e042c0181bb34c0c8c5247bee81d50d39152e66258e680ecf56c4d70a7c8d8c8de35cd2ac8a5a4e1546470ec34cb377e49e5b111dbe5f580af8456c92761b2d617e32e61b13596b3c8e46494143461f434cc934bf7507daf9e0af10d3a11c04656cec005bdce7490fea96e125932b5bbc86bfa27264408d7c9a04ec7b91a4c12bac2a7582469e5c61b4b9256c6e363151c8a30c78a3855a1b9754e38de2227cbeb70827d975377b8ae24a824376cd77575cbd4133cacc7cccd7557c1dc0e1f4c805b7714ad9b6de45071f149751475a56f7a86c463736eb62500b6997ac6e8660cc48fd0f3f42a63348d2284676ac17e8e576b3eabc78c1c45361f765eef20c207618230390c39d9dbfa049a3db600873132d552f0fa8834e5f5b1b507afdc891d2d542de4b8981114ab98b08d36d40835565d13c534829a5df8436ab759cf5e717353d51242588e4a55ae6e29e2e2420054b26eb947241e9889f8a8fa1140e84d0688264fb855043fda23adb44fa1d1938dfadc11acdc40018b46c9b5d3727738bd215c1dd8476ee632381d508229771b38875a8dc462b080df022e37bd2f7fb3906e898c166dbd59831f63af791daa02f233bc2d4f4e88e338d099c92becb35ed06630b3e2592e31596fdc1bdeabc436578b850dc9b7e8cb3a2e454e1306d9f2796cc0455799c7d63b121d20fca53d47acae01406da962e6ee12c4c2b0b72450a1b859047835aec6a6f03352505fe79e658d3f938b2e359ffb4d9b35adca8194c6a20e2c34fb7b21db7f91c0c95582cc38228d96c2e45fbeffd4847e52a3f3d321823c4e6345b8aac2c1a6115cc04cab06ebeeca657b162a56f7283e9353af3cc218147d79d8e81751a4bd2a4da2c630f6043b5974a8ca1deeca9430a3c45cf5671d3773f370d80ea99a131c34b01d801a2e4075e850679e1e64565e63a72462e7f4a43c3295bae83dc821eab34c5ceab88d7cc93c268942af3238eff8fce51ff492314fa5835e5dc183de8c35d11f7797e8d4cdef36e47daa69aa3c52a1d5267caf92cddfb7ab59c72295637199f82e607f59fb479cd4160295de168bcbe0f53515314b4f88afcee21c2eaa837f6a7c919bc8e680498361588fa55a017cfa007d02178d853e107a1483a83b176f4310aad34132037619cfe82a932b059149d33999cd2b0338b22f208d99181bc12ae0a903f976b654abcad12e1e4132725da706f9c78e9cc621eefe5f7db155032c6a47f752cd6ad117b3cde346d02e9a102faa6d60915f5f10197026bb27b7f7631d4618f6c05237a3887a30eaad93e9c910301b137aea901a61d5d598a8a64cfc2aa65142ded0f3c27f416b88e3d17841a8002e9bc32af1eca8d48f007fa68bdd441e717179760eacc4ee3a4be3e55728e201b0cb2dbe9538ab0c4b9145303c2bcae7f238d645585cadc3a28d948ed0588d176f347c9d0587bdc5779f741677b027f8f1fb6d64b0a8ad80cbe6b04e343b3a6df10e901e682cae30885233d672fe7c599b08bbf3117784d13f5d2d907e95c039530706a07a0870eccf89a5d28dca951ee4b7c22fdbf4b9db9c736f6c6d2875d022039f473c565ea4c4a54dd5061c87f4b4ab41d3dbcca145c4493d6c6990feb3e092ed7d4703990f84e2654ca95a1a7126ddbf3b6e36b3f7275d359c96b6ef0edadbb220698ae6a872c863811ee2ee040068035ede1b10a340986ac24b27c452b22a25bf4914d6e6f3401357b9f14b79f004900d4c5b146666d5841cb08572f069a2f0a961c7b1067c93d69cd9c98de089063c7d4fadfb261af0d8da6d0e313b210c00a2895ecc94c1e2389d709f8d724ad254355d26e07151d8d1297c6dee0465d2f4b4ce76b48a9c9f481e646ecbbb3f11b78e054123578fdbdb381068ba76c94047c102692b96718217f4872f83d1fbf02044134de7cd9b2a7afa13ace594eecb104f7ce68f91d2da3e6d2b3b7ffffc0fce65d0eef361f6baab90efd7c3a8f5de642e91944a508cba6e681f34a2c984c60b95b4b48a51ca4ced2e91b10300071c79f6635bb2729f983c15af0041ec4d7dca12f2ac37b4be1b9d031ea749bf03b4585c13195daf45e52b5e9b5d7cb476406fe5c7a78271f0b3269ea0fb2bf4603bf6c1f58a3c764b233249fb60a47b3b766a7b8ada6d2aa959a45d9646ad039c235af75fe0e7c0b943e603765b051315af82ca7cb150c6ffc0a70081d217df41f83fd1f215eacd339bc76ca67fc9123b63a0d52fb21308423b25bc799987869fe33d74cf2e11987a345cbffd2d0602bded069741eeb99a88492353c81a9e96d8494653d312cd85f6e8de33ef07104bd4eacac31cdd4b74da3e609dc6f6c351898599c51034e32cedb15660d17027d3b8a28acb53aa968625905ce3b037fe6a43df78291740cf7b7cec106faac57ded46b0d988c6a95bb71397a6219a7a1ce246f650c3096227901b372600fed9c7b9eb2eb120a404c1f2961ebd5baf4f8f3f945c0a51b39d3a6aed8538e0a216b8207e323ad3caacc10344f45082de7e2d73bdf9dd3f513c717e13172d2db49275e2141c3d0859124f39cf255501f6d816f18e05e74f577218b41ad5195af3592e1ddd8779ce5c6fc540532eb8d73c1c6a5459b5c90a4f357b0391443aae221ab70fb0bfd5b330a1e4da18fd8968717d18c0d0dcaf2812a698695c21b250a446ad4619eabb952549baf25006e106434ed0e92bdf9f6f19b8fe7e3cbd8cd8084f6ffd7caa8e783c304b2eb6f70acc562d4c1dec630144fe5a55ebc47c5d1db7635e82a28d9fa45c0a4fe00ece474418861b4ae0df3d345629cf5499ffd28d21be386ae8d94642ac1c6b0d2fc32a840b22d93d53b223d45cf1212e51940b10424ba273b600f2d3bb89a69444af661839f1b385296105b750fc8da288f140f428931b6bd9c24102f5e25c553a728032a9c8416c808ec81e7d89b8bc2febd0bfd65b3c4b4bc6f32d059fa59b611fb3f3f12740a2b614e4fe9bd8f4dde7c12ceb0b90fd9da7965bc0ba701f5c818031e42ad3bd58e1755399293117fa5cccd5f8f2f28c8ea9e09069638f7929837aedc0684c3ea5cc3da48f49563924e501f90471dae30d7c67bb7853c9328d9d578ddf9955ebb9abf1a980c1fb045447b30a63a06fa2affcf1ceea6a7c682f7ad1af03fc8128047485a03ab151fdd1a7086e8b8e0e382934fb6a1e015a57e4f9a2b32033c97eb432574946ce9d3d942052edb73e61aa421969c02e75db2fce1c7ed34ff291aa0144bb79053a9376f98c2a7c269cc0e91cf0995b5f0b87b3270742775596989ba2b6f2ba4910ac66e3a7461bb2607bc402103c6abb0df2d82fe4d8cfe15a8bdd1c71adfd81a4844a80339e66dc217a3cc51b1cb0986984fa20db73afd21b224cf175582e553c694576188fb06eea6f809545a070276f2257f87d697bca6e67b3ec9e1cc294afd10cd9ad65df256282ff12876502bb3f542a896d5b074a9d09e57bdb429b981d7e78e7470c84d056cd2650bb095a431eccd1a9fafdb7696eb6dfe61165841829df2619222332761896de15177a563a70f05a95b6765c72764f647945b022c4ff7d079f326219a29995044950fc87fe9f6c7f94b47da32e247d13b572b2a99578e8b9667520086e0b173467cabc40c41e4fe30553d2bc6b8a4850000f48c23b18109ed0baa6106bd0248bc4cd2e322a6180bfd827a2e667a0e66b0e38a11dc092061646ab75d17fef61108370b05fa376c1923cffc0f60811eb440d256c42e8b6843710c54c1489c6f6ac97b731e795a72857863b0e027ec641512b527c114b1691844953461860326c9c9e28dea8f46b9f363def0a6b6cf0522eec9f27da8416e72d39a71c65d89124eed88caa4a46ca58f9aba05a20c4e2a61db22f469f1731f0537ca3d0c8a157a4904ce466d0185388bbfc43d2dc3cf340a808698f19fbc455c5de54d3c4399e121f0434401cb910e2e2e61baa0681611e81f8c68fc7aceea75976fba87d4a5e29fba4c19ec8d61efed593272cb3907993e920b21b32a305188d4021c7579acf562604428bc6894cb27cffaa3f4ca1325ca24b46bc9a4c74161433445f57816eb6c0b940aa683ddc1eaad4b8382b3cb965f34cf7f3848af8a659cc527e127a0682430711241492a54231d951692a791e8c2731f55f915e612a740424fa6344c802b15cfec869a78a11c4408b94fbf4d06f0caf6154847bdd6194051a26171d5b2076af1301390ca1eac24ebc8ff7543f57d9f1448a20616611f8a9c80515c701fee46c9d8500f54ad67737cfa6cbb09e433338d7a2e3b45e411ab44ba4e2c23aaff3b55d14b8f177be92ba408f9cbf6da68ce2daa6ae36539091159b230b54fe82483e96cb6bb3a757e7d082be05d8d10142cda16c5e61650ca107051e740f1ef407dc25d8d35748ae3deb47b48300d833620ea50faad7890c2004db741677c7ec282cd6be350b4c20e368d0f0b5200cef967927ba9a569ad8d4d53520789cfe45b8340a365c1d0fac705e238d0a3ef41774b1f1c98af5b1bf1ffd9d1f9412f602ee20f04f267c07a60caedc64e0b8af8f4f7f4713df04e377c73076e31d6fc717f9dba593a9056c871150661055a8e26766327fa6d94506c09ee6dfda1b93cac8f6006f9d18a2b925049d7950189a2ec1ee90cd4175e31ed963797a5b55201f0ec49792c2f9e58e36a6d0dcfd1cd7166f0f76fffc5d4551cdb71b2cd7d2c9eb83ab900eb49eb4de34e68c58edebd962753ee653cebedbccb555086c8716580728fb4d5876215de2cd40bbce651e3648e5df5d1ccea8ad868ecb4cbb96fff70e2b0facb7c2fe0d5734ac7cffb3d517d120c9b347877afb5510e7b4bb9ca480feb5481d7895f1354e3d893dd8821d32c87247e4ed06228e2b21d267b7175edb5587b47cc6702f500fc8e81b6f3b1a234f4621ae189007f2fb62871bc22b1f9e4d1ba26e49a1e6c4053d0093cca8ee6a32f8a8b950b2b18044497293ae8a5d1788a90630089f03feeb507782cbb60dfe487092099b611d7d568f40c3b6f49239b90f891a1df5630aac738e34297f32f7e308e84e8601405dc4f6db2d985c74ac62fb68fb76df4f64a05202c3b86ae8422a46b710d23e56be02ad3cdcff6942cbb7c46781141fcc57d404d0b471838bf3e26e0f34fd8294feecf3c12b1c5c68bfa7ddef5ab86a62570b682adde59ca6aaff5537f4b9cfdf6b51d66d7b4d1810e69679d9c9b631be5c34647582e85e0a629202c9fe717966b191a44f6838ee900e4b5708fb1f4e013e9affcbbca193948a7a42d9bafe878d1cc58894db610ec031b2259f31c34caf52f3653c7fd7f11ebd509feb5ef4a9f167346c0009224a9ca496c7cc0d4fbb0e12c59ea5be1984ee5887a08098e4640e81b98d5b9dce3e2d34c9ee77aefb2327d1aaf2a6226d45844f9dc657d168840c022e982bb4264428f7120e3e28130ce793293599450449b8b47b9d2f018b88f611cf09ebf92caeda4147c1c9133ac4fe412a9884621d92990d6db0b5060529fd06d9ff25b0311fae40c96884b07fdece5aa8e9b20a0531b058efafc2407cfd2e838a8a438686b350d2be9f6001667831b013451e5bc11659ba32f8c9be4a61605dada060d7cc8bbf60a27a6561d288813201ee69ed4f70dc5c3cfabca47769bd0423fef3a45c2101a9c072074dde35ac396002d168fe9f0c5c2bb5c238e74f70b07a714956eae2ea413a9c107b265a3aa9d953f024dc83690481dc981ec5707d39d0d81ea38cf8a43485a742acbd59b3bc9e9a41aa100112222dc588cdc197cd11fe487c5b5a441690c63de24827ad04b19862b904ca6c048ebfe97dca61b3719d1852188172d00cd80323656dbc116e75e1dd10bb071de6bfc47db7ac4bc16bfc7e92875402b85a7c7cbe5eb01f9898cb10abee7aa85e10f99d19e1c370418cd6ea034fb5d0863b71286b112b3b4cb319dcc827a4dc70bc0b317a35e46270d7c3291b42101824e164bc498c303605c3045265d0b3f2a5bd5c6d7028fe658cbe323f75bb250f61311534d870bae01174be74924fc17242ef56a4aa98e5acf75fdf2373e38c4a237266b2cf3d93962d44ba81dbb8d218781a8aaaf9cb6c054936375ef175dc9aaafcd6d8099392657ba2374caa41830b7eb344b2e68505c3e6097f0942ad859426e32168a36c0628239fc86c249d89b7e8d561b74f46b8e5d043eaa5ce855c5a45ddc845d062eaf5c065c539358b5ce1b83307e9abc148ab1d34fc0ed09bf4193de1b04492a94abda6f3bd1a29dde59996a0d2333d7aa6aa461def846a4abf37543a11de5b961fbb233f4fbfb213dd4e3efe7879f1c6fcb2aa112f5735dd991e9c0cf117792115efee60cacd91d906e8d9a5ce90d2e5e3a5f22a58a50157e8ff7841de6b511c86f112446ce824dd45a7d05b0086d2515d1f6fe89bd1b6e14b5aef82e58554a47ab148a3319739fb297c123c9760bf615fabdf4ad3cab578c63424f7eb37ac4015e10e735ff69eb4a4007873fb60916f0d17610dfeda7f0698c3fb3282780e3b5da758b453556e256466f9a2609dfef4f8038fbc1b27a24f0dc06fdc2920ac2f68c22a754d8faa789202128444fc5c96489420d4ee37f0899fba18ca53a9b505d3c125152f3c96e4a35c31bc8ffce6d80ff5d8e503b336a4e0f75139e1704f193331e4a03417197af249dbe89ec9b4215f058c77eb18a601d810c5b291ff0bd2e7ea63e7f4ee936887a071297f390d9584fd47b5c2826ad32991ea299067ebc7b2f2e3385b45f82854cea91c3b838068310b41a4bacf88db7abd8cbf95e272b3a9689e2b3e712992ad44d9c055da3aac2be62d7193b2452a5ddc857f7125db888f949ebe5f1d9e7046b9af129589f25bc0f5b336319022c5b50a295e3bcf898ab46dc8218f4d8ffbbc9f58d5e4d0b127b57d365dc7b5aa421d36efb48d713e162c4af93937e1dbb0bd21ea74645fcb3607a7a1de0e100f0ab4dcf621312f277b94a74085d00722d439b7278c94cc27b0c4249f635f05edc7310667385478134b56014e0a2c53d4c1f4e594453595432a4c3359a0f62033f80bde0bee87d49a560cf99c0591953d52ad863d6dbb9b712c15d749890dd009eabeaf005a64e1743f18d576d85661ed6e61275e8e1403b485536fc93db0f4dc137fd16a8a9b797a012f1e5156d5a49cba62ddbfe35b24fd13872b507fded773eeee8342073294ead62893b581efa80186e431683c2c0ae8cd0311360181a7fd31188804b894363a7cad97e8cf07d2d199a9978c2a5446b9a26dfea9df356029a749f69abc0eaf6e299d1bb9bdc6c548e87dbd58a101da4c7708019f51ae8078fc8c22bf541484eb247a69eaa97e11369f888b24a6376939381b94a5f2195520f76243ca1618f53d5c67f6610ea4c331ce77e62d5a7d60cb11977fb6f9b9a2e450f5cee9292da93df008305061051a4897271610f2478f8993586e50a1d22076b6c690ff52b13a1228cbe2712fed34684f25374f46a86d711ccb98cb002ae31946deaf055ab8f28a051e4753deefd70d359b4b1c15867f4508130e3bc4b02129c8ca972f5e3e928672fca6268f1f941aeff29a6a614b15e7cb48b74a1c91178134cac7376819a42c348812d1b02a7d7afaa55df196a700d64dfd69899a2f5eebffe2c7bbb85803088bd31d6a7e204798450b8387b90d20ad3f336793ca4512871453e32f8962a27c7815048bc915c6a33b59a1f2d2ec94289bd14e45362ee9fa7050cc57bcf044eb5f5b1170d12fddcea486849e25a69e675cce489478d8951b567ff80a89207c3a84a010a93027c686b0002ed5e8650179e009b95d737feb5b452e99f0a17a13920ab431864e50feefa07280d015c1ac68a48fc490a4bdedd78aa54d4680c8c9eaf6499684d0497108a8bfc97cf503cc7b08d08fa1022a00b4bad24ff7aa6f90c9d0428b30b30f335f9282cae7a0a018828de1be1ff5a77990fa9d76fdfafa6c27cbc27ca048c36690f62719e50154a2c741366fbebdbd7cf2d2365f9ef273d295c21b58a8cf2592eeea5a046c090300970384c0f770b17fe11ad50f1f64313f4ac05ff1b1a011e4a18134ff11320b3942d63597794474358060b88b0501882806c5628ba6a9ccdf02535f5b364f5a39372d48cc56fb8e593330cc38c42e31c5201f7b98bca68772b76c72f5ac20870f7db7769b0666526885e46f67e4f1a9339b11e37c7964e634f0c92663401acc9da2c8285e0da8dd4464a9d98857bfdd118574eca4caf79df1537415d42ccc8428835e3c42b3797b27fb1bb729a5ed2fc3e5d95d89481ad6a8fc753a27e7c7338663c31133dcd8577157eef48040aa6dbd91cdae1d98c37ff018714e598dd936f8dcf43acf9a59114cb44981f461c4b688047a19e810de0d3d55ff2409640e231530f2c2c069aaa626d8b286d8fd4e75ad270a13b80f074d6c3f0e57b3654377789a7de600058e42681f79983e72cd3af4924242a4d63448fb51eeec962375e4d79eb4f443929415c68542ebbe7e13d466bf856b4c442fa8161fa118d7f1d98019f7a994693e58c54f85d21aa3ad11d9e05b9e6b0615a3e9d294901119d45bdda114f615baa7a7f1552e32003a5730e7831ad5dfaa665d2bf25a942214801afb91f7397f5503e80e65871abac011dc3aad7caa545ca9ff7b657663ddc912fda419d62f0dc220a5057ce4b4f354d5310baaa74f69bd4d6ce8c39e5945ca261bcfb6063303f41a8b9e90949b6b32d07cff7e2648270821e343e4e929d5487687f5a1428b801e45a6ba665a396bc1a4ccb1eba0f142f866f1aa4fed86da9a669332c7e2e4aa4b2760a5e9e25439026eb07fe7e03431ac0ae7d93324d0d7589723833c6fb01c9d618bd0fb349110ca130a08c16c313c526904ac974011360e804e42c7a87a9a08b47601ca22d085aac8dec1196cc84e495462a7fed167e11c1bd0614f97c169c0ca4d44efa7b56a534d5fe4fc9164b227c36a2cd022169989a2b7679c0d642da71cf989ba75b5de869e82f0d6031babd0181bb21e0883a17f96b3d02c5f55d9f34b960cf6d74dae27630fc82280e8b06247cfce19ef7b0c00a9e5a0a663a097cb31e257cce4c0bc3bed66538f8db19a92aa80e03099bc97cfa9cc99cddd7b5dfaa329a5ded2d7a2920a5c162c8c69c8f5fba93c4b04766ef610e336685778462252670bf48f00fa9288101911001ebee252abac0d4bb937755a4701c01959b2d066513e1c630873eb1d883c875c0b74ce99bad8d39cc18da1b3dc8109240fc2df9aff45b3bf6ddefbe67b69f637cd7eb759afcdeeadd92f34ff65f3bd97e699e32db8c2a91ad6d9194410e88b72ad9a112394e3d1b41dfbd55ed1ceb153da524a9509efd2049ef7e871ad22d9d87c77c960837357812fed71e78c31dc4870353fb2b6372b7ea21658269c4d9c47c7741c1983835bc43c2e2cd9b319824b29ee621e3df66259a05354185e27fb13eb56302ccf56b495a8f971af143b8102d3984c18486308e308b6bce251d2b1cf9c036da630fe1cf887638cb871cdb2dddb8ad0ab0566cbee6dfa5193af1bfa10285d34d2d71b43eb10bf802d1b433e4b4425877f0ba11a06074d4c827f3f1d7cba510a818a697013793ec8760e54dd4ce9aa38a53da57cd18ec81ba93ff389d57af0f11d1f1b717d0ff04fb444c955cf525b6809a276402c7db15ea402e8f0585bfa0d1cb44884f7479afd0566db02b4a5c0ed315f72aacc1fa0f972c555d093cde94f08261bf6bd5acd7ceb7cb40d610c55fb813ad309f90b48730c511134b1f16ec15e0145357649cea4e1559d4f35abc3c1dfb0f45f72291488aba4d25342bf5dd842a85e6d4f05d6d20b22c3596bc87ddd95b69d85a43c00dbda903a296497f9be6a8df78ddda52db43ca74211024757d9d22099f2cceb3de52cdb1a04b9b12ab71c669963e335e6b024680082c321e81820870f4c395e687da03ca4a4efce30236656379d7fe3f81e356c8014cff439bb8bc76f8f5e57ee6274a5178d7ddc9bf0e9de409fce4d7d70ddc4a72b37fc8830fa914990818b7139bf2ccc2e94263f1d827d7a81562600e70a6c53a00b431b27c3148e5059055d74719f43bc85f08d35e2194782c9337de564d631d567ac93ebc6cd2aa8c770a00aedcf41fa1137020dab0a9bb2abe86457d900da58d621a33a05037f963868ddd6f422fa0ee879ff12e2c684f9137c15cc5f8d0dba05fcf45cdd030843182372904ce8f121d0af22ef626e4b6acb60faf02ed40ebddb9c72e7f3bd7531735b85a1824dc5e0b82a7bd8df47030b2b5950ec512d18b60ed017f20daccc4349101f2058859e94b227a9416f9c8aabfd10c6fbb2acafceb5ef13085c2e1f8a860d144a00f97e37038e456503a0b5457d4001ace46184db7cc778c8932c2c54268c029ede2d148d6ce5ad68d3de3829538a5b01dd0c0d25233bd8ec27dfec8f18bb3b5637b4e3e6e97b8f81fc971ed8e4b0c416c865bfb3b2c755283185531f836b59aa0e06d61d75e1a4c9428aa0494b6eddfc409c63e2501448759297f345cf5052b62773a738c73b82de0fe8454ec484191de30f358d7a21d0ef3cd62de0a83429f078b19f8af3809be5a9ccd5c3d65c1d597f47a6b5588f4aaa5fd42d98c695f840e81176205e31abe10e5b34e2c3278d6d6c9849a1f17d9cef1c145b08da667f19cbd1e9e65ec358b2efaeff92aa0dd833db884b2f98d1e1d9c5cfb63dc3487023aeff8e9e020c1cc6fdf846c9eda4ffb7114d08ae2b1ec800eb3a8d9def449b454334cc703dfae9abed506b5c1c18f7b81fe3ed501655f2e8456c97c4385aa997397ba04a917f820c843fbebc04f7f576b391052e83052fe630050715f63fc67afb856eec659da4b0efeb155a7f362cdfe47f7aa0aab5fa60093acd369532506c63eef9f39aa83fded5a291f8d27dd84a051d39dc54e8d7509a7e1f586e8a38f75a86a927319647bd6a94f5abad95740c6c9d1ee58c44da86c726b76941607ff150a3aae904dae0d66f35c175026660f7683f7758776609d5e02f6e88e33ee636333ae12d28050f48a931678c9ed72fa36981d8bb2d02519e8480f17dd68f0ab01801ef88ad96c8c55651bfc9c4fecc4eba16261d115b1769f0055c87b7e91ed2b57dd16fa6e2167d92ef643e3e17f6b681d68b2bf0e80dd8e449c5e50696bc6d0601466bc9de2f9285e35edcf58d77a061a3661d6ddeb3f8f058b609fd1b3547f42b6c91fc777b4afcaee7f598b49fa6e5ab759d307d98cfdab6559998f7826d5a213b5b1038f15bd68bad5d95db4b5261b1c8ed137d64ee22442ea065bad02335d045239c3dd1487e0c9385272885fb7adfd0b21f68877171cc5aa459d16adf6db2f4a648235b192fe5d544da852293e93a138109a917df9ad2e52e7771ab436b6c59f29448541c530be8e2c2077becdd632267e8923de3815627fd71f757dd0356fdbf0a82c8a49eceaf88ebf5db00ee524cbd0ef95eb869dcd1a86c96428663d75ccd8974d95271ef104277592632a628f383917ca4c0b1c1868e7f70a35acb518a31a251b1e21c5fc654233d197e55338665ad1c679be1a6c2b991b6f15cbd546d6788b90b0c795852ba92d8e0525d15fcb10391d896e71aade21c195cfc4b4bbb2514ac323efe07b922c87b279da3484c8dba4eb4e2dd7709c73294bf78807a75afe6201cd742d2d985523af063f855e7276d92a2655155041567b2e8cbdca38cd6edda6ac87346135b7b34f3544475e7cea7babe18c3c9d9942aa0ce8605efa9891b73e3a9e22e817851479f3fc6a0d3d52d52a70f0e86e96ec7eeef64cda33c14a11792927011e8ba143fb1d6b665ea08beb65aeb7e328e65d66b3c8e6bcf16f59fc959de882f486ef105fd377a5aa4caab059a52c31f6e4b59f40c962f120046978cf3b7e26e078a2cbf20d340154e4d63a3c44bc96ebc2c9417c61c3449d691910a984003cf8890af02403935f0915264b2fb3350b3c43c61f741b8094b0b23f21c7dc65c531d434d9b79e43509fb56fa73d5c2321783a0e0233eeca33ef3799ff3998f4b1fa50b0383c1fb9caffd62aee2efb1eece7cfd2154e2b675f6adbaf6be4917c85620177679c246bcba34da0e4d59437d0496089d9c3f16b6114c6e54d884ea3a20647e711052e38226d4d7812354397352d6f41b98bfc7dca84003d5f5c10e55ce949c35bd6f0ccae68e089c50f9f1f32dbc4932735a263a3b89fc99247f44a0898aadc9309421088c71327b1a1f8dd9a334f4052ce85d6a69c3139f352ebf78e259337563aae49553fddd04180c75aa7ff3565b5a19d90752c2818fb6916bb501b506d87a0a26b75ddfe16c51d2e69055277cd9f885bff1d4aa5bc7b7d50d39df949986a7f74fb19159ee69aa40b1242e8aa174c38a5c68ec5c2b33964b3d57ba646ae2835342fd523d12817a18e0356a46572fa3710276dd30e4d8dd8b216bfb3ae407cd40a78f5e5c9edbe35f0875eb3c9239e72a09fcf5489247f2e2e841508ff50058146c6ed564904b533ad13e5f34458d35c409d03df19b622de105875be042c4c2625dc8c7e7c10482de352e3aed1c4dc9fc08225d7193f707da2019e8b8c13cd23119bb46afbfc8897fee750bfc961fe8c69ff171af14eee424e7abc58baeddb577c3a952c07a09273719e637094b4b1cf92f7914a240b11a1406dd424436a576112bbfdbc280f7e527c5afa72827b110694d477d501816f86d3340e5d247d08708c527d205e937aea18656d8831ff7eb5654b9ed91836c5b7ace11d4d3f9ac560c7ba68a12a1239b718dde00d5cad4df16aa5439f370b49529510f0de300377a12b052e909fde74fa0aed1ab257415743bb644316c5cd052c26cc2068318beb9066d427cd90e88326e2555092d5e928496b9a21e316350de8444be697f0e099de2a0e339988e92499b0ad303f750e892066d0974441e125cd8a464d09dd16dd5e675c637f30809343471aaec73cac11a17089080e814dcad1b33c2b26a4a580031b8b6fd7595730a3b0831f12073db85cd63d6bce791eecc37580215399c650d5194686666aa1b8433f3c618fcc76460db015813ed7a9739ae961fd6e6c41f7ab8818a42b3db14766b4c01353e65e3d8b4d41cf321da2c8384a154635ee8f369525435c1d1694cacaf5be909bdf985c80f2807f5e289d24089c67bfadd82c3f4ff33d9b12c1671f6ce59e3f49b2fde9bdd42dfa41b237308571fcd747961127d275441f4125e0a9653ba0eb919533ccd59cb6826625af9383866e87b8a0b68637399b47658e5eff18d0b4932fe6a3701e9646198674a550410020127739fc8782e8d0c3151871cde988c0a54d3be75db3cb11651c0e6a205bea52a97c433c16d0e8079977c79daca6257e3928600541af72c0e17e881860f6d5d79e9a172a61d1781d15f6c3c38d5d1a747d0e1edf33280692b99a3e555ac0245b6c4fffc61edaef938291f7c7eea3e3c174aee894e137c19f0a5d310a1f438bb26f13cc3cba20486116b1dc927cb7686270b09aba877166d80f7806aa547900c941256d901d35ddb4d8ae2d01a138c4f9a0095490ff43fdcd09bde6a164c6517d2205d99b72e39b77b9ccef94c2cc1dff98a5ae22af304bdff7cb1eac70bd2dca1ea751b34fa90c6383d99993155384e59f63e9f1e5399be9d0af24196702212f552987c72173fa04dcb27c82912879a265b6c8ae37adb274564c23ab1cc4ded9af082157f503ae3529934f2af7b95f7dfb071576fd07ea84925bcc740e06548bc71d6a3cb8c5a95a9b41cca9d8873d119814c73e7d20c8e12da654375d275645dbd80f08f33ebff4f49fe2eebb1ae98c3ba576b12c121d6950864db467ee968940d40dac19168957662609241c65f478ef9b98cf11619f791a474edd3c6f6b116df0def512164324da12fa3a9c1caaff2f40c54d10a94796054a7c2bceaa3c47b302c9a0b1ea9e69fc9e837024408050609f51985fd3952594cf65ca4c28295c0830c28242ee555140800757581b0ea5626d6311db66ecc1de1ad7f2abc6861c10f20ff12c345238e5dbe56d22198792f9cfb36a1b5a8baa66a60d414f680dd04215f065a2958d4d8bd475f6e70cd9060b38968a46899e5b086121e9c2a7da5f51b04a0a24687f9e0ee8dacd9d399eb2f051267f924adeea8100d3dc820ad055b194854c2ac986a69b3c8e62af4ed1b21378f6c6a1100e3f417d5aa987fdb3900cb4310ef7a085014d4522749b12c6b800190f56e4c31132fce475463dc39c47955d496b95eb43d549315a3258952d243b9d13cbb7082e5faaba57af4e4d9fafdfc745639f4246853fd39281a3b069ae6983c39a31e2d330d75b3ff6ae067c55077b16e2500c081abb01bffddb4c8370dc00b22d9b84915221e40d7849fa70c947a8dac446a09c9a4a03bb0a09bc89397d6e03bd9b35634ed090edfb36b30de5f0481d6048d1ef6abb4c26d4e10bc3d9f3e7492a893b11d49cb9031d04a87e296919264c3f8ec6bbecd4efad8d338bf318b4bca321f754a11e387183955f722e93fe8392d436af9a015e5e6e44676a6c8071fcbf9dc3368271538e684fbd18a5b528759405dad4b300eb4685ecc1d9eeaa2d1630e95e3ef53fe374e1326fe294a1c9ee75813772314793c6319ffa7c43020804e6996e03d5136adfc764bf882494310c48cadd757ad412d1ab64d54445ff98d021a73a5bfea4efc26de09664765ec394a2a97bb94b47376da50527a270a62cf307b1e62083b645a6dd55f829c1463400896fba64cadfadf4bb7c172a9c752d62476962b7b762d2765c740111997263c5a40f3acc08d613c9a0de01cb54cf51593b6cec22cc3b788d39f27c96ec974647cc8b559ed09aae59702c6c83203914e47fed70860d3002ec7e03680080aee2e1457f759fb2311d5ae96a66501efd8211fe199277e415e04b70bab1927d31631259d9ade75c48f0c4203e60efedf8135d958baa87df46da77e6532cda8b3bcd3c9b5ca102228775d14a0fdc88231a877fd5cf0689b7091089db80e10ed138b52758bf8d416d0d9f1748f7d1fb59592e193a8289ed5c2800003bc22ae3cea6a39425c6d7da03f468734ae6d14aa7480204d01de93837c99053901e3c9456683da3657b29a442bbe56ce4b91d58af6d1192aca4a67900b610ecf2e51839e409baaa80a4db40c48d22dcf5864bec2e8700b0b12669b93bfd69d01d6b3d41f58f0beb6bbd4158ab50d7497c70cb1d767745dca3a0437acf93ca5a9739a618addc4f51d73ce13b1de3a74aad5b0d0ba0d0c80cdcd6db48ef30205665cd1ef1d125f285261a8ed7c2749e4dcd00499d0313ee447f360c02d87ac538ef122ebeebd6e6b3360ecac37881dfe0bb9427d2b1cdfdefade4708a803489a37ea93fb670ae18ea1a44a5032718f1fd7afa737cc581ff57adfeefe568247c1832f8d826013506c865718f4af7c41dcd523da6e3c79d5fc3ff5c7d76241389a0649bf1655eed6a0b523425fb82da8e68592e42988b8fbb5ffa203ff5848f6deea367fd8cf8a23e7d262d43de6a2b25f645731d7d8b1b2851700b53853ce88b6fac2bbab9de6ac4b09478a84dd113aaf7d0862bed21f338cb9f076740fd0af9b40e14d96b583e3a2d3ae044280416f8fbb1759eafa39290acc6360d8d60eca3c0ca92bc858aa8f7adae866ce6ff063aec5fbe702dbedca1c1ff276d6943f502d5213610a727cdad5780983b5f05df515a521e9686bf6752027d67d76bdf1c4f7c3e2a0406d710c91c360310137b925176caa8e4e00fae985141693b0c6ac2fa44368701cdda6f0b636bf7035f06c0d8cb9072f3b8744ebb5c3d171920e57343b12df218b26921afadc685ac0c93a70af9af3fd88aae3b1cece07e874ebb2621b47ef96945f255b8e8f6093c4b16187c1e743eb8e32eb8577570cf6cc2e8757c38e7b4f22d8f3ca75500b03c11fa1ff56726d05b32dac32f49ad4c2745c2ffa0897659432a68d4ecf86dfdb3f0305c06c50bb4352330e88aed241587e786b940effa8c114af047aed0f634c47e153163184991657cd6a6c3a80204cff2397c16055a29ec1e6320ac8fe7f01ccb244aae5d8a5cff28d309ffdabc115ea16093fee341befae1d3a64b08b966f5699d03fe5fe37cd0e293112b5fc9cde97b3a30735f49519fb395244d347ed818da27f9243d2abe9474805a7484003c0b9d70d4312665a0a816812f1b6a0c4c4e3928127637f0d3db61bc53071cc8848653fcbc53fa150f943790ea244ac4267fc163a7f6ee778ebb0d8a80dbe86f6486a75b239177216efcd5e1220ced4205918c5b9c924a73645b2828c50c03be0defb616d60587560dbba962fcb05610bcae06b64da5541c888411cce84ade98b687729b9c8690d341a14949640bff9cf367e0b600350fa3a06aa9357862be1fbbaf7fb304c7116d58b9e1fefb9214f63e7736b276fcbab6631f0045fc6d0fb6060a4e82ac5e549fbc2b31a0cde5d40344f52a2ea472be40563aabf2296ddb384411354ba92433aaa704e1c0c041204010c522e095199400b0b2d7f9292b50ceb6eb277d6e701a645848306f7819c1f10c17e581dda6e85f461c9ef9f5792cc011cfc1528172dc0626280086aa798c0bbd9a35b07141155f0b98f424d7e1e0a95d8a355e3cae95e56575f93f28e691d2269b20fe09c7baee3ee7c8a7bec372861846e1d98c6b174299a02178a4578823a0cee91e123bb8ba4fe9b5bd1564224d79f54781e0b8d4f3f2ee396a1d3088882dba29ee299e1d21c40203bec3e6c5801e3bd47b3c6a7264bc025bac52c71e214aab9ae73e843d6ab6304d6a44825e2ca311baac6a2ea354aed28565a63cd2a4b6fe59e07122bab21ce653e16c4b27846332b6f775ac2fc424d77b58d9fd4a6446383dc71d8e09d9ba56667c1e4f9532ea240908e1ccd94f40d7a51fceb2d18fe8461988da30696568d21328eed225e3a49c153563e3c8d9437aac8182ecaed138507ade4c6cf7790997ec4691f095504f95294145960096ac30d379686bb4f25e38ae120abf4ca2a7e4acab2eb1374c4d66baf747d52726a18ef1d99d5d20940f459ac328ab2c0c533700af7005b8817d97109e2b944839f4a810cf06c0fa30f94d7b3927eeff42c347b73335b5a19ee4ece453131c1a36532dabe941140375829e3d1c59df2e034e37b84cb683d6889ad724250388af2ab76c384bba480b409b17d68095c4b2d934d4a2a091b8864ce890a797778bde0f7adb34c2ba957b2ba21b42e7dcebe62b2ccbb837dd262b5942aa43806b524ee342c50a5334e5d329bab8120b8be23259a42ecc5bba5556bfa9293ff7f3e90b4a63d297b970eaf55747e84883d01731a5981d5d7e5d55644ec11b3d2151a37c7f24c8e57f9aa308c1e608628e837e13bbef3f4b7978e945b40f69594765a7537e69f63c09d4b854c6291a6c505b01093fb7136695e97585cbb3576771b2b84395346a6ac2ea117b5f0404e5bd0cc8ee7e479d2b1887dec18e1837e29953a118759c460566526b7ef88a1499e5a541792724ebf863574c2bd8c66ce6a526b8f03dd803a6d268cba2cc9c0765f60551518a35b60780c0265a1395aa6af41d37e7addfc4d03894682ab08e1de4c5d1ce3d02f02cf21a08790e001000c1aecda604059346e4214283fc54958bf822464e2db208459c974f53c102a36a0d5d6c18e345e0dd201491e944419350327a11f1d852758ab16c4672191a9df9c65992e2868497c077af24ce411026f4dba1efa92d8dbb36155074f272b314e905616026ff83f4265daf57174b93974fb327b03e65c79ae4ec12df546360bec01c1a255819d5b88bdab48ca067e4a812ac9c4a21f00eb23fdb5d4d1d3c239ea6fcaac8416eea78dd5ce5ab22df4da91ceab0d075982c29339ed1cfef4cacf6cc95d832bef565c6e41ba82c944e11f12ef402526a5976ce83302770131c55cb0156fcb97647d30252ad0dd8a9537669145a03a1eedfda17dd5876142ff7b2854d405feeb7f172f83ded09edb8d4e0720a0ee47229f70f9f923e4c85610d26686c73adb9f509361a67d616fd9dd103e7ca7e200ce4e103cad51372150a73335b7623448f33a6981f858eb000d386836917a356b5a2613a30745070e318c808580149194ec37eebc6ebea2fd492071a3b8a2236ff604351f750e0d64d75a50bf2c05738c1fcad2fb8720b29e138aa38047dc0f0133e7c795be76697825bc0ed33a3bb28b1e87f7c85918423e182b63e4a8312af160b559cadd76631fd08587429ddae5dacd5995ccfcfefdb3fb3e7d8782f793a21e37319c10930b8fb4d951215c33b5abcbfdd94b55524b7cb1483266f47a4adeb274adf13415791db282512429a60245c2fdf27c40a0c28f2df911b54f917b6a8d473b9bcfaee978cecfd9c6fbc09b8aa517d525ab1d9f6a35b9bf946fe909db051dbaa6029f8178e052bee3e699a570a248282e650f3a4531623bb71cc036e94e0056fcf96c34b0d7715b2466b43434c274a03d2b97107123e8fdb38835572c4cd390f26072fb6984be8f7ff8368d98c81e4052deb6d07a3fa14a3835589b7495184e4e6adf10a43c8d9f964cfbf967f71e1986548cc85ea1a9f300c87077ae7cea4929df51c9db187b6e8ca7f14a999a6c8004773fadc4b0c0e0e6705888ed0cccd8b977404e61977d060aeb8ce8014e810b9aacd234a36b10febf195308dc0bd2285bf2a4370a373d0b6d65864c4946d1e0c15022fdf7572a5429b840f2fe0a9f60e63acbee6a83707ec50857e182d0e77835729efc42b1aeeae8b4b7c48cce2d4fdec1a210f817b42e7d2063f6077a5f82a01e908cd70129c7deaebacff261da55ce1be2c475830ff1cb5ed68301ff4e80e4066621c3fd406f83fa43d4353a044a727ea7c90d7bc00b05d626fcb912a49f3150822b1958916a2a157bedf3c4a8c59160c48bbdb1db1acfd784732e901cd72e07e4b3eaa287f73a05be3bf359e8a2cd3db803a0ca297b337e42ae900c80080785e6045a689bd0ef38f9ba7cfc1e10eb54f966dad615efb7394b98e1061a26b6320185e030a4f373848c51ccfd359285eac2e12f9ae08549e0bee8c9075b939a5ebf0d70d59d27a049329c4172847789b6f7b6c625ca00161a32b6a178cc0e914a1c4d8c22df384e9d157c563734e6470b879e1aef75194e115d841bed04359826d977daf70db14cec4c7a45ca9da57349b3a1764d1c29630b231777f3c7c7ff147725be365ac6c0fc1792c298c09020c59086e748eeb6430e35025b193c2193fabf16f7d3cbae3fbf62040c0957d134dbe6607ae1d43d0653283ac8516285ec6d8612cd217a28b48d27bee104c1c5262c163a6f2d34410a9fa6c25a1c2c28571e5132b455b5088f322541583ead35503dd26242fff300fb0bb844438d5da8d0056e4601aa13e8f3f205270f5b80c20a76678ba12ba39d8995f8f833852441cdf5efee7ae485498513c61629e9b38381143812963843242e98f242c1da484d0c6cc655dd450f53d77223e67fa46d2802eb075e2bacf16893cdd993fed5972cf2c4d4ebfb04b7091b0f716fadb5e434894f3984efe4002aa6d38ca1e5f3302bd398c649a9ee1deeaa43261524fe9084a1385d6ad1fb901116572aae144ce83ebfdbfe18f36845f48d58743711c503bd1be33e67822338324f8b5ed4bdb0a5ee225724fa8bc748d8428efdfade6d6a8475fb46e06df5b931a42b05f8f30424dc03b62cfdebf3ab3074891a0e4506b9a40066fa681f03745c07b170bb07fc835e90bdc144f0f6f4281d48cd1e59cfb62ea7ee6835868c34b2afb4992cc41ca86100f1050971269483152c5e486984c7f9e7833b7f95a2e3ece3aa5fe5ca284a5270075f2cc0c55bf86c034b42dc011c725682710b74734736188b0084a731ee7cf3dece0d819710dac09cf3dac2f808a19b147cad2d2498ccd068124a9cd2ef58ac23759c68736256bcfe6190afc978f508a7c0a691c4e9a944b576ad5f0400720508f497538c5bb945467a882b0e3199fc311a7420a409554951b9805e7d63826a6f899ad8797b1d46ae59df10dda61a7c08e067ffc7b1c00db7f44a5cae356789e997dd77dc99eee48df2f7714691508b4281957a436989420b731ad609c8a9fb21bfc600dc311a618bde38c96c3f6c80d279a2bc83222ba66626c978517f42dd580a31fa19748a63135596a01ab5fd63a956929a43c4db182e266cec412168858bdb0b4f0470119773c357c16b003a04b9918240f00c13dfc5640066920c3740dc7e8ffe0980ea4661ca80abe10171be02d9b4d74aba785d4bbdb9355f18c8477084be84440390fb5cb8d3d1cbef3154c1a394f49731bf3b3a69334628703e0cf3b5d36f773f15d84abdefeb67f3be12c713489eee3d94f3007d5ba7e55913d96f767d0cfa56748e9b75c987a593bc6b39e611c79cb6fc958568aa2d01908f236eb0043db1fb663ce5484af119fd596ada0bad69a68f65b72a5c21190b288db9b684abf1cfc13ecda5c08174474fbe4be1db86eeaefe3422767cf470c39d6d0a75074f51da20c45ae08257b9c5dab08e08177604c21e37465a54fe37dbf7108b5ddd6a83b02fddbcda1955b04b6ccfb230b4c1cb1a462091b3ce483d6a260d5615405e887866a846824e7e00357c4161738546390051475f710941543b033c03516bbf70252de2d99947f3132ff59804a8dc00d4785028f1987e40f6b60492f089b503016778eade38a1880aa3a55bcb54273e0e242fb83c52b7cc9d888ffdf180b525db01bbc8b01f382c5ccc9e6c3e465014b08f69b112b8d32fea6f89c5395ccdf51228d78911323b2f2010500be199dea51bb882c8a139d941875453f6095799f9e9a34e98d10f54eda7daa90b46b835eddfc0d0eac4088bc75cd3f2a6cead1551fc5198873ccc8d8e170d4b1f592f175f0f6f95e5c0dcf827f0d478bf2deeb8da1e31b39229cbdbfc113402e83346394c6483ecfcd0b7b968665d691efcbffa6d5c678a40c5c0e8576dd71613282c6e74284c2785b16ddb76323913b663ec2e9e78979b6dad38006e2bf8f2c693fa159a10251213d8b4409da36fe7b6693f9c6bef0179f4271ec1e65edf630e0b8661d6a51592750625e5858842cf263ca4c0db5e5e9e6707bd715e6074c3965cb317b56357e4c3a0656575c888eb78b95c244d09102d56482e922f21c50d57f456b6479624314fb464fa272da9a5f6a42edc4ff601ee2540e1b4fe07595dd1eb064150a799c2148341f0c52c60a4362e135e08b1f1e809561cec75a18e8dc57b43e80df959da7eaef062f05f2590da821787eb96c6bb041290c3297b07dacf4452ef38b798d3eef1c026d2513c1c574f5944730f4a4f980c22f50e8f9beadd277ca3d811246d14c3183621e9b6c98382725c80cc7f63f4439b5c7ddddcc641749f6713afcdc25892fe1c5daeac0a29b688ce7b8b50a818097c16caf357acd4575ef159cf0a25f28cc99acbe7b278870a35ab61dea9b2d5b88af622153c9f85d737f1d7cde8b5c9b62347ad8b75f379a1fefc4df5f8d6d4fc9dc4fd2074b9b12c4d626542abdf39aa100cf3c45379fc5edba4a763bfe6bf9615ddabb5d10216edf383b4a6426e769fe87364e3c26e9c19148e1ac6468b02a8963ed384623dd653abcdb2e683f9c95951d36f3608fcdf9d32cb7c84b74959380b6f56b647439de5034e64417763c2cbcc07dafe42675996db217585a835ac3f0b0b4a9014b7e0af2efd223063c1bd144e0362ebe976c94a35ed575664d2399ba2122c33f0f062962e2f4f2a47197ea3d9dead4568496970b2207b0e7da3921fded8af3e27270f85511e1eac864f9e7265a38532e893ef470dc4aa82854cbd75b8550b0f8764cc097d7415fb8ff885c494594c913eea9bac5e2d0dbbf2f90f4a6331ec0ddac9809a63f9d529f37d7f64b16ac5fa9f1ab0110b7fd7d8fcb8f6e63d5f63adb7db5d3acb7488a58e964fd032fb7884d53584fa34aadf19651ee47b1190886bbd8cb06c33584adfac195ae0073419cdbb6efb14d90fb0c180af715ebca8ddd5cd7ee885ebbd4efaf9eb5d5711e7d021ea7833c185191b7edf99cd7ee190645cbbfa191d0da565d73c1ca6a0c55f0387c263536822c665f4a3457ce2b078a8aed02324746ecaa177202641c07bd9bbf2380f1419423c58790a75c4e26fc3f658bd3f1cd247a42e2e8b04e2e0fa3420bb656f8450f90c0842154ab4c0bddf7a9229c82bc015191719701ecab3c8227c4c78039c411d6e32ff3bcca6413c0d5600f2e02cb05c842ed9adee6d4c463defdc5f43505cbe4b1b32c2c6a37915eefe9d606046f4a0c0a8919d8fc2bb8c44c21949691bf4e39907ea44c64368d8a66cf38e8ba520ca05db74779dabb2b487c1d1c95f7ff81e4bf971ddf36eb2624b6bb3a45e5c6c6b88012eb3527a6cf7046554a3fe441506af34663a71ce294d53a554c1b9fb7b38d93837b572e24cf967ec71ba4adc512b0c8546f587b162c6fe40c62baa62d0eb17d8d3e141f4131849b14cb2dc842142677a353085d9996d88f5dd969bb40a370d76985ca4bea251a27600b57c74b6fa1f99614d2aa068dfe97fdd2edf6d4f098acd503ba8d255c29f608f6956cb33b6ed9d784a06200c5d0c04876c80fff3e606f0336252e4713b9656db83591ab21cd304744f4340d0bc582c2cc0e7e36dfabcb0d8c30e1b270262c18558292367d1d7631f80b86e8b681c59fee8401b62e8ffa32470b048b3bd9146834582a2187316010005621ced7cf15a0c2d949a47dd4648cf45532528f3057a41e8abf58acd5973d1c82bc181e38ccee64271a4b3ce6e841faa12c1e501555bb0bb67e40699c6b2b4b0f7f919921197c97487c6fa2788d36140dbe060ef125a5cd08336046aefed450f4add073b9c0c8a7c3711b5ac0b8aae1cb7cc4c3a58039af30a8e02617ee18217d659d6eb7fcd61c1cd899e660fe98d942cf002ac777078620911c2206f1a88dba9f9da87e37e9f87338d009872c0a9923ebf21ae580845c4a755a7a1a7e6ec8b8de114c08a78c9de8d33c912150ec6b837e5ec1645f516ec47ed2fa4465226907858c45d74a27cb3710a498dda5b04fde806e61bdf95d97a22aaea98532b32ed3e608d3ca0f87dba246e3a7a020343dcbcb9e78036e1c6072a8eb3e4ea67738b6f0e8b4a2001154091b0cb8a300330067775fdb24eb69c2a5f562463e646d76ecf2b4b744c74ee8fa700aca0efb9e0336d86f8f1c7e0534a089f0cd16d30c83bd965c6eaaf9f756bcc14369e477c6d0495d3fb22b8d9c750dfb11f4182db83f128f9ca5169393ce1d0394d2f0ddbfb4db806f0a3ce56828198925b7a300b858e96ab9310e14d41eed64a7f14b4a533f24394913cb068136f2daf1dddd33227d334003990cdfd40d95d1817f24f3535f6e1bbe4dcbf2a64a923cd6b13c2123901cc2da652c46c77807dd745e7cb9ac223df408f18b33915d0e01a91a0c56f8b46f460cb8cbe19a514fac1fe05f1cdfb9d6ab1062f3122b992188f9a53f56c56445b2ffb6c5e9c976633d20146e73c70d4b1aae093744f91ea3febf1749cae053f723c24606d4a1dab1cb8b5cc13d1e89fa59756f9032c6961f6cb5d2298ab7e20c36710fd40038b5dbcce9b6ef049ec2c8651c0f07a9ef9c4470c81bee036d413e18e3aa8b3dbdb07c1287c6f9b369ec090e0a2e7b2cc2397184ebe0e92f15084298fc993d0f12b0bf302cd72da3350e9d8526303ec97f74939cc9cf70de607e0bc44d863cc36af6baa5f3a849eea92078bbccce2b0dd73bda5bf2e6a0f23892444ec7f2e8996dc8cc0003332b3827771ae4026181a9f3df3b3666068e9160d6a2192036c0b9666199c79b0860f744d23ae9ab433602e0b926e01dd3415abb92471222a85bd8d47b55e4d5d2b0d65aabf2453d902312720d22e88c07abdc186d832df3a3ddc3b23e512507b9e19f6c9fff3685b6cf8fd94ee7cc13bacaa9ec8dfffc6290678ce0066588e763b4a1c354eb97a18daf247b2a34bd0dd9f598380b9d04ce7cbad5c116bc7bde4ea1a0e3446519c034483e79ec19a1ea5c88d6fe4f201781a3a00c460419bc6c7df876f1dadaa4db78b3cd581baf051a2f2378f9acdd6041311632680da2b5ebf07577b4859b83c3ffbc3c738349a8ad70260a4176e1f2bd706d2b50b7b7dac4412ae870217605410528b1e6e84be64f9942840dd46c3899a7ce38ff78c477cec0da437505aba9edd96560b62c4d64e6f8554935cb232b024170b97e24d40e567f5ea6011a72bad5d867055733347c3027abcd908fadd86bd49037fab7afd2b639b4088ace7c8190fa29ec04c57f162ddefce70d61a50e7f646f80cd8383571b72a54801fe73cca31e020008049b059ca9e9fd3ed09bed6bded75da9edee8210e33e07a0fb41d37d743950ffed01b0f9c4968788f1751f9cf1e808c608045f1989a8ab897320e538434bddff56494421d1ded22398bed8f194e6d8f0920fb41ba0c78304138e9e685e2632b5f962b185b3168a491b85f79ef117475896f911b74451b4817a2b80032776d38e78d70e0170601c4a88d0237eef5457c346ee3f9a3eda639af4051022d17a7a26c8f63cb87ff98b82727fcc406c5890bd3fbc2e11efcdc66671962bd2a5a85bbd1e552903a497fe62c07d7e97f9576a4e656462465ea2638c9b5c82394632477aa4f0c3be2770e14e151df678a7b209e4ea45e231392a8d2c58fb43f99d868521f590575a6fe8b9606abfcb0b44a72381553430d2d2cc3268d33ad1eeec75f3357ae8b71c850bd8ffc12ee428cd2227962e7d0283e7ae70ee7f3ccbee3f44f686975267c075566c7e18980f2b0864dde2004501e14b53eacbc4e356cb685443f73f9f0e2f05d6ef1fa945135c9267b4e60d16bf2d13a5e9aedf98ad4b32cc25c883525af21cd97527d91c1049058891ec92048c2e47799f5e30b911da9f4317790b10ec266b56e26c3392ad866c9cd863bdcfece70ead10e5a365c8b8c4c66faf23d8268e7860be01065d34abdd6590b131cb374c1b5e3d9a6b06d5aa62f32c726d9939213db5f27ff73a9eed07745c63302500ff9816ed5e7d7cba1c90c003f4bfc46f8b5d5f76f2311cd3be5842290e0397e81dfd0262c5114f2ff06ff44007c506d72ffc265d0e5b092f0050c642a98197db44f3add294f56cf6c2216d208d9ce8dce016f9d08d7c8e3687c5e46e150e6ae00bc19ff127212e63ba15a63dd036b0061b64640622ae12cb274b1d57a29041607317b6972625cda94ffa9b364ec5de8e54c821a58c29d511c9a424311149c6f833a35a52b88690118782c55327f63147413fe967890fb5a5a0e508ea882d49ce1861f49976140df8192da3ea3000bf79a953fccc4d89128a4909ef4d8198cd80561909845e0380ab1a40cf877727fb9a96474632ef2c8cbe368e5ad9d59db0269a6e44910525b0001b27724513acca42dcfaf6b2a2f440b0814bda0423389e8ffd605d5cbb813eb3356452d6fce83326413d0ae22f398ba66852730ec7023fe65334831b8001297ce1141fa90f02d0f8dd0b775bbac77e248e14478db7b446ae32618cdb714e6814ed9585db0a96fd5d33f0cfdf704e1223ccff8b47304622b246a25f06508bd000b9487ad44177b59cfcdf912e26bdc19159f730cebdb048746269ce1088792b0519c5f657e34cf177a13363c31f824bad6665df627586da470956c9a8b332e6ee3c0b8da159e0f92f18a88d5f5d8563cc33f2cd49a5012afe7b55c67b3f8df61f5d65846f97255af753014ff1fc6d07a108dff1ca6703df834b6cf80b652f1354845782c1b5d61dcc11f61609b1e4f4bec1d7b1e7083ae87d6465d70f6de501cdf9b998bd09f632f7f9388efb1a1f5a39912b689498419621eb0a6ad23b1ad33da7d00d0f39094d6592654a61979d046f42dab6f429edc757e1513f969fb83745884a769ba4af9804f5edc0be06972a37829cd285e73df8b50880e1e1d6a5896a64f29210fcb9695356fb49f8abf305de96fd1a256719be12c2276813e94786da4112128ab01d83345641e46978fb142fcbc5602ac2f9bf6737b631e4691d118380afc73cfc2043701fcf302bac962895830542a4a7305a8ab8f996ce5d48f24022cda533240713e8c753741a6c2f28f867c53f35e61a067ac016874f0c3338702c8fdc1c11c082656e115b0e7e7ddf934393fb9608e85b06d0ceb81beb5dd88f592dd8db46e42427624082b09dc08381846dff0cbcb7595be50eae2e2d272875b6e7698e5e660b7de49f40ca60376f3e88d25a22a88ded483e80d48075a13f4e1339b616b1b8cf4e13dd27a86eb41dc063e3ba44032bd75abc2263039387cdde1eb99cd39a12a3d13b2d263f40c3d95bde1d029bd095d57b34b3743597623c5a1d4bac316767ba74754f3f4883ac8f6113d6a253cd46a1c54c7468fa8d3eb7ec6e8d16844a5d123ea6d04536f237da4aae2cc7597c49f9f34ba21ec2535bb2a98baabd233d6a93b2b4dd37ca8b779ebb06d98b71edb869ddbc85b9f6d83bc75496f2c7ae30305dcdf2542c4197931d43de02e0f763b2f86ba0f1368363fbc18ea3d4ca0d9f427d06ce6e5b3e3916f36fdec8c600abed9cce7f683a94b695dcf8ba13e6d8fa4ee9cbc18ead13a9bca369b764f30f5b90527b5b2775402cdc6f9bc18ead2fb3b1c71535e0c756861acb630d63ca34e1786bed94c972e0cbd303b4c9f40b399ce83b391ee6ca4cf0b63bd0f2f8c04faf03cb853af6cb389d6d9f4dd1f8e222dcd608523fa53942349acb7347ca058c1cda70849e01cb18b8f86883cbcb4ad67c8b4d120fde9e6b41b1f0d111d1bf996e87bbb3ef070a4f50c79488f5e0c7c91d633c8f3009237be182bde9a935b8f4477b86990e939f1ce1b1d74563f2ba8b74c04c3a905a1dea6c93d4ac2496f7644b075d9da86ba04a6dacd1fa0a74016b39908c63ed9ac4304b76a776e53dfda867a8910a92fd204f4d6336041a8eacd5a8756beda6673513c298a9aa669a228ea5d7210091428f0d4eec6b7dbb3924be8a9ddb90d9d3613c1f3ad6da0974893eb449ac8d3cfc30b043ae8e6f40502c9ebf292d4369bb60d4ff7a46abea21a94dae2d88906a1ac792a87eaf3e6f42b6949b3834c6fd2299b894c37eb58360778e9359d63ae51a9372a52d41dd20f260787a7bb67bd0804900a7ad23bc4efe5bc03e92b39d705d97ae0a0c4a767dc1bce2209dc7cb27003cb809b0f165bc08d0299b0bbb5a665fb48c10de3d0022b7aa6f95871822f1c943ce9191877254f7ab418482ba4b0a207b1499502777ad0c00ee6d4e673840d9c27ee9e32708f1825b0c970c220d77bef411ada0e691afa10f77defb92adedfbcae392f1fbd9910529cebbae8b4104bdb7a54d94859e9dd4303de883dd33ad3b5183d75b41a226e8702cef676faf62aea19d0416fd7d16a886fdfd16a08bdb51e7854001919a61a15bed7aa60889db52ea58c969a7025e190c5d16290557a55551662eb593715c4d29b82a36d5cc938a5adb9c77bad8696e7e357b187fedaa3c16e65b9ad4771aa51592e2f2f7a2341a0d75a0c2cb67baac8b61e490b71c83eab8f12c499a5148786a5bb043ba54b766e83dd223d6c9ad4aade9a8e55d42f3d750bfc4e4d526b31e0349ce7cdefd5e3cd4f021d3eebf0810e290e08f4466f4056606baa51250c7128a5015b1063c966196c411863f567631178c9c14fef5d713edea7c33741a18114076ffe4107fef4480743a8037bf4da757b577bcf38d0a345906f5400e76ebfdbbd7e53bb9eae7bcd93facee9e8517bbe00eec307dfcb1009778f9716433b6cf73639284536996a553be0e92ebae7262b44064f1d90799794cdc7148e671d9812bde5d467cfbc3c3be5ee54f3a6ec4d6628653870bca6a71e1e5e82bda65fec8bd5d1a37e8b6d18d4fe3c8bad56d4a3ecf5fdd1a3c1de13cdec18770a7aeb99eba1ccbe47aec61ec9607721c85eb361d7f05da462bc43243cbd8706bcf1c61b78a2a40ec860e9e6dc2ee2409214457cef2d63355b06b5a23744dc5a0c570b96a7cf2f584a1dafd65b8c7533112cdf2a667963c152ba19c678f36c378bf2cb75b38ecf9b4738577a7301b0bc597e6a79e535fd9255ea175a60da8c50438ee71685be651a309574bad95934070b4ff98ae2b09cfea56774e086a3611c6ff00afce9191c3792da971eb5a8c43db1fe1c6b2b79346e8a7bf268dccf8e5b37bbe0ec944c4ec9bc3a4e9fb45c3eb1a6699a1a364d969506ce3c3eb19b33fd350dafb81fa2cf4a62b3b51c63655554895c44527429a508dd68810d92d112e43a7d4b6edcf283a30064720c96381a4d7d01d99e17d397b7654e2ef3e64c6f892edd325f1fcd059c1157b1acba54f3f44a9b795cd18511fd7a743f8fa677787cc7cd2e54bda4e3feec78cbfdc13d0fc9703fe4e7bd743cc31f7c9d85e594e2c8cf9b33dff2292f3785c7cd2ed8b3fb7a73dc21bda2d5338875dc1c25c5a1cfa9ea2d3ac56197ba53b29bef9448e76ba4e8cd755d957ab09ca4098b26c4a2960baf4032606c8ebfd8eb2ef685b3d8869dcd2e2ced028fc6197934bdf3627a26bbe0dcaa54b7e83492e36ecaa3e99ede7934177037bbd4eae61aaf75e7dda157de1ddca73b24bae3e6cc1d973de115f7233b9ce3d39bfb519d8f7ece81e575bcc7a800320dc65945add500f38c03cbbfb41a583e85c880af672132c89b339fe392deecdcf439e96beb10e98e0bb3e3d7a77a8147e394b8b8744fad5570532132e0f82c44062c9dc7b30cbef2f51cf6a5c5109f23e5f844834c1c5f1f0d8ee694c8f7b300622c96cf55de2c44064ccfe366193c3925b8ff02bce27e44faebba446f2e39a569ce39e777e4784dbbf98327e93acefb757530b519ca80e5e7a4d3e688104fab83a51019708e0baf381fd3715cb22f3a7a46bae8b8fc057a06bb3cbcd2647aa6e5f232f4cccbe569e819eaf210703f2ee7a32f1f819ec92ebf43cfd4cb53a067aacb2fa0674433eef20fc0a1d5c0727920ad0698cb3bf8831bc57175b8b86018865171b13bf4a8b760b114ae15d3e79602f71b8b9d7066592cc4b2d51c9fee013c2b9b1dbde41dbdb96e8e539b4d6d08c4b23abdc9aeabf43d337a7a294ead6f7a435f2d0820a67708c4f29985584e93c53e5c33db4e7ad4f3fd6e8266118b6d9c054e1022892ec0200b2f20c3055250c20424b46841141610e1081faca0890a9648010c78546004182828020c2344ac91e4ca10534002060a96b0730421a608e2c9099c38720320626082235c099a308433d20413bca1852efc70410c379ed006175b90a2852ad800c21a4fa8c1240b4aa4d1022c308108349870e48c367ed030a30a57aa94e1051949b8c2155690a20a3c188309316640052553f8c288caca174248e18d28ac010533aa881146184ff0c209598001a509446042145f38416589174a74810417548cd8828a104b7843096b6861c61431b20823095e60918514284820c211a230821351964051a208485ce1851156782144156f50b1c6145d98119b8f180d08c3062f1890c502a0fc20420d5128c0091a96d0283183c40c5d182143174224e00d04ac71003364c4f0118601bc88218b02402100110610458c13a325025022004800800b237a7021040c6fdc35ac19178347182f78b1230b1d50608890230a1c4ebc2c7151a20509962d8c106d2144e88d6c0dcc8c2a06288ccb0b9ac584228910ad27d5139109aa065312120b6011af0ad1f52f55f469094670e37e14bdd5e0e0edeedb262b83d41d00dcdd4dc3bb323474b78f12d8c0dd175d197799d86f8d2dc8e81af628b6f4607e77d0750f214dad5dc3d7574772d3146de561d8333d1bba336424484d93165ce0699a26898214a4aa29529ba6295252a0549de8a58a0ac269fa019e0ea7699a8abcc728050cd0e20a9e24f81e30b8f96821036ce1e6a3c511385f86a24f44221ecec1bfe8e0001064e07e019ae6d97415bdf4ccacb3a79880ce132f8c7882060bc4b032844d93f786869a47a7e1c812b8bbdd3d720486aff93c23a4046ae306050a6bc8177a706fe066e50e1d3039ea9126f0ca2510477dce2652a76c4ba92f957a8fc8834b53515bea0e7983c32c301445519488baa24e97de7a50486428ab0d4aac1e69d2ef2f4b5cdf5addbb0609aa0d4ae8da48baa34020ce3a229053ec514ba957951e01da54d4199237382c3169d5065b0e0fc34bef2e716f246e4a38ba36d312bc30ee0e4b3806b2f578b34752ed91d42c2c42ad6a7b3130ee8ada7a48ce888cf50203379f2cc8c006c0cd278b267095204d75c43d88dbb8db64ba9b1ea7699aa6037924c0ef3db58b364b23d0e1f930351fd21f05f2307c081a479b2711e07789ead06d245da240622e724337d7d712f7dca97e4c48aa1e69d282b84deb198e3469ee4d01f2bdd6a84982af1d164a1c86c2c439d70f8b28ed62010408a1346141058b31f00bdc818ceded4566f85cc734092a859b0f164560881b94222001bb773b24bae013041144048188293888628c06a851a93045067674909ca1868f124e3cb104226c78c235a50a367e00854001105048610c145ce1063860001a6f545348d90196b841b9c2105e5ebadf468c1831d2639361630088aa8dac07c3242a6e3e52bac00223d2a8c2942b4fb8c153059e05f848214200b8f920810a528ed0020b071698c28d8a26661c0992460fb428c1158ad002153fc8d84182125ce1e683042b40505d7dddefbd8643f0c19491233da2da250e0ca7e047d3cf11bea66b0559871b8cb48718ba2c82330bdada97481fdec3fa7c689b4d5b59a8dac764870d84b6d10a72b86b4d3f9aae625d23f8e0e673851bd8076e3e4648017e4c7aa6f918a10ad806782a7bd31b7a93ddc7a4092ab6b798c224f7144cdd7a346263bd815c5c4eb9bc511809c0bbe378381244036caaef389b7878230a859ae8112543430fad0a1e22e12ccb60aa0527bbb99bcf0f35449a50a00f2f11f8be3bbc18ea44da87e3cbfad442bd6e0f36ad67c8105bf7a21ace3fe0da056cbdc5f6e0b075453b6cda361bd9d0369b8c3e74472d9175d8b211591732828748d8ba4b6a134e24c8bedcb259aba04b375dacc3d43a8cbd1c5b6f56bdeee88da337aed5fa76351406a857d6c119b6c43433ec9675b8f54c08609ee38e06c16edd1cebd85b8e757a41a73613f12104a10f11fdba9006c17e617f3a98e6b8ed8107ce8179c321db030f0c7390a52ec79bdee07866bb07b3305447b3d16e54d11bbdb1af69eb3483e17acd7edde596cb2dfa4cce5625bde171496f76dcf794f4887af7647aebba7533bd1fd0c1a1d74b2bf4da72fa0983a441aed7faeb35afdad02ffb5aec539205c91eb2425633a9f9ed60eaf929a12d9719bd69b9aeb7d3333c4efd25e9991da7fe78b25f198f5b56e411a2373caeab9407bde88e5f1467c78e533b1ae6d16221b69ecb258561c9fbcb9b0671b975b3cba5e8d9cdd9ddcdd773763fa083779c1ef48b1e260787a93b4c5d989fc75b6abd97cd42173dfba34140bf6eb60e7ad320f4a19bade72bb39948ce7550901dbfea77dc7cd5bae3ed85466f5e784d4b1876e8c340c1504314ca1118076e3e5754d9e231a1fe9a681a6743fd3dc94f8a2a04030ca1eb030fee7d1ee09dbb247087270111779bf478e8301cd40300bf07c001d0c3362c433d423d1eea118281a237f7525a3cc037a9a1507de8b5eed8f1da72185eaf4aadd96876b30e9e40b36922386749bfe1ebf59252ce467140373b0c7af6b64dae87deda0698ebfac0037cbf2f09faf09200bed9908008bc4daef79b4de8180d72c1f0fb466fee2f1e87e1573d0c370774d9806cc3219b89e06c2fba65b30ea65487965f37ebe096d7f4b5cd86cd81c7ebcd3a98c72b7a93d9372cba15d9696776617e73e0f196f3b8cf48e3ecb9d940729b77fa4a6f6866a71a15a337a2466fb26796d54ebaee784b8bcd0e87b29b7570f6da7aa67b3ed120d6af9b413b6ed90fe8e0ec8dea509f3da3373baeabd60e8b5a2f9c529c175eb8a340427fe1668743976ebe601bde1124f4ece67a5b8a1e510f759417435d64216e71b4a9bc18ea353da547548e66a2e6ae82a977151f2b53c6704246123f3d69f44c6e293075ea3d85caa3a1de511e4d10a7de3ece9ac1ba2c36eb601d7db3b793ece664b76e3fe91175fdba59c7b3db49349396a267745c9653af79ddf3681e9317439dbaaedb4b3c273d93ebafe7ecd2b2cf498fa867f63169a2d25bcf8f09a6baa747d4ab7d4ea434a57b4c72e81b96d76c54ae730bb5e2793114f5217d530fe90de82f33c75ca3369cfd35f198f44c966559665937d6cda1b74e511de86d263777123da2def2562deb583bb12c6aa71a92e2c041df38a80ef4fadc3d98a29ff4865e166299d9c642e8afcb4643cf6c081cce4ead107afa90cde109b9b23b4c1dce2ccca9ebbe60ae065a8f32eb308e379c23c77515470e1c386ea401d3cd1bc0d9ba90173c39cbc6183fcd7961701a9e17863e67fe7dde77fabe0e9eac65f3106c3d46d774b065854c5c499f6c1661a9c61d421cc8265327097409c2de7a48cc3a5c310cc3ac8330ac56090349c76ed5d83c57bb7a73ae57568caf2ed96cebcd1063f5586e1e1c2096f2946ebdd2ad28cebc6c1d0f79e88dc3e145697733946cae5887481109f47607e54e02d75f36a77a11ec6c7e58a2a09b7530c85dd2af3e02e70acab9582ebda65f9d63a9aee6c15574738cd3751774bdbaa4aa5ebaea8501e1f068644487d2ddcd40a4bb4b77f59dc4fd70af1773d8a7b528ce54bd9a301691e8194acfa9373b4aaaf5f056d1a5ae34511f2c2f10c8367c5dd7755df7cbaa79d3a2f48d06b95e3fad677f7934a12bf368b2fb2e8cb336cd7357e6d45ff5eed7ed229c0fd0ab5bd3a00b531dbb75994783c38be95399e96e819e85bc501407f49ceb4ed071788ed7a5517083eebc18f68bde60b24a13ae6cc3b5d65a71753937db1d834bde316ab23e6dd6b999187667b3c3f512b3380d636f8a43551dbbcd6118766140cfc12e1d845d3a865dc2dca96aaf7a41bf405d84f361ddd9fc822d795f3dca831b8db348eb5c459c8e935a9ef862098ce106e58b1560284ea4c0cd078d3408801b949e34308cd2334b26138e7c61055fe1c614dcdcc0ed8a2d2c81a1b4c106a52ec907bfcb366f9ef6b252b2d7f529a56cc97cf6d0a74ff466122d990f3da3d305f175476f8abcd834a1def406ead304a2398424096330401a530f81067470c31805e2a687f07477678fae4f4fa669a26ea8537a23fdba3948d729fb82a8190ec159ba9089a7c3283d23a567b2bfc3295bf44cf597211508067ebfaa9a8659484a93084b78ba33649fbcf7362d2b852e85a63e0253d47df262de33f4c1d913d11c2c8a231f7a6b986a783ae509d11beac21eb5278fc61979e294344facdd3c8fe6f54c3cf85d4a2bcbb2ec56abb2ccb28ec0399455f5d46b9a16e17e640f895eafe8e60e655928cb2ea53443a76cae588748114a3a4d325dba98a249846c4e7c113cd9fc30951d628c7ae8b61e611fd29892b2d029e9589eae83f5989bf2606c9aa61b250bcbb11e1d9683f588859e9117f33e854e5d88431726bb74ecf5b0bc1e7a7bf003427dfa143a4de27e4c0f5da961cf94e7a238f4d3a5546a262fe69de52e375797b760d45fa8b74c8a433d2774b3935428147ac1de4c42a1bbdc66126ab92cb7995014a37cb0b432cbb2ac2c62773a4de27cd0d73c9105bd5af8ca4a97924227d49b1ee81d3a7995824e26e804bf67d89561372794b122dc8fec30765d37f4e97908d57e6e4ee8d827e966e72810ec353b8cb3364775b0b25f53e8d8cd106717c6ba749adf13fc1edf6b8dd3e9100a5fcf43289cbd7aee24587ac1d7b390978c733d27bbd8291a64e28b0d0ca3e0971d64618fb29b8750787a757327c134fbcb5e76b39077dd8c5de9469221dbf0348542a187a62a293729e5c1f4209b7530e84d6f40529a8c4816a7e16049d7fa740983d3b07461b2e748a79eddd946d5c1218bbd519cd0cd8e358c595a84f3415f279b5f5c124c2f9b3b099e3a49d3349be98da23e499af9e9b408f7c3e1e94d7970a3f4c2698fcc07719b799b5897d62beb4d71986a54eaf0d365531c1c8652f50450032965bb7731c61829f762aca22ce405578ff4267e9aa6a97970fcd4144817e15cf3e0f6e924ce8773af6c17e17cb84f3f38275987a727d92c44273a490bef359d1bea3ad8d9e9ef392ae74857c8c4efaf0cd92612e703d35c821a52118786e3711a8e17a67a4ebcf4eace362a0c9078294ed7c1cfe63904bb53b68a3647ca421d6c854c0cef44e27cb83f4bb9c7856c734eda703f4b9a539ad4e1214ce26ea63b0a44ba5b76dab61088ea0e2d6be308bef1334195ee7a7a6c9461650a2320999246196054fdf923031b3ca0e1149bfb994271f3f9a9c239d7ef4a19694008a5e98a922b3c57e674f6ca138a55615996943f55ae6c019ace42f97181b35798502788de8040a05ab59862594ca0a61f1908414dd38f0d3084104ab08a7e9e8094d4ed4d3530a30d49080d32518616128c54486dddfa22aa2258458967024b90ac000565d860084b14e10a981ab518040a52550f265970620d2bd0606206577c3149664041a9c0005aa82184295819e30c2bd85056f89801e5c2cdc78c242825a658092336339060899bcf9537ceb841110de50c154081822b3f3f3f434c5500518320a49f36a0244915b6335690a4a93076ce50429226a9569185733db5c6cf4f1540d4e0a70d21e60aaa304118672881a720cfb8019433547006142f518b2358c02f50a060060d647b34ed093000420655b842250757d8e45805ceb52dd02036c2016db8a0093692f840081ed84c5494318432a898709be2a78d1a5841096e3e558802f6816770d581cb10b07caebd77bd708165cfb783df7b0826b8070a7f0062f9c828034f32dec0d91018a6df7cca88014c5f11a6e6b396152958c6d9b66ad64571dbe653c61358a75dff604e494d9b260d4301e9f4f4128197ae6303c303fdd57ae497f651c56978d46218b5185c9cef2175cc1ef33a1d3ab09b5ea2f5ea71662113576f33aaf52aa7bab5425ba922ade3e0f34246404e97da34fdb519f74c1d4a97d474f8a09b7a4e3a4c364acdd570e9530e0d88506772b0097933dba8efb04738c3341c2100e183f0d1be403e70ee857a24f60cb567e8b78ec94143cda3295270ee81fbc5e5781d40900e37286355591964ac0c811f6e54206982b30ca6262b26a8a47e8fef3d6a7a4f928216ba50473f5c10c38d27b4c1c516a468a10a3680b0c6136a30c9821269b4000b5220020d291c39a38d1f34cca8c2952a6578414612ae708515a4a8020fc660428c195041c914a2608495280421052e44210d285ca14a14c2f8e209539c00058c2134a1074c68e28b1a507981175048411750d8e1e28d2dd45842194ab0a24513a628210b2324c1078b28a4e8000936384212465841942a48a054294111d8b8c20c2ba8508513a8d8620a24f85041841f0cc189109648218320b000086124f94118403cd9421467f8608c1e840145173cc06207563c1104273b7002073ae8698244134f2822074f3801136ee0000b4cacb0040a37a062832c9628420d844003286690831e1a28e1021938812706012d6f3d032fcbbb25f48be5e6ec97f4169b43bfde10f57d09e8135ec8c42d7794e5fa70037fd372095bec4b8f5aa8ccf2eb6990811d17b8f960e188abd64bccb6b4b4b45c1897e7b4fcdda5e5ef2db7e5eff33a58b2d9650f852e129d85e52d36c35f77f406e9188b8d5864270ed98a332bc2d042ac816eeb98ab45372facd2a33e182f0535474845be2878e20ca938c14dbdf7eef786e145f85de9dd494df474d8e112055a0c73fa89459c0e852c2d907d97e319517353c1ee4da5c1e899eaee5da567acc8bb37193d73ddbd7fa048c30d9c053770f341c30a4c036e3e59b0023f24aac3d92d51abcfd782fa767ae4289d2e9b756ee2df3b8852d00df092976c863de66425bb1fec787ae4de11d58db012b7f3687e6881049f11092681a5e711764ab054c1bff9c30e96ee1c0f96ee33e2de6ef4c89d05d53991fbd4e0cc8d0423bde177079d53d2a3062fddec92e8c1ed1d511dcecde755598215b2854c2cfd398a8290a22005a7d75517d04a45a5470ddb565424f81eb4817453ecbf17abea55f054c34b6f0bffecd44fea4f1036b4dd97fe5ada426adbfddab586fd20ecee43d8d26b5a42787ba0a4ee7e77a77ddfa369064dbd3fbba384ef2ea11e257a03a725d4a57bf4bdc989ba45a64d13e9d21d8412861488bbe49c831488bb64e125fc5e950c8e8167c00dca1b4eb0f4d6234327b82fdd27e892c0d12991373f29b80fe58df092e2547710c286e12b2ace5af4e6dd971eb518ebcb4bf567e91b1b2e4a84efa5b171737d4e3ae78674bb9c93d23dbe9b3b3a179d7cef1ebef7e0045f59b139d48be067f3c3d09dc2c7473fa4317441e26117f214fc7ba33ac853cfe68a0aa6342dcf11637f6fb1edc5f8dc697aefd21c79ea8fca539f9ecf9c3eaf022fa6ff28789f75eed3e943a2ece61720f0efefc5575bb81feff14e8f0a7daea8e0a9529cecef82b2e939e23ae5c574882574511cf89c78b35318e37b4a8cef2cf4afe7a10bdfb36a074b296167db84a594d251f4356dab2d9c8f57d53c6c7a9cd5e6096f4f813ceda552c1a0d7741ff23c9a087962853cb89de5a8bb28a57573e0e9a525dd2ca459c9f1be16237d518789ca78ea4a78ebc2509ffec3cb0bce31bf234df37a7e78342e4ac7dbd8887fcd0a96a7bf268a4ec1d98d81fb205b7b9a15b713e5dd1905b7b42a3b29ca360c2184909a6ed585f3f12eaaba703f1c7e56b0bbf41a6c4d054327a2e6b1866c3d76a040ab417ab30253a0c5e0feec0e3d72cdfd30240535b7283fb85ff370a840cf34ee6f000a99f2f15487fb411bad474b5d9270a341266c553811ead8f4146fa54f36de3c714b97f0e3a9f2dd09bf705530fc4352a94bcf6ee73b505ef619517fe819f7e60686900aceee155173f3c10dc2394518de490fb41ebd993e756ee825c862d874ec4ecf6e5d07579b5d6e5632cce678436d1834ef7ed9dc03cf37e76c774a2a7ae3a6a98af1456aa2e00461efb418da5d156bf259814fec9925d5a54fc911511b4ebb01be35d134b16b97dad4e45ba3ac685d5ede25d523bd99ac25d5e327da626b56758bbcdcd09f9ae6d0546c12a62810ea4d755314c8f4beed949d1e5b6c537753ef1c5b6aaa08a0099a87d33a4cdf7bf47a8f3aa5f35def149d77484f13a5976eba43fa4eb34b22f362e09b5a929ea13793cc835236d0a5bcae794da704bf5b36c7cd37795d9fd3b2fe2e7973ac3becf3fa93d3cd0cbb19e85ed6ddb39039dd792f9947f36acef9e9ddedb81fd3dfa5997a5b8be280dc2b10c5a653198b0f746aa264a814d775b97ba75bd6ed381fd4a5a5af794dc9f93cf1bc59c89c7a3aacf72fc68a57e64cb79e85387a9917034f5d38d773aa0bfa24531d56f312c93ce852fa8bde50cbb2ac693a24d37dda86a54b424defbd5f7717b5e6ad296f86489c0f2a5ec925c18d4af385986091520f96fe92f4108fd3387e8ab6df10957afd04ba90092328de09994831d68322e592c49e17233d438c3d2635c6367790cc243d43bdf63cc9b2d51d4ff7cea3793c2c8f14c330ecb465184669c5421389fb81bdc690455fd315c32a86c55b41f1a0b9130f9a4a70aeaacdb15e04470c048a36435c51af150866a057f1395ab9b1950457315e10e87908156f05ba39f4a04b57e5406f1d14ab14a5c77aea460a7af5781e0d74e1c1528c8fb17eeeb81ff1f5825ef3aae79904837e5d2c8f3727de620175cb5de2ab17ea2ea07a592ea95aeb4bf55652af4b8b12ea66962a4a81a584312c62ccaa6e7c4def381fd67cc84ecf2ce8d7152d494994a674a8e429c1d2b14b62b5d6ab3e5f48a89497ba3f37279e1ef49b9db3402020f4f1d861ad7754078a5d0a9938fec22e0c3de8567e3d58e27931d2a57a4b3e879edd0e06c9672133430c7aa438f23958263364322dec11561fbad9ed60eb8e07bb84dd2c64e2faeb929c4840a04ff40624a38469b513a6b6e118638498d22a36bd999711546b3d4ec3f5c260cfa9a75e2f75ecd57530c84af968f3c4f158b539e288033abd6e861389f311b1357770743b31568f317e22713f6612584d14455d27899c8e349cf41cbf8724d7dc7cda4847f6edd1a33f216ac58d8a2439c06da7f63b3c0db8c9b41733c2ef513b94692a92244539bb416f13d4a0be30b8674f6b5a6d49495114451d5287a72efcf5771ddc76deb24ea939c9b7b55984658fe45451a92a4ae9711aa617e67a0e3d754afdb2b959c9935a7ac3bc7ccdabba703ee0084f4e49a37a724948d30a787cd830829b0f1a56708e3e5838026a3d1a91ebedc5bc60577be49c4d7c31ae69bbec345d98860399faa8440bd8c93335ec98a219910000004315002030140c8885c3c1702045613f14800d95ae50643e13469218053110c3300883300003020000000000036044003eaad01da8dbfb18800c46d3e03ecee1fecb271c7330d90780f7e199e6863dbe3e86d2a9c5f2dc501160f14d2b224f282644d4fc403d7087b59d36e5d20f5dc89a848367ed9d6bab737d0f7e952a763dfdd4e31809ee345a4a03b267bd3e7074ddd5b2679714da955de4d6117e1c4acd3be43caf6a45eadbde87ac828841994e204c80749957d5be72b0307b91e90e27cc1d849bb548465301ce2a17f8a1b48f0afbeb612ddb50166513a3d4f7ac6cb9f4164955a17fb20db7d32c8e995241c4f4181c032fd8f5468e7511b4ea1958c059a7444ca364f7c9e26287dce5ad4c5178c7a2eb4b1cab0f73535cddb0b6a75b71f15a0611c1437d4401a2f4aba163d50de8072571f2e34de52189ea83c20814413bae83c4dc090e7a315824620413a5ec09c97f338b59a72f0c940ad7c52de26d9e009aef67424b7c1e45438024f12f40f069d76881b90302f9ed84b320e095b1a8ac14c3e7ac571bf650d9fe2e17c7b3570156add5b3bd32b196e8b1d9196a7c297733a8d91f2902ac5573f650ebdd82b526553c1cae4893b2b7eeb298c2e3ecc0697e16c2cb02af482a0c34d54dc8cdfa97911328f8f19b4f79c6fef3c0028b218d1257bb8d3417e4536ad98c14b41768e5419499c1bdc945f09e5353f7157c08ba61baaf2e4fbc507b8d51982a0058a9ecc358c123828561ed0d84a467edcee1ad7ced3e68aa253897f85b663ae863657c0a3086f3166af20fc4e6de9eef13e5f2d4210f3324448fd549c3d337696dc4630fb6ac07c4aad67d5dddd9121b8024b0cdc29843728ef176a2aed0c167206f858b38a92916496520181cd311791e1e4640b9a04d3d7601bc2407eb8fab9d4907d39d3e6421b8a9c000cd165dccc7131c90d2c26f70823b8d8178284fcd3dc0aa70a401abc58d81692f2cc2bde632d9458724ede2c3f46ab690d474d7ebc829dac7f5ccbac2e7496321bb1f969e77e68121429e682c4145e5f5dc15ed1119c77b805406f1aee009769de4c98cd0d4cb739d922a263f9433914270c91a5dc5dd590dd92cec10ad19bc468b1da37b40019ae09fe4d5238b83cbff75ea56bc37edd0d9e375ccb9efee149b625032235542508734901d5b886d54bf16dafef173491ed3ec4ffb37f5eb303769040422736725e0a70bb507a38905a7102c6e7a78f83f22b6433c6d48432572ad76eca7c40da1722b9dba16a80e0f3b982a90884c1137354fc020b8314abdad577af3ec7b074a1eea8cd743c9c414e8b7ce33f722e9aa33325567c8110f0ba178347a36042c24708c53cfeb0175a684688b867b84869bc773ea4cf4de80eb081e70327f1eccd4e16f3723e42ee2d39453caa5e07467ce0fea244aedb4958b09618b0c48b92c92bc92df52bcde8a5ad407b9cfbed9170b075bcacac0218d4fe02463ff79475ee8ef08ba223e940cb40ed2e7f48f426f0f65e8175b0d2fbdaf1c7afaaf151725f36c3e2b71ae8e056c8c3d0485427b1a46f7ebf646b6daafbfb322c21e906bde61f694fc7ccfc19f676b7d48573b77010573348259bf83f5a50c306455e6862f6ede120931755e3a644434f191d94c26054b01fb4dc8161a9620cd04eed651fa1d8b35062ae91131f3cc300862733f5e5f173bd24a45ebe421489e7fa391262154a8c11fa19b7fc26d9ac1217f0060e0d4708ba406af2c6be2aa83882e110c77b83f6af47b36ae6b02a37347550dd4d7ba3c2f845a394e161a8ff949e7bd447d082d62fc90147e733c6963321d585257929b5305a08002e4839000c4150f5f93390e0cc38b4714cb9a21a02b9e4e303e1c664e5831518b66ba84a349b08bf4be3e197776f3cc034a37329d71cb2ce30df123fdaba34999d626b40d500e5c90da954be0f1b5d630e1642e8f76c04bbb79896f298489e35ad3528bc3db35bc86d04edf582e559bb10f556913a856600241a39df3f5c658e3bdbb35b22e8b9b63edf47223214570fe949b68dcaaa7ddc23195786d9b8df186b64b9b449635b7e7e7114a7d04075b3b659e48f9ba65443f9219e2d5980bf3caa504377ea43d239b1646cda01855aa4458536c613ef0aac84253e8d891b65633b828d7964fa67b42cd88bf0c1c4a9884c0d2b806b853e7bbfdff3fff67c78f4624cc8e85268b8ba266bce992100e3b2f6623073834a7f4fc066dc407b60151161728a99df2bcf015fa2e70a9fafb45ef18c89680e6aa89458a697a4ce23c6f99778fdac2c700e17aa4e0dd75a1bb478dc72c05b3f6e7d423e9a25a2e2dfe8d939ff0a9dc13c637c630cc2bf3e4e01b1563da986232afe52eb5a4806fcac0caf98d60042b9c9bc8a8ca20d31975e06f4f1be2ced24720b53eac467137773288f2a404cceb675256ba1bf3218fcb3d031edee2599529ac55407148058541f2b996e3c9ad81497908f1dae31c68b7cd9c2de783240ce5c04ad4023a44117281bf817de70db0ca17981bae0ff079837d58b5a850ecdf8a19bb7895bce4c6bcda0e292193ef9a5400ac139ccfa629de1827521257d0e029c2f14f5c592e482b2efe28bb418315ba90c4ded229470db4c36f456161bddba0a155eceb38a10c42d1f589adf3b9673a2c21672bad2a3917d6b8a1a9484896a271d586ca13515178b8c1d0a36af96055dbc91785689f7a9acbbe6a71b8ccb92be500237b63ac5c06efdccc709276e186e9380dd4b6c56df605e1361a88deae649480976ebec0c52cceb5f803a37a24cf6cf487fe6b4ae999b5da1a4e151723e5d215950550d0745554a7ef697b074c02d4071ef9a827a99e754a015c389b69a6a5a307ff79d60859cecd9fb67a435c14d97553109778d07b6dd2de1f1855586ccffe41f3f5800fa362949840cee542771a1acad986fc92aa7006f0036fd1d3da3bad8d2aaf05c88efa54a2aeba73d75dba9595d4ad41dff762c5923daee02dcc43f795375ce5d44c11006279b1e94cd9c3c5a44f91c6c37253dd6431c44ff89715dc76971bd945460b9edaf4673921a11e1b62702f886320fed40d52f4e9f302ca494ddcf238480e7a302d97bc20695a4641fedd6bb672d08c4e4bac23884f891dfd85ac1b95a23d81e07c332a6bb32172e0d30fb551bb8301e2884520d908d3df00a94f3cba4546473985dce71bf9f914453fee285d4e06e9c861f4c9b5f74d2b7d61d3793ad9c257356350f6057c47c519250ddb0ab930f2f754f7f5a2bbc6fb2dc86f972648b70befa660be30c336b8db4ebb6dc744a093a42d67c635f07928d0ba0ca142cb1f05698c69e0c19ec6caef68eaec01e1b85c88db05d18e5529b9ada5474d089dbc97ccb34c58389250d1f06656f36fc1f8e04fe16fa6513f14052d84fc2018169042ae6dbe10ec8e7d82c72e289fb20f19433c01f753d1154fb86b565bd16bdfcbc6fe8ee6b43dae33f6c585f30b68794d58c667ef80014b3bc05db5fb2f8f896e0b61229a03042893bfe458dad48e91ed68da7045326a7bb80c809ee709a989656beac98d7d4379861bc4fa9212488e92c89ea66b9f848653d877d65930a99ac105fd69c97cbc5ba128bfd54b3d2c66447bddfa2ccb02d3b3ca236a4bf4c4d9421827a33a93b6fa0896ed09d6e6062520022bf6c0b26b2d1d481fece631ccc344f09b91b43942704df8081b5cdc3f70e4f0829e4c32988470c53a2974f447bf9fc571d2e05a0897bdb64a3a18aa2f68bfd9f08d267c0276af87dae528075b25c4a3d60e6a94cd662d506bd6fa9067cd37bd3b25780c34d6c99e4359d4f4a3cc45d358d4b4b6b0b4732ca24df98d04b22c2736825f041199b59565adb929b57bd0b17b40ef78633ae1405fbf1e7e9ea6d3b4a5e0ed9ee27d7f7d7cc1d6d3e8da115975ee6e99190599149b1a52856ad292a404764defea1cb200eea7e1f0abedd70d1e1e428d665aa7b8b46f94018e33aa3842372961b11c1b89b3dc45a74c4c541cdc5065243ae7a077727e9f848905e6844bfc40ab7924c3d9dcba191e61f8b30a259c9c3da0913e3d1949d9dc06cf10fba293a50435069bae8b6397d701cfbda4251161f36d4c89c645e258e56da7fa5403988cba54a7692ae30d7ce1ddb76c31e0ad3b8b8417710310be44f4a6ffa7bc5b219e3112be7abbe7a7bc1b24caad1849aefc7014cd21af064879041589156903614d138790783edb6ed821de26121e180cd79a56080dd0494d731ee00a7414745133ca31b8421ae5e8736960ed2e4ac2509e2ffaaec1d89b8a16baaec343152508ef594b52125f92e48147071b845282d3ba55cd230983307f4fc51e7d04ccdd71e525f841b81178826ac374c0005c9b4eb44246063a1c8095086a7f5319a8ff7e7f2415fefd56e7529ca8b776563e840682d8944a3cd2ff53d4f236219eb8ea196906cbac7a137b1d424378940cd54185694d8ffd92ea227ac0d846a70eb99d99cf5753f8581d91edeaf18a6f82a75d6c19153a0b03bc3cbe94426e6f243defcdfcc9a7d42a5306a46e268d517e9b991f3e995aaa0014dfa662cd8b062f7f5e016ee5d6fe5daa50ba967dba03705bd2276f60796509196365209a769a36251760aa6df393958a3afc710a796d5ccf726bbc0f7dcadf1612d045261c42548de78756a4fc511b5ac391c15df73c372b432ea1be9e7dce2df7b08f5d664114896652a82b080cadeddbdedfc807aae693f062c03677a0101180127000ab68bd2edf9ab289b4209d0c05360a40dd771a8c08231018b6cfcf860059b5bd1ae838038274ea0fd9898bf9ed33101b82e87b6cdcef350416a206e0125a98fc133e21f2c695b4dbc1538cb451b89fddfc92634aea47b13e88827526e76c745ae910d455a1f5236d1cb9e5f430ba3e4ac163022cbfde98d645ef5cbbc7cbd442a6331723a137747d48d4c372b57a598d0f1ebfdcd31b9009653a5a08c473c839e902ebe4638d180327cc709be49465b8e3f341de98bac01b1da59b2ca929c16172966b34abcf47e3b011133836041d7973487a21e5911f650636ba9ca2cfc238d6303602ab6ac13b964e95e91bf6e0d996c3dddc75cd63da8eff53c84cf4cd767bc381a3f22834e6e3948725160869d822bb401f2c6f292e3ef8213c62b50bb77b85a73cc29765ec2e52d809f393502a8fc0acf1566aeee36a1d0c95b5d1d423380e3338c747defe09bb64d17eb174de7cf551d5132092ba31a8b459a63c88ce139ad020f61f76d89d63aa2f8e0d1a36ae1a32a9ecf362f3615425cd8d60023c9294a68444ae81203c26ebbfbc83611b3ed1a654843054e58001a323917e430f3fa806465f566e05ea38bf522bb20199ba9e6590e78fa7a92d2b211889a5861abcb89aee2dec9dc0c9b33288ccd459deb6cc5f6f31c420e2f11515daa88170bfaf13cc8a85904b2f48141eb9c1e545be0b70f9e289757fb20d93e40fd6a10ff2d9c9c4dffbc5b483b44fe58b46a65189a5334b23f6e0ce369ea202e0d529c1a9bba826a0e9df832f4436f91c3f3445c08e25defa12cc550ae4c2e36392be4faa341b516da8320034be53abff58308f1378c03034fd9c7d553d62cdc2e911701da88c75a8022c18d0bed30b64823c197f5f1424c7a938962037ba71395625e24f2d78d7c8c99152b29e6c6fe21624496b3f7ed02c046604969392aa84dd5c49dd250f6384aebfa022be4533716bceaf06dfdc4b2ced124a110a2ab3e9e4facca1a765ad4626a42f0673ef1d15336757ff3b26bfc5181e21d89e117edd432e464b255c8bc5589875d72df767f2f95d95584e5f872dd0a159f181608a906a4000ee9d2f9014c645478db0cff18040014d2fa96c30eaecc31c52f7007564e643711133e52ca7f2fe92029e29798bc0f4cf28a90fc9a269f69357f66dd4482b5e77391d0867b9656b1beb03d64a59c904cf52138fceda9b86456c10ef4c330440ba47452e1ff104e03eaa0be6fcfe3c21655e17a9d1447ed3384b84239c6584794abfa7ce271b75f44f1ec20f9df202a0927f0e983c94a47e4ba923588241652f0aeda9642e588648f1debe8b833a012887a16649a18ff28f5b6799b102500b31d6e0606a1146dda597b6435111a89bead3521d3a608cb9b8c241c406978583b17241870457620cb373dac65b0216884d0a0a9915a3801ce5c339bcddf7f9752653c42373954c078b21691b8de52c1cb96f0b8b31d21db29754f3cf5d6bdfdbb2c24ecb606a607c6f5b55bd61a25f12173334edb151256b4006764d9ede1ca1ae24c94953d99c5b556471f1ffe1890b3d3d77b406c8f46da0cece2d20d8826765424c546dc80b72b67984db7cec54bce35d64474505540b2f87031c55a1e2c26078774874e2acd6a3b3e5f5159332244909ef3b8f3a0e9537228a378ff8577e8824708c6adeda16648210fdc1b3d472f9db8ebcb529ae98308cc77552c909d85c1b16df1f50b27e97178bf04c8aed4667ee63f89846f6fea1b8781c4797ee9d0c5adb6049720cc5445513179643d067d483c5d7f8955a1d2f9c567b1d478c52dc52cad798b42f2e224ef00e230daf204c8ed5cea785907d64637892128c01054343b77183ef8035ff72d7e94478d1c735bfcf09a7ee9f2287cbb530dd5844aec262cba36b73a169a14f6313e9da7e56d2eb24d231745691cc16d86494aefb2bc15016c126dbbae528edc051274e091930c6b4438673972ab82b70df1a181855ce20a691168033e9627745b49685d73c701e4a5b31e61d848cb8d159de8160fc36b172d2f58f5e78013c9f284e238c6737d16054984160a04ac9825f740e553a921accc52fb766333f456bfa201747efbae18326b4aff93f8a8b764aa83430f6c7d129be840cd19a2026b16b4586dd4459788134cc07c17de3f74952404757b097d7b0cc4e79e910500862e11ad3883777c3a6248d03b051669992c6212ee946a1384bcf97ae0498ea02938742e617dd51333b7403269bd9a8eaf97bf40d72fc4cc83d62190d40285e2c5d4c7ce3ea96b72cd7fdea1a5a15ea2db59ad6a8c2ffcc4b2d48b11f0a6eadad3033ff8481a1f7b2f0bfa3158e9ce61e8e08ad508b9776d4d70a073c80540f2a53fe49b77e36a8679c08f2d99c1594387b9805501387a66fe9cc1223fdbcb90bc4f51fe48c337dea83f286c57b7973aa58b5f91c08c3292cd0a58735bed86267326344d07641c0163660359e944bc8be53b1502b6610d773ed9d2f4d988e89617812eface416e7e8ca0580037bdf290ef0d998ea5626f6330b798e475fd7a6d626d331ddd3b495678815b1dd07308a3f22055d0579cb567dd633fee68bbb39d76c6f9c8ba5d414c4c36c678d7e9f6b8f9c88876a52862cee565156396a4fe60756647393b96c13f839587a06723451326d3a222096083441b561f7db2d65946f753bf3322ee7776d077ac9d1d8a158d43c1a87f1c0ee517d825af464abdd1b9377a51e5ba985a6b72b889f486ba422e1e76fcfe91f1ef547aa0d4c8b1448e808b563e9c98b314e23bb7863cc5b4033d3425e9c41528cadbf72309960135cd8f83088c3ca9fee8527389c0670a8be84d16e1692656b096c6fdce2d8a227ac6059b01190c7a6e4d206f7bc181e41af46ed497644c36039e9f38f6e0914c2abceac004c49cd89efc01f79a04d61139b1d7bb32e87f938f5406b96b75aab5861956641b23b99964ba393260b94c694c601b922698c45e2065980994043502c28d827a4458d485ddc9f5edb5fd90dc696e3e3db18956b75648351aac8b58517ce21c71a98166e4706d4abb34d5c161251488e1ee2f742df8cee45d5ed9eaa413c8fe8a9aeb88402375bcd5ed9ff024849d66d392775035f0d2cdad157a62d34dd1a47ab49bcc16f2b22783b650329968f82d3721bf4608698eb61ea487c929c29e3e4217a96c1034575fb6839fece52113ffea924fa501324f1a8e4f8753b64cc1fadb2ee432428a75b79add51d28874f649f889fa6946bb8ce4dd6130e165666c03ecaa59f7daac789b62b99cfcfcc32143a379df41908b66a58b424104be34d9682f39d5408cc4e3f8f2136588b1aca5767688e8919c692a00d6ce27f3be76a608ea264d733ec98995507b945e547952b00b70b9fc96c4715bd9609be99d78f7ea0e4e74435b35fb8c40b7552afa44ea83ab224c97cec494d26c1ac2bba7d7e2e1ea60faac7e0f3de1c5547c75d0acce891e77d6ffea89c176070a624468d7e8e572d36485ba911cb4889475805d3dbfe0fe81b330e0499f20e6ed6c0e184ea41e90750ce45810a33f4e43d9d11c368a9e4595b8740ff7c1367f8f488a276ded3f337b665a934ed2f85e9967d8e7bbca7b7ced491cb884db90d0acb47eee819b0bb14435455e0bd96c4cb15becfad89dbf6db2d816fae270adb2f5d6ca222bf1e04fd4e1f9e4fab4eb9bdab20a0eb8ba4ac8bbdcd68e3eedf8a0a365ce31ad914a1783bfde3ea4421f61ca212fae856f8f6085f3da619d6043b984103c504302a640ffddd7812f35eee8a658b6d232f40fe3845562caba0fa665d3d72e5dd3996d7a2ae249fb02bab38055c16110a2dae8ea5f48644930cca2aaac0ab16c0adcc84394554436e4546fc18f27e30b546a0bbb68ec51e1ef40ccd361cf7fc8d628fe0183d0e061201833eb9da7c6f07544ef7b22088add3d2caf29689e64036b82fec115faeb633f6856cf86d1a4122b4d6a253682589db01eb3f748916c0c6291f3be317fc0d0e483b2726fd565dc95c40ec4c5f412f0c4900f95f1a0edfd617bf8cccdfafd88686f2c60964e3fd4f45a814fdff7b4b1ed07f919e3a24a21343da0fcddaff5e2699b37f03e75ee41c5460aa01631224cb5216d2521852fb0f89e13269b8f543bb1cfd47ba9ebe6da53704055a5e0e1be72a3bc663afbf4c89aedb1afa0fc15d71323939cf7b02c745bf4ac60080221f8874e35bfdc8756ae4839a10a28184b14e86d224bb15f93af040cc8eb1627a569fe62a7ffd692bcafede399440e54e14f87ee6c02721788769a40a35ce9e4db570556cc6655f69ad07bdcb1564ef403f3fa501de73697a44d1de3589e00faa9ac5855c7ad4770b9c55f4c088ce95c5e15b6b2ea145f1dba2325f2c4678f6382901b8fc4287ebb67d42e9b43db7c6e4bd9e046fc9c43b273602e67b53784c32c75bb346ca534d27b683aab40ecd2d14a4876abf6948e63523174c98555c0f75778c5cc277d27bd3e961653fbcfbc8d02f2d5b5b10b5b8221aa04e2d36b1b962d56e0dd7993e1c621bba5ff77e3121f576a90457f66b8df6c005caf886dd75b2d32b66981090d7c6784cb1c160700adfbbbb20009e91658473d5b45d3525283a28f1260b3934bf8caee32c0ce35aee4c160269dfe7feb53de86fe731971ed5db083057ae9a0d63db225492c110be6b5342088c30022b8ee1595865d8406f716ace64442d0a4578f1c220536fa3bb43f64c82cb376b0e2e303b4bc79e3c74d4f5213b1e3020d76033cbe97196cd996d1c32231e9b66b2169493e59c6dc99a31681e5cacc9406f49d0f358f37a1ead97d63c00b79da72f53954f5a587acc9cc19ae506dedf44a111fc7a8c795271561f623842511174fc411d674d7b61cc95d3e32d635b2e21b1210929b9a13c563bb4c2e2fbaf2f46b3a6987c602770cc32fcaedc80443ab96f9bad9a650e040a2ea514763f9e7d046cc7ebb896c20fe0e1ebdd60cf348bca0329ce4dc800632a0e3187c07d148b2b98c0d8bef9063cd1dfe6d8432422987e9e10767b018356ee8d3864b82d680da4bd3dc06e3b994e6edf720bbd97ebd32cab060194a7bda25d898bec6f3dfddcb34568960ab4c069c05e8b1fb7bc66f148803226659e464d87c3d015f0a2d819bff471b143455907f36d957406103d880f310e35b98a8e35c92f79d4dd814c8472ce4992c68d2ad9cdb5f047596e35ce7c1ec90a45906c04af42adb4095225a615d712154b6b4168d2fde43d7822e540fe00c7c61de6ca15d6aaa9a0e437d45619a0cbc360eb15fbbe7f3481b9c5524fb85337af9b96adb136a57695782f07da2e26f1919642b7a7cb44830619a5aa083f48e9e0ec1475d4af017cda58927f5afe7670e348faac906ce22912191650ea2a7292eaf4f40e7ec6242a3bdd43387b05d3a172239c01f77541af12a7baf073e7fd1a0c3d631fad1f2d6dea439d48fb58d230108b94315662524544ef86711b62bf9ac834cbf4935b0d75e62800062251f587bcb3d5c262d5d4358ae932e6507f2b9b9725500004d2433446b2ceebac4eabb36197a41ce499695294e4e12acbd667af16ba17fce60ce88cd6eb69a74af18f9779079b3960e33aae8342ac8249da93f4ec92d9f7453138f6a710677b60897d938227db8c2041c71f9bae3e30339cf42e7b501a7a70e17b87fe4fcc036c633f0b98f648f8a7a28a30ae17c1a2a58f70c5a4c08cb41401a372446ae25e4bd8dbcf0f8548774bf49b47e0d67a464c55efabd12405d0d7dc88039b17dcdccce6dd508b53cd170c8c92e0d42536e9ab3e253a5f71568601f6fba81a7ed1ec290275c9a1f73f7025bba780ff51aa605e30ee94b0084597da5a2be89b0a13ea1a2482041628ba6c7adb542c4fbcd96428508ec5bab1e37400fcb62bb049e09e01a8962234d79f562ad1157a3674e4f8d62c023d2517650f39ad859744461789ae7e9fe6fdbee924a475a4a46ec4f84a36fe97d3576f889617cc716f83c623905346ff2be78733c608c0f9315a97ac653337f087c732a8e42264f898c4280005c9403b4496ba616a929058973c7311b0a811ee30962a31360e91b22cc7bb6b80780ad747d45727336430ffdba503e875a5f84a1dd838701cc84e266bef1372b8f439d642120cf679002edf8bce548726b20614cd47d2f51b99e66d8dfe5b0a81cbed408ec8049bce8dd48cb874e72dfb645243f0854a0b9498c0d4403441b239c63ba076bce780c6617adfbb708b786f33b1dac715f944ffdfe1acca5073ce2aa0abff3fa2dbb4123377fa053d1982a9fee6326e4016bf7bbffddef411bb7f93912036109cfc6e46d5281db71b321388f9402e2ec626ad36ed75ec31d2547baf6913280a1a2ac2645a7cc088d20f51c484465e6046e94384028f2dfe671cd0e7c965ea7a3ace3a8b9109e9063eb1c4e94eced4d9ba20fdc1820c019de8ea9b27721f42fbbf03e1e08d213b2c7375aee144a3f64ab370fe73712264a96cedcc3f750755f327a7426183503ed3e434dd06cc6631f910a0b9d18ade42f3300176bceec92937cae1ce0051c199d3c920be270038d187af0aa1bfdf7f29423de2d3ceeff71102a9080e8ae9e28122474bf95ed8a832f3b0dd026906b352f134b076d2cfb4023621aa7e95ddc7a75552157eb934ae183a53415f2a040bec6dcfca885e998303460455fa229112d3993ba9f9316bb1059cd4f5426afd6349e979c159002c40a31223c4dccb8722920d86f1cf9027700675be6f08e992246c31e735891cae0a805300dad6570e4ee0a06b010eec5cbedcd4e2e858d64036294873a0ebc112b0842fa5ea457ec533f4183a0f4ace1a2326a965f5349c606d495a4ccbdcbb49f83f4141fac1101d2b2f0f89d0f5d474f7428a304c4f6027dc4a2753ae2da9d6f5881688c91cc0c54165f8d7697fc6e93f7db9527769547a930f54da3d2794de163017740e2c6d23bdaca026b8c0ca18fe487541dc32d01b0bd0604ad81cc82d705c5b00b3d464f3dd163e0118fabe976dee1486c32a831f8775aad935617143b039e22b20ebd690b18a6b91e7452279648490cb5aaf7c892bbd8e0fc5d808bc630ba5e80010a756202d02c32d3c014b3f43b6d68a8f1885424e59553a3c928a0b0a4d074f088d76de0c4592aaf010cb5225c1f24cc7bbd9de951a8966496ad290f1a83361992bc3a71753b64518c30c6d5caf44099ccab57e858f27150dc4459aa7f91cd6f477c42bfcbff5b52aa27c24eb019c0a99a6dba50998f85662f2de69c780956f5626804c355ebbb22f494ee8b15105af06c19da806a093df56fc1356f7455061691dd831df5cdc12ee6a51783d9ccff3f8c874d8413b0088a79f3179a4c534446efd44e40cfbac269af1b87cf3865b6d7d7b94677b66bc5578dd72adb6e6aedb69f46db7d4d669b3450c502bcf80760b7d3beabb351fdd525c6dbd15db73ae6d9afa96737acbd9de2a006de718b72df6adc86f5ae663682dacdbafd4ed8cd7166d7d8b93b6f5646e1701b7f90e5bb6db96f863eb2cb2bd64b17d59ad957d410b5dbfd545d97e60b745025bdc872dd66e6be4bd7d22de2eba6edd2f5bf2efad14cd7607caf6a1999638482ddcf1564bb33de2d99e1b6d955eb6dcabad99cb760acdb62bb575d86e1105b7f286db6d1ab4631f6bcd8eb614575b6fc5f68cdb36adb6e59ade726cb78ac0db3946db967d2bf2bb6532de5ab0a4fd46493be3b54559dfe2486d3d59db0580db9cc396edb625fed93a8b6e2f596f5fd65bf9d7164a2d5a5d14b59f98db82c016ff718b6ddb1a796f9f886d17ae5bb7cb96cc6b2b85bedd81b27d6a6d89835bb8c76ab574688f796c4fc65bc5d72df7656bdebd9d42b3ed48d93a365bc481ad3cc3769b6e3bf2b135e173b57c3d9fd61673fb87d9160b6ef11eb658fbad91d7f68978bbe4b275b96cc9bcb75234db5d68dba7165ae200b570c75b2dddf688777b62bc5578dd7259b6e66edb29b4db8ed4d669b3451cd8ca1bc6b69a6241376aed7ed9a97d6ab6c4035bb887ad767d7bc4637b32b255bc6cb92f5b73aeed34ba6d47cad6b1b1450c6ce518b7dbe869477caf351f6d295fb6ded5ed19f76d4add9633bde5d46c1500b67318b72d9badf8d79679bcb568dd7ea16ce7bcd1a2ada5c551546cbf039fea6ff4d83de5605ffb231d73e61d186d4f4cee625ba567dbd111b6b87db672cf6ca123d872f96fe7866d414bd8eafab7c505bf85a658ed6e1fb570e1b7a22dda72f16f71916f4743dce2e2dbca3db7858670cbe5b79d1bb6053d61abfbef1637fc169ae2ed6edfb57061d08abe78cbcd678b4bbe1d1d618bab6f2bd7dc161ae22d97ff76aef816f484adeeff5b5c305b680ab6bb7c5bb863d28ab6082d379f2d2ef976b4c42deebeaddce75b6808b65c7eb6736163a04b3afa654b0157b155f969eb8b7caba17c3b3af11697df56aef9161a24c2f277a3fa0f7113d233871164ae1c993ffd9a0dd08e04205c29098234a0a30805bc85603546102a39f96ae256b3065dcb4a8877b47c6539da37478c17131b97bbf654e58641176dbb1b9cf5cd04b85544deb2f494abc64dd70df80d66b6ac9e4661882959df2730794c59c6c31c08bbfd84b02fa7e3d681dcc20b86aeefa7c94b1466fc6f6a4e4ab5d4b016b16781b9362c037535649b1bd073ffb94a18dce41bd9a842d71b0ad03e321f719e34b2d220438d2a32b374254ca46771c2e9a8a3424d69be665b72f843aca302a4d6fb7861dc82beb4a978e220e2373ae3798c5965e7e2680c22e5c28c67d509e49686213eb62d88c6e315d0687c699900ce748c55ff7a233de0ae388bb5254089e9e8a1d4e64d48ff4621386cb960d02c31a49f2fb58b68f41d2efdf0aa6c713aa12e8fa114164046c5f1a6a06807e5558a60b82c8ea091094b066848a605b6f0e081e478e3114ed5a6cf68170a9547ebc6cc37682510832260a10400c35e37014b62615cffa2f836101621aea605c3182cea2fd4a769ec43cd8187b92dca4d5d2a018f8e959be1feeb0f278f3d087d2ebe580106b91fb25c95e0381db515368de63d02bb456dcca0490d5ddc31109f4afb84b11756f50b97ee6c25ed44f3276f3cf92a6cbf428fcce5767173816f0f0ce9f3cf7964c163178cbb67a678c3a920adae25efdceb5e281a3a53227827d70a2ea9bb7738db90871a32c3c65bba22ce0ff86fb5c29af4569de59fd845ecbc81599c6a752bf7548cd102afda5c68333fdc277c660512963945d23f6ca447a03499f24b275bd228999ee48c0f60d5e4c63d07857cf32fd9772124f9c30d13f54baf0a110d0aac6a07719cd5989f48466c689370fa59ac00635014872ef948ed2b7908cfcf433c21a0e670d884ae0c1b11e0bc2154dadb094b826a23602cafc5e780685dced46780da4c717858298e8445ca7c3b7c5f3b12bda48b7fc13d56d069ddf2593898beee1e4ea82a5882951e98d5339804b873a9f53cfdade042393fbf4885afcf194e950620529d67e1a8407c19c5f74cc36054e5f21c9f7cd02087870a14b104032698721864a03f376c777f75344a1aab3a59e039e194a15b7edaf3584c6473e9425772d3750a06d5a58829189cb837c2a250353e72bdbda67e95553f9b5321f2c612d84c814a3339ebffd8f76ea0f05cc0a68ac2bbc1075f9ac64ede96ce55c532b2577abe3f6307c55143babe18fdda46ee4061321e291560c0b97848634cf4f15162eb77c740f7db32e5fd813d4ff22f204f21acc1ea08f71c0c1429e6713af196cbebb325f123db8cf5579a42ad149a70c2c73411b9a7aab3fc71e7e6a3c0a4c984176e6b827a7fea034448982db802cc380485ed3785be362d8ac88749f088adf4d9b7d76bde335d03f5048c426ce9f621512666d528592677d52cab5cec6441e5897aa6e2929cb446003ba69f0e53c876854b970808c3590d75d52296f1a9a53d21dcffe29138d62cfe71746bae1dea02ef0f72d8d51f87c13ae3b89c8c005694030e02d8422f4b1b4a3f0edc1356845835c0cd88a032d58a57e2e17fe567d3b2de25807f39e02b1a74c27268cc9669c89db6dd0a8003de8b86c0744fd1f57f139f86dd98297ba72b91b18963eda6f65da7acff39a8bb6c974dea0cee5eb23693f0db0f0b9c5ac3e19c2b9648d3e296b4bc05b0d5089d149a46b67f83ce0d3658b30670a8997d430feca3558098917f00bf2bf97b1cc3aea86af2360798b835b7a2b7eb2b1273fb7dc1cce44826bc0c98dab7c90b2aeaf5755b8db1cc9f0aacd75b8463d5094166d2324cfa617427e9ee0120c952a6eced3f2d21ed28b113b2a67dd77503b436a60044ebffd334de0fd6295a0489ef189c41ffb42bbd781b28c149ac9f8e408fc609101fbfc37191aef37e37d9fab1ff5b3ef061944725ea477955a6a15c0dbcb03dcc36c1ae6b3607d0ce7833742c580b62469fb9cada612241ff8d8e4dcd4f5932212551c5e8c394d265b6c91d0c0d6f7229641e68dfdbf8e41b085189b0085c2a43143c88a205853958e524338755b97c5d760caaedc516d9246be027a44fa334f35a80ededc11d135bb62804e9022f274f34c6ca89ba4c1a2911f705b76258b94d8918067cea47230639fb077cab2ed0841d36478c3df90cc59ec76e725b5bbd9ae4ffe2e8e9a90848e42f7ab3db7abf2e9950e56249b8dba49eca220c1156e8163ec86cdc235e5581c5b2dd00d0bf5de2cee651b0b46f749e4a1fbdc7bf470e2e1e57ecef3bb2bc5ee345ad0301d67d1178d6501cd897db7b1a0f9681f1bdefeb17e91dd1a78f0b63f85c0ceb855b5550be24b2c4cae84adddde25023e7e5cbfa2bdae242f2d17a6fccbad758308a703c5815a01a3d314747876dfb045ac289ed727ba57efb53e9b9450b9f6a6d1aa286c8d4b80b0bb24647e227a3073cb075763e1e70a16fcf38ad07360ae907109ce6c058960e2754308bb6f16c6dceaaadbf322de1f9cc057d6290a4c0b25d3c3ebbd065746720954b95e9d956864499e17edc0a4266f1932220e8da81a4241b0de0e9f215d21b26713608e67006b471c349c636adcec7a123c461d8e0597fad72f0092588df8a1ddb4f17835206007a5f8aaad27152f57fbb40775e81f0ddaf67ac4aa136b1ea5b8523ecef7125365646a4ba7e82a736d5cc0a629142f98d8ac07c8a1355220815b4475845742258f1347699c04169a1ab245e082e1e985460823419dba67f33d9c5c294de2e354cc8160d469cdfdc9775d852168915056e10a139d77a8cd036fd21569e4f90cf9fc41544e84abbd98cc25753d5c3ef0b3cab0e4c22b35aec23b8c5b7ed7c0cb3661b65c61b159f619ed9d58b85b57a1a40ba87145ce58f8c28705371a9a4022e0614276b26d4fbac3a0e22a03b274a34352c13fcfbc3264f248348a7f120fa2394c42d0ce3b623ab87bf57408afad827accf00897b5ca92ba2491ea6bf808499eb420d1a8b955a7e8b09d8e9283afb344613547d73cc0c9650ddd7cd8cbaf14b64b90f40f1dadd704406fbf92a286e223738ebba4231635706b46b5a945d0e8f5c4990a0974770832adfe6639ccfb44dbe6b2b4c8ce8496836a1c0afaea297524989b783ee5f9afde3127248c55ab71197b736047411a1aaacb7de96c2321e67b4f9596d9878fbb47e96f20178de97c1b78ad067cc7a48dccae7ae48e0e8d92c865289a05d9df89d8e7f5b7a5cdadfe342e1e7ce66af705f320ba58ecc0689aa485353a0f841bb40ebe3b526d99e0f2c766da0978e1043b6d1dd6b527efb9ba3a3ae0a6a2cce962074a2dd18e5c019b2c57730974a09f1ed3c9ee080c9a36e3dff44934bf7a7339a07dc1071fc70b58ad2c7ae263089e849b57cebc57918532042c564030e9de7318c4e775c3edd7bd9bfc4a5fbff98db27367a454eef0caeaa89d7e185027888cf363391612697836657b760014ad01f76cd95ff470da757ce4bb64c89ffb14bba35d106de20bdc7755bb0a1e545263e77c4c95232a67fd6a104a602e5a7e2a339ec4d200cb7cab0adfc9f6958386d487ed0a0f0f3df6b38d76af0c3ed7fab5b5e741cadad2547ed1cabb0c72f0b225f1349b1956b8d013ed3557c5c2320e042bf2cee35decd09a2389ea563d3182d078e61d07e7fb234cad17282941fdcd5262d58b70146bd29d4f09736436ca887d376c4e89965367a9868f264a5844422c286e23d7fe2a53adbddd1cc0eb2af3784d0f5cefc7d737374aa9344f0ee173c3234bed4318833a8bc254a228e261f8350ca0bb2bc1837ed34d1a340301a34b660015cdd45ceb927557eee63af6ff411df604b64aa32cb55d8223f4ec8f43a5578497bbffe7a51eea493baf0af5513f0d88ec67c8b1c296550db0c7a9a5224e4c69a8028cbaa8061bfc510ecb1947df4a39cf75e5ad0f43e5381a580466291c5062755356e021eaf120d80303208b7e752d7e4989e53ee6be69cb1546f18be6549f25df89714ecf0edda799f2b1e6cc271da82960c66b5dec298b4575703e48ee5fa48aec9bb889e88d27dea5b800268007275e71a964000d9e8a635eee5da12704599faf1341c412ed98769aac162e3cdfc40d7f304fb3d36993cfd000821159e1d3a37c9dcb8cc28390224927f44a67cfa4a3ced99cdfe723fd899bf294e9689bae986de04bfaf92125cfca36e395411525aafa3b7aaea9ebd7e8349ebbe01b692960f8f9d4bcc4b58a3ee6eb5d2f4e3e7862576e95a1ef9bcee10993af14df309c78b1ae36f1f4664f810e875c6a9f530978385b9185849d13cc2109b746e49082b8c4b8284b8e45a4bfaecc3c131267d62e1fbda7f12918a4b24466a3db856d215eb9f6c7e1e62a4bae1b2c5af4ee900a8c7297f9aebf2a57f057eb7bc2f01bc573dc3c8e170e60ddb6bd546faf13a6e8e1ba864d6e897aa5e42246530f990193130fbe38defaafb28cf79dd1cc2618bf2863faad02268c483424915d45aee2059480cc7b780d801fe851b000437fd79ce66d221408b48a22136042fa3b305ff14c7dec1a0e6059295256f1858ca02b1504f8059a8ebac5492f7f15100af76d8e5a4b4da2bb994d761a886b09b6fb81b203d29c2f427f8e0e548e1a20619782d0621cdcd7219355ea8e11b44cad3127717a3eff0c988b959790f728a8e001287143447f09c6ff7e19f81c07b078f136310f007b8137edd04ef57229abbe20bf0dc0ab5c1e2e4c9aaa7063f27f77f2a06aa4327d37e4481b4b1e7706e909811d045ae2b8573d8fa8b1f6f96424c766c089c839b5bbbdc03c11583672c4eaa039836bf0c14af4a5153de5ba0ef0081549fa7082f871bbc6501e36fcc6266d847484bd518f95ede7ced54d3701129b0b49629d1cfd4bcc18fc0fae648eec475c9cda3ce2fd64eec770b4bb79fbb9c595f052240ec2749eba87538687a1cd5a52e59a643e3d86f97ebe5b05bce38aeb7bfffa9008739e0f32f63d7d1b82cdb7cab3b33126bdbe3725ad12c64770c75ae9372b7a1e10cc8c0073b7e65f2d0ebc964d90e98b5050ffa865147f7e546fbbf9c3d243b6f26b863953f3b4739425a14d3e30e1e031547f97c4818838bca79e5a7071585fc7f857a0b990a29589784fea8adec7685993dee924b80ccf4cc670f10a85166d66a03ba4e38842823208fc41e0184be25471f65f3ae148497d65f8fd667ad90e4c1a6f541163cd43f533aff5b64b886f926be27f42c38b29bf92980a75821e4114842f02d2562570a00039767f009186c4b6ab5a6615bb94bc811ca93ad4b9319e397f1648aa3b2210dd7fcff38996c94d34ca4ef81b99c64cb5fef89543fad8f064ce8f6cbafd3b211203a3c618a761a2d4e930528e8c11d7dd3e0e9b3d3e4b2e96c278126e738f0ad82c3044ec83d8a596035e7e43040669de3ecfc27d62d8c20adc4eb0abbdb2f514d6235dacb5b7bccc3226a8181a186798d03e8f42e73520086a2141bdf67a0292e2a241d82e4db53efb6bcd22dcd584f10db432d2c509963f662fdc134e3b5d43a2cef44a06f2e1c4c11286985fc2b8fd099ff841979357dfda653e66b6ce743b1651d1808ff9afc179553b71e1108a8e29a1ea1f8eb1cdb7b82ce6906db1f64c5e60e2f089ef7e70bb49d39fed2e3455746061036901893d28fb11ab006c84d5bed639a19783d2bfb8bf701f287eee9245c3382437d27077a4f28be92ba0b0788a8d0cd84a65d2a77823ccc42f9816f122bbeefd03853d9ac29401942310552f25f537e6ca354365c96da77cdfb7d2ab9ef774690fdc39a7801cf16eb420fc2b3eb6b35cece531e3b1a14d454057a150b7181b5876d49bc803f08424129c930424a13de17527c02d207b7c74371d2b6cebf4c8df0fef97152477ce60af556a38eed724296399143ff415a2714fd3995416889d7277c23a6686c5dbca5998ff179abbac5eaefc0310471d4284ec67e11556f61073f816691fe2afe917d3139697f230614e0b7305a2f9cedf5b7201a4333b2e2335e3702ea0ca9375d49fef0410b74cff452cd7738f45781d8f744637b8a868508f2e454b0d89e5f59699010cfd9867d0046a0cc7844cdd316026b832f9005f3ccb2df945f38540234097850b8607de88934c5e7dc7570d7bda65db27d340dd1474713cfc14b4ac8667090fd9ea75b8b21a395af0552ce2ca38c17ee138988c8c6723c5f7ae9dce7ebabdd6115ec9f5f873516c4432c8f536534bbe567c0184b506e03313b7520c1aba24789638bd57223aa651a08d0cc62558fe00792fc297ec8d07c9869b451661f446cc5228de61ba3a40c047c66296a53e5f0da809914238e6e65c08d034c1c696f9570e04d20ad0e208674d327a085c06be4a14268bebfb52f8688b43449511830d29caa7c3e19be1026f9bc013062b3208b0516aebbc06ed545f3199efeec08a3ecee39000a6ed5c52edce93399d6ed7c233bbbf41ef72a54d866111772e962842fcc32bfd3bcf01b9af1a0495771fbf5be487e8cbfa241975830ae184d91c13f6fbe4ebfb0ef0f1b29d908f3684b93ef3dbc02705713a4104abfad342e707bef03820f42edc6c512b78b5160eb05801be12f09b519e97ad620a0d657006fb3995f7f302115ab94021351fe310427804f72c3b6073a829deb3d3656b1ff6dccbe4677a905da933c8b50eb8a57162193b117c1d5df495f3526ea93f9fdf8494a233d5a4d8c5e003abc8fb9f60f000168f792f54c3ce05954053ada9a519003d5dc00dbd650e0aa273e6486fd7bdba05e6d4f5c653e25f1e3797b9fa87d8a9faf69862a53827d10d8d4815f862a6fdf5ce3c44fcb5b59fac79ea57eb51ca9e6c839a4a2010d3c975155657ab8e820763c576bb21f05eb37d21efab671f9e80dc235590b6711c14f6a058344963124fed0422d1750c6b2f1d40a74c6ae64d46e977450eb84a981b7f3594842464ad3fc4b2bd4e0d89f5349bfd13375dffd3c03e2a2a81a3b16a02be6eeb14052be601eeecd22618c87510f2257f6cabe8d64c1a5cd6d5bc9280c7d5b74b90086e5841d8e1bf39ccbbe821a5e65a952cd343da48973da806b16a61e22e9269c990bb9357dd4d9a5a173051a0900d6d68e936921f7928b0effa6c403318917b95bf4d3c3b9a03e69c856fc965d85a7b6161f7d7b9471614bca2e8df8b44f8a296eea8859233e402c97761ec9b44dbd4eed4a8ba11b6a3f5366276613284931bf41860453287cb76a19b7cbdb68da587edb7663f19205459819a9c19a959e11a552c5e9cd9ddb181fffbc86ef13970f20eee4f268ac0e273ed051b7f0b6413928abbf848f6844a2e1bb23138ba3fd6d0e417239ba5dfa5f0495f5e15f9fc1fa1d6c0c605c209befebfb4f02c003ba565483672d7e3383b623f07259c20d7c97e2f3598c670f38263e86708d4149bda64b3af084074b311aee33e44891dc0ade30d7e7a6e4d5579156f4543f938fd60e89f1ef0f9cbb2cb8d72f74c1a0431d3016910ac6f87cd8955a74717517a188c89e3a1001b52ca3038aae525e896c3c0fcf99fa42eba1b256b69a6cfbe9114ab3d56d0e0032571a4c7829b1eeef038bb90377b11838bdc367020e27abf9ca9ec194b3c41bebe383f7b0a97d56b50fa35ae96690713294d30b5d35e2e8f1cc6a920ffb78df234e33cbe1ff51694863c52dcb2ce223b43cd5188532940d7f790ccb500b25abcf60f2681db112d513c09dafe2a7ba8354a0a25a906ba861810c4de653b88fd11ac6ee784a2a950a77a1aa2a729d654ee16e3125d2351d86de465204732cac49604a0d75156836c6204b754a6f5b8312e5f8e59f51527aa21db3a34c5a1a9c5027afd4ada60364232e4a336d218c0a76066984664e78d9aab124936eb9263a74494ad32205de0cc08bd3b04ca9c7635cba7ebe5c8943d192bf4ca8189a690044a3027499d6497a0f5b07ef09fcc1fc1d8f9f25d27aa843c3d5d76bf815927efb0e420780682f86dc89c200ef8c5781ced2c1237e29fefd06da2c22076f2edaf80e2129672a8d6e6597df8954669065753afdca9408e7cf9ddf17dbea8522b55e986a0c650714caf07a15babb8d7fc69805bfd25a16cf2654de07d2bf5f35dcd440b6522f23278798c185ac188fea6c377436332fdc0474ed23a9b49b8edd471e4ba4ee6a51918923660c0758c72d19a4221d842bf3452ffc9310a41ab3dd6338d4592656a586f0d7bc7c41b1c8561c5fb08c542eae575f2fd87e91f008ce99b1df9e145dbe94df781bbc264ca6f826595ace0fc84e1113dddb70a06c30b970061d710502b00d09862f69c5c135714040fca921260f8b416e0137779c74c2eb2fa2242fa880eec2e69fa765ba062de7dfe095c9978de6c18d0523c896ae930cce664cb7b960220e1256e0c5e62f77f685c013fed87267b2ca5b2563e74c943d9edbde0826166ef756cfcf8a141c01ba234058999a85590f21ddea979c5d6707153feb2de493ec5c99bb570fbf191b0b39d7ec7aff3a6d587afa0abc5c1b781467f620cd1241454b77b90b94baf24daef503644a03faaeaa8759409c11a703df77a24c4799a3b09f07bff669cba967c70d4e8fbe563a91c6f3b0164e7f3429e720ab95f1519c7d8e6adf81ed126bafd9a581360c58533a0e7827e857a07f5824254b0dccb38df49226bb6dd96d4bb9b74c52ca4a0870089c0853d2e89eea917292c1da1804c9880c64b478937d76d1973aaaffdc16e07f511add9f031678d9f49dfe156ff6a4462cb5d40145d001195aadf00955f0a412b67cdc49010fb0d0441a5af0832065f09230010c930a80c51542acb862081392f05c0adfd1b9a8c28fc0b4c695edbaaecb8a7dd5ce08958e600b2d9420b5c416216059e15d354de4d0cc5c243e9d12ecebba7288d89709b82043a45c58818b23b8c384863291708425608105296ce0040f33625148316ca121a5cdd766d6c044ed1ce296f3c77e911265fa9cf304dad4c00b6a5fff6284cba7cf3967f59a4ffcbf1c3a64a471f92360cf772f7da99400eaf1784c5bd3a2bbefb9b12c93ec2b7f2e3ff6f5f1ba9e7e8c3d6412b99d473c71dd0302f67c7dc20302f6d4273c3802f6d449e68c73461aaf4c89f82f22f6159331deb86c0e30fd2bf7e06ab674fe9856e29038c0f1ef5c8937e6f61ef58407a7ef436e4cbaf423e41c6deca713168aa812f7c7ed986922aad0d18e3c6060dad1967ac2e086780a31dcf51cc6711cc75d90e3380edfcde3d1387a367983dc2041623cb2f620e6c25cf0c2c4d49895cf5ecfbdd7f3df8c99d6e29b2f1753ef95e0bd370826e189812106745320d0850181407f41d04d8140370604025d18096210f67910fecfc7cfbd416e901be40689c18981b93017bce08db93017e6de2d468232c6ffeacfe65aebfcb8e9cfeeb96ddbadf36f901be406b9416236b760d05a53cc9b79b8ecacbe765df8b71e6e2be69d4cdfec71f618ff06933d961f77163d1867d9ddfe6638f341fbed734c1f7367f5e24ddff778f49d5f101be738fbedb9b7736efa6acdea8ffab4f981040ac9b661c71a941328227b003b1a49d2a2d15f66f9616b5dbaf46db54f5a6bb9efd8edb3eaf180acb59f2ec7791ff4c11ecf73da47dd9ece6f3a08d2aeda6f3bbe171e5ae7bf8e671926d1173c6b1120e09eb1634d11454cb1250a76ac218266cb6caa65defdc518e30d892ef3f8b0b7efb2e5bd55665f7bf8be0db0dff9e8be32b9b74d5efd519c3fbc5f5a5cb0bcdfe16f43027fdc177fecf4f7b2bbbfdc6f3052f7f0dd7d8ef9c99fcbe671dfd371fadb62b684d957f69cad9f8fbecf49fc01759eff606cfca0b720fc14ff477f16df97cf69daf9fa9e686f0fdaeee80ffbec4fe6db2ab1b42b98a9418d8188d43eed58f30367ff606d01ec58f3c33d467e785eeb1f79f468d9b187ef6829fd1ae316fd338feb63e729dd84f4f02de98b8b833fba33ed435f6b1f3fd63ebb9fc7bf8347d59fecfc0bf7fc6741ff4d1967f1e8cfee7c3f1f75ca701feabe56fd85767d90fe2c4be8412fca71aa80f4773d1fca1f8d359729696ffa6ada47dd1d9d61d36a1ef2fde7c6837c1d9fba8c6750b05248487d6d0cc2286aa6581db17119ec210e718861108651d44cb13a62b309711bb7712c3698cd8824300e9160a4fcc9631022c148f9d36644121887483052fe04032c71880423e54f9b119b9010af70e8c32870b819b1c1a4f60cf10cc3cf8657d36042d2cb1967c94224bc19c18262c2cc981963254c143419e3f4193d7af42bfe754529dd63cc72b260b5fd258c14b2a5cea40e61acc47d4d57a9b15c03fc91b6fb5b8b493e03cc23fb6b7f9246933473a5f3fed20919ce9528e60a36855ccd154d5f7faff11a9fa26afa82b3d303dd99cee1989444e669669e54f3e4afc9194944aae68a7dd9b9a4ca95c8be7369a701b61ff7479a9901969b0463ae60efff2938cc15faa7bb3fb93f7d63e6097b235d342167e6ca2767485d10d9fe304e92c85cc1b6bfa4992bd1481731db5f3a3159a4e7343788cc01cbb40fd727efa4711639635d7f2f32ebe8cf47fd2448b381ece58c76ad6d9dd9fe58f6d58d418dd9f3c3956ad3411ac528f91117838b517aae04c34c314c99dedcc4d0251da3d1531f8d1a80b99f24d7a36b742fcc3dcd1f478079aa314f73c7e89d1431bdec8f48ef24227b7ef6a7b942faf9380c297d2983ef957ede1081c19d707a8b992718ef796cd37132a43343649e9a9834a53c9d9851cc6c31a32d6634da848c46da9d30588cb3947e62d2476e55e2f47749fa0b916e36233698d1683302038281f33431546a7ff46675b33a62b3193132d98c78313231e190c0df1c72337353823332195242fa9237c9dfcb3679f174d361f29ae47e441a8df08f4641ec8b946390f4e863ec182525cfe56f83d9259fc34df2c9976418ff227fbe4ff4a603869e26cf914aa35169447a1fbd788ea43f93e7ae1fe5efc573f3da5c0478f4743eedc25ce97e8e61ae807e3e6dcd95cfcfa768982b98341a8d603cc765ee43f97bd9a1774a7f943fd21e3d297fa44dfa2b9b98fc8b177f72f23060c4788de61d7163fc74f41cd5273be2a6faa4e44bb61859f471db114397bc08469630fb24cb98fd224b21db24cbd4be32dda48cf7289376c996c3435d06e5ebe23cd8255f806f369c2ebc00cfffe8cd9ea4fdf9ea66d6ecf9d9e91431fd1a03639a5c21a9bb0053ed2ec0f2e54b3ae99cdb8f98734efdd1bf6abde6bd64bdb08b4d7a61f67502cb179c94cea759fa20252625c5e4b6126b22bb223b92d9ec0e98d960387bded7a4dc74883e5c95f877a12f799f4440dee9af65931e943f1fdbf5473f947dcc7de9394d3ef4d4c6552675ea4ea9539b19d225ee4f4bbca4245f4fbbb8d97947235d44a1f24b371d43b8d77ceb41ee23f057634f3b9f0025a497364d7c4a3ece95a82fcc3c7d7edb81cdfea33653359b983479862517669e2e5a12b3bfebfd73cc8ea67dd40bc75948a01a528e53c575bcfef4fa12d7d7cd3ccda7faeac23ccd0bc93c4d98fd519b1aaff1297c3557be175d32fa0dbcecebbaaebfc7f7f5b98c4029fccd1d501b8ac55c09fd7ccaa2a3df4148f4a11fe5ef658fdea389b2ec3affee6f57221285420fcadf0577e873f828e30fe5cf7bf2e71beba8e323b7931eae7dfd057a4f3784f43966092977face13a51fdaf5f7b229be9eaa81362bf7dd7a9099ffe2088c2de38d6bcb57a9b2bada5ac9bd9b7c8d74efd603b548cc95cfc6ecb9432a8c116287ecf9ab78e3b3e5d723b36221bfdecc9539b78c2c5626bed06ab67c4b831873b0e76b9ccc8edb033ad6e47253d34c393ce109148e71bb6b08d5d6d62a9d09dba6a323f3add5da5ab39ad5cf7edb7464f56fc9265fab1b0432ef52cd130dfd8b35e19e54c655a6b6daf5bf58b3c2b366d7974cf0b8cdaef9d6d7a88ccc762af04755327b3e55555f02b65fdfb3e9a89abad65a4f1975e7e4d26c002db0663c0dc6a5d9005a4461e369312ecd2711a07ffda55b0e0024f4a88eaee26971964a31739a4f2818ae9001bd880631fc60e569d9c72aec0008cad3ae1c9d600590958772c113381eed8111319ee7d2dcd2729960057a2d2e1a1970428fbe8bd4c10f1a8fea2b5e740738a07765adc3da3edc74693e40122890f1b4bf34d79420e4c037c496da87532288d8da76696e895fa00116a1e7c2adf4a5d9a5062a0a94b7c4090ff2ebd7978db2852db0522ecd2e39e02c6123a3864bb3d65d9a5dea8d17a70e5ae852ec5b5c504f1f8569974b531a5781027ff46ea92263e6f95e761786f08318cff3d5ee799edb4eaac30b344de6e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4488937b54aa0583db2e3579b1dbfae767c5782b5d66a930614f4969853fb28b827b8a56e8943fc405b906891d972eaaf25b5a5dfec20a89d272ae5143429e59cd3d2ebce03e637f252ef028ec46474cf8d23615dd7856198a597b660fc9342d85a7b2d45a59c4e0f838483a54b81bf7b371ddbb68530873b50f7c11de7d96ed7755d34f1486d0b4d9367c0f1b59863ced8cd9fc7d84c991ba96ac933e0cfda6906b9cd782f467d62128bd5f3f5d847348d8b38ca1877dc2d5fe35c0958927c888bb7bc25e2639b0ef91801b6b780de4a82b76acc53f4fcd58861fcba3d20f3a2ab44ed5260cbb911fc613cc4a5aebc25e2773a9b8e88ef10aabadaf2bd06cb20ea6afbcd8eef46f047ca6cc52e8dbaa669da9491f37c2f9b8b38fedc74d81d91803fea94524a27a59252ba79e816900063608c8422089223823394c08811704a60e4660c45643b3ef1032ef0a0891d43d5cd66ed18327164d7a0ac2d7f65cb8f9ebfffc3bdcf3da741e0f9cbddc7585fed7196dff86acbe7dcc6a39dc65550de4ac9f84c8c067a00c1bde77ff07cdc803801c2f3f8b10601f71e7d62dff32f5ef44e7ef0e2d6e3878fa6d9f221103dac4f7e586df92d2f9ecd96efe2c52d022756ff106ef99e9a2de32681164ed3199f7115f957bbca55683e9f6939b8e16cf9f7fef5184785ceb2da32baca3769b6fc4dcf9a0a3acb44690d82fbdbf7bbd3b20410f20b3e4802ca2362fb1697911659a03c142ae46d9a08c7420b2128ef6a7fff0488fbdbdfdff403a477ff2402f7ef5f7d0201e99dfc70ffeae8454f7a4a7f1eb31d74d496a0550b90a03cf9b2e52cd1933f511d9c4c7f33d519431acc3005cab3fa9b32332a9aaabf1962fa9b2b0f12ac48420cca9bac2dab3862451428ef9b373896c083d0fb268ebdf4f7547f249ffac35b7a3394b5238a0bf6a2cd0e8b8917b0e009314c3001064df0b025a0ba2042ebb3a3112268810858282125dd734e777f7fb95dfb905bca1dacb64b52ca3ccdaf1155e6e33dbf1a7bceebe336d5b866c0273d98b6ff7fae4f78d8527f76cfff5c9fe6699e26dd29be825d010554f0c2f60985261fc974f95facd98101430089408c68d811bb648eb9f29d143057e2147212609e628ddf5f8d1dff84c35c21a97ed8ecefb7951fe56a06dbb7c0396baeccd374d63cc9b746c2235bca1cf3c5a55c817b8c31004f1849020609122448f61422912049b93e5aec4fac5ec0dcf6eb9fdcdddddddd6dc57e8a1d529e77e51855b6bbe3489f49b498a261af69458a40b24f3b1629c289dd79cfcbc7b43b3dcf6d0be8bce7b5cff5481c253207ff18e3db1b6fc41d7f8b37ea735ff2d81092a4d90e78f4993cc99fdc27534b6ddb51fa131393ec2592b962f29ded85a69d9cc5068c50d7755d289aba2e14bad99de95f768f85bee67f9df53777e8734c6c76ddd4d84b8b0b7d09cea752e260537622297a8c769a47e8aba42fc2f4d43ee60e7d9cf327dd13d33c429f0f89648b3e4e96d3d422516807ff18534a3d317dd2d970162160f0207fcea753f49f44b2e997b267dbf13fb7cf9f2cb1bbed90cf03fbd7248665f9760ad95aa80b8542a150a743a23765fa31f2e8737829c72d3a394b8cf707697f1bce12430bf1e97e62150b3d36b1da3d86851e0b2271883e1bc417c40de2d24ef3d018cc1689e2d680f998fee40ece42c21fe3e7c3b7ec74484f7d127afaa217c27fbe08eb68f7a2b7db0eec7974ba62bf43375ff4f847394615dff3452f83544d5e3b8449199a33db1266664f270bc955fcb38f4876dc443fe5e835cb633e8cf7f8a4277d24cfc813a1ded1c813abbd43bc31df9f87384d722465e9bdc872ce3969f01723cef61d24f01760c00f14a8c05cc9ac49cefe458e5b24fa2e7f2fbbdb21936c4a2985d9f4a928846121d1e7f02e9fbc2867afd12bca71bfc8729b783bb8e633cf8d6d12e07ef4718b00f725ba457241e595fc090070bc1600e0781608f8f1bc1403a9818411b0f6dd616a8ab7a852a408223b1a915162d3d8b1081133d83bc41b72fbf310596ad0a47460e4053eb0620c5edd18c9c6ffc974d3f111bd2612fd8eb845fa9e01dbfd49215bf4b108112ed82f7b8af2373f9441212df3cb9e3e7c83b4cce19febb97c6d3be6962f698e3d3f39b3670522639688468a1cf10531575bce7cdd05cc4d1f02d38baef229604f10a8761073b5a91242ccd38cad3d25ca3b599e8236e5b623638560cfcd07fc22c5b0e9e6836df1245bbe5f615f9b0fd996910637b34c22d1a00ac1ae9b0f255b461af26316db6e3ed40fc83fd9d9e6c3b5a5e67ac8cd811ea6245b7eed6277361f4020b7a6619746e9a5d9b5f6dab47bddf371607baed65a6bd25897f44783f4755dd7755d94524a291522e248d627a1106515521409c28e2f99882c42502a552d8bc22029e653271939c3d5d4961024b032dea43f4cd21e14714a1147c660cfb7d1b21ecc914c8f4bdd26436aa01a37ae017c47b6378b3189f4587f5fea74a741516dd5566dd5566de598b5d65a6bcdb22ccbb2cc43d05ad08216b4a0053b3d333333333373e3e2b832075f2208902cfc9f9c9132f8e41112059204f2c78edf81c822672eeffe8bad1dbf8873ba7916c9665b8b3189f47f3ad590335e42c19eefd11f3e62cfe7f44792c19e6fd272e6de40ce3cd69f7cc29eaf1de05e22d85a8c49a4ffaea4ff53f9686f71359c145c0d57c3d570355c8db5d65a6b3b9d4ea7d3e99834d6250dd29d4ea552a9548a255992255992255992b5278e6b807b896cdb0ecef4324aaf6ddc5355bc21faf99489c8926536e8eff309e9cfc4a406fde55ca23f1595fd5115558964682bb5d5b4ddb4f568cb696bd29fc525fdd120dde9b94aa552a954ca8baf1de0ca1c0cfacfc68e01f8ff54f27f59ff6782f2df67c7cf224bcac7b733e52c29fafe882af35132ab3f389b90744ea97c746ad79846b2dde98bba44c09f55a1e66aaee66aaee66aae34035c99833df456e56aa8eaa2acaad3b1aa8e5575acaa63551dabea58cf5e547651d9456517955d547651d65aaab25465a9ca7235b5723595aba95c4de56a2a5753b91686d516565b586d61b5d5baaed6d5ba5a57eb6a5d2d6b312691fe4fa71a0ebab5189348ffa7538dcfc13d3b998d34b08f8e91c655d2712be91869b88d5bb3e36b51da987994803faafaaceaa35665f7f7e210b0a6dcd97898fbeb40f69a5fea01fb1abdd7072a0fd7fe5ab08d076c7f20b8361eeafe5c348b594fe94b9fc7c0c8dfb439c9df9479913f79a322e52fb66258924517b5e787f267bbfcd120ecb9c59effc9df75832b8b8d1df16155ec4a82af16d180dc9f55798c955fe563b2b56348550070c15edce57a295d571a8e68d13b54e0f9de59029e2f52e2d062ca178a1102fe6ecc8d992b42260b9d2af3a711f074163cb1163599b127cd156d5a6f71d826080a6eed16016b737ea7f39cf67ce7adfe7e7f1fe7bd5b66b93bf973160ecd7796b3bcabccbf54a39fb736bd68f6546f1263190ec755e6df9c7066477f36f677635e7c3786522c033ce463d342607a99e66e5c65be5d01fe702a4603747f38b5e763256c6a0cfba34a6cea7fe5540bb8af8ae5efd241786b536d431d1ab826ef47a7a86de53b0eb6d2dabf9ea224a76f6cb2f4f0671af7b6a369195bfcf6b9d72cfe0c5b0e89a3b6a45beb024e866fae904596e3ee441ab693e7e632922b646173dc19bea91efb56b3bcca8a992b9b90b982531489b9626f19b07dee31d6125b4cc57df750ecb2dbe9db1d377adf5a1c9b9b1b5759591b56ca460d8a3aed56cb5524f7d94f7f366bdbb5d842c4b1bd7cb771967ae337f146e8e57b17e68a0646a01795bc749bad41b9e44319db9effbce8b55af225f21a7d8ed41b6799385bde60e12c11c826947d8b62a4311acd2d3ae24df02a4259ee518ebb4404d2433a2d7a918e914628c7ddd97ee32cf5e53b8eb3742f75976d66b62dca59802c117a2cfaf9150d734503a09f5fcf106f7000572e228eede75354bcf179ad6aa12cfa4fc636e896018bb0a8444b2cfa8ea8440443de4fbe688cb34c6dde4fa65b1480ef7188f4c91e22f5704181e6c639ee50f77d3e718bbaafdfc305b5437a48a735ac7a3028636d33b7bbb650ce323feb6cb9623bb5298dc954086a7e6d39cb85c258abad3dbfb3048c5d77ab1767cf6f997a7ef3bcc7c379acb5d7b3e9cf7ef63a1cfb8e96d876b2dd59a643ead3cdad8dd15ce4cb75c558c2867bc61bfef13319332d5ed775e5b061c38de0fad8f680ccbbdeddbdc6e9846118f6a45843da61aed4ac7eb6e9909f09a9f50a2c83a82b9b9aa76963e669be46ffc5d3349aafb73902f42fdd825d65d6d510aa2d5f6e43ac13709d2fabfc88644bcda37e44b225a532b1e6a3129051620706442cb2eb52d46c9198a7f9f20b383e0136b1affd591a245473e5b334db89b912a9d8f3adcc5c894f80307bbe55c236b1e777f7d2ae2c3d8d66110b92dc78293454cc78327a700695a7d14bb38c23658891510513284fc32ecd04e84112663c1d5a00849a2e0c37b0f19e0b213899045b849ed6b934839868d978dabd57a61ecd35fc5862e569f7d20c3a4109581e288915d03c38a4c6d3b84bf3bfe00c294ffb5c9aaf77b99ae08219efd2207d0422569ed6d5902a428da785ee95dda359061559809e26c21ed32d2e980dc23004e5b5b8d06f7121001550ded5e2427100061a8f6a171cab1b909021c878da288e46d3a3b9a40533e369a2924bf38442083db8f144200417c88420fcb10a810f84007ada0b24645a9e76722409222b4f8341c51626b0f15cea4d13d260d3f2b4d2119821d4782d2e231a2f4e1d5cb815a948175acc78da5351c4082d4fcb426a6a3c4d3fa10222339e86422384d08b4c88c206319e26430545dc78320910245a9e66c3a5791251021aac3ced84851095a7a95c9a651126b8c2c6d3665c9abd09d8fe490ff5b3cf340fbb6fb834c72241a8428da7e15052220a75a00fc6c1e408684882a6445641a385cc680747a0f134d2a55902214286d0d34c2ecd52c8cd10623ced050d4e80f2e2113065138f90052222125a47ac3cadc4041ddcc49ca229763c39664d9804d0f31c738b34220d33083d17ec0a29ef1e090315319e4be7870cf6d763ba254271850f40cfa53231e3d1234ee841e8b9605aa008500308dd228f70448be5b5b898643cec5db22d561efd4b9f0071bd06c5ca0832f506e10910ba45a2408b31a4bc96eb5d302d501e7d4db7c42359fca0c66bb9b40bb7f2301cb67c172c0c3753872f8463093c083daaa94ab7602308d2f25cea8db7845b81e5bf789244f2331c81734dec1530507d01a6c633a58934a601aa5064e5514d55ae32ffc5f329f0c9f5aca3d226e6c956edd97bf641b77d9aab912ba0bc16fa2e520a5d58794b74fec5d3720c738da7fa5fbc1c5e730f19bd1ebeada634aa2af0178454ed4e206ce23c424c77777797d6624c22fd77200f67c29dc5a43fc9009970e903eadcdddddddd4917f41be8e3163f206ce28490d472265cda64486d93dae64971daa7dce110619127a208c310e545ea4aa552a954ca0808822088655996655996d2312e089bb819cfb4bb896c08d55022cab22ccbb20c044110046fce5fc9a227e06aadb5d69a65599665d9e6b1d65a6bed755dd7755d94524a2975777777d3c556abd56a15ad0a04411004c1d2cdb22ccbb2ac66201b9b8eeee5068adbe793e3be4444b7e4ba147105d3c4d3fc0f0f618a1ae189e6553bc618e72a664707fd07175b6c218b1d7f4221b2d469236367b08a34697e86a71a5fd96c1eeea3bf13487f39ecf9b4036d1ece84419265350b2467666666663a217070dcdddddddd43b761839aaedb99eaedeced4c9aed786c441af30b70c300a41b3ec5a2d8088b3c11451886611882200982c080200882a0e88eb44f099b246bb65820168bc562cd13b4b63fd5900132e1d294322cc6dbff29fb7c4c4c720695304afd8a3f26ceb3499604b1582c168b35c3b02b496deb4010044110e43e209d3bddd2396795d73a0505622e3f1014dd6ab5728e1e8cb9a236846a289914abd9bdd65a6bad3da5846eadb5d65a10044110047366caa7110dc3300cc3306badb5d676345a6badb5560cc3300cc3dcddddc3300cc33004411004c10b044110b4d65a6b6dadb5d65adf5a6badb558c91d91361d5d4a6edd9b802f56521409c26462de60c79f32882c72266253e6c6e2e01669a226789a313566cac6ddddddc3300cc330fccc1c210397dae6017d38130824b5cd934aa552a954576bede40e5db26416d20a1209eb8341a7e9e1d41ecfc7f3f978729c5250c2224f78147305a384e1294c09c310457b714f723c256ce2e66aae3813f6e86f2699d6624c22fd779c0977a01236a574252dc7c4cd959c2ba96d5fd2ab9964cf97b6c3a4077152db3c9c49635dd21f0dd2f4f3f1e0fcd741a758cdee0d43100441100431ac669debe16232c7300cc330ccdddd3d0cc3300c4319340cc330c4300cc330ecbaaeebbaae945b6badb5d6cbdddddd4f2e8c1be382b089f3cc546ccd94877b93fe48a6c7da4b5a82328ffe3e1f4e7f262626ad1700c2b8fbfceb3fc5b8539bfef38cd759e573fed7e8ed50beabb7bbeee71bde34c362b5633b9eb98a34e6cf2a220d2b3e791ef90f2e81a1bbbbbbbbbb7b383993263b50099b7e7628574bb92d5009cb10499c9b2fb26ce28aab0945a18c300c4330c8ee834b527f6f4f1ecdc99c21522013f70f44bf5f50d6da5a4dc3300cc330acd56ab55ad67235b5e5eeee9a8c2b736ab8eead568b0ee9aeebbaaeebaae1621886611846afebbaaeebfa4b55f9823e25cee3607450060e04db6ab55aad1b251e481c9a9a74974d9dc9d475260f238df95ec49ff028ba0f97046e0abb3ff6f3f1540c5473240e937e20f98b9049bc7f9b3227c51fdf8b384a1f5f017105f451a250d50d32e7f3f97886e880075a6e48814cdc494ea7fa5150a297673c55a5a0d8709d5e98b51d4a69ac663b1eabbaaeebbaaecb29a594524a29a594cab8374a1fdf0311c7e7e3b7c415d09ffe933128ffffc954ca7f121559d65a1c4f3bc698a577332e95287e3b941c3d99b17ddd2e5f5bc3347b25d6a155c33a1eaa8abb94291391c6fc4fa63c9039cc07658a7283ce1f5c02fd3cfdbfa6377de2f447b23b3a8bfe64cfe73ce33fabbc3623474f45e55ed48c7cc37b4eb908179477c3ab6893de538e9e27635bd3cbd3b939dff09f1b9eabe1569d2b6ab5e3c91169743370099472038abea8fb23dee07efe2542e230fdfc0b64ae60151b4a2669a3869c3745d38bd98b4a31e192ca09456ba74b29a594d279ba9f1d9f8851d0f82fdaa8fcff17593352fe8b2b6badb59abc39e3f0da27cb7d51b37b0d876b5576d3fbc9756bd7c534ec7ef2f5791c5e0587d7b2fba95aed78b6b7aa7803f4f32d13f1868c9f6f79207134a11fc87ffeef6f10e9cfa2e88b7295edd1c838e4e82a9ce953b2a673f4665c90e9e37f9d1defa90899c4cb0f24e5ffff23ed486355ae32b51a2e28476fd5960db7bb4454ee2592c38d5b88594428c4df9145b2b049552c1b4225fd7d09eb0439abbcf62a02b82a9555559be98e56ef6f1c67c2a5930a8a4eb9a80b76b4bba5a4bcc67d3e2a32a4b6e51c9146f737a4783297bfc842c9386757fb1cbd0ccad6c35d14fcb9df89443a47ef94a3f7c97153956ac3b8137525a492172fc2300cc31494aee47e2eb92627f74d6094eea3640d0305e5b5ff3fe5e8a5a098c08061ca269da26ba835586badb5b6d65a6bad18866118865dd7755dd765d25a860d324e334e38541c729665599665d65a6badadb5d65a2b866118866136aeebba2e199b0e6dc6cdbafba972738e9ea6dd40e3a26800d4b81a2563f6ea3c036546bc8938031840adb5d65a310cc3300c53c03c793bd2e87e46ee5e25771f6fb800a8715372f432000230809bf38c143de35166bc16809494d774d0a107b74b8f92a3a767aad65a6bad188661188645bbb348a37b53eec81cbac7f9ce53f72ab9fb19b9fb94dcbd2680fb0109e06aa06cb736800bca756b3a5c9da39792a397b1fd397a9a5f50beb6b6a2d9f0ad7311a62429b9082e49922e509ecadc3a17a15fbb713fab3c28cb9d731142a8c8ec4eceecee3f4b8323eb787a70fbf33947ef5372f41c04411004b32ccbb22cb3d65a6b6dadb5d65a2d263d66ca2df3d43dce1e9039745fca1d8834ba5749edee4f397af72839ba8ace1da594524a6dd8b061c3868d3d5fd3e182b2dc5d969be586116786355313059304f307175b6c21b2d8f0eb4665697048aaf9d5c9c659eeeeee6e63d3366cd828d978acbfa8853ddfd3655445555445551d08822008829b0ca981b86d0173b5ea6acb3353de722ebce52d6f79cb5b188661188681200882a0b536a2daa8946e961435ca14a211000000005317000028100a8643b2388f2439c30f14800b6986585e48320e8986c128c77115430629438000808080c8c8ccc40902ec7a292216d937b34ef0c70a37493035e0f43e2e40018f44d3f5482e11fcc385f7f69d1fa6b94bed491bf5eb5eff8779a09c1e7e8a00a2df7e2ab5d4142af5c927d1104537a6dc9ca603fb6c74b12ba059bfd434691e5963252fc06082ec6678e285e35a28af82e051596449a66690b76b829fa9fbcf713794c929f746f63004b71d40ba00e8ca77b496ace688909d60e925d4676860e861e860e90ef6222a9b8bce2d5652451211ac347d21389a2f15d488fa8bf53262502671b86ef2095f806fd74d1b552153b5239061b6017b21c49ad32219cc2015c945f812c3dd98125e91457835f2a2578d3c88f992b9d404b4e69b0e10c2f83bbe34c700f5a6fa781250936375127f6c6a58bf2e08fb933030fee1fdeaff8dafd442817010ee4030a048c80a9c558754b86b6aff8a3ac5653276c92f19959d7f34a03670304bb07d50185053c62fd0f80d918a397ca87f75b0e860d40f134fafd189e055f28ec60f2b55cba9a89b0239eadec2917a5496f9538243649bc92b1d5b1612952476f8f1f4a86fc6a5b553babc81027e8daf7f5d67cb2930621f02accbbe865fd7f9c2d9d8e49d1dd2a501351c77891e4737d7ac3a2c111e372e589376118443e31c2c82d2dc4473c8065feed7a879e300c55d25ee2a534aaf2e731fd7cacef4a8aa455440a45f7cc5b9ee12f26847f0967020102b226f7849901481415973f225580668925aaf2b64f4e00530a02cff5174c171a31b71da3b0b0509869c9d0eb69f56952888b4ee55db401e25d19c6add34e7874acd2185494855fe351db811e5e6468791d0a6694bfaf7e66d8e5422e152257ecf9cec96b0b0ce3593718bf0e7c047830ef2bed061af890ef4d9e8604f930eb90586117f6a90fe3483e8af3a88f31884d07238bc31cc578a5e7e407ee0d4e15c033b58e231dcedcd28d64397147932d96552eea0449c0939459f50a47b8d1dda4de859951552b450151d42280194b877bda42d4fe4136d31625a5221a928e353ff22def425d514e28b11dceac2297c46d59dcbf3b8faa2ec72d13d3de48d9925dfd2ac2ccb9c455918b107c00e67934df944153b058a19872700c4da617f463fbd082173aa888022e3d634b473b093288b115bdc34aa952a4f48e1bff993abf21d7b796ef74fe62b45cef810843b6a30337ba110cc60e88f95180aa6e9792531a6d612b7194aa942b4b08ca365f3ab896625d59e47bacd4f733e4d4900e2c693b865f953cf2a4f3511e1772308c1b265c65676cfdb7a17aabb3f61bbaedaf4149be03e5855f848d13c123f52dffe33381e9376eeb3b6e79fdc12e9e08da5af8f3c18a7f33ebc2fe9229110607a90b8c51934c591554512e897e9693661d6fad3d78a8b488ecd0b90ebe81ca3c4a7357fe29d197a7ff617722750ab95ceb666f18c4a0a8dbb60b1e94f0c87bc4b4a54ba84e2892f89024d0c31dd8c5b2992bd2bc857d0dabed4955eb376669a17e41749434cbc1037a45de18003fd48671eddc87546cbe8827e03a3ebbfd029679b68982f7d05b10f5cece3b73d02ec6b3a45390873fc77a2881e7870bff32c37f30aa873cbf8e924b5b88acb94bcbc5e939dd7b3387d51fc66898118cd01f53f61e8c923c32f857dc956ec12d8d06170d22e3378e6359af715beb4ef9cf0fa4aebe90b4488af9a98986961da75dd5bba37f52ee49e46146ada98080395d1bb40d1d4678e0efb932281f49f3e4862664cf7b52753aef77cd04769c395eb3161b2bc6fd6a7b99c9bc4447b53185a7c69d040a4016dcabecfeab77aa6d46bb1c70a4ec865c249c0379c1994af2af4e52870dac5a1f6030a506d54f07eccce1aa790d177fd96294364dfc6f089a2517d0d099cfc404424dcfad1ca6d48f2c000600097ffb98efc1de4a4fae0247154b1b6ca20b664903d5911c2faad50e38f863a147ac8e1486de7b90d3b04c00adfe7c3a2322b79b11e45a0528f90a7af7b2079aea573da3fb6eec81529cc30834ef07fd8c6c3cc7d7be28a72a201d0e156d6455cd22740448eadc93c8e1441681c5b92dde7a85860070a6258fe6b17b51d3602153f6e1273ba2d415bb8094d73511212298badb0f56f92929c1b4113d34509ede190b3dcc4a692fa882d6f959c80954cffac6924285f5c9a046ae93e21461764173d44fc1f7bb1eb991a321e072e661c2e089e1ab1a373e046031357c5e45ef8f4815ae05febe9de9d25a786ac638156e9797cef1a634683fa6e0a14e0079d5c3bcafccdec82f8b7bbebf16d3b9d296ef749ea7699076fb7f9ff7625c5e0ee66c21357438a742dfe1d05d683d7214ddc4bf05a0be874daa91dc3ba74eb74bb68eaa84c6c836c98c3ef508a2e3f30d47c81d8ca3602e160dbbee4d68574926bae692745984553f7dfd996fce83203fd370f38dd9aeac77c6db7835aee4a3b287d3a82c92a634f8ca98a27f1f759bf1a5e0f84cee5a0ed1ff77fadd1ba43eb38b3ce2f72b9e3dd630640c1b86ef30af9243616c340cacbc6a7f8d413495483aa1ca3feb2b731731d65a0b71f96d24bc856fb083f9296c3fe45756b1ac5188379d4a4d40d99f1d2066116ae4bc935a6fd890a281ac922bf261b340de064c6cd6fb8a2e31ba9347a832917deb04babe8f4a2901f5c994089d0413b7ce5800b08087bfc21042bd937f21c42ddb66e649a3476d81ac481fe069596ceb67d3dbfaf7b141f94451f9b08558701afd657df7a3fb722e55888eaf69eb4dfba4875233b8061161fc62f84bccd4bd2cd68d0a72ced77bc523852b7d11904a5c250da184c0cf079e287f6dd1161fb065940bd3e28db427cd56bec4cd6ca96ac566771ca9d47b9c3a75f87ce73d7711790a77847978407204c35f4824b066482d94c7950a69b24350ae2116f7ffb63494ccaac71c4711bfbfb54db010e8e140b2456fa258024a639f1bbef0cfea22d84683987c0a504d80aa166abb9dafcb118dc3f5145373e4dbc1d2f5dbeee1a2ea6af0713f1b134261e29750c34a5fa67543ac704fa6090ad9eb03453f6d29ca32842d9832083d3a9453690d58a020c0d03fc99121423ecc03807d40a4ffc57317a0e708ea200a1a5ab427569e980147f8f6d71764ebbf42ad3695fa692e0268951cac9f818ca7d3d92e36253be33b4b32a4fe92241a80cbc392c65b3f8b32778d3d4270196a4e61ca6e17f7625fbbe79fb8da6a00bf9b3aa810842dc0dfcb66800c2fb63e7325ca6ac0344d3d6f17fdd7530d77f1d28d0c38e23cc83710c79477a473e63c0ea830f83eb3555ad492be11a147229c7f010045e8cc4205994f72220d583e62bfdc3412bb15e130f78b2a8ffc3e6e5f8dab9dbd30e4d5f150880382d2c2c41fe492f987d50179257d219790fcd684b0eba3aa1e083adfebea69cb827f093a0edb8790894b12635882d44d49825851a2e399ab576a3644de18b4fb197f701bb796fd03062a1a1538844f86c620d6fec25b81d8d04137446308b92fe7b5d318c2b963387c6771038dae56efce5d081ee892c5ce94448989c884ee0262283dd4b99d586681e40b09c73e79697b9c04a1002a78ad5b8a539fc888722ae62b9e7a9b2c7a3fe3e78fb0b8e99c3c1ab5cf10ee10c5ed63e0c4016bc87ff3c392ff932676d8688eb174c2a2b861ce157d02ed661f7bb487d928e41dba907e7ca785c8c2224e3947d2a0122f16e821f77b8c78e7213c7af86a8dc94607d75aa5eefc01a0f254d1c63ccba140ee7f53fc2f01a4cb13f353f4f752ea7888f050d0cf9b11f0cacb2ab977ccef2aa2c993a589c25d153725c1814a7d5b8ae5185b59a152513f07dff094abf8c69002d7b5c0e6f2f8c45fcb766e3576105d31f4e2de4aad483404247ccd8d84e9fc74e214d8ba270a66d499fd34995eb11c6899e1e00f0f079ab990a5ddb78902d8d0845a1dfd975c6d2ba9dad95a71b4b5cc8ab14066f1028f854beef06a110ecf29ccf8f7033e5e903bef6f037146992b9b7c542cd00769e8392a6736cf991552129c21d9faeb0415a87352bc0742e47873d5c4dccfba484218836dc49325dc1931c28176375a92c73c2c41ecfc976db1255dba1e53a91741d94b0519e14eed1fe41ac187ea7b06b7c3947ce9362bf3f05e485b6d77c60b292f43d49d6921732544fdd675cebd3e31e3cb6174d09162073f5cd2cf1a46f1d1a726015a1fe59ef31882bfebcc4a37f554f007c1e48e15548ec527d6045b2fc002b95ff0599a3f1a474fdbc3f958046f603c5568559de557787107aea45d53dde4de7c4b9a009f4f454c6a6bd15fc9049cd395c43c240cf18a49cf446c9b5cc7df6108166d9dc3e30ec261fffcee449b2c8964c5c27de690694b7144099f94aa8b061354eaf400ef14ae6d2ae484ef75d4413fc080e6214d11501d940fcc3b572e3660344d717e28fd69bb4cf4ae3387b95d495960a6d105719cef6966fa55cd2cd41a4ddbe823891d606e39f3088699893d1f11d23d3aa644c8eeee8462da370cf4b5cbe0dc9b592674b7ac489ac474cc48e3ee8ac03e71c505cbbb204d1d4a0ca67381e2da4705de96cc2a21ae0c3b52316576cf7a4b4b9a443f985637a9ba88acea962e0c3efab0420cc56c9e501ab12a6584a9504cf389558081546360f687e3cb7e1c28400bd0b17dfba721de231fb873a46ad10818545a59a04f58854fa8287e486bcb7ccdec9fd45e4898ee2f048b25ecec7916fef910c139bf0c501346ae40502ae5b218e5db58b81f98faf6cdf77dfd8ebd51d9cdee8bd4e25313ce0a1bcac63ac60291cd2dbe430ebdb4200116f6782ed32025bf51b8b774c2027527fbf5d3ab15142fc63849daccc0a9b34d27971a6b71115413ff2d5f017f02db57db88f3fc6151cdfe7839544dd44e27865f0876c4bd4f3003fc5265cbd2e81ed8f8e480b611de5553d24d8e5b83bd2bceba353acb1adf93e76c5360de91ef000fb77958280f31e19f8fb42c143951cdc91c01bebe83c3a4c0fdcb43aa63c08abd644b320fe515e60592dc886fc01f0b887b65926c4dbf6a2332db222460fd324a46b1cf62dacb697322e340cd2b39a360bd0517d570a335cdacace168f5682dec53eb1d6292faf3f70cd6ab51f652b9b8dd34712b8970d81ed407ed6626fdc943b890eb085e32a2b38219bd8b9dbf3c0abadc3ef642451340a97aed999c1d9496fae05735b07490f00e9b843a6bdaa73d01e528a84b402ca9e255fb876c5d29801b16da8c24778d465ca45640b954a8363dc8445553932a2ac7fdbe43f5aa9b0a42dd129fecdbf89abf43dfdfb7e1ffcd526757f0b76f08fb00b948c66e56db93b1a6b8886fe6fc73f3977b181cbc68eb6c9b05ac41a088aa7ccf6a34c31c13a769941c68d10c77a7348680459951d2dca0801d08156c7d36ea3497682cbad6e51526d9ffb78191cad2146bec5f026e38fb754464160032ed4376eecd9d8115f0eb08dc81db697e159739b8402ec10c1f6646dcf703c66bf9e6bed10c78fc201c61cb3f6ea9785192f178e590f0006872cabd01ce96c70a030c070361c0e281c6137b63f3a4c5548e7921ee970244b3af10f938ede8fd2a1b9d68d2b4052b8962824c4fb6d29322f6807e5a6e78cf3b29e0f3c0d276197331de70ed88667be4128da8d62a07b09ecafcc0010967fcc2c10471cc6d48080a40ea1071446447fb83c43c891affc5498fd1119d5ebe50678dc982ee88f9b21e2a849dbf2964891367642a295470c770828f1bf2bb15dbd2974fa19d91fce19ccbb470c38273e8cbb5201d166ea4d22260b5d5862eaea22b60df2df0b24178952215b9bad9fd29de4598bbef0bef4c56752b393687da8d8e20f9c510c32cf1b10a537e24dc69480fd34661e6ee43e6225c37dfc8847a745a8431dc2166210ab07fc10e1f1f09f1ef881bc5bff2cf74c811cd0524f6a0f91892c9fde5e92bc33767662e285daf829ac88caa325fe71ad6c101b6549201cc8665403d94030c06c56f58499dd7647a8593238d236868b6b93b3199f2716c9cff87641157b3139cb88f72391357cd8418963a592502982f51fbd5eda0d89339b3a9d0238a9cf2a2172df03b616531490d820e4ea38f6a24342ca014d09f939ff8caa04bea9e74139cb174d4499e471cfa985dce45651870d1a555590cd911d96986dbc40794ed56fc1edb33fc50c29f35352138dadf42f54dce4c179828723efa87b788c797de74833778bc5d16e0034e7f2f498a56d64fe41821981e09b8051a559aa36be174aa34a18ce08eede665b559f8c7bc54cfa50f41f527be3f8aa7e84e88fa2de14eb91a802eab3ae77d955770dd2ef12cf4512498b98878e5f9396040ee1d6d6c335f68343f10899556b1c60a03f387e26e947c2b7fdb91985f946185cbd82e763c38db0609e49086f199c53fb2cf0dd2a8213c4a9b339c3936780d6167f3095713663869104110ed00eb6186897908bc3209cde38cb3e20523065612e368383fe9b972d43fc362833b3e2a008b5556b7c48736f275f6d0ef6097bdcd9dfe5da9b9fc7bc68dbcc484fdc7c6323fb0354b4cb7d89be2424dc3e90eb7664f435f897b511f63f9a307a9f86addff2130e3a28c1d47ef78d45e2f58968a8580afcf056c0bb0909966feba0527099c38184521cbf03324494ebb4bae39e7d4632846774d538da3ca3064f54ef6f54aab597674e643b1b7ab6fe68c606ac435addac0789e78d277f40dad76ab67729e5d088b906e204fdc97fc3a013d27490c6f43435966fe35c85c202d8aa202df180319facb00ebd233668b33c57f7128e2ddacd0a88254091e2b5d0db122192279332ac77bc438ec65c34c3848fa2a55b28265d349a7a16a98b403ac08c8b06bdb127cf6305118a2d749a28ff29c398b73b3281a93db4dc0a2c87824c885221e9f285beaf7e708aab207c5cdb6c73883318b06b2e4a09df9fd2184a056bd4a4cccb9419365bd2894dbe4a244f6c9a408191ba0bd6822abe564dd3b70fbea1fba2ae7349ecd7f9164ca0fdcd24b2a3581728fdd661efe8d68dcf3693c7ad56a7591ebee5e839588c9962bec7a25a9c30e71159c419c552b10009c45042b8134c717af00ae7bcb2624ae5846bf77849334f5fe4a5388d45b2542bbbd285ebb63091c11e6801f54b606eccd111b68b7e69cc1aa45044b37bbfcbc27c406f54573fa97df0a287b4bb30c22323c1e0c3e1145366fa6c63f9d7abaff603ad223b04b3fe582b818f52f59ad84631835d580409303ce4d507f0688901b3967492284f1548a346d0a9e35bceadd40a9be0f2f23edadb8dbd67de0cc99eba6ae6858455d91682650eae87494c872265a84a71dfbd87abfe1c8d2cb890cd21dcc858407b81d94eff9a292c3d603c3097432ac3ce71737a958bcc8d4338c43b1fc9e2c9f6c79370fde21d30059543995469ecb59252f80f7b6a5af2e9e28ace36f4243980fab113f62182c12801b2100f1f5eaa2add43c37bfa3d4458675b16b1e01e0f7236e1494ed94c12ec17bb9f8fbc047c204ad36c23a1816e86fcf80c8ba82d155572853310323f92f1f43e6475b8edc06c7d452c28496d1fccc327c73468c0d3aee12109e64441aaa591015286a38adccec9898d9fa278cda50c6692c1cedd5270c75a94b17e29a878fa0ec4dea036a17a30945941aa4328c501679a6a3a0a642ec46d5fbc84d98417d88c04d121cd8ed9cd32f4e8dc14059533a13ef20545ac16a9195dbcc32fcff8b926f009ec6c9e96fcd9fd21da99549be6b599b9a91eb9b4488f2e8471388a45aecbda1240b7ec9dce6a39e25d9d97f57014a6895cee1b0f6db888e7fc35189c822e57a1f81a7d4e49d11f1d931651306fa74821f0202da220403e4e62b02eae9ee758bbe8e57b604e72d6d3f9a0c8bda7287af47f29ac3af5eccd81fdf0b7468c10ed6042178a0426b203a1fbc7f908198092acd25a857d00bfe466fb251e6e72ea7dadafd87d188ccf3906acb0886074cb0579c1e14359ec8e2e5d53eecd1b8a1423948409044d7b60f6d1eff56ca1cf6fe28fc61a6a7f928649a50349e96f30c21723a4784c8e29a2361cb249318e1363bd28549b7af41d2dd9fe63d337f4f5ef4a7c08bebe449d7869e0c7714415853238652ae81876d4a964d03fd290f8333c8478c85ffe6a7a60b36885f59d8cfb1121c9cf4c95103523cad763bab3de4fdab5f4337d521c06a761f4422321c4717324c4f26ef538c1d26f1030d57b35c071e1c350c960ad8c80b36c9b2cb96a0004eaaa77d181ee955cacc5ebdc832372ed2d68a68ac9e66ffe0ec21e76d82f9f2e4fde41a3329e0270824cbd1cfcf70a2a88862d78344bfc4792ae9603454a2887df3c8e5ac9d913f8edd23fa44c2e55380015009cd96b26336b36d47423299f2705b77aa964b664c91ac15826770dffe36eb18c5d71e4c389ee20a02b512b1400c9e789f964d9940a68e56e27e4a526b2b136c8561f3d3b6925412bf36bd2d82455625929a3aed8c8ca89782235f4bceff25fb194bd37210e4bd87e981bb6233b4a0e3b29ee66b294abcf8fdc4a6589ef672b93de26c5c295bc184ee6ff1a2440fac593000a2e22e1323d7d4a2b2cfdd597f1c258b59c581729fd93e5ed13f84dccaf6f1537993f7cd85546e88f0d307f7df147d8aa040bf6f1adccd21e4c46581d916ae2d52178967dc7f901ca6267e394e6f762a5964dae4a12fee64284abe2676aa183a3fc51c1fbfbfe203010d19762977acb89c2852c6e8a0ba8f4fdd44ccfd6dc4aa90a9b555d830d0896e16340a7027033207e076808528a05d80a2f7305801cedb1f624f58f5e079efb5207264a909710054e78104319a6a5b254f24f900cd2929e62a8459718c8043a2e4d4954ec68586ad4cbcb61932fa452b626147149cc059187e937b51d1b3b0a0a750a40aec2d7be421f6681c34cb98ebdbc4537ffb2d127b2f7bc8e7e9172b308c5a69c03d9cef77d10ab1f5364112e732d78dde274c95cc37d818b11537ab01b01d9842e217a63a3646434cb2c8f8c7d6ba52cf6166c25efa521daf83beb4746be0fce737e4d0440fa66e0ab4900506e370ee4e122a197add318e24a0cd00b705b32d1906af99826d372ececc193c5584d8c6fdf52be80888dfb4faab749dfc3a8b6c8bd8a14ea544e16af850a2249174a45497b6135ca4645ca5933dd9e12395ea723fc4f63681a6bf6fe086a475d7ecba742de48e9c978d396cf0131f7996f242684e1e549c467a9794a8a3c2181d3caad1b3d4be1f0fe1d577c649e9d6d86426397ff38ea95d3d895973cf52769ed56234ffd209a66c220ca9be353c3cfd0c3c16012943e5bce216ba4c7699ab589a2b55c5c6b87b4359b95bbffd3239ff40491b06f65581a432c070eb06c9ae66ac36ae3fc9f2f56f31ff81d3dc8ca7c4066f11bffc4f05619923675156d3567ea6baff39d35dc54e911e225f67405b9e5d43ec0afb4022939be3a54a004618545b1cbdaad43316930c65e84c89e27342c0dceae51c9c3a6ca786c2686879d1452e2780b400054e63fd0d001b99420085bce200f50ef073c1f432c79647acf2074a031dd314a4b264aa98706536eac1091e5ce02b369652485a8a9235aa72ed705982c4a8fd8a2acc72e32be7dd1f2491865758d11646a1874f034b335ba921d3fe487eeb1e207e5e764297e3c778eb0e287cccd7d297e10674ec622d2090cfca680c066a749fb7349020d46c8ed721f283726bb1372156b666cec43b1e669913f12071c3eac272ccd6b9a61194aae10cb2589aff4772841cdb8964843e32036f36b15b49e844102227b1e86a5cc37a18bc686f81f1d37b65c5dbe1e15373a474d4c8da7c637cd021e57ca00c1bce901e56e49cad30322ce96458e593235ec892ea7b0aafd2c1412134fc88fc17b00f0d1cacfd045316acc5c164fa0faf50ce5afbea52f47299684fe02b8fba1216ea9672bc282e5b2514338bb76de7446c5115588189d649f6e1df777cebf08ec954aca95ee7506c0169d9bc224a77084fa93d8685e077b89c60937057926b829ecfd969ad96db7c4b634706658a955f3a81229d231cd5b3ad2990d09261d9398f655021729bd705bb9a06ee11213aa395800bc60be668a8d04c943e09336d099f038a72913a50c1602eefe9557c84d83442b8c600923b01c5be236737352eb6debe7f02ab85344c75a71734d27adc96d591d6eccbd8843330146eaba4e041496d0408cd59095431715c518d885470233a4683467235ef04967fab492192f78956b7af641a1d6b694377d9ba814cb2d678424290f47d60d2909bb9ce24f312d395909ff3f42a5749514a068d295a1994b7722fe085236a0e12f8e5a4c4630616e61a4e0696c066277a9ed2d008fa5ce5c9d33c59c49280fc7a06b52b3d40e3971508a5207e6a446739e05173dedbf392eef769c20a3607b3c60b8c5cea0dc3fce7f7fdb84c713b42667c38eb89a13d56bbc2559a395997be1ef8cfef716265b0b9e311ee1327c2109bac4c4df06b59118a27768169a86dfde4f7d34cbfc0538d5e1a61014ead2a23c65cb42a29f25a9f8da94b945aadde7bd2d8a50ca4ba966af282923edf70b01056a9318af343275a9496ab04283220897e28c7859d1afb2622f2b3d018d69bd42563c83b35e088f335aec8514688671f996bd6296c28c1c5321899611781472eefbc0aac08f0e122a4761406ec99e2c94218a749665df14c9206aea886ab8e549d57b6f50ebfa8cda8f627989ec72118fcbaccb9ea5521db685baccaee058306cf32ab618d71369219d49ec221511ead929a52a2627a7f0c8f62bd2e7bde3f20817751492d02ebc5bdefdc9e3dd9d3a9d3d89bf8d3ea5064a0c9f52f669ce84f70cba9879ba1968777eddf33a19e0cfe9ede41e0a19a1958ab83773e25c09d166b6c295506be65ae6c19166b6220f05178855032fbaca488644398c094bcf45d93c9720c9a6bf0449012de955475a704a900ca4878e2aaa4597144a1095e599ba60995bcec351e4469e80635c6ebd781f997b8b58eb3abcb8b032337e904404a25e80bec4386c18c55b6303ebeb324d9549902d6b2ab170f4f3d97a1a7ab7981751ae31f8d5c5428471a43e0d77dcf160ca8464f44af436f3b60ffa4e69efe47502bb01408825983f711580ae7645f7eb3a55414f39e28b8483c24811b9a34302a5284ad2b8b2198edaca71889324fbcc910c51434f29aa46878065102ded4f29a3cc383d578eaad516da120f60e751ebeac48b8d193728dab0de53de919c4f938a1b07e78e11fd720535409f30236e6df3d146c9fd11638a9d9a3ca9dcb3897bd28160f23b96464b120c3d5098b23061cdeda15eef8ea489da4e0b4af38f29a605408515d9b04c9a6d29e0b98185c472e481ffd3a52c26ec9de3794abbd36d66f3947004b50f050a6bc6c366b13e8433f03380a30c502162133672b719c807d36a78eb83ebac609273f8c42850ce19421f7f6a69f95315e9017f303ed81fb82f81e3b318a1bdbf3c660ce0f2933d2e390ac41ec39f9dd69f4a0a5a69140cf00b996182c1caa4db8c6f438a14bfbf64b53adeec4cf0c8a26bc9aa72c1d4f7dc6eb8c42faf3e118459c47d14b40c9c9d7d40b4ae46071694dbb1e99a89d231424db4113fae302e8d0cf7bbba71867e187fde72b707e520fc789ff7b6a17e914d09429c3a0e7ddf180b93fb47e52a2e3eec30d4b020410842b7a37d9c8e19aa13362b5d585c87ef8570f05ed89cacc3567b27f7640a4606847a892efa08bad221b9e83ab58c0eebbd726b6938872986523b59b74b2846d2b9335295e285614060569bcde6bf5494adbb59c472f7a4524b4aaedc8ef7e2b5dae5102a4d9201786d0974b08472a814fc904344379ee20903e69fd6a8d7ff29f229125539acaac5f299ccaa9a54aa1017ed24bb215e40860d166e1ce5f331fbabf846e4611cf5710790181992d0d8202a36cda1fbb21936f33a35d352db9789e64cccfd59bf4ada442af3b4c57abbf5e66af62cae2984fdafc7294c4760ac47e56c8d481e5f9fe1cd04b03b9a7fa5c59ad17676b48514d240a7371ca93f3d13404b8c864287cf50fae9e182bab304eb9ad6d0f54b65199bd005f4a8e67a37073af5f10553a4003261d88610661ac8a722ef05b107bcdc63aae2b852ee0ff862567e9187a2c553b47949a5ba6ae53788bb1b89fb18e8877141659c3ad3d25758b1dc58bee1c3b6259440fc556f852a5cf9480d2c06015a8fb70e8b6c6fdbac07b4d5b67b47393864e6bab6a7a9de1a689d698164815c10f6b3a386ab5f0258a262a0415ea68037db7deb0c7068fc7b33edb3f50d3a2f7b760a335e9eb16dc3e283a9b4b4f4fa531252439ad2ce7761089f6a59fe16533cfce98aefbc4df83fc61cdca2e2c5ac4fb3dfb813593b35d6eb49f37138f81be1a26051b72b320d61f067f13f88d06df8c6b0c32607e128e89e28435bf8a09a2c5891257db05616c9a287e3135c438e7f435f761e4d470dc43f2b99263790163b6138707326ccc81d0183ead630522de0f30d1c23d7d13dc8c8d8552241e699a740b9a269a942ea102ed05c93abe145b44ff1f2c337855d3664904fe77c3a60068d76a8d6f1539e4e38983316ca4e3b1c40d22180c903c4f241be3a9eba14be6fb2e917894301f0f82b9352e9d2ac10e6873fa18190b5d016f63f5753c9bde70da00e84a2e04dd14487d4414d348f3d0740511d8425dad644a5816ab0797cd7d0d0ad4114dcada96f2bd5044d0fba9d28295fe232b19e8139767ad4fc17acb58cfc2700b6a20eb17fdc9746cd37cce60910e2399c3c3bf761cde1ec1d61087ef3f1c143d011a36f112c55ff1d17d12ab6fdcac4e36fc6fd08fe8eba1133ebfe64b501c6974e79b19ad1d7a517d3e385d2529a4ee912f0485d41cdad884be8f4736b0ec23226d9b26845a8b05de7efed9dd079f8ff0eb23acb80e14bf36b84bd6e956955c5c821b7b4577773c27282dd158e728b4812b7c16be050d736ef5d081124530ad1545475bc0fba7cb27dfc9a71d6e03d172d52aa1be0389b36921f3e36054b3571e57f73e22dfb088887ae019b89d3778ab0907fb3a3108d1d4e63521f746cc0945749e712c5d7e514b6d9b43681cd459484a4746c715608e1119b83549fa754c193308f450a0eef8b4bd83717a9ab861b2073e0634560b768deadfdc69a06632f3f6c6d51d0c222276b0aac9b656e7353de2a033da3b0a95ac92a99aa3b05e7849775529757691dba208a589b25b63443ac6f0fa48bb8e5fec2082a4311cd828dfba440da2f9cf141fdfe0685b0ae37a127e7508282d67bf1e89720985050a3753611f7669e2a976791538db803444bb9461ed18e892825f497eccee70628839964022856f44490c73c18163311e58e1a0dbce731f234154876d02e56d2057abee794bbad1a3ebb2d57be2d40dff95c30f7091c5491226ca5c8b6e6600a22dbb69fdf452d3be4eb5baee02880d9e644add2c76fa6a3e9c9e5fad4602c8d9c305909b91603351487973ddbe86676177a8f6f610b61a9ea5ad7711020f5965264f10dcd973eac6af98fb80aa2666c37f3c5f3723d613207a066087b134965e5136ff12bc8673cd57b8ac1a177230356f05582132da5040b75dc57a828dce26926f742f124fe53477bf4c5253b132414a22c2c04d4434b243e2fbadbc52f46d30feee6b13d7e0d859c405bdf24c3b8aff304824d59a780ea4dac27724c962eb61d8c48da43326e0a5e99d43dca6c22bf0308d5de3d06d81f19475e70d047abe4fe002426586bb6c0612061cfb5d76c4c7645662aaa7889e28258ea58e28ae5751a8766d73278449e472e79318676668a7ee39e3028a59f4309e76adb7ad47a50e9b04d3005e9e546f78f1165a12deb570f61dd7d2cc88737883e22c84e1429c5a5b7df1f6cc49d0fe3e0a33d0ff011232c3affa8f492624960b1f680f5b38362e026f2facfc2f1749a8944d5e789e3b6ecd161aaf76445897484eb2601431ca147c928e5113b84f2db602c61592c32f82591b1891587993b7c75ac02c400ba2498a6d91ac6c2f22d30d8b8f70a4b14575eaf41debc8c40d5b519813f292966167b90ccc8556ed370ea496b1099224396c1c18b4f6c1aab71fb8226c37949396d6db0acff7c86df0b2c7fe6c265c683f234750ba696ac9ee05491b34a91ecddff8f73984b9e879330c2d0d918d91c46188bfdb3c9429d97e6cd2bbb2cef93f0938f7471dbd8c53fec6ddfbc3b229d5b38d71e1f5b4a82c45a5121218eac026fbafcd0baa32e3755bdfa1a79941935e1054baefb04881c2caa6ddfa59feba253462245c77a09856c1f9f78a3b9c608fa09aa792133d4803bcd74b47bacecd129c2b9171bcb9b6612531cbf5e27bf12b10e03ea23d1aba92f832c52abd07c9402bc2c0e77e0de71e8e3bac20632c23ab492183a9fc51567dbcba171ff37234045d5e981255ef23bce8daebdccf0466cffff3101e4f7745fe434fb87257711f138ddc6280d21de18971327b5e4549c211157d22c30b52718de675a862f0521d81fa5b2842576ec12b7f2c1abc070e042bd32187a2f1a42d313fa228829f42c9d3269c32aaa57d83e5ce9088b09f50e1f2c1633f494395f510d15fdac435b587d9fc37183385dad9015e18cf266683a87d319e01e569f72ecc1db51fce47213e171018cd6e584bacfd00057d28242d0be42fea03350acf413ad4150e5c34a1a00701d5434f3736f74e903a5e97f749524c500f1e6661a916c63d95c2d95d91d8025cca1c81a4fbe16d3596d9098156847e8edf8b263fd95cf68dbc79af06bbec2b9ce0c22256ea28f983140882383848b4d8acff719e4241362f55305413e29423814622bf8d1db6f2c6ef5814f9a9b2463747d4da066952c97b52e94bd75f37a48ceb9303df919e29a1cf5b000fb088e9fa541cd5a3c9c9b9f0e97f7c13d41f3f05ad122fb46cfdf902b890313955a319ed8deb0e30c846a01617b2a7bf4d2f4671edd295507c8d05475681c23d70619d4042c78f983bce002dd1712aacd1a360e134fe0d11ec846cb9b1eb1903e9026d44e1a956de33f1cc6573671b9c66051eab5a76e3bbebd7954e44afdb79dd2af4f76125cc8fc4a401b942e60c5802f4e9f089a2e5f38e51f06259b4a33851eb9bbea5b9d64a705a4e3c7c084cfabf72da7e4fd8bc55e737b394f745c8f4eba29c24c4dc92965fdbfc7dad8948edafd553426b3143dfce62791530a7aa981505c0d49d5726f91eb7e754598a41a632e89c54f543a2776d426e6c7d9c6977fb48db1a56b38ffe9aebf1d8c4639b2ed94313df47881d3d5ab9caa2bf206c227ddcf43fce02fa8bd53af45d0044581a713122324317b45c47b7c3f2adfa195dc5d3c6fa80ee7b16ea67b76938a253fe94ef14510864cdb538c5fb6491fdba42d82dd2dc2de7f19dc8d6e6311154e80f27a7301e53c754dfad417c880b5f236eefe8a124bdc19e25469a87dcbd404efd8148063171cb39e4368e6b7628a63c2c61297d299d57962e3118610b0e3628d35133f6451f3559796f8c2727d13a63bb8b915a93b10c9e2c69899637703888ce939657ca3ac20e30536d73067f45b781f62f7d358e4af41a1b1ef139a4fc276554aa30ec27cc960039bb632ea30e26c1644356c569af394440dc1718367d4930d207b7e488e60dde1a2c8035ff621368625fa4f208711027e8120e083fd7bf7661995c60bbbc4970fe38a65edf5271053e221194087ab64952057506ce86dcea6fee1745d1aefea166dcebd2459d83498ee71bec665d0f36157488dd6d3af237644d9d25272285775abb87c82cec77bd605c02ad7874c4f4d897fb4475959146e1b53d2dc106396ed718ea5371707072018dab3d836d37b9644be0d9d347b6e34acdf0ff84dd240ed38f09d57109a35f0157173d5dbe64247a8fcef8e6fcb6074794688c223acfe5037ea3830818f7f946d6c511448d4c7d96370c02a9cdfdb2edbe88e0a5ad232885f29ecfa741e6065a9983395212c3daddad2d1b50d1639a987113293cd6c7e066fd3dc384a706179861ce8059697df18a3246b6138a6ba006dcd1ff4589e331c348e9314ce7196b1cec67b694a2f00961d434bd6ffd31cf4ea55a3968aa1cf7a4f2305e6a939f0b1b8c3c1057de56e40b7378b0a8da8f016d775d46bd4f04d0b437f5df8840ac5cee3bd624ca97d9e6f8fa469562e568183d0de685b4a0fcf7741299a8971a418fc323a5a240e14f020850a2afac2d966074daee9f1b7104eca0a0ef344bb3d2183bc2ce693a81a9acb804498b1dc8469df25199132d62825b91265a9d353eafaaeb2ae30a626d153cada29c344fce52d44e766636dbf0bcacd2c4b9ae6f31e37784320ba3fb7e2ae6f9fc1584473947080a4a16c9edd6c5bf1d4dac1194a89ccd6590da35d8b77255374374bb03b4b67aa9892cef64ea41e65e098758cb45c16e7a4d529026a12a65a8538779622e9ab1a6491b76969446c9808a17c836dfe018ebe6f0417f55fd67d6f562aac286b9d1810db0bb06df95559a6216d4739f68b47e36dacc549ecf364c465d63e0327e9cc2fa545630594391ddb716ea91b7d29eb64482e5c7b9f173bd2c917fee0b422ab818b07b7772b0cad4c7863ebe7b0d8f8db3a4b53a09ddc20907a8c6079f734e0ecbfaf2c9e6430bb30fc0d9ced86c6036ac50f4b15011142519908867d82b0a0242d2c01c683d0bfa071e18e27b4ad80c085a500f27a595b9c3614a709550807193c055a135d28f4ca2bbc74ab2032785f5f30ee3bd6e2c45b58a171dcb48a622e91c06e49b996b524a3d8805fb4b5d1df6f3e7cdbfd0f0641a5023d01919a4d4ccb8a593dbe86d481a0b65c11306570ceea9de879f85cbc48a0b3a2d609c72671033e0906428c56a941a691ea7b050f8cbf4544cc3f61fb65663025aa9d77015f290cf5cc0b4a971203d5176a95ac17b7eafaddbf350d1aed26cf3162fd2e718d11cd2af2d613c6882c390c40147f194506a8aa8619bc61c9f07088823711eceee155133f25f175e7c7a680be75c4883372588f0b08b09e8e0ca0c2889c46f89a16114913c6b8339b306fbe43f701208c576987cb1e760a5e81b549c43c4ae79e5be1077506e9ca0040dcebab656b1f5fa5b94dc450c2a72914af2f07b7fe0bd16a666ff480fac5166e35cb86fcb0119cf11ee23ac1d1645c1df32815d136b1a3217689bf4a58c805ba033874c4ad84283ab0ddd2693eef96462dd902a94826ea4097f61972dbc08d57c4e843b941749250a20b069df99dde32dacb1bd7bef7899b1e1cfae9ff130f59c140913ab9391539f409c0a6af1332dace4e48a7f00c113aceb50aa78991aee989b711253add09a13a43eb5c1fa52bffb7a9def60fbad8e0859b70296682eeec2c4421f990bacf05fa0538d5848818990d20eb3a6185cd971c221870a8ea71124e14e057e3a346cc17f0ac8187aaff97f4443cc398934ed2fd59faf8e8df11d02e48abf77566d72defea17ac10d910b03676c56e18d09938338aba8d9996bf3e0a2594846703850b8eaf715030cbb25405fa74aaf030676e81fd858c32c8e653c2b77d78c5a567bee016e26dd166a75454cc03ebe97c199f267ece51ac69ac9024183ba0c701d569ae9987d7f2f5be9140ea92f491d2f6056c0e4a5d2b1bd683c14d12b819eae547024f925146fe6681cf767686eedd8e42fdc71009b9987c9dc1a1c556b7c85689f253682143f0a6cc908861f10b2a2668e3a81c49c9bd944e23429f639db15e918a4fa93fbfa59005e38badf10ce47d1106ca978ab779841e78c4d267296bd7ab5e04a133e92b43c3685aead8c944502c67c00420b1d2d01e30fbf64bdc1d21fac30f40ed8019b823468ebc463f9a298047bd3c93e5ba417614dfbbbbc3e7483f012cbf886bde1bc3bf2df3bc8ba05857c0af00b2602cb7a3f07a385faa5180892fde8123891deb7e3c5ccf7c9efe0a55bbda82a944151c319aac45e4cf6c0ef1875f008f6dcc8616d8e23e891f1e21f7e67d3c54009925c590fc4e04005d3b02430b9487220d71e02a04e4eb7e84cff15608679d233e3c4a10c785d3694198fdea34c78eb189c1930c9b2b6c70a828a367fb9cfdee343eb745c29c3057a1d0831c39ee03903767541948e9dccf7a6677f1a123104b9e50d948f69f4775529882b8c3235ecb8ddfc37f32dd7cb34c62e643cbf739b766103a45ada3cd2a66b5c9a1c5063626a4f231bae2c6dd90f4390b91469470ce7ae16c5956bbfab3b4406d0d5dda81c566b8cfbbd13d1c7a83561f2bf0ea66db82e5c3ba21b3cdd5ba24560983594aff86692cca17959a5756d2ddfa382f30e0d229548c721ea6a8c6ffbc4059270054b675a4b9c1809c7db54228a8f431fac587958d277e05ccab6a39169ea1c36665ce444e1b88391f178c3c68b4237b524e0e44d46101dd83da8043264044b810a1232779a7901f1ea0cf717b607de9a4b074cf52b5ed6488a7df5719a2e2c11663692e4332ae6541a970b13007ab392a5731c297c07b5e0b1b6ca4f92fb75356e8f7ba223f7e55c6ad09fe1ea31c23c41aa9e9c2ea3d40148bb50e85e05262d75b4873a0e061dccbbc2c177909f9e6455abd89652ac4e44f0438702181ef25e554c8f1fb16034013a77c3a67995b390e99bb9a91c0e0abe14d6894f894479e18dc6eef03c3a2b615f95887ff275ef8835d63d8f767558997701ea116188ef81a5ca97ab116f569ca9c53bd597847f198a5a3d078c99aceda7b29b535191af995da6ef9c30f33da3ec9452fdbb36734a9e7bc5bce186665768e4ce35644e062f47e63441d010fa6c002da87fa27076b0e91fa1f498f59305836b30f50a7a8d5f5138369b549770a02bae10b2179a36b676330b649a829856e000be938653c4bb86fc37374983929856cf300afa740475a7884c19bd6c40c84369558fcc1a010d9276f0cba37ac2b00063b308aba822e019d3f1db85e1dde1792e3daa6706c16c7e74b03cd2af8df53c4db2aa1ad99cd136846ef33183222ecd1ebc6de24c472036c2d217e88495b3c703ada54a021a2e9eddd4a4bf6d27b027099b869b8ae46743f07d1838c48508d2d8be6735a9ab0f105a40acc3901bd917b8acfa1d570f7e30859e1d4fda0ff531992c0b2bd6a7c31244ff11dc3dfccb4cf324cabded7f34a8447ead15d47476953aa38ff96ebebf76d612a323e002d9d4a12ccfc014d4006fbcbb9bb11184e18209a28691f357a19c48d72c63a0a6cd223f125d101ea1fddf92fdb9d107bd468706227526fb91c22902f8bda86e3573220d3f7d40110d8f74f132fa154b8286421aeec02dc54b421948cede215ea709efa60aa88f1b437771d05cd4e370d44d63ce679c8050637704f4e448bc80ee32c01a588449e9583c3f0f75f7b600c7eec665a11f7620576b8c380d843c31a1be3653b54a07fdbda685e7e97e134adf56e36bb2b079e263139652eb0305d2beea732995185fbd90b10e2e547525c612897f0fc3f426b09d9106527af7a0d1674f224d5ae16653553956e6c2175b83c208de0634f6c93f0832b3cbb933de5f2614d71b1e10dc80a141b1d829626cb02672073814e59c04d01b074486b31f8cc3324aa88bf176daabd40a971b385a67e1a55c34129d1a00f076a36f3db3a999a05a1a00b47315b3756a9d3657d66c2d95aa0ebe9aa0cdee312ce9159e89796171e143ff7a08f8dd499de5a234f833d87d3e2e7b7516ef5c05973381bdaea1e276d2c7614788179653397cd8a6a29296443eb72eae7de3ed287e8403713e87abc8a1e4af48dac344f92790b931a946d839b655f03db419615c490fd464d31d0f07e46e07da6adcdefad28ff0c9e4738052b9e95cfd81053d9a9855153e6a9b9985a9d534daa1bb28aa5e0a22fc22d09437ec524ef898126b6cdbb07593145fdc4df09a04149289bf21ca5bd92b1b27dfb1df8f766ccf1afb2b8f42a074af233ee19615facc18ab2ee548ba02eda6347e50ac27c4871e90678282ce072c9059866b651666866d6db0e0412394bf509c8d9ed4c3bc636a1d1cbf50cad798612e5be2887769e25faf124d5c2aec77f3789ad3840c43628e707ebbe3f21e7f1fd731d8546210c231d14330252cb9077dd361033eb46419f6bc212b21723a9dac45a29cc6a01822f243bf4621e379d4e826be7ba01994b8d4dd02923b673819e0eae71cc423274d63c812dedf200f42cb3059a60d21e4810b24844f66e27b195218bae6333c27eef52251c4c1d0ac1b9f8b0ed4f356dd4d4e745bb23c32535fdcdb116ae774ef0f8870aa0e4297fcea43b9dbc17a8dcb34c04e2ce0b33c31d3cee0ed3931e01c8ca6fbe4210b495b438b9df893cc4922cf8b2576801048ad127aca9d4beee9eb11e18ec30bf72c60743db0affd5182058bff0b0bad4c04c7d1548af84a5d987e515b5f526fff3cf3f2910134353158d53079c5801b455dd170840a9ad0336815753ead38b5a486d7bd94a6f7ce3a234f563f9a4dbc2d3626392b54733db137cc16db63fa09d18b6edabf801e13f4e9a612cb3970029237b32e03e55863f9925467679d81dda8239a7356e416534ea57ecf2b5d03498a076ce2f24cf02dcbe14b24ced40c609bb166640cffd4fc08b85c93aaf67064be83479d204abd11630b15ee5623247a661d5759ce4afa8bc4c04f6321060cb054888703619ca80a7a4389462f040f7e836b9b9c9de5bfa689bc826162789cdc57362cf0d3f3a0006027b947534c3d019f4e77ee71f3a80cba1577260c4d8e97635b7d90d82adb85d03d96ecad02705fb071050ca1d569be593a70893cd30b7d2c9c300ac75fe2a840b04aa7db039d0e89e99ca2a485ac092c7e9072104b9f5a0d371118b45e0ca1a2a19a52466e1c9ea64cdadf0eef6a62b2a99212ace9b984dee4e1269176d3e34e946fd4ee0fb63edb0e07ffb5ed24e56e36d167b45f02b69055a69517101e01db5aca3cd13872bdabbde3f349a972ad0792c5ce224aa4fe50a1131acee621f32091dd23dec1862840684146d749eddbe161948566a04afb30962c5d0e0b90413468519ea22c8ee254cc55adf86f3bcd232a933ee127a9181f3c3ac51ec09cbe19201bdaed8dfeca06e63dbeb1ae8d2a5cd5964d08429b93c86e67357187e5a72d50141c4eeef4170fd40915c6127ecdb700aa3ad3ca6990f67101f9f9d2c9632db8c6f0995c52421eff44ae36745c31cf1aaadb1c5573b8320119017c54a5e3aca06ae2778679ed33415a16a89ec3d09f2c8283b46f1ff06e43deff2677c090156eb94cbfe3e42bf5a44721840fe231268a58daf96208475e998d60f523877c89bc21a963b9e8d39848efce1b0c0a3e0e05ccca148571991718327c40ae417b4e5c46c0ae30812352c6a11c88c479e65f8128966ea26caa3acab2cc827192d62e7053337a9ec12c9d1a928fa4a37a6eef299c5d8de600df805d95dad7b1ba9157074487b2ad2029f5266bcdd7f538d25059caa5af1fcef5446e84047bd9c62381f85a7a8bb0fe0bc4ad617c5e268e916d6b91e6c22866ff69575cf23b18382edbc1443a4af740ff4e72e60d107948765e90437c9a89b3c3c0ea2a12cabcedd28f0c091752757cdc2969e37025cd203e3091da2f1c7b536fb247270b13772e343016d80482da46fdca55001f6b2bf0a8f9ab52b4583a403933a3609370aa855899a89e74d9a95e00e02255a8df919c6308afdccf99704f471a9392ef38725baa8ffa88b3899939125e8e8681adbac91757c1ba49454ea6a3aad875d2cd8d2e34015005a9aa2771e08d4cdae393faf907f9c404addc39e8e9e67e344b1739426ec1dfff54e43302813a9fe9f2d4465dc2661869c918821d732c3ff84bb0bab4942a7f906755995fc3a92ac1b650b8eff2b30c77dc589a48f6ccffc879d15b34f2c0a5a0f96eeb75c4e0148fae882901699b48f8db04a6d614bcc0821285cd3325c3842178a844a9e745e23a93fab580d6a161dfc4e196d22e8bb5cabfc7e9fb83a6a9dc149ae85855dcecbdcfe3f095774457c66d26d7affef91e9612c5a6a143f2f088359c1eba26a167beec78de7f3c7044da721643c0bc0062a59362abf119001d8f1a59a0855b3a56cb418e9d792f8ac25056ca035cafff40c4283abbab16f819ea18d0e69bc482d5f0335cca0a7727ccf144d7832950793c0f0454856350542ad4b79948f34ab779f6c2c1b08871d3e9b4307e5314b32bef574373322fe9177be9c5b1ed5a2a0d411b8ac64c0616dc056f5135d29b42d0d019aa339fae3a9d68f7dabf0b0e8857638db9ea3b6c4e50dd3c16697a18872aba78c399e6da21de9817006f64436f1242194cdcf6aef0bb9b4b13d8f58ed28f45ec2bab6eb4dabdda69e3512124596b72b2d03bd6e31896f6f0b27cf6a373829feef31da9290e8b7375a010e4e651d3516bd33fce799efa4e116a3f3f244b518dd0e1a8259b3b006f65514bce98dda109a9e787eabc3cbc8d77bdb08f69e4adde84f54d513940f6061ba423a6262c7e84ca58e313cc3808d0e8a4243614fa8895276c9bd1d39603741cfa9c7602fe6ac6ce311272396816ba3f0cba259721087354cd78e1af2db1ca3c9ad89e96d5d52a3f83b39db7f54e6d314b4d8ed35b48de53ecca231d4f0243322766783e4fcd61e496493f48a38e00ce0a00c24a4a589986b0153204e59c15579714989c85b006750c6779458cd4e886c72b800417a890717b422420d03cc470c4c9a1e122645604f56fcaae168ece361d05a7e75834d1be80428799d99d8eaaddf4f84308ac71875ca57e98539e001458298cd4a4b876421cdb2240b82c53a4a4cff9bd6543ca8eed1a26391def16f19733682f8c310019244e5dbbc62adf6c2e4f19b55a12e7a681f647e868186cf0853df10e223d6e716e66d5624473108786c820a15e7b16dd1755588114dac2ff6e38362c3147518b1b23c665f965fde0b102b3fef7398913e7bc9207c80a74f8a558b2acffdc4122bd8c3ffbba0a8e2edcf198e2009aedf579d14cf1565bd5a9f8de3ff9a633bedf4329539e2ad5ecd454f767fe1ec3bde20158986e70db005b212783fc55ddbb215f0c5a4169bd060bccd8cfb421ca8a48e9e741e735323da23c7d2a74ec445a89f50f5bf21f7256199131821ca2f271ed7afc365880674f000771de36f7c32ced0ea88f984b9af2df0a0661ff2fee17c62b33b82a0902bfde21ec8ec32bd231026fa32a67c9ad3e64ffded12e57563ad19e8a5b2016a7544564446715d1051a0a0e4ef43cf2603824c26b623111041365fc7a15dd2ef2bd926d45169d7576524f27b1f0f1a172424097c325e2b7c6751b8fcd28c7e304cbc3f2166ada89df2f1fa4a9afd3ae881e890bd2b6c1bb7fb9872f2e329f5ae303059de42ed750095fbdaab806e581cdc144d6d325e8ab76b31058b9bc9efe84546b35700bbddfc66df77b1987e79fabec95318f1771f5646958b174c04bd173052a121afc6f221cff52b4729875ef1626f600a54d8247fdc49e3c2a0bff7a45b15f708908c0270b4252cd9ffc659b694b5e676581891b17bd5ca2d2edb861acd87822d2eca618d649b087fa713c3ec30e715fb7852125f0be672f4e435408213b56c741999215f235171b2209cb3c289675fe0d97ad6db2d8203b1e316297f124f1ebb2ae4ed1c1837d9eedfb6f381c43b6170db958c78a392002faba0e50c7c8711e28dca0bfd8ad81483dfa03fc027017a28c295f32d0aad759efc69bf341c3b61e9a0d83a2355df2be4f11271f732c7e0aa4af05d73c7c12d534b462f1cc5a44ab0eacea035f0399096b94b4ef47d641b5cb1fb6ba887083434d36113944403040581c241b018881b278854766b2fadc195d7aede115443b26fdb218e2927122cfa957636663e300450a5ca33fe7b3fd39b5606c68b063f362cdf0e60b04b52c2107c8b706094a47cdec7c35ebcdec08c194ad741c36e99564b5e18434d301c0dca6ccda83b2b09a8471b028c02240c2c00fb874e1d7c17e9b84149912ee5b0208525b8a916c8a9761ca5a46f2db547ed1e1660be12478999adbe77eed76dd1a4a6b9f9f8edebb0f21384cd08fd2dc37fc44265e086d0f85b36cc47e04c43877521acb8e36a0e8bd8a07d10718fe5cfaba07bbc4a917732a3edbe268b18f1c990f637d77f331ec9f12cee3a9ad7ffbc55e0ab8e961c70d7b5f9aacc0c6904ecd9649f846cb0751117572508f2bbc355fc3158787047f288c388dadd682284ff29c71018f9e0383ed3950fae48d17a103ede16c8675ac032c9e474f98a0978b3b91f41a42d00443a4f9401d1de4710f2d1ecd5181537f378b890470d0da2213489ede720ad72326d8a265150033e5cf0524333794dcc0ba99911fbbef7b76e39991388a2797ba9ce56e0583ee054e431c36dc3ab11b9ad6757621bb0a4bac9dbf0cfbcb8f1baebdf25806d9cc0095be168f361b4489fb4187e56dcc0362b733dc0c747d6a036cbce0ea6b9a826da6c83fe23ed9dbb1f3cc3f246911fbe968d29dbe4f88d7b315c6a3faa292a0a1a31bb93f9f61fdb9e39596dceac341f3f5ffd4fbe7457f1034e79457a543ec5198b8fab3ed231dd5a4354336fc7a5fc0529806fe92138c95f57db86d739c3bbecbeae1407437980344614d41cb6eb8f83c8a179d83af9b60edbc7c9fc797009a4399d069a1786bcbd888862e871f8383bb1bd3108b33896f21c7e2610d0a70e64690723528af7e1e1e0bb1bde64b7209e08cbc1c8503974186f194d845174ecb0d2865b7ff68ed79d0ba0210bfa74bbec4999470bf7e39d89493981056e922085048513b22b2b46a33295419385b0ba977b92344cce7ea942ca630e98dea2db2502b0bfbc3f65f9a92bda3c2bf2162fe6c6a1e8100207c9c0d5cbf27dca49a419b89f33767e85a3a52d43cef601e99a4dc3e77bd7062c6ccf25cdd8208c91667eba1cab0e07ae3b087cca685f073009e1e2e117b7886d73a1593744c364c676d260dd59ef05c30f3d885f7d01f3b562730f143cfd031d2edd71568af50fa7bc93eb830a86652a12bcd70383680b73205a017b3b34dd3b4362c11217426c5529deaac60bf3bc24131d6acc6af71f005bcecaa7ba5f035fda23d785b534719bf18c48740611ae096b7c5aeae4bca81b6ae445449aef6231c6785ab63c1acd43e9b11e4e5191089695e4a02baa20ed2ce4ac1803b0aa2207820a38e89a244b6da21439c24d0786e9e0a5939209d0c9d013ec00c42f761c92b249d8087e75108bb8a8465a3738197872fc80236dd0163239cf50ba8766655eb55c801f9a96081aedaa09b18307c7122e2616c101751441442a2414d03df74efa832633567e8074cef8ff9e9cc3382a934c7417c8129a9cf827a41c02cef47aea582e80aa59febc5ccf3eaeff725792d3eec1ae4ec4147f3a714510c13aa052860f8139ea3d57195420ffe85bcb4a458e0d2149ad026bb8dc6565d307c64f160cc003f0da8d06e077c4bec767036387f384433d8454574874e0a24fedf21be6918c5c49227a5c6a7e482bf418ba689e1332ec681206b3639787882776c48c5caccaa8aeeceafe67f5ebb821e198af74b318f56e5868b422d620482e3c2687dfb1f1e739a94a62b3eeb555719450c1f5db60f039040b6943587186b2fe9ad563abfe79808b63da723216b826b8b51fd491115cb13542632d09224706582051196da5b9db76e37815fb715b03cdbbe154ae12f768e52b48b5a5a4b80a87f4c2029a0b7a6658301a16a5033d71da33244c95ec6e7f832c5f2ce967f95a2a126372c76c239025b743ab6b69517a0378f8f2a885737bde0211d63f731400424e6f739f9a63eb357479abd99b023d69dcd4da3e9184ec2d37915bca94924c0176068f058f06ef3b93f1f514e87b79aa9d945292415f8bf8e1c0630002e0d118f4bd14e8fb6b1383644495929330b593524a9b171a496a41a1efbbad4a270308c09381fc7cc427b3cf2fe1c678b37014766b28d0f73a8ea05fb5ee88006a7c4eb41b241b2c2b2b2a2c2f278574d15129a48932cc655e21f9db536da86b6d918300f0189a9f10a24f067a3d3f555d3c4eda8dee489534506c1723d960f115959594ca3f59303e82ee926cf0bacbca11d47ba31b33d24aa25286cd2b94033b8212c1b59f406e1f87d195bacf09dc987d7eee27f4bd94c1460d732ee6dc7e5bbdde3ee3cdbdc61aeb23f43dc4abfbde440c40ba94dc61d04e567ebbdbfb5bfd25b78c3246cb3118dfb32411ed04fabe9b405fca8892e49352aa686eb160fef249b8d67e471b185c592957ca58e459329b8536fc46637c0495cc47bcefc74750af7c047d95bddbbb9ddb6194a16b629968f476d4391f914c812673dfdb65eef687a4eefbee2e842ebf9c65f1c0c186158dae68f4ba78ec4f1b76310ccbb24c24128d4623121d89b2142c655ea1941469a5bcbd71da26cf88fa38df98186812ba7c922af014501434ce094c500212d06ec571a8b46216e3a33cbc2aad1fd4927d2bb3799c1f415d4a190a5dd7ee9c18866159962de442998d8f80cac5f8f5452736278661d8a345342ccb44a2d1882ee991a4a83b52b9cc06c356b2cc66335166b3321a8d7629a5241289a664369b92b260d47d1b78ecd855515159c96c56329be5565858586cd8b071e3c60daa691a476d4a190f5c77635a442d2d2d2d2dd09b5bdeb288ba2315b3b008bd317e22918b1796b084154da398a43c4ca0efb10cc8a8ee53d57d5950ec047363801ffa2544deb7d05b1b04fc439c1119e3bf4cc92aa1e32b62ad587216b0b887da8679bc2451d781ba1bf37e63687f3f3c50e0d4aecb03c4b35d982622fdfede9c89887f7ff73b6722c245ce442446ae23132bf4a020b784df8811510448d84139b764df088b8b3256a8e6963c23e07b3a73a9f7d0f776988f5bf782be19488457e87f81c7a406732ec6430524eaf248a1892bd4e52143a76e36e457bef32ee40d68376a326aa2aa369ee5b19ba6f9c76c405ffed21181ef2404bea30ff84e73c077df80ef4e350be22d9cada9e1f9e36a6b6878fe98da1a023c0f11fd200242b400111111037e9786ee1ce03b991ebe3b21e0bbf7e13b2d01df51057c27ebe82194add9f1fc50676b6476f84ec6e6bb1390ef9e87efb42042be939547c3f0d31cbe93d1e1bbd38fefbe7ea7a1bea3956480df25bdff6ccd0cffcfef3b5b63c3f3f84ea6c777a79a52f3ddd7141fdf69350587ef684d29c06f0acd773233df9d6ef8ee65f84e0bc077b4aaa840f9ee424a4a356dfeeeec64ea7cc984de4480de4080de3c80de3880de34e02608ba2319c0759212e13aaa2d80ebb40782ebfe87215c27a300ae9309e03aea03d76908e0baaf3d70dde9005c27d35208d7c9203c70406cb81db84ea662a069ac20037028ae723f381db81cb84e46a7001c0e3e6a7a703cb84e060a0dd7c9cc70dde9068e0b00a76393e139f5f2927a49bda45e522fa997ef645e36ec7fb350bc6a2929cd3efbec3b992ac366a9364686ad867fd9b2ff2da21a4724c211e188704438221cd1773255868d867fd944ff1b44b56a34528d5423d54835528dbe93a9326c04f8976df4bf39aa839a9f366ddab469d3ef6464d876fccb46ffb746594124d2939ef4a4277d2723c326f32f1be97f63d4a849f3a78c9aa47ccaa77c4a8a0cdb0cffb2a5fc6f0f85dda8b0accaaaac8a4c55f94e26240a800c9b0ddccba6f23ab6abd6b059381bc34fc31609b0c5d4c6f0efd820948de197d9a0cec6f0cfb0f9cfc6f06f8bd2f153c786e3e7c3746c2e3f19d3b1997e36a6636bf9e9988eadf413623a36ed67c4746c36ac9521510038d7b1dd08015d9e317eea0b4795206b2b4995068f9f14fa32122d5b9665599615141414141414a452a9542a954a3e3933518a0e1d2a2a29a3179a83241ae9e8eeee6e15d5155864a152a92696d9a4fccc48a41c3954b6e65051054d528eed558a91b010dcec895f55454fd151b413bd44ddef152c0ddd919d847b180afbfc04f54de3e830d95171777777ab542a954aa5c2c1c1c1c1c1c1119154728854a89652da3618984e51b12ccbb258be4cb4835319bdd01c3c786cd3f0e0f12aa48d4b51e1f08bca8b8acacb3e7626e548c1c1c1c1c1c1c9b1bd145ef18a9df0170c8668341fb3aa5782f8d11c2f23514677487427a33b22ba33a23b2f7487eed02a54fec896658d46aa2bb0c842a552a9542a1cca612b2934cd23187477b77737fc7f8174e4dd0da5e5edde6f4ffb5d7733eceddddeedddb62c254008bd238c10c2860ea14b612ecf3414bfa1afbbbbbbbbd9dbbbbdb7773b0893a1373343070164e61e330f2dcbdcccddfc9899f979175c48f213f41343564ec3d084de53fe81f7133b76c7b5d690dddd1ea384229b61b777777777508cd0e3f6aec70806e8dec46f22c7081d72fdf3d6a0efe38bdc688b2da47cd0d87e1bd3edddd093348c6cc769988596777ba4dd1ddd9ba1777bb7c3eef6766feff6d8ddb0dddddd1bb6777b84dded0f6e6ff7663ef08217b8df93674408238c314608a315a154430d35c0f09a5499461a69a81ca7f6bbf5e2760da56b28bb1bb7dfef37b700ceab57fe01fa3e8620740bb61523b47c7bb777b777bb5fef766ff75401d759ab67aadd7bef3dd952bbf7de8b52ea33b477a376efbd076d4429a594d25ae928effd0c61efbd0f50fed07bc242b9a1ac826129d36a729126e61da4aaefa2b59352ca33d618bd97499f9bd0d5e49a9ca876524a29c2da875a3bf5fd73b206e5bfa494328a9ca1d06c2852b6cf2461d77b292115ec39914e283f2796b3602f3f243b8a6419bab64eab4fb619cf09e5efb0c7f5cbed7de00dac7d285f7ff519524a7975940e03e50f7d47a1fc57d31d256e7967507ef9ec626a2969376cb88876631ed759bf6f75f25fcc9858ed767dd7a14f779f2b4608238c314608a3156194918372f6637e1816638cd2dda10f7cd83efbddae472bc60bf3b87137621d37eec6ed28ad6193330cc618a168034cac1518f6b333a247f728ca305126f28f4c83e6dc2b869c38794e9e93f55d8f987b9434d6bbbfd6300bddbb4ec61e5720ee6f63f6618c113a84104208bfae5bbf0b1dba432a2d0e49081dbac3cb033e9efa82a7ea3b84103a7487fe1990ab3ad7902910daa57bbbe5eeeeeeedeeeddeedd0bdddddbddddbbdddddbddbdbbddbd95d53c2917808422b6fb777bbbbbb617777c38edddedddddddeed2b2b2adddeed515aebee6eef6eeff6dddeedde7ea127a8543c4eac4ab0fae8967316580f7594ae6c6b2bf261e7b5c80aaff3e9c977d903c567c8d2a621cbe23aebdd72cb0a7170c773429f94d2b276e9c2ecb39680692e599098e672c5f76d3f6e42fc1747a22e092584d6c5b56f10863808a10588e0ea9c4addac07192ae49470a0fd218470bb1fdcef208470bb1fdcef208470bb398e46bc23cf7d0b5e0842e30cf7755f67cc084e7781bedf4da3cdf0776ff7e682bbf7167cdd9ba99840404040404040404040404040404040404040404040404040404040400ea3254397bc1c464b86ac900fe7f4388c968cd261b4a015f498f8c0e831a839a87fd87f967977432f74823997bdfdedb70f7fbf9701e97d61e6377acc16158c58f53c2612980db71b68c787b063e4f8b580ebc0e4efe05b50c27d6bebe737d0e7fb7ec41fc7c0238431c6087d9f50e6f82f5b9979991fcfdcddee3a21e6cb711273b7669907ab6e47f83d265a0ba621fe5b89f00d0afb19b77e6b1312bfe3740c723812c58536a404e3e6fb06e1d661a0c6b7bedbbfb80ded86acb85f43dde59498a23f07a0cf78f3fb8b317e7c2782ab12ffcd4ccb0d811f39201605b92074686ea1117c841d2661aeaca8f8e31a420821840ea1f783bb103e840f61c38d4ca82882bd9d47c5ebc1db793b4f50116b7c08638416d78542d76ea83322c4c917ad8f9bbff54ae01ba8eb21df76436bc9f82adcda1b09befb514aea0e3b5aad8f5c27a5942e16d769756561f6dda1fb478c4f6b410eca4e32616e0ccb49a779142ff326bbe3ef76e4d1d613def1423bae78452c4963612b02b11569612d3934812abf77b9e8c34bb580bf240256e82ceeb2dd35ad9b93dd32ae0d2943d61527f4ec69a11ca1ab3b0a7ddf7262bd592f87c55d111475938df191bc027ddf94a4f1c90af4fdca2b83bea7ed43df7b15e87bbf5e2e6c7986e6fa6e57d2ccdd4d36ccfeb56db5ebee5eaca94003f455242378d412ec97648f64890c4d1b6ccd0fea0d7626073b77b034cfc7b5f3649a6950fb81307f9b5b343f8a29a0c42a6a7fccb976e267157e97d58e53dd4543d9866dda6603e4bd1d38754a5910d61b99e10755facd8694b86f18cd0774073e735ab68f14240935a6ce4e275155c8e9b4c655610149f1905af90eed9ecff3f1e1a109285241523e78fd82949666ea7c0c4ba3fdfe0096c6fa19397350fbb58dc160987e8b9fd4c7f18a573da01da7e2130bd3f10639429e8ba9e5bbafa71d2e26295b282d69daff7b3ea5dfe7d334256e1be6691ce73ca01dafe213b51f86511fd7c1fa7ee34106712aa8ce74b234738aedd7caa062744da89dfdaec442746261fa43245a8a391bb3038a7119d7954853278814b21629881248f049c80130c62e52102590f0692b7680d903b6513284102e9f8a683d743bb6a5b1dee2620ee446a3b7714ed3cc2816a6bfe7143ab567cc41edcf9101b9eae35c07b4e314a7b809ce310076f5dcf88db9914366733dd90163d9b6b27cbd7a6e1859d9764f3772c87c681d32215d6ffcdc0c88232f60f2012e24a1c512254401b50cc3f22bdb0daec3bcae7cb6fdc86cb21f6d6353627db615c1ea8bc230fd2b5b67a48ebe6636a39ff3876732ae595ef20ce959b637da9ecf1434fb1f4c6261217dc3b070570f10595199105949ffa357fe073f1f9e197dff8bc2332cdfff7eb2ec716441b6b2b8a98795cf3ee32e8055d20a87d54c32a1ddd5a3b2c93d8dfeea197d7744d4ecfb53b6dd13e96b064456218cd4ec6be643d794bf9ef04c0ad719a9d993b87ebaed9e46dcd5c3a77ed14fedaf9910af19773d416536300a9ffa4d3e7ceaf71cd0eeeaa9dd7ff55c4faec7b64b0d3ef5ef90d93cee0a8242431fbfbb826a7f90ea4302b06d9a45390e1692de3faf9a8653a9204a34c1a7ad3c06ed7f3d34d6e5b90249dd1aaf3da5e0939382241185099ffa1f3775ea62c102242a1f4165ed624eedef664ed35852308d44f567b22660262013c27546b131ef3de66eaa6a4f26b5753666ce395ff269fe663a5bb3b5a79ca20a9dad797594a48e90a8f38bea845621f915f07e0ec17609eda6ce086774022154ff8eabddd4a9fd338afea9b335fcfd5b6857d49e55d49e53d4de1a4a93b1bddc94585cc745e8292c47a811ef883ba74005b31f4208210bf1d6d07e5d0a1a6be43aed06b47b3bebc3c4661f69059e20d750f8c4bf461de271308783cc48620612ec8977218df71e331a38f28c207787308d2cdc007ea10b395d50420a27e8429226dd5f98ae042b021450a45c83811a4f04354f880ba024f0008d81b39bedbe67468f195fbcf798cdf831a397c023052f240f1a523c3476c03a8fdb99f0820c49299928a36a7c62660e85a410672471cdebe26942c7af154f135ac41823864d2048296596d160c74752bc4d06233a1a41d173c516642469e20418288952ab89c480482924121523452525c57710e4437996e0426545454587878924dc8787891f545e22082b2c2b2b3e86dfb88fb6840d586cb0b0fcfcf0bca008ee23799688818d1b366cbcc004f5358144d5f8a4a2a2a272e346906ce28817a8516a299530c993aa028f125eb4985a5a7e4275b550f244a52e8f1255985c4c26ec06a37579523fd2891f2c780054aacba3448e0b0e171c7069d0048b284bd46e1b3ca84d031c9e256eaa4ce1c88103c74e16b4f0319e470924395e72e4802235eb5ed14409bda2098ea351353efdcb4b6603fdaa7bc5163f3b68a073451465501e27562926ac50353ee1c08103c7bf8d24bcbcbcbc6c1b4b5d1e2684c061dbb66d1ca7c39344106600a389da61953b6b55c45a552e76767a40450f7676eaf3d9416247fcde6366778f3f3126f1247edc8cbabf3f43a4182dd85dedbdc7ccddedee4f63fbc4c8ef2ef0692e2c4b0849bc259658820a73ae124a28e182100b90a0ef31f3482e9f20843146cdb22c26ac95b4a494dec5caf7deafbb43083d7a2a460ff878ca53af05d4a5bc241a8bcddddd856ec30b76d427b553e55e7617cc39f7bbb75f77c3dde67edf7508a1435fe87137d8fbef04f5bdb8f97b9fbb0bbb77bd9b1f4a31e7e6784cd688d58f66ae0013b67d30a4245cb004478276b27a0b68272bf733e9ac15c558f45eb0057dcf9d0bea7479287741f908bf1a7ea5db9f22dd4a7d2e619195caedef4f7dbf6c82e92ca0dd7af1b2f881816ee93f56406dc062978626fe22c19128f8210b7e681b010f945b9665921c4541292d4e09fc1ffd83e1364c06e8b62f99deccccfd9cc0d6223ec8dedddddcddddddd01b7643e7938761eef22e6b376cc0ef9865c33033afa8a490e8489461f30a492b426fe6e55d66e6963ccaa0f05f7c32ef278f1e3e307ecba95205ca19ff3e1411edadb7b43f82921072534749e99d0a5409cea34aff5e2365368fe70c0393faba6b676766bde869c52b6d3af0fdd5c33390736a06394e5d3b97153c03b9f7c3a72950eb55b045c51d32341a1e4fe0d1a347cd18353ea4407de02006c5a100500a904314680e3a4041871f4fa0d6336abe7ffc1ff549e88aaefde4d1238c1e354ea8f1d1046af9c0a10787023081c22f400e4ba0f073d041093ac49c1f60fc58ad56abd5aaae56ab98e349a0da5b4f7b00c007bc729e0fc85d378fb91bbe9e9051af268471810048cfc678edae1eff82aa316faea0a9b335f0fbd9c9d25c410dd3df84aa8219c5c64c1bbca9821f3c986eea004e9d8d81dca5ba763875edf0124bf3ca783e9c7a3e3ebcf22995302d8b5fc25a329bf8da765d21359e8feb0a85a1f64f1c4266d4fece2504b4a77ec8c3551f774d774261edae9ceb72c2d258dc948261faa715397552e184761dc2ab63beca38b5313a5504eddb9ecf7c3e623ecda378dbc078ef07092bbe82521bd3d9b533c4e3d59c39338504da3d9fd4f3e19968822dac20466d307aae9da0a6a102a7462b92d421844c6e88352d7edc33395e5d3b8b83f6fd57154b737de0dab96eea75d3341a17ba70faba292366bcda018d392e4c6a0c3befbba8aafd10c53e0dd37f85b1a72b8c9db9beb0a7be82f834c19816a7be10c4b59baa1d1e0a04414c92a08c8854e8a096a46cfc08990fb03ec84ca68e8e50135b03835da6014b51fb633002b55e7b2e28ac4378cd76541e525fe4ae9badc88e3a392fe8a29ecaf4b8b7b363d3049ffa39874ffdde05e5d5c638b134ec6461fa358d1480374fd809bb82b278c28a2b876766157bea9f5edcd47ee7825a7548087458638d355016f6059ea6c7c51c54848261fa7d8b11c8c0f45660ec3ce153f730793d1da722143c6312021ff7c8e0537f3f28911424093260ed38f5a034b1f5f5d06b8b2a7c76b0a151a769b40f81124aa5d276d78e539cda533f15b4eb6432a9709e814faaab05929d4a12e38bd41749d62ac3b25e16e86ae12449e5aa85139c3a77a615b55f009910ae4152aa186c0058cc0f2194f63f98574da37d6ff6c385d2b898d3847653e75283692c9e596cc6700c16da28fdd00a338410c2f9bc15599954704bc32b01d447437d35f5fdb6355b5f57aaaf2385eafbf71ed75ddb8573dd5c318721c6a914e4302ee6441dbe211567c0bc0834d6211cbe378f58f185e713337ade8a6c16f57ac991a9fc65059f3ad5bd9b6a9a45a152bc721e7aa9ae1d3ef56b41bb6ba787c799e0ef00329bf973a988c1f01171bce213f7f00dddc3330bb797c3272872164ac62beb53389f4a9a33d8cf90d9609c3f2ef43f3a8464a19036c9ab8eca605e04dab5bb7aae9e1d5868738ac33317c73345368beb864f174e16f47d77ddd44672e1f08908b4bb6e4c4f67eb93020bfa7478502312cf84f02b5e0fc5ea6af1011ed4ab2ecf154c883ba8e8173187577149d4b1e1ba0ff398c32b1a306d8b5044299e8fe8c4caf4131bd3df7175b169f952500dd8527f1a329bcb06ec019936d450c30d7bc32c692d6f7d10a52fbdc515b18488c67d11a6c79986580fc4a2acd7dee28a30b224088d2ba2f4d617b18448e92dee08aa8896d79e88f5dabfd738234b3823385e7b2339de5a54cb2f6abe6c08217a78d5f443d8c01f62facd4aa55fd45c1a4d1b346306997eb0bef441585ffa224cef5bbef4d607d1f2a50fc2e54deff2a6d73e4628f8a46d93098e1c2e2da692d6b22dca655b54695b94c90a1a75624e4f505008088eddd9e1819760277070aaf42def711a905586b219ecfb27cfd628317dfff4c1d268df7308b53ffb19c427a2927883a5e155cc79c24e4fdc811040b8cee757af6ed17ce6b8ae562bd3fb966dfbcd1e18adddf331719b9833fd60bdcb07a1bd892bc2f4dabb70452c21627a4dfb2274bcc599f81765fda270f8f492f4106837751e4e56570b1040a9b22ecf1539e8b195b66d98968d4766b3d9d41102a5c13c08b4e3158fcc460813ff0f71f99709114d3a3e88d7451560a04cbfd9e38058940b8704490c8f24c72301c023d91ec9cbe3100288452141627de99168dff2913331374407770465e24c8f33fd60bdcb13b1de8533b2e4bd91d25bff38229a9196d7fe08caf4def48bb236d37b975f54cb667aaffda24a9b0935716c9349c3f4e7d8b6615eb66d986f52fbb755ede77a6a3f00a0d4fe18a64f0c2f8bc2613364ea344cbf69889125444c5f7a23d6bb705b89bc2eaa5002aac419d1dec4b915f4fd381068c7ab2f40c04960267018bc7a3eae1bcee1317af4e8d1a3a6a60687c5e1e646c81546ed2fedccd5b3a7fe2be8f9f83c9f2bc8e7fd44260f8d98f3839c95a874cd59e4b474664600000000008316000018100c0a85a2013dcd82d6fc1400115d7c4a645a38120824d15810c4300c62180a30c620620c40041985a8468a0008a5404ee7e9fbf778161c25a3b31eb41ece4fb5fc4246f9c6cf553c9819f1bfffddb507c54636eb10a50955acaf145662ffbc2308747e6a5923736e6ff8784aba00d302dfeb04d4ca5956256099e0aead3c0f631a45b2cb62a421018216022960460991cc672176d41cea05ac6a6a6d142f5cd97537da51cf90f3a99508117f2b3a1530d5497436f0e5865d726d98a311610b1e0f20ed698c56e0464d715e6a58854dd53213688fb91184c661f087080b1a7611757ebf7573972fbc6a5e8a3f94bdc756b3b571929490fc6a864f42c7956474a1b8f42b8707c9b4cdd7859760f24d0f0c14cab2203e7499bc6aca6f203058670559b876eaff08c6a61b3bfd656951c3eebfd1704bbe9b2d10c18c2d567230d73d6ad32e6ea83bf64ab32873a50b83dd26874e6e26f1d28d25839eef9161ee4a19bf2c23181a1b7a0416c8f6e22b255fc6ebddb465bf9ac4f62575b4e8ec4b69d63a2f3b0ff3d6f2d558ec448fe966da1dcd6e4c9ba3d14d9ad6af111b58e560be7b5193468e612baeb2ace033ddbae92c625d51c4d422fa7d711839b25b5248af5556a0c33bd624511dee040c62c048daaea0fe8a29b1fef41a521a54ab0aa40337a0f805dbefafd0e5c116d82017ce10f81a41d4d3ecf52f868f255e153fe21280f15055bd86564c34b39fc194de4906e985a024a4d09601363ce764d2d92164c50b3dedefed2bd3616f2a5cabd77cd0ef31f1c1adb2c1a1382212f11ecba8ab92adfcc7de13588442adf372ca9c20b43754e180cf6c8c97a4d09ce853a3579bb1a720028b392c65d67dfe1d9c90773e31bd2de327aa080349fd733623b9234764f280aa9400d123bffdbd41b93aa33e862b6a90c40e6963ab200ef9194a149e66fd471028791a6232fcb394cb312f885c6080477cddbcea68b59958d812dc0be91109a0d3e829c30b3e10541cb1c99dc9ec19fa252e70ef315c5e138de8b86c76dba7ca6b88515471042b2b009416d170520266400d691edf73e74f8a71bc69b7b37381f50db83b48da0afa1dc12cda27d743b8911930919043c624e7260cf68f8e18c25347e45b806a00fbc8912ef97320d63046019c5d3200c11d886202d8935f1c361c83fa4c162be9ab79d4e9f7fc5d1b217ac9edb8cc98c879e819fe7a902bf03210008d4a7294551738a83732dcb1c7c67222cd96b7a55e53780a9715b3b5ba67dc202ee798fe53d679c565e62bb5cb7869e4ec0110b83f705fa8e0f4e0075a5b211fb6a08e044a2610cb072f5402b4e3b770ecd93c1b80d98b31a20728b0cbeec2d8af4c6e2dfb35c1e2f3efb27bce91dc872f1625bffb287516d9fd8fb404e97e8515cb7b08b0c6ea03c2ba4519ea89a989485db97c0a95c91c42f09b4ca83a335283e789014683d4cb1382f810f50ee7ef1258a38ffefdd811c62fbd738a34316d1a6881ea6bce641191b7c675c03e476e7a694986e400f4290a94ded64553fa449c3fd1db3f5ed37a3e1b8c42925bc490b02bf5074009fee3f05ba4c9615c04c49310f0fb02029392620534951d5ce026dc649e6975d622203c80ef8e77ee350b4e2ff583edb8ac610ec5a9963695e96e0c48d5577f77431b53a8eb0e2698a9313901a1a8da16a348858dc17bf277bfb4670397f5d2e3e95125ad121ca34668e61e7f7711701b2a3975fe7e65ead70f19bcb87775e24548abc1b412f8d87c96394f5ed7b20d4e86ac089985979dd6be03d1a03e43f245da4383b194c4c7bb28842cc02dc7f81f34b137abf814b015b124829941e41ea83e1e462d6f29ddc566619b2c84821f4feb418101ec04578a8634f8e7f499c8dccae09d5bdd10a7651a2ead719e33aa3c2e5833a00cf46234ddc58d347e7dd57c2a5c4160e3685aed508111f609a9fb57bad073404e772907be94ee741a6772c025912aaefacf33088c3120428903210d5d102e60e0e2f952dfd96df7097979ad461087f2bdfa3dfba08f0554b0101ad18891dc0b3a6af15755000b5b7196bd14002ee02fdcdbd6d04460d22ad75f121874a4a58cf6220291627d2b6a97b3ad1c9efd7544bfa61aaf406f1156ae48afed831ef655a1bbc6551dcea0030293c8965bb986e272a82786b7a8e3773d3a0c4a6bda0cd87f49e0ef6753e058934561776df5d6e5053b33c8d65d61f8ed659e0fea314d84509868847b6ca0132b7996e5c0e14a757b8735afc9c8307f1b5943e54cae235080c54ca04c7ede4572c50c1fea2016f43d0690641ae1f055c067e30cececd45322ecc7d25ffd47c60159a1259fc87428728a76e96910a32aaf88112f1b7b403b0280ff77b8f03cdc070cdcddff14dbf7c364e62555dc85e45916371b0ee0d910b657c8cb5a8c8745ff1a70f18e3bd074f16784ef0f79ce35f72e389fbaf56744c71376a3abccfe3eaa31f149aa93034bfc54e4349c12b60fc3caa9a2a23291c608b185315dd1639cf396e7172e4057e700660fae3d8511f89b3c2b5ad1ab8a85b18a7348c1b992c13cce7f6d21c24fafc2ff8bae1e8fd165b3744c74a64c3b35a405d6d7e34e37081c898d8ebd2fb5fdaf147f2e144324501eaf6d2ced3f381e5a4547c70c7f2c6044905a834eb7178d22744ca683ec199a0b02c0f9f1191cbc1aa8e51ac5692856c4d48325286f2050d7194f0821e76be0b97ed32629a362770b08ab071949717ed4bc477155ce9bf5e2d178a5a9f7da2a8bdcea8d512bbf8f96314cc2c5185f7c4147df86fb9593b56fe908d01db1f032c8a581b32ad27142707bb542757842275cecf13ffc626e2667274e4341e056d404b3d6009804e2968164f05865fa7a834ff902915e963583acd010d203ac6e24d0b2ed21920a46d6f52f275742d06d488bd81d80f0e1f90657001351ba103191c391e6b0766cf419556287d19240b296ba11c865c5dd717efe189405294bac23cc89df632f5a407d8bf216da60a6d7cfe400a2b8a0036b8bd5c0693e16efe89a9c5fd4fc3ca26b898005c522faffd3ddd359a075e8ba30097ae37599faa0f97d114d0e3cfcc11405eb4a159d4ecd98c9689ae6c848df211e5ef4a50f0c7a5e20476d241a3aac4b0d55d1bfef204f857ae8e8b64b69611cbe635bfa88fc380e2e788abf4032e1db274ff74706f7813e3cb90ffd58a236c42cfc6a066e3acde1e60b6478259606feaeb4885ef3f4801187a6fd4ba1c5e32bf3075d2aeffe55797b552435f3e785eb14ced20b0aa364c9c10d556ef72e5681d4a2aede5e600f55faf626c073066fea36aebff2f38c104ebe4dfe8834c3e30cee6783fd5a49a1439343394a68a18e14f2ff0c52700581a65cc35f8972b6a1a82ec2b2e2c66ce7b7d6e1184952e00f7b9cb8fbc2aa79a2191caadbc2322c920d03ac7bd6ec0320bd676953f332e74eb9aa513fd1afef755631ef85dbd2b46bc57b4155a1e2b7377aa06440b8885d43716cef100192d3d4fdc7977d83847555b985d229391252ddcb401e5f0e12161ecb2199439c95211a3d3ecc4c407a817876c7132201aa47d2ed2d4194e53f9e6be9b491a234e1b78388c44d6bbf4b7bf38dcb984e8d0115e0d6de7d0f055d29f8e3befb791e575e82fc82aaed6538aba5d4c3250ccc4430ad94638ae173448b6931b31f1f10cc0a858b9f1aee8ed047ce9a09b120305d812113e8034af8446c6cbf129586ffa57eeb6791358fc15fdff4b3501eb880d936eae0bbb5a23e7cbdc95e34704ea6902cb3a663d9cbdee05190ddf96b6b7998e316e1934e29fd71420f362053fe3d18ee2ebc0819b87fd5e453d908b9525ba85fdea6a595829ee6d470564f88599dd1c834e9805e0da9703b83748e8823854d6b2130db0d37b18b4c119f63ddb65d897ae610f988ff052302f9260a25b8fec7d69649693b6170b1a0b262b7364d3d9fceb6d18058e1f5d39a841377871020df5596f55dda13161b236bbd74ae33e98a80b769f728cf802a891ce7b728827ec54565cd6085f7ea985e827869d4ce17ea8d9a1dc6fd0f9a4b98548838534726ce1757ccfa15023e0540cbacfb5a9dc4829841ae83acdcf51dfe953d17d2c4dfc44ec8cf382f7945681ab2a7154e4bf8303e0c841876a86a6572dd52a95f261360ebe67a3a8977782d9e742a437bbccfcf2e496083bccecb534708b8d7b5e27ec5cc628bcfa9309c753120900bc50d19cc853b49424c2e81f07a4b5ef3574767bf7429f5272479a469b98c6f46bea7e7523fb11f2459af1218252bfefe391c1f410758ff45cc04ed9d43575118264718da0b0406047db545aca037c4cf2f3cc70d81d0a1dbb2cddf0253c8888120b65ac4aa7a12755bff24e6f211175daa11f65798d7d1e96cea5166ffc132e27a063575a644dd7227f388760091b2b3ff6d592c6eaab63ae442f393229be5785178dfd36b8910cbb132d113c6f2e08f48fa09feec771ec1c30ad6f1d2f1b55f25fcf0001f6a85e7d347c3e601cc08624fe6f69126ec058ad0e56eef65bb5907b30e38f802ad80ea33234058e4e363ad5ac537e9af971018c7185ff0b8ac10847446bc946588ee3d250ab5ebb6956a28d2eae9ced23b7dc4bc68757bc9581036f7b818eb9bfdaf601c17cd7836262412da810bcf224a509e1a3b29c20984d4d17e8166c125e8a74a5f04480064bc63174cb50d4107902f718f25e7a8b1a310a8987b21ca7a1dc9700735e310bfdcca1d6d8c10e5170e5df7f771bc23addce22aaa6537586f6ea6d15dfdd00435ea6538dd5cba55d12a4eb263951e4be1b642095325d119b1f0be12c7e555e04649f7f04f03ac80abf57db43ac40bd12b9d5843bdc621205a8c872e6dd05bf437aebc34e05f078e0cd8b10df9a17e0920554635dac8005e3eb159d54f8d62e320f20d9f136ad2d3f36ceb3a00e1426f9b6ace6d5ecf60ec64e73f4f2df9ad829a1e7992cd6b2a564919cd71c1c0a558e895d7158eb1662b0fc8dba85419247082266ca7c90eef12b9727bf89626529c461c186899ad92ce47aae2611dec2c7f484d89da07a30f7749e520bd4abe879cbae0f5ff8fc8dd4c275414420bf22c8102cbf87e50498b23e9ca105e8f39d26990612620a049641e29c71570bcad3fc6dbc74e0cd92634f6334c0c55ea7d716a44d4e0d08e7d9586a860813530d9f72af592d8e7526706bd6d1fe67f8bbcc44590dc83abf11bcf1ace96b951067c884580a29f76d6477f5c91953952fec19cb813058c4f380ed03ede42472f8440dc51e0acadc5f1bc4780a0167f5e9c23d04b79ec75ee289bb35770ee4eb20beda9f42f189e7d9c28bc8426a0d0eb72ba030732617358cd016d36d43f8640a26c25f8c507ce5dc47a0642dbe4667681893c9fb86763a1294f9c6391a8f5e0b16bfd3545f1328476a38229b7c6760e8d0da9bd4b6668312df4c2bb16c9c518e2a8c4a216d04df70714952eb6f8a8f7f089d119e6af8bfe04d2d4cc1f833f6850b7bd1185379117113ecdf9975ec8384d4d0a7719c1dcd63b087a49ddcd8856c8dd8f0d1225221ef37b5c711cd21032dc882dbfabaa0f52c4496be71fd9759ac6776e582720d8106f429ac6b601ddfa19f20b556c57c2c04559354d6f02e78614db1e091a9618422a84a09029cb706fdcf00b5820e1adae8ce8188fe4c01a62d947ed57ce993640501daea239cf5d07c7c03eb2a6278bae3b208ab0d1af1cc12b6b95420294604efbda8ab5dae5c3b1107ca92e8a9981c962b73f2f57b21e9d3d934854da7166bc976d664c1fa492042e9a12e37ee8137c55086fb915a3023c1fcdce6f149f5747a4c98a4de71df36800860ea51e39b88ddeaec3a1b189fe4d6840063009f79eec49795298fdcbe34fc72dffb45217ae62815869d62f52705c958a1b32967011576e372cfd31f5fecdadf2fb6eb0877a5ce437baec5b0a7e92c84a1a06b4db22169ad07b259d34e5206ecb3e12f2aa3c1d9e7a7d988dccc2a9fd862f11b929fe240e6056acaa43dada773fe92fa8549a907d64e84fa2c468dd4b5064491a5401c55a3dd0dc8ba34e35b75fbd3772307ddcced47a58aca5700dbd090e15bab432c2e094027f9231eb25d06946f559a80a2a6b2938699cf50a7072e3febab799dcc40f2c9beb1a268e5bf1896f32fb0cd28bbe6b0b846ce32607980b1c6f91195351d971f82e3825b4b4774f1e33ddaa9555d9834fc8daa40f6fd0a6855eb1cdc831d51e244bf0351c70bfec8d7da41f14a2828bbf17e87ac742196f4dd7bb0dfc44356abb42f02b78ef3578c9191944bf99e5af2d5ff4edf5af2daa401a010a0c154d20430a3d21323701b374ff516a397b99a70ed137709fec89c705958e23b7c32b52edeb6411786840c94cb63ee5469917504e81433de73d0a42494386d22b25aa26a2ef8bd1a2c5b52b021190629fffcea4e2d80fc1c8c7288f3cfb8917a4c20820b4e22851d6a9f10a1fc0e85155042cba0c4214402f43042c76fc73189fd0b8d3b4d84982418d4518fee525883540ea8d5d7c25790a07a593b7de3065e621e1886025311d920d3ab4008471dd85703cca36a395b21620beb5be5d226ba1d51b2907e90c1f2535be57865997804e99503bf727f37e8cd472973927c61a101d84ba71113f93b81ffb18b9342c9ecfbf7900aacc4340497401aef3fc0bc1e0380f8c74fc0fd2551dec0e826eb9d815bfab831a2def961a56e61c8382be8890fa534923221e2f6f95cb17e4c9a59cd32516c5e56bc49f8f5e111e0f39d3c85190e76df3877abc0021b2a4bcef3d995db1f9ffbff8a301e172024c0305dd28fc735a3527632a2a9e4fff8f6e5581617e68dc0883ab25b9c0cf2d22a79150ba7a47743ccc34a7cdcbaf3e11b721a3517e56a7037021266391553f4d3166de82c7093bd69a01137a167e39819110ddffb1366a1c08cef237901a8173bbc905f97bba70a1d8a91c7cd67359b6fda852314b12dfee4117cf573ff529a7f011c90c828b4a358f1a058e2e9fce8c21221e73ce52d4e994917253d60026bda8503ad416110b7aacdaa8f1b5a0996ea6e8beffc17b77505641f057c29caeeb45c07f08776937909ae3a88cb00bde25a9947bdfa3bcd4554370973c4c7411a0f2975a4a8a6591ac24a600ec6f7a5ed1d3f3872cd8d205dc462363af96198ff21f297407aae04789d9352216175a2fc4ac3b00a74c386aa8f48c855bef19e4c9ac2be63a1b60dd83eaafc0a7f2f048860ee596f972eb879b3b350c91c5593c468021c312f8bed4e1afeddbda02a77294402ceffe866793b4c57278389c5c2490bbbf39b5dfae52c7ba3fbe4f906cc93a2fc7ca99a3cd46bdd2c89e34e4d08d250596cd01b1d00377e86cb8e87fd0d7a51c8f71950d0f7a46073f9e19f3381f58497766cd1e3fcfa46018d519e8ce1d294f624bb276eaa472da022dd82d0a6f255019d6349c2070f3e0c63e507d9237b684b00f60f40e142a1ced23327eafb48f85401c5136e1e6e765ecce71d2a8fdc43051b079e0dbf5c190a7b3072092e56a07365a1b733842510a7a1251f35e505d1c18f106dae059dc3f14ad131a65aa4ea97697329269ede820c77cda75edc4c09ef808008f080ea9ff02860574eb19fce93aa0bde1a27000e1df6f08e2177bbfc9405bb755ee8add902217f0392b1edc67bdfe936f937b29504fb2a32679288b4b9d8b4719bf5daa0e651b9163b809b367329cf502a1b95341b9448fd84be73700706470710a692418884f9c5e1ebe71cb31ee3372cb4f817d511a1974c2c687172f168223767cf0836095149456954a0cb2232725e3a184be553f8b4c9801eb33ebc5e1bd326061da8be6ab460ce5977badf37781726ff559d1387c719b43fe562a6af69242134ea5df0db082a7cf73314a1b947ef43856208faf1ce8a6b78bd116b54e10cf1e730d96d8aca445accd91e51a9c65c44eaaa05ed7dfeb5c3f482ad5e7d39232e0286e988ae15446a697137be5c38262c4ddcfd1acde0ed0a67fd995b3c2e850e836485c379226306c20d7c591919b38bd7e64ad86602b4b1e9ed8a1c865ac6d23758df0ddd0f97681f0e865a7d4b984693c7b4bd3daa2ba631bd5cd9cc7f6c57d0a3ae4d4009e05a2e1a10a6eb6e0f0f55ad40e39256a38b5a992c12fce52c5b0d506406b7d77a1c9f04456d4f908b699c861e615667c4f41f63ca97e58f8c921f9324eea417e6a76419cd891539c744d01dce0144e3815d866aff847e519bf041c007184402f5396200ec6c86ae108fd63f7487ad56bc63f55e1a457ae7247ce1f0fcaaa1980c367935f87745e4006decdc04cab26d9da36e0f638b3710f98f853c501afd01d0ac36a2b469ac804fdf7912a431dc57e8bc93cc2b137af28a592bdef2605828531f0ed2191f962a7818813c29a72c71f471a0d4acb56769340ede364f8076c76cf842d6ef573fa09780958a0d14101fe3421eeb54b990b19f5d32814ac471beda1114e9918ae36a9272cdfce547d18f30949d1c4f9a6ff452ffc50a18b48c7409156321b5f280c872265c84d9441184ea841f05e1e358fa6436240c24e984e5d4fd506ceb70187a9f5c68057281289005f547af5446df45bb0f5e3944c6d4e1ade77ee64a5c7f46f8fd9edcdd7fb3372876dfe804eef940b73ff98e561e504500f351b85479b7250d2290eeb68e33ce3faac259c0d83b1e085b8084bf27f67499209e3d55936c5095fabb56ceb8e92c4437d74a4243fb571e5f440e0961ebe4f64348c8555f2baa5cc89339b667625551aef428e6d61601d1dfae59957cc66743412a352c9635e825ce6258dd17a237fc4bca0ba29d1846aeb1830afc834f13b7ad47c31c2bca259aa89a9343054ae8fb7892b9757df6552340da4e09b957ae82254551ebcf3c285dd394670dbb65067926d404c848710b7cfc07f98e92622acb130b1076c585818b4a586bca1bfce95ed5eb9f112e3cef5c77f99c601867ab22bb95c7d024eaaf5b0f488bb9fe61ff255c09ecd23f6e50d4b61e01f2cab2ecfff45e659560c6e2f9db968ebc449f13626b95fadf1d8155aa96dd8541975e326536b8972b3c32f9674bfa91258b5885cdd7c2a911acbb999b5ffb44ffe613ffca37dda4fffb08ff6693eec837fda0fff6cfb9982812c00d50003d51882a712001ebe511f05bacb7595b6aeb4aa2fdd9ae1e581e47e2b73b090693f4c8a4492f23b007885a50f40be53035bdd13a1d45e359e6cb3ef1bffff334431a7b8fc44d3f3186fc053b89912b884f5d094e1739adb601642b9ce5ba25719af3f4908c22217906b712793892fbb819a483bb42edc23660d9c0ded715b5161e89e380d5bedbf96ba5db66177df63f0c99c9f3771c344ef9176e29cef4eb0c057673ec28b8b7cadf4f4a9bbf38924efc2b81f4811566a4d598423a65cbf0d38829d605b83f58a7dd4d84868a6a6a3c2a274322308fe0e96770dd2667dce331450e592cec057374017a907fa04e522f98af830c00964a3fe60a58a36eb8fb57227a3e9787c1c81dd5557154745bc09415a7da731974aa623d20aa733be8dc6b5d9c1cb11481aa0197857949d5120fcb1738ebb918b6f02ff965128a845a3a0f982735cf08481260ea7736db1f016afd152f8558debf1bb715dbe0946234a04f4f0d4fff6acf829ea0f83668a3e51180447f597f9f9a671ca4077599b7c8dd5b939bc41af5fa74f117260bef5cdb41fa82bf5be9b137ee58f5366238c23e60efdc49a65fff3fbf424174875e7d97d0d1ebd39f44dcbc453ff19943447d189a1c03e7b277992df0da58b424e11e771f63d5a6a456baf353dc1b3e4d40088e0d94656bb88d37bf41deb9f39c6d791994ec14850285f80567c030aaf322ed70178e371898ce56b6ba114c317f1023881b25ce5768664292af0c8d0c7578ac95aba14b8779f8cf9e65d17e7ecf664b458e237ebc334c9b8c093216603adca71a444c992d8f3c35b9530cff631a2c00e36b633f5fae30225bd732e81d0ae4913e8792cc957e8ac9b129685eaf6db7947b859b68266a1dd174db3859c447b32126137ca4f3c3624dc49b0e6190728ecd18ed88bf4c93cccdc0cd083a161cfbdbe4e252c62066e86b7cd53a5fcb7912a089002c65a28ed7ae550703edeced8f4e26c3a9a919118a2b4508c56b48b7319af0b8429af70af3bec7fcecc8bf93097e236911509c9cbd892954b59178ce1d0e2ac8a359d74504cd2373f4c4e66f1a29740e03c52089137a53153e01fd9d0323dfab5e95cfe85060a56a02aa9cdb68c807494d5ecef7bad3f7c923d06eec4f704e5cf7f0ec8c815bc93944dc229ef0a804e7a6171a7bbd35f04e3d658fc22cc48a359cc41b3beb581d154aceaecfac308a8806902a720a7b6ad8444478491e606e88b77949eff35479c984be82bec508bdd446b62af98f7fefc04cad1367a1e7d54b381a63993c2a2cafc185c2cba2b5867a9e91fbd90f1023c2ed7972c3635113b540807de3d4bb0fd3b60b54f8f4a3391678f667af53bf9f1839d6f7666955add71e6356bb1320117ff0138fc4d985229e7d7e2d672af14f44ade3abd7fa480700f3cf23f4a9629734fe14f7543bd5e26581dea4406cbb62f0fe44b3081556e51fe212a74c20ed67332815b0f096f6dd8218639ddf8758003945511868f100ee9308dbd98df55cc9f5dc41e5916c3a87a0c4717f13d29eb5eb17c9a2d9181b6ea39f2e5b615d5aa53a799ca3af3e1bbb0d5eb7649da9e4566fc781a766518aa9e1a796f4767baa475e709c78b245293f9c4ba3dc1404f0a1523e0021015bd0122ca0c30a560f5fe9d49ffed6532e4dab61a73b29672d557d1b67cf7da8c549cd92655029146300e924b55e8d51a6ba97d9a536f60fdf2b2c44f18be71d2946127a029b6f2660855f10733cc772ff7b64411f4a130ba5593a28a8c24a5a6de285d5ef3de84f73bbff057df0489f16087ebf68498a808fddf54e97eb203391f5a02d283cf9046124986ff437ef08e48fea1253ca972b0c79cd7ce1c6e78879c4c0d65645b6c5c24aa516384798360ca2f7a5c2d8b7954bf8b140388e6d1b0c19188be60f873919602a692b04c693741e4193f6b4882b8d4bbca34496d5d9d00bd65e8737720ba56ebd02d363531d91200edc2b19df9fc6d7da0116833d17c9e20620f2305f41aad92e067ff2f4e71d17c54d36db7db73f484195d1a5ca2d967c37f9060c72edd03ba30523878cd5f79a750b90587c28837cc2fad11d49859a0c52326e6fcbda901756ebd630b29384a8734904ae2043d53c9b2034119df6fca258c2bb8034799cefa1708bc05cb18906abb4b694664ed685b99cad90e75816338dea5167af3becc3af9a87ea90291462578d244e0064965c752102379a484898b5c1c20bd66a694dd625ecdb67753ec7d24901fc3099a775f494c16eebd0ecc236a0004b9de9b244a1504a134017f64501a1f11a58985846b88175b00adb11b8c2efcef9e16a344108df48becdb3d9f50c54d49616b8ffe4940876eea581deb7e673ed20869e608397419c15b43cd785d605aa6ab74fa88aa6a363f8c714dc07a4ad232e2befa161ae241d12bd8c8573c2cc952173f15e9a7c1d42bb4878715005d2f24ec167333e4ba63d732366c20eafbc92ade0b544de2da06eeaabbea7186ce3b83207ec49f41818cd4048c3eb1bc66c6886a43ea46832ca4b6f905fccee56beb658212069de50c9407cc37d741a0c37f7400a5427d549d3dd61326c5bdc2c16e7ddf98f67a2387e67c388e7325d7f2046af534e0cdb9dd08570e35924ee5c22f0c1581f6ece8df28817ebfcf121729f16315695c786284ea9f44f601ec38dd12c2ed2e93d19b431a2a29564690a51b6374841526b8fc05a4875324f756050d23aa54fa4ec76221056765d001f882eaa2aae27e6ec4c97e4734236a01956da8163a3ac6cdda2a9b869bf1ebdd00ad53b4f154eb45105e8d2344332f85c155f907017b8715e8722a7b25ee4ff3bcfd05027af68fb4d4a24b923d33c6807145b86880809d6abf9b684974ca5beb69426a45e6b2ef336a357c748ee5666514f510e134dda51ddbd090b9eadab91d7269dca7652dade2a4b10625821324fead12d5090916abfafbb4e482061198d94618bfc06b33c340e01145438cfd046e38d821443f63867428a922c8942cff073909be1646e3e0246a9d68c47af1d214edd235a49af3786dbbf15823ae111fa76ef0d5d0fa6f51149f7608497dd5205e04ed2b1d55d9306616bf09575273b71843481b4ec62153a1428974a4e955823ae166eaa0c857abb355be09152112c26cff888453aa5f3c1b322752db012fe2a7c3780802dab155a8f1927239e867c685b444cb66275f77c4beb1314824a6e8f3c1402cc56d398899120d1c608d02b7ee52ffe90557c402f804d610f87e8a46b8239ab3218dd83eb4aefb3226eebc5168d5abaae94fcb0f03857cbb35f731a1eedadbe57da8d1a89c6900ee086449b1bd7b103f1ed0d4582b64c5f7fed585f8289ef5a6fa28a07a5a4f981c7f51b8ff50726c3e61100b435f82504834e55d13c666c082a5e8cf4e846efd59958fe8520100b41af37be08f1184f0d90cf53af80b531024948e722ae401b6840f00089f2c65bec2d04f61ee6ac10979370675eb944bdc55b26d5910ba50d9696de2f0729dba3b26f7ea6362c93b4e140d18afc5b2a5d0ea274edf20f0614d724ebabfc300844d02eaf2397921faa897ccbc72958856716180381be179a6f0e50ce6b7e89bcfc57e5c3cdc04aabd4232d964a81d0846ccfe737260c4e04e8e82ad1dc8992abfd9c74ad4be18e99af9425a3b90eba6fbf4f66d252bc044517a95ddeed3318cccafb5acc69cd8cf862b3443e0bb0469d5c205453478fb668798a7cc03f8d5da96f2eae40ea4302b03ba5814b230f7925b6a9fe6158ef14a2a0c35a66d3d5ca812a36fa62da99ea9ad38f4966d350dfec5805626eed0220af305bba8020ade511f7492e157c2d8227a0427b804c1f57944f57b2ebe2c4109ba98cd76b5ad19fdc74b07e30d5a0061e34466ee9e4768675354de3b35a13d42c7276dde1bc5f562895c487646494b15cd4b1ca7fb2c822863960c2c82908b7061fea3d63b6b9ef0da8428862839993981e65d741d9b4b8ec907a7c8cb17a5e851569400db53288a7e30cf8f46892f7d4985684622665202cba500f64a09f13bd33666efd7090d7899dbe0acf16e1be765a78093b0b907b4d1fa369acc46df1a2b56912742a5efe6c8b252df0028ba9441037c3aedb98fb2b45de6b339e20812516d6c6820474a9da7c06181bc4c48660c45f468f1fbec337e175d54a327c294fedb07bc0c5e57b309475d7a299450192301002ec867dd1d6823fab4378ad59ba3324295f02aefac7a821680d330852c9a945a1d12810079bdcb1baa13a9b3491c2840ba355bfa26286ce9dd3db3386842373d687e4c989f0c861a6bd0ef0fc46dc392552351ffbab90ac0597154b30eff6bd35e284106ba6d0c16fae0d733592bc2c8ec0e45244debbd384c15f9b58ba00c054f698af5b831c159fed11253d5a50ff985c2d4295930629474ed597781933cee37ed3683fc287e6b20f23c62e33333f39c810a9e9c1ae16d9d924fe51ca3cc5086a51200fa474c9399e604a677c6e21092a1ab45921f8f366a36a93127dba861e2c07d152d3eb3d54a99c796f4d69e337d5136587cda6c24a43db96c157c23cfbb7890d59e362b3e33d09bf32c27b32d080cb8a8f8f0ca58290500ac8e1b0e3c599e149fb90a40213ddf3b1e13c0311cdb43be9973b453cc8512365db2477c66f9b3b75e47111b1c0f7fa18b945987139f79e6b5a4e3283c831dc4fff153a6d335c5a716981e44634ef2e013af38abb3f4f80c4a7c44bffe15eb9f4a414958295770a3d34e0484030fa030ac297c16dee52a4d85584db00f012b2c27a6cd539ebff5898174d9b2e93390e03992b42ce5d8e1302d57464fe93cc03db279da6717dd883720bd138ce9e7fa4a1efebc175e8cba1442ef3d0a30e1e3b6290739fd2e5711651d579aa82ea3931642948396c1eaa98b6a04f3c40b411e38773500d3c833692a79c721254384a13adc3733d9d25d584dc61dc4f76c2f0c805e80239ac36134c860f841dcdf30e6b11d35b0486b88c97ac4edf9c870572997e6702a58007c68271fe1ab9c130c50d7932318a3a592ffb6fd864e22756b8c259ab4a572a42bda77e862a5adac88bfa875185efdfba971e74f5e02071bec76516230647a5113fab45e454be8877a67574f9e9a9912d6d2c7114f3179242e9dfe915cab01e927c57e2ba9c0dd5ee59300a49711d58df5a160187c808546d8749b2e3c597af03ee83b51f20190c063212b478431b14eec8335e929aaba40329bcdb237c78a41903eeb8342ec7b931704496c505b101e59af84cfea72e2c8598073065c914f0ab6933f8bdfed267ad0c57eb2537534a620d1ff4ea02c9158bc88e40c12195373379f064858424e67ac6ea8fb1d405152f3b1c541e7037549d59a5a3e224dcbac8852b43a3086354d559c5664aa22bfb397aa397fc3946021f5eae30327558ec07b8b7923a98208ac227a2f90586b39d4c3d50b2cd3c67ac44aa96de74d4350db5e0e73801f5b792eaa76b85e7b8b8e58028196dc098a9b757242ca622f8bdc5bb56949706d3844efb3147e3b03396becb4a18d299ed3fd77a8d39ef84df512706c7d2c0e90558e9a549d895927540126e313b79f5b4edaedfe84ec82a505fa3f34c368baced64a4c103928f70fc7b903ee249c3ac02179741bb95b7b257253c5f7cd8d5b5af238f7ad628f781c713ea70f98b41611953925eac508654aa7322f06177bc0e9ce0d3924bce64e7fcf50edcd4be955a51f1bf513bc36b11c60f8cf1dd4e7d7e959b2474d95232b3c82f8b649744408599e0d32a8b70a868c3466de35bce74fd7a85759e279a869d5b81b1c446d0f0d7fa76a604e219c8a040f6338ca334054ea519965c11db33ab5cf7c58b70b84a1161a6474ab5cae3294ee2353fc8509d8f64b9a1ea0e42d3ae22bd05c4e27365854735078b2cd8a06eb1f5f1fd0b08e5ed07ad630bfe17620e094c69ff3e8ffdae53476a5d4c48b5dcebf9475202b6596a3888804b01a57aeb85eeefb5f3e83ee333af598b00882313b7b4a052c8547b8ab19efa65264f779a319cd0f174e1bbf421d06973d8a32a4ce952cba6210eb6c1e0da4c547f0f3bbd8a73f492d62605a7492d8905fe804ee626c95f9b341cd692061707d47055a6ea4263e4b476163276dbd593ae64c2e0a15679414a2c7b242a5f34c85bd58efc2d666236b70ad77f9b16f514da75ab5497cc9388663ed39508474b938d5389aeb5e0cf553594c89d0fbaee1c61c42169cdc68ce76d4435e2645784ce623318ceddda65c719ae02723d6880289e85b8e59af060518b1d08eaa911d89433873fd0f2828d5e42c0fec0492deaa1cac217bc269ec5cd62400b79072953fe5233d4acd84ad303a5a57084c1a0a084319f470262817cfdbe616129c7dd11ae542dfec9a2302377310a9f359234b7dc75cc230eb8a4b3fd2d6bbf1a20c19dd4b0ce213e7ce35150f1b79dd1bbca0a539f43f180e54954bb0466c894b54b08482e1d2a926b3a96bf84089f830e868a330d7c9685939b0c085782478d261a76dbc891636a86340a322ca389b667c4c512c9777e2a3c509bbe16593f3d8e489686d2e6f542f9266fdcf7f110315ea4510f19177da856085df06f0ee49ff6e93efaedc245a0362cad1ef5a84471dfca56585b3198fd46797344eb00a3ce9518c0e7f7e9079735dbf393cd9612c8c1d8f24c8fd99be39731a8b9371448488a627996427add2c9190bc8931ef462e8526dc214b09f78982ee9a66bba9005180d969843b040a1ab44cc6c4dba3414060e03893aa8deae962497d36a3a011ef02276bda3d7db7f313311834a732a0b619794eee73da91ee6143757e28508d1ec7001396372db52c9f955e019ffba699ad698f5fc7364291f43198b0ce6c2ea69c64aed3237c033353ac06b0f3a9b5ca026c5574ee5effc03a9f5602fe965fd9f0b198529cfae9c6bf90a382a09d32e826c533d8dd523352e0816adb718bc093253f9c5f7c82780c5f515b6de164835120ab902f84247bc3ba4012963ece7d180aa8731e827188c067c620e504699df3be423efd2ff53b32af05476d2b87ad5a743c07d1395bb1ac631767f227740618a5eeaea0958aa27a0a6870a4965c00f6d4b965885e71957cb707642c4d51bb1dc62386678b2410583e288e4581502decdcfe1b5dab99918ae33efa9c6891c137cd129a20450697488c4f047b53fee115c4abf69d00015a5fd250c4dbcb6e1ff0245ec85a3e89839bcdbf2f9f009e45f3a2681ae737181e9303ab5cd57546ffc80df6c212f2384c972a982f39a274fb9dc8667d86224f5463f4e1d4ca876bb3ce7f99957af31cf5cbf3c68971103422a44b00ef8e7bd0e0a0cc481f1ec08784cea6a919a5e14960c03c360ec229639dfa884e05017e6e602221a86351223fad71ebddea5668546da738e195f4cf2af569fb5f60ea51c55d30b1f9fe972bd2e1fd9643126201af561cfedd23a486af9a9839c77c4d1826824a3d2acc6047a6cf910b06f97419c1a8d7cc701c1cd02a4ec09e2ba3ca20f9aab05699e1635e9b3472e32f86cc04879caced6fed094c1c7fbd5ae0c5338aa9f858dde86752a464a6612c3e2b6835fd108d386bcb7df83abbdcd021c03592f28057a0370e04d026a78306fa511af24287b1a29956976d439f5379d73f1503ed71b0b28dcd294de9803c069a3ba9c1bf9076f147980501cd12ada5a05b7a6e4be1c2255452a31d315670498892a45bad2c3c912a32c76848ba41d430100fb5773a1d6a8816d36443a101cd5667ada060d927faaeddf7a27a600950afb889df289e0623ad2cf219e518a4be11686befb2db31342619945615df4a1448e3ea9e8e4c235f5f8279f46ab568ae74bdad1875c2bb8173fbd467443829ff201b563f8e9875f1f03119f305a4499357ca9c941d67a3ecd2b0bce711da6d681f51e2a86e0843a1f1623c45c41efcd970d36b2452cf08b3dad1007cbb854dcb15584e2625874b31cb3c6104cd80983c8c5a5d38d9c0b28bcf67156d026ea167ef22ad63ae09b5c0c12f5e17e22d384595971577146d31d22613919759d28b23f6b04503fe94b8f116e5bda0f3000012a162e62d718efad2cb96c4de35fa8293c772dd606f0cc80496a3b9d0c75ea86680ac3f032c2d11db58dcc37740dd4b77406e04896c5086d758b95cd854c630825ede8b54494ec0771c49177cf7b7050f051ddf0aa509ca85f0e92b52ec3deabe22c5906fc4b972d0ae59102324aebbffd16f126f0e946cac326a49522ea3fef4e3c88ebb3848fa43518232c82a0d40a90274768627d6376f504280b7d6572a60886f2696032a19c2cd70051f86bc24820bde283ec4dd01c3ab05dc5ef33f727a97e1cc6d4aedcb1bc85445a879c89d0bc37257f6987fbe9a1ad643902334279a1aa29e09f21c730afaac7b07a57dd86071c24614c0786f630327a767b5521c6a121278c21b54de96ca564a5077bbc75950b23c065fb0515f21195391a5f15f8d9eaba20153454948f59301f19d740528e4d81c87d501d3a621054bbf00c472cb6d03734ae8cc5385dbc9bee4636a7359fc85170089a3ca299d65ec5cdb10b34b4480bd265916afb25afe720ddcdc4a2b1e3e5c435eb00d48476c46908609f750f0c9c7624e85c1c395ad0301bcb813a302b76aaa5750818ea88fc37d50ba0332863d177a2c355de4003f1a7e8dec23ccd18c7b7428e4dbc46176e7a6386ae55fc5ba12924ea472d9bc4047d258943ef5a9c1bdf15203ebffe53a92974cc824a15264bc9c0fdc13ce105908fe169a945a5ccb813970010aa82f98e66e8c3be7146bb1491d6dbeb898a23afc7b3be15c610a2d32c8c9606b45b5bbf006b8a0c7d76c5a339e125c8a4ab4f9d9d7ce4b09736ee47819daff7106dff0752ee23dd96a72b30612a9204ba78646317b200b50aba235fddf444df48c988334dd727f320e488022470d5a845ce0e74ba37d30480e963dcf87528272ad1074eac00dcef837499d9abf80c90b9e30198c0264e9988a01e9dd389221e8fa83c10287743a014d71d4faa99cb94f64c0959c9889994ae525feb0fb53d6049f5827d085241ce2f68360933e0d2bc3179438020fa335200ee1f45d0a3a91e447ac3a18c300e781da598d17feae6846109cc2474823adef769ca4d874fc5e0180e390a8057b8025cf0718a56f6d22b66750fc38362fabe65ea2c5fa8744e5793861011e07d4ef4469c646c2a14e5cca567283157c0cb6be51e881e23b79376047918c24a3bacdc2af1b14842e95ed779808cb7e3dbb7ecf85c058d73274c4bcd2cfb4aa16e1f9ab04e99b62cdc3d57259ad796488cf5ebca609cd7f85b4a66e07733061b1bf450afc6c2cd6eb86412c96cf5d56de7bb4a2e5f259f29122ebfe8d65e1e166d41775f48d5c070c5a88e0c4639ca03025491b92db6c054130aee5873cd84a81423d95e58b24001ba6dc04091260d375ef06a3b504e54c2faca6c22a362014660dc5f048bc0c3ac122f3c083e07a17e4ece08e69fd9877314d3ffcc3e19c9108a2fc0bb0fabdbdf13452f5ac0c969ae5e55582c7c00201ff2a10164096b9e380247ae763936fb55f80536cdcee27bf2286283a70d9b679b3c70aad10a9ee79473e1886dfd4fdecff24a6e7049e9b0df35d2e65014bdc52c48543f07d979592fc3f5c2dd8ddb8930fc7ca1fb21b71e859b8322ff115ab31dfad46d060331d2bb94d3a97f15a72b32e7fcc2f14ab70ccc260fe8ab6b738f247ca293a75acf0c52a62f9dd930b7c789d1793f8cc05756f51c9e1cd97d477062e00c4089a0466411a49364936d6592cdca82ac43285ddd5df95bf8d0d24f84ea75204153b1d8b7bc841f00c943bd925139d40c6614fa4056bebc3dadede29d24c6a52024ff9a62589271ba7954e4d1b424db3fd637c2339356a4f57e413ab4e4c36b9902343db0afcbd45677c2ca994573f6def7cb1e113e528f8324feca99f46cd842528056da5fabe38a4166cb5baef509f5f74350a3c58cf37eac78c65091520a2b90fbdf2fb90ed4bc271c56eb83471c9ce08dbc6058ba675262d16aa13a5a352d810b8bb8b384d601806b1cb6be4190d4170293d8cd74eb9a8d41dad870422261189ac0e0a4a6e7f35157b031466074b70ba76616feaec9e5dbcdc101f1e7c2ed5392b070272d3050f631b748d47208e862e5e49611ba77b1272397dc3f3a329c8d58c3ed5eae035bb4fe5d146c7abb55df05f4a0fbc37f8a4ff24a89a257b4a42e7c68f7c2934bf533ba23d84d8816630ba4106d049e0de5e5271d827c97b8a570a75b7d424537070c78f74f4439f0b5002b548571ebc7db838eb4ca98991f2e7c661e3eedfdec3c8efade670a415b5c6d686021173e8209621ea07787221364676009eba27cc5cf8e058b2a81cf7c08d857bdeaa5a6fbb474f8dbe2d14eac366374111c6b0fbf305ffba4ae17f7b1c8b4a7b16fd343d35ca5fe90d1546a10db741e54d13e6de6b26a5db86dcdd2953517f01862bbcd68d98c032c2a9af18a6e10320bfab0d42204863fb5d709bf7dcc65aa1e5c832dae9730feea39612c19ec854692ef90f75d00e5ef051216897791281479b109d2ab8d635d226ae507e94af0d08a7af3534e8d696e457f44e10b5773fffbafd431daa5969739f6feb5a8e801f832b68148a95f93ef1765446fe5b000bffe66491207e3236d54ee01dc87524f70fba91a648cc3526dcdc03cbf6a1ea5fbac41b753d14006a10d94a3d7117e71265600568acb58aaaa8cd7cdff11e2269e22eb60aff64279dd01c31209205897214e5b5e821a30d9acaf92d32ba03dcb7fd87356920f9363bcf9d680838d0d40a2ce21bfcc0ae5346d0b651f0064f11ce5214a6d079f055ffaee5abe01e7faeeb2c7cc2021c3d1cb312ddaaf8d03dd5abecc518ee4d39c6ff0227ffd535407e64ef7b16f403d7bc9b77623a9f2285d1ee4b60861ad2eed86346ab3abf101c564447302fac6935a1857843edca484628749104b4e70fa67dfbb92b24c1d9eab43c800144d44c3834586034628aa749502547fbf2687f9dfb290cf9f5db2cbb11d8cdde0150c5b9d8c3b98c9e80e381b7907e969570127ad4248e4a6012a6db2487dc03d93a606d38c06a91d7d130c244d42aa6f19b1c9b361b2a36c867d04945169942aae72046810e6c0abf54aa7e873e512cfe2655cdb1a5e9aa6f5e0e5894314fbce1128e2e44256588288437fa0c80676556cac2e9d58d95d7465de71a9070049adc4f59bffaf8d89b8d0daff3591b7c00b5ad38914a9cbdcfdcc7488b9c80e03b03c757750dc175266ce05176b0268f40969d15894dceabb2df6b991323c1f39f464bb04ff74115646e2176dc1c669823fd23eb8b079a3351fec86831df2a2910000013373db98ccba6d964ea1f80a7526a20f1b17c292496e133c58668fd102b41c7257f3eb183a3b45d28234558e9c12c3d026cc80a12fb447dbbe52fc977852ff2ff88e6cfcf03dd06f0102e921d8f4bb6d580c782a7ab24b59ac79bf8e4a1ed122aa30ee06df0152886d5f04a00c673d12807c2d7a2800591a7358006ad626bc111a72f311a66f6b2dd0169cd60c729cc7ceab3ba63c2ca92766eb13416dc26666ee7872b02865f80d1759e7386c4fcd61474a50daa817e739006804f7245dc54e5677d5bce012db02c74e0843f9bc4cc1f0bfaa96c53201a8f0d4d5b6cb5a429bfc7b79c9ea27b37f1d68d76f857c39591a5d8a314d7c563eabf6e656e09ed37594901876b2cebf4bd44280492bf776a6c4f7abe7daba22471c0d758c4a1e7b4897489cd730b1843e1967066ba884350f6152e480fb7b4b52f788fd8d544b00eb7d228dad3968efc40a5f1b5cb185146eb0db2dace1f3f58003cbd198250c3edb13b5d698d8e73f8aced95a5325dd40f247997873c07c426bc0b2244570d04dc48d6b239e5c2bf2e108aabcd3cb091f6f772b023bbea507a10f4467ba4007a30b54173d00ba967e8a5c5106850ae6acf1bda732239f41974aeab87249352832a9296a93d21148fc81924cb3091a24888b5760ed54caa3d4d12eb0162b164add6cd4df341bbc8a01081b056ff62928d6f3c1915ab4d41a9a9b94c8f5d6034c0285a58267d2f1a214b11baa4455a9904216ee860654170001c33fe5e5e495df28a68faad9925973552b070013f9dd88cd301dc2aedef58fe8b4134eee284a8a3f0eaf4fef896f50bf1f908752112a8b6bd72fee5de708bf16e5b69fee0f7991124ce581bc41108be8df4e4230f5f05bc278d88a089a850cb7dde60b678af98d5372a88f163016ef26fbe9396a8a8208e8e36e3f01de61bab10076ccf96b91c13d7d41f879067ced15e0b8b47fc15d737e52a58560a01582992b5b361eddba20b26d02becf2622f61ffd7b8e1a7b441c8cd70902d693cd39ec99f7cb06143ed99388be50f5af00ef5bc98d9d0065a3f16804ae8b4ef54771d101a69356e03a6800a3833e1585255642068e98f019c84d800bec0982cf0d05190849619ccd09a72a08977c16ab451b2ad8585484022ef3dff7bebb7aa972d21ec37c5dfdf1e25083f53a5fc261bf05acccc6457df267380f781983c097d10b475176fcde9f3875a764204101d4802f3f29a200533728e231fe0cfd34f862a4bf845707fec8d68a4cdaa580f34026906b89829ffdabe0ec4d0b744bb132abf03f88e520293b11c08c65e7b3453f9ac70a55d0c972202f46b1ade26bba1dfe180205eed9142309d4a4d909606a394fd08977a8a02585942d9cb150cfac40e97aca83f261ab966b1385d9094f35288053d26926d175c5eea93485e2e3eaac927565bbb26963fdc30f896b1818f0f2c42c316f5f5f5b3b4ea86ffa62e275ffa15184b0f0dfc0739967a67edc23146feed15a81e05c14555324cc9173a0e3a3f8c43d8cca3dc9d03d765cf7c0bbe924d42eca390db9551f9807d2c7c1375eb137ceb1d449aa6c6943fbfe3d3c983fb5f1f3cfa2693d16fc2659d60199767b6eb30c48ddf3be6f0d7b44ab683e356bdb91f3ead7ff9b9af2494a92cff0edf03bd4a0c5a7de76c5e32dd64a991f9de1d58a34247551e83ba304033aeb93b8c055e4a1205d767c39cd765b77ef81e2446ff8a4f7c02b6776ec3657653ad5755e7d799ae5cd0c2b7544c2c44c86a5ce9207d24b9211681e6964ed221da506918775ca0ddb73057aef51a87b3a7c57b7cb2ba7eee90e8466fc5a4f9e14e83cc9662ccfc5038a7a441a7584234f3872edd6d0c48ea45c64a11fa0ae53f47624f43521296746c6ef1ee1607ecf08f0c247ac31c647d0d8e42392d3067aecbc4c8a5e8d60a6f200f54bc0c4183a2029387b79c46dfb34c1f0620f54c2adb06cf32033cb9130355bbd28d2d86db3d58f7095b1560565e9e535a2ff60ec0356a65ec3bcf16d5ec399352574dda7ff46c9da903b25c8a0f0a1815acb495efcca1fb25c4b640c8981fc5ad1274c150624fc246206c684ae38100158ab5326574eeedc6a8569e1a4173bf2f740cc1c0c2c8005de0fc5dc0f54205c554d3a493bb1e6238d37a6583092b0a4e7677d1ad804f30d19492ce416cb301b56f7c00fc0f11251950b0a4818436be773ce4bcd3e1d3ed7e96a8672fd8917eb5e428f0bae7afddf964823d208217b6fb977fb0f360f990f1805be6f2fef5d14f8ef1e0ccc439b3b1488818839cc77c47c3007bf03e6e0f79cfce150883d8987cc35de6570690ed6c34256fed80d51f30e07a9f98783d87877212b1e16b2926b30b5f17bda0591bdfbec7ad8c0e1869398b94fe31d0e23a6184e62e6d469bc3b05a44ef3d82920c5a56eb844a6919797f6cc34e76449eb8208bb7706b23704cd340a08bbcb8749cc9cc2210ea944733bd3284062eae190c6939899a6060e73320dae711ae77a5e4e736bbc5e1ab9c66dba069e2f326f9ad3384773391f1a97eb9981a579c8f5d00082e636fd923de69c1c62cb32effbf29a1b0ac935b4bb79a171cdfb9efa6cf74198eff00e835732789953f3ef4a99dbf47765eeefb153efd787432da73e53a781e5513dbc7fdf91fa8773bacbefe8522fbf97ad009965709097c7f478c131b79935d7dea800529679e907d898f73f1ce6e4efde0d57b2776bc11bfbebbac796120606dbdf83200ebd5f213975ef7e770432cb5c763d3acbe020fd98771744f69818cff3ba98dbe36849e6c6c45ce686327b3919658ffa0e3e275b8c82b9cc737277ede5edfacadc1ddde5616e0ff0eeb0effedd1e165f764078afb9cd7c0953e75e73c325720cca3baa47f7ef3bba0fe764cffb8e10480eef5358c84a8e59c9fdfb9c1c23f3cb8d39e6bedc66bedcec354440be27dd5048be94a6bb3996b6f44b332dd11148172a776b22037bef3634038bea2143d4046a2541cd22138afebeece136b4636b22a7c8afadefbd174bdbf7d22c5baeb090488943142734d404a3b82422a039882b2773b2447395810db99ea35ac4865ccf572449ab62e47cbe87dc0f6724875c8b890c88e4d824472645820e34d43d41f4e5bb1ba4eb80f06e2f7b7838ec8f40e6ee337ff1eebef0f007864f76372fbeabb67ff3b3a755207d1ff1ccdc7ed1caf3d8b16721cbee71a85faf9316f1c69fc89305797693a2c8dfe2c6b8bbaf4c0ffbb28b703d1d96dddddec3963d53b4b82dc9776b637753e336dd47fdeaef3506b6c6bd0a03fbe12d497f36497f9cc42108b21d325bde246816010de271366ae050e61a4779a8e130099a6bdcc6b91ab76ddc2e7ac2768ddb34b79a469a87e124e88efe11310f0aa0f9cb6ddac6a5b92f2a8897f71b07a1f9cbbdf76d27fd75d8eb4ebb9b28506edc2137cef94c70ca9b4a5dd2dc50669a6f40a6cfb9327da61c7d5a9ee0c353fec0ef8b0265e6b1bb8179ec6e62bcc3bce63387519a83f50e83fbe5dddb4feec5f46b13ea1898873197391773fb48e6f6cb9389b9317bdd8d4cc9fb7c1fcd5cae8833e10d688240544fc15c50e783eb4183ed775f3de4a4d8603ead952edb98c6616ebad5451521801b17c04f7363ae61e3e00d5b8b3c4fe386b3489eb717099ac3f62ef71a3bb8a76ed3369cc4b08df2bc0d9a671234bf7c763b5e5e4a3682d85a496edcda2380bf5c11d0dc3808f7d46d5c9a39d5eda22e6a55b809b513d58d116c8d2be29c7045a91b2641057051f2a66f42db14adfacfd011728f4e14789043cd091b6e40291cb3a70ef9348995f8c66bbe5e9f77d4f7d9dc4fe6cf3cd25b4c2279f6d1ec993ed388f536a0edc8ec38d9afd7abc7f3f6e435b99fa933947bbab7a1b98a31c6e885f43dc04071453c7c7ac1e2e2a17cb7f2505ecea7bf1eae872ba25239d7137b389fd9c386dcb53777fa9b9ddc9ac8ed555f60c36de828cb6f4344527e6bd2df94f3ddbd5df7ad49bffa83f93c7d0f6dd7e110066f4443fdcd701beabed9b3454e4776d10e17b697945c4fa8f5bc26d7f33d3c0c0e531e0e71e4b05ff7ff4a6dc27a0771a87d38bce57a3aae07077da2f405ae88776ff8d9dd745248296b3247dbddafa0dcbdbf1d6daf563d6915e9922b32ad7099f0aba7906753916717b27dd857c41c2df7613e6c29c478d84bb84e9267d84af2fd3f37ce4983f3432f86ba0d0813d5c891490a8ce47eb50a893e1249682d4fc266ef13fccc3f00f537b72301000000c0b9b560b6d606b4016d47405082208c4ddb1b00976f475ae5b2b56a7777bb006dad564517dcdd4d00dedd0d00de97fb817312b38833f33077c625beec6e665c7637f87d37dadd7c381c92bf7346361ee2a079980abf87a7540df83ead98d4e1bd7128e487dcfde596337ab95c9174822be29c34cc6370a8c5c87c06cf9c0687a7b90d1c7eb9c6ed2771669ec66d39c49979eff61c64cd7ceaf651cded2d7e260d0ebf991f19fc13038343edf50298f78dc41c0d73b7a3262c38e3f27efd42ea6e5eb0b4f2e5d28c45613ad62df1030b499372cbed1dc499790e2b795ace4a5c1167d4aad80100800bed3a29a5149e10b1620e6c18aa228b17b9e00544a668a2054860cdcb27332ed6ee4f4b224794358fb6577fdbab0708082866318323497002c8891b702074440b3a5b08210b3a29907db3ccd152cb4de72161cfdd1b238d5f5bdc8376f78821d9e2be794aa02352220937a00da855520570a0430d5e37d8420a39c400065760220d3a433fad1f4ec8018b1cf0600c3da843019ca8220e403500431ca460cdcbedc8d05c6daf6d686bae677bd172638eb1bd668c2bc89c4ede8ef26baefaa7b7578fe7eefda3591c6afd7ad12d37ca58d39771e7a571a646b0dfb20217433c77786b6d40fd63a493b42ae48af24fffcc6e714eb822ae28a7c70d4e0c01084b8ee0063394dad0043abca1065a1889030ecab006298844e1043c50a1811cf4a00b4c7a84a00528a4a088007264b27345ee57ab20cbaeb99d29708e4c76806af63eb989baa7f87987715be2e7bd87fbf8793fdd95f8797f716dfcbcb3dc52fcbcbbb85afcbcaf5c1a3fef2a37c6cffbec8078ee5a72775ab12520b46cdf1d10345b7c84bc54053976de7374f14049e67eb922fd4dccf9703dfde67a5ad5cfddb567fb26c6197bf9b2b89f743d31468042c70812da400738c435ac410a1cf480065228028624fd62828222b9e120575c8f04b38839b6a1383373703e7540c14e8e4c7e767cc8910a464bb21273d54f1a9cef2d56804525622393223eb92bd2d32f174c31545b606350644e1d27272547767c767a6ca3fc4888fee6c3de224f943381c11c32d7571ee572451a9c3dfd455665817d779982bbd9af8982b9124d62a5fcd4e9c9d3ddb124e3f4fa36ddf88899b7579ce9da08aaf111fdeedbd08e98fba8be3c176d67258e71a6bb4d47dc4ffa9b8d1b8848176955d82f23ade27a5a255fb327cfbf7ef2dc9a6cafe8326124e13694875af58aabd9852b54c1051d2466a08235df4771955364480c423048c21198b085b8cab9410eb4c04313159c00083960cd4f9eb86a400bb270848818c0c0843ab0e6fbb64f7f9dd6f54b9ec0865ccf51d83d73d52faee749af226bf258d24b2775372425e6ea4783f357e838e18958e4f90905cbc3e7c7e72776385cc96174b5ec10e254b283ed6ed3ede0e103e403347d8ef0f0016a553fe6d8f1f001f201e2e1f3c3c3a7d54719a857fd9ae0f431c244074d72188f98e8c0490ee3d1bbd5e1f63ccfbbd73e497c8ef818f1f9f1f9f181a25f3c7c8c94ee8d6bd35f7fbb4268fdecf6b18e3e3ffdc56ca369d69e4efff74d15d83ec193dcaf56452627c022cff793a93377fa3575e4ab5faf16f4ab5f793eec17f7ba4b740993475c6865294b730a369eebeeae28fdb9d27ada88961a9d190eeb351c9e349f39b19b44cd3d8db3a28c680536d47a5a4655f6b0359ffe7af2e723b1d6d39fd47a72bdd6e3d3aa58874ce78f3d23ea2fbb620a363c658cdaf08efcb141c63009479c11cd9564650fb326596659508e0f4fb973467f6a9594b9459ec70f17f9281fdec8e1716429a7c892874f10bd3c66e0e2318325465a11294b35eba819e94f6a3ffdc94cfbc9f21916adbaa6d329d822871a4ff6ca5e59f627a3609fed37e7496aad8e09d7974ceabb4b5b0a0c19572dc17e943d29a5b335124a0f9136d6b267cf9eddda741267a44b5fc1459750d3c95405963ed25bf3a6bda6e0524a8c87949aacd5a5023c640c87b1a8d6aae1fac3a09aed2ffb8368d8e2527f5d55da394dd334ad0706398c45da7968b60b42883b73ec6e78f4d73b368c42407a68a707398c453c8eb094a41d45c24074265de67e77777777f749987679cc6009029a5e0322767b31cec8dcf5dec0ddfdd3d4414119340d082d3ac1167278e2d1d44ebc235f2dc83a18d78252899352b68e4eceb08c5f3541eecbec8e204b196bea8c39eb14303356694e6e28f46a077bac486876794a074b1f23ab5e99b18e47a4b8d4aa428c31c618638c31ae808b8f2e933bdd1d31cb3823e59c73ced93d70721a8538c787302198e5e966294392e6a4bf7867d10de57cf144e1899e1c99fc14c957c8518a1bb4b2ad3e79126989e0944325747474badc0f55ba58d30f514a39ea888ff5a169c699f95a3373fdc4b273d90db1ce316735c43ecf61f7ca2db21ca49ef6d7f59c2ce5fa1a7354497bcea6126b7df9da022eba8429b27d5010bff9b045a73714f4d010d743434413d3b02376e610fb31757723a3ddb63cbbafe86e3825aefe261774a475c40691ede494cbdb6cb09109148ee49003026a15ca37a156d9cf73dc10e7a4552b9fe78c620e179fe7d410756c3f916bc22551c2b9b82579e3011bf2ec2b4a1bd751232cfaeb24cbbbbb6139e7c9ad09a14b86f150c6462e460c3c04c787c3c0418213e33de47ca9ef8ba8c7781132def21832300e8cfbd012e33d1cc90f18f7c1a6e5f270b962bc87fff0e13062bc8717e1c361c8784ecb7fa0de72f99696cbc0437064fc848304a7e5590e10238888885042c9ffa8cb78112d3fc6f95b2e03e320f9718c73ba8cb7e02143705a9e1dc98fd3651c855120b84a4c701e7589708392ffd1f2ec3f64fcf4d8a12426a2e5d98b90f15365c2e5f7f3e165a300f0902372c11cd0047df0e1317eee5ec99a53468cb7c838d746454b38659ddc42e7087bd5b1a1968f5a73151343ee2573ce05f390137a79c80d7d2d0fb9a21c80879ccccd1e734f87b93d1cbc30de32e30170f9cbfd871f3b9b96b99115f372232b0037b25a8c5e4746731559f2c5e1ad68234a0922e2b81523ad9278236a17dc0de237bf11adc04ab911c51c5b1eecf6a6c20abe20314657603d105f3908e9253a042b5fda8842ec67333a5234054b7be826049d9ad026534701630b0a8adf3cf613412c8aa048f160c3ed482bc599f993146020aa42f7d08fdcb0faed862fb88b84cc21f6132651b996de8864dd88e66a3bea8d48d6a3b9924678db69288c24f6e106f1e37cfa9b2f021a66f0622d51dda07383a8da7a103f9f566d53e388b0de5c1bbd83954164d876fa4371f77872e8f1d4bbb9fadb82b6b040f3746592564b4e8ac3d38771a849798dbb1bcf1296e34847a42d485b64d2519e1c9ee142d360659779d2543fc9862c8de2370fc2c4c4c1481ca098021c944c010e495e4a5d678e4689da21cb1a255a07a01c6a3f366e68614d97bf893342023812808a0eaad51c867c8480914ada555d57b1e9a0fd864e438f6185430eb6bbf6128e013cb1f4dcb71c71b03974c041c70f593414047859eda447b1511577c2a08029012342bd00a0582900595efb64b81b0278836d1fac091811a2ea0871959d84410113025d9d2e00951b6c0f0fdba77b693bc20d3a8a2884b8ca9e83a443fb6c25e4a9f520cfd3d5e93d70aa551bece93b627e149951c801f9481d51d684346339903a361aeb0a0716963bd5b62ccf5d5943654a9d00546cb0aad51a2cf755182e3e83804c50ead877f726577a2861dcbe8beda65befdd957757e5a59b72eea23c76360dc3dec8e280c422203d601b168c030790b942c51b3157a84822619cecf2248c83041571486f8c8a8facfac89a4ac8bf3807669fe5f1468d42c12a21f18e1c7a81a38de740c4d43666c146f94577d3010e4427d8f89b2350a73f043253965396d317dbfb3bf5f22c1875c23e4818c59291fea34f1ab2bdcf827fc8934ec243eae545b15c3e87d517c582cf726279184fa717e7809025795efa4823bd526925d1aac884073d7227cfccb3335b4140c8a59f1a1c2187128ad30b1620ad8a4c96a024cf4f004504e9fd1fa4371e8284e51c1ea2fdc82ef110ec190ef6faede220f9816114cb2b8e86512c1845441f7b11f2f518bd0c882c17e7b05b7abddc49577b76b7af5cef2ab77bcab547b9a6c7ce870bbcb363b56fb7e96c02fd4d8d2b75d3742718591c98e034024824aadfd18e7df3416ae96f726082f3da05c104e7334cf2e0537fda0f5d0225a7a91503175dac247ddabfeeeeeeee6e9296b9b0240babd736edd9f2b95f72d2e055ea8f4a1d514a11d4520bb965155a2ae9cf2583aa8e95a70ce408895247eb84f1c5611a8771dc16f1e07ac26d58d564506e4c49aba214762092fbd2483ee99564a2482e69558c421349726722e90a6511d723050b88e45062219be4be8661a52875cc96ed61241cfe9501214692557f9aabc8526229b6da2bc719736273e0a24ba8fdc8a8f960ada7ead8782073255912281f49622f70d2c26691a5bca81e39995e1e1192304a74b05128c79c814c504eda041b5f078c6258c52a95328c2e3a85f608cacb879f4d04a58de08d9f3c76b548e3274f5d99a632b5b9e223409029105aae151f3124534ae3c0451a3b5de67c96691a86c3e7ec15c361a645fa1cebc566c723865af7a30d53bf11461c3fe4b6e96977a88ea6d939e30b0662c873626a69132eba845b2b63e7e61312083b983588436d84bd326171ccd5ca2ae5d8413057a44b1ff973a3532cb2c721812cc6421ca74894431cd839d295ac36c28c48dddd2a244db3f674fa81e67f3a613dc878714261e15cc8b8a4f770557eba30fee2a2ce7977612a9da57bec6c5ac68d2c14ae6729d21213366c9d8c9dd348a4ed1ac6d1be69df30aa71b693481a772d499b7d27d8f62143a23ebbd15c2169c1304efa0eea2a9b760c890f3804b275e66ae5d825d15ca9fc855155fb0fd2b5d76b2ae77258a13c6a9e870dc43dec16f663b1732b57b252aed15c6946b3e536bd72238ba3496c6711b1c698c8586b91b114adb3358692fe30970fafaf3ab68d5c8e619f3a333e7beee35cc93800ae76979bf219d7c5f15d39ca4559191765cff27b5f3c769185323457ad8c1deb21ac8932e603ae1d2475344fc6ce65cf2816f626d2cebd08d2378cb39d740ee320f9b19d84518dc35dc3a88eacf7879d74bf09622085820ddb2863dd4dcbe56d2c6677d36a8833d863d7467106934eb0f208548c10c823ea6dbdfd112eae558c8a81391414ac246f07b59225197b07d51fd816ec1c8751f5dc86b9ffd0cee121486ac53f526a46f9e0b6b7dc9abb3b22089963bcbb9b9677e703e5db4555eea22afea17d7badf847ca65e0212b4ff91017d76c6d4992b1c708ca5895d8eb0f6ce796db59fbf62252cec5d88c5c544bcf76512d38b2a812bb01c5c0dbcff693311fdb1910591b46c5f8f61c560c8c2282f4ed3f48dff01024313e04c6498f817fa80c415de539ac964bf3ec5044a09cf41f2827e121485a3e841ee52df807e92a78c83ce9724fb9db4917e52a97440477ed4570d7300e921ff3db71e8399517b13d05e3cc6fb8e5cebc7251f691b572171765710fdf79f11d1757f9cee93b2cdf5979ca23cbc549da5148476d8771516fc280c8423997a2b2e282e5c5a9871e5edcc862b991e5e246d60a2b05e5eeec98bed37d873be93bde774adfd9ae59dc12bb6c72fb3541eca48b7dd3c1def964ecde4f9e4019f358a51b59dc8daced46561b4d109344fd61cfb01cea0fc34e9b601b7bdc5a39ce5802e372e4125a4e6b3e14758c95621806278e1733fcbe9ab8ca9eca0f0d901fae561996690cc70643955cf17c88ca33c6181ff12c8a38babf3cbb25fee2908f59e3d01767e67d60676327c85c797ecb348945891a98e7cdb3077a8a528f25aeb70a393c652933976ca2d9b41ab1b43f6dbe92e0a24bca0a653047263280227391c65a9bee06013db049fa9b4037be7a68b3bc5745c8cabdbc4256728642bd879fce8414dd258cb516e6864b64db9d6739efa6acec3af9eef6fb6d2fb3d7ddfb76b3489e4bb24d77979bdd4d2b91e5bba5779b9e45a4ac324e0ffcc0fe776b640ed3751fe8cd783804c1cbf9703de041ef9db7247bffe214d9c3611275067cd85d06fb741df64050a6eb8ec832182e913b1ce6e4cec6c4ae8b19a286acb1ff9e92359e5743d678ffec3925c0739cbdb3487ff6880cfcbe1be3dd3bccadb9bdcdf5d43c763735f7bacfaeeb5c724df7a9d3755dd7c9bce66e2da0fe8ed0f80c0e7fc8339f5dc90ef635573d4470e673e63233afa191674e13bb539c9939285343032353430303f39898981a35700d5903731817879999498129181818989973b20482b846c80ff9c56756b7f2c0a25a505e77208f432039ac17b292714ec6180097dd8d0ffdf2d495b9c6532e2761345ee24eeacb70defddeb78379df9a206a0e7399213c100471282483e7fad21ce6cadcbb3439303db63f76d6c2d0dc6eff2ff3cd7b63191a181c0ac932cfc91d0f5993ba4cbd461feb0fbcbc27f37ddfbf73d6da98989898980e06c67b5f4af39ad7d05829a5f576c8da0941e3fddaf1f80e805bf3da2d20ecd7e0d21c6c63212b0078ec86a0f10e07a1f1c64130f062212b99c6870581dfc75cb08d370e4b98723889996bdc468da752af914a615a8994c2c94aa9948dd40b7eb98de3c39cebae4763981beda9fb72d2b5f1ee86e8fcf23e6ad50b9e1a4edd3e223d915d8f2d7643e4d41f2b71286bd7a30f2364a5afcc12e65a7777c7c4d4ae4256328c262f31ed82c08781f9aeddeff682e7badb61adb5768898cbb4ecbaced677e0ed77802ded6733b5205a9fe3ba2bfbdd757fc7d7ed88b9cc67d723e63252c65ce6323128203ccfab5de72e27d392bc30d76e04ad166a1705c4f7eedd777c384a8e96663704f8987b41808f790cfe1ebb0ea380e8defd1d1db671e67b631b6762d7f577d84fc3e11219e6f58d85ace4e486b9daf1533766d2a519c60d85e40a002cad0f8fdd8d0f34b70fbd8231de886a3c06872b39e65cd5818539781aadea7352e23035039b7aec2f25c3d51cd89843a67637e00d6506a3ccbd542a891ca42fa494651e96b2bd0684fd0d4bddfbde3753e7644946667bc95c76c581fd2e739ad6c9343d51d8c9354fe4762483b7d7f7dd50e6afcbdd381452cadf65f0f6e4366d7f792df692c87d9b190ec932787b0929e50f6f4750d870d36404fff2486deadfb9d4dd88bebb0d35196ceae136d4a71bc7791c56aadd8d8d3332c7ba1ed825ee3ceb79ff52f76eea3729bc0dd9b81dcc392dca9e9e0d0cc2dc3087c6a5fdc53cca98fb974b33792691fe66bd81ad36b028d74e70bee56afd75cf1f39e470f2d460985b73f06e47faabf19a4b295e329d8ccca5cb6afdc1fce5a88ba239ea329f2e8ae6a7a7ced9b8e0fba6fedd7003ea6ead81fda6c9a4b8c4685ac931afb96958cc8d398d1be6641a97dd0d8d733308fbee395976570fe68037899a2bae216b62685c178fb92cb72c3f40301c14adfa0edec68d20786e5a7bef3bacf79c6cffd590356006c1dbcc98bb0181b7e99a1bae6498d35c246e500fe2f414a6fdc1dc66c2dcbb9df24bbf90a0197563ae7143212b39fbfd76a4b9959b7ec9939ed7758fd749aea77decca59eec2e536cd492e7634381c9269de5d8cdda6e71133d3b0d0a49e7a67adb5600da923d5653085c39c9c3a7825084a093e75b18739b2bb91dda5719aeb028732bba07196a768d0f82cd22a96d338a9bba181a59d4b324bae216bba50e695302e097fc81277328f7305f31a524728738906c71ab2a6fb6baeaa0d5c0387276f2749ee2147a11d9fcccd5205a246e64f4331535247cc12cf22fd35ccb1590408b97a0a4a48e33430ef15e67a6ca06010c709c6f8f2186b3cc69a733d2fd8060eb51a38856b70cde5bbee3237f57e4d0dc4384ca266f032ff707802df9de696e66069e0246a8e799844bd91ed69621e621d96b9ec7604e94e730c0e023e26899abbd33c4ca2e6ef3438bcf1b215cb3c84c14974fe2e83435a73bf86d401e220df636edf5d1031365583c39c0f07e95ef3ec86a8b9c335644de322399435648d74717959cecd928b1b5fec65b7c3bbdd866a6870a88138b4127fb7d7d364623859929930af797797e5bb9d652eccadb9e14b0da923669667b3484e061f23435303c3f50dd2ef1c5efc1d9452ca09e49ca0dc7537e6df8d30d6a6fba793b5f6a64b6b6870f8721998fe4b8e1097ecc91c7343971cbe5c884b26ddbb614e26917eb241aa21f31a191a97a15173991a34f61d730973793904f8d02577d75d77dd7507caee1ef362692c4d9f93b73726660212a3602effbdef5d14ccc17b1d0cee11fb030fe27002d9fb87c30964896962ced1d0d470c91e16e292696afc855443a66a9eaab94ccd656a6464646a649e929149c9d090c1349eb271994be3f5a668d090b161659e3a27939249c9dca66d90fe9d93f6ddb521697763e35cea610b8d872b35de5df3ee5ccd9543d03cf61703f39a2b1f733d19ed46ff905b055ed29c477fb3e6cadcafff74ea3ada60570387da69744fe1f034040d16e2926dfce51607b1f1cfc6e7dd686d74df3b181ce6641830a61fd392bb25d3bce6f83437f61783c353ccc395540ad3bce6c6fe68700c0d0df897c7c4d84cf08613c831f72e8cb53848f78ff4affb2765d75d72b464ef177e0f414e96b7376c7b7b1cb411c61c75f0864be42f2728872f8fc1425cf227c4a5b361e336d3c625a16e985324bf1cdf7002f945e6c6cc6da7ec94b99000703b8f74bfbbdc98bfcbc8212f979923dd3087eba181953bb822f67302b993898101afec7a3c836067bb7bf7cb7d3b67000421f377995fe66397f2cb63872bf9a525bfbc9cbe3ceb6e5efae57d4e20f763cc2bc2bc62cc5cf776322417356e970fb7ac9cfa9b7fe9724efa9bdf8072cc9b50aba6d882ba756890c3cd75c395dc195e6daf15972c71cc696e2824d31ce68632c3d4c89cebcb61980f043f9adb1b83c43c6b191999f0bec6ca5ccac4dcbe361326ccc9d9696ed8bfefae47e7ec9fdd4d4916915d772e3ec076b73194699e3a1759360aa9c09569dee78290b9c669aecc9f07414e62e620a9d33cd4f2761bef9a6b3548277bc0bcc1f7e58e9cfcbdb3d24afb61943daa07f8ef3bc0afc777fb1d5f8eec0e731350f3ef0be82effeeca04212364880edad48ce82f7b3bc9d92b15566291b3cb4bcab1db519f01e92f7b86218bb09a051b365016b12c6259c4b2d7296cff9345facbaeddac5ea1a885e64a9b60764db3364e5994659f473c11c1ec35c8d977903320e4ecb1933d712613ca99d0a6a31991e6d448e17b44d279c41c5223655128ec219348ff5c752769f67423487a89a47128db3389442291488f2ea427a82b6f593663ccb06049d8ebe9fb1722fb761e3147ccdb7bc41cdab7edb4b56dff5c79df34bbe11bc1eddbf650cb1bde708c603880bc3d768f33dba3d0f6edd165c341a8abb19e1c5bb5a9b0344b1c5da2aa3e3a91923a4a4c907297acecc69c1357dd0a922b904e7037b294982b0844905e7b289d2043a6e70e3457a7222dbe9ee4eda27e70db39ec5d14dc6db8cb23b268108e309e5665cfb2ecb58320579f20108e2830a18dd0ddafdd4d03f5d747ba45d4ad29ac0c3fa43ffa2bb81a88ba828866c82588203d131a0b327d68e5134ac419a08cf5d42e7581f4d3fd2aec9459c495f6146d9d4ca516993e3b8eb9d2b034aa38328d33d268ae6e8a0e9912d12c6d8239763eb29150e3c8d228939ae2808b2ea14927570cc3302ca262cc84b2236da7575a51d62428573ae4aacfa66855740dc1956b66946be7720de10c39ccb6c83523ca357392eba38675697b7c2ca1c4fe82ac3d9dfeaf35c1fa784e49de6e64752b4ecd0b3868b1866c5f42ba8188100b09fdbedf5a2e6a9a16856890246f57b2baa569d69e4ebf16390ceb6e304d9b5558ec3613bb3d5f35ed9ee679dec9ce154ef721a81f29df9e825390c37aadef21aefa8908d65779b403a05c49f74e93d8ee0e59e2893804b1ba635826543f04e5db7358b2634064c923948b2a02e5294fc1cd33c17a142c8d265875265833a18af9e47aaca755a6576bada6699af6d8596bb23729c9a667dd8dc93eeb6e2c969666ed58a70099b19efe6acd70e45abd978ea3551d10a6ec61db8dacee8aa0095ee061957004d12e5b19ebdb1a7d164b283c68509f493c640c4b2f5893ce12b262262ab69e19638c311af5974a8139a4aebca2564490bea96b8214f563bba822e8372a3441fa20507a34e537b9a23d13943a5a0708c3c8f451d2944cb5384335adbbbb4f3d4054c3a1cdd829d37b3bcb0791a75be8b44a4a4cce170e49b8ea607ad41fb5597ed53a3a3a3a3060d12622183302de908208c6943c5f7345b588203d139962f3d5d1a3384331a04ae9b71eacb7297af23c273bb9559bcd2a6c562a65380877adbb2ce338cc71dcb3db4cae74ab15b4130d59c2480c5a2cef1cf7528905acf9eda27e6cb7b77888fd247d763724d9cad94b9f55d8302bf5f5806ce520a5c78ce37d08ea07cab7a3e014e4b0ecb7d3249612cd1589351fbb00280fe9933c2916795227f9c86a27abf2d3ebaf09cedb45134415618f72143c7570174d70f6d104a7108260434af49a730a1bca5677d96a95e9f3480ee9fcec803065d3124399bbcdf4ee08ae68b5585bee642b4876d9cadc0d658bbbb5bf0c0b91ad5c1fbb10845c31121bd22a58f99012957a64866d34a0420eb0b091e369441df47fa4420eb6c8510a28004246550c449665628e9b9aa9c9f156eaa0b88b353d717fd2818b2e61495616c42a5934aeb4b9229d3211575a75692ca835c8f4894cb54c6b50a61528d3daca5a9c5e149206b15e641ad41f9598b62608051b59f221356a654a872648872e2d9a203d3da25bb42a32c1c14ea6af403549af5c0cd59d56452650609169ab1639aa3e99ca179339942187f527d36d08074572588fb0429bb1daad56853882865cad0a6951a6a7a7495a15b9b0851c522de4902ed1893964a6c7418be64a9e9e0e4d3a24d32a296c488f327d6324680ebf4c437a84a3bf1a048b4ddca5d66c92a6699af69a655956b1ac6a5957acba3a16697d1f33c43124dfff718202713b66ce8632a179348d8c62a5820d65388db2a1252a3a25ae16c192e24a9d82adaf2d1be515b96224685d39d925764b79bd529e4cf94e71c51cf2f395083d71667e72384e70563cb326294e344cd3663de7532ff7435f2f5ff13ce9f51ce9723f720bce878382a3dd4dcd3429399f9f50c32946294429432945fdcd9427fd4defc8c7dba255269db0947d6ac529af149f231ba64cf1ca33f48e525e79ce942725ef48a6bc525eadeacbd6b9411972f859993245ab8ebc234bbda309ced03bcad3aa70434869e5598b605140e44ee2cc25050bc307cb4ca25604cbe578d93180c4f28cf24c6925818b5be6b098b7750651d6561379befac8895a8565398be615fdc926ad9a93a8bfa22858f94994e92711d7433454b34cca8a433b0319d44f4ec6d8b1b923799e9b5eb05148367439a0febe2fc75a043b73c5e129039ae0c47006345799d00467269409499109e5f989279dcf88f29c44dcc4563003084d5a7aa5664312850d304359e37ebc577db4535ec14a4b258d315e21b116c166747b65ad6e57e67a65ce5c364c19c247337898d859051b723d5aa916c162a5193b98e1d32a2c6b335ca72564ad08590b5158c610575a1aec1bb28659e890b5572858d2490f5988588824e67eb2562a4d267632a94fb045b034c7384127d81086110ca3c3c0a2ae588822a8bdd6674da24abe3e238af55951565f59c01057f8081f99216baf9c0bbbccba26addab22257ca90e92773f509da67178575820d67f064ed33785a25af7d0611ed306014657995d65c49164b2568ae224b9ee5157374599ee509cbd10b9d563961da4196598e2b184611d4be6579d34fcca192250c36c4d50c9f096ad760c4216baf4aec0c9dfeb4e3a3193eb50956862bd7201ba60ce120cdc5f1c419edb16340b398808fb2f6193e30284f0e6118a50c65ed594744b364b826a8bd2ec186269d1a64ebbd577fda371c4d3a732559da4d3c291a146c682292b57bafa96dafac1d862661184d50dbb4cfee0686517fda39184652c66bae344969e6cada5bca78b110bd8820b164bc26a83d94f1ca1a0ca3ac91ae6924cc423441ed5509369ce193b5872c44599be10333d42e45b727bbb04c63b462047118a908b67edb5a3546927c6300f54781a839a5c7c551126c8c9eb94ad1e9c9f4306200d152b4734e4cabb54a6c4e26760e31b193c9260510a0c8d548abc2149d9e1f1f2341ad0a63f4fcb42aecc115a348abe250aba214405b64fa18477ad52c1a4349a659c8610c2814405378b6d36741e65a9f0de5edf56136942b4ed1414298a293b2e1149efe84c21844c835898d52f8e027872e8e60842e8e327d3d824dd1c9f4284731877ce8b5b622a170334a29e293319cd2d39f11600c6158e693a96b825e2b0ecd5576cac4d2d7225852c700122b8b011403688254e61845769b9e45564c2dacbc56157218032806d05c65a7d784bcd6ac422cc270e831b1626ac16b651af6e0caf4d94de999206dd9300650fe2bced0bb20aa44b0f4710ac51c31d35a5dbcfaa3293f991ec32e4fbd4800b1436679a4bf22fdc508ca54c600aa43b0a1cd610c5beb45a273180328d323d1394ce9d9b1230610e20cbdc4294f5019a787c5008a33f4184ee98933f4f9f260188661b536c9b5c600923a62a658a4f4b8144d152f74b75a3d57add39140775ad54fc2459790f66cb922d1ac3d4da37a032bf1ed4c7b9010b99edce79e2751cc2183241639cc5cb933a08e02d0bc4d6b7335df134fa209760694fb1910d723bb9de0a24ba8e2caf495e678c4d65c8fd899e3e37cbfe77358a1cd3cadaa99bed4c35322d21f2df59478a60faa3341fa2a043b1f967860c028cdc1cea31c6a3a2196433ab3a6d35f14a4d720486da73fca71259e1211fa52107d69097da908359269a927d31250a6a556a6252599729bd6aa903b2ad1129106698908f46149275442c3340dd397745a454b3a3b94275fbad31ff6a3566dd12a0c6b3cf56a3a40d029f1947832bd8a2bab02276592202c5bfdd587b26524cbba24ab598649610722b24787c8932c659546962cc9317774513548a10e434d0835d184032c54ce0e71a8113944c3e08008f6e312215776252f25d9660c27c172cd1c98601bc9a19ea2486258ad35ab533eab73665372c1865148081f970d6456bb8344ce63ef29310cff60d36348a6c7d1aa5ae7c4613371a8f94821872fc278b21b33113c5a352319a21533f53b58ecf3218edc40b2ca237b67f4d8fb071b1cfdf5e91696c774613e7210ec4234b0e34cadb8f4d7b7426359bd4252f9346dd6d545694f8e08bb761a8f48d5e46d186b92a5dd18412dce49399ac45e801e88a4923eaa21532212d6554bcf459b9282b51e95db571d4be98d982b1829f9837a7cf570d4c50e43fbe9665fb9a8eae2a22acb45d5171755dfd9342a4581327d8823d314c591a90af6d11fbdc53c56d8c3928e1168b9fe9463bda9fe28cf736aae50f6261c7385b218454496611cd349f74c2761148af70ca350228b3e5a7b0ed853abf268530e84628a72e37629142c07482f9403a198daccbede094000489ca191282b6129a66a5fedeb11d8b5ef905029d88787512c134659fc03bba71dbbc53f48f7eee12159ea4683f4d8a5a938435f7f60edc354a62822b07b2f8274d32d0a45d947967751166b2858eba1ef0e458477ed3fbc6b780812fb21f3de2dfe617a8687f44ddeb36b3a76b3ecd88bc88e611c243ffada71e6338caad74ec2387d0da3aa4da3aa77513b3ba4673b2cd28dfee88d98f4da2bd393e837ae44df6140264871f4475f71aa3f4a4f9be06367be4fb51cbac496d3d4640599755a86450c0332012933209f642925912c31ad790821bb2b04027c640d7fb9edec6b73d5bd7df07804fbdd8d1104d2251c89b85abb9bec15011c76653784cda11119bb101fb9d6acb54c6221a9dcd77210f503a98cd59d2af49041fe943abb22a6e6ec69a3f3935f7018a2c21443b4ce2674326dc248a62ee6a4957e52da9d511c6462b472b5e91b07999f39083da5746a326b6c564aebc43a932433f4c4288655acd2fe2a903db54c8dba8459d16a634929a5941911cf3c7a8dc266456488af58bd93b492f1734e21c4883f196d76eae382fd6efcd0aae6316ffc247b6ab0841c5e8b01155af01272b282f5a415c3b22371495c32052eba70ab946b9d56fba85a895a75054fab8a48273e4fb29547add3442ad697c70c96489f56855f8642bbcd4388fea4103c1090e303cb154c8ddc8f3247ee9495ca6ae5fd1b7374efaf5c252628af72e3044b4f99f12ea30e5944d6c86f0f67ee6eecfae86f89c51e46212180cc95f4099245a40ed944d6c89fc293b525d9a488cc324836d92e3bc8ca96441394d734229f2ccf7557664954ba8c51c87942ae3f9dac8d92283f73f73a7c55251c620e871520555578735ba0763d9e49241b04d44bd2b9ac1bdb2020a7bba9614ee62144abb2cbfbe0babbd1a490b884a282e80fc425b9e2e8b24140ab6ef427bf5378f95385d63307a54b6a905d339965588665b9d2bd05173f65bc9da594524a29a59458a52e2bfd49a961b2e930ffe22726b8f779284b76c2a1f4e1f0f602879a56719c200b8e46384e9062c9e2c0d4347bea233a4fc9823c2513796a21bba33ff427848ffee64f98c7595e75ac11072608e62a31ce84353b2e1d1775713a1969c3b8d2109109ee8d1f5243ea116a2b7ef3b1c8479c995b6712899ba9d46694e998a07882054c9cb230c1a8aea356a18290ef4b5c8f92b004b52adc8c481c4fe5d98c48242e7b6d254a445f291a7145a5a0ae548e39b56d25ec94624af26c4924641ab2471467601045e1c5a14c47531267e6a5d41eb2b478786a5e2f6c2b65a4d40d6fa852af8aac9298d229a8d4765ca082c82e2f63d6565aaaa49cba2c0b4f6d833ddd7098e270f8bdf40e8727ef2c7827bbc09917c5b082431bd1702ae130bae17350c1e117f190537098922aa83c95a7495a86d594a88bba620e29329e2a644e0c5197169e15d10445cbf4040b98c8429a7e4c40797aaf2e3cbfd6993ee6cad38267855734860d888ffe3c2294bccb73503ee33f503ee3f23366dc050fa99f91c39a07e2c35e1c9747168e7dc8c2934d37b25caebdc987e90c882c139e713d14cb9a81eac15d5ee6642cac863bcc6084fd14d71747f66e1cadeaf68622781ca91bd953377084a0bbe92370cc2c45e52a2d2eba1b157ceabaae95bd54eabaae2ba5ac5cdb5f0a0e6ad53c8c1a545b31673f4a1806020924935db0fd4da5bbd9baae54c2309b3eb55cd34020532e6f574a4f4901c1b661dfce21d1dd6c20e878c4cd2563b7faf437efe256286efdb9a91b17878ffb03487fad6c43161e1fad22b50a8a3ea2bb9191942315607086dcc9005cb3a7bb5457f53215c855007011129c07807ca872e9873433b4870140c91ecab0384a107bc892c34cc784a3cc61a6c3440e4d4432774d45486dc3a167594e190e653c001e8df48654398c4338521e8b118e105994c0d284787a86132d92429ee76894a2cd4ea3bbc16e83de2851170b0f0f0b0f0b0fd1e919485a86a94a9d6d5aa5ea6e6a92fee66b506df52b1b6c585b39a8f6f0ae3af60552c7fdbc6d22e6c0f6f3910e76e70471c60d27182622b43c341d41c6435316623c3471e10f4d6ff0e1a1290e7547d6ccb338318da1aa20ce4c1d280c21cecc87a621549eb9da8ca60e34cd8713119c57753b7ce24cdc6e6752e7c263a9b7d7f4d3f50ee3b21c75bbb75c1797714b8f7157fecbe1fbe2d5270525875a66e1992055226b28d104e92422a2ae2984ac994f4db0b6664d75dbed5c7d384ea5545a21bdeb5c644aa40e1eb266de0a4fc8d3c7f3585a7355792a4fcbda26e2ccfcb52f30bd217ef33e5c531ce267a24304a7d461c242d69cc00d79de544504e7f390e777f2fc189ce47919d79485f8cdc7b8262ec46fbee59a8e10bf79d43511217ef3550558c83b5287690a59336f524204a7e9886419826908190aa618c46ffe744d4ec46fde5eef3541efc84483589d58419e7365d299e03419c9f3619775a069d6f680e9d1abbf9479211ea94395c821cbcf26b23c0f1d94d0204a44142404a5291ea954144ac13c96ac73412aad684f54aefc0b9f9ba3ba7494aa8b94292191324ceba124548800a568fb04e86eb24cc7a6bbf9d1dfccd660559e72ef0b5a2e79459e132cfe9aabbac3d3aa2ce67822e6e83ea53657d4253cad44cbc2b2425db0e88dac14951415ec0df5e70d1520257b4a12dd4d23618052a66323532e82ee4686c0c3487d0096569c99676979448d61a46dc348f795692e9aa70ad5a195214ad1661fa2bbe1309656ccd13dbce3986e8f438f22c274fb1f26ece11fd6c56377e362db224f6ea7bf95cb6344f190931cae78428b65c22b4760c08a2c24f34fc41c9d27e69e8833f32a18487ff329d8471ae2d002642b53123d16225e6901a47bd8bb938054c760b71cb2b46c64eddecdde274177d322d0aaaba4611be936a02473e9367d0410d101a51f1a66e1910f59781c5062e1312931f2e2a1e9487e682a0214a1a9065147f59135f30f4d37a8aef007d3135e4a6d911e7a76c03496561118a813a51da9a3fabca1e482a8ea3e5f5a4154713fe11214251a64165c52810b1c6a74c8b3e3b6c8f35c1a22c786a84a712275d496acc90293a8225d212e913a2a8fac992f613460cc5541851f72b819492a445d2ae7b80ef3bc94526ba4adfa442da8218b5cf0c9f3d5555bd555d3aa3cad56e55129792937e2506ce280521d83a53964693da0c4d2e2329247066f8b4b5dfd4d8d844f59c3a7ce1b52831d8264483dc5dbd1b98c25bb5ed1f548d7c3c27b5d6f68821e51e64c37b2b2e869518d2c4b09b3a4c166d7300e392331cc747eb42aa4ae0c44ea489d0d793e4630e4f9308e21cfc72fe4f9eac46298a58785273b044ada6d08743b2240226d58e6435d5d5d1946da284081d20428e01145cec9054a17281991e968dc054a998e2cf9a0b433b3913893611696567ff259489a390c686003a5ec460d8461182406c9b6084b2c3c31470bf13106db398c9e07628e8db228f68a261887e969919a2bcfc87b69150d56c335a8b6fa9b67b0ad232cad23b266b2384148a98ec14eee88238e402222a14191e7c338b419756e2271664a7a457562691125ea6f562296232c4e603992612c2821f14a5f46a753b8195557cc214f6ab01e1918405d5c89a5455dad96c671a5ec0428c85690b920ae5878321da923256ba64a3c1749a4adbaaa8ba585c33593e5e7145aae56cd3c0b4faacb210b0f0b4faacb485b9ce16a240a814c2204498ca044374dc31b169b91196c8c433a9b11038cd080074415e9f31288abeaf22175b0b486cc90e73912947a04dd8eced9391294b42b3152a693e9b45a795ebb9db70c2395a0542fbd3a472ca193e55f489ced7437994e19accc99ce9064694175552a5c2528459bbd04dd0df6127026284596acae4a45a543aa14b1667e4a21cecc17950c76330aabcbd38215de90b706364455f6f9ed0d51857d7e8bc3662475b0f03461b4d921cf7338a568b30fe96eb02fc12d81d3dd64c7c989393d3d6d6e46db1158785878f2b4a6254a2f585a73454404e7ad0822832b4716a115d422cb5392b7b38f175d867d784351d87033c2489b6c41a9debaa4c1795aa7c8f392a70362cb95ab63b0980bba1d9db53711cf0a6f0b2f0b0f0bcf09c7e5926d22e6d86e7ae81d9586381c7a45d933e238ca518e0b59903a38bc847b681a82111de4f9828726251001d3c08918e4596513dad0e9661429de8c84e28c345529e2cad302297b434d94ea18ac96c3ea7aa24493584f8be85911bda156959e20b2d3de16ade3d9214f2f8b3c3d357864c8f3550c9674138f49c7ce7b43445ed15ccdfa69c2c23485d4e1614ab4f3d09407131d1e9adc80824d4eb0690cb88a3c7168c2421cdec0852ce4693a429e2622e479d311a98312c99ab9ca9a58922714e8178650244f8c43131479c3262399ce04e7439312f2bc371467e6c3383454df498fc81b0a83253df4865e508a36bb7c414fc91573b413a5ea8a39649e19a6f998ab4d0d46daa605c744de8ce2ccbc37e40de5f94c87683691e9e4c9655286d514cb10ca123387b444e748ac8160032eba84deabd64c8ab8f28e3d0b6a1597b1674a628e986756858c9d748c67ae3c9c054d103b0987dac4a1e995b167417355b38820764c8749c6b4c8184634416c6882585058873256b960b52a44e99c730d7215a334923a5ae7d4279075c8d8a3c46ac4b86f252bb178bd5e91b932a1150ce389333cad4282b2410db1063b760c3b663429a6721cef2bc7315de57d1eac64ade9382bf78ea372d37be5de8b50f1bc224c5759c13012a52828294f99a55312a96626cfc8cb843286613c3844b9f2a820ba201d4669a90a5b4f3b12ce5cd77433a10962f76e7751a4c75cc25910182c876dfac3be611cfd61276197189609611487a78c499c05f567d39a8665412d00ec2a382b73b500b087a73c896c9805e5a0cca51565ecb3cb826ea6a43fec750b96be3f251694b17bafced1a829061cd74dbbeac4eeb23b75cd15b58224946d16e893fe6877b78cc92b6fe09038857577cb467060aebc9b28519ca11c256a15129d8d38434f23d65cd1ab1ba90ea770b49b8e43baf7d002218a39b66ca3a4e398ae911e5ad3b51761ba46d26e7a11da4d26922948e9dcb939d850488e925cba0c22cfcd901265ca7152e6d895ec50b2833522cb872e466c2720fdd163981ed157a43115ab4ee750aa09f5647a231a073136924c1b09995e8621ca3b507945ccd12719d82632d528a56dc8f40c990ec93224a4948214b1861ee9955ce2dab21173258110f4864c8b9029c5301b1cafaf57d850129d885ed36803c519497de6ca3bfde976b8e20c3da5c274ef38dded714cf7e8a3108523d9003946418a3564d9c973de4dc7b1ef8ee39dda772fc2bbe936ddddbe88ee160f41f2c3de7b11a67b78c8090e53b88210cbe2ed096430c28a2c24f254fa4c90debb9125313dfd606f8432594a975ee120e26446254f103e64ecd8953d5734484f5b28259aa7130e526c8d522a89c0604b58ea28f1051b9e32b52b51b046242c89a486b5aacd1c8164ecf2ce5326d2346b4f922873c9527b4624e4d32e4a9e66f41851f682b5c138faa3380640b590298e38434f44d4436a94250ce5ac36b15893aebde992feb209642765240d487f1915c2d4d55ff62cb3d90a99bdb32ccbb22ccb9e6537c51cf3744876b3a1d5c4d61c1f8f4a10c15a924e88391a073871959a4a0c8939a40efa503ee184048b444bc920d5442a05b20a0101e6c0e72b51fdbc40ae114a0c9958893843858dacd31ca2708316b0427b24ab4bccd197a75fee4e62524789fe52d50a5b1f9a723d8d931455481d99628e7eabe2818b2eaea642084d50d25c29e6d15f5fe2da05dbdddd465db12a7b4c58f264c7a28ba7b3638f9ae91249a422e6984dc495e5211273d03885e8848884930f240eac0c72adb7e1e163ae54be72d3b95a5239779c956fc75139473ad6dd901e79240b222879b8ab1c67fbca71b8ab1c45c4cab717a1728e88ed2b2f62fb0a1e82e4c7ca551e27c85d65059b6e0a439093515e92d79ad8263688bc3d27514c2693c98463673299bec3bb29c56432752928a66ba5cb1bb3e996eedd23641e90a035031db1884fe2163cae8f09d66fb72240bb365eb019c6918a2e6be7ea0211ac57839685d522d71bc1138b783457a52417773344cafa5a6b25b2a46b51588b250f8f66794e4031c796eb6912db48628ef9da4dc4159036c4d5694a238945cc314f3e681cc8e0d429b07738c92157bb7d2c24fdee6e36ad16c07258a936b14071a6be36b17d0e2b5197c541f2c31ee538a6a71cc71ee51228e600425c4935906cee80d87263691467ea29151607c90f94dbe3a4dc741c94db87a70ed52fc2f49417d1a11a139172d38b30e121487e986e5f040a963e13acb778c8290b1eac218865c2da046bd5416b0bacc842d29a66edbf4bc95385e54ea4bf5ab9c72e88205ecd12db418f1dc311c3b0bbc4990cc3a81d3163b8f4f0cb8d43f911c81ceef2dd3d42e601099aa5d15c494db3f674727177b5e450ba640f4fabb6d74b22bd925834585f5b5a56563a2cd12c97b4cb49cc31b529ba495f91eb25cf5c5156f5913c5bbd172c094b9dfeea35ac447ff5b50b363ce55a0fe47f7dc48143c3214f7325a588607d15342de46a45ae2ed2cfd6760d5e51aeb589cdb222c415f6fa0ca8555caecf8ed46c09b93e1ecd15863320dcf5a828d74a86fa5242cd5ab956a109d6ea9a6005aa2e490414d6a35c5fb960e76bbdfc825cc50812491dad0307b9865c1f6528cb90ab9459862b06aac2d2772767272fbb0ca8bf7a79b3235bb0f37d2b22584f064d0db93e0b491467ea8f50ab57846d3a39e3a8b0940a2b678c314b92b3cf26da10571f15b1857a8a98634e19c48983387df0cd147c77f8e4703a830d43ceb2572d58ec75c866a72ecb6382d9bb3bc20079e02a1536adc5a814ec93b6c1a2854cd18c0804000000b313003030140c89c50222995452e4b07d14000f92b05078589c46494e296490318688000008000040200040025b2161d1380e1038fb09c9640ba5aad777837e73739c09ce6c3894e01018db409501a8eec5d8c1b0e6da3c9d67ddfabae7ee31525e0bccd2b51dc7a680f58a468cc047982b2f57c849c2909ab0eaf78cc92913730cad8d59eee1e1882101bbe6d2daff5370e655ddc9bee6ed85458d4ff00d3a03838edc20dd01dc5eb2cb2778c5837c2a8e3a281406382131a2b1d54cb31224a78a6251a85039714158047ce0ecef86aa8e233fc704dd36a99ee6c8281dcd4c1cec30f495b2781d5148691fd108139b8e8ec8bd7b9b7f75d1801d30c33ad1f4b83bff4de4a910724b61970e0e3c6d37122a33ffe8f174b6bb7e260a36c76c24db816ad6ea87579132b8a1a270c3d5d9a3b47bd6e71416b8bd19a2724f81165b0575a9a13377a3ec17417e069f12187eaa929ee7418011a71fc3025209b8b8194307db97a094761313128b6994ce3877e9d8fd25c7bd7cc60259e5ac5908c59f727c8828409279404f9b5ba5457be96111371c76b54a8dfd4b88fca5403164f76c5bde6f53143c8d7341898d68297ae89e2bc46046d7d46ab6c397d3d29469c1bd02793d9a4f17619945b6ad6782694597d2f0ba94e23d0212ef36de3b32fd6f06f31874c2ece0535fd70366d305b9685e12adb01031d0a84abccb440c9a1804da02cc13ffdebbf2212d1d4c450bc6baf2a3031da924a4d3795a1403eb29218eb7c20808f21714b89fcd567cc8050e52f94d3e952ce8650d509665bbacad33b6a31515c79c2f1f30a04bed69096249b4fa272891ff844820ea1b59f609aca796935884771f5f409dbd4dc792219e5ed9e8055f0a9d72c4925c232dedf8bc654c85029bfd8f09faf76119003a947b7312379521f929d1826be9fb8c5982fc21cbb46f2ca31eadf0c61c9d18028adc5363e5f4e81a19372aefeedb214a3fa5def1936b190552120075c475672cefe03567ad0adaf41eb4bf2a6de9ff82854009dc9dcbcafd9d823bb520301f00e576961a99e41c00a584a2ab5404e64475522b93824dbc5cc08a271f00f7a53994472ffe420541db2dc0a97f0064344e4a83ce834dcc70901cc97086a815eead80f689d96860f2aeaf11a45c1c0d2c27000bf14b60c8a221102fcb214030ef6d421e191a7c3f5eb2eacf551c861bb4a08969162a633c4ba2e924a1775afec97195bb606daf33b1565699cb73cb6a5dd24d0955fcaea01e18bc2192665ec0ed4be513fe463b1e1172530e417e0777d6a0431d178e58c9d66dde23e90d8c150852585cf74b9e4bbb8548c0caa8e76b332553710eba31d32be5313a7bafdcebf89af0a2a2cd90791ab41ae74eb503dc650a5e05ef657862b5671451335924dd1e75c466d44571dc5e6a674cc0f2a5fdb241f2b2fd78fd4b1a3ee99c723283154072d919432156d5cd978898f600d1aee83e23469a758ca4fe634b444dc19558d20253c43aa3a4408c33926d65b81702b675366bdd090d104d3f1f6cc7c2070c964ee63ce8947473030233ef08d6d3d862f88bbc136b44393b88a0d1fd0ae0b79c98d36d2163785d127800763152112a9ba768ef8bcd26052d758bd3017c82a74309097c4577480aa1adf48b51f8e67397a8990c8731d0c255ce9394561349c0dd195feb8701d76f67ebe1414ddba1f822823ca0c5cb33cb740bdd281296afbfbd7eeb2e75e5c308eb8e22fdf06f3c8c55cca5692ea6709cbd138247adcd31c347be2e22bef6106a42f9dad49650b973155be2d67a6c36bfbbc89a00fa8ee6a801f3861d9ce654ff186ee7ab344e202477818501542ec7f94cacb757d57b03b4c3a0bef4d67c9d35416f45b812841938faddded2eac8807df7919b17693b9397a109c057f012c0f255a8f1f5c44a633601dd9530128c78bf89f4f5b3e6238f375a8e9670b962051b3889521937fd231129895bb8670490aa3cee65087847c040ccbb9a78345929c62df87379f49799eeccc1e18315a69fb147f745931ea22d4dff7769a7691c6f309fdf94fd8e07bb0615cb97c5eb2b5139d2789ded61e9c70fcf76b332d7d90e00736a7c541f5c84a52017fe79d085323694f8feadba489ca8d93480560eddb33d2f4edafb675d6daa87462f3c4914a481789dbe676499c79a540913e6425cbc52e934d6b074eaadd1fa23ef98accc280e7c5806485c0a1f2ee8d72fd93ef4871a55279fa0f268cb8373dec71d5ffa4b40956314c97d45e93cd83645a6fbd7173293b188a0bedbce89b14d3509c9d7d44ccd53e4c8923b892342bbda03c48e8a8841aaa94e2dc22c9281449860d3f6a1a218a8a25a1db79206dc486192aa2a0757654565bbf4a8e2a59686f26769c829645a641a2332065b64ab859d95e88cddedc4a9c2a41c95b946644f14543d29b0a730e6cd0d7d1dcfea66f72149b3f211b8708ae30f2c3e23c8d31628920c95bf02a4abe5b52634b7a55db0ae44f67898efc47f37220689fcbe315a7e00051cf683d0bcb9fc47d5244d8e7a4257248e224fb05f2b1b7d6c3e86871f599d22e4129deba44fc7b50145dd589e994281a79cdc6576341df38301fde60858b273f18171b2f9e34f9dda9a521495053909c43079fa77bb2b249fbf216fe178cfcdf3fd74eb9554bab3ead67dd868558959f117786261751b47e0a2dc73bb55099b572ae71412ef5a6b08b2f006965a355485f88f8b4e272189e38ad21aeb6314871e361a8bda21810927b6d5fa4a948e41dab4acbca3ffeda4e239dfd4a224ccd96182b6f574a53f3d0570189a8d131412780d123eeb3664407e1495fcd42a5e0ecea5d2a9f6a2c2d30abc880ac154b8743022a1598a5a4cab538440616b52dd4f11a027186d11eccc605c150337d1b7363bea09f36943795381e1aebe08f1f1306282a43c83fb9804cbe5a0f3a7d8096a1f68e403a66e932a02b069fd25b31f58248537f00faec58080fe4b004a5f2acc557e11b460b83e1416887f009cf00232b0d3d0aa8cd8684ebac4ee5a46894adfdaa69fe9c1fd1a9e5ab643061a22b7726720443baf0f47c27c1febd084c29f0bf98fa9d1086e0b1516a0ae12b38e987b401124ac8f1135ea830bc8df839252abd291f1acf9e31f091e3f46bbb5712b6497cea19491009951876910955c08c860c53c7fbf1631f7f08282010a99ad267c48cc451b4cbb2309f1f763d87fd68cfbab49628334885eeee6e3aedd8a68283ad85a64d5b39ce1686afd486174d1698f3072734a6b574745888751b9401869b7ce2f3777ad913d8ba8295b3a800799c9af1601a3980790e091322a13800ceb907931f45cd804b38e59d488e84e6d255ef2cb63f3d7dc38f6db4e378025aa58138e8824c2b278ff53b07fdc1dc7299b87a7793a56137130c4640cee4fd596ab0102487134fd2e7a991001ca0f18bb6b23820cde1e176e81823c05c22177351c8b7c8ee385277868920cacd5608cef8f097ff7f2e81621e7ffa8df834893321b9de208db78d154f4c28d48c80e4fa8e468dbba5a54992346f209156547240cc32cf07c823a09c09641976b1340203d48c459909156b446c2fd8199bd50ba9cdd32f31f4a386e51257f151329863c2a7e0902dd12e768577422b0b7f719acf46f4d33d0d73f322ed00afd9fb21ad3952189e9da7ce4a663ccc3a24297d26480b87dc14ad606f9f862f4e32e93df01cb7eff4a2b1d52eb358425f1a1040a591fecb9ad32ba7e8f5f03323293099b088a3c7333704bfb3a8b2f7e0e6fea9689146cd8047c55573073e65036e599e8fd7c5c1d4086caf4866c0458e9e7cf85bf9ea3e8576df3e6fecafb71ce7bc878ce79c097d29798b708ad7d2223279880980994627c7eb02a5c72c7cd44c9730164d4eadcb8f3bc8fd20dc833a5c15e22b6e47078e1bc7d76f4dba9093061e28df5b10c205664215237c302b0e46b6aaaf3dc86bcbec718cd0d71852bd92c9d8778824ea2184106d6e78a3f5244a602297b2a689a83e5dbe57705c5ec340acd27f6ec090ca3909be65c5588410c0f131231f22c0a406ef98a6966ce01d94a9d76ef70d2aad50bbb17e18246851ca9bec7a96a005d6824c6c675d4f633a9d0f885806c84711f97ced4605b4901e55145e0cdd886e4873540d11c04b0e105b742e6b9a7c50d20dbd847f2173013c2c68a47a46db7db483741072e33d3d603b779b4eeeb37ce4bd2473c215f12e6c2f3701970f0d0f8136350749e00d665000873f322be603ac833dec80ec45237d843fd0237c224d89e0dac6f35d026f4938d3bfd4fa482a232fd2d0cc44b9cdf0ca5aca463bf79550c2334f341be02f2b772f0bb0d7c82cfcd0d878fd39ed93c784d7aca9be1e299b9f2ecb172d579929f97da867b75d6be59ac14d0a22c5985dcea620708110365be4ba5188381892c940a89be78d98f2697744ba1050a498871038d29189afcf748584c7afccbb985d5ec57ba206d598490215dcc74b9091514b200ea11635a7c3ec3af09907e47419699745678c7724a84bd84d56d2f06415f05f21da1c1998b74ab7e1a6122885551560d70bf55ac1318b8a9585dc46b01fe13c24b26e13b777e26c1acdbce714f7b23e610b037f0feca2f380074c4b0cb6cd3615be424a7d7cf1b518e0f5e01fd4674fd255e69c8db612604fc29d1d08c84fb30112d00670098f2c30815692abdc76eeb4d661de4f1c0388e45c88ee2fb7f8683e7baea7810152019f8746345a85558393cd5f1fbdc3da4b3fa2c3e331a78b7fadc3061784b698cca8b34189d17d92f857f3f7d88991d0fd0c4491ab7e710ffb84e54ae642efec964afdc7dfbbf90f464e4d901bfac59fb35f530376cbc8ca6fce0ce41a3e0e77f76dd0af8ba853833c4ef583c8592504789fde84a934161b57405a40b6c254a621c42ad077c84c5f876e19e4f4c74da4a167390888f4edf8b7151b029d10cc95903d06c56e614f626ec6a7e29bfdf6282d2a55d419709633acbc5d23e3b13ff251d9468b80e37ae524bda85472941cb081fafdc930b8c4601f91b2cd23e82f39f878af7bb702c81e10d3069879cd79b15f14344d291fbd00d75edf34c3ca24a3a3e040301d4099e8e2f1733ea39b1580a5470b355616126a6c5d7020c7c044d170650537eb13cecde0364ee8dc608e9bc7c1f70d03d96fd49b9a67d165745a4030b78121ec3bf205573abc0f7d5e490baf1358143ec33bc48ecfc6ab7cee83ab7bb49bd8b132336b868d025e2d8f8f623513097d9d88154d078656122d5263dbe1c41fb8c86a0508e2c5cf02c822ead042bd582952db6b35910e242673d367411252e11e5a22ee02f5ef988880f8b422410f904e885584634cb07fb00e9b3238b06c21285fb030c078f9716015bc083f8934df7e1c90c48cdc0fdbf011668d018064f64e393a9c66af87f095a313c5705814e58e2372ae4d7c434cf3f49ab6398aa802d466d70a51df4455ae39e94916f35740b37c33099404cca0c8bd9f5337e77c1c11f4965c935fc8a9d8dd1c9b09941efdda7229987f1828276287440613890ddd4ee013be092b322c34a0ad779a35b1c939c2256742ac3fb738bff301fb1037581fea6123966d26cae24c8716fa1dfbddf2ec4046bdc53fb2831c36faf34814f98a2a85e696e781da28920ed78909a671e412da8248604f6a1cf1fc6a0cf70160affba98c7975076f7dafcc7825904f26c0328598894708d8ebc9e4cc56fde30e5aaa48bb713a8e173cf510f89c98527444a15ddb5d4e2993353919930403163b25685678903b19e5fdfb723caa702fd49c2c6899e7808a0aafbd8bd79d59d432b92523a00dfeab1f4391d16579df6bf7b72d880be313d2d012156fa336c6d84358384016c430f58c54fd0c5685bfaead348eb2737604814d228a6a397f02130524f9b022804fb425ee23a585b3c0bc22bd0f8fb7a73b042d8ccc28c8641c54d3cb0e00fbc20706b403d6b85efe73074827a92c5d11c6dccbf7d861e0c8176804ae04c39f5054531915ce8c388781362671c32df00f12e10b7d6b62719fb20acb7651651f9b4ae308455699d505310160a59c2bedf48ea3f30bf310f5e6106014ec0471b8b3547af6f737227886023d4c2a42a5260836de121899c02f3456a61ad9632302e554e84482922b5821f25d0f23012a2c6083d767b69e6f24c007cf10ec1727cf34d6ec59ed9e01c690017e31d9fddb4207a593f288f8955e76ee6b4644240b2b75801fd287a119c97aead3a716f1cf3736a805fa09b40f25f15092e01f7f53df31c830a61ddd6bc6876d27c15b1ea6a4f0db21e889428d825a3a856a1fb80f0a233e2c8d86d7fa440fe5ba4f34fbc77b3c9e15a40868bfd50aced44321b8e113f489fbd167d14b4a849b481910240888185a802a30d41c9a8244f01b77797e71fa93dafc5a3156311e6c0810388dfaa4e5bc224373ba0a2a53999f8cd46ba816e155ea27c23b0eaca0dca071556be722c0433057c14a844a1469aec86adfb1d806243cfbd18f33f31d5e0f2fcab4a436acd895825d20eac09e0fd8bf76c374e29f58d2f1847d9c26073638469d014c80ddf868cd7bb3e7a64fd0da1a803fe47096d18a281e0076ac837e6948c0a6e8bb052769dc55842771d37cc8a7af573b263ec37b2b0c787a9ae0a8955d1f21b48c71bace435ad03e71131c0198e47bfd7297400a298b6a350686c6ecfae95919457242022a87b4200ff53a3480e9b2dca7faa57a0a8156a4b740d66a0b37a08f11db0dcd7056002bdf5ea9ebdae99c612d715f87d5de6b23359489f35ec3053f575d15360777c61013d9deadef530e053d4bd2c29a09e8b8e9e378ed106d04736a32328be2e3d7cd3cf63d1676ab73bbdb06792c6b57e8401380daae873c740e15b603d5d84ab50d34711a064a1e59146126805d310083db202a0def5e83cf7fb595f6e549a502a02d99543368d3e5153a4a9fca5901c387673d91cd84a5303c1e1a4abe31acdb470e2c1793a066d8df67a1e8b80c5744daec8fdbabd4b47475b6631e3b6f98a439718c8d8326ee15c7d317a789c3d09700376f6797e28c5388376cfa0efa71f67c1fe90449eebdd80782f8daf79c1f0056a78b268c43052f54b837f186d08a3c189057f92e9020aced4ec09b4df4e89eb770bb8fd098e46accdf52ec87082df6e0fdf8e66412c8854377e3c63be409a83eb2b3538493bd9a5ba4771922e16a365eee8f68e1ef44509510935e9516dea9444eee4e0ec8e6d065e3698503af37ccf813a0b0e91bc366e829c8acbe734a138dd7ad32e41640ecbae113b10dd237b498676b0fc0febf226d29e4379e27bdb87980ab589ffd79d7f82e0614adc89225909f7484d18075ae1d9be7e754c431fc4d5e13f3e554af47bd5c4c6a706c5ec01201fa909d5665b59caf654c89448bd2f9a80006bc22a0d55bc4c8e6429213a26cb08abf051f08cc5bac7b5b87b60acbd691580e03a82df14253bb4ba02f6f603bc037000ea2701a4ca2300ce503cf29e8dac9117242f8cf530b133fd26e923d0b9a0ebd142e7a2b806e05ce87d9b24ad9fc6b1b86ca810058ffccc9283b847860f0872888dc72c27a7213c0a907063527a0f29e4beade8d00e4e8d2296d76d0ca4821321c24040d063549a850e1bc6596e50a04d34f4f0dfadeba10635896120a8df4e27b4b1f01db4691e8ed1afdd716319294f272fdd8dd5f0c914baab09f06c98db326954a18f52200b6ff86bd293bd36c3555e83a399c0ca197afbdfb5a0473c0a3f987971b07646d0f84462e3b748fb6afa782d26be74b89808e064d010c5fe45ff09440834ee3b9c9bb991c8c5c72e7a190942f4c51d1f7fde3ef1460ab0cfa5562884a112bdfe60cc31926ac078b7f47b25517eb16b12fa0fc274606b0c8f0651931c8e05b12dfd0a11554c402d2d6823b2221e659f0a41aa0f78a3c79ffcf86cf8ed615a939ff69e68385932ef0d2b28b894930829dbe0824d1e96f85d70d1e8125cc67488ee0a0c2f2345c54710fce6b7d0e437c1afce210f6f217064d86170caca8c5c2fca6549b2cad037d2a733b4599cfa7b7d29d8015f283ac3eed3f5ea1e17a94424abe64ebeb18312b470c8e0bda010f0ac93aba3f8a2223ada6e96e55833720986d696d54bd44a0e0791dd69e5f76dbf7633afa7a4f97ed4f6fe92c1fb2e09b0485541b0d24effbd32d3b01221ccc95d30047c850652bd2be5abde3ca249a733a1c6f2cbd6337a3c99f0d94590ae0a2c2cc08462cae9690aee17d871fd1dbaf3158e3a7512e4b4d4dd747c097ca22303e27ba7bea5d520d08c1618502f3d2251caf6430d0914b2dad5b962320a753c07148e7cd3cac8fa3040e81bb9729e84138d30a4fd4e148c1844326ca812d5a832a52663335632d60d7309467efcfecaa6131daffc14040364c259a28b55f62fdc0759564fa3395692d7f63b4ef9d3c02bf2786111e6dc9bd395beb257a86ef93066d332479e7e098e82a3165ed676e2cc94fb8bed2d10ee6f9d2a6b2f895530c3798a6a8271b80a857e36be79d36194d4ed9fbaaffb4792576854574b8c395e2bef66cd698c914e51aeaa4631b2962a86958b42c1c0a35b72f2717460c8fe19bf7280c6a203a160b060bc91e896f3347a2cc0cc19e8e6cf8a2f40987c48c9f5792cc6cdddb0f3cc723555c0b4c8625c6f16bec32f1c90729519e1950e63b00aa5d1dd5bad0c91403ebc67b720971d5207cc35e0c7fa16f2025a43acba1d83b0242c63a867d6cdc4d8c3e5cfb5035f521766f44986d3b802524d3a25680ade51343c6c72e1920c9a450ac8bba81d0ba8b81aacdec3a56e3c9fb53dc958e7e834d9edf0a27640060ec43e8043ca46a8ab52750b42e6e504ce03218321c6ca32963d4cc9ea9b0c44737972e34402ea14f8d8921136bf08a6a0e952616583ea841cc805d19ccec60d60f4e3cb6ce69263063318a9af55da902b387df92a7e5219029c3478a66f5b5bbf8723287c165072571c6a876072725db94a09ff35cba24d8060be7bc0989fb19da47b20700e6414c88bd2153034089c224fb86e0920e35ef57b19e4377eefe6d61bf60f555cf72a6550002b70dd2fccf51a6244dda4da936be8447ed58efc35a833ce9e593ba462b450dbb71b797c8ac0bf98e0e176bae9bc37d06aa6cc2389ce5edebd3cd86113cc5a8f74665bdd72690b05c4308eb82182663a6e6f68603590bab88e1de3245a5b47eacdd388338c6fc9d5601bba0590639f0f8adee0c323708f5c5c5e96863381f94c82240df13356badcf1f05434c1434c04fb301341530556ba958c052dda5211c37fe39e08360fc1090c8b358e8be96a49ed5d62839f88b4a69cf54bd47ec0529d306418a59d2964bae0170b133252b5a517b822a346e493c7cd6066d7ab610bb1cd93a82dda196296950afec4260c70a12c0702d6339f3e43fda10932616d307386082732d3b99d35b2641321a5a5c036726f0631bd17a718ed24834fcb551c78a852b49ed3961c8480fe8719a1b568106bbd1196e3c1aedc5c77ead391f70b27b55d6722ed5041d92fc1bc3c477b7134295ec0114fa32f0a9deda1307a6447dd88073265fb30fde348f92828c8a0e4c971437d025263f0b7e7e639d0a1865df8bf0d5ce9d64f8cb3f0002a853b1504312b21fe3493f7f41f17415534b0409e43b6c43e888d3601981d56a22a7efa410b2bdb41858f5b37eb23ad82226cdf9b3a88fbb89f170b5bbea4975b51721fc3ba572052a4d17626676fb16618238947064030f8b2361e357b5c63ccbe9d58c6c35dbb8f2da3f63e7882e6809d6219357148da08079258f68e58e0f9628918509c1d2ead31196c75531280071d3efc79701ec1d803ebb4c19b99ee67f81c27e6e56bebe4ce17044e44fbb42af35402dcc2e600174705a505b00345963099fa3db26611b59c0ab1711844e0a5e150893e19324e7fd0c7f82936946f03b0276746789f19f7874e9c26f370bc2e70f019e43c20d80e3c78c8e0b8ce78d91ad174fc1475174b74f313d597d5e2f840baaf44445c2e6e385b057a6d334ff169bb5bad8e20d99002550ebbb883fee667b1873aab0542465c78449f8104a2686a6e0b9d5129cb0b6f68f7f4546711dd0d077b6a5f71d05af107573bb97f357d5447a10f678c62368f604bee0c5adf03d44f01a140c6d23bc0358b2d741f00c2bd89bdad7ac9f9e988744cede115953f949750cfab2a62bcbf2683b90860a0bcc002de0bc9edc172b0a12c25b5631f5fea3ccbd677c1bd48cef3cfd97db8b06964612208eb1108e789c80ff73e3bba2fcb90df299adb90ec37ce4c1fe1eff80725ea9b8f2a4d4cb8c8251cb72623ee8e448b224c2dd364c4b44d35788a922490f82f7a4d610162a698a9005d507b9b0127a402d76f1949235ce7754686b5edb916c25cb2473253923e45f20fb1a9f8da064296d61b0a520c22982a783fb7d2bd270ce850752f8fad84057059bf1c10476797d82c6c69a61608e3e5b437b63119a9c9355e05efddda38052d7a2cdc5c63223e557c5fae504371f85241ca51d107159f14cc985b85078c200583ba74f677e2fbfcadf6328371632881c9f3aeefd4cc2f89624139251021da75c3c59446a18b6a220bb2560b0b6ab82afdf11acbf5a816d49bf8dd2191698cdd6041d7043f86cae8e19a0bf99354a633e43e8c5ccd339235a183cd361efd55058cdd4c8853e4050497b9fa4ae899e4fa4021e8d9fabc186f2e9d4b525c0fdb3012c0cb365a8378a4c81b3c702b8552ce3474092fcc13090f6fa7596ea005ab628fefcfec49e40e72867b4b67c78546c40ecca88595bcb726f0e24ecf96efffd888879d9f801152fd402996049d1fcd06b9a1c1e5302676e1562557d82d5af723a71e579993fa74f5fa57b4f6300bdf2e3a7e1132971336a50efa37ad186227e9a5dc94ba912e903a4b65f21733b3bc136307249a43d85a11e0163497f13a08a3c77479086b0415be5f50166339838e499654efc8cacd2d93cdffeff27b52ee368a7a9a92e7fd8117b92e258ec4799c295b5767b0908954fa7eacf79f043054f0ad4d39437640b985b0f8bd5d99e2bc007dbffc4001693933ff6b86d44745d5c84fc1239dd874bc2aa3d995b472d53c6ab525b3741aa2da52db9188b7827b873312505a4b1a5906251b8c2cf151a07a321e8c881b22c672e3de630a7c9c965f2f9c6522c85777357a3bf2b9f9456dc60f5afb465acabc9ac4c126103ed801a71f9f0fec4fe4f1eb1c66abef5098174f585c157e137150ddc2bec2f2374449360da2bdc67122e9f09347ed4e580809d38bb78b9af0c93bda3ec006a5378d936926e19c87c0bc3422b0877e1d224481954cd714b9a130849eca6e5e85f08bb0fc893e081c44b4c7579146acf27751f6e721fd6a76e64f75fff817e0ee2f4fc8743d887afd84d2064d4faaba5f1116ecd0f4179a75d5304fa450dc12239644f38763d284b583e1bfa3872c47d5055d9dc78185266c4eb1219c96dc7ed2dc9967b058cf54aaff9531a54759df661e22ce694aa827e2529f50ab9d31ac2d56873de457665de242255b1ec5ccdf038671c2554a0d8cc7c377d062f35c747d06dd7e95bae4e817165424be8651f3fc9bcab59855b995e223344e80853a068104631f77a04afccb1c896c7802548ee2b332a91a0ed81b324398385f635c7d0fb8a378886373d16e7d1f343b0131581849347aac30ea4ac82ef1c2165dc6b9183495d245b219f1a631e3a121669d70d10e54213a450191b0ae258d4c4da68f4766018777f3f50c0db76969747f0c5be5d7238a834fb00abbcde4d0cbcd4d7b61b837100ea1896a706055e4350afa6dafd528426776de887aa93c08d3a19ef43a6eab2837a879de4e3080344c427768353164e7025b92350e6f0640e30644ee47375ee1fec80118dceeb70724e9244b8639de51439b1ef22b06253e445d498070a31606892514a79720f41be4c9fc1fdb477620e5b8248ba9f9ab88f151c653e09496c0b70c079b41743f3891e5e5f963d8fb128a10a64f1e7577b73cbae421c3dcec4c4e88336bb69e6c8589c02e02eab13f4e70c1e21aeb924525ed3fa9a687998fbcdbceaf9abb07ae1c7aacfc8175c3eb7e2e3ec9612496d5ea00eb54b454de3705455339135be670384c4411739dba8ab3831504e9b205a8208ddd5f1101a609840228e18411183e86227ac3c083515bcc72340702da9e8107893151c184162fac0d08aed84ce8b109a28a854033e2fd1f3cc0cfc71814708678e447862cfa47638dcba2f37e286a326c113cadf1d35082de3f25749d5b90981d258e42ef158caad7f6b49dde3941b074e391cb4e1816253fb4972c5d27b612322660498a68d92ebfb8fe173555038f2da0d55094f47683898d484cb8f58d8912f19c12c5123ec56015d52394b5896e070df3426a9a6f907450d05596dac5911919533080c4ecf05e2b0a0cb8c581b3c418454ac46e28e6c217407fa6d234b4a7124904cade88522034acddb708045b650c2683ef56f548ea18067da90385f72b1df1192ec93c8bbfe94bc64df424aa2770f76ceaf17e7df2f6012ebd5fa66b3f7da78251a41fe6992d38b7600f309b88f9f95f4c3be256b792b3602ee3f9f6413f87eaab8db132ba13e676ceeebd44682c24995162f60d081780671fe0d05cea068d8ad2a5ccc6aa5c73d3e4f45ff566b838b7c40be78f5e7289032a10b1466d4099986c07bc884a41735217e9e6d752b29f78a81d64edbc0dd1ee7ba0aebcb9d8020465c318647cb098d8bf361299cdcb529f9ff8cdd65bbcecd6a197624e1d94bea71246154d634f1b2af3ac3aec2bf7303a87cdf8515fd1e9fa0b8ea24223c157993565ed3ea5f5a4b803bc7b741f6ac9a4c71d8eb94cc128048006001600ff7074384916c07c60b0f1cc8d48fff8ceaf77fae25e449d189c5a98488d936f07e31d32409f461befb389c47ec720c3047f4656308408e618099d4bd113f10dbed69d69201556da4d6d7234f4567b532b14b8f147185b8ed4e76e6b75935f27f58551819bfa477481cd0ad87cb7456909cb5d73fc7dcb71d1b87a58dc3a3bfed4110db6714fafc9b04f1a50903dfd2dea859d51dedd420f567241367ed3782432c3eef8d198c5e686abf18460a0bb33af3bc00a7711a18673bfecfbd10cfb52a81486f7cf68f127b3dbda3ca966c0720f989dae1255a3bc185d309c258425f8b090cd2a4e0c3f9d8d1dce178f7127423a791a3aa2e41fe11e3a08c08283269e8ea1facb0cc7052040deaa15e7510a58161a8cfc8b66358412a467f47c1f4a52219246d1796882c57d6e7dcf67905fc966e78a7135e7603c4d158f9c3534d2db518c685c71cacae364052fef007de4b7b83375d7228ee197fab80b14d026725395610dc087686331303fc10f08359db47b73dae91cd7af5e0374a568eda544f05fbdec08c062b6f895f698e339be7350b4f79529964044e3e530d148a9482540bd2a36221290d9f367819277265d8c780e971b6ecfcf29a6b6fad2f863558b790eb7746859d69ad502d757b8ef62b133e1e82cb2c182968a57161f2b3fdc3d560e3c6aa038e05b2c772368cbb79582ca56aad2dd654b2b0112a11cde04b15504cfd7475232a814c1da5067a6adbee8595f9a02dc7783971e7a82dd8da5d95028273ecf99ce646705fd258f3a90658e25b330e7f95622fe1d23d9acdc97b66285da352388d022eedc6f22c1eac1263b0107b83b9896cf6a2999b826ca7a0886c550d3ec063dd9d9f0e0b7bd6c29fb8d7e7e46c9742fd028b98684224444debbc0a831a5e0a31731a4626567fce8972c9987b8711b3bfd615714a94c68c730422cbdf93b019718b3a0bd611ae4becd113196a80e77d39992fcdafc6044df4aae3c05d76117e608525ff48667b715cff272cbfb26997d1d71a660c0f8a06f2a27550cb9f043eccf5a2e913ea6620056125490465cd40872eae4019ba02001611606b816df2cc3f07c539910881e994ef8c7331a7ebef0e32191a21f4e41e5d4e50cef249935fe43236d0331bd9362f00a0997e8b6903dc2a08eb1e65ebfd4cee5ccdba7f0c9174de764f4b24f8044c9c14d96aab5e3763aec976a5c09ac1fe77fc146422f0d9c2702eb41347a1a180f755eac0211e828213369ce32394f822546f8fe835e53bf638e0b0bac69edbb71e750d11bdfad7ce35799d34c664dc0a086c77eb7b9a2eae3d70f9894427ac2fea87e8c1f9a1dc1156ae801820cd66c933b1a5165622da3875214bd394efb4766ce6535e8d27fd0e1f4288caed116c7d0a660de398a4221a5d63d475d76a1e47d6837e8f0db5c8eb0983505ddb69c2f8ca811610647b5178c3f8c010745d56a54d28a3ffce8f525adbe0097c21882278a458c499caccb1d7727108e0095a3ea7aba9cf3be242f6a979fe3896f47c394b4e24645e13cbbb9f19a7e3472ab98ac6bd7a332341df6139647a9eaf2b076b0e9cb6a2f71689fcbe00ec4b0a706eec776b016b9e2fc6050b51a00dc77306707c90d89d98711199ccf07d5dde27ae3e15f4483bb3dc3088379ec38f1d9b62e15247f714214e8ca41185f46c3727c6c108749c8f1bf34f72c8f93eb0cea4283cf9d5a7d3f11be6fd8cb8996b15e1786ee2360ee538a787e15c08faf2ea225fc42048da898e814977cb5a68df2bc2d81fb70c3937f392425c38be63e58954a4506385e70df4c48712ffd65598b1af6f1b32c69bf349432c9c9b6e1e417be3c7f0631628280846aa6aad35ba4e0cd67460ae1a12136b02f55f8fa3f7ed3e9b49381beadc2db5870ee6c40f5c8894514657d6ff249437536e841996a4cd79a45db2f70c388e409458294ec439ad84d573a7a96598f24e33a983e4beddc4c8ebd650352df3af45f4ec0ff0591f92201f806e0f84929f8f8ee650098b3fce90dffea6b592215449d46838d3f4efed8199eb1dff17e6ea2fbe8ac596a87191bfdc3c6fbde5b6f07b13134194834ca89caebdb2a94a71c51180c201e3aad922357f2515f741030f3042185a71f032925265f0fd10b1a56ff71354b786ef12b8dc2305e453321ad17313cdf1db5f8a794402d0650f14d208dd328c7a5af7ce80549a9285ebf05e4f4a3dd6268e17ebab09ecdd76e5f8a34e778192e2a15eb2075d083d63220f4b95aed8139c0c9dc8569d3c7e777c0fa9c9854d8f31c80b713ee35bc01c1662113560303f3c8095779cdd730a2096fab7885eddc07db58abb8d8ea0b43004754c27921f27d418bb4cd30f18577fa41bff080d9a40126c016c0a018e95801a53912d14e8977b49258cb16da2168f016bea33047475e2e37899dcf09cf413adbc703df8ba2f3d38d721960f813ebdbd5977b40967ae292ae05f3bff0096e688e752b3fa0372e911611e279b001ec3618a4ce45227304291a4fe5da2ec8c4132d9f16410487ff873cbb2b1b242a4808bb547bfdf451080969bce36eb7049e0bd465127a2612ac7f64327a016bc1da2da58cc228f109e41bfc477c0122474ec5e40ee2798478562c38a82ea05520517a2f504774484f1b109e280ccf981967ee1238783c260eae4b38b7028cec710c658b86402b2e49a0535e0f5f6a0b1c5d91fbda06ed9ec05c23053729173c6838739a79b01e1bb9fdd16f93b7db46c28d0d377f94d1118a20f210c7af8af209199765795949efcfc782b6541193179b0ea2303a127b0eefdf638017aaaa94d73b133400eb1b4eb03db9762e57e5b3541871f5f871a7d5454424f7482921cd1878e47e7e9bf583c9cde3fba00704e2a3a11fcfb08038e49044129cdbacbec1d4efb779f707178243fe581f0e68391ac51f0f155d5ba1d9144095d39e6a2ceb71f5345c950d67c2eef508bc7dd1836a42bf2f21d17a7245f956e56ffe88a3d538249a4cc5facb596fb47d82b67d53a2b8c2d00a1640b882ca2246abd0489dc19226bddeb1b0b78e11a2887f9c6b8d1cfb6666e6e44d74346475f18c79495aa1ea02db4e6f17ae7a7da8db471866b691eba51fcf4eb6a1f5b163d0d64289e38c44e5f445088022dddc2334937dd06a26e76625f82050bd510d160b744ea91284a2ef4281ffd406842950049da9c56a43169390341ad26972cdaf69def88411550009a362f42177769f209d33892d5d649e4d840a6df21ecd86c2fffa00c62473b72e8929564ff78ec999bc7f33c3a34369d8443e6665fd86134880d30cc8f5ae073e24766d11420421655c7998d180f682bd5ff27dfae54cd2be586d07308770570b2eab2129abc261d04b298269c9e042d2dfcd3bf971459bb0f9b434cdecc1850023125b674dca1bcac6b348fac6cbc0844d264962335df39c0ad892b4e192d5dbe2c81049902b1a764c19c09e40902b21d3ebd80352558457dc137a166eb6c411faeb82de156db491fa38422249ec1c1ea82f1f61d01a7671bcbc350b744b5eb3b343747ca91c2ca1856567b7d9851a3c35159e65099dd10996bbf339f4cd97528648ec8cde2f4a2a23031bbad275a9b2e28d3d90494497460e23ce7ec3179c9369b74afd77967f8cca9a1f232a6184a35be64d44f35ea5475c3c264820ada42dbb223b0904d8e3b3b9366008d4f3efa2a0b3e68033ffca729e8550b1442c30fed9036335232b794d0f15a025f1e6edf65a4d692ad154b044a0193497cc96fec70bd7d6ff14daf542aec6b1280a5010eee2b30b29af7949b2eccec1d1550e91052aa1fb8c077ec1322bc7ce1e746165a5f0843d393bfa7ed32731abeb98af35cb53d91166f778d466742e7bd5aa088ab9c7e5d981e5697f7d8c90cbb5a43dc392d11f6c04f085cc05b0a74091b31428e6d0041c200b014538daff0fe5eaa59f01f6870d50f25fd4a59850a23cd053c6ca3254ffbeec02dbedea084d6cc73aa16baef4f5702f144b0c456225e6404b205c959bd404d60b4c05b899427e3dd656ffa5a42618cd508d6bb05078e119850b8ad460f080a4fea5d5f04475dfa241fc65dd0fef86e835b19f67510c9c359e726fb6c70704fcc50aa7f3006c44e45e17c843708493983940da5c5a5a4a3f5d88c06c9b05e392d677563d6f44101a19db028334205b83a6c2ec481aa28192d65f644682af7512f705c3ca264f91bd61e419025661c1a812ebea836b0a0602d81dd0a44e2962daafa9b377b0198f0a5bd7659e463f57bc32436511daa0368ec4bcc91f43b10eb47545924c647f20530a529d6e2aa652bb2fc514beb23bac1e332a939a8c78a3b9577bd04e76c2c2313673414daa7a6dba5b3e4780c421e654c71ca1e00c592e23b7388ef054f925cc0fca08d66a79cc97fe95f5ddbb20827116b5a9a8146e87eead01e7905da2bb00e60c9c16f8413096402b1c213cca7f81be1e6870a8dbb2667c5e58c6e116b9e9e2a3a1f18d4858f9f75b93071ec0e5e5774af736d5ce22dd6d4f062e414746226d7ebee03bbf42d5687f22422f1238b876b8c00bc618b8025b7b1767a1b697192e6ae48242671c70c7754180514dee474c7016d4cfb888a622dabb324554546c66d8109859832f487f3d75b5512a34da7c655034545b8efea95d1184d97d57f1fcda1336b6d5a09f88e9d521991ee16d4f5f0c7b5cc3f53170626dd5e432fd92233042d096181164e4bf998ea81afcfd769f0acbdab9c0b4352aff62e3b0234a06a127f4e40006617b8b2801e5b344b5dabff8037e9c8ed4410259fcda9700573ac3c33374fc11f0769b1f6229ac8b78b7bfa270d9c1421f4fce4d999e46b9339094629d8fc817b66d4303f3250b8f8ce90ad88a8b5a1b1709c80d23839eae95dcc273d1c78bddeec07ce81cfa85a576a109740b1bcf4f41c6b1d9665b4780e7dcdcbbc503f0c24708caaa1b2a968cf409e3826c5b26820270c45fb3596dcb5cd8bd5697e3ae9e89239e580703931b50635a31e0ff5ca0003b0526b522906622a7ab13c02d3998700263919726ad5c0aa62c3ebbc46ed2ddde822612dda9d135a7fcccceb068fd910932b0ef74bc3246dc00e12ff2c8ca372d8d2b13deee62a68398201aa6aa5374f191e3c1137a8d78f59293020e10e0aff06b51dd32b77ba3abcffa666632bfe6c0dc1d30941ce193fcfd1a00b25d3601c6ed3f5affea6989f61f9fe068127455bdca7fb842f389eb5ec3f0025db1efa37b66d7d100ace725e718e8228f39439f477baa90d5ff4056d1154dad1ca2195385c2d4257a4e82d02381759d9d46d1c522535a42d6bc76f443471afeb26773f224d13c8ae4bd889cbcb09070105416b8d84a8e5ab195bd277955128f58f525b1dce7c3c922567d9fc9d7a7a15e01c37999f1b2d564c70b92156817f57ecc1b26c1fe853ba742a33ec39d18676f38b85829855e1e0063f8d83bed8900579db2cafcf9da2f0a9ffe0424e8decf4b2f113669b4975f9c819f8f267c5428e9c04dec7fc7126ca2c66a5959cbacfbbccd1429576ad38e2cf321ca0e8971528fab1eb62de9a2538dd56dbdf5fb32500a5a04608ec89a298594b2a8818a56a0276eea9e2706bcd0699f73088bd460bce564b66ab134479d45c2ba90926d1855acbad2e6837976d8498289f3e798c49b36178b411a76ca0bbb78217531c630ff7ddd0f7ad0acb35577806b7fc906d7b313267334365c18d3de57f3f9feffda66268ec591a85a5e84cbab29e969e668e5779642b594cea6e6ac5e8be847b2a7c4d4c0608a86f28bde1f50a7d9f048466671f715c39f7d29cf2daa577f525df30039a78ad9908ed670ce218a1702399d4b94c1229d9354c8c4cbe68c3f3f3112631877604d01a795f24cf80951b2235662fcaf9730decf9231e8a0b212f30e0973b90f17ee0b84ebf60471c140175453a37a58d84cb0b5b60a7af210da7ca5eeb6f2f233c4d03d42006f0c5068183d4126c64d4a57891eb63a7a1104db054711e7ac323ba76b953a9695fe653c3dc46163d439b42c6c10def4cc361f5d01bf628dd8f5d70b8441362683636349cbc98c9acfab4236c4af24dc73c4ca5d5fd0bab04f684ba87d0f91a54ed0b34584b2c50e0acf5fe0c4e2f7ed2826245b04834e75c816aca4359b4096df181b3c98e1a8e151ac5b81f1571842c11427914ad9083ab33a256237eea5d10a69cdad96140295964fd7acfe0fe85e29e8f632d4856d7695591dac74d9c42f0b86d6ed062050b8d77f3571f9cd2aedb58fbe9a44beb28e5e3099454d1f262a6f4b69c5a3674281b83985b9eb296c2b51070959d1dcad035779b60f23617b753985bebb7caa1b28ec7721791aea729c54bb17d5fea2b091fed1f00fc8c3e4b8f9df097f03b97c28053901bf6554a1fbea5108799e07e161e7a1871d47db0ede80a66f212689d2164e01bf8672a115e1886c028393577930708521cab90c23d7292a6f3e2d2707586098d39abca2dc52aeee2e4c86b6cbaa37c74680ae00a8c1179c5eac21b4f90fe32f5cfd8f0b0059870709328f6780e846631137d6909d12de520e26204170b99692da01c7a5af353cd3dd953fa27c03df8a85bcd448bc57743840a01da6a67cfe8dffd4bff03032e4abfb19ec939c9eada458d66da0c306b7999c3d4512a2064dc0d714ee1dbcd1019c38c35a6c74c4be6c3f548d55345e654cb3b152a30379556fda9e9d0e908354bb364bb4c108539032bfb48c570362c2a7de67541987986ebf0cf8c353774b101ce45cde3d24c573763e1f2ae0b526170f39cc35284d076124f15de28a7803ffaadb8a094788219423ea5c72d1d29107611ac219f6cc42549c67855942742e160abfb825c9d7fa5511f16370eee0fd5b9d317f10ea1e77e817f1165423ecc607d480814cfe58c3df99e228e7b18cf8bb1f3e411d5f29947f106ad1ecd13ba5eaf95a4a11e12a4808db9983e27e3e98c318270464bcfbf092210b487b180bd2906117ea0525a9606383d0921302535aa4e5098939a6260c80955aa8038cb0bbec9e97422e457135f1c208e4f93cbec7abc0c0c6f3276ba175a6dbc0e3c9adfa991d7433776b939a0a2a850279064f793315a2ef6a508c68c4ac1e4284f47c9989bba02042840f5f8d5b4409472f59be86ff6589915108ac47beafcae6b03448133e42d6759bb3a72c84433c141983678fc4d02ab5a1f56aedfe20b614423e74c070e821897ab4542f98e3eef1a9b6fb1b93c227ac92e492f2093adea45efe695e5faf6e95a003d1b284007deaf06098c53b28bf5df59055f56aacac3b2234e81c6c487f55fdfd818854d0384192ffd248ae6a19735c82c72d33d690a35a28235dc41ebf266d5b9eac1d4dd04f7db49b888c104e4f6b95b794059316f737096abaa32513a28d623422b80c2bcefc6a42960a3b251e2674a879c9304c818b90ae6fcc1751afef3d0eaf381f02d670deeb1774a811473bf8cfaf1f631a3eda7d45996a8c9ea5ec02dc258f5eefbfc6a1753834181c090620c1002818060586848221d03002f39650b18a724038157530f08c098d14c9e34b96fa688db1c767de860c64ded0dadb33db335001b95729ee4210484a909c86f04109dd1adc81172b392df5042671e6e9c324c583cdfc5e43568a89171c72760fbd4dc3da8525298bb4c1c1516567701ba9793c77314c9257358103690404014320351e2295fc329e7b6b401b80953a2834c1808fdcfc9839ab0761a12c266a8e41ddaadcaff2e2499c2161f97cb20ef936aaac8f5735890f24458a4b050b51cec44f6baf12b6af8a27db0b411e5348ff8a8a32f4a5eaf1798ca601a7324f72f8ff31c38cf6df98d5df908c23f995c2c269cc2d24f4a35dc1a55bd03563c0c2890219e704f82d1f4b11ec5e217f04f79328faff38081d21819a44e0ab864bdd496e414d2caa577f09587d80015f1ff0a869939743c1e25a3b84c6105ee8970018ca9122c22fbc64c06b25b07d9200a12301f2514a902f01bce77bdcbff1f7d88e5d6237b17f1e5d1cf63ce626701ea1be8cf577f0c5ea0fed7fa8fe10ba5af09de434a1121dc828ab646bd740dcaa4e3cfd838475e94e3175d5e9a400e005ffe349d9cff1494e706816896f993f61948ba939a9cc4e95a6b4635d6ed3d0f4f1cff6dfcb8cec0cad524de3b1a255ef5ec82afa27e71cb47f972289534f60470bcc5a155aaa3cb87934cdb77d15dae5db8b295dc66bb6d0cd1d901fbd3bcfdad6a3d4040bd4e69f13fa50a819d870550f9531b44355c99502fb425e1f6afc7c8206b3f14ac9b44a3ba2974f90b5a6dd850b5b96e5d0a4745f928abac394947788f1907061143d2ce894e9f1e728b15f6bc90f55360990a4cfd0b5c107465978be0df80b33d24519ed44c0678d2534f7f0b9c28d41454f5566e632b48805c956deb462c4e69eef1596f2e7c9fd07fe496c5e1d123c88d3c827f3151c1331527b8bfd61c2024196e09eca01e9045806504d6ff8762429a20eed141d50a781ba2b54100e524a7fdf91d0a2a3cd774ebe70d9bfdc35a6e7abe1decff8e44c911646e35e3f9fedd949dc082a9c524700a0b222c63044525957fdd998b9d62947225edb8ba741b680caf9a55fe1632f0dd296f183ed5b22f7127f9186f02c121e986b67d70fd3305d3f9024095102eb5a297d7204f8c28e84a349246016282c2b325127cef1fc6fa5c541c248bb1de42b6fcc3ce7cc5964f1bd0de23d6279603449fc34da6adf59365049bde69bf3b4194f531ce1613b3931c3e7cd0c3284c7dff24d3864f0fda215a08ac743ba121ed94b2079b86572829c473bd45db7582f97de80678130f0f2093d072f2406022d0ba6749eb41db2500f4dc3635d6350c06540199406ed7c81380bea6cb34794a60a98a2202647a28f76f6dd23d1c8a0a30ffeb2f5b625d7a29b745542b02c224278917f5aa57f680b2e73fa9f9bd72ed7c8439ca8852296d06a6ae03b77ac686704e9d1ad4dc0e0407a8f29ea65de3cd06096ecd0cbf8d47744f04002703f08d6e9aabf5b63a28f892ba2a05627dc055f34430469053b754e8c1c0dbf003bcc39004fa44346d3a9c049d3e87489fff7ac3afe2356a9b01f66b4b50697b0ecc284134f8039a00391803ad9484bf8eeb0a1b87dd71baae07038a4ec85c7cf30cf497165e9c6ffaa5459138c804d416077c4c14142da450380b86033498c817fc2201c8dee0dd7a8731bb80981f7b8341867420e46ea80f11e0f4d27ea309afd863df165e90a4a1552deb0cbe2bfb3274f1376cdab004bb2aa25ae96576a0862ce5bf2c9ce6dce21d3772f514bd4e483466b870a1fae75861ced195258057a68ccfc008276b7243c211e55b05ad666e9e2b405ac3301834f122dd091825ef63dccd38a778448344adb89b5be6ba776388eaa17d24a344c57498df1cefefe47080ce3e6e99c23bfc15a937144a4dd26161c088846e47bc7dc759a33b1d842254720013296f8398fdf735f2eb3c324a60726802e07448b85490a109ce34a736f97ef61313fb86683b62d5d1f8719141ec2a2383b9f547136b62793db4b89272cb0e4a76dc710bb5cb2ce79d89e7035288ccb8431230eae174a50b88e768f1a96160257871cd6ec4ae782c59894f31cab49721bf467cfab1e336c201e43ff855cd19adc63fd1c7409c9775a3d4d66a2bb026ffbdc1400ca2984dec317c2a9a1086f7553852b796289bb66b7cc9206022885c6ffe2289b5704b6bbbfb0511594823b3e6f13f545c0b024d3739f7028371b9a9274f956a54b73fd341239893813e9de8c28afc13209e21ab779b6909e244c407d95c0eb0a2ae5c0cdebebdaf249d6f3cb08a1050c3807cf869a58c8886983a4a9922cef63de2a265a894c0e5b5749da661d3129d01162c15092dfbb69347558a8db232916b4e9fc5bf347ef0d6d6dbc75ead139f0813c5142d0d9ae3e09a4d787920d04028fa69aa9513ff0aa655bde6f2bc567f17a9839819c63d3bed74ba6e414044b7b9c35e386ce531ac43055b59b78a69c39e9aee01972c420628d39f65e1a352f2a22f2b0fac14b9c76187d79859a83a823a96abeec23a596b8ebd78cec1ca1ef841c1ab87cbf96d8afcd49b239ffae5202556316b2187b097c67561286cb535651f3337f1c0a4083d2f2ff5d6730b3479b800c6581c59a4f9f9fd546d65a7581ad2ed5b16a6bcd0e2ae8191533cd2808c4c4994175e101dc0a0d758bdad22e8afb8c8ca1e1b21b04fb0fb0416fd9195540f7dafbd867528e30ab3acd17020283a2a668ce35e8ec4f269640281b68de98c5bfaac795c40dc79819831d6786410fa82d9a83009a0a2a141a5633c3796b6ec05d9f002a009f22d42aadadb22fca2420774ced22207965f408b9b305345af0505f05bcdf18f3a217d22069680271e1045e15c03a3473160260959b49257380f8005d110afe41beedd46d8c8e6003eec1092a80b6f88058e0c0ecba930444de1ca579e2395c19de35b2108cdaca8833c5240b70d72265b0c81bdcab7325a0291bd66d8b53a8aa44247549d3d85d35ac29c5d1932cb44ed585de9a279b38469c766b480d1de0c7b3a034921ff4df887002708fef6171da79412063eda48d2408ffc9c2d52bbea0d83cbd4e15d865f454f989392514c35a141a7d95f3373193703bf8e8f0c16eb40ccd4a8d43baf941ed6327a9bbf17095b3834a43cd919e39ef07ea1552612470f81803e12ed15619c65d5211b7d4370722971bb7304f5962a27dce7a110c2d356da3d98bcbd6754e69b59bda262bd71a776b2328390cae2499f6f338d4d9fee3b43fd14aca8b5401363d7878138cbe4f556cbc78cc255d5610ced57fe4062428458ce46a375916fbd70abd70c1b1b535a6a0f3f0c4061659cd602466c5dc1a36b10510665b81d19916ff673e2c8195f2da059fd2d18339c44aaca84b1db4a19e2b006e836eafe12b53bfc57810668805a78ca8a0c9f0dec60546ee201c46c359e2a43eacb7d815b2447260cb565a68d11ddfd44c041c0a8c92326f99d72e02c51ddd00916d5b710f49a1210a3056bc059e331169133b031e4f5b15ef482bf34ceefa177aa5e9553018e3f80187785fc1d075f036df902516948d810cb2b5528371c03227e8d97368c5f70a056181ed0775777d383d2b1508032a28eb62173e0a28f57ae5f299a1a6516787d0d35c5a11ff29636ceaf76135f3820678c9c223306e21ada3ad8e15bd0ca4e4435430a48ccf85da6578c8a8e5fd3e4323abe36ad3e689bf129b1ddea8095a4603ca397d790f93e57d9f823ad2812b56d155dcdc595fa2c244e7671ceee34bfc0e1c2c1f39b3e0b50a84e1c378be82c5a07abb18a2f4864e9071132829c9a214ca0269487a0a0b88c84274fb51e5c496656961c748bdd84cb84f797a7be679d52e813ab1cdbd1f61751500fe62944821427459fb619e5af91d7bbd07705640746a1903b14bd80bf12ceccb980a00059c613d3207c6bd89dbe3ab9ed37e59deb1c4626db634a50f765d3574889eea47801a7f79e903383521b26f7f19bb766f906abd1500dd636ee8f04c76a22d73f2da394fae3133e8d2cf6e6d9780218d219cad0fb0abe9c5840062c231055dbfa733bf995301ee5a8d75bd1a5cc30d8e6227a1460cf81e013cab381d21e82c22d1be07054a54d66df2005f68b12ef2273afb3eab44fd3c46c47458005f36748a9602e8dd91b439493ee29cac7c2c1d83813c74fc2887084f53d371023e0c55ce38c0de8fc5af6a22a67b0a5bad7208d79e281477d171863eedf72c9a57b1779e57f8371b8ffbbfb6056a3f3d3c4af8010b56ef6efeeca73e83a5c319dceddf9b82bd5bd302749a57b0998a4797dab905f32bcff560fb30577f935708f3f39b55bc8baa221a7b019f93237a364f733cae42b452951253c6839e1940ce544b58869d44749cf2c94c3011197f9583c979b5fedc0aa51d8efbac012e8d69f07baaba17937efdce1b90ab77b7c45bab6201b1a55ba70f08523892317129911d0a3721f2bd921baae0a15f37338606e55f29bceea17dd20f279b546af17e36bd4e34b1380663bdf38533fe9101fb898cced76b96e9750604d670fceac10fa83b1369d680deb121422c0a186c51a8a3df5206577e5f1763a8e325fb13909383b65558955de8180334da871f1624ae7ce2625e46efef1c7b13922fdcbc0c46671e95a1025572c799f83316f715c9a9cba0b42e0cf79acf208560ea0fa9094f6bc5aa9984f27e492c06d8880b251ebafaa616a8847bf9f5b7e0ad88a842df0e92ba25c513b290c0823b431f09e862d52e72f15a135889d2b7542719fd4f68109cfb93f50fbb6b83889ae6a310527e953fcbcd810caef30a85ec6530a237ed0003a6f6400b0abc9eaf0d9e16518c14636851234500886a3000ab5fcb338788224e7c2fce5bef1991efd6b730e172d03080c06bfc34783a96cf20d7701981c1c54d9c8e5c399c360e0931caa6049dcac46fd7c4cfbe4acfcc75301768a087a7c4f0149226828ac98633d654bd91960572aada26b64607a8dbda7854fe6e5e7acd3dc37c29e8f104428e4726d2910e1299fadfb2f3f31b160b180314962b462e53c2d5b3e923a1cfdbef03996446307a1de847473bd974f8fcacbe9dd0e879a6fa8a66bf971fd570810b6348970495811e2c0a38d5de4c0fa43ef1015ef3a3e01608bb5caaf5ee34ce4fc519518844421092a19eee21cfefed5ff8603c74f1c765f634038153bdf6ff43b92e340cc83c6ab43193cc1b4c7c018098e82de81347c3630917131b451d319c627b01d2917111ee12c95fc95427c54c15209857bdb60384298ddc8a83554753720572c32a113996e5fc6f0ba79e21c15ee00a09206a4ae93a68016ac12e0667321717178ca7e7bea59602fa127858aaf0ba432e0d91469652b36fce690374516f506eba0275d3fbac2254c27427ba99941c72f51bec57490e99e50cfa5ee04a4d9d4d73220f361eef2643c60fba319852b52141cd0b781398438c2697f4c8c1f09af322ad89a82d34c29cec2b2cf11feaa021e2649169a972224096a8b262420675277ad55fe8c7c95628901f269b6c87aee31adeb1b7cbb3ed1364c17f5e1366e95ab8ab3a1db921770f1a501311271452c95b7602825ebb6140d1d728fa8eef4a3ff81357116696d016a0301514f990a71db3f32f345b3fa83e521e4e8448a298b26035d7ca27f174b0032dcd69d4df5bfec74ed8c2f06c37a210ae445039897df1560e6aa99507f7e0ed3478897e8cd67a65d66b750d090610ba9a1ccd0a4c7a4cd6d9a37862a2743509abac49e77c95b1bccc873c9cf626844dc01fc56a508e0281640df2ade7619b538261d1ac733a22d83f0f647a6723d906ba303d6abf13c0d8bd61a5e4fc24c040dba90ce6ee908d4b9f44656f51ab82d12aa5975c9d543057db8577f05f0835aafa0b5293a2d85c98edb31ceef01df745642e13466dcd87c95ce33a2c18503577ee10f3844045ae2c690f51a99ce71121a081c6ec2978fb58ec20f07613119317a9a97bb855647c0bb183ac5eed2e8ddbad80dda219f05eb6ebf2ec443fd5b16e6303a0881944a560d72c85d4d9abe1503f3880676a6fbf565b2957e586d16e03bc57c0c9ae48c05cba1d5c7406cc365ed9656f7fcf25c4033c98145522957d9d5d7ecdc8ba7ea15b45e50050bf94cf31b1d12560232e1c5cc0e05120a1c568bd2d049f1a46874d82ca861564e4348782cf2a8d5df0e1c121b66d92ae96ae42a9463edf196b18713d6cd9d1fe83e526b8aef4edf4e09bb1f60347e2d11de60c555b116a2cd720c15af7cc4390747e432caaaf6729163687cc981f839ba0b574fd386aff9bd32c30e8d9f355c7a94491f3e58dc2c0ec042377edd89eaf4b31c5a19de6ab1fdfb4874308aa53d2757edab1f9dcba7e44e7b3765d54c83903cc9658f16e7aab996bf3beca354b6140100fe8692b3db01e22a5bb321aa3470b6fab63b0af4de889c0ab6317792e8a93875e73b5746c489e1fbf58d20627239c828f582d5d4555b3b562b1b245ae9e60ff44ec693ae064bd45d07387072642ecd1438fa349c676244c5a5e01c115f78ad43109e5ee80440237ac9594c4353f11b727cf50440419bc852682fa8e45868517c3001b9e0dc62c91cafc6d858527c8604d9744d6e86a0ac397fdf0c960031902b43043b72547ab4a2531dbb17663dc30d0d74ac4df44fd4108404565e28f92afd774757e34be09242687db682bdba425e2ca707dec4d970ca5ccd2d806246d94e59f0ebdb68e7f57d4e71dd6b8118299cec5b69838ec20351f16b04a186a79e5d442be6c2eaba2c24169f48affd6f61cc1bdcce9c6c64afbfa00924e16c23c66dd6b489da874a9ebcc14ce00d1d55dd2c903c59ab65cbdb65c7f457039d789c5965985a8eae4c84b0174ae7c29c767069cac33ecd28379463ec832654f615b690cde1fdcb6e46a5c54afb0aa502791c4f91c4d405a399ee16ba5f5a2021ccc37d2df48e48c644884f007ed47c225e0d21c4480eb6aea3d9a91ef36e8139a5fb50f2c14c5465c0b2e7a2a0c13d3e5bbdb57db0376e808a8e7a3cffccf6964c231fef0be2143cdb176f72b8651f06dbf2f93dcaff2e5c25be9e93e8e36cb206e34fb1dd859426d8034da2e609c568a37c1235fa0d04fc616fa7ede94af68cccac905625adb584b5aac560034c1a400bb957f69ecce78033f3e95651596ee5f2690c4ef5f4225283bc5420a88e50af01a30a0fb120ea4b65a2c35e765ecf7af801dfce3db65067ea288219d2ae0cc8dd5b47a8220aa0b3318b2bb492622cadbd337993a17b97690293b90c962f6059b41d78ffdabad42aca1416ed67f30282c2cdac6472484d249637d59e10881cfa08e21d015b3f8038113a7faf7de1f2567463d38fa6ae66df0d76317351f0085c7e743b25808fa2b1f6a5ab04751b61ad9d91e847975b67f7167352dd69001e38f1018025a92dde99ceff2af2c9b020778d4414a80e74783cd40eac3055c7ebc8fcd40f8ba77e10e821b64e539f42bcb4293fb5b971c17abceb9a8368bad5b76671afadc393636032138b2eaccc7dd173aedb144f3bf31412dc5559c12d9300d23b3418a273345dce5985219288f607620c1eba26989650e4c7b8355e0e5ab517dce11979954911ebe8c7d71f4caca50c5cf1978222df695d47abd4b434403de3e49ec9681bee75c6aa21e9df7fa8dc50476cbda050b74bf1c1d642112f0f1d907b8c0ad8a776781116101a9602b00dc83be6b5109c02f04111ad39ebc201d344025c6c895205c110b823829f474aa1c8108debff8fce36af885f23da6a23ee394bc5bf4be79941b4326d85c099867822310ddaaf691a52ed9c9bb5d7a6bbc413a284b056028a5e386e6f7b896190c31a947e06cbe06194c97596003a3699c2bdf38ca4ad5dd185e5433825c55fe3a852ca9ef1dc2b7ad86efdf99ad6886787c78b6fb131fc24edce2fa08a358aa98794d36c2d24a4fd58d1995ade51319efbed0ce489379419ea3dbe2959e59dbe435d87acf4c1c150d40165a842e608d2403184cd1dc7c1145fd0e2460968ce7fc477d7d6ee1a5a0bd6416e19729f7114a22bc0c8a8db81afba96cd9b38649e6e57ec679acb867a5c22cae20c9170663d4842570358232b0a329a1524aa1a5ca6abce1c5d63cd5a9c6eaa5c0e4af180cafdf61c3b84c4ec63e7f114db8d760b9459d502bdb9a9cd328642fb6312a3e14d01e884fbff2ddd45935d94b0e8901787d2fbd5bd0fd5ba3f0f4524136ab5a9102c2026e572fd97e32c1406ebf688cd3a701cc39f5e64654d73d9200b1b91ca5740206ad592f251b843ea8f635daec4d84572f967b58d5ae3f972efefcfc8e3ce5d6143da9893ca16ba7ba608b81b3f1212f8aeba52a94b3314dd8ac7abc18fe6a47c8f2225ec864b014a568d5870bc3b09b28add1196cd21d8ca6886b6ddc5744fdbc20eda86cbb87b6d9e0950265267ded2cca5aa93a3753bf3d5c6dbfb945c9ecddb5b334bbe75fc987a815ceebba1bafd8de9311653cbb454aa067b5c5f1676082b2ab421e9d3408bbb218420b8812da2b50957d6aa86af24b03420caa52881063505fdaf5be39f06f678998ac3a4736f5c26909fc30867f92b56a806717be2b8402496c131286b39688da00b040496ad583ebb4e2507ee90c244629d8932631f9e8263779a1027f263cf10a03bfb13f5f8bc880f5376c7fe87300543f19580722a8e815638c90f23539ce7adb2f9c5dfed0c7189c19449e990b4b244d952f05d710501696af2e4ada13a36e5e86681ff9d2978f647c96c61cdcfdc3703a68502250f18d737b16172c51d88d6365a9e0e083861fc18b9314164b08493a0d36e98e3ab8623c7b0fa179e8c81d2398a382e8792cbfe36de50856a0ab8f25f7f3936996618581929ec2a9c0b897efd399d691af0008f199bc9229a9016d980d8453280aa91c752842f1f183b74e99e620d883d73a5861cbd20d1b1b64656e8b2426d62904890384c035988c7a0d80d112f7ef5dc06432c28b87c7d62586ba3a2f44686cf6254d85e6a72a53acc42ce3f04288ee568a7c9e7f35a18c4117989e2fae9168b13327022aee65fe89308e78a420d12fc478e8840782363be94adfa82917b9021df0d043355157e175ec74153ae3d4d69db5eaee73efc9d45f1e12256aa1fd9b689702e5870f4d3089a7d8c702ebdf875828e761fd9b6a2330b660a0fe55ea5fc2430626f9c914ef91151e833bac7ff90705b4e4fe45c3c033f357882212f9fd189f7ab51b8797ad8e8ab95e977d285678e74e3a1424273fd789246ee110b6d0c16757b750ae03b11006e5f6858b8011b74fcb8dc62f8140c0600178ab73009c8e6f72e63a53cafd00e3d480dab896ac14824370a018d61d5c49b812bcfc61da051a9403baa229686b753e6cddba875d744ee5bc27e356994e34b6e7c3c3c75afbbcdd60da40afc6bc3cf43399189b6049c062b4be03c644e259e20752117554917f12dbb37077a472a7f675ae67673fd237ca19ba3646e6ad90e1d715a14249e8a6402803502225d72f65a2a39afbff2181f026328688e0c92cc2bbcbbe95740dc84a117699b3498c15aedc1b9bc7553e9af2f01c1170b86ddbe621aa520f6cc764ba36483c015e8c25856b8062230a878201f05c2d7a4bf50782a5d0327d28559ad0b9aaec8f89632e00ce1bd0963d98d1043e9d4878601e4193f5d16229b86bd71f0ce610ec951875bf0f58936a18ea656864c06df17c8ef3407180e12f57513a772bc6d7eddd405d09d10b1634dd99b3e4552ddd4586b0f24c043a4e13a526cee573b830f0f9ee642cdf822e69b631bff700c7e72c24b678e77398fed4a4463e1f6a403cbd126449f97c1ef5651b9978c6eb0d4a84037ba7cc8a98fa12e0522cba10211d3503946bb78f7b2b99a0a276ab97ff25d0ee9051824c53a03401150c14ccfe5c026c1362b3454ec7da3c3010be9884f5cdf800ba8fec84287f3d23aaae385eefa9e46352776692079a532c2606c0145169c94d4cda4c3c4541b1a3b893daf5333871644b588bec16c2e29763253dd7e5e83fe9f1e233e99b4861d91ca0584df049aa82efa8f8f31647dbeb1ddd0cdc29ea23b5fd435d4234cd068e046ce706e5898c998df1dcf1ca0343e7f2943b63780a76b373804ede7f54703da8655999a679ef6ba80c7360592c282cd890bef80f90fcd3c2324f129609ddbe83f278dfad00bce0c7e024aa9058101ac2a8fcbf47fe41cbdac51e607577a629b4523c01e2c06bfb20df3bc461986310939babc6c4d2064cf8b1ef3738c0e5a1fc2b20b5c3b4f12c11d94b05a11503f2edac8b4c54a54df567a65dda77bec4adf5491c094ca45684bfea89569f48c6c305be24a33cb2b3248a8a4bfb7ee9150783dfb4ed615628c15be9be87eef83b88811b6965c55139fa173639135d1c72dc0dcb84fa39892af38461b12630f341eff19ce98a9bdba4cc47f44717f079c66453af6e2ebd48eb3f2ded6d38cccb05f2bda05446f25cc4c9a89255992e09521a79fb4fa3a49a096006742b57fee3d4e3ee28a06184c96db2526cbfad217b227a99c3396745f124c2dfdc1342a7424482a7c96d9d09c7447de99297721fe0dec98afddf31b8c86d88101366130609f07f07f64c33704b109bd5231061f31f49135066571144b1fc32c8f6bc0f90ae363aa600070c95730a7c312b0c4ff421026cfe324ecda396d3ccefcb34fdac12497b044174d8055055afd46590a75b7a8d800bc3abd5a614841e46aa2347000de899db09697a8412e25ae748173d1e1cdc9fc5762d7aa12cedf61e0dc47a4ba28238252b557478c63127d8b1425ec971210fa46d18fc3288fabda2683b1580a2a288acaf98a040ab49b50dd86ade33f462c7827d9dd500be4995c79575561c82cb35e14fcc126f07229c8577f724309b2487854806cbca114baf61f15550078edf35d6ebc814b30fd0c98b449402194e124801d569fbfc071fb29ef6351845fc0e1af7d50b7f93c3f658fc9b267e0041de621503721a5ef6fc82d63298c5f9ce5ea5158767d47e97809a36d003035f744a62f60e29cc4226c61e349569fff2ce3c8b295e6cbedbd6ddb041303443e944aada4a2da59cab71e56e60e78c73a81a8a2bfba0c7479cff98b19e39226c223068b8485a3b32ad4890ee963eda1d57e6693c547b6693183151f569211a53999084095412cb90788643961348072022d0799c8cbf246cac79ea5b005d032e0b273e5e8d6fbff1eea43ebd3fd125b0cc9d9e974533d7cbe7163f3c0030d5bfb732aea3a900d040d0405b79626db572ad45b0795aed5e4dbb713cd8b1ad1ec11f46b1a144cbcf81634eccc5d595ca212158983af620425ec7be8684910225032be6331ed6561a813aa756c78f17c35844ffd809394049005a18e21a023f321615a83d8fe9549bb3329ef167f9156366d42f8dfe55bdace05e7e19e13d8890991b2bc9daf6b5bc52ecafdf03ca37fc85fdb868e81557bc48ef5b3e1e2c7b192bc64ca3f3a6f61e4b14411e15c761e1dc3271cc7ad16828c70685323a00067b7441704ae2d63f55eb93834afa09b05122d3f43746a8a71c69dca2cd39c2b61cc5e48b29104c1060971352650e10b1c3c2e4e0f181c786025ac40bdcd5b592403e476df05d378a3c74a0c5e0b7f56c7607e39a562b98e42ec53ce6fd9ee88bc5f880c84655199383bc5c2b19c31608cd9b3c7465b28af72c9b529895789a94a61494320de2d056279e503645fa9b12cb69d9383c0308f792880551b8d3823fcbd817512bea07e4051b0ad4dece376033b4f465bb4ff078e74352e6710aba8ea4ea5fc63688966ab401a6e39aa494fbe637c890fd9811b950a45a7d095d4c1a9fcbd0cc084e5af300fd8f08f6e306c629125dc86f8460bca0d967d5f3daa0e040ca8351696094d17cded48bde8fd06cee8fe4b794252e16fc6e459865c9df64d6e7975aa1b10f51a6c5544f5693f2aeb5bf07d1e3343c3a6fb35fda00f5f84c474c58306573bf948a00e2cce361ee8ccaaa987cff6b059c7a19b381286c78e2d982309d1d09fa7c46a57a1f551efc73a2c0c23db5d19db2b24030cbb4bd761cf6a49a8aeef9eb82d90aa9654fc9402c2fb86397a76855686566b475b4421933c0e30ac4b8e823e0c7eb411c2815b3b1d884dc4624ea01c3bc3777070b00e6c883a1d29cc2a1931e5a4421919eca18cbddb3ed7dc9c330ff1b01f114bffa5940c5c18805a4cc40967f4d4ce02fe9bf3c0ec113be4a1fc18925e865b8ed56d11d0a6f5bfe1060dd8904e86604fe0edb36ae1ff02b13d793c210bd9cc1ced8c65c67cd8d730cf8e7338b748a8d6bf30ef9dc2a98bb6bcb82317c4104004cf685cb679aa8822c9a3ed45d74bf282821e56165fd8944c56703a963a03e4146d6366790d85f64d6cfa6ed31cfb50780cfc17540a612481332e1035952e58625525232cec5184024162960be9ea6a9cdd37f024ac26ef331d2fcc9ec9a8d8717ba453768e24485908fbd0a915683c97b45531f25d13f6c74887e426d94562c7fb2e43fa3a13aca7d29e46def204aada4836ce009c4117f4f52673b301e87acb42e20e7e0684860694160e1c81322bcf77b8f1860350e92d2205a8ccd125d39839356234f23b6a67f251b8e3d2f61909e74288924585f690adf34f93f872602984098040173be1f0b621b388f94e45562119a1e10ec4062e7b83714e3a3bdde3a2a97337c625ac84ad135009a359d1a16b0d6703e27b1563723a4a4d67bd9636120942a719e63eace6343684e3e0319489e220ef3faa9797448e48b5401313da4e5b2eb7b01a8f404ef6df277311694380dd01048798db24c3815aad8e7af5b16741c44b7216a26c94dc3ee629a7eeb36b9e2a473e2bc01650c90738503eca8b5b5717d0a1c745f9cac77549338a96b7e034271c6b471c8e79bb773f8993bf103852ff64a4de7077f7639e1f501b7d69af184788400ce61303a77895aab03a0d38f9e0ba1edaddd7f55dbee22f170309b48de7504c0d5463c4e1ea5d0b0454b9040be01993f20488ea2e0be0af37830bde4087a28877b80204b39f7bdd4114d47f7eef6e4ffc221b4b42cf9a2c4bdc42d75b5483ecbb583ab6c3f74137104f277a717e3a60e32d6b7b3700776e99520881f6164b4d7b54d6721c444af60101844c2da0ca0ac0121695b6a0ca3899fd0205badc639c88c7c831a9de76525ccc4419a3b942428790e33e2ccca9a578febbab74ef86b47b16421c0144e2080fa0f3571a48ef07a3d4ce3a2b99dee07840a78929f0860bf49088177875e48859fb3e0e43f727a5e9119d8b285c99d24574e63db858e5aa002e83782180852583453fbe4f96c8c52773dfcf113acac2286c21c5100fabc7f10851ed4735fe6193e44e4103333f244bc8b18a882899ed117404b575f9db74d98f9d64d5a757167e0d5751284a6c0e7b2a4ed5b01d497fc17a2fee5d4340fd747421553494fa92b03ff29af0c37672aad1f65c43f9ba7165d8c80d60ca205d86f9298c40f1c86687a3df98032b4ba7adf4fd6541d508dee5090eac50e62a4e69c542bf98d81742ecc0c5222d6a63bae9721738963278b472f5008d36f4d434436e3a23156268ba8b4d961f0ae1908368f7542892f288317c045729e67df718ad812508b210eecb95a6daa48223bfcbe87c82e9c94c460c45fcb38556ceaf27801a978b2a116bb6b79830402e106fb08a89023e8d860589903d260984a361edaab935468e8f5a52bc2b5715596eca83bb2b32be783dc208f84e097f3574ece3ce39e3ec7d4a1220330c4c0a706f56ab48e926d64944200ea0dfc0150d26a29204e0755b271d1b7cdade6d28907467c23a0168375474e2970cce1b6659210fcfafded110e82a4e41496c6a9c6a48a02e28e9648519b2e460e27625c368f67ff6ee8b13d239606839fce69e242889c38b3c820cd3d734ed3a44bddd933a9bb5d786ef39c140188fa0a8425d347ce73248ce7dad94812151ca7edc12cf7261bba6aa95bd1df5124403647748252c1a27e2438d4e2ab8738ade55ee83f937bae67935c2d9a2e2dc8464e0fc2c0fc79d06d98778fe492337adb3995b7feb2a3eb09a239d0e9753f1532627474831b03a3b0b9a1f5001f3e8a2ca9b74438fe885950c8c62ecad94cfef3529f8454fb5a25dd8c9cd541e8ac7a01889cff7deca545cbe568204113e4920c4e1e48937c9303a2f88c58189c750938246b704c3e124871026f4dda7723d7a83e1bfdbbc98390eb574265a7def22745d77a7737e5629ef055580f5a074c1f845a01230a4df89c0494d994525ba9b42fa3aed8465947e56bcc4e6f6a432c6e6f4990b78ab7c3aadc4670a21ce25e39e54e6a1c25a0322da0feb046c01b88aad36d8fe7f0a510e4a967e228165a56f0edd20ffae349a35843cd0d42612b12ad128c4d876862c56b5c56fedea59b76233c6f7922e818ea3e7e8a7d19014a3ef981ae97e09661c9060d025e5585f6aaa4ad629d125d0acda60f57db36af6b0902c5c6aed209e255d3f9f2620bca942d636c04e9b80aa1dad843d3442a95ae24be129104d95237ef0837955fb800e196ae6b8aa9bc0df6ad0f9006ea1d8ec66f06df74c582ddda68ce99c2f6d6779f4157016458a442670fd76314176d5f201a5ac472634221d170a6e6d5de8311df3a81e3305e8a350864fc860855a4287912863bd6bd83c0fd7571c8e5a58e31841f369aeff0d08ae188fff846c57fd424fe7637869bc9dc8a7273ccf21af199cb9cf2a6e31564afdb4554e62f975680d138fae14e607e6bcd1e11eddd345e7213b2e0d06af3abc4415c697e4f6a3c157de7bf374590e330eef63a6fc68e2e3281abe0f07c5650e3b3dc98d595b3c54d369dc889ec54786544bd50bcbaa6488530c3ab621e78fe958fdc09ad8b0300bd7fb5473a6d5fe77ae940fa08fd41703a968dfba198befaef91f4babf64630a6f733295527beda7d4ec78d60016b1ad25cd642093251471b29ff8c5763dd7d639e7345cfdf5250aa6e23655a250f0c3f3270783842334ca0946831a07b6310e9d23b096de8d059060d7309b11b994a6ae9f2d16c9b9ebec361a57ff0e7e0f18cf785f3bbaa3f2249c012730beb831dd1673c6fda38d97365ead8a267d9ca1ea5ad93ae397e6800bb77d983076ea808090fd02574c7a0e071fba75a546180f8fc578c6edc3221db253a29bad2ac261c4414f83e2acff1108581c7c05834427baf76b0ec6d38a0dc60b1979dcabd8d4e5ab6c4d09732f2fa07074a80dbd278f57f9242198a7510a329870cc713c2760b5bec5ce6683f18ef1bf2fc889de3c996ce79118c07d57cab1ac496d31fdd49eba8bbf318f830faa1d70656bc951be241a2b10386b22e3ab6b6a1355a0ff052c87888876cae5281a54691868529afeb2aed14906d48070ecf5ee69d116b9eade0b396f0f57333a85692419fda189b2ecc9810efbef01a4c9710f754391db430ebb930ae685072e539cca3da4c764809229ad61eb8f922607ca400edeae4a8ae699eea122c12fe5913578d29f5eb8b5ec5f4106420f49356036ef53715427c80cffa38da688556f858ebd7c30983936305be7238cbe6c86ab00199415ae32862c3ea7d3b40ce699ee4f4af755a642761244eeb631a371ce992e37b9dfa599226898285da247f847729f6aca1690f79a21f04462b03bc5a75ab09bfd187e8db3fbdbb6b475d795fc76e8b7278b6e043446a650a909e00e31c50c2d68c08ea5c18733122f2edf433604eafa66d7c73eb4fb9b37e2e3f65530a490078ce9680663a5e06b27b3cab8d240ca4abec0ee51fb9169487f15ac5a0f4d18eea1bbeb196b62ec79db9bc80a02c9ca8c422a0ba2967bd272d1a068923b6c5d6b1da11b450e0ecab4f8c84c0581257f3e6f0591d46eed2bfa15d03f3e38d4018a4e04f58b20e27c6c07583ea65c23f73c0b8d294f0de67a060584cfd2efead04a5c2a39d47a4cbbe7482b3d981adcaa0a14d1719c8e81b63c664ab5f3110162a267ec875e4e1a9864ac7bd1dac1c1f0ceee9377031a17337a3175d7559421563177dd65191a31829f468ddf000f0537c742173cb17dc293608d9b8587e73b05deab934d5c34ee1a22c807df60ab0532c241eb4714a3ed7253d8fbd7c13546ec805a46dd9ef5a77ddbae9fe3feeb494d5c1d3a522741e73ed7d5dfaf4ada60aa8f4e0a7ae2bb0ca812135d7360f9e5bb3ea9c8720baf354fd458576db281bab1c9cfdb372f5007ce3b974261a0932fef42e691f2f1c315b86a065a00c2394b7d2d01b08200ada91202428c24deab4af4c50abcf4a5502c69966b603c73b84c10af85589458dff445e26d5f8a04615bb76cfc83c084e525c2d25240449fd758b5942dc6730f5c0a30752e9faa7737e04f65a61850cdb55791960183524b42e795415c43e00fa27388a59b6be414acd7b84cd55cf0dce2c6908b698257c88e21a24da3e32290f750603ee926403484d1bf1ad2906d0d2cc17aae6aa874d31c6df9c1dbf8a33a623820e340c267fcaea1c365d21574173e0fd1c4aa43df9c9526b9bbd1abe466d53b93a2aaa61bf66271145578b40ef5ece553c156013638aa3a2e3b39df56ee00d21568f5d8ef999afadba3f91384a9a89af3f09b83a0dfcde2487c4610573008be5010616a55f91aaaa1d91b550d8e01b4a3a0a70718e90f81b7388ac1a6e5fff33dbbc8631be27568682857b7a5624ddd0903b27993f0d0fb1e80baaff9e49e9460fc0462f1d44dc2985ddf40965644c22c0d47b81135754771d00db7b3a41b64ac6e5c74779d70bc8b279b33b054bea38021a2bfa5875fbf1497e5ed0d1e1594ede6c13f4897690a2ecf60ee82babb529d1961e3b9f38654f8bdb84bba6962b031c789eb23b3266cf46615cba0f68d9f3cc23d65b0e4a5cb2a4574f43a5448cdb560485730b7e10bf6c97973529544d0dbdebf150cf8c783b045e6b5f52a6991f8d0b46402b6e774042bb505a8caaa8b90302635a32734feeadab5fd11eff6a462d5771d3285607b3b40d5b9edb05fb3ba4d466d3c968d6e225a6466aba75dab2f2041d5446904b2f5a30a50304d66df2d99cba8c60febf06e20fd6cc3bf8334ba22a68cb0ddf6025e3c4eab87e91dbaf70c78e1caba76c4b26c24c37bb4f73a7a765ca722b486cf20ceadf3512174628fdd0e7576958b0b5d5709ca6e2f67582b57a661736f7acc1c0a7021004bccdfd9449a8c8d2cb610bc7adbf0da6eacc0f220ae29321a36c9f1f48dab9d627d05c6c7766b70f3d6cff22feda362001a81515a2cca7f1aaaa7ba6baf79cb630220eb6df669190d5086cdbb6357106f46499576b49375c877f1064b71a3142ac2ec33b24df799e200afabe38b74a6ff54600053076dd21e4e203376a3e5c6ea27d16bb6bb2b36e27efc565c6cbe7a7878bea98efdcc200b420dcf5f53f2cbc91bae480969498ee8c24a88a5d8f5b3375cba09ee476de8565796847f3b6290c27b7741aaf6a5b3af02a1a93fc1b5958c09c3ab9b88d90e71c235469f3a8b3d93224e789321306d8be21026da3414f25b47b1308edcf65cb1b2acabfb1b6a50dcb48cfa2f5fe1d4586d5a34d3b4e906409e4c3625f1d801bacdc6801c96bdee97da7fe99d2f8d3f5c266c4ea1e29d1b43e06d2ccfe5ba5f5b3cd2cddc9ef9ab375e5f56afa3fbb216be51aa45807ff74d0a0a1c32aa1cee522a890cc059030e1cf128549a2e2f38ca72d064251b8bc860262c7ddf1a534a90baa96ba8ed0d6c7a747ffbc1f265939f92f1e96496c772588bb4a3153994fe0d2d26124673342175fb8243e1ca473b41cf3c2ec45db783aad523a25ede668dd047ac842507cd8231eec11c28ff85fcf9690fdb58f7f5d4030b83df749c0c59b71960d8098be930f7ac8555d02b9d9e7e8051790cfec97987ebc5d967cb2bd01ff2b34af04c304c17e847785ea1ce1cfade00a994bf5130b2490af497a7de1bba6d09b29e038c9642da883b50a37c045e286a600bc60091954a5ddc462eb9852b527b0da09372c83f259b8b8d398492197f25c59735be51666ff7be0d3a6f4ecff06b3670e7f36fad194920fd24e7c0fadde53840b973447c49b8408fc0de74e311e070abe859e2fa864dc3ac2d348a9fa0794aee507440f3d9059bb782f1f53d5bdadef8356087cbb31d4a988a424761cfb684b6650bc31ffa763f601059c9e252c34e78064278aa83a81826c2c20cf06d6a1a7ee58f9c40491e5bbaa381c3946e4d1442ba06a8d101892a12f85faa80a513080921e17faf19d580a3fe2dee45bf73fe077992d29d38334140186d6bf6a6e7fe079891d20202b98f688e7b55134a02c02e9fb5f5a85afa050f683983b961b5144640e5a73c02230abba23ae417537125baa2d240b862c72a7d46d64565dd0a76d3bd253f991305f33a472651942c798f6b7a09b1cd838aa112233130501eff73701f4a96299cbe1dc22680ab08e6445b2487973c8957f174822704979e788197389ccb674e2e62de46b13ddfc0603ac9f288c09ec4517d08fdd8c207fdbc153a71bc3d51044b28d421262e9fa3c360f1a678870fecec321183c23110f2f1758ebcfe23c3c33504bfb11aece8747500242c08c08f02a40407101e131e25ae10d9fe9f029c754919d87bfbb4d1be246e7ed928de443e1ddf74591c631474c13e4e96328758668d2618eeebd741376a13d52ae8ad720a1eca82303aed904a0a45f161929fe6109ced48b50e19ee8edb172065e8e69c0758a5376fd7e3e45a95d54e923740c58ec691a5d2fb374859c93bc42ac9955978f907f3b6a697e4e786bf4834daaec3e8e9dab608530d9132e8699a52258a2d11717cffcaed2c6509ec638f9be97008bb4ac7c399b045c81e37765d46d649a66bbeb1707468fb52eae6c58d3fbfaa41931cfeb816ee4e631202facc8441b513a1c41517815f414a6ebf43df03efbc9f0557837407380da09ad74da3752c035d9bc0118837c3b79de515e54175fe2d206e4b139a90465e720d0b51db5198731d91a08af6fe8a1e2c2c818413db3b15f9b2b931f47484e3212a0534746f46f669b102c3b676f908a8940a545a4c1e1b472764bc0e5f87d215a24853a71f7f4b0f49811fae02ec34b843831c0f98ba30d7e63b709fbb4b0e9445f3228cecf1675e4e8d4980c8783dd93594607c40b5f44d9febbcde7c6ba56ee4d9afc9b2cbfd2163eadeee69d49b1682af9e19af0521485187956bb0e4f39310203abb5cdc56dcbfb5a1b99218fc12a6bd93ae873e37123c6c93b55e5b6d42805fae83aaaf2dfaeab78bc0c659bacfbda33d10d577918eed207493ae38d4c9088c5fd090b06948e1a90ed34f91d0dc59b94440590b613902669efd4e4b8c301f1c7e4f874e3079528123ca4e32b3e55eb5b398ad752a62a01de56ac375b55470dfcc233b033a23b676892b9db942ac4845678f5e951f7c7d3cc77b7d8d42a79b6c0da944befccdc8c6fb896810df9244337cd9c75804edef2e928800dc241ef7bfbaec45c96349f065e218080264293283fd1f0033e7be6b0fd0c78927446b45fc1f07ff3b5a109781cfedb06bf71ad64e13e11576ff40976559d43634a4df9c7008949faee2618b825da2a1ff03c53ba17b01d8f87567620fef8e3bd25470737ab31f363d70d9acf70c89cd56a54b226066bd811e26bd36e81da63757768fa033a8370015a87e1891896187c0a3bf32da1160f9cc8d9738bc572a0d44c7de1ac2dd1a702556515f6108704a3faeb00c1d837a499d203d4b62e9a9d106ebfde54eaf0c3976267a4b644d4f67619bc8a057d053a39741af003d67e27ae98d33f380cbdf8e4581c3a231f9180d72737515d760255ea180a2fefeebb1d52663b5a7ed8aeeeaecb65fda17a6c21f6ff18eacde583356604a8971a8ac1154219859bd95e72830ced500c134e88236d0e2a67f56ec403828158bd2205ea54c3b941ca71a0c9294aea35ea44c5f8ad7fb174f700f682191df8a4f4839d204008b2d5dba4bba788a1f8b4b631e44edd4282fc4bdce20a641ad423aa5a0812a74a6d72183610110ef62dcc5f3eaa7a4434952beed321cea95dd2f4fe96f446f53ef4396a51e07ae3bc8cdf91bd541af2a61a9fe5833d815d6f82c3eda02792c7f7922a248ca058bb988767cee660f1388bd5d3f7e01b18535c982fdc09f15187c0a9c8576ba1cbb207e91ae0a2d637ae10ad01bfd74a717935bea95fe9d5e3c7e012cd2048e7304720e571040ea6ad20148a4795bb7a32010b8c7b052f1bf93a3d17b5ee7ade000e931177f9bc4439ae83c9c0e5ce5ba84601942c83c23603c781df883eb3fffc30a778365e31b3d627bf998fc81543a4fd62c516b441a215bca1d940eb00daa0e3d6ad8445fab44ea7ac124518aa689e254ec1d15ab4dc5b3d3bd3344a448370fd56ca748ec81eb9a8c09bff556c8c5889157d21c33735dc62feac3b16ce315a3c4315d9b3df65c8ec4611c3ffb9d39a3118eba9628d5b459a6693349db5615bb903f2c098c536ae69ac6ba619cfd157b38c3304b22304e518891212e0b3b1f3639e198c09e3bcdc0a356eb358621cdec47536ae674a4ba26adceab8b97179288f5f9570ab88826ba61c51bbc847811f182e225023bff0af3f24255868a0c15151a00815de2f5245f46d8c981d70578007300c171c4895162d4878b3a9a37f903d20e694431d61aefb931da50f13834c77368f81d94e632ea3a0f0a3b8bd67cde6033669e4b4e1cc54039272756629a20388e39393f2de8c379f3e672c1fa16d2c0c145fc8581e6f9cb14c51cb14fe62d0cd4ba327de64b06767eacbab55ee38fda4cfbcc9381c664031c7374cc217b67eed5c5cb8b1714f225022919e8be52605f54c8571806d20008ec3c993276eea02f225e4248dacb08e9c381d705ec7c7961a079318e255eafa71c78b0f33854bc8114dd9034d0837ac13127e7f5a6e2a618153464af1835a45367d3646ada52d7661cc54e4e4afc859558e9ca165925abe0b0f3e06c6cbd62628e9d9086c705ab39d29aaf3935a5b408918849400ec187db895de129e414d3020b033bdf34985c48fe70573edcd5bc5d5d2961b213636a190fa6becd469e9d585227113d37a8c4d9d8862c43f442d462f6ae92446cfb0dcb67d868810b6c93d1568c869d9763c8908da16692449c4409ce339e074feddab8c68d3b5ff24a8a7dc94b495b9e3361ea2658870e7b9b89e97342fecc2f4c37c1451f18099405d4984f0aa70f87859de2ab18f5e16657aeae640becfc6c047762364e62b1310cc51608ba7648109ff0d52f5f9120f2d5cb69be96ecbc2fa6571076822e1107b2887fc538ecc459d9295ed929b62156915174858166687f45316633367664a4145cc44a4fd20ad98504bb2d6c8eaa34029a7a4126ec7c7561ec7c6744b781ee0b175de9729071c80e0739e168d5db360376bebccc6ae7430ea619e67efd726e4619045d3b33b1158b8d3c3feacf09560a9b70571a8703aab2b9b5e8bcbd7862632b1477401714d173630c4be02b28225f854daede11b5b8d2b4c9f32b4681b1da3b3c3b3b558c521aafacfa15a3c428397d78ce53774c338debdaed2bab704d4e73f6cbb9d99b274787a78a5e1c23063a6089088d90e10664d8c445f3d64578c0ce87514439ee3cca2b69e751a688f295a4994a123553edecc4787073e2ae746dd645cc766263952ae209555af24b0a620a220a61d36fd894821836852189b893a2ad578391a7765333e560e4df66ca22eacb750108c0954ff2d8410091af08c082d885195976ce7ec531fc798324622f3bcc5451cd704c4c37a519e5fe8c1ee08bea5aec3b773d8cd12feac3c57ebf2fcc517b3818efccf1c3a639246b9d5e22b5aa2c4a8ff7bc4a3dad35d0d7f7d41aaaac751fe78254437d8f2a6b55590a3deee3547adec15befa06e816a552a3deea36ef97b4824f053aa87e646fafa1a7e7a518cfaeb25520df4bf5885fef5522452ad557e4a255ac99f1b8c3b55366d36a36348b3b49dfd0bd3b59994ed84357476878a61e4cf3c0d4d437800f1c3cd2f6af6a30e119000b1995a101b1786b1cc4e8dc3b594d3c8336b41f4dc185b0122e72491183934c5cc5c2ec7b9308644295eb66b2f3bff97d2cb66a7d88628035b86f4c24e510b3befe160bc8d9bb99d7a7366ad9d16d325b853ef687956bb5b5689513377464e0d51aadfe82a492443366cef78cd1b72beaa0f273e217fe6797cb89903cb84695a4735ae69b8db150b00d142c866e2a2c9d4b7dec0bd174b8e73544c5454636cc6b3d30091675f140e8ef17eb82feac3bd2032657e75e164653cff25d29439997dfcec5212c921e450e7a68ca7caa2d0f778955adfa3d60045e5af75d6504fab9c3eb34ba4191598a95089963aa2d6d7c64d330d10c3a62f9268f6f9b00839f481913e518449e49698d50f377b77560c8106ac15b236d6402e9a4e0c34cb98b2b3ca4e8f5fb3ab2f924a8cc2dd84523718771ebb8e5792b69d991a8c5cf9e6346f5ddb994362941317cd1c5351b51835a57849118338a33dc6f052d2a10ce26c1c41183ecbc3577cc5579ce3dc391793a26d6c876704b5880ea09af6b203c42caf247cd56ac821318aab1944be92442e8b44d3e63856be3adfb3c178f98a9d6e6f8c93a96953b47ae9204acda10f377de61cfae7c5dc97a312a568da1463553c33dec9641bc7b33397186852c0cecf9e0267859d5054e8ebb9d6bae5a775beca62f7e1c48494129244bad3cc9cc2793161cb754ee15431ca8da858edccc89f1a8cb3ca4b5e1ba312b3d1b47986af9af68569da1cc7346dde58ec632c369b1dbc6ada99d9fb97af667ca6952346c9d6fb618bf2196683af988daef119bea106e62b3ec3b5ce59fda29a36e987eb99e3abd8735d1bef5989451305ec6725992a4060af1835e2e650332d71d1448281e65f381a4439f29c8657d2ceec4c050191a9787876669f62a4cffcccc91f279ae9659999de4cb189849d1fe5cf8ecd07e68b82cf7c625ae9cba2976c625417316afae0782a14316ae6c4a899db898d135022ad449231518aaecd442ec432638af88a452089a668a666c6b3d384246a55297fc07a99065604d209599bd578b868a7f255bd6112388993e3ec9cc32b89e7bcb4d3b8d98c67e71fee3fea0f37873e731fee75e6c4a8ab31b633e3d981d7e02b0ae0d818af183571b2269b4212f1d891f3d9afa8868846934886187545313a7e5df68a51585c918c5416b0571417279028f8e2573423565938aeb802cb39069a4c45022b96404e2be424236b392ee2dcac82a75eaec2ce59bd6112763e87023bff61f191f9a42491f8f92f0b49147efe2301d75c2690445b4822f0f39f185963aaa6e1fa0bf33df1814012e57cfe834212e17cfe8b8ae29b4212d97cfe1b8124aaf9fc478524caf1f92f278968fe5dd138cfeb58545d1b6f6607de6187575277dea171e18c8e4d3c36756df6f9f14bd774ae02cbf32b62c1f58a5225b8e2094414885d5c118cda8713abb0571463e7c30f27896e3eff8191351d9f3dc7a61ebf346d8a2a10a3e4cffc0e15a3903ff3322a868069f33ca83802f933bf838a54c89fc9f303ce5aaef0301aa3238d3d07ada1790e95f2c7a6e61fae6b926939442cc2d8f92982518c4212ed7c5e0c018b2390443c3e2f522189767c5e8c1a9bbac6cfb94dbd62ceced7d42b8ac951af58859da7a9572463e76135cace8ff58a5990e0af7ac52dc47ac529918bbbea154fd0aa57440158af4865274fbd2218b37ac52ec677bd6209ac68859ddca55f497867369bcd66079b369b7d76f9e2690a93e09c943fdcd7a1534625d36edb3e0f96edefb0fd1c1c2ae5cf0db57d9b98edd7e4a0b17d9a1cb66f8dedc7706c1f46a5fc7951db3fa1ccf65db4d5d4f63f96d7499c9aab8fcb6c3613375d188fb5c392a4f5585aa7d3ac0fe785695ad79a2818c1f7c7de0ede122e4cd267a669f34b67fbf3a2ba766567f12c780fd7342f6a8dd1f36830b2ed5e226c6a8e39312539f6f7c5b2bd37525d6b925f744d8ac9011b375f3837c2a63e25393d1abbd5e480e25135cd05b07a52d5eb220c45f1a30c8bc148d5b526a74e147ba86bd2c2a86e0c77bd322960752c16ebf3aec65619b2be772e48b2aeb228ddbd43f5b7c4de552add3d2e486328ac0a46060c0dd855d362d28a6c5f9e54ee8b030dcb55ae4b2fa49838c8b0f3b02e1a4646d73c33f267be456f78b861ba2933d545d7c0b3580c5a8945d36daa69336cd6fb5eae69608551c1ba1002892e9a463b9a2eea5175cd332389caf450f709f6fb5e17b6ab5e4e360d04d9936ada64fbd99a366f7f97eadc77a9ae7dadeffb3c292fe78dc9f5bd319e54833929b07e4b4d9b9f52f7b1e0a1d3cb49ebe11727ac4feca84224ec0d2ee795842cea1e24101292a8cf543015f6baaca4681e9a07f9e33935356dcc7111583baa0e73b4cd4dc783b573b324897ea3c3cd0f9d19374d2eab31c08eaaabb2b3ca0c3b1f7a33e8605573a87badbb6a9a5577053bd3ad216973e963f5f8600fbc0e04ebcd12d577c387c30d05ac37462af7e5ac54d7247fe0751ece6b0ac31f2ba0621e6ec038e161e05e0c80bcee570f0a12048eb9d1e166878e0676feabea9a7c297159090509a56451b1358dc3b0c59ae778d822ec06277f5a20cb15dee0585a18d587c6552bf66ab1b4dd6a7b83bb017383c3c1bc77af617cec35180963e606274267459763f00677f4d93e1eecbc37e653b29f92fc99476e3c2454ac12af03695c04d61f3fc2253d2e69f3ec7d41c2ceffe0226f0809344f44083c844ed6e0123ccf846e8dee0a4ae771835d141775eda4e02ae58f141e0309529987a64d90ba2c5883e4cf3ca11b532548901551ce2146bae1a1bbf162e75d373014c0a66e9662f6def48481e2cd52d77aa925a487bae64203b6038729eb636515383cd91004d148bc09d343b02e9a061bc1c992940e866e055d0c3264b9b97180bc71e20601a20ca227c6c8da99899e1823ccde9b2590f5a903cb9c88e7b3b4b0a91b9c27c6e8d97bb3f4c1c071bc92e4ab593434cd6ab9421dc4d0d562b50cb49a3edd959446eabc178cae2b2b9715683d31c6570ff166e946879b251f3e5e491fe8cde0536aa479d81949f45db2ad6be0e769b4964108c82c21dd1b9ce5f162d26fda6f4eeb778cd9624a2c68d52b5f206770590370c7d81d06d8e00deec2a69cf040f4e095e442c375e5b27af7a0a2914192c8e5b29fd2b73487683e3b0869629024727d71f29a5a67353935b17a90459739e1bbeeaa960fcaae0325e7c626c72b3c48cf45630f12685ea7ded1073b2fab3c18ca9c393875dee8a8739e26a766586fd054ab7a511eeef5ebe1c6f13d6e8b9de63b5e5eeef53539c9a28c8fbdcaf858ad018a4af7d86bf03e56263b5f25769a5a43f758fd96a6cf573da6a5a6794b1e93b7e431794c4b1e0fde92b7d4b5e681a901afa45ec0d2646a8930d86161e8143a3535b95c6118baacc41ca2cbe5e4726a6a72a1e1620016d755d35c56d765d50a4398cb95a32664001651745d14b1b45a0c7825b5b0b4d82ee053fa6cdf12941c948a159755d33e979555d75e9f6d014d4e5558e191f14ac0459ecdfb2014955aaedc0dce46451456ca98749f57d2d56ad334d92c1ce459759434c746d69cb1bbce689323b9b312bc8d7cc96742d9f341317e5e9791d6b47f67c97f97afa7560d9a3e0d529647a4c7796e90f57bb0bac03a78bd4a24481ea44fadf7f450ebfdb7a890f6e99f16d4b4d661943507546294bfe39c60c6f9295f4ae45914ac57b42ccb3aea8a45b4b3825f46ef0662b358acceeb7e573b9644dcac83200bec6e77ee2a16d136c1628120e829f1e0358bad686585175dc1ca932b5c24becfe222aff57e4b12856208d22b4de3b33a3023f82ba956002550df756710294b0235b7151f8661f55810e85aac56586f045cadca56bac63a7f852b204b6489d66b279b9293d8609771e6e8b07a70426a24f9710e4912e4c460524292cf9943728aede77d1feb6379a2f4e9b7a80dd591e0c562bb9b05d7c50726dbd75e0518d7b0be2813c516b0342191658a6d574bccc45fc48f05a56b37884a6843a5697c16abc36e014bd3f89e08a354da475af96e8d65d1c8a202b0de4922d759f562b18162658cf1fb955354aa950270d1012410bf8c1660692fa42d3c691a97173a49c4fad7f485162e303616276d59b5933fdfbfd777d62be9f5bd582d607921cc32c319a6f79238ebaadd12a62de9da92a631ebcc8242a56bdfbb62b1691bcbe2254f88182142c4f228e4dd65ca5edac8641b71af76b53c16f85006f19932e2d015b17ef5f2cb89cbb6aad04b89ebe265d7bc56cb6bd1f54a6ad5ae695e1d9b2643d939ae43f3f113c5d64571268a5f93bd7f6b66c2cef79678d84ee5a99799bfef9fd7e2b2c50619d44d271760b7c1b2f8e9bd55a7d78930212eea3e675c5b20287a572358b3b4755517c4c37e3f2f3d61b755b3b4156321c8e299ded7effb1c3acab1e339adb72a33f3fc4e2fb6835517f8b0bfbaefb8a961af753bcb536fe7dd8556e579e8b55a8fb55af566f1d8e3f32475a1f87dfcc1825e4abcbb3e29efd0d767b463d1c5b2b74ec5394de521ab47d3a7cf6347bd3939f5e6e0541df58e6fd50ab298a6bae01d4623c445f38a10cb57b0df2c1ed75677b15e16625bbf125e8e975dfb2e9e5f24c0aa1003b50e529a2a03df0d5d993efd31376bebd313626f164f88ed3effc1ea592f13442bfeca6c2356adcf16e222b173d1ceb320cb82f701d6bbd75521069ad2f3c658afebda85c8a10b7574b481737c3235c24fca6b83655d2e96c5ed791eab597a7c96ece63765be17368badd7b5942c9ba565e9d1e9a5a594ddecf893ca988bc79e077a7a6c6ce63442a4bbbbbb6b504fd7ed792c569639c1a6c9f38f264f10c81301e5d114c1a0dafce6f942ba06ded575f547d3827ac0f952e21169daf45815ec8818f92d0a79d79385d634f6bc771d8bd5751deb9e0bac7b5ffd31763fa6f7c677f64056f7651656e5183a0b46cad93f844c5d2347f387ed8f534e350d61e514a2ebba96dc89773d6cb13bf43c2046175cf71e521a0d029b2632f953ec477d5fb0e15d74d22df350a64f43e95e30caaa48a45696ce8a550c635422b568674316bbf173d1782cf492272f6ce9b38d8a95d0e511e9dacd6955234debbb5cf7bc30f42e685b77d12c9d91f6e94f570873d523223f8cde2f11234fdaa74f73fdaebba57b31e9aceb47d3e3628918e95a78f94a6ab1cc893743675db5c7eb6c7f413f9ad65dc7aa63d3da02a3095e15b9738d20943d97e541f182200b043f6666666666fe58dc499af4a1c176306cb15dd7fcd93d11821d18d9661425f8b045599d053f0f04ab6c9a91b1cb40285fae7bf41ab11e10eb53f3bbc332f3575fbbb3faf3e6e48c34d661f445453a529ba6b1c079efeec062c4ce2e9c9ff4ea5377eea6ccbdba1c423965ec701dce765dd77508a0b217bc9a324a32407cb117bc648ea8b2f3e054c0ec39e79c73ce39e79c73ce393b26e69c13ec66066c2198f1c410d66ab55aa7699910dad68bd52d98b434b09025ce29b2bde1c7d61217d11c06a3f9f77af7ba8bc689cbbe2a53e0a504665daf24d8d8b4799ba6cde7788fbd0e7be87a25c1be16052d335de6e1a83be6ae3bf320856551d92d8dcc43c78f31eb87500649f98376c3b27318e5bdb3a763e3494fda4c5993c30369c64f4e3006c25a2f57288231f063d17435b41b291ccff33acfeb68facc18eb60de8be5f1cc117f842e518261277f48d63ca3d1c5c6a6e93256be69c61c9ee7795ee7b5d76759c51483f57d9df7c19457eda161258bb19ed7f9d83b673767074271774d93a7792cf003dd922cfa81fe3e963ef21eb304ff8532478262270158eb254e188cfcee5fb764e53d8fbdef8717ba5e2d4f4a0b695a8d5460ec63492f87ec660e469eb36a6c1de264c3fb70d32a47be6f44f003235f8e3c604e4b3cc872796127caee2430f219ecc0c8973b5cedbc999e37bb708a39af30267a9ee779defcbe392708ce0fd6975eccd311b644f0f5314b26ac98d7d148cd1c5492bb86a5a3057e2c974b145fa0f782c13836bbe31cfc123b1e3a521f76ebc124cb516c1a1f1a0835f2afc8e01223ff87a5fc995ee7791d0cd625bc81450c725ea6bc5cd1c01fcbeb9ac59ffc40cf04ac6f727fbae055b0765dd7759e3732970965cf65263b5af91e3b5fb2d74b6466666666e697788444e6481d79692347294a5076923669b3756ce7d88c625321af59736e0ec84c5e1539297be49cdff755597789e49a55d6b115295b4b78d268074e1f3e48ad7cad255042a4aecaa27c075f65ce83b3cabce9815f1011575010f8814a4a73880f2ecd2199c756786c7dc9ecc6eea818af94b232977498318a1c02a58f7cff8c31c0b01cc4557237d304ad0865d7a4643d640549708c81f4d367b41d58a70fffa3de901cfaeed5eeba779d3edc3d9c5dd73d99554ad9c989a469ec79b5ab47d586e6e2b537841496752941094ab0ebbaee2df04d6fb5dcb5648b5bfc05c3dfd1bbad96d76a893b722c7b52ec3e285b1294dd27df759dd7c931960526944123eb565eb11d08b2baa5c7593c3bc1c44228de597d500eb9def57a6f51cf8b5917bc832eca6f5519f2d4d9f3aba094af25b21b3b8cdb183db786db4be33a8c14f5af324affbf56a87e85e2db50346585442bd4ec8eeccdfa1388c9d413887993b449a7ec64ca63588a85eece7363f47867f6be75edce252b4663b2d32f53f541b11be4b1addfd1b65ab0ef885138d7781e9e310ca2d1fe9e57f2a76f2ef467bf7d268d040f65cbb9aec919bdd242d3caf0981e9a53938acb34941c774ff1f0f0b43c284d6b79312bb118e287564bb113232196e925d80ccffa3c3c9cc34a2c88706a272f3ce339bf99ba76932845d366c7e8ed2f6294a846676fd874c533fad63549b58424627ba6aeb597ae3512af8d9bd5ee8eeacfcef33b7be39ad651fcd9678feada6c67369bcdeaddf9ece10eeda8a6e19a16a6713ceb5bd62b69d6b8eed0a9693c346c6a1c8f9f544a629f5d28d9b9b49c337375d585218b402d24901949d4461861efcc7db139b00c5846feb4704556c158a0924460c82166a931ecdcc2ce1cd303f346c5b45e4c910ca9314c50d8d6b4dc1c6235de90b2b395ec165f7fdfd73af80b478521ceec1cc54573a999bc5b1519cc4ccdb4f3581b212fe0858b9a6836c44a5da1302f31613bfc42695884040a4123e4cf0e0e653c26b7c36366ac1962a7a6f1d0dab301271fa107b40fe867b3ca5720f0acbd845f42246c38444804d3c083638cea9ae4d90f0e4a2130f355cfce5741e8675026530b998d6136e0b0ac06af312d405db68aaaa9aa5c3cb5a1b0089b6132988a88aa887e66858b6675056986ca080aa07869da12338c9d5f818ba612d3039205763e1441bae08a91eda83bb10b333ad9d8509911abbae0d8c864ebe745f03ce06c68449a2ff24a9a5d358d5bb3566b4679369bb5ce57676cd1502b84d1d0fc7e389a9af37abd2ee75a67517cbd5eaf0f07cb0163a9198fdbba4baa693969e56b26b6ee7a48f44a72d566ae59fda23e5cf8a211c51c9dcf5e9fcd82b4662dd86c769e8543b30799cdc270e8951406a16c61946dcd4599aa8aaf988de6331f8e867e61bea8a6f5f97e5df9f6b128308e8ffdf21553b1991ae758ca0bf91a9efb6ba0eff11a6a8fd357f96b073e7c9cefa383baa5dec7b7d0ba654b0e0cdab05921d179f9d6b4534a2512a53f3d1ab3012726f943152699496245ae9bb534de99bb6cd180b1d95477416586fe3518773e7b3f3cb2f311767a27749a43b2ee0ec3b49a3b0cd34482767e83c430ad56d8d4ba446ad5f00909509088c238b0128ff9703b6fe698e5d9acde8e0c0b9691445de3315d8b752d46ff5909b13789c5ccf09cefc1312251355735adc794ea793d959ed7f3ab8ff7a85be87d7ccb43008851f42215ede5fdc5ce73335961eed9ac995410e543f0c3ddd8e985d4e28baa92f31b451bb199665f8fe8f3c10f53311b700c61a4234a9698f04189c239005889a11380c814b4ac8624e201ec104f19a9470ed1cf7a5643318ac72caa69b9a6512a4ad13ef3a763ac1885049a17451062c0cecb9e1aef879389dd09c6d78bdf718032960e3b3c3b17290f1d7f7ae6e1a152370cc3c3b3d3626e16fa607aa79966faa1992ae5972cca5fdfe37f951e7fdd22e7dc9213c71355d800e9f568fa5c993b95483c76d0537f1fafd2f30e6a0df53df751df5367aec7ffe5e437e6c3fd84309b5289f4959144ed756c74edce9ba55f1932ba367b67d5a1218171e74ad3a62b4956ed4822dea1b3188db534fef8114390af246e8cdf4b0993fc9967ca6159398c376cfaeb6b0f5ae5ccd19def481876623d3b0f0e0e0ff85397683d7cd8aae112401f10d02ba95527d02b69bed21e749a91440d43ab4e29d255631f830819d263953f43af2436c324895c458abc9262efc2e8b062145599190f6b02e30d9bbadc48ff5f1ddbf771391e3c38d610577df4784ff5764ecab9877a5b2aca99877a7b0aca79877a9bca843305eaedaa12ce3ad4db56249c97eaedab27e71ceaed334ece13a8772a353977a9772e3139dbea9d4c4bce38d43b9b949c2550ef744a72bea1de794b3a2bd53b7148cea5de1975e436d43b7348afa1de2965efb422b2df52ef9cb2775ad9fe2490be2783f4590ee108d0a779083c80062ae58f162ae5cf0c54ca1f0750297fb2c810c394edc34065fb2f3480010bc0e282029a6cbf850420e0002c18a00053b64f002adbbf32002bdb174000f88cedafa0420a4cb68f4293ed5b01c0cdf6abe06cff8428dba73245caf6a54cd97e142adb875265fb2658d97e097d65fb24f419db7fa264fb4e9a30d93e9326db5fe264fb4a6eb69f0467fb4951b68f844af973a48f44a5fcb154ca9fa31168df084787083c33231ef82802faf1b17da2a1214546108108992bc4d8fed0165a6461fbb52fbce0c2f68788110618b62fc48c32c6b0fd2069c8e00cdb1772a30d356c1f888c43e240be61fb413974b9c1f6817ce84107db0f4188207eb0fd1f238a18c2f67f3c257184ed83c0049412b6ff01144f80b17d1f2aa688c2f66964ae1063fb1e6ca14516b6dfc1175ef810230c306cbfc78c32c6b0fd1e69c8e00cdbaf6eb4a186ed538e8371c06fd8fe73e87283edf3f8d0830eb6bf2344103fd8fecc882286b07d9da7248eb07d1913504ad83e0f289e0063fb3ba898220adbcf21738518dbc7d9428b2c6cffe60b2fb8b07d1d62840186eddb9851c618b65f93860cceb0fd1c6eb4d171340efa0ddb1f73e87283edc77ce84188207eb0fd9711450c61fbe2531247d87ec8049412b6ef82e20930b6dfa2628a286c1f24738518dbffb6d0220bdb677de10517b6091cc9368111498c20778631e44e309640a459e5ec37e1f2001b8c70e18e71c0c0153b2c5181a80a4cbde06279dd6cb6e1b3de0446d0de4ed2d06834d9d56e1a914f4b0e7d40cb2102ad104dfecc2b5d07a59b20b841b2f468bcff680e052d11e24bd73cef41446e9015d2b4a0a3202144ba99e3f55408ecbd7770765e37df81720a2abcecb9b56a6c1adbf41ce1c278d82fd8b18e61c162c7039d81f89514abb18f2ec40e7bcc86b7bb637404edd8b43147068d616cf72e85af86b045694c13617ecac349a7d0f730ce9964567e459177dd7a191879943f35072ff4906e098f468945076c565a69853e44e817b4411ea40a51d9b42142433697560844a269af24a10a3a1dcd1609a3d0833c9c21e8d4356985285bcf8851e8425efb14723e8844083a09551089303849c4b2b3368770ae43c8e52b49d2982247825ce845aee449e771855ea42e11e42604b90b42b50611aafdd264382119ae6b4245ce457ee461117a840a1d91b6e69574a4f228749ad71269851eb2c8429742f5824934966b1a5f098d794a8c388fe570aaecc825128f5fca8ff0a0e0f461295fa45ed0ae7029f9ca027685cb51e8b29bd059a876234e95722154acc118e4425ee4618e575291ca63908faf25d206b97c25a9241cb9d08fba0865ebbd9c083d489539117a9007a92e1ca9420faf986e5158dca2780723755362e010234f80ebc0180eafba7663b9908dae4915583ec77293a70a392be2759c5f55bceba83554d307c7d64cc9a8b4aee33aea969aa9e9c36f9d0b528dd4f4610f8c35b42ed6489d49322d0e4e8df1ca6e43ac743485d0a1b764555c35847f25093d94dcc92047a26b4275e8422e5f49b2259ac632a1b315ba0d9509551c1c124e98f6e17b3a8c325cd3f842aaecd634f036d6aa6c9ad0e7afecd6c91fa12a9b46a4deced608516987d42bda1a2c9460c3eeb0724c1a392bbfe56b5de9e635b42e7ff3a36ebd699477bfa2c8b7eea2f2f205830c34505cf7aac62bbbc96e4f23ce0d678927b11a17d49051a3829a15d4705173821aa99a2c2411917184c1808046e84212d54a202688944445888441940708e5f1d234a12a9735752de87cd91714e6d50842bf9d1de13828904541cef3e8cc7148c0454270b04a4de3dbe388914538515c54eb7640bae45ab7d4343ed209bf42f6c6406024500818c80a0954820950ce9f572494600214122e54431c1c4e99aedd1a261c1cce95adb17c9c291caa3964eb9470b07c9c2a1c329cb0d06103968f83460fe54ce1485165f938b91aa6ae5dd9ada6a96bb70353e3a5e64b8d9497582e960322bc0aaf8efab3c0d8167492f20b3a5119aacd2b2baa08411445c0dc80689e213272be7c456124d9ed87b16dd784e5a750d5343e9223bf9d45729c12482222e7e394914445ce316062d5343e93e35421896ae7e358218986cec789421209391f27049268c8f938384924743e0e184914e4bc46931b481aff4eebe44cd3f84efe81ae0950e98bc167f5ad216b2010dfd577e6bbc1915a55844a4b84b28de52ccfabae814a0de4b7e3cf335d03977ade40d6c01da452d740a60681904b5d039b9ab683ac8144481abfe6d64ee06a445013d535b91a2b248d891c482d52e4458000010204c8e5ab4811204141414140800039eb9504a4e656e3440dae4604355127526f36a812d530597e6dc88a2535b925582841868d72117690b51a20248d6b989ac6e006248dc335248dc32b2a44a8ac04f2875f84cacac81f23239915b22a64219045217ff84254869381913ffc1a2036b08691f36b9888ce079d8ace0faf8cfc631a6ba470f603f6c96f2c17bb5d115a4386fce113a1352e903ffc215ab302f9c3afd11a15c81ffe105a7302f9c317426bb8d861048208a0aed5a4a4c1ce079b80ce0f85688d94fce107a13559c81f3ebf92fcf0a58b46e8322141707042426a92b642842ebb75cdb3d28a3367ec8d946c6a0ed9665505acb443b61793156f2c61873c2589c55293e5cba2e65023f1850411c2c1494575edd63c593e1f274cd770a4e89a04c3728d54cd544d17384c42946dcd53d788f0910411a63cca8fba3585469142ab5015e8059dd018ba09bd21137a6d90d03b4b81de6a845e5711bd3544f4ea18d1eb830abd1f40a131b409f48625d06b4302bdb313e8ad48f4ba2cbd3547f4ea8c40af0f14e8fd60098d8181680c7d439b3b7b426fb5b746caf257a077b45776dbc248accf5715f92fece7a05d2fdb1cb117baf75f9f8fd1d7737c76ab39bf65b72eba769fbce874b163e6a54c99ae350fb32f20fc08124cced729d3b56b86f611ced721a36b77de9e3fe3a16b77cc97aef978d1f93324ba76e72fc2f9321ed9ce7b69c6a4d304c29138219daf23d5b5fb24fb54d7eed38e5375ed3ed17e74be4e95d1128fcf3acb3de5bceb4caaa96bf7c9c78d9c63f5e927ba155982086e284c2daa6b978a145dbb5364b9ae5d29b2315dbb2ac8a8ba767bfcc9f932335dbbf54eaaba769b7c464546d76e94cfccc8ac869c2f4343c8f9b2ab20e7cbd8103a5f76a66bd78a0c8eae5d002875ed56b175ed9e7003b244100e280cec7c9da8ae5d284f3a5f478aae5d13bec2f93ab9aedd129ec2f93a63ba7649380ae7eb5875edf6f93a6874edea5c75edc6ced761a36b773cd3b5bbe4497586d381a36b57c957a8b3304a5dbb499e429d45d9ba76938e429d49319b9a435b3aa49ef32da53628a210a80deac90fb54135f9416d50483ea03628241f6a833af280daa08c3aa045c7a136282a537e436d5029ec541bd445e14ef9931b2a4f52b8b9918242bd299c4ad5324ea997cacd942752a2542d9f0a54051e273b4d769aa8b0b3c2a5ecd476c69d26287c2aa470146ea87c4ad502dea030f4dacd0af5d6eaad5d859bdae5e636a814ea7dda390a3c53786a979fdba086ea7dbaf950ede6b54bc19112e54f709cbc09ce932238442e05a776c179e2f913273c6f12c26d5045ea7dc27911223827721dd406650500b7a136a82a5274aa0dea46b94e8ec4e609122936364da2d42be54faa96d149bd4f6c9c2069c2c4e6043a65764427ca141d2a3a425174461da428364253a43c8acd933ba95a409b28412e642344a55ea17a853ec5a676b1b90d4a4abd4f3a8f327ba27327b3dae583dba082d4fb64f3204236177a131d4d981c898e2347d28164880e216fa2a376d1f1343b9223b323fdb80d6a48bd4f3a3e44888e0bb9486d50504c78486d502534d9516d5097c93df2a310c95193304462526f9323a95ac623f522098f1c21d9aae523813a918db0c3688791931d4f8eb403b663dc61c4e473d2e44c42243f52b5802113a0c3c227f5c2ea85dd4958bb84b74135a9f769c799c88ec86a170f6e8302aaf7293c102c3cec482292fd9138c28daa16f00888187424b176119f643fa223c86e446b179fdba080d4fb241e4890f8a0bba80d6a0955f216b5412541caa936a86b2f42d502de118e8c20b58c44b80dcad68bf4a3aa651ca1dea3d6084644a85abe247a8447b5415d115e94738b4e944374240749ce6873c61c22fb8d47906e5b471fa16a016d507684d8c716927ac77ac71f69d52eaddba090ea7dcab9e57194f31178d42ef436a858bd4fadc7c67ac71b552d9f7d1ac14804d03eb98a4e54b58036282344b7418de032aa5a445bbbb86e8312a1de271e3752b58cf6a983221e27aa5ac60e6a970e6e83ea7a9f5cef59efd3d2915c45880cd586080922042408081602edf90ffd7f5010ea1646eaf907f4f7a1b4baa5917aee01fd3ba03eea9689d4536d503dea6caa695cebac8ba6f1297d9d51f1f80ecdf92ce732caa3ce72d387bf83e6d499d4f4e1e350d76f68eb3aa8eb36b47591baeaac5567512e3b5216183790800d1ba35f099654d0849d740e7183d40c6c53d60e62aecab0357576a3d15018601f9b5eee8e7aa44adac240dbb2afce7c8d14061a5e8f51183edbbda7b3b26dd7cd6e5d9be1e6907817cfa4a6ec8cca8db195acb45776c3c14d1f7e28655b3851961fe2e0e6904c09e9c307131545ceb24c8ce55f1c298b839b4312292a872325bbc91f3e4ecee90613e0e070708d839349c96e2c2ac35159d4f4e17b448c5776cbc1c078c74ecc18c5b29bec26bbd5aa904bdb00e3f24d2e5d2b0058f09412f440e94939bb4e326d3d3cab32734bc93d4d63d1ba26a594f2f756bae4595256f12c9a8d95204bbe465665b1583d4dbbde6ff9c77b188b8dfc28658e951294fd2111de1a3b4f238b440672f508f2ac97c3cbbe23ecb35e2c16164e2a4bf27aebadf97aeb4a5ed5cb71578ee7685559121a9acf2ba1f96c61b1e162d9d2d04b918b2818ab6d5b944602c97b350f5db4fba8f750960476ef9e08bb7725b0bbeecd87dfc1cf9ceefb6a12d6e7654c589f57c2aaa3fc91e712b3d96c07efececec50190f1e07e9ed966cd4c8e3d745656507a9ce439e57924ee591c58367769e994c475679ecc8c181bdc4d0253b7559b983864d9776c3baba414135f4baae6834f4c2e8bdbd2eaa0bdacbba7ab1ae5c645c171b76de4563e8ba0f94b69fbcb75741246983c7a53d1b980b8e0dcca55d1d0831257a4d744add9224e2346c0cdce9f0b25cbf33200fe30dbf33b6ad42abcbbeb2b7b3575462d913367f458e35f39518229c8098f262e311396cd76c75e0c7627d1ed8b5a6ab4316e58be58230149790545cc28d99b30d4ea6d9349de66de2a272b7dbed76bbdd5e08baa259bd2a878ac83899a69aaa6e57443eaa2aabab3353692edd6eb7dbed767b81081122448834d55453d5ed8a48b3daa96fb8a89cd454535353535353d3ed76bbdd6eb717aedae9363dabab334abdd44cddd4d4d4d4d4d4d4c455b7dbed76bbddac7a46e5a4a6a8b80a541a977298de44736a6a6a6a6a6a6ae22aaee22aae62dc996ee2aaa5a6a6a6a6a6a6a633e038e6e4fc345a90ccf514eb6abce0d26406018ef06b62bc6018e35752e772afa40e87633939c5be26c6ef954465f9d2b6533b5959318e7167cec89ce5af891166c39894d2ca57922925c5a599a545d8fdf663d3ba59347088054eafa73b4f4a759ad67595f631470681008b0e94f112d5e3654c0b3b5c28d9ee5d98b1a301d7baa8a67dbf5d0d6cf7ee043cd4c2f4e96e77c653ea60d0b5c076973c743b15d8ee9d54c745d78298d6bd7b0b73a893ea6e17959353eb08de455b956d8e674764fa8094913cdab6456f903aa9390482f3b78b9242eaa2e61094e9d3bdeba26c37e915a94eaa8c2d48aab3eaae3a3858dc5d27ab84c8175a607b650ecd778732c58cb2efeba4ce78b61e9224a8eabae89ac4420933b6935664d8eeb2ebeceda66e0787edfeb1bca0ae75ef82b0744dae8084d94935ad0c08cedaa3ad93ea21dd540fe9660cc6db497552dd54d7a455ea3ae4004fc93c7b7ece2e86cec6d0d9feacf30c4b8df17e57b6ff5d7d6cf430f59eef93a0f4581eed0f0a0a0a62aa8202e138d28e4bd27c0eeb93e68c6b8c36077fafb058df591d97a4f9d1a66bacb7c7aa32afcee0d9ae7653054eb67f67d5d108bf130d960cc34a31bcdf398695655869c61c82c01f7069565e22564a79e59595f2729395f2f2cdcacb382be5e59c9597a7acbc4c65e5e52a2b2f5b59292f9fb1f2b6929552cadb4e56debe5929a594f236959552cadb67ac94772e5979279395773631b9f366e59d5156de99b3f24e292bef9c9abfadf9fb9abf31a3df1d56ceace411c187951e18f9b112a8e817889543ac1c22fa2d62a508568e50e4578ab1b288946488482dac945b0c0dc92f6ab226c51822874833844821328d2032887443480ac93880fcf20d5602919c43d02feb606590641f8082b05288107e79082b439046fcfcf21156fec8a71fbfac84953f241320fc32182b9fb0128a0f7e390a2ba7b0920a9f2bac2443fbe52caca4c92d3cf8652eacf4407ed1c12f83616507520c1fbf3c86953ea4193dbf7c86953d328d1e3da41b55561907fded1baca4b273f865fbc0c32385d8f9ed21acdc9146cc7efb082b67f2494747322193492878fc761456f29054ec903b24991c9923b7c0f96d2eacc4915fdcfc361856de483174e89066d8fcf61956dac8346a7e5b0d2b6ba41b39640e19078da4913387f177ea60e528a70f3119849542c0244c1af1922ff9244a513211fe4e305686120ad7ef8cc24a97a4a2f53bc558d99264c0df998595a0dcc2e8fb9d5c58f9c94f1eb4f6f6e8e8e8e860d38e2e5f162a029f0088d4d9a31f9d5f490cc53f6a6ba5f70d07a98d73708ee32d6a6338ce38b88bdad806e71b3ca4363e737ee322b5710dce6efc456dccc6b98dc3a88d69705ee3316ae3abb31a1fa98d67704ee334d4c6689c65f01cd4c63038c7e035d4c656e7336e436dfc82b319d7416d4cc6b98cdf501bb7e0ec82e3501b579dc7780eb5310bce627c07b5b1997318e7416dac82f30a2ea336a63a83711d6ae3149cbff88cdab88bb317dfa1363ec11905e7a1369e3a73f1531b9be0bcc529b57199b316afd4c6243897e03da88da5ce59bc87da188b3399fba0361e73bee21d501b5771b6e21e501be7ce624ea3361ec1998afb501b4b719ee21f501b87e02c8283406d1c758ee23fa80d84fff80fb5f9fc8387406d1e9c76206af3f10e1e446d3dde7320d4465f2f446d3cff8350dbec3b17426db2eb7c08b5ed388fd7a80de7391fa2361dbf39116aabb9cd8b501bcd739c88da621f5f446dafc36e84dac28b1781da5a77dd88dabe834f1c0220f803c29c0627aea589cf00e60ec03d0b1397e1038f01ea302cf1173cf00674e00c50e20bb81dcbd35de0c06f125700126f61034f80068e80237e00a7b360c40d908117a08813e0cbaf10f10160e00218e20168fa0a425c850b3c85208e82975b01e200b0c0abfcf013984ec5874fa9c0a5f4f0283c1cca0e3781022f418793b0f42739dcc904dea4cb99d8be04872b91c093dcf024252e3f42a5fcb1e17dc391b7d29123e738909c738084719074862329e97c8324671b2449727e43c9f98c12256737969c6bb064c9b90d266736983039afd1e44c83264dce6a38395f3971724ee3c979064f9e9c6540c2190d123806259c61504209e7334c385b9960c2d90c28e7174081722e23ca998c2851ce2e90726e811429e731a69caba64c398b41e5cc022a54ce619c703673c209e7155439aba04a953318003853010000e72fac9c5360c5cad90b14ce5da080c21905299c4f90420a672e54384fa9a0c2798b15ce26586185b316013897094000ce2510c099040210c0398b019ca506308033992b672cae5c395f4180f3180210e06c4501ce5514a00067310638e70c608033152c9c47c0020be7290e7096e20007388b804a390401e710200001e728a8944312708e4a4002fea38583d0420bff4001f75180024ebbf7e0de77e0c27db8e0c27bb0bc07162caf0b385dc0027e069c87010cf84e033e6b4003aef3c2652fbc701e307c070c303c2786e3c410c36f64b80e1964b84d96d764c9f21c0e388d031cf07186c76698e1302d7f69d17291868734d070d703de7ac0030e52298740e01f6559087416020fb9d01a6e03ddc245123df22414c995d0a42fa149ce842a7913bae44e28933fa14d4e0275f212e8939b404938145ac2a350132e8542f9141ae554a8949f40a7bc0aa57200d0136e8556390a14004f815ab90a1485af40537800a80a17005de103a001f8152a8013800ee005a0576e004a80b3400bf00350031c01948527801ee02d50045c013401bfb485bb4015702cf47e01d4853380627903e802fe0265c061a00d780cf485cb406178161ac31d4065f80c34cbb550079c063ac31f40b51c029486b312b5e17c03e572960065a5330e946f38db284be0dc85320ee70950b69d73a0dce5bc447902671d28e770a600e5a5f30e947538f3409902e71e28ef70ae00651ece3e50eee1cc44b902e71f28fb70b60065a63310947f387ba16c8173109481385f80b297b3109483383751bec07908ca429c3140b9e94c04e521ce5f2863e05c046522ce19a0fce56c04e522ce4e9433703e82b211670d50763a6f80f2116724286be09c04e50d9c39401989f313e524ce37ca1c382b41f9e9dc01cab7b307282b715e827207ce50943d70fe00e525ce4c50863ae3287fe00c863213e72628e3ce4e5006730e43b9893308283b71a6f30a8aa7efd38d36867c759e993e0d0595964140f98923d10f277ffa967e51f2a799b28d00959605c51343fadef74d31a40f017aa71a97a687f1da58ee9a065a297f583c8cd2f213dfd4bc6a5adb1fb5249ae227a89595d5f5b1775a5d2059e82d2203bdf2ca2b5fa05736805ec9007ae502e89558e8952ed0cb975ebedc02bd9c007a1901f4f201e86516e86503d0cb972f5fa1972f0b805ebebc02bdac02bd7dfbb6157afbf6eddb54e8eddb62ec9d56b7b3b0775adde6c2de69751b0c7ba7d5ed31ec9db7cfb8adc6ed379cd03b6fb0775adda983bdd3eace1fec9d56770e61efb4baf3087ba7d59d4ad83badee0463efb4ba330a7ba7d59d6218cab49a3290222c3d8d33a451278922f0febc92441068c3e877baa186343212e1578708bf38f30d69248291df99915f9e1ba49191a25f1f45bf1ee8208d8a887e7f887e817e904644457e8714f91d1a421a1521f22b0291df118e904644ae18fa9564949046435ad47ee51646352f86fcca2fa2904643c210f22bc510238d849411e4579a9185340a2203a15f990617d248a80d20bfd20d30a411101c04fdca38c69046415d807e398733a411500f21fcb20f6a48a31082f8f96521ba37a4d14f113f7ed9881ba4d18f2440f8e5271da41108501ffc32133f48a30f9ef0f965288690463e53d07e998a23a411ed0a0f7e998c12d2c8032d3af8e52dc048a30ebcf0f1cb5f44218d7c84d1f3cb628891463d65f4f86533b290463d64507f390d2ea4516d83feb21b6048238a83ff721c6348a377e1f9ed1cce90463c3decfcb60f6a48a39d2066bf2d84f786349a15a1f3db46dc208d749290fdf6930ed24806c5e3b799f8411af17862c76f43318434da3145ce6f53718434cab902e7b7c928218d70b4b8f9ed2dc048a31b2f74fcf6175148231d61d8fcb61862a4914d1935bf6d4616d2a84606397e3b0d2ea4518e36687edb0d30a4110d0ec6df8e630c69347689fdce1cce9046b11e60bfd30735a4112c88d7ef1482f586347a1521fe4e236e90466212e1ef7cd2411a8550aedfc9c40fd2c8f544eb77423184346a4d01fe4e2a8e9046e015dfef24a38434fab460fdce2dc04823d64558ba1746968290bcdff9c5178534f2fe8073987a471ace4ed49ba3e5dc44bd9fe10ca65e9a03ceb87a83b29c99a897880ce70fd42b73319ca1ea9552309c97a8574ebd70f640bd92aa01e70ed42bab187056a25e69b580f3ad5e7985e5fc54af3ce3c29903f5b2d23d27512f2f29e08c44bdccd4c27903f5725302ce1aa8979d10703ea25ebe1de0ec542fe358381b512f4719e09c817a3957807311f5b21401ce5feae5a92b6722ea65aa019c31502f5709e03c44bd6c15807353bd7cb5c259887af98c0ae70bd4db4a299c83a8b79750387ba9b799ac9c81a8b79b0070b640bded54e5fc43bd7d3be1cc546fe3a89c7da8b7a3a69c2b10aa35a854eb564b9349e9181a01100000001400a315002028140c87c482c190228871930f148011799e547a4e1b08d334c8510829848c210004040000000064360004e2261ad1736104e8452344449b7b0e742d4be0e7ff2d8725505b45d1b60cc44c81856547376ddd71d8c29f78a62755f5c4c7b70a88cd583b097c2afe06da0a6f9e00ac1fd8d0c80aa38e54697199fa0b09fe52b66e7cbf7ae7f4d5bc1c25b03cf6aaff44841042fc21044e1488cd37a38cec35822cd29c56f0d59a9c26ca3a8bb333f52368e370ea1fa3185ea943051fd83eb5fd8336ee9a335d9ba9df93d427951f4e438bbf69283e3ee83570b270fcdae62fcb5f257ec79d75ed9b1002dee2c563dd40a9e3ff7f8096c9d1c14f4e202d1076b292d936a4bd4e480963f51529d4cd000de93406fb596b9526d983db8ba7c16a5b4f818aec09d1868cf0fb5a413ec9f3b97f6de72e5b2220d8f8bb4f17c91b12f6f385cf94ca532acda9243f7a5dbeb611c83043953c55b354cf529949752695a953b57cd87f256274e556b66c1291b5a8f78153fd0f7eb4cbfe009992eef4fc68dbc1fa53ecebb5d2f7adcb0caa2d8048fff9d12eb3404cfae83ff087f334512dca4fab977fa70ffaa00ffaa06e3efc99fc688b977290d44703699ae83b8c4bd08675ca48bd63b1af213733ca212590124809a4045230599c0e4010a113d1cd2887144c16a7031044e84474336a8e179c803c980f9ff9f259fd1740940da8866ae3305ad5536d7c4365c522b860402d6d2011f524e4ae98880935c8548c80616203055dafebe3c0b254b7f12d25100f8cf007501462a688076bd9eb9f43629700954f9e970540f7870f70e690aeefb9a0de180fa7d63efbecb30732a26314221211898844442222111119968e4300a4e094706bc8454486a5e31000293825dc1a92db032ea01ee68b6f3e7c6612bd0a390582d05398053d4530d05378007516de2f0b5b0f63d3e9acc6031e6c544a20eb65d79823c49b10a0a3ad54f8a863435eb8b3236133bed167d1ae94f419e287f9811301fb1f77d47091e5068e0c8eefbbef7dff3ea7e4fc329f99cc4c662633974c8d170887fbeaa3cfbef8cb091fcf066087bee1752d75801ab7924121a6d6fbf0b96f9ffaf6b988a3e2a998f2a8e8d86778c3235fed1a7994f20e702c296f046791f206c068ba7553e774f4eea465adb4a56ae589b8623f8e7af8fab21c9d20adb85fe4339219c98c261dc20b94837cf1c5071f4a44facaa9405578c595132b08244231db6d2db064e218b3ddb02a93ba5991cd88ca69c00a03b571008953c49b93ae1a2d8a8f4f62e2a737cec089139c3811ee9acd18e1a1e3fd6b30d2d0041a8506081e5d1e8c34442622efb1cf9efbec9743e481cae4837b374d6d522e8170a31c280817951c24e538e2370d118456455bc441f03caed38f125fc4b3299113f1b73c07b58e267f4cc8d31136f9453f4b40b3700e8b80fecfa1c67767e4ce05bde99ec84be6b771d3045c506c44855db328e37a59963b96246f87a41e1dfdd08e9c2f45d68025f0366ec51777ed053ca24e0d89c766f6e86670076c7f867c242a6280485d6b4b1676f4d4db99aa923fb8752270ef90aa7f4a0b78b8d2924756cf8723bc856ee9be93bc7dc027005333b07618eca23c989b8c455ef5ab904cf45c568bdc3fc4b64c2bd15cdcb888f5a32f3abfcdc9d6265584e03bcbee6152972a13640402e9dce0b1554de3226ff7cdc6609e0c65fdd6b9486f8d64ead0dfa2106907c8732abd227f34520fca35ee9444e4f6e6d38537be3c31f7b9b32f7a4f4d681e14e88a605f80abeac8db079046089a84bf9d0d52fb313846c06614bacdc3524236861eb1c8bc6f4046d9d536e14bc4544028fdc6c21e2af10553042a222d52a5ba528933b0b2df1724d3cb4197649f165043b864475cd8fac437eed01469989a566b44b8674fb747589bc6b211358cbf9aa1feafad005b4b21ed12531b85432506adcd6d90163a21b3f0ad7568c91f9a120bfb4b3bf30888513dc2befd08dffb002df9dc07ce3cf8f5a9460143b5d85b424d58227242deabb017610f48b04f58e9d5ae5212218edaae564ec7b333376647048bac137f1d779f4ce94a55a9c9996dc7e9aaacb4062053759f0c8a0f8f2a337db5045910dbc128153866a593de9fbfd3c3dc753980bb2cbd734916b45163260d94aebdc1805f5417494f5f4facddb25f22e7a164880e1460984973f1b01aae6a7cbb93bdc0d683dec4f04cfe153bee5a8d5b4cb416c243dd5542e04722087890a494381ba7bf268e733c5de03adad8d9984803cdd94d75ce27865c4e5085a9848e0e1d80f46795ce0f5542f86aaf904653354424bc1c5bc122d312ee5642549976a492570985c5d746b19586f898e4f5f635fd343958eaba145b744434a507c2000e840ef05f990a9652f97e2e4d63db4e47126e96f6819aba97f7200d427b4bad0b6c08e0ac0b0c425a2a8d8c15f82df4f0ba58087920657c25324dbb25d90917af3a1e62375db774a8d66cbbe35775419985cb38484b072a588c33f362fe02713668861ce142a05f990b62bf7ececc9ad711b3506f282b0d6b19644b9c50180e884b9e39f0cd1df30ad3d9686724670e5aedffb18ae4e5f50903a450dc26a42043f3a22439a6783020233b5e3922d03130408ac17156242be19beaad7a2ea18ba4cf45aa0f65f967062b7416108b921a5f3014b6410065dc577b018b0bfb99aa00a43001908d3e61463e871405715557f91fd3f4b0ca4941e1d77a4bdae889f00412bf12f6ae25953b58afb9b9e3ecd523050561ea359d7a0a12250fd985852915141e23277b79e6dfc1a75a9361134760a9443169c67f85d6ec1bb3b83526a400e3d2d74179b8234443f2602411a0adc4e1aa9f5482320004dfeaf69a6f9cb3cba96b772af5ab7899b67678c861280083a1bf348ad3865a615eff9d30ac52179a9434ffda0c9b2b65a47cb1db36affce730bae444d9901693b2f469d28ce82868bd69bca3527a2a9957478e21348c385ac820ace652ad3462faec766f3b133bb88d0e00f21687deec67db99d718f6b46b55b27d847b9c22a45e3316770481d5693423a808a9d27a80976fe3ab3296a3c7383d8ed17e4b4e65e425b797ffd851144a136af35c695668ba4b8a663a8e669254167c1e8d19268d158e1901b9faed088c2681adfdba8a044b0c9ab9a299aedf02f74823876946437a90a79907f5c52535f5e7e9caaac9a8d1e3c89ad34e59a2b946a6583096c0a6fcd8585b21abcea613ae36cda23535cf6d2ee0434b7bdc48d4cd5ca11a238837478a6fbcffe61973153b1a1c8786f392194d8a28ced437cee08a9c09a49c0930677eb862dc37e71a7d8e63d1f9d5de45311d326440c1d4c150c1fb65ada35f61478776941d3011dece9db596aadd39cb6c03f61d0ac0b21ae1415c7def4d8b472b79943ad344328f9468a759d0731395a674a7e7e07a5c85e2f1b0f6782fef7983e1f353afa61da003441f2ff679a619604abecfd8989fb9b79ff9ce9f252bf7fd261d708ad06f25f4eed12987721d2354f30a15f08cc14289fe0b9dbba16ca5d38e3b74db10a5ec4e7739a2bb4e940aa40a069f82b6154da634f326b52a56d41cb8e833052495548b9fa17a96d1db94de0030b75bd434dc68dc6a5cf2975c83d42c7934c66a3cf24b96556ab6411a9f9a45c1aa746aaadf467abb5251977612f8d4e296f4d15211395215632865efa9982f55615da589531a85b5ade7acd4342d7d04294236ab62fc52b695ea337015b8649a68564a7daf9a394d9ff20adea8e91f6e7adb577af39be23da7b155c3149dada3e8d4243c7d02294216ade2ec5396958ab3ac158a829a60565eedb6daf3a13ef34a2d025751302afb4c954de50a8d484daef4160af6175457e42c351635fa1925f17d575b9b7a57a6a47af46a2b507d8e02180556e5cf579b29d5fb4a33376057197fc55955638bea5534b0f5bcea639662841056085a6585eadecb91d36a58eee62a85aaaf518e44b7c432e8ab942dd5e15d2c2c873551a5dd6e86f2702c5bc84a15d5089bd1bf87accd9bf501af7c89c9ca83b4b267aada5a59505c6bf24ae7d8fda22ccca2c7ad7119f553a8d9e286eba34a51329d15a3b9b2adfa81d215ec3f9be5bac658cd10d2a59d89d63df07a27566645d29ae67a7da680f57b96557b75adaf37571a9d701fe2a92dc9bf3ea00004c21ddc58cb25c152ae7a94c1f5fcae4d73c2c6d5d47f416c8be3b08f3245cbce560c13cb3653fd06db02076313654aad8b5b3374ec97692ee8d26effb2ea2d8c110cfa7cc004bb75aabf1d6884f7847a571d614d3341d0edc6423fe77d9ea1e3af1699dc27745944239019d826b82da210491bdc25bb2da012480dec92dd16d1114b0d6d925c165188a40676895d97d08924063789dc5224b21d8fdafb6b81319bf6945147f9e9ee3e508e4b68243a8a68aea79cb683688b5724399b0209b506987ccb81c8d28c3230aeb191ed20ae49de92ac09a63f66b1e4ed0426dc0660726c0590d50e4062360292682f2099b603486b1720399b0209b506987ccb81c8b7039cb00d81e4b40548969d00c4da004cc2de0032db0624cd6e0042ae146ba9c6cae0ab86ed71d12e051076174041360391bf07a008db02c8b90ba8042b81885f00509cf541042f0328899d00846e002cc19e0022b70194c36e1012570016672100155f632cad06b9c39cbc7bafb36e11de836baab506707d57fba89617d817dd70f9519a49fc881f5370c8c9cb60635a2d058343bcec746c58f4d695c8c06f2f1c0e9ede1ad71dcc911421535fb19512d5f509eea406ff33d16b3f71329fd999b0f90e87e006873f1ac32abfc1346498d078c314ddc06ea8c023e16d20c2b5e1e785f134010875052b48c3a43b1028314583d12d036650191401df9101b9696c0c4c2cc43cc320490ac310693360d8497f8173ea0bf0e40ce38f17ae72176e4b173e652ea0162e04fd16fc58b3054885b5b006eb2fab59182c596095b14058b0d02b5fa1b25ce12b5be13256f8820fcf1422ace0900bd1789539196d81e05dde57004f8f70aff854e4c455681e30b3caa9791207e536631dc2788ed1ca6dc436c6485b6941e94b8b9a6a0ff6c6392d69ab953ae0eb0765378f16ead55d4aef5f95cae3568aabcf5addbe978baeeda954f5435c3e289f7bbea9a9ae5174fcba40f1d94aadda89f1e0737160c44241f539f3fb9b72cd450dd5aa2ed0eb47e5e37737f5d5b5aa765f4b45636b0ad5f72d5edf94eb2eef5454d5002d3e966f3dbda9ab2eabbb7f5daa1d5551ac3e646bf65d61e0d041b54297e9fbbbb279bb91f2ca59a8d5c7f2a1b73bb5ea7e15b72f4a75c32b05d5678c2edfcb5d97ee545595e1ae1f97cfbedaa85717a9dd7f29f58f5828a83e677e7f53aeb9a8a15ad505f5fb63017ae38072e500c4e583f2b9e79b9aea1a459bafa5aea12b45d5c776efefcbb55795a74dd1722aedfab8f2e5cf13ce7a95595a74aff409b32a7ae4f64f2e2e25f15bc56e697ebe382ba95f14eba5fc53c4b164fdaed82cfd4f26ae25f1eb6279a97ca2782db9df14fba5ec53c5b1a47fb95829c5cf2abe25f3fb6259e9d3af1c14dfbcc433b63422875ec4cb24f831ebe3225d7f61e3eaf5c09c6511d3674da02b49115aa42a69237982b51a088a9c587dd9f2d383617f454659e5887e782f5d85fc4b5f214023df0c3324453ea235914a1664ad689e8cd5e7185bc306ab134877ce1790c0997e8baa19e26b92ac1cf6228e5bcc1cf5f14868bc47e88eb95d4de510dbecc37b0b1af42eff45ec45a37be03596ea7bc6cfacaa04ea16c068a7aca83c5aaa2a3b9e680364d10077d8d7a9f5a64edfb1a8da64b53f196b1ee6aaebec3b015d4d5be318d415da07f598abef895a801394618ca62afc9f0527508957e00aa013d836bc4fb00f8d17b837b80a7975857a3df98050343c29cdcf432c631b4b8f673732119d454d1a718fcc0cc73a581054063f4bc2da81a6b58e148e92a5d8fe3ec75049aec26d7bd2ccbb6626f9d6e2a2a27219b69e6f622e9bd7ba8f3a8a31f5ac7d52a71bb3e5845691cad1926c369f9fd8ded8dbe93bf5ddde267db8324b910d80a4d8f2fe8979edb8d63fd4a94caeb76c939a5cce96325a098e44834dd48f91da2c97cbd5a5b2c58c01d5c913780cb991960a6b45d5eaeefc66edff9fcdff038c357838a97fcce570331b053744f3df739bc6b3b41201f0811ee8873ee8871ec2bfee5b7515d0c5e8a3c9055012e451b5e531ed144e7877de27eb0b8db386d6899d7fdc631a18ee1ba4e5815754bedcc98921a267f1ef603ac6d66e45e7b867bda04be1cfa2efb00ee0a32e40866073074bb3ffa8cfd9add5110d600eeb488d9b2da24002fcb56015b7db3d3c692c56cd11a595044e5463afd4000a077550b2a9d29b74b1ed2a6afb9caa45a11bcb702ef285d19b6b007fbad2fd528e57789daeef80c1559b83313219f3175abdc1c6b79643aa5710daecb81d655d3da59258f66a417914de852276907b61454ade3f45e141f1fb93470c3cb7dc343494a0f833a83bc81b7ebd40f4c0ac53b48597ec99004e54590789ac46e851831b39db113d7839b61e3a6cd30530bd7ff22924dd90b80f0dc30ea87cd8d3d17159c31ac290f96c5e190770a5bf9f2bdd6c803196d42419df854936a2d21d08e738e4c595733f1a4149fdb0f0ac5dc3fb4f47238f324d9a70ffadbcf90bb66ff8a13ce11a7d21ff610c75b118886dcabb5e663a1e9746810eeb210ce58cab18501d66084fc9677356824890a6c2c4fb3c2a95e0946d74db1fef59a26a0df2af9990c336771c7460cad2c95b8f588c26e69dc2dee45ae824419661916b1096b2871eb56962223e64c2b27968fee9411eda8268dfa3dd8a0028956c6a8087e8264977cb49959fde0567eea793e247ecdb2fad78e92f5095e64f88e4183cad21f6602ca1535c6790621e55f9936f933179e3afbe946e1ead87f10de822d2d6029845dcb317c007bc7d03f77bd19ccfe7246fc8b00685c2eb7ed492ad6d969165d7888f543d7ded2f5e13eb9ebe14886bca375c4f11b39d506e89c7f2532556a2b2a02a6253b2532a401f6878bd1d7eaa12e52e1ce6649c594d5a7b4681074955d2b4d434d085a64ef2642004d9278817e24fac31e9eb086df036ba79058ec122dc2c7e964ef0a4ac73f937a53e45b21197f5bff61759be84a46f24f98ffdcce77627c36a68f0f03990c091847154af1c59f2087115c8dae9959b0e4450704d2f46f074efd6b47dabcd0a07db2e3144b679c14f2ca3d6e4cf46a7f08ea81ab500b3a4d337c1574255907042b20a4615b1bf5e291afcf9c2944ca24a42fa974161b5d0a317ad630891836a21e407799ae86525419e5501529100a0347e3db5d4c6e671c2ce344aa756ca4851cbfc08517f327bd3812c5b4ba0fe1ba14f7e8cfd000b5340d5175e96e750145b6ab0795056f3a231cec3c75c7930c1ad8377b43a72397fbef46f24bec49a6ee823c6e9fcb6d720d4728269518cbd516b8ceb05d038f32bf6d4bfe99366717f6e9875d15e2827b273774173731832b5569acfa70348df8adcb28829ce67e298f5d29b465c6545d40964802246b6808e5ddf4cd4fb897edb531e5f0093c99fbd77f794feb53df57203dbf3a718ac60755bb01cd205e28def674e5711380f49c3e1c1db8b67efdec1505dcbb9e3a958e5bf24e3d580a03da4d1b4dd26a3cd9e8d85549f5226c38a6b2186972edaff0254195d068991f69f35ad952ab1f6de1344d07fd8fcc386b72845d61cfca0bb63584923d40bf1f613e3a4b8a86023058d4910a892262a98c345871083f413c5f7f4b1001d78fe41c71005c52e21b789e2731627bc93a4ae49e24be6a943523cc9645047d0ef53f483d7a64d841b315f7b8e103988cccf0eb4768ad98cd10554c06e405cce4c359f10e2d4ec487bfa4ac7ee121f07b39f4dbaa6b3854cbe539b49bc7cc6401ab796bb7606c5b0f135ef2ed84d8c00155663b7d20104df9c57c504caccc78ffb17431ded63ed803f7624f62a97df0f4e7a796b7dfc8591128517389ac5d454863c620a5bc166dc655848aeb4d015b712efcc19948bf8323139e5bce6a0c6e592f93a5cbe87fcbee130bb2dedde1b00aab2ad90b38c941efc04dbae0024dc2d5756223b554106c7504406e8af6729171c948def878ce3d22bbbf72a435d3b8a59382663981e1799191e77f08fec84fc465f612296cce565902bcc6f084728dc172631c0073329814ac60665a39e8d56ab65d7a0dd8fac0ebf6d7219f7152ef50cf199d87b21bc4acb1fdcf08ac7d136000b6c930b7592db9a0d6f01867e7f52d38e977cb68c0d5918781763b23ade9abf44909a83a23321003584678ea880b859157be5488fd71604dec58a050d6e1637241aee55f955b3260a2cd5e7441e9444a8e89470ff26638c3e19396eaf9e9e31161f4e34400c8c81b033b430eaf72ffa8903330cef49b931abcea4a3b7c5d84b11caa220108ce5a8b9f57920c7583742dc6b42cd256a572f04fdb06af21622b9f618492294b850103a08350dfb19aa545d77d0a8fba08e373da1d2f0791274967c25b3cd0092ba9a26a3e3f54151b4e930d41caf83e319928af5146dd56689e8d613e1d78aa5067bbdffea71b69e3f7b5b92f81f015ee02f8eee09be966e72ad6a304e51276c05f283739b2785d429538aea85e49c1bb8c8d12846cdcc26eda9c119cf41e658600c06401bdc63a18b21e14ecc8a4fbdaaa2a786ffd8bd4d6554c187a596d612fc325b02ffeeb946d3b95e1cb5c795509e17da6368263e803eede17804c415ff01dec9ca4d3e52077ed0bddd5cb93ca618f5ee8841fcdbdd5f4e81dd7043e29328b5cad28f538d93fdb2b63051d58471a5187bf494de4e7a22df08423cff4c43e3aea9da65f68b9e81d4fdac0f534caee6a5cceefab4534a35529b9bb3f059a70b2d681405f56f8ae152bcb45dbb1e66500c0832273cdf2ebe0a596db7ab9225d665e4860eb69a1f385ae00248658a497dcf54f995ff66666c5a2ab22a23a06e3b831cf6c4c13266194c7df38f85f14fd4eb82740f6ec43033d96eaa1b97b710b1c10a5397aeba35d2ad0bd8933c3557aaa41a8db15bd761ec853a952e48c57e980d641b5bebe46ba2d67e3bfb3a35de829e287fffa01896e2a5edfaeb6223c541d033e1a0ede25ec8d2761c9a2c62b5451f0e3ec5994154140ab9f252d088c29ba4e75c72def7e805c79f2c2f98351380bc6ec5021894ebeea4434863bd6d18d0fcb6690e2d99f85e02eb0c988aedc647bd97d9e9f2803306a6236969aef71bab1a6368ddc3b117da544a908afb613790ad6cad928f8b5afbedcaebd4780b7aa2fcfd8362588a97b6ebaf8b8d140741cf8483b68b7b214bdb7168b2887557dc30c156e54797165c10aa9862aade19557ef1df8c194b830a566509e8dbce80c39e7170c66c05536efecf30fe88f7ba00dda31b71cc0cd54d8dedf21622365831546caa9b239d2b484fd2d25caf92d0e858f2d194bd97064a0ac819f89808e439b40e1ef8b3c13467204bf8dd03b2b5280045efb74631443ba9071bc097318120eec1c7328af6cc17490463fde54cac9e4f0fe04a146c093f0bf46db85451be3799147d7215917f9cf33a3d41a0edaaf105323bbdbd230366ec1b60c2cd1f1b260c1ab45fe94ec60d0f260f90ec950ef288ccba36f747fce4968147f09704c19258428fa089d7f0ef3fdd7ac4cf7ee45991880f582080983cf6f65275c17cef6a359dfe4c1f80a415280c22ab8a328922fad6fd10bd63a43ef3846ff6afddc3268d9d7966eb0844110f864a12d159b0dcbe741ccee90d0505aeca1c37e68e12a6610e040f1d43f0b48f91ecc08ba4e86abd95bfbac33456039597e9faf2684e42f2c1a7f45c117e1c4ff127cf6c401774912bee4376d580d8c8b16b8065efb033ca47606f2f1798734efb9cd390f5cfdb914136d268840321268bc739ea22fd66c8c776dc4ba20a21d88b7a2ab40b47ba910a50215b3e91f3eaa3444244268a9bc99c4c1e830c34f8d51c3c1e1942032ccae5071f4a177fce20f85ee6066b7ddfbab0f2e070be17c7f441bd195e5f80474926df4bc2344d11c8311e038dad7adfb597e9def7fa27245b5287469b6f385d9bf469b41813341cd5d81d44a8d7a3ad0206a05071788496276d68822c0d4035228698046f5f5573e7aa24405b68c32cd67799068ea6e63ba1d3fb2140cf20201a88340c53ef5e3d9bb8d28dcbb72a4554c75668667229285ea9dcf41196be8c8ebf5862abc14b75190116c8502b0e66f0f8cd0d9650e1774224d5192057ade788d4f986851819f4f1b1c6139226be2e4d208aeae61c4bcc66ccef608c90ca48718aceb3b564599228d6159d6971442f87b6fc166b6ab65bee228bd53c475a85c662fbc8c58d36bc3a0cb041e0a2e9417430f36f6a603d5b0d633b68a2b3a4ab4fcbb2ac2eb825ed543ffb880d5908098de9c95c3dd00723bd133a4f672e57a46e5936e44894cd6618f8406805a4fe97ffebbf9a0d883328085c0043e8d0f4f2ead7c88d3920fa92fa8a86b01c12976c5f81473cc89fb078c9c86662dcbb92e1b4102462ae6bfff007b8dcaeba7c913b12ccb87ef4ce1b1b319634aa07d684c197afdfb0d74f4f7014c932bcf37ed2b2759c8e64f30fac917999cd9115028ccb554ab42597ed623912989835737af39c822a502911610b5845e41667e2c0bcdbde99b28a5f35080d3776169111396d0e5d04db79db46a361bf6a63e494dc16cdf4f09658d0302abf8e3a4f4c0ae41126b4cee7aa5e69fbada491935c93299bac9d16e6394ed64b5b8b5da6f124d75d2805e06a16b210b433a671928961feee99de92392d39c11d528068af5d4f61127e6691c989f42548135fb4183d4081d4e4396d344e5d7a34f883078ce2acb4d1fedad8fb5ea3e214334411b7d21e73788f0e6a34cdaf726a746c933cee0bcf62fa834805a6ea05584189a2afabe5571ed84ff0a358143028fa60fe3e0dae46046ec819360729d605f0dae42a6ae0aa4c12c73f6bf46c3ddd80cd2d8bf3abab0f819c3e2948f96c1b36a2d27a67e8aa7d95cf1b592a96f3843bd25a9d1e9367959e0b8a5baa64a0e72931b32c01c0c1ee7c5a1e414b0d5b39448268a332fc7d39cb0500b4b83a993efa34fabbb7f721bef588cbd1ba5dc17825bcf1f9088a955f40c6f1a2329996caf2b59754524574394ba273377b6148a42afca2da633b65bebed91b1a9e7302849c13f1a8dd4c684353ec9d19011b368956ef222e15985add2bd4f7bb97d6f6cf083791966896a379b36a0057c50055667a28b6f77d4ca9180f53ac917df68bdf3b613b9c7b2ef258c0993714dcbf615e241bdf8f37dc736173e84d9914851afec12ca75f910cf89e76c0b26d2f2f57acd8586f6f2a1543f6ce609195967920067286587c52201fe1bb706503b0b127eefd005e8dd23de7678cfd47e86d3cc0f4b6a9a8ff4b9f3d673b415b174b6fe8511eb320e42daa857435d66e37c91e0b5ff3a978a7f84ce892cf22f38c1c630d953bf5bcb617bf0c252ce920a177b2cf6a97162208b12474b40098b4498cf5434d3f5cb3e8b9be7b219e3a5b58c95aed44dd95eea6a2c51cae84de318746724bf45bc1b4200fac756b91ff578d07232f36febaa9f5003196b029040606cc36dcc277c3f4c38677c917d03815aee04a07981546b53dffc91652cd2ce6e20987fe6c6c07540bfd71c83d9501cf157720dc7305b398bfba24a3e928b8d50fb4075a5bf7e6e30bf666b1135cfbc610c80d769e33017dc6e72b44a221583dd370d0d6ae50f61189e1f61fbf7e708387a8e7dbd1d1b053f9dbfa98c6a9990f312f67a74583b2345e37c9db8188130d9f95a92f865ba4ec0372e2c17e0f6818bc7202b6a31fcdea54338be6e967003b481eb7e3f49013304d491df560e50446b6aaff952e489e0fc8385f1c9036d08318110a95de813b244aec1c2612bb4e92a159251671a2ca734077ba932dc4a93cf78df3b85e05258860d11bafb88697c2c1252d9d1f3500697ca8bf43da93e4ab3d93d4c28a8e485b79756869c486248aaefc30777a61b200a971d3c0d7549fa5f1bce15188dbcbd432b7ed9a04776f35ecdff6aaf6a8f6be654d6a25a11544dd8f17015267d011e5a2fd0ac2a8499b08d7af623ee486b208413acdb7ee0795780914a14940592198161b0f9d9e69c6604a404f80adad0c302af205944b4b0b266b7ad41d2d251a3663c3c3daeef6f2fb5b4ddd898f9c27cf90a673a55080f28bfe3947e3b3793de241b99ba679a082a381e6b207f8adb4441512246509d1f63184e74753d39369943ec7482cc78cd56c12fbfd94fcd0920182a9b0a180f0529e9299f4c42fe34db3560673566db6c5a1beff3f4c58edabfa34696f68258ee9eeba59b6ec371259d53f505c82497d7093e018132fc328d897b6d0b059863008a1a86e27b4e7b205074678e3c743c95d335caaa68bb88bb5c5eff454d1075c4d9cf61c08d3df13761a8658f625adf878d4d74911e9595db73f4c5dcea775434b1cc34eae7cdbca3c1133c385819985c67b360437718c0f1bbf060fa00b4babd2919353623e9205cd6c8081b70e6744e96327dc05aecd620f65f450ab64212765f0327fef13563e5dde02884efb1ea33d7b3af3f5a9cdfa67b17fa0d9d9392421d867d9775aa304a19b098ea7359ba081b4aca239415eec9c776210579c392d212f7ba970f412273307a628440f217c7654ce65bac904fc7615b184b0551eb7f94a7d9c5d101d365c7f9d2611523fb19bc1aaf413bbd10034d10f10c26da295a2795216ac34864faeb7aeac6d4eea89bf6b7160ec3c97418eb474f542fb67d05dfee5747dad27b6229a3da4b7511649778c56975f960c343d616dc43a471d41b477a360563a2813a06956900e256df6457da73d406bc0a490e4c1ab7f0c662d2d483e9bc459126ab42975c7c275c6aca3b209bb81501035d2dcd23434aa1471529d24e516f3d84d83ef3f9555fe342594fc2d552a4676713fbb026b4c7c1bdd0c512c4c95156f926c943093e77f1eb15f1b14c63c804e9589c148ec5adf64bcb6c896c68853494bbac2f0690cc8d58ac8490f63f330c49c3133f9650b2ac3f57e9521323fb8c4330bb370426ca57e4cc8ae3e73ae56d3116c40ed958e82ee86a48bac6c6db1d4846f42e949dddd4d2d249c9af2f62b13973723e0fc05aad211fb3918fa62a1920c2ecd217e7ac2e83d9158766d71203b533911839dca9f4c1fbd267e6232264a9a76fb5cea90c64d1877c5bc122d93ba24febb558ae53e4c8042d313a09c407124e7710222dbc8de464269d1ddc8590cefaa536e17a2cc89ba46fc4547154c5cdc5adb2a8fa909e4d21b6179f731bd996ed2355aa215731237031f89d5fde9fdb75107671c4e2bebdb697a2b5fc5b4e8eb7766ea931b3bb1b9534e2f4a3441eeb810fd4ad0e8713416824002a721e0e91870c3f66a0f609a88cddd5eca36eb6e0f49c9e782299b2ff105a792457d825e756a567572d95bee120df01bf3998fa4732565474497d37da7ff20faba0414c71c68619d2b55a267ac1c31ac3332c7c9543fac332e03c56f6056e6340967eccd2710cd5d8a2df718fa5cae6f22b31a3b28bbf95081773c6760eacaeda7819071144e6d144350437dd2fb8ccdaf7e87ac52a0928dd12ec1f4f9a6d31ce860e2bb40cd4367316131a89cd3066558de38a9767b2d5de26a3b00e5995fa477029d2ece03555afa310f155ecd96d37297ec45c0a04924329d899da0ef77b9a8bcd4f6279e2c8b8fc2fe0edf6b8984417d68c63753c9eb2cc688c53b5e31669be9b59800a5a85e10ceba371c32eb60148b365a2d0bf0457d9b3dbd48104e0d7b4e16aa184014a72089d0e97fd52373b113419cddd9550fe79f201ccf694887e421e01308c2194312af00057a2fa97104e10c70aa3a6971f9c64858409fc384eae67786827024b294350bc6fcfc7d01b947efe67c90fb027490933d2348a2f43753d087360da11c60113d5e8c1d022a5a9a97e205d0fc01b3297a4db099f0e2fd9bff3441d513ae09d5969c6b95155afc66cb29888c791abd61d619129e0b310b98e426fc03f620a01f23d12a1794ef971cdf3b846fd7cf331603e3c63d8bce70168150beb050f8d3be787dbb4d199f8678e5955fcdf3601eadf3a665ac8d0c074b44789ba6594814152224a40e61273a6b11ff637530d1eeac14cf0e7433c5e498c3c3d3303982a1904629295fc1507ecd98588ffe3906f70f91b7a5cad82d626c25bb5b1dd19abebd233054d60c61b7fc06b68e0f557a400a0b527825a6810730d1826803cf0db60f8a9aa6da81650ad450f81756cdf5d91a72b516581bfbbc405e560aba234042940086dad86ae4eb761eec92648160507483670fe4c2e0d83c19e808278a256c40ff36b213873ad624b90ea50cdbbd0e685d45f73b46bc5e0fea09460cd968fa9af54fb8a50d7485d997f066d0ca9b2cc279ae82ea43fdbfb663d87e2ef9c1558cc7f4cb2381a12daed2188f7420bda999189ff8152a35d2f3510f8d1014c4545b580f3b9cae1c972887924bc4422b52e6c51aeb07b7418ab0b661e283a06f2ff5b8a4b2b940de1923da828ecc208dd11c19852e891192190c450b11f6d91b26f04bb17d790c21450dd897422f023499557afda39405efc105872ebd4165603501feef9566974ede2745955f26c521260275d3c1f422391a920ba8da4130ed7da28299ca7ebade7276580f823bf22340888a6bfc04d8979af14a0c51f3dd96f4f8fc1cd23708ecbf71daade172bcd9daec2b0aa31aa68ca2e0d7a917785eafd8001d29b2986263d6d516a53cd8aee0ae66ae9085791ce5ecfb1980dbacd39f3779c0640c1d145d4034cbcf254a21ed0748fc6b6d8695edc133a896284b012cce322893824e7e1a2010c5a4af07520705b815e960051fca47e826a8914763203e742e955ac61ed5137b6095879ae70286a13296131ff1c81fbee8edb00b087ad8a743252bf68f89fe8bd5c870967910ce156e234360340ab154bff3ad7cdb6f080963376dce23ce15586e697adc05958b9ad30b1cc5cf99505a413b5455425946aeb008093d6984ff84561fa9d2d63291116f56f8bb83e22d8caee12b7251d0c52eb2196f8e91c57824d26c89a9e3ae21d9b9b4f1919432d7d4ba0be5cf462540951be0a1bc2af3a8b972ed248a9085b080011c414c119133a0a3b5a86c09a95d24be7c71cfc886b2b63400eb31377c09b050212885fa87af77d022546dca82682b0d5ec2d96182e0e4e2c9bf36a03f412d2fb1e5a4d68f6097239b259c603b51e58b4daaddf28684878b9fbaa5002d4eeb1e1a9fb1c9b4078abc6534481d96fef615c1a0329aeb2c303ffc7b45fbf445e9fff84b709ee2febdd2571965f81003d581332f9c6042a87b08d8bb31b597ddc05fa5eac591e468635af5c4ff372114dc015facce69a82f650b8a8efcd7c70520637f36b933245cf67e5c334ce6a95a3980ece9ea50431e59c360baf9a8ff72f7350cdea03f65b4b70cc0bd011908953c2dce753f2de99a0f898ee0327f4e653c89a0223c635093cb55131af5bc74bc6c8cbf59670b8eefa1d5751ab886d4133aa2e26b361a81eb1e4480b3048ec23c3206c38aa63d8f65eec65736ba67aa1d8919be7ec96784aee324efdc77ef02df180263000432873aaf4975a0f7dd6e40008f4da0e9625f51ac7d2d5892b99540b3113b0d4bddd2a8090c705acdd71db45e813525018b5cb1ba4ea084ea1c4ae9c2a6e6c5c6255ce73a45804f48ce0080597c6bf8eeb22ee8fd3dc5c91353067bcc208f9bc65d6de1229370cb4fa4017fdd3e55973190965d376ec76074774f9fc74833d63ecd299b582018279e6d8f7861248d21fd5ff80f1ca09b710926dc6099cfbfa5de48acacddee32cb7812a024d40e76415f139ac6aab9257974a0f2e2e6860ee2742f3535440768e448efc4f30a98e5c45c453b47b3c46b5629bfc8873e75f17536601394b26f50004d052bb5423719fa77a230c02c21208f5a9a0540160f7f4da3816b3762d6925ddb086eaafd92b6cba96630674854eed50ce16d860d8a64ce7c121b721ba05e2ba4a7e71fc54cfb4b690aa61502499b3262a817ffb4ad3390d7dfa21d09c86eb7192a2a8e8f0022b4aeb478b3a70140746439b2b0c88b26d83894e636d095b52a8d8339f1728c24dad8e09330472f58b3f7f24216edafe175a49ef1f06dd6025adc2e5abc51f5d1f3208172aa59d4fb19204e73ec1f0f8497967bbaaee5aef40179899ef9e975fb7d9458fa9e99eba4cb15e4b4f242af42d269e5ea45efbed8980396b3266724f5f4c0cb94aec739c3c712fdfc1967352713fdf521e1437f3b917e5451f0da9e151015a70b7b6b761c35d06aac28d082786f7887027141466da70dd0c752c68f9f4b0a774f53964001e9fc6600cf94aa27aca3c4a6be3899005154b1a58488d63ce4221ce0f2eb09446e62a6ff3413c0d527922cc6044d81f1dc9b3b81e9fbba3931f743cd7f21f75a63b8bea660a200041e664268848feb77251b1f207fd5051a59c29fc2efbf920d1a01658b9c3c760a2d6e7f21a3efb6be6661b859e40bc5a403facf803c15a764a510dc541af442fdd9a0fb6497ba6b4212f3df53e12e45397ed9c2c153c52c26819b329d3c056b916857100a5cf2fdb20be32e7d802fc128a7c32db6a78cf176ad7713c9cb94fa845ebd834b5ac9849e309a0dc33df6b9f67849d230c2db4e8566c39285350a93aeeb4367159c93fe0c17edca16de4d821e2444207f0b920e1ba2a20d91cae143cfada7dca85384acc9a9dab797a31947aed023af8f286f8a5cf791259b52bd6d428203eb77083d417f2449c546c84017128a56da0b7a98997df61a65d0b75f5af3f3169cf602108b80af9c9e647acde14e5155cce83df13b7ab7b3653920de060f47414afcf91d5e7522f9fc7d7e59e3e821f8d0978c88281503c3c974ab9d812b7b328d1469c86a5631a6ead6fd5ec0dc10df366ad8206cd2eec5f615f345e1c17a82dcf3c047d06ed4449e5f9f5bead32ca621050954b5560acca63a5226663191a228d3d2806e11dc37d86aaac713ea3fd3caee64b8530b0df94babcd8171a3ad4f3c4acb8773782bb691734ce3fec0d029d46d1993e3f6b27d3e66820741126201ef9e1a07f1972b56b7566a8d9080a747e9d676d21a3174cf6790575c571a0f939a0891be41c6a213d18df1756c4abcad20ad936ece13ba798a1a08c581156fa2624249d81c99ad438739797c951a62211e7ecd16e28dbe7ab87de6deaafe91bb821b11b0224b436ba09011623a7e6f8b5e027b5f0506d5a4d98512cb3189ad2432082beec90eddf2a56df3025edce48ebed20fa5d701977a30d84e1eeb1e594306179f505428ba7f7d07a3cdd9bef5b617941026c6f5091ca93852bfafbc1049b9dcd1335cf1d4770b5e28ade83a43206322659fd1c4594a5bc3d29e9e1efcca0c5b2551edabe85601df012568b1d77b27393b20320b60e556ab8e1b3a97621a6e0b96950ccbb40f45c9a1ea1e12e727980dad9c49eb7fd8ced16789ba208519afe94d5d1b4d9f7405a648af9bbdd1d2c2e786508d2332d63779abe74375a9371be917fb436074bad94143441fb6ca5b21480d71dae9b67bdbb44f0be28c433f445f526be184e340fc05b5a805542db307cdec112a04f889a468780509426da97bc233526c782f08eade28b6e5f236bd663f9298e03b7de2c1502a238f0dcdc8f449c4ce8f90b495a72942d5be3789b44e47f8374639793f173e64a5146c30a65a3d7a26d5994b03fd41d93cd6ef28a28acdc8230063d73d402531a00c8e79fe29ac829697a88c7899d8b28b8f06fa48e7c1b704496c989b80909d50016b26337f5221e6689caf57c71758e8a686173f76210bd2c3ad4801547ccb55069a5a79c0a47de11579cefceafd4b21f6e206689f1f66228fb4765cdf982e6123d5e7fceac74d61d7b718b9c7877cc63af6987850ce2ace74cfc4d294380b29f62f6a12481a67e375f8e6662066fc3f9640f43287eec5f048edc2f5f76f3e8f30cb324bd37d8899dc17d9a904658e569caafb93e9b10d7bca942412198f3d49631ddcaf6a0809c0e764e76749173c09729449958b141205eb7879cdcf21f6994777276b655f3939eb2aeb88586192dda8908e4ce85239c0612b036b111fc80cf041a781a60f288ee852758fff417813098afd5c30534f4be78f798ea3064c00082b6e9482bb81a139fa5998f0a56aa8d143fe8658c8fa048065f55f32866585407450c953c8a17d8dc904a81b3a04cc59e1bda0ad545d0de57238c42da360a88388d58f2a5b918cad77627d2759215d867f34db132234785154a78f598f276c48e847ad495cc3dd119bb288179beb4978a504c21f7d473f22bafc9c74d14d3f2df4144742cfea3292159e243be89f4657f1599cbe5c5acb0cb3a47dbce7b6bd727f564d4b1bfd0001c21f67b0986d9b1db97bf986ce5a9eaa4796998edf01da05d97acab5f8abd3a43bbb6d3719800972ec0e33d8140bbc506678de3ce9b7e635f361a8475a6cd6ffe485687433120ea303132ff1eca3df1b0717b11c1ec25db257a257e3292854b05995056806542e0b4204c770f16d2427748b1c09a10d6ba50d1db940d7db2ed74df782277993a65c5e5b3b25586592350f4d88303e5b5c031620b1cc4bf68c3376f60cd77c2c1c8242191fd009aacc886b5b46ecb66913f048ca52c24f9fbbce02509e0a7fb56f694d9f9e3edda31fede9136dbffe8e7afc52152906d480b88d2936775539eb7c10b9ee5ee6423b6e5de8d10d26fbe823dc3e43127b3248aa5331fd96404e5b95bc407147e1babd7e816c98a6a12abfd617d4b10b650897295d22d227839d574e3cc226c74263943e88e054c12c9b4eeb58ebfddf42c2b689df3c39902963b49d3983c6fa0325455714b09713a6bd6a54dd7f8804f3c95b45e297ae393ab9788209b73375fbbd25b8e680f240f628d75ceff0673c243d35f01360129c429a0215897699f41e6634247ec55a4a34df0e55627af157b46a7dfc8ff268e8a80940397b6cb4ded7a2399071d4391171df30d73cd4fbac7b4a697217c5ad8b5ed469b10083afdefc6e165ba18b4228502c94f42ddd0ce14354ef73ed51ab4a05059c1a887f69e4b93740574cd496be0c84b56d7c98df86010a02d1a9efcd5f6eb24393ee44398f872d39457c23c45719d80d9e57884eac358895e87cc13ab5ceb43aaec5a95291630cf7708bc24e911d35f38728e8ea9ed744cf22a891afb17bb4f9312fefabebe157cc4003017a0203930e3742dc8bf741a19849ab32ca568c995ca9b5d7234e4cf41c9db59d059c8d04196d261854d597547a7d9614259f3bc03a5eb837f4ad73bbddd76f07232a0d2a3c41f720af5e92ba739f134a1c473b2dc1f99bcb46eb6515247fdf88085c01a902329830968c5c0f74e46ba8968fb00c17430f4f2ed25dde5283c8934c77037451874e97b7870800c1a748ce7e0f5eb04c24df3466ed9f57013476480abf44ec2014efc92c044a28aa03e85cd246e36a9cc013710835c64803cf4a3859056b31856865b453a4805a2c5ce0441d151e72c71b6458be5918fcfee47219f6305e401f6ea4ab5ad0b7465d7a6a5c1c12190428cddf8313d5926f35e670250a31c31b8f552ec2167d0366912bff6ba2b3d990ecbba633b1b94b37bbd90b68eb942a606ceefd55a851dfb7bb9712a87d4d9490895a03efc9f44e6a60f51bab9968723e3889cc84a21cef4fe991eafd6507674ffb7d0693b91589b2f4317ccd7149b6f3ffa2f125d97c901fca44f9d292106811f7a5d7041294facacd4aa27ac69052d12a5fcbc63d87f4f136e931217ba95d6b1f4fe24d5545b4bd73d40bdb0494758453a636e72b5bfaab277356445e0e76d344a2e2ebd2362602ea2f4f9c05a761bdb8f5eef7681bb3962550df57154158fde5e3431aa684d90b84681f05e9a5f14e04dfe251d4669f0fcc7ecda48d6402d2210413a3439d8c50b021bd8750011b4704ad2779f52813ace7db244854d5277bb973391f9df0b3804dfb3555834b88adff4120d603e321a084a22b20d114b4330e0f78c488f1113e34c11a26bfcf6e672a27a4f1d6eae6c1b44fef4f911a1c3088787fc30ceffe2cd3a858325777e6a865e73bb04872463fd4acfa7d32138567a599e82fcf2236d0f347a71e1fd38fa0e63213fcb8057d60626fe53ea5560ce8bcd536755a85929f74c62908493f9083f73c6cddc0544f88338bf905268004f49598fd7c93448d7815e6c6317e84932179ca2f9d670502de1962182716584166f201610c3dad3022bd5e0fcd01652ce417f2282180e3b911514046ed88ff14a8ed9828eb2e44e74813200942b5021c32884558018a5093cf0e619d331497e99ceb8879193848c237efb476f17399770b29ea0a1feea277d24731565fe577847f2ee17d3d90a85cfb0aea08f891387d7fcbb7b87439d883fe6d5f1f8008c0331754920fed2f20162adfb62b5685441188d9fae3ee4bbd311db79e877ffdcb1f930bb2a83b52312526494600293d0ce5e9c5b0969be054ea26bde2bfc6a5e67cdec8692ebb1ac3c31571b2caa43a2820c9eae23686c67b967d55f217210e4157d7528823ecb844c2bd7948b542e26fc9d18d1264fa84560df94422222e73f90955129858fb7cb0e9becb532485f10c3704c8ee8e6ea70dad64a16a1e26daadce2b650cacc1354783be6c0d8c4026b7ff599827dda156fc598df285eff04541ffc8f8bef8992346473f51843162e3256c544fe1f4d090a5cc59ac8e97c9bbff557fd982a6c065356f2c47b59441b6cb614fcce48531be107f71b3caa1b8509efa954e7ee01572c968ab05fccd854d08e697713665277e3a8d9e19b7c78398692730059ca166d730432bdf0d4494896c2974756ee8c5d11071a28ccf0ee8cb56553e02359f9f54aa5d9cb8bf2989bc41753a4ab64856bbfd4b3ef4c5f4818a416fe718da6ef9f865fbcd1299fe51f60121d8947d4bac8f1bfe466d98751166a2fe83c82583ba6d34aa40a20a2a60bd85768d0a77216a70fdfb15b843ade9d08bb9a7a3ad7585191199a87e01e47683d2b40bad0d783d6448818dee07471f9396458291d419c95a674bedc78ca2e3e90bbb517ded6e12f97d8db424fb186771254f2e0fa4c2df31811741268422562e4890ae743d92c18add60d12790a54dd5abeb33f15e99a0fe400d14ca666a209f4e03437e4ae18d9c5933e1e13c169ed29be5efbf3f36f09021b37fc49c899f65069f9330db010e0c52b5073d553bb729b43e5b90b5b1a31b833a2f6cb266a0bcd8d580bcc7b7e21ef3c5d3d2894832b1a72f133478cf14373c4fd920b052f679056ac8006216f1ecde0d5965442c0a388d03a5a9c03ab8e3591456e209bba899bd76209b78619ab568d384e8c158b6ebb1d759111353aad86873529de484d54b491d4c3642bede4a08c35d25be1eff1bc66a9c045c6bed5ba3beeae753618f8d06ce16a4f1fdf3e7cf33c9bb255bb433ee2b87eb95788ad8ef0297cfc2f058825a2f9b6e559469d891d21d2834bf49e1de9950b04b5f681c40c619097a62ffb39077c42a71159072bfb282a106401dc78f5d74133922d832218b3b8f6458017fa0806037d524837ea402f25e8edccf7b86d89bbd4a4c320f6158b0bb62aa5956895116546dcf147f65d399cd6d6bc4d77f672329de42dc78934a10ad46b2963620a863fa07c689d9aa6ed3ef51da6f12ed9c9e5aee732b7b2910b30972bb99e89be4debfbdbdee0dd5dc86636758a7967c3eb469aaebd0dc27efdd1f7b092b6f319d48f50a823c47113b54f6af7ae583e34b71116174d094ff4765e3530c76806edd01d51afb194f9c87a76fdbc953f00b260f8a7270bacc4f839df29fe40621a77bcb66a2c2a862e70ecf81716f5b445f16c8f1b491b9c5f39b2430bb79145353abab882aedc44db4a407a76e847272c5f2b5c59bb8c3f321f037fb8f37cb948c66a0b3648fbf419b68393c5de9047308fe3b247101d0a1b24e4573f68ae0b8245a8eb7a039fab2d0b5aaa7d837a817a5dd5fdc52c2aa7e8f80adece182a91c6dcf39ff961e8208c1b4f8e3ace387bb5cd1c951f8c0c502f16f59c3305afe616b3f8eeb6d2f98b1ba793e6682213bec5362b743e9d5ee3ccedc94b29f808345a3c289098fae14b1d96de5c63c53c7fe89b9de6b4a644ce47c46acccf528569bcb6152cb7714113c4fc75c54b1e69a166fa6977d17f8a52ea2493c6ebfcec227badfd18539baaa08428ac8c325fca44ec1438cf21d5818b08645677c23f4c0464de953579e3e3d8ea33f6f81608c3c254568d16d00c7d8d011438d998b8985c80dc620aad292db831481c785dd4b7d848f87e300d7ddfa7fb48da53ab8d58e6ba963af21ae234fada3aaa0d8a5a38a4aa248675ec7ff2a8b7a34d04f1fa0e5d8ca0c98d21ba181770946e0cfd2362a01d54c86383cc1b8ebd859e5a98cf5246758a506ab0d3015d8126c214f11b1518318b012ec8bbb612f294febc9608ce3142e8effd1bd0c56701bab8e645e8a9c25493880c0c58ca446363793d22da6f182921f30b5e36a3afce46d993588888bfbc2dfad02e35569b8ef9bde5512aa56be4c675453eb7d7fcdd48296a644f3f61924a6a57d3f244ecbc897cfb69990d789ef33b5fd2bc37c3e845e4ab71cac50cc31fe4b3220b3839a97224229f32b895debf8960f9fc477a7c950efb3b1437749aaa97164298aaa799af122c6b752f28ec9b3a0ba6906004964440e1c0b0cfb7d66c14fb89f31efa6c7f55104258c350e9629b8482ae1deb504954981b40eb9eab434b0e0ae5a1a44f01156416dd4beb1a389698d71d0a731f300ec3082dccc54f0f8791883c6e04d8e9a477ebc0b8d1c51f53a4ad3ec938e5fae63e6c0584607230595558a33570136ef90adc34f228c496881606707277f12db311c91b92a1720b36245d1460409b2df05db1b4602a093c6ba053c2ea9ccb5a33845a401aba992f80c393ff32e2270883a0d2dd64cba1ee8d286c9cec5aa05682c442458b06fb913995e890db29b62a9d7f0b170b7acdda45e3faa230dd7e4fd24c4c479a17e485727b2ffff229a3357abcdea6afa7ccd5e5d66f5d53677614deebbee916a7e38516af2b159bd835aaeeb5c08992fbf7abafc880731483d990d943e170e07fbff961534f7745c16bd6b0f08d65d65740b161418a4dd3c79cc0606fd262fd3f4dcc33de0d3953654a122a0bee905f6cc4e23b1558feb9c99acfeda70f946b246d373f5e1d08bdf2dbad6c353512517d10c10dbb5d410282a1e928e6e822dd56a5d2e9e7f02cd43d278b70f3e675dff410127cb32be9017f7ffb7c6e21430c6426566cb199622a487f2e24c394e7fa58d0b0c7ef5f73a7ece2dd491fb854d2f1351a9f6f4677c85b2903dd4dc8993b271f15e1ca982e20b38d551009138908be8fa00522ee6e9202e9d3a7601cd4961267fea6f749f62787e34307cde1ee744fac2b890aaffcdac0953e80880d13be1279ca6e1d0c28793408963ac963545bed33f84f727b8bd4829d2ecbaeeb970fd7970068d4269e5291d94687ab83812ec41f760d4c4c19d9c81dfc812f41aa682d129cb040e18e8a8cda79efb88c0901b59149068a16e77eb01bcf2c069c7196be1fa515648518b01e3c4490b8b45363dd240a404beb8508dcc73c0c4838925029eaa89cba9b258a49ff5418f7bab02c0089ebf358f7f6abad7ec46ddd2269a4ef6b6247a99ce315032a7114801ba4cb8b3d6bf0487592d11e3892bedbf5942e9c24af945cf72a5483f64eeabe7b0c26ec105e8dd2aea8af0b641da21453382b259d6ac62650d8359b2040df593a603e20e149c1941f0214710e42a49ea81e1664f035444b7a735e8a30de7221bda473c369cfc96ef04542317d86e59ddb24563200e6d44e9f0d13e82a22b4d664c499304c4ffebb37b5eb0069f26f57fa21acb11302d22cd8d1da43d95415f3653e394f4eb0f0e1df7194b9a06aa358c6f50f1f6c50867d80d2db9f59f36249981eb9db2d0b0ec02947eb29132b2def698e04db60c6c925e4c29d25068d304a549cb799026a1c29a18aec4f6e5a0ad1463df28998e21e1073f157c7485577b3fdfb38687fe5dfb04d0487021787682fca00c9ff8a83096595fa0f52b589f3947b0655ba1c3eed3e09bca93a5cd64f9f0da9ce675469c315208e99136e711b41c13a8a27482da02e31a7695f3f823ed37dac0ac2ceff782ab0fdd4174482b1c28ee05049340eb57815176a7bad3a31d1e86d7ea6b541cbec904dfaac9aa5aea667681969a5b6aaecffaeeaa9cb77e5eb750fd9ea00ea84057dd6202ea739c70f443f1848f49d24fa2fa94ca2a491e2de924af0c5f2adf191b453a44be72a7c78f7039f9e92b569512d8a573ae2adea3d74bd118c890a2b5c8bb9b8868eb66e7abeb10ff105adfb95e35ddffbdab2d0c88b99fe4152602ad4259ed66debea818a0e3e3188c9554a067832144384ece17a0a14e038650f0a7885e319ab0e060d41ccee0e62f4223b2a2ff54455b29485a8dd9482213673be998e2ee82c58881033e861b9a9500e9441f175570bfb85d9d07ee866f9c450dd9ec46cf8668affa71e1f8e19e96d9131576549e38b44c1fd7b10ae0d04f0fd0bf5588839e4c34329ec7cbcc7ca07ccd8d894c072309028f664d0dfb68d150d21bfdfacbb8205a5abb541f1d3da3fb7f7d5e7fe9220ea62bbcd9b0a28b5fa09298c409607a8fc1081f850e0d174ddb0bd87340f5ebd3efc6202141b7c5809ae608eab76b5703b4739c7593d0a69f4134f261c9cce90c2e3232c30a28c785098544ddb28b0a8228f2afa51ceb345081300c78f17ccdbeb6980656502dac60c3630ab992438b7f17a33a93fa542e3e4570f1350ccc4e811ba5351e2264452010a08730095d65cc1be5017f8b4b93ca69fcb39394e538cb53eb522169aa9f6399365725c17085139d838e42dca564a9fd062991c870be1f11526d70d022c42aef12703844663025237d8ad777a7fdb7d00bd732e57bbf24bcbe9eb2694d76b9ec0a3f7d8215709bffad4f740b392049e9ffe8e7ea06f9be8ae2d4927c97013d326f18751520b9fee91366c4f3890f072c3e58834cec1936a9f2b3745d0ccfb9f28380ff3ebb84611c31ea389d69241c4302d985a93cd57f74bd8d668d39661f49cbb04377a6d4a464ecfb0450a4815c04e460905fdecdaf09aa9d1f5b0c56ec4f2f850d9735e4387bc8666665c89ee3fec5795cd549ca97abb7efd1f0a7fb9b490907fe23de8dc0b7764625bd552251c684a6572101abb1f6d29b1a986e148e12ef4b2f0931a7080b75280dbc5ad25809aa40a022d0e4c869cbeee819b05043c197caaa798d88db0b8f72469ac1c112807976ec4f20aaceaf496d34ced01ec0594bae1680c0f252855ee863e472331f43a9eb8d3b9a35ac66c105ebb638f73bcc54a5968aaa54d3c45b06eaa8bd9193bc09d544364cf1dc5e9c21a845f0dd51cd12bb7ac04f435a42e1426846178f7c9922c4b59014c9caea3f771f11bc60742f6741610e0ee5693ea598a31a2a5ade05e5ed871f21783f8c4968030df392a71c79376891bdd838e22894fb5ff27f166aafb160095570fc908354f6542c7e1ee19b7ce98c55290123ed37376bdcd71d1424c0df99f8486e39688a366a2dc668ea92deb2b51596cc8a4916dbf533e4baf9accdc5e246dfbbac71eab539dcad1f26ab4f813053163657ab30430deeae9c4708f274bd3495496c23f1be994a72f7a9ed2d1b53c067c4b56c83d660a14e000926a7484d374610717b90c4ae4ea9c89e831a60934fae78825b04b4e914942a65fdc9eea2b684675a381d17ad4e048be6c403cfc4faa89bc370e7aa2f8e502e4ae8b9d242463804f8285f2d4ab91f7d2986f6f1e2e9195c6e411541aca0d465d9c13b41d9333ffed3d0b7a777cd95472f2b485f302594fc652b3bee1d2919e60b73f0f5d72f3071686dd7be83e32a6c4b9644599becf849cb66af39380aad2051c241e1502a0ef6c0ffb5b6a9ce9f9fd17642e10020a09ac2b98b43ec1484a57af9382b17e6f79542c0de50f1098b7bde9b22787c9f2d2d50718ac2243c2288941339177943b7390b0b55ad4ed1ecdd2a3a08eede1ebcdf067eaf087df875c26f4998e4f31d074de23fea333b9335e4a3d85960060235136a9a0dbf4974e5dc3d38861268b681ac24240d26678bc6165218953de8959e01c81b2977e006a1adaffa48c30e5b18daf7b4dcafbd5251e0cd97074c8a0f5f48fbf52d87bd2462ecbcc8e40904369f390cdf9e974c3e8f5fe1b2dfab79e0564fde624e1fd4a63d2a08b644e34b430d02d42c236445f8de5b03fad21202b6f16c2ae173b992a62d5e0677d796ef47f0143cbe4607d58392d14bd626be016d2f3dd4c4448ff195666592e50e0b58e5a0cab4dee136c4bceb762d115fe49bdb2b64993f68c88b6178e981aee33c772a02e2bd3ac95504f5c5f271aad1dfe92db29347d1dbdae6e47a101e13603b5f1133c5f3037863f0220abce9d622eb3b08fc4c28865183525244e1e9a18dfa9bd383a31555b1b63cb7f46539e69318f80cfb1ea06355c168302a909d57d46c17574c139a6af6200ee417674454140209136c485309e3d934c03d364ff6428c03ac85371438c70a680fa36c2d5559204600f56623e5a81e30a4fcd3b942608d500b280e752fea8892914ef8005ce0fa0b21381430b4983e0fff51f75b0c652cd7b0131264aef24c6ce4851ced9cf3e0e965be4d20709d38805aa4ef030a4f2c0b8c96d19c21c89c103b0d147c0f94166fe76dfb1e4631fd89e724e774f8810c128caff43ed25e8c424d441544f293f084ae169531010a6fc1568485017538a5038ad12d5c3b4754cec5a23bbf4979b345dcd8362d2fdaa635dadf29b8d2b96e74413d12fc512402b2c1be40542932a31d4588e15e41249dd208613bc53228adff37874b38034f75dab2e0d6b5020d93ae81c21fea460712cb2c105318818790998a18ec6cc493b58d7ec0a7748eedda8d3a1520912cadd265debcca808062c08ecfaa83025e03ca45f55e05318bdcdb0cbd9f1eb706eb908429458b52613af64d04e2a5f1188e0995fffb429b852fb13510927de586159112b8292aab0ea90526561a6e6609a983b1f7c50b39edba2303173e47c81eea3da9465b44cef7b9bacd802ce0830e48713b446091d1464d39c903fb6dbe11d3fae878f4fe663188b1573af76924deb1f73e719778965c2edd2647e644996a1d022045fe9c50d2f3ead3a765abe33bda171e2cf3c1d35056e7cc80d9e55fad7ef06042dbefefbd884c9cff71f97676e84394b258bf69da3c5ceddb8949c2bbff6b7e86c45eefd08d032165ad99ac4a25e915dd5aa39b207504af486dffd4b48150f22e54b5c186d5514b961d3accbfc61e086debb86772debc9688950501cb23f2112e0e03381cf135ee0446ec8891d19783be859134945e68adf2cd5207b3997f3df84c9c9d4f8a8ef51da5cd38e824292e038249668fb29189e7808689de3945e42bd5c7c5dca22cb07ae809e252561805027717a3ac9123b317b4ba45ac26a94fd596827ebf75f4ce6258fbdee31821b6d25e26af0faa519acc3beb2a5edecda0a681b0b02a8766158e5068a01bd5faeba7f072dde092fce4e81601ee9308037c156bf277ac321be4e73be94e4fc4c74238080c9c42d3aeefae1f86ae54fe67149b22036f99055af3dae8859768d2dcde877649a2c047adbbb61c58bfb7b2f87431731761238bd4ead436eac5610e2c8324ff8965273a9f802216750b2306832e2960f61952a6b849f1e06dc2c3a658f3a7dcb95ab53de091edfc1e6feb4243e316ff155367814e1424faf98cd98be3761b0e021de9ce1f2f8251fc51f2b40072e99c62040ff676497d033eb1c7d71267ccec06b25726cb6e92c03d11323047fda607c026bd96f9adf63a1479c733387c2c22c1fbb8f88b3e426c40172f59a885410215df81a4b5b68075cd8b017b47eb13ec48df6c1cdbdd824f902bce2b3914dec510ec330dcc2c0bc0089ed38b4eb3c11c8a9eae48b4f8f52702445846316811f0b562f4c11e73b6996aeb15a8247b57a1b864a68657208a899a91ae032731d49090b51c0efb0cb3f99b55d29324f5ae8bbb5d84c1f498b0288e193dc6f668667d2cbf920ab3f95e20a238a5a842291254d2622d212be727e918e803c4f5f4a6cc49254bbf1553e62f92af3e60efdbc493dff3d0cda6caba02d240c8a89536981a0e989bdc9265d193d570d8bfbc87bb5b401c884de74c31f5b2a4b266cdae870ed594b53ca0dc0106e826cb6469d5e5ac0fe933384b5b595d676dd6eb54cb1f38f4662c0d33c50478d005e3d91f4f0131a412678549e380c68bf6a9592949b1562495f0223671e18193ec6cbff5a8979adc4262be7720cfe475febf126825f39367cbee7f65974728bae62e2f9acbae77afcb86b2c875e6b21f094bc0f2da7e47992298bf144273b56108e02d8f28977019863096c80882c7a980c8b076544dd09fd4043b62884eb11b0e19efcaa7c7483668b22d02b6a8b182506b291b1c2aafed15c3940e853e5b909b108917d6b8475d28fecbd151464bcbe785ecfec77d9e12ae1890e872f8491bf51932d72c5be17f982d9a2a8cbaa2c3c8841d9b4b41215566b600ac990508214552e36becc4a6895bb6c4421cbd302e111b90caed1c92297d91f2d095daa58ade43ca2a66fd3d52547db04ddc803d0e40d559f5d015194013195c77e92f66f22f85486880c6e4585c91e9cc91544ac13affc98818d6d20ca028f9bc4d5adcdb32f3381538a1af761f9bd63c2fbba2356463d94fa8f5f1ccc9d869171730e1687b73de431a7505d6322e2fed8ae0ef85784bcbea758af4fbe03cef7f1a8b5ea533621769c1a9212b26ca98d9aeb03d53ec2dd0c441f520c970a82aacaf9831e5e574dc69306a4e4d648d901431ee10094559e78532b525b2daa933bca722c3137a72253ee65fd6fd6319f496ebb9bcf5dc28b20dac0541499b6a696843774c97ad645b70cb9c8d79fc48b307037ee1a7a828abdc015866fcbf9a15085604274d19c37ef520e71690f37216a43938e5627ba411f045dd03fcb84acf32ca13da7d9b2193d97a708a740cbbb1bc4de057b9692e12ba1d15d8d0be939886c1ccf883438bace25405016c110e0623928c3c5b3dcaf5a26285ae4002c46f3690623beb907bd141628c727de0d5ad41fa4fe8aee14f6d8b5cd853fcef70c56aa63082b203c7e9fa9080f9f3edcd93f20b8c07a187e309c92c9c37c36312d2349d9a583e0eeaf5e0ed9874f0ccccd28358679864eb3678d8a4d61b5048a8acadcc2d35d93035811c65d5fdea074880b0488c0080a086c01100c8da5fcb4adbd95dcb418586b65200c05e961482e8c4c0f93f9f391961b5461d1b8ea01686703ce7416a2bf69bf02c23930fb2019de6230961990d0841605f407f26942d162f97121a50fccf011ce6fb93efafa36621194c2403d2352145e4216eb7cf5f3f98c89886eebafdcf8602618dca449de0a8c5ad497b9674bcd4c4e34f3462e6fe9f5247c6d44324cf017be0a8ea92be5552a7a2b01c344ee7776c499f0caa51f68e7221d17a9908bd97f3e4a2bb4d850ee9150c62aae16cf4707241a3aec68adb22a8d832214f97224f9ceca049c205563580a365a37091c2be1cb4fa4768092c93d0287ba3c90e5baf9720d9401090f8c2c1443020004e458d1791afaec7af363f95404eb6ae0010d05db9df1f9271003fe8445fa24bba620d1b1f4c3422543c11caf3cb10af0f1f023d5b34dc72683ad071082531cc9231679d02707f95cd774da93b7545c2c1ee87ed305566de83b68d385a03adceee9541e5281f7bf6b4f5d3fd50226d84fcc0f056aa4a1a2878d70b0dfa2a16c5347fd189c1001ffe6410b8e826399aad4e9bd25fbcf9c9d7d1e9b38f012b2a1190dd4509ad6db31b99ea331931a783a1ee197ad49bbc012433d345e60e0ecc76f4b443911a4e799e2cd0e2bd89a987e50f00592dff16c46502971a468182f1631e54807c276ec16ab5d58d22fc82d79be4826ff6a2ace4603155dcb8077a7110d43002942a119f0ff8d08f8a078a213c1f2701600c05fb801d29184ca1f23deb384e41008b80668c52922a589fc7c262326d7142917e9db3b09c6dcb0d029a50829c0a45bf804c06a96a618273105108bb9170b55250c1ce48274f45cd0628d4032198313053386349f944b694350a08cc432288e3760334923e2ceffb0369d669d192be72f12d102039a1f97dd3f686f9db47f91d966e271ea2ab7e2ba8586770c33c42df01d14d4eb54ba8d235b24f5b6fa90c475bb9e57a3562c7dd5f0efbb81db9d1089ffb371f20264148ee9a65a01b0891646f5148eed7b9f7decf3c681832f73fa97553b4f305bd8d61586117c81e419ffd6db948d54186de94da5841553d22c95af4edfe331ae74c17620c8cb4a5cc4a2103b37eeb59891e450b3ea7347bdfb9fb40b5f204a21bdc9ea05f14f07a4f92f075829c21ec358e9e0259014411ff1da174d08fe71d6c2a0c80b69380c1c609130cbb80dee7b006a272da8eb32be9283baf2c7f872e16ad6d4a6e13ad9f7028840036ef73f88c7b0e744f1d517b389327e8142a1a94049272ea9d4393a258cb1a80c81a9ca53b092f01ecf2abb76874e740be10e53b51a99467b8853d338281f2d84001e42b525891d6bc9e1576084a8625dec1427c5a03a39f5fe9979f8d2b848b3afc10512d6180ee3021f621a2c02d1d21fa97206b0f822f6b154b4f5870074f337b26d2018475c97b48ee3ff03bd74b55df842597ca46659cd30b66a28bdd97ea85f429f1208e11264bc042de943ae942e7d5d679d96cf820e18bc07f46b98f196ce95d47d4c3eaf95597e03977832bcf40496f91d6ca9380418c481b38446619317d2dea33cd5cc619d1d618d609b4af1d327b71f5700b39a56aca30289132926c9aa75d577643a328de00f4048e99b12baa105388c7f5314396739de4262d0caf83cba539ce478bae3aaa9031eda0253a45530be833c9a831e81769a525e6d8c1c4c9c5f0500b34beba06a3e9ead827a1b43a6ac4a191890be10939db9805323176999c718f981f483a99b0589e0c68ecfa47bd4b1c4286a97750d3499057c6ae12a178ecc3f210e3159879560f406c8b446071aaefa8a335f38a6566422641d1d517f9f447c0d9153b989955ad637c04f278d7df021517ba8ecb4f319091f8c071b6e008776cf7eb3a24153582aa87f9327fb5b732f94f703d038173489e63ecd58a6100eb38267d04e956e07eb0b442265c9c4bd06da1a921fb3bd965608a3bc8afad7cc4669c35ccd58088ba4cbbd67fdf42a0146a87cf33163e9f7a4face319c8f4419e00ce32217d6f48cf70241c1cd6f29b4a00adfc6fbfcc4c2ed397c069c7e672dce4b16af3d0eec5d568b40bce580798d3e42468d609fabbbca8e49206c767414a769b6ca4e9abc1691226657bb16e61ed459692690be33604d9c056bf719160de987516ea2f59918f9f7123612fa5553c142ebd8cd1e70d4a611f1c5d0b8733b48964dd7c165f0e5d0e53bdc923f0bffc2cd504c82944462b3cc773c538e15442224323f85867079f06a189d3384a95b8aab40a282e836ab9ab45f49836b5202c206b827df84bc693cc4361a595ff1aa915750c0803e2a194de95a05b49b07764d0100dde2a18de4984984a43adcb8008c125a938f0ff023288ad4ce78cb6959d30803440c3c4dee0b366c07d8c5c3934593619183432004e13c5356523a023dc435948fc7be01abbf8e7ee22ddbe93c98193a3328f0b5e3c64e098538eb7c4d5144ec6dc80e30209889be22d9c9f4b1c051a369031e9ec4e94ff15871e98a939d022685a5e845a82b3aa7d5f40584f2dadc3cd3a0a0bef5a6050523b4c9b3e3fccdce7f621b706395758d9b8c36e2e45b262d8be6019d926f468b31b69a7e49c1bd163c3c300430c700389451506d928e7a487c2e2e344490edace265732cc588040258eb6203ce8730af62ed4b62e59aba3db90b9e806dec039a9a0ddb01bf0a7c64eaad3c56e887b31b0ee251f65c65fd549f8134c926f473c88d6e2c6b6c7d5d7659f61d620b622792fb654bbeb2148a323cab841f83bfa5f9e09ace3f963e25dd8c41712f2af8bbe0051c5b99ef3538da4a8795dd986484cf9baecc6f24a32f323cd52b8ffb619232d54eab57381a64e70430fa3c75e591c03927e3cc90bc8b0bc85a868103542524d21f22956811f3648abc90ef0df8cca200b61b63bc992a3982c3eb311935f894ac44445839c61381abb330e716aa16bd1ef04503bbf4d811c7c10d48d6310c5d3c0be0013045ecf1eed2a8de4b87bcb8232964b2088e9eb66abc0e56534b56699ab3119b7a26693cbd665da51f347e15224e24e95fce2a8d7d5fe05489d80ba391ead7ccb2719f02e75c7656674ecd415175809d5a10f5005734185d4792bc94bd4036fb52d110e891852210e27c8f01f4e06f7e76361c69a3f319563a73fc61f4290c357265be61bdbd98b3906f34251cbf2e05a952c51e3ccfdd7cb8850b1de4db8e53abb064e26a7d797c31a584cc9537d74c6bc49e25e49a458cb2996b655eb3fa0bef3608f87033911e22ce42bfca943c4267d3480589a8ad0217e62de8b5b1bf64b19a33402ae2d12aa468c794ccc52d4194d8626f7047ce570b005c61c5c1f2c4e37680c42f333a54cb19d0b3481cd0163a9bfa4c430700f4b3058e84863ff9c8b75957aa5a1606bd5b1cadbe0f2f0c3668de29ef6f2aa70cc92b76e866e194ae406da39429cbac3ab40db0c4963928224a4cb8c6c9fcc93b9cb3ee0e59084bb584b7bc308465067004d1dd8149dfe014b2693a150818f6981773965f892077b0e0e7c58f503988f61cb6121937bad281bf66f8f58550540e859018cbab618fea582296c95804e16ad50f74bfaae1e4ad8fca8938c8d5859d27ca91f822cd53503b016cb90b02ce1fd70072581e962df1f1bad4f80cfa764474a9c5748605d31e86f202993b6746ea65104a5007f67c7e372da5855444d294e9601c4c517f42ea4cb291e8a61747d6e4a9e2aa967e2367e028a5e65577da16a1f02f3906d83dbfd54d5ea671ef533ef4a8cb41edc23b9bcf1655b9a41478676963d57d00a67611d1ac0ac5529182472cdf05a7b5ad4112c4b6119eb460706518bd435749de548d102a1fb8741fb53fb24502a89e3da68c59ddc500f713c096469fbae8f6b3ec6c788f4f739d91b650551b97d0bf54284c239f1005c47ec1e4ae4fe05e789cf2bddd19d14e0209246e511e7f6f014c2046510a24463111fe5573d43ac442e6d8ed982a64374b0b3b1e80aa30dc490a2dd1ba92ba060c3c53a2dfbf7c51d5ce703708ba5d123802efdc0ce23e6ebe8b19c64d3ce1c803ace6b0e2cb64a0fefdbe1340e17544be5722037b8b2ae5fc1014d936c503da9bbc09849b37c8c5e37eb78842fcd501c5288d2013fd0e8bf01e83702cf17e4262c1c17777b43db652a65690bc2a985f852fdc158d36223cfe9f794b6cceb0642e01c029e023ef5e8ebc6c5ba1ae151c16e1d0a04dd2bb6690ddde98bb01ad63019fba98e9a82f913d0c97187e3752fed03bf520c35ef446fd9f76cc7111385d0710997ab51c252e151251c67581abe90644a27d2a9384b2f417bc38a42d793803896b01044055cfecf1328863cb4fcae8dc7eb3e1126de147eebb88922b4d87797332c91c1772f801b8900e849c4c35a8bed174723b771e0529d346aabe4224233e15cff5389ef36e5232025e0405be73e416342e1df0c07552c39a460bf0da8c3c655f4b6bd0cdef091059b3b12cd4534d9e7c6bdc2b153eec49473126d50377f3c159e5e57a048b59fa8a16a53fa19100f600ae451e2542ef830500628d20abba5d04ad0a8ed54028c8c0954daf76a4eb5cf877991caf0267459ff1dae6f4487ec670a9e2f06fa740820b223dc30c4249a32e5d7258ab26f5b64dcaed8112476b6672c71b2e526e05cfb93acc445120d8ffdf82f673dd182549f323f55383d2b34ef22eabad1e5e44450ebb4b79ca7345656b2c638e66171eb6035e529370ca8331138a7df21c40e17451d2638914d31af87a33c3d173bbb319eb589ca5a161833d51b61501d28eabc7508ec1180389180ae70d0cc471d21a3e3003b765428676a9428181d602187cc45d06aa58134bcd1e6674bd216c178246217849d0b5b1c1fcb881f7caf656481c9c60769d1833d8807ebc00efe779f0ede98e0c7e22022dc60586e83122c9bd8e266f0449f85162b2bda5de322061723e3da857966a5025a7a2c17dc707dc5862a8f6b1d1f99e22e484c993b288c9c38552e3c740aa502677115fb4c59c1af56b4d531bd33687f88192f5610626b23342a285cc868e77a4e09497a741ff060c88b0332446cc81d0547fd682cec464144b732f4d173b3a0203b5402e7d850d00e15ded989de9b389fdc2868d796d80d9f186e88a922a6b56830112086c3027b4b8215f72101ea1a7b8b169a3382b882d5d0343f58908c10ce3ecb1c5925895ff04cfe2a68f2ebc9e3887c6e7ff918092ee7f882a63599bab73e8dff3b309f40c64f2f2ed5ce4e9cba9f9e06a6ebdc0d7acdc214b708d1b6e64b60da4c619735cc0b052e6604e50d521078669c0e2858b89a86fed4d868e3d4d63ee9f98dd1cb506651360adcfa836bd8703996cf1ce22688d7c3de341ee9e867f317ea846760b00287b6b1320f98d80af7569c52e07f0b697befbda59452ca2465ba0dab0e990d5acc0ae82292023aec9eecfa45e8d0ebd9f52720014d1dc40fd045a80374881b509f081d6206b476fd21748817a0c339d3d12156800eb3103a2c01edfa41e8d093edfa4174580adaf513a0c34984005d04880ea313b2d8f50fa0c30e68d70742870690f1d9f5737411fa832ef24317913e7411c7d1618a0bbb7e0174f89b003aa42c1da6acb0eb6f1dfe8d0ea314a15d7f003acc3d6ec4767d01e8b0c58795cfaedf830e6b78767d1b1dd200e8b0e3a1431d41bbfe4a17a12a1d4629b15d9f071dce5061d7dfa18bd01de270edfa3a7438673be890eaa08bd01a1de29dd261b701a0c34944d303b6ebe79889edfa333a8c5914edfa38743867281de20dea10e7a08bc87d43879a8c0ea315367418d780830e65159f0ee517b40ebd06af43e7a2860ee7143474a8c5e8305a01a3c3b8862abee03530e9d0b990a1c339450c1d62175d84b6a464bb3e8b0e3ba25d7f4587dd6cd7fc85780f75b3b98a49dceb992bccaadfc53ad75c4516153ea42fec645dd06b87b5756123ed05956a0c2ce88b224df785d7daf53d1d59f2754514443d60ad94ec8ad8153caf9c2a3d1f2f9b088d2dbf1c97834142400a238c30de80753885b6fc463065044e5ef66d51c6a158d89f4dc85256e93e2232b7e4008dcd048d2d5f6e2edef86675ed41be366ece8631b05ddf139aa82ab7f582d490f144017939584ff6e356821aa84427bc94a08627405e392e39137395cf8d238d7c4e469f33311224e9f922ce95f480a0d65acebaa7433f4f882f74e207cbbe446aec0b82a1d009d81e7263db0eed4b04b75a23d84cc8973b7a4098b6fc62a4b936c7e560fd35f8ecbac3daf284bc9827f382bc28114a11d1ae5f796acbcba265875e9047655720247df9d11ba27bfa1da1df7d71be8c1d5d663156d099155fb43c8f35e95a567c0185cec4a21497cbec095a50299aa8fab48341e185bdb4a8c7c7f5d2e2478b2da2a08489957a26e632b33ac71503eb017be1c458ad946c0c39422962b2e78e50d4e0c48b85de948bb3846ae17deedebfad7d5f7a3fe4beeefd90dba79cb11b8520d831d2dc2f949ba62951a4a96f751c42fe1471b2a31b11143d557a40e6e6a6a67fb5cef49956f64c54fd29856cabf5eae36a63600ed6a7308f0a276360d53f06e605b9aaeefa5e145745285fb8767d8fc803c3575a7d2f0b57c52b9e10da2d2f68d71d7a42b35dbf28c20ebda15d83be58c20ebd2f76fdd08bedfad7cada7af9fcfcb82a94aeca53bff654296a925d6176585bbbceaf2f5d7345a3147c90d09d0c20f19d5b1d0a4b98c28d39e0befd8ce489e5d59155756449d055f41d48acb2e977c4acb2e989d2bafd7324d9fe4408f11585ed70e7dc613d34d8618ccda090b2c34885ca19c2ec27008171957ca2698349690fae40597e88afa6784bcf7e8cfed4c7a77cc2c59adcc2451b218c8beb7a40bf7ef7de1ee490ba5c55d232647ce9c1b9a21e475f73d5f29a28c72d41a621386f21d70fb153cd5234512d2d9fb9e5b59df4b59cea9f7e8735439fead3df2191f42988194f5f67c6d3cf4893fa46e8cff8fae9bcfce93372fa976f694d94b3b84fa9a54bb22a2cc76e920ceb96174d9aa1e96bae3c9bf0b7f090c06891e2cb3c1e4e109e28a268e99928947b3f5a9e8820683d215a486b8828cfb5c3b646e993da514beb2322c3d04b5e7e7a9d122abc1f998912079d5414697a9063fcfce8917e64d2d7794248d6c90b72fae815cdd5e9fd7ed5dd93882ca968ae5ede575abeb9827f6a7d13aef5f1f7539f847f8242da73fae2ac5fe95974d8d2437b5a5adb7f763ff91592d6d0f24438897c7cc8f8a812d0bef7593755fab3fd5f66967e53f6ae0a69cfb6a6d2e7fcdccb0debafe0d47a44e975be5f6bfdee179674b833e466661df7dc9949c8f2bb24e4b02568fb3551e175cfe9ee39acab900888767d96d9ae3f5a597919f547f559b00744eefa58cbeda3af5ffac2187fdf7a4058be964ceff2a52f6cf9fb997e3e93cb412ffdfdd273ded7fcb5f44386b1f3e74386b157be527d2e1fc0f45ea90281ff7e27efebaf3cf7579fbccf7f9f74f23e1f2b4ffa7c7fe56692b415d3fdfb25c0f42bdf11a6f7be2364fc4a4bd010da734d1f95f1f6a907c4cc91f1c518dffd952f74f968cbc7c4dca3bfef1e90d1b37ca1dca3910e91ecbab252aa9b074498bfc4d5fc2b5f1a7de111aeeb705d297de6bef03e13b314eedcb8cb55f5f35abf90896972997ef087261315dd7cee39e97dd5dd93484f5fb8925ef1517f4597fe45ae442f67ae68d2cb8f952f1c427b4a1f90eeb94a8ade77f5b9af2bddcaaf7838c46a9f3def3ba23ef7ee01319fe37c944aa5d2d75a6bd5a32f7121f71e1757bed65fd11d1172fd507a3e4a9f4b3aee8ef4db671d22d95c189b0839ec00d10eed93be21b467733ffa7067739dd6f36fb881a1100445dbbee9679a5c2d41515a84bc7e4dc8edb2e7db4a6bad1fe98471b5d4c801176d841bd1a6df6cca2a2ccfa70e4ed95c7985651945f69ff3f2e4f0baec5f170e4263d5efba268ade10647ffa1b91742bb80880ecb1189ba822ff299b923587badfbcf79f559c34b7106d9ac83b0bb18791471b6dc6f09c79ba7b4ddb6dbbb74f2255521dda1776813c3dbd98bb1bda4490b436e99b557c93f4ac1269e48f6616624a7adce3adfb9670f6b5fde66c68ce266acab09ef3dad99cbda28d0f66b1786dbd5c745de68442ce8aedcf11613b57c5760ef6dafec23fd8b53dc9f68f219e62e315b07c8853205482ed18053db47c8847e0f22126418845b0fd6388a1187d78df2063c3f6bf43d1e60bd186beff05835c91deef107ee2c3ab86f0ae61fb4d83196e2bd2788c77195bc6f6185f8af1f9a3f1e14f2e228d7f8b9e5488297f163dbb88297fc5c0bcbbc068df941269fcaf9e58c494bfd5538b48e35ff584424cf993f42c8244f9533d891069bc85a5c6cf18cb8fbe1adf7daa19c11e396148d8fee1cc8e8f8a3ddc2732e51fc31b3bfe275557e845aa6e2ca4b1e3e790aab9e3e7106de8cf1a3ada8c3e8631760c4752009115da1d5f46b4c11f7f46b489f1f157a4eaca48d166fbf8a54daaee2cbe943d222b3ed7e9d875ddfd71504fa048331a7d9c50a78bf8b85ecc279dae3df07e44076750d7dd2f7cdde80e451affd10b711cd775dd90ec216e7f4e684ea068337aff498468f373a97015f70e743f9c52acbb4f2e66f89cbdfc6d29717056614f2ce40f27155abe7046614e61fb8482932f9c4c984fd83ee584b2fd2712a4ff2c82ec417abf3edb6fcfeb0bef13db791041fff0f2dca198abc45557c841bf3107dd7f0b2e4a5a98c81e6e1499f287f9c29985edcf9d643c29c68398c57cb99429ebd92f39b6fc19396cf926f95f1305b579cc6c79a36c7f193a4a1e728d2be437b6d4725f21575d2531575d260efa75729f38e8ef22d422e3baaeebbac70e761fbdfc37de7df7527ba491efc5903f7ad9f2af92131357c9f7272edf45490b131627db9face8920cf9a428758476cb77c983fc1b7b91adec59b86df934623164db475bbe37fabc399b55b44813f32a8c0e24e7fe310e8aac75c3b85714a2d8524a29ef1d420e39d95c71429cd016be0c5fba63d2bdee11fe75b0af631272b297953d84525b6ffb8e8ad1d728727ef9b55b820e94ec1d765cc28b68735b47b3856dff1ab402ebc9ffc2d277ddd7c1bad748774c4a4ffab07bdd0ee6aafcb3f4db87a42ffd11a41f71f90b495ffab820d2efb849de12ef3b26bef27e7ef772957c2a8e9a51e4b8e5d69efbeed5c138edeb5c0e869c1072b8b3e5e30fbb9f3d1f7b40a84cf9cbcfca94e7c45ce5df74fcfe0de9b6f637e69c10ad226b1f72425984dbdfb87d61c7fdcde48486745bfbb81827b469921c764194d6a7d4c3a95d50f7a4d65a6b17c547400e724f1c9c40bae7821c9cb1d3bfcdadbd7b38da4b3defbd5f3d1ff839fcdcbdbf5df781abe2c5e688bed841e080b8ebc27a527170723fd13b20e761be089ed505390f53caaff390936d99aba8b8aa3efd298b3433e6e074f799c24564ee0df89691663e373ba9eb4ee2af3d9f93525e26fb2a719093d37d745d5e8c34f3ab923cbf705d92755daef29fd7b5a7cf7d9de4f9e18ccd9ff3fe449a39631365a90b16e69c13fbd39f37e69a89796357408172a104054181c1a0b85c502e94a1a1a2a20b452e818b00c873c617eeec197f85e60a00ae1d69cf8e4f5bf3638e8f341f6f7cfc393457397cfc493457331f7f16cd158e178f30c7cc064f93138d8f5f335736eae3f0321f5fdebe8c36e05bfb85f7459f3627bb17fd52f58c69daf805e3178c5fb48ccdd5ee45c7b0dd8b7681f9362a8ebadd8b6ed91cee5e340b0c2848a889109175a3547addd0d467a2e4d368a017bdb24d1cb7c9b6d936b4e50c00e9793807399cb3175dda3e3d2fd8088888f493a4694f1c351f464f20078b82729037d791f60dbd056d425b6ca2645c9f89b2459e572a95700e7298f78b1e01406f401315e327007a5aaed7083602ca44b3ae9b41317a0265da12328dba17edb9b6cbcfa7d1f72787be3e23d88cb638b49dafd16b038a3676126d2b1fe780d4bde8ee869eb38992311a4fd48be67e764b8c0dcdb566441cb795ba17adad742f1a6f1896ee45df7dd2305d8bdd55f334417d4490b436eaebc9e4e1c0ccf07e881b071acea5ee1b7af4a3472e9e102c81c3df60199239b86d37b42d721ee6576d8980904d9668ff107ec12f2f2f2f5c8c8e863ebdf6ca7c1b5a466f430ecec7416f55dbd9fcf92357b4b15aa4918ff1d3a081699cf0e954f17ed17473323a19fdfd8b9efba497c4bc0d1a7a49d53cf51f07cdd344d7783b9b2b4b64ed6cb25e3b4beb25f56be8259668ae36d944cd8992bfc9ec4f986d3fdc66fb657fdf6b5de3ab96acd3a9c69ff43f57e3f4a7d3b7a4d61a5f234e3aca0e4a560c67721dae3a6d1f77125f1fe78b221c305cc5e32ad9e3430a1f495c75d2763e2492d0433404bea5bd284a684f280b072b102007eb2be03989659c2320b03b333303a507a603d2091ee4b8c378450f98177707793efd7b83acf3614a36b5902fdcd942ae0e5e0750128fc4ced7d7e1c4554afc91afaf03166d646bc8873a80b0ebeba822f630e4e76a06003b3a89972d6df79124debe124a7c3227f136092592f85abafe105d8489bcb9df8826ca7e0d67649b56424707a96e69baa79e435107fb3bdc9c3968bfb993d07316698e28f145078fe8b891d071cb96f6ad0495cdfd102b6c8e8bcdb5b4dc4774dc3b13094d04496b27f12da116893fa291f8a62cd2702f5bdc7d659de7be90090dc70ef91be7386e880e91c8e8711c677f7ba9ed6f3a078f4cc9ebe1d82f47cb412b7fd39a08644abef6713bb1b9973a47cf96a387e3368d13f2793c0e5e1d2141f4449a7a97d0d0a464f24b51c94196df81e1a0d772b0f2cc4cf15564551c64f91d9183d4c3915f9183d5f70fed0b3df01c1007be89a7dffd104d70e09bb389d2bed39ea698a460a957a4a933b18963666666a6b5c399588e9e6de3b8af7595ccc4b61c229029232f441ff9e8e11cf91b4fc1769e09bc9128f1f5534c5c55a4f54ce02d9ff8faa957b441e2c3140f76fd940e620f48c41c29a05d77b4125d1ab2122f5fb694782e7b38b2f5c9acc45bef87b8956829a16935c6228d6e25f4f4228248741378ef7c732882da4fcd3389a20eda8700498b35f78e9e43f209dd04deb2f5cd2a11d4b46fd9d21e094d7bb977f412fa48f4921ecca2af849e4313a5fdd4da9c459a7d6f90b51f22e4877c1249fcf47092784ec8d484fccd1c2264c890bf9949e80ffc100d82770f0704da1fd19e11dd81e1607d10e8ee8b0fe8ce0340983861f138cbc709edd233510be880f68426ca0639acadd1ac888fb308297a7c7a66a552a9444490188ad4754373351bf0d1570d782efe682f89478597c4c12e46bb15fb2b1e8efc150fc77ed6e6bc645a7335838563441129599c713656d9f63b4272dc07e4e5a0e4e2131cf09cce5d175472d9d6a545cada62e964261659a6e5aabb2716357891aefcca714d9fab6fb55a2160c508e29e4ccd52321a482f36512e9dcc55db7352fe35810e180e1c38b60ff1c6f1717b1c614ab66ddb364345fbed794c79e34cf9c1053c3832fb29b9041338b2fa7706b2999829461507abb5560f99457b2845450c1947e62038c130877ac0a20d8ecca3bbbc0ecfc90ec86bae666272e6ca20e7bc64741fe5b80e301469800871e22aedeb6f2fb5f69c16f29c0c0f4788906e7e373f24b487d592da6e2154d895cfea355727fbf4774e3a4670b8bece752376b2df2988eee7eb743fdffefc8c34b19fceec8cccefbe1d96fdc20e261f098d33e5c2c087df18f074df44c7813f32bf6be23b429f03cfb5ec1b0c48c9927824bec6f8e831fec220dbcc6a6abc5310f3bb77c074007d0e7c71a23821385a427e880e77f690770f67c8cb70d3f70561dedc6b425ea2de2053429ed32108b485fccd1ca293f87062483c27bb2490f870a638f8d2019babc8a23a826eee4f9e385c1325392b394e721a76851880382b71b8b4e8623e0786f8e8abee87780e68199fb9eabee8a8003c0b8e6543ded971a8164107fd2db467cb64c870829302929192e10549cd4c999111f1d19b899562135527157288c3d582bcb2eb7333bacb821ccaf8ecd310f3bbefbe232720b0070234512cfa75311c2e1cae9cd573328b12f8ecaaa3b3c56c66364547a7fecc94992a57c866260f47fe984956d003d603a6029b598c0f6d6601901fcefc10f68005e0c31e59ec9c0f6762ac968355b68b1152d1db385b44b07e38b78f8f7185f331aa747cbc6cda661680afafb3c58fafaf13fb6133e3be00bcfd02f0f20bbd2d7d7218af8032a54c2cac7dab7f4ae15ebaa27cf39c749feee170cf7994d25527eb333147d517f221ce0130a9c29958003efa4ac6e6a3dbbcd53c7c70b0f2d8756e2257715fb84ae36962bf7e4d6bc88778f7d0c30379cd15fd666213e5aa215f7450c8a7e955126e097daba95ea5640210c0cb6fe572b05ab9bf0265fbdb735a7bee5b2571b0be0cef87b8656c8f57543858b94f72f676138bac6a4256ddebfdf09ca02925afa893166fdb9f913f13933328366ee06033d431a1e56f40dbe75e45e4ebcbf4b8aac8d79791c2559189b77a03cf69bc392b5cd0ca71612166050b9ed4225a3e116d735647a11180b1a596b139d9ad604b5d637353469f7494e242a8e7075bea199bbb8123437553ca4d018ecc77c5a1c26ae5d0dd14e4b0078cc3d14d2979a6bb29c8407880f40069459a1c25392fd4472fc7b583ed01e42abbc30ecf3914acd65c4d89824c7b3ce9e1c4559e9785cd8ca3e9e6147218e3c1e6eaa4339fcecfdb61d58fdea41286242d560cd044558ed30e6839015be2442c8a71e2206b033b5b7e314f1cf418a5152201d18e58b4a147c78e4224d8c18ef156ebfc449a25f4bc76dd5b70f193f2c255ae75578a9c92c91efc89b992ac964ffde0e04e6a21425e7e26c8550b39ee3025a39fc2998223c389711fcb67a22a941f562bd294205bab573e3260323e2b1f199f950f37f5944d94fd58aded3ff5c5b68d662e10da389c188ecc553854b81edc018ae2fcad43878e8f7305e4d5cd0fc8ab7e8e2f33311b2f5c25e40be5cca68acd90abe48d2937641ec77d11cdc413d11b28a2e326a2e396db8e5e02ecfe15e4df3e28472b64a06407e199edfa3a248934394a1cac39af7a85bc0da5887609b2fd30259b0228c66c8a27f84ce1858b4fbc711df553b2e87573e6a4a5bef87cf8d652b2149524ae7229aa69cd15cf8ce960d7afe9a991c2573c5e8b054bd8f56b92f8aa73a5aab82a2e81053cdb59f5b52de795a3248789ab2216e8dede6af9405e9bece1386bed77437623e6e08dd48e4fe12875534a5e7dc9fb21778e6b033168ae3416b67624c3d81c4b37a5641f9ec5fb21f7ca47935868a5b352728f77f17ec87d6346855c89e68a16cd55d7723917baeba7b2106db4901a9aabf9367407394cc9666211ca1d410e53b2942c0851b4e1b82c7218a1b4ae08720f580f18f7a5645494e41eb09929ae9a6fc803c0f66bb491292abeda58f575d8f6bcc145b4b10318c0003e0ee0593c1c227273cf390fbc6dd549cecf8785220d90971272a0449a95cf5c619c330fecd51ee4b0b654aa0f53b29c1c253956441aea24eb00a2c2bef129596a166d7cf340c487dcf6cbf131f7129a232365fe7e191ff98519870b025f71366d08fc6cb141d9a0dee639979a6e4a49c96662abe884d76a3513cb71a56443680f8eec013166e8ae311db818a34b943ebf99dc39ae78452c0f61f5b82adc9e7bfb439e7b560fab1584bcbd7348dcd8b6429ed572168f77b16b4a166f2cda6c91f531b23ef5d2c9b408f035c4310810e309f0dca9dbb6e7382134568e8b278729598c4fc5b83704d3c341e267627346364325f5136de24c42be50e4702636bf3a13fb5c9ef6a4644f3cf7f5806ddf10dab39178f77090f87a003938447b316f8a83f585684fe660017ac01ef0b587a9ab1e1074fff0a3f3136d248e1dcf1980bb51da15678a83d6e5571f3d1fa46d3f20af1b410e56d50dd2b63eae22c9dc88dd90bd040de0391ddc0e9d4c6b4f2c728c4fd197cdc500e488851798ec88851698e0d8118b2e28d9292e62b459e263183d45354f10ad61a80cb32fec1aaf90edfada128f139bab207c26aa3ec6399b4c3e9e124108c9902143860c19321efb449b24be9a5aa696c9643299fecaa20d125fffbaa2cd90af6f87a28d90af4033806600cd009a01340368861040335e5e5e5e5e5e3ec69510441355ffe52d2cda685fbf16459bedebebf43abd4eafd3ebf43a29e075828181818181f918570a80f91a146db89f989f989f989f989f989f989f89aa1f9302c17f9329d3a0f131ae7468d496b6cfe90bfca631f09acec00bd146fc10ad814742879f843ee2a7a64a68b983109a2b1cae88aa8f71ce26d3ff0465645a322d99964c4ba6b5f20102020202ba618371ce26d37f0f560a04ff4da69c31ced964fad789cd154e6ca2eaa740f0df64ca19e39c4da67f299fbb80b6505acebae28a2baeb8e28a25b47d2574dc41f8e490834f0e3e39f8e4e093834f0e3ebb7e10423570363d58430ba15d3f09bdc350ebbff5ad6f7deb5bdfdaf591d03bc080b406d2401a480369200db4eb0f118208e39c4da6ff0982310a44bbbe106d53c04b01331b29f04d19872d5e29f04dd9c616b35d9f933a3f3a537ea64c993265ca143f02870bb364fe655ee6655ee665fec3d40ef50eb048537f863297b5f2d17ae5a3573e7ae5a3573e7ae5a33f4c6d0d681d8a224d7daa016d573e967523f63dc6399b4cff1304bf0f5346681d82aa1119d03af4dc885596cd0c87af8f83cd0c079b190e36331c6c6638d8cc70b099ed0c68fb18d035311ddacc28ab07cc462a0582ff363e34d9e801b3f121de1b08fe9b4c39631c53a90982ff2653ce18a76691a63e06b47da92fa06b7e224d7daa278bd592b9f129f04d59e6a1b4622a0582ff2653ce373ec41c1e71df92f9f18a9864811fa3b6a6aead89aab06c3f20af4813460ea31497135e1078d4e7b8e68ae21d2e99bf847ef38bc087333b76ecf070ec8e192cb7fc0e4fbe4ccb5524999637daf565787c95a232e3ac23f95452b2eac2c51883e880c9b410f021de0c40c03340c71307750439587500459afad20ba2033651a9998335c6479c98836fc8e14c8ce36126b6ad1b3290cfc2c1dac52153b653b31b4f51012387d1092f20af0314b5214f202f575926aee260ae9240aeb24f8004011172d5497e049285ab84c4a6b88a8aab84cc805401e285ab4ef64b79b153440ed6d4506a96aa92a2e2a5646cc8f2e50ea31457989245e0c328c595800f6762517674322d57bdfca85b7e299910723813c389e14cc1304e08da75d7ccd55c0179f90e10f8033c107f800ff106e2a31fe0c3bc8178aa3da1928b87aeb6e64a63d59769a9569d4c8b0b4027d39a2bcbaa2fd3833d213456cb539d92e9d46ca2eaeb70451b9b9261a148533fb626aa42e043191fcf8a4853bfd39ed00d1b39e000a270cc7c3974ece04155e99d2e65a2b671dd4a096614db2fdbabc0c7c0a2cd85c20e5d663e60b6fde2042ca0c309bce772d5cb56b29c47c5725c1a887637f386be90119486d8aeefc526776d0ccc554e5c15af00e4aa952741ae227dfd982831423159b82a065d749cde9ac0bb7e9ced269d22aee41a22eafed58a484c1cbc3f7afcbaf75d68aeb6bfb2c8816e4bd6b3ef57bd6dae76d4f3e13ebe7da2cd56cd90e3de1cd07d91e5809a89baef7da7cafd10dd733f04f7dd779f034dd4fdc8da6ed1fd7b6592c8c1fbf893430ede7b9fab9f2c8a34f76b1745fbced58975eb770a62fbee87e0defb8ecce7bee3be23f4b72fb2eebdb7de7aebc559449a7befcffbf44e91edc77da7464477e6e4a470d146a811ed68a36dd6a9936c45b4ef40aeea4c5cb816765b93dde14f441afba6b9722824cabe75156cbbedd05bf6b9303c116d4a6fdfa1903dacbc7de7f155cb8ae54397427a3f7ccf2f228df596f3687a6e1f2dfa445cf90bb4d6c6980a9783f6f1e73f0eda3a861cfa8febfd67db7fe32e3457dedbf7a0b9e2debe6721aa1ce6a07db7160811b4cf75fa8439cdf21999dfbd7c4f53568b8e13c5a2e34495f48a6e226ffc69fa9d9e5e168a6d20eb93bb92f68d714e41d0f77e08fade37c4fc2226ca0a4159dee70e3451f6b3f61b3a90076dfb246ddf815065dbb79e850876218f3eef71d07ead5cc8fed2fa4f1779deccd509bff73b2c8bbf5310dc77aff3dd67a409fe74baf7be9b89b26f843ef7edb0b0b5ef40f60b25900483478d83d6e20e6f4eeb3697716e7594824cdf37d67757fb1da11179b55d0eb8489271474a290325408182a11428d961e493567bb1b6719d371a916e30cb51ce290e4a998c85218732b6e5cb9732192485ae90a3fc662ac8b112ec884519d8e002d28854317e2d0abe31c6dc799cb779f7b5e7347c31ceb163cffaae7df8a35670c9888080ec914984cc39270f1f62949c354d23edf06cf80a868818e5663e1151769e9046179b4cb24d6fb66fc6282e3c86d80b78ae6b97662ae5d31dfef1f876cc2e7258b3fd79b84a7e8d8377878337aab4e7a4d63574cbedafc99473fcc2fbda57e3e0056fcdbecfc35579ab20dedfe1ab17d61d020c22ea659fe2aefa44a1dcbf7f9f42c14ff3bc34d3fb1d11832a12b69f8fe34afb99b91b827bde38bbc8f1278ca925c7586bac92457dee00042d0f6bfd79f86004130500e394a0288bb3e8857555887380391c8c3466fc5cad1e10a46dc3c1e92d4102e6e8eddf92d197036bd08683b366cac41e7888a9f91266cbfcbe2a712fbf94759ca8ad7b0fac71d005d97e08e67070be8ea07c1e5366cb9f0fd8fed3e331f1aed503c26eeefb4823f59613c0d9fe5df50ece6dfa053d470d06b104b77f36e63f952dce710d7e663106a50a2843509282994f0b47e4487316dddddd954c7ff9f425de717ea1fce66c4a8905e5245e82046435c1ef1e0e7e1b3bc696ab65624abefb047d6c5d1beedfb809e39cdd747795da5b3d04f4718b5050bb1d8c690a3963530c0283933773d5b9fc02384824ff2517833c3f1e5f8d83f22d0c72fcb046b6ae98ed494468a9b5f1fd5fea87f183384844fcf8337e18c7a883e838e8f375de9f881b8310f1f1f89a3c6b7e080a12636c8b1cc4553a44c4e2dfc41863f489c10fae28029536cc1c33ee989f5b4c30bef2b898b1c5f83231f1b57342c051f3f15c193151f32726e295c3183302f3d8f47fd8f271fc708c3a46607aef173a81378d3aaeb25f6864cbf77282e8605d00faddf0f0c155e00bb23402e7a14b6f0c463e5bf370aeff887bf45c9c1d4b932d73ef1e0e776ffceec7b93222a33842184337a888d564db80dc31de3d27958220efa425cede207f2865f3bb1f8e6b9cac4ec8bea517e37d06551dd42aea6b42616b31ee8ffaa24444f40bd2cf59fae8adfc8d73b78bb9f4d7c3e16650d9739571d6271d1c272aacadad3dce8f442bc3ed3a0e7f968b2cb8cfd686dc055ba342f6bc25584a5cd5d7e9c3abc57ef9f0cab6a6dd285bbb42249f370a8f160dd1cae6e9e50b499bbbd5a74e515d5ed8f5055b7bfc3708259a286ddb58d3a289d2ac4c7b6b831c52224a146de4d69e9661e5a36bd8da135bfb18579504338806654dab5a645b831c5a996ccecfad6c7a43e0b7b289d26650d6d17908abe783b4bdc795c338c45929b7eddfa863c12c8fc49a6188859b6c4f9d5c19c48b83addd265bbb41d8dadb2b44eb86b802274a73d5b6b5b754a24ddc9a45c3d6ac18b666b9606241d66e145b7b4b831c5a9925b24373d5f21a7e2dbf367368bfd8da5f5d8d907fb7683c51da5b309c7ea1294996626b537b3b831ce2adbdf7ccd50f9f1057ea24aeafb9c29f93608a9e3a84adf9e73d9146fb1bb7320867909095cda019c555a5d77e562b8b34da5327e4fcf8e57b2b469ae8e4c79f1153d119aaf861e52f4f94f65a35014f102bb24230c30883d584f6b88a948030c64724c73f22338c30de41ede9bf681b0e6a6fa9c8f2e937dbdacff8a4cc41edc3b73fe5477d197390166d4df37150fb25f92b14722c5a626573657a2dc6934a3fc457f9b537c255dc6b9fd55cbebc4bdc8a8e9b6359d95cc988baafcd4a43578b51e5752a2e87ac545a99a45ced40d0ed6c6bf4f34f762c1a0929c6ea7956fe15fd23974aa552e9f3ccd3e4e6ef92b48c34f7a937fa62a4e1defb10dcda4fcf7b1cd4ded32e85831ae749b6f6b509597b8b71ce715ad9d6bebeb4fadadafb16b5ef8891cfbc17cce20a23c07c5c3e3294e793567bb1b6719de78d6e08a88d346feadba9fffd6c78fd6c38482b359972beef207d6ac341faa08314744adf06e8aabcef8d4562f8d76c81a321edc1b926a53ce286f6273f7df9dcbd3b7a1a02e4d63ebba377809dbd3526eaa6392fa98efa6a28a5411432fc487ff92da6f8d914850caf6da3f64073f0624ace48e34f3de574d329a97449a59c1f962fa7115cdb7fc6e769a23d963ddc0f3dc6e80121f7f685f2d33fe28eaca9a5bd6f71de72497dac676cae62a6dab7dcb73e9691465f57a529c863e0e2fb749af7fce274026956c9ef2ff7c3d73bced90cbae987a31deb8776c7951d4b9b7eb8ed8877d4545182f543b7217dcc79341a8de41c8d46a3d1472fcb39f34aa619af3ddcf6ca0e495a303829a57477ef72ee2a2c09b5d69aadb578165d987f534bc618e38eb66c80e0c35418a5159665b7e50acb94d62b32fd7ed45558ee92d07549c825da2541beff8c716b45222e602730cdffd9843ca524f1907ab6937ca837da241e47f94717a975e35f29321676c8b9482dd983e472b05d935a9ad4c3f9703eaea2efcfd1c77365dfc3a1a129683b671f3ffe8c4896fd4edb0eeb2fce13e5a4968f7f3c3288e70bfb7e21e987d472fbd52fc49b92781c74520fa9a52487736868925a2b426e6a9956667e5750e3a0df14c0410feb8752caa70e46fa31a49452d7b40f67ed0be96bcf510d6b549338deef071e35fa46675684ab5cb68ce896a0411cf48f0807fdbbed4bb8ca095731e1aa592c22c6dcdfe0de591770d146b8436bbbbc314ecf3e27259e82ddb453eb0579628c37a73ad13db76d7193773573655f8e74b4a3d7d451730accae3c4da86519c28a0516fbaa6c16236cf9dc95924f3e5b7e8c95e6597f727fe373db7eea90c220cfbf995bd76ddf119c96b2e330fe6d633cd330e7fc9bf9b7ab8f751d52bdb698eccb68135465a4c1d76ef1e99d9a5abc61aca99e5df7427afb79ae466f7f239d36372a3969a5c37ac9e8b7d1f7557194fc66160d99b6585cf489b8c2016351b225932d710c61cbc701041c46d8f2b7193d4657adc831c401c3b48503465b91e68b1c7e33e97fea39f9781fa3cd6d9d216f1f9e5a279ebff1efc4a235fee9fdc03fbff0c676ccb6dd87df6c4b1cd60cf9692bda581f787638605b96743db54e3c9205b6e56b5a6eacc3fa9946d06681b10c21aea61aa61a46b0e54bda8a28b9a28e922135414bb5974467f446f38b9146eed06a5112638cf16f3cc6215cb4114629f848e9118bcc6157cdd8d155a61de9081602d94bb5510a3d3d3f2e2df86c11052d28a5d6caa65099e260cd62bb08c576751172d00bf282a0c8459b6e29ae1820a22c442868a812c3982731b09992b514c5972f7469edc8e22e14b0295eecfa315cc4d54c2c1221ce74311493855d63b4d835468a053e8cb142c8cf6c11e34caccaaeff45d186c3b248e3522506c67d0ccc55a7b843b92985922bf0b90cb9ccee0c52320b7c42be106b5f98b369c7c0629cc4003908cea11cc6c04a3e2db218a05b84c6c05c8a935d7fc9fc1bcf7161890625bbee3006e652c565c85561c967d79ebd9aac1ac5c50b9cfb1589b2ab0bd0ae2e43cca7df11179fdb834cdf93df7d143bac269eea28765834ff769939e132d481d7a1df8197df8126de89cf48f74d38f14638f0b403bfc3aa414d3c1703b3d409dd011d272a0938a809ee0b6384626095de1898e400acfb5edb06d9b5833e4f4002efcfd1af8bedb022ab9b75b3899ac2f57cbaa109684f02dafb71b0be478547858312d0f627a0afe773b5d72385833e0e564981087c8837053efaca7b80d41e90831e6c7a2e49e54566d815216072adf45cb30948e0a3872381bf71eedefb37534a246ecc02cf5d6d010bdcc73af4601e90abf0d7f75c7325d3f25c32ad29e4d00b8a323e3237821cbc1185087704a230361312081391906d13f2178a9c1c568b524a69b5b7b25a42b64d13a2695a0f98cfc4aee02c67bf25dd123a841bc22d991f374e151c2a5d104259c4827073969ad55a6bb5175b9c98b66d56c86b1c67df85d8c9f22eda666731c658b390c39998cd6c4646238564f1b07a582d07edd7a347500fa11e307923166346ec466ce5732366a5ec019bf1a2ce10cd14e568e5e0c92185af4a3e33548676fd99d95cb9cdac87c592c255110b3d601863ac6d9c8673c58c6c29f1d1c351e26f5cc8732f5b1fe2c8706242deb7b671dfac96bd3cc871c896c423a1fdced7bf4c86ccaab86ac8d7c719c2210ad2fb21fe8d83a74d77f47264abb5f17bce8dc7eccfc307cbc364caf98789b23f7f7a73ce399d90473bfe24c2fe604dd1461b35fd7e8834f6a91332fd8c34d1d17e7b234d74e86b6f44fb8ce0974d9aa83bac7183fc0083ec1f46a1a969817bea01a1b9b83d64a2ee26e4a622c030610b8f1de2afb1d6628bf3be0f5384097fa63b9bf0218f9afd71855bad562b88154da69c670cda314b39a5cc338a1d9ae25c01bdd76a9a86a78635a9e1ebb6cef94390493f166412117637140bd37dcee9eeeef4b4e57702827e8e7cfa855262318390e5939c4e3ae7a4cfd5493d1f933ef570e847ebac3fba3dbf39bf29651bb818638c7106217b446418bbfadca1915ddf07fdfae948433f22328c49917c271fdd9e2f7f7471ee50e9602882b3a75310dbcfd7e15efbcb3ad5b72cc98ade10ddcf4e7a31d2d8975d909cfe89b2f70891c656d664691afe23f4b56f08fc47e663f924d2d86b838264ccfd0deeeede848b36426f6dea2a4961ae69fbe6bca335dad86ecedf3e23a39f6f647baaf144dddb4596f276b2c3b6ceeb126b78b4244ed4953ada15e4faf43be1df9efec43f04fded8798cf3df7de09bf0efded75a63d79af7df75807417f0b62d3be537ded4ff84b1f59a4277dfe21b42f7d47b8d73e73af7d35da93be918e2cce2322778c349b170465dd4cd4ed824754335197479c28ce93628834f7b1aedb8b48731fdf22a21a6fed8803dd715a8140e9fd9a1d3b68921fecf3b8ce59f529a7be7cf9ed5060ca29a79c71cf39e7d470ed226b9b8848c3a2b1fc24d2f8cb1ebc67db4d49c0c5afcfe1a8e9961e4e7ce9d92fc8fcaa65a44f3c7b0a625ef79f9f9126d2a5a63b4f14fd1bef02176490a6ff14c47ded75ee6bf3efa773df88fffdaafde49348e3540a511b544e3a9f70a41a4dd332a2a8bb835fda34544287b88aa41ae93ea24f3d1c7b298d56ec24417a39bfedbfde13d8f36b117bbe9c1fa53de01240028209b9e503381c148b6072c88583f451e801195be91c851fb8c16d1aa6a3100439943269e4d551680434c988e1d2c26247e111d4d7a01103737ab9a310090e1498c30d191b387c78c4cdc8df91929680070f1ed1667e941d608eb76182c92d8eaaab1f72d88069d961cbc62dbbfe0f73e584d0ae55ec8a733615091581f50310575207f393453982d288d7f94ebc9cf01869fd30e949b2ebd359bf7315fdfaf6c75575c748e7ce944534bf57d334986dfbbb69dbf6699ff3000deed2b383d994a38ef80d39be4b0f985c3533bdd7521ba40d032406edfb51a7140a9fe19cf1e5c7c9516ed2fa1c9d94ab92d334cfd334cdc3de63ec7d0f63f23c2ffcfa187bf83dcfc31c7e6e72989b35ac6f9fab36da58df5a6a79d41fe6d4b27d93abeacb87f9aad1b076aef254d3d3dc7b1ef5a4b49cbed974017e905813a1531f3ffe88f862ac7e2c5b026b3bfaa0143ae91dc11503178c4fea2377d982a148e41324d10ba690d25f4a29a594d10757bd0c322ba5945219140333ecc06165f0e2e3346507f39e1804520691069bbe59a5fbfc5c66a722e28740942ca6f80043e7dd418d98141d624db4a10fbe6c49d813290528a9903dd2f572b227be565611513356438ac98a3d251130ced964fa07e9276116053994322aae2262c241eadf12460c71957f45ac21fbcf8ec0596b2dbe9406f131c6f8d65afb494a2dad8934d17e747a8d0f95fae0c30c6b2a1968adb53ec62ea7cbea55ced9d1aeeb362ab76da335019ab669bf6d9b369fce3a25d619a457bf8334ee98b5d62df24d017e0852fdf3fd982dccedb2b491caaf5efdda5a69aeb1ce3a264441c16b86022974489fb4da8bb58db337e8baae33c22345122a64106d38fc8517dd87b1ca942ca2c49c2342a0f301c6a50c228d942f88200ba29c42065e0803197cdec6f79c760a39bc20822204182c21dfe7a2865111853faa215b70e3227483aef236c6351fd8cabec13888f16f9fc941d3c6184f9d95b8e4f115fd649468631fbfbc22dac40f25930fa5930fe593ee93526cfcc588d2f017238a13e23c6e1e7fcd5cd5e7bed00446fe62fb42ec85890afee8db07461afcd409b93eb8e5d86ac037647c67d545e97d4b7dd0afd5877c2203c0828b4f9faba9895aeece41fa947efc24503619e12a4bad88abf812888b4db5d8544ad994e3348edba298a10088dbb4e836fec9da4b291d0111a594524ae9db1b5dfae8524af5935cbfb9c355e1ce9edf0e19851c7f09267a438cd97a88836a7880356fc2f5ffc663b5c664c29548113f6a369125a6048ae2ab4c94444a217d767dc927f2472a913226fdaac069953ee787e516610dccfc9f3353771370d1465863b56632c5e7a1e9c97216377f9bdad4dcbf1c69e64f3b4f73621e05f055266a89c98298c876cd20076312861dfa609ad43d1cca8a1e10a46a77a4d328b89977b491c6f8d5e218e58c8f371869e2cfc78fe3caff7eb65a4ba7ef5424eef4c5450064210e7afc293f23be221c7423a4fc22a4366266c4bf114568210ebafd22841841652dc288aeebb6adebba4d7b6dfb9ed3300e6a9f69db364ddbb4dfb64d8b44b536a95f76704a6bade651b3c3ee5279e3a0cfe83b952264960f63adb513e37b27b5d6461965a49b9ab8b0c3df7872728485d0446489ec9d0fb8f85a1e21d2f0f8e8d349299d5f8d83723e89340f664a73a5d7be7f61ad7252253b32c9928a2979a414328991af82bdd8f18b1d1f025f0d9f5170165376f421a2e2d76f4a8ac477a863216e7e31ba6b5468358e178c34fed83efe10fff645ec187fd88606833fbc1f2f0ff37e784e8bf5dfc771453fece0d431d7a9857dfaf787b03fff7e479ae8d89f7fe43e91b310e91a762dc3ae5fd0b487fad4fc7fd0b73de8f571f810e7107e581364ae64cfaca999f9c21a10c717828ffac237e51cbe30e3f0e9efabd9ff85798735359bbb6f9288c94785ebfbe68f7efcc3e2402da5159813a945df67d1daafe8ed4bddc368ee497af4567bdf89e4401ee4401ea4bf099b2f9a811cc88362f044e5ff1b2f8201bd60aed78fcb67d7f771dce4bffbdbf3689f1f7fa7ef0b12436387157ecc77c29fceb5dad3f88ce4d7dec8f6f7775821a87dc532c8f485b854eb87510883354e04f45ab22650b556c409e42aafb50ebd9e4ca6fee6cbc1fa38fc7f6de5705699af53a8c6dfd0302fa34f6f43c77c0dbdf231f4cbbbe819dfa24d6f6ffc868e2c19fbd3335791555d387cd3e7bfd9d3e34f1cacb57ecd41bebb08ad1bfded3b727fdeefc49a7fe424bf201bfdc88a3281fe4996413f7fe6eae4afbdfded87b8af7d4768fcfdedbbdfc98fb0bcb51f59ae4d57bf354da03a81be977a3e019a44984091a66a1af81fffe34f88c8aaf1c17cccf39c7ee5ff3be92f08cb77c26f69c0bc7d1d98b79f9126f88dc47c317fa4f4341ee6f1a77332b2f21d217d8cf7d8df5ec7fe1b297d27fc349ebefdff74b6cf9f11d2479fc60f313fe6637efea6573e46971e46e73f69d2bfe896182f43bb7cf482d4f87878623c4fcbf3ac7c7e1e97e761799ed293fec6615e74644d2a48b9b4c2d2e21223868e2c973c5df3477e387fbc203ca3f7bae72ccf25e9c88aa26790d0aebfe938eb5ba22db2b4f924e32ab7b94391c890b7461354b4f1ed6e9bef4dbb77aeea5f6d7b1b60b4197de75ee79f8c34a43791908c748c3424136934613aafe376d8dbb7a4e759f8976053b8c4f69fee2ae91f45451ba71789ac5bbc388ebbdc9d94c5c90edcf1f564396bd32bda4bde61129b6ac9e2aacb48e9a81469e4fb286dfadcbd5fa6797aa5319833a43452e91e67b494be66a9db49b5faf1006f0dfd99dd9db6e8cb48238d94ca2d72f8aa59530057d9af7e41660caa7195fc4c23b539c839e74adf86a4224a2661944e767cf9441e81c78e1a57756f4a92a508258fe98bec45ac12a391180481f8c5f721ae6224913e79844823891065102228bfd3b28a08ca2360d18410091436ad9f746d2f1ffc2365cf96b04d5dbbfaecfac9d626b2c46cfb88415fc43f89362e2b12bb33e71d4290ab648dab68733ffe1273453fd9832351fd39fbb169b267ae7644e1c7527c368eb9406fbb955ff3a296ab8ab69d5ffb1845c2b896966ff6b0fc9d53b2e8d97210dfef26d2608e002d8f7fc71e5a1eff4db4b98fbf00be8ae162759c52f8cc1e077fa2f0bb7b38a720b627bdcef6e127bd8e8c4d14fed2cdd6c130ed2a30eea44c2b261136c6184fd978ce36ee22d38b7fb87110ffcadb18f483abe2c67f3357927557defe8dcf9fb9ea1efff499abedf1cf2aa2cab9c7231b963f4374325f1b3fd772ba1fe377589b3eddef14c4f6dceb6ccffd7dee33d2e47e3adcc7f88cd4a75da7292b864b8b6e02effb4dce3bfa2c23ede197b0ee9b3f1385ffc67b260aff484fd744e167c1bff9199c3891ab661511c48fbf7621af7cb3653f2f9a3dddc62ff1e7b92a7da78b4f9752fc47ea6f5fbc9fd5be6fa2cdb6318d4c36fed9834dee45a4c1f9932f07f16b9f7439881f3fe9b1f7611e7d68fa3d5752087245fa6e260aff8700d8a1847d7863871236323dc1cb4be8b04402f737a25c6d00705511cdb636a75121282bc84461291cc45dc8d2c741fcf7933d0e62fc560539c41bbfc42fb7f74caa31de577b6b73b4bb1ab73657a78cb4d60f3ffdf6d5b4b5a3377b1cc41f3711b9ef3fa6ef8fb7a0e996250cd7e7bdf7de7be7bdb70813dbfdcda788a9fb58fb0a22cd7dae56098683b7258b1cbcb2a8258b38d9c5beb7dacbbdf4628a17ec7b5d01ab6da8948c9496559032a566460200003314003030140e89c4c2c1684c2429bada0314800b95a25678581d8851cc29648c31841011181000000160200904cbd408f066225093c1ec21fa58b91a4364328247c4c666c66e5623ef696ed03eb88bd3d64b6a5fb6c620e2d6b2d46b2b8d18295d33dd637509cdf887260406f73e238943e1294c718bfa7c93b0a4e0033edfa9823899898514a2a58c5c1d3e7ae40e1906abe2848369e87146bd0bd519cc4c0d73a1ca291be582cdec5e30129a286feed394924ee6ac32eb351dbfd1ca2bc46194a9fee16e8fbfde3a8fc5fdf088e84dcaa3327e629f84fe6da5dbde299c1de0a210ab242d9d936792d362f22f4f382347aa6c030c5dbf74ccc1a6018b74da41786293eef2c5c5d3999fd119c1052e81810cc96f870409b428aa7d4ace1bd0492937aed69ae2885c7a8401a9a142ff58dd265ab291a85c53174643562768c189a0da4a55d10cca270d26a4e0a1f9e2bdf97d071438512bad4f2ca1b0b41e03846f1facaef8eb574575595b2d265851d286e68ea6dcb5680bce046efa400b0907de7d3a482c399e1003a3faac2de017905bc4fe3531d5d237410a18b445f5ba1391e1ff9506bb0e78942eafb15be78ff29f29860851d474b844f2e978bff601c936e294b84dc70529c8a520397b3f8453ab5842712947baa49a7273dcd8faeb440079fe8d745e3f0dcfe12711e36c9da101ba03e8b95036af57ef62c5891c0e5b25768314c793cce04421f2f94253639b56e5cb5d16269c8640f74e0d87d2db8d36c5910c555f5ca5c2799150ff902c44920922d709030d337bbfd0531cd77b85a4f4f68f2e69a5ee174aa84b5da2201a723951a250f95f2845de6fe4dfa154da063f7091baf41ef051cd8c2837463b2c0d92431b5a517e57565531ea26d394484ee52ef1327a37ce9ee47980d36d00db64f4c55e67b5b30bd3cedb4728088197f5161ae59cd0b39b6eb3b09f8233998bdedfcad05f4dca0b2d5f2c25068cb47976869eea54b3c9fa05a4ec1ec87c388676d8890b6fabacdb6212abb28e38f7a641825341caafcdc51faa008c7ece08a157b61641fdfef0d68c219ff54fd546298d039b70c41d936693b72459789b9b7390bd13f077c9d4936ce25a3923a764669a25cb2bdedf297294923962d3250faec740578c1ce91402946070711e8904dbd0e6cee1ab79a09248422a1b1d79e222211bf23cd1e1d1f2291cbc59b4b67da8af5b8d2441c9514967e678bbcd577b3a575235a05079c8301162a3e4b47acaef9fdcecc0792d600d038c9338502f80e33d43eb899bcc955f2ae8d5fb66ee35f6f2a508172261b910f6783f7d26b38ffb7ea181e1f83ddb532a966c4f68d2ebb4c288dd7e8ffe863ac740094c915a8f74689660ca4bf18745b6926d0e0f41c717706b4dcb13e5786a87884e3644df49b0c779b7df81a24d33ba7d5897d72a5c9e40b47ac386d3708a9afc177e3b492cd148b54c383e7222531110c5ff4fa31a45f1ceeb5011f54a5be44e8dec3dee5c018f44716356b3c11bf5ce4c81f087dcce612ceea7804088781bcf96e4a63371861b8a1baf00147299c95022baa8fa4b51ee87bf854d29291194f594d0668eef79c43b0da631c811975cbb73873ae2452ce93be87e2c05ec33858a126e715e352d36bc9ac9d4be592167d27010f9d5b4ae835b78b6a983fa499f781aa6a684c442407a91ee78f921b19048741f80fa7a1ab85b9a617f85ce5b59d840541a1199f690aaf3578813578942533d5b3a05a900402c0405647d08b99d115250ee75c351dfd87119f87cea52c16e0a2205106144ff557500ddfee3d0e474f33882461510fa795cd3e1904978a2b66d84203fa8d7efebe7a09bf5d2bac9123ee27afccada5e01d56373e3e51e0f69c91602a8807452bc50e0448fab5edde7d256edc36256ad63dbbbd1f5475df96069e1147536752d090c8b18050d9d78ec9131e25361ed3f3eabd8900e60f97acd297ba41d3204afda225b80b50593348c2f4940e89b1f40d50c41d5d1df618116b44c50a1a090ae10791b21bb914858f4bac3c0c49d2ed1ec4b5e85616862d66fdf22f4bcddf60845305a93b1cd295d2edd2e1fb842c93cc547f9ac46b4f4b06638672788f17bad33de7a682d44f146b505b8a7b849600abaa07c48d937b02aa2518d6004e6e5d53bf532ae8b04be8c8dc67ad9e79903e0b64a024bdddd0290bd4cd30c44c459491a88644e53ef98f5358f7d108222a3e0fa7d5544c14bd92ddd652e10a7a7a4103b83164181469556547ad976a974ccbb3f4c93cdcfaf89496e7ee4f382b33a4407b196645521c9b0363b4caf73a3f053f4992c4b85a4e6de5db41ab531e20215f8732eca7bd691f68318ae54c5587b477f62a734ecf8addd6ac455da31a4eb536deb806b9914615ab84b1a3846e1c192a72bb6cf10d98a22f62977958ad3bd8657c108263406c1bd20a0b698d8137db5b73c612558240d57affbccf81915084007732ac8ac37d0aa00f6fb2d0b00883a081961968915c5676942fdf4a103b1673e9abe02731a94500dabdd6ed3a96641e185fdc4ca4af0ca3302b566fabac6a89ca1dca01e58c8fc6ec85230ce798308b5cfd5b678120bc24888a605dde4e0220ad63e37b7e16c8e35b840e6368bf644ea98f5837a748a0baecb05d651d2b1d5b1e0869c9070ae8c802fa5ca66cdf2036a9818f556e0072f296d83ccaf12e502160c2113447d8cbbc28d2e5a468fa66fd1ac2a303abca44c164dc60c9348527153eda2678d7554fa74561d8f4af6dcc3d4ba64d8372a3df6991a640382c95e9043bf77f3053cb55083900f54356b7cec264a64f107c820f024a08abafc1362c4c0e2112b28b6f93c45cd540dc14436f4bced1eda03a03d28c7ba5dfc64ee16b8d64c30f228f0f1ec9db0e9cdee857ef66ca2a693103c2ef7c308d3979a90346f3919bd9e669e8c2822fe580a00e1216a3b142798a919e0b1b94cf0ff632450f09e6503bac1c42352878e26ecb1b268b2d9bf819b35a75b0ec01e2a3a81c006564d274e3c577f9393d7b2ab097bb14f09b9b95a68fdfa268818de07a044bd4d6d9c53ca23b65b03ee0213254bbd81528869ebf03f970f7d7c7b3d572995261a4e3c851b39362be2d3b39d4ace91a548e76ca6e59064d5071fc653b54f1dccbd0389a1c9fdc58850c3694b784936c205a964dd3ded5c521e518ac648ab182616af6c9f43826508346e08f4c896dd082f7ec1a9d2a230deda2254f2b428865d27dbe52cfa8eb49d90a720e174f09f64218f8062e90bbc67e513235f6104ac6d16a2d42dce0001a82b2f0c4478291c6e3f0e2104ca3389242fcee606fdb5c325143113e8d9df69635c064b6822167445cdf9ac9451800e9a159aed4cc886f4738747a8bf0004ce4b2f919566b283a082093ef21966a1f6becd8d210272044cd5261ef3651fe04e6524b8d530c085067a1f024295e14095a839c27cc17c8647a32f311f7aeb5b368234e4b857d66341008c989e0a2c79c1e25e5a2cfb4cb2cac1ab8244969287e2957c159035fe55d659af2c88d98aef4bab91294bcb2a1be304003f90d630938f540f4130d68a0ec74ff244f0fcf51268c53894eccfe28a22c700f9e8b915850a9b06a69867b6ddb8566c914597244896e06de28e0e558b871327ab21b62206c2c91056e2dab1da47072b9b63f548a816bc137259254ec7c20c22aa21f7d8b955d9ad419be5dfa5622a159d7922d7a13930b7adecd4e8e1d71f14151d91f17ebd13b41528c445a9510f30ce99fd0d06b087dea466b46826f784c68cae03efd24f45ecb0804aa22b348ae879a76813ab82e87fe7d8d625e61c3e14b970c4c6c9a00b4968ba6a1a14c7426c4ea46ec0d98d030d590e249671fc06ff07d657d738b77f6c85ac5576b38a15f2d322243d1325eb4375860a7da6d38bba316bbaaba8507da44db7e5e1a291bf25e623e750b9843b722d0f1b7a64e8b6065f74da830ffd5de47e6f03be0b65c6d9d0a9357670e9e54d2e609c5389d690003dc5aac99ff4c70bd4b2054fc61de8c648f5c3b82bd322843bb03f23bd2a5af93261226829b4636caa802ffce30ae6b471ac5088ac25666429fee055f48c9a3832729adebfc1f78eb485f85a12f40e07f12773568aba6c8e82cd5e1385a16b7e4a4fb6443dcf89afdd8cacc5d80e1bed7def52f3c26ce5af00f0e13ad710f7a9d5b632f87cd48490c1de96df578797bca25982a8a5f2bfc4753fe43cb6a634774a3995a7087eef61f8f80ea7fbaf250a5da39226322f3719215ff41a30c414e35ee60ed290197bb16c1875f89fe18a1d895573003a86e0f365a87a452e62585b500b981fe8e90f83f78e48f80fdda982ea44382969d4fea6324ed901af7c29819006cd277c27be463f4cc0291dcc714c810586ba84313b0672d519d0715b2c33aa4f62431ac7a9dc2a9c84a1b47d64d709960742e26c27d826b3940f9578678e041040ba290da5d11b7e1a7fc2fc8eb6a7809dd43bf21da2dcec14f2d1ce9555909d10e03ac4c028aeb8f7bb6b0f435a4599d7086c2cd4ff417f3fd19f8477a83d2ab0a57eab6dc474e769dd1120a4166debb66ccb1ef4133351d9dda7faf353aecca320c61ae529f7cd3bd8ceb77ace7bf39f89e09d189945e912c9587757ddb5d0667aca818b62a2bde89d4a1f78069bb798908600eaea2821bb4eb6e0bff2d10f9ca86ddaa7cf2b9ce6abbe1b13e99be5669fcb07f99f8f77684bf3f9783c7e342eb3e98c77b98c402a348003ccc4f97a6dde85232300fd4e7ee4934a0bf46ae2a38b8607c9ff2895b57365147e8bb9d26c5cb115e8ef6f0d88ba4620a7331ddd023dc5c318cb79c25fa268c2d99a4aa05ffaa1e2fb2f4759abd5448b271e3ed58cace006f577565fd8fc27c96bd0fc7e6c7820a19eb86d277a3cd9846c72688aa254fe70886898afc2dc263289d3c77c16187d5a3f54e9530443924f8be8b5d62760dc067ac709c0b5dbe2100ec6bc329df651b81dfbe866020c52054dcaf451badbdc978e5a53db68df176901ceba27cd3c513814759cc8fa99b7641551c2ca811b9479cc0d060aae34bfff112bb112a3d88abd58c4548c8aa582d3075c0677537c08077b44de2a7f65c1eada6e647a8549fec64d9476992cf29530e2cc17694f3be609da77368c433074e9db4b68baa539f3229dfa98aa3548b0a97fba5b718f0b1e3e8aabf9005047c5385f78b5d9ec4b4cd058f28a8812a2e655d6efc685f4bd417d7db1d47be32379d5b50f6f3812f816512198a598618372b65967ad7c8536b4b2b5ee78426a16a716f6a9d83017725cf47e63c2916719121cd75e9657f1e80380fb9859f014bd4df57ffca49e1cc380400a15a9649e3eae4872a8217b743012aa4eb23aa26ada7b351d783f0ccc8b55e56171a1281ae16bd72f195b7cf524e0cef2810d6cf3b022e6b966ad09f7404dbce9e4593b2fb09bae2cb3e05ff5107e3c5f6ec12b73da7857c61bdc45bc7aa2ba80b2be7ce4e6925d53bb96e452777a30a98909c943a47a20d1948e3b8eff755097b5339106706ed4dc6c1282fb7277c6dc056352211a03e02592deffcdfe99a1300faa78df810ab293cff30202c2de48e63d9fba327e6ce27b4f5f0179cd48266c742928763da2ca384e89fe5a5042bae0bce41f4ce85d3269d374b4b2aee2bb5d3c88f63af4df043061b21ea01edc680693f7c5de1cadf38c2b63edbbaa98629dc4751ac4c057341bea2cb3976977f0e96cd43e0e03e3d251709f416221197985acbfd9a38b476e266ce9ef032e6df55fb909138176213f0903f5f5ac89d51afd4724a888137b038530e640039df34abdf0926429f6157bed671558fa9f8cfcd2701361842e5f138a2cd710f65b548431e627856772022f24b0b568221f165cc26b752dee1d1d6cef9588f660b5c940419f571c658f2fd45209e1071e1e8c528bb04518beecfbbe3dbc5903eb8103aef61f3a26b5c23b6703aa4afb15a5b3dd262dc097f21f1deb21646461fe604559d9cb95c3ca0ac17290eb17efe3f0d0abeb68341ed419f8762de63de003eff89d20aaaa00d9038c1baf7cf589fdf274d730059bdc0c573622156647fff85a8d02298c1d9e70c3286ce7de24ce0e537fed3f73e41dd977966d3ea61010a7662f2013300b30641fe0e777f7dad69d2c71dc55a32f74d3e83dddcb71248c75cac3b08637d3f88afecf189e8b2be4d1225be59092eb89879f4c69d6d9e3d822bebaec332ac6efeb7392d00aef43ec1cd0deb0ea759fcb0d3ec9b585c81a4f53f359ab72f1aa4dc20774d18e335edb988c6d90869f60de6f583cf675a4ccc9c38a4f14646e7811f97e9d238925b212eb8818c2d0d93dbd259220849a908a388e5c4dfe38857435cd51624159cb6d9d8edc99e8a50df78a021dd1e044b9ee935fd1ebc36e864592be9f83980ec30c9c9d7467655896160ea3b4c88dcb48c3ed5ed324af3729c5c98c6c3ab927d4c335cf5d8f9381bceb14f27332e4b4e8893c793f847d98099d148bda39dfddb7066e9506ed913c9942d1c6c8b038c3d9e01ffad1f8de074959b5f7a938963a8927afbb3e3308a8ee126b5da5bb7f3158e021f66fa2405033baf69088645a337ee5070de8502ea6266b9aa10e3cc8b42b717365d4f5b69cbf3cb1375016cec387e3f43ffa0ea0f0dcdf9bbb37a4ef34e41d102ba4e37098ce035275a545f890de2aa835387065b0037bddd354935ede92349372c430a53fc747e9d746a0742cb807a21dd642010676c6d90e4a91f96155b86b67200507aee19cfbd163f31d26984b916f5ca12fa3348a5e9c202248e54e7b098cbe4cd8b3f498acd5650494216c37a227b980966f848622a4cc6dac2ff09c6766a83c6b01bbee0f5adde471bd01f321d6354fe02b3bfcddf51ee48368f22121db51e15d4c6439550c7d1f0741dc8206898d845040dd26a3acac0ca25344fc5d7b88926ea0720262140704428433d50f41f4e78bacfdf623d92a8a297aa8b930a7cc5921091b953b761b29ea240e37e12aac3c7f37ae4b4a7b1676ee292a3de30d23723e029b7010456a2cb362ebb28c08518eed46ba6ed6884e18804a68f038327dc80473ea775a1402e99d786846f30f6faad1487f3ae03e354ec84ef3c9017834b7d4e87be2e80530dc25089b7843a941022ad83f35f98b0a60b90a284df89851af4a32d396f6219ebfcfa2d263f8fc3f9fc73f789c733154d73bf36180c98baaf7121f9cceb98299d9f5e460c90bdd8a6a43b7b21f81eafcd0b5c485ca1f6f24e445c2bd730154df98be9db0cd992aea5d1109ad5120c205dbc2025081c1af394306b327e0a1f0b10d67ad059bb423b40d2f386202cea6f8714f1e08cdd293f67e3604bc043f424341443333ad0e33a75cb4bbf4121069860fd80ec510630f873c0677920702cb721eba12a78530921e4ad9488c1ca8bd433b84bb6263ce2fdb28806d1402b510f1a007068880f2b4d2a81d4b582218070dc9f82cfabb469b809c099722880cf450e7f1a125ef8c6013ba1a8362155dd52c3dbbcb50b53ff7b48aa9684c9d3298d476cfc9bc5758ef70cde3c7c779f442126301c0a99bf7b2aea0f0bef00ac2c572ccd28b28774753b0afa5b923030ac88fde7d24dc912922f7415873bb13ca59965adf73970145a15fcbe7b3499aa3191377e5c031c2acff09f1dd1b20e35580c87764d73c600c7785438445eb666cf48058a663b24b20f32ad9039b70bf1d899777bd699240754beb185302902176c46c316573b4e58ca85e2dae7d541f448d69df207e31e9ebf6565120187b7e874a1424c52b2bcde7cd54ea3a91b2a4fab1fa602fc646c51b6aa7d70427f8adf652eb7aad51bb235903b10d3d69903613d077acb4efe6ab444a27adceeade4b219da2aacd45bff87a33a335eb1683c03a6a8a9ed874631f98b56405bcec3872d8bdfc7eeffb0808100d92a0408e19c971d0d23b80d2ead241e51a5e0c7f12e21d94411f00eb9edcb081b6abb889481166d91b00e1932258b84aa9d0b3116d29cf146c241708873894ec94612531a8d72244f5882f1720311e803dff6b52b51fd10e408201c285baa3c3fa9fc590764cf31126227f20f77e1fa7c7f593a57cc768900b760473b4dbaa9304bb7c1aa70122008187e54dfde5eb4a6dc3d2bc3e360f26bf127d3749e0aa917495d0d6d6654bd1144624f0d14f78e91c90ccfe3e105647be93c25ae7854009f57b8f500f51e558715f0837ab5590de6230de99552bf82c2053c62acce2ca4a254b56dd42d2401031602049532b9200f5201061c240c7af98d968113f47cbe838b33c135bf36106f916723881c83e6392df746ea6e4b86fe67ea3f9af60a11e211140304a0bb0410dbd9650cc3e9c81aa7f3c8c1fefe147a69fa7537a93cb8a8a26e649b8b4e576d54bb6dc01da0e25aac3fa0c1046e400cd03dfb90a42d4f58eb2ff9be972004adcc57b5d6220285e04bd9d71545a82edf5fb1b051ef3565d4bc42802ad4a1356d4c6705b0728903b715b602613c3095f299e564dd3c954cef3d5f069e49faf82e298d874a9b2a321502638902c1b553267e1a2900d0789d850eb6fbd685a2220997890d6b9084c9311359855f648138b8de0a34896c8d9a8d1e3b80b4f4bbab46ebecf1cb1ce9b1beecdedb831bb356aad4baf292f46e7fb6b333f842539f6329612b6308a5bb520bbe334e502213fcaf791388cff9521187b9c77bb8ef476a1e6dea0273d96192ebd511c13f139a0164c086421a29391b7a11d597ca125bc7a192c9c8b5ae4839236a72a781c86f04b2284b27b03328d5dbab8e59c643a0509f633a25e41878dd7665bc1a2a3febff3a53064faf09628d907e29202f2d3620d921f3f447ac3748c8737368e73349c1a576329028c9fac8a093b80b9af530941d5908760cd6597984656b3d9b94e05f2d0d0d6d012bafe8e666042bd4b6cc9f6a115c3af947ee7b4256ad015e6a20fb01573762901b9f489c0c411e2a3f5fadfb88ef59693febb9373e35a5a3c84e326e495c07422d810f25e4aa8cafa33dc1471bc5b6bdce6ada938108b2a2e4e5b506f964d5905aaecb3b82a91f81d9836e93207862f3eba354dcb5e3052e20c04d62a64b169592aff9d63137e5a49782effaca066f5176e24d55dcfa93b6a091a1139fd453b22d11450c91c242831af05107859f35602bcf56c61d41f229043472e2569a0c3001021c2daca5f7adacf07875daf1dd2c81718dcfb5e0436de7f7c216017a4dceaf1acbb45193851d13d4b23fdc183573c3f2e5856e2253ec381107793bb7f9277af3393f68ee846a3416e284b505cbfa43dda176b64fe8ae1cfe4d36131eab7a67c31b6c6b2e627b349a67b55654942d3612bb51519f685f23de2e69d9e0ad59c744b6e87aa431a4818d059713a39624a6b0c599806a9ec9c532111c1597b14acf60247cc5f0d886f724ba11a2d577199304f81c4b81c4816d6e6871286cc3300d285f422650bdc82f7885cb528282c538f520690caaf1307744f751a7e549419fc0d39c171491fc7502a4eab56b5f8570c9cdb96d0d9040901d8fa143cc142e5fe52d4523177e94742c626476b943f91d1add2304fcd25b9a831aa6d185d0d12e9622fef77792361607f7c2b8eb95b1ae07f7a61f6ec779b8300777779879120851d66a8ef7f0502d5f915d5827379abf58683780253f0919e215b773254a4f3fff767d0c24f9e2b18f1eb8acf35edbf63948f73a9a6495cf62aef346535ce66e94c1a5114bf426a416f74fc1fabea9291f19c40efc3f1a84f8634929683fe5124ddc6bc0a9b665bcbe0a3f55aabe06cc5ed641ab0bb9e2352939a4044efae45d9abf3a6047c08e57ab51022d665b5eb68867ee11eb1999bf417054d80ef28f43d8db11b3b49b8715c3c79a6a1644c913902f688dce6bb2c917c66510e5e276f086a8da01af4037b6df8f859b0a4bf62dbe20b011859c142dd22ea39ba5d2188a3c4802cc79ae172a5e05e1aa2db5dc7311f8257492792233e90aeb21e6d638dd51b95e7281a8a7d0dc67c2072c1a845570a50f83b698e194b1307d0b3388005a8eabf581c3b15e93fa5929be0447cb8fa486e2d3c4c806106e3682249696caa9a2d6c6be373f1376b8785851b4fd784498000281bf2b8063c9af348e379d8c8c00933d078b2d5ea526f03790c6571b199b067b3aa8cd04d76c6006dfc6ca7890793c90a4641c28f6f3d3a12b2b1586a90f4e44eb5881f6071cea505e6bff100237466f290dd299ddad1e93d745fe7b4cc94ddfef2eed90a45842a18b7bc31dbc69b89e3ac7a24f7f9a47d8cbe89be443585f05991163c13196b082af120cbb871c581af652e5359c93dfaa2c89b664194098ba557a2175d69557e33c91a0667d959f670bdd42deefa09bd4ac685490f93744ac9944e7da2bc085d9483250810960c6ae8891a7004dac4186950bb6424ec01174de1319ba579e65163febe4bd69c2ad6187e965ef6e454e025c02e5a81f2625c91930071a36d1483ab288c49d5714381ec6fe5d89329547fe63720a5a92d25ad2021191332c1784a9f3ed3b25691a9f8f2f01d512baedb6e6849d27908ce60725d0fc16dca9b7907ed483f1c1aa3784d29b54d79a7e82685626d20ac876355ea9c930f07de8e87c682545120a7830d7e3b8e6665b38e6535e8fc3bd8b83ca221680efe27e191e793dd7b405770c791eeea43b2528e2d01166e2618c05d78aa33a5472029eb440ec2941eb855507c3b66f1c6bc61768c9df7a9c009995c27375cf805cbd5769f42bef7ca02b52d3ad9f91c1d620a3593c2b7a7a59e410fe4cd2fa07b6282bdf33bf8e4b0dd5bdffe186f9c6c88ed058bf8ba39f4744ee1dc199cb392061850e5fe3436b08315267cd16a48f96b9308ccaa5672e217c7ae99c77ac586d125769b338c53fb6fbdff92bb3712bef97e78beb4189bf8fd9ee6e180aaf613b8cb2039719394886cae3416f355275a2fd46dfd390a04dd4d955fa908b764b08d5ec0a0e4c61fb52792de0f39839af716978ccd35655c3661e4ec9990267f69f43f9066a469b4345fd4a7f4d1b53b064d1023a6067eaaf4ba58c27f3ac139be5e4c66d57869c8073c2c61e6af24832e653aadccb386ec69f76fad4d12f03fe096c7ae903ed7ca982a6e2e58eb1d435efb694121813aecdc1936c3b0c235a518fdad72e743b0694a2f91a6bfe21d5fa9b12b7057e2c4122995ff61f7d238d09b070617519a6b029e719c8e3c09d81c4a271f7dd849f355177720bfeb5f7f360bcee9226cae2ac9939033013e5c25c9fa6be45a64fa0d8084932fdfd4166f03e4a7c58dcd4212db5e544265b77332c04a9cb35aa7e15c1f8223b6ada0e6747d58254d8d8441473f5726c24bdaad67867e664877a863e88c9f818a103aada8c9cca265b96ace1f770342fab87a65f3efc16b223240133a7531e743ee983bd0ce1defbe1b02ac66e3d7d70e3e77331aaaa143451d428d426bf97a9a87655300d63c1baf565dd0308791591e8297a1918b700e6336cec91492f21aa53e1dfeed7b98156e00e9dd25a824e884d2764bbe6e7a5c5a81c5dc50279e09823def443112469cacc5e262ce2a493b79e9d25da873b746125cd2728d45455d303f6b242cd079875e2819df5fab40114c786ab8657688e48574bb9ebf2c72ede30a3f3ea799bfad169dc0e521fb08bcdc35368d98e51d4ed62058c602c9bf5feaef7c258ad4c29439e2f91f50be07bfad603a7d647cefddbc2933548a9e0eca17f65dc9b000b583646d3c06ab8568264a45805aceffa7df0bfe3fed69a60289a35ddd0c0e3fafcb49b820fa19dab59a0c7776d97bb0f8a1794a2049e688d96d8f7e4a14a39e62a720efac2ae7b57b12e753ca1a7adbe6f78002cc6acd061a276642a8140892df3b476436a41a346309d06212ae1abd134bc09483b6d056c69539a92b0b85d0bab083f65d503252c56a6d0e4a6ae2d86f677e581b17db17a9bb055b72022c64259d66a671e1ab438447a38db3cb373142074ad922dcf406bc51d110740f5d23638a54a2265635bbc3b35b57ea375ea6d4c79ebf2702afa6acfee6183b23c1037d399853439014d1d0f9cebb505e130bf79893c78ea90e29a6ce0604ec63b33bfc684a2a6c13813794707918a10c6b75232bc8f7a9c381d117828c175173dcd8b4cf8e4088c9ffeb9267a1d98c9736d2bdeb80250094524415912ad262abb9b205d9a585c0f06213a462f393b68a5826a6cd3aa0dfb99744da8f90b0a13756227e3556347e74bbdf8f53c453f21711f7e601c750f6808962f64c2df901df5f7e61255341b68f47b244a31c10e987342d1f7376349b98ce3dee9238205151f1d4ba1834a4b50df0f41d25b77aca10da9038403c2c1981bb3eaf77562663cffb9e482f1fdfec68d1ce2b41a2df646ee113f4b1d621f1eb962c56eb48d30ba0a83464b8be4200b3d395e8a4fba7f1ad9039de30c1e603ef72ab7f13ab988b418c622426b1154bb18b891822d670cf0f2c847b55d8c0dd89b195f6b916307fe7226c994cd354db40dcd4cf1a12919b4de6af2c3e1f751e2988f3e9614352c7dc755d2e32bbe08b12b27aa0a2b9d5a479615a2cfce4dc8a9222010957be8b64e5048a45e283a3f73926803546cf38b049c91d30f0cfadbd4b7c32dd3e743202547e706bc563c593c6a422a1f79ae3d50bafe5d955dcceb591b13812b7f51a0642ba5b1a565943d4c99f5c10430d5ed8fa7718db4b313bb152fa52d666e99224f65299819d2b674fb09879f1d8fb2cb5fd06f45dcd30d08b8efa010e55f0e74235f0f73815a715c99a901a6081eea864892971718efc187d7b8811bfa66cd2fb31e1c7c78f2e12b98ac1f7f12d5dcb0a4558f78943dce6f8df7c1d2970b45a49ce95025a128cc992675f98970fc55dc53e3bd195c7154777d7772c0cb08c4773adb5019f798ba83a7ea51bd525bed76d1c56a957aa5dfa8fb2086d3594d2b5e233d973dde1f91e6c3178902b54e44d593b7f27018230d713a48b165647b9c9b9bf82b84575ddca86d4a58848503de36afeb86664dfb3d4b51e72fd7afe80886ca728770ef03e76d5d41cf956dcf09964a9378862804fbd64893bd93a8b8f52f4b59b87ed3d718f6e1508db2f0ca3074c94f36903110a69346c499935d7bcd90f4f0667ef232fc0fa63780934238c78d47712e6d7c36036fe6eb5b5cfafc96d4d6fba6b45bc54cc1061aac8b09adf61829706fb840afd1f3f0eee96d2fcb7d2eccbd775b660b76c86c53d87e58e3896b51ebb5f80ecd2b7ac5e6fe3b9c560745d6e19fcbb74f6fad156a919d38f3a1db4387ecdb57d3bea18e60315ab53afd2ccbbef52a55b8fb558b383816662adb019f76ac4ad203d202f647821d5e87fcc380d0b5e47409c668429efad14e52a1041cefcc3138cfb2683eaa3a3e4029a02882201b185cbb41ac6ac3e77dc6cb711fa9cbb456d4e632e847431db4f3378b0836caba0d6212a0e5d5556adc75d77f21b90d12252dae2c7281ba3061243218f50ce9b00dbe11d0735462c4c3dab7acddba2a6afd9f5d3f9c9bc842199ca688074dc8c23d731b6a1e85ecdd3d5ca1cdbcdb16a7cc7f502ac321a51cd39541788e21c3710aa66e847f674a85102bf0f9abce4428085b001033b72f907dc4d7b68cb4e5b3ee13bdacfc4a3e26ee061068373c5390fa2f8b99dc02410ce13de7133cd5524ac1d4a6b9e8e8b6714514af275b0568839e420a850bdabd1770701123e5b35067e855f74d58c0b25ae3461fc0f1f33648f5a6c338254539a56f221cb5f039fa718c74a895915960a52489f9e4b768b60827a2653ed69d353055030b9eba31295f383b27b5fd999a43344fdef28717f7fbfeaed70e70ea0451fd63ce180805a751832fdfa4b3413a6a5dabcc36c19ff3c41b4edd0d108a50f8e00d9508185ee66516f4969efdc72fbef1313040cfaf10d4e7b222298bf39621a102884a1d42adbc1049d3156068364fa692783a2f7cde7b847154498e1898aca50283187cee21edd30c7c21313a3b4d00f2ccf76deecc9050a7f3cea7553a919346499f943f49cd38a6e73ba8a784c15a2cfe3a0b8990f4091c2cd40449370b6327f609eb36688b8fbb697a45a50fa0e42451f6a88136a4842ade99b9630f45ac7d09eead2ecb6b1100046986c643552c679b647dc1ea6ba385b8a2478a7f502aea49f771a7350c15ca9ea3c5e76cbdd7bf4ef0f9418225bb39ca016218a35a78ef4a55ed862637e4d58bf99cd134ecc1fbc3cf432ff2a1af769e589cabaa415347058f365c7366779d4e942c98a4078f4c7a6de9762d6621bcbffc1303cfa2fe2d15c1278a9ee6bc6c5ee9c3a79f4501dfe92e85768ff8aa1f6230690b0d67b557705ae35def556b23b82bb39f5f3a6efb56548039d510d7ba64f7b410d183e18c7d0d7c77acecc9ad41620aab7c9a7b67717b0375489590708190d9ede304bb475c0598f5880d1de5b6bc59d4893130aebfa59982d130ca675c4a0cca30893253d15ba2d7153447d87d2baa29b61e5abb677656e641402755ee64ba6af864bcd6e88b0cc42c7a7cb0b747aa4462240cab66c470b23a243347ab8a04f96ad98f56a047bfd52af46226c3af2de1958c9c160376f0f816b7f83a6ef08e2025d4aa6bd5751acf19378a1c19a092c366ad0eb72043a3d20b4a301f240221dc43093a9d2e5dce8089bda2f3adda733916528bc177e7d617807af048b2315e23496b0aac087da0af6e8a929482fff68fdf660300e6ea8207be51771cab007794ddf3a86d32ba9cf40c782a1f31c665c7c02fb5dbbbfd108b5793728955b1d1904f014b534208fdcaee17b9a2dec2c357c24b647ecc7d85fc2ee20926bbd8c4bb1d4c0e45a640bee0ca37b8d4731b61aa6996fc26333318380561d7193c30b25401e19a4d511d7050a08c1f4ceb2ac57143f2142166c4b4270c826a004db2621009fcc4d935005ccb62ce825ae943f32a7b10b62a110fdaf30f244f1d2e345a4e7ceb235000b09aabba60df2d694abed5b0c0445a8cd52af36c8ce9f3244d3c518e87b90201796de0e494572fba43dcdac6ede88c0ed9cd640cba123211f3407eb356f3d983e53eaf7f12198aee5e55c348780a6385203a17254249c7ba8906f40232ec61f7bc57e14ca9b28a34069b178f0e69862416abbd6c3a380425b8cdde9f1256b573f19dd4cdb1cbee8ef0d29653f2229a4f3615c80bb18b743b1670521ce8570145cae8e57929f928944b8b201b1ad6677996bf2b8f36324857c75abcf2df2c6cca041ec1a080a3515b70d835cdd42f97e52dfb8585566031eb48e781f06d18b264289f7e4449c91a648d80a89fe185fbaf3439a7abba315d7064bf54c90c09d35a77c4892baf67479d90211d6218c0f438647bde6bd76d9830d744924b819aacc4d90b5f6cb7a41750426d7496507b0de36604686ea9c0a1e3706b5977abde6b3e2cb3fb2adb17faec1b891bf99b9009a6d92adef8d1dff65917514bfefd4481c61836c0d2ac2403ab7fc816e3916413aa9ba6533cd923513c5ec438f29f609c737d274b148bd43405feafa9d28b44d3e30b185bc7a040623c2b51928a454df56b87994600292fadc72855c66a8079abaaad1bd5c6e282e1f687cff070413038da1e106901793dd950f0c3686ea8599db07f5ddda720bf9a0e61183e5f874947260bc51f7859c0502ca653bdd94b94bd5e94678f6da1006e614849b7910e11147d7750e290d051592467eac8606840e282482f59280c151a4c7bcab751119b087b899095c755b3b720740207b632f2de6068238082b5cd1a465e248177e7cba67dcd059acb6f2e88ca139d19105fefea323e211410af8b6d5a1a013148309e8cb8f900f1baab629ca62c984f8931b863ae71f0e695c43c3bbe8a0b515b4b346be04c317c3df52d86d48b61ed14211c6de9fc41be3e30557d066e378c2dac01065f60855de0841d49e0eb16a4c8a009c20d9f6a725782e7ae17de05130d7586e082d1baefad69032952c11bf78bceb0de9edb05b68a887f176e8f4999164716ddecc4252f9c2d449a60d132d0fe1fdd688a8954e461d14af4da27421bdfce2bda699ae9ffc1bba91e15f1b7f876dd0adabae9fda2d761b04c4627a5d1f446b0aab34c5984d4ebecae99a7d0ff3a89206b747d5d516c1de7a3f47a1e001c65e1eb85d2886441ff84a2e9ca390885e5f3d0e53d1df75ca4ddc46f5c762f466c45bac7cc68924ad2b0e9aa9e32c205640aa9ef3cbab065501b272087a32d06677155eb63d0cee546ba77a56318fda409b2ca9d18480db3dc110e65b2f6cffd272f2ff46ca7773ec45c3a5e187f91c0afb3102698a6382eaa598a59250f05d411c694f1536a2595967e1e0efef1ac2b924ec898eebc7541098710fb4ff1964c1399e25f40862c722857682a4c077e9e624cdf1a51c26029a5f51ce7da25760ba2e3d0295b7f5d591964462b5a5027a70f982ccb45725e50d7335fd644048a6dff6ab15c63722c584c5d007df1f85aac37ca5be1a9a30f4913b0d01180a51fd8a6e0e4ffc029e3d3cf37afe82338c0d89f46edc1c85f29473b02c85933b0f82557bd4d23f81fb0072a4a9ecc6abdb7867178da03801077e1ddf7cb64fe68a61521fbcc456f4338d0d40de81c6e46343ebd959482ab02c3a2c7bdb75ccc43efd232f6a92ee456e68bd0a3da3cba0da69a71361fa3daa4d8b4ec9f04307952e0aea2a04c28758a4303c87f67e9203139e431b42cc2336213e768766b486b5b23ed4a51fdce70d127abe4b8db9d53fc4562cc52e2662284631160331c56ab1e869ec4f384f639f7d5fc1af951e3116023973cdc671d2ff2e89c4e51839e4199a95f29f90e83153b09fb5531d6899585ed35f8461097dab37169e89767cfbc01d5c67ee899bf12faa9f43dc374450c4e1cb599882fee0e68c18e39ba83743302393a046f0d6996319aafa364c71969b4353789717d5d06cc32632f18bf0d96d1dd2156784a5250d90d703722e47f184015f069c1070f980b1c1eb325a9d7619c7fbfa3bd5a194e0474888210a58184dfcdb115df651d6a478838025f0ae9de57f599a09f07ec49e6dc7bbf7aa5f953a77e0aeba8c83761fe9d3308eb95a7d4879c575db646ed4b4adf65f0b171a0937d36aa53435d26d54c309dc187bc3996c3399e4c9c3c274f2bd3b95920a4d20605bd313de1fbb1b4c7469c0553a9e2fba27b293f15aa6a2fd1f05201a19ef18b1c8f5d8a0d4cad590f0df9b560b1dd5003bf1ffe04cd5a3c40b47815ddfc1fe822829a1197b1a16a620c1b2b047ae7da19e32090bcd9c8e2025c11d6fa577d3cc72ec3eb55e00faae8eadf586827997378a5ea0c5502872a89e374049eaba717809a6cb093007d8586efe2eb91b00db4e9c2dae8f9c6499da63f41935dea3f01d1b5692e9a1a033aeec7f73cb4c4c8b06867f4d7722b0c6d693ef140d907ec460c8b57d93b4b4d140e46b449017d6ffb8a3329d42818d01312d0598981fb8a67fa24fbbe9d8924bbcc4cff94de64983ed99c07c25b72f71c062714481e598db80a78cb7f89d6a2605b8055b042dfb9e4361b2f63192347f5ecc2cde30c3c130acb61b97da330ff27e766f54ac2b8c8a825f63b1b70082f4941a51846e6cdf2098535a06fd2c3d19b10ddf0e9c17239badf3a3151ae2130087d8cf9652024a00129786c3bcf905269240be6f789a848d944b0f090e3293dd0b065d6b6ba51669636f8bd14e2019d210b66b0d05b502fd59562ad36093a44c813939708a018207592e8fc35412b735f7ca0739be379e68caaefecdc474ee42f1152ffe33f22bd740595d9edd6d99744dbdfb592ece7301b1b31bc0a28b5b4347a0132ca72f1dbeb90b7ea7f482fa0a0c9bec57060ebd1a9209d8ff2fe13b0bf9a413f3f24e613e197b7e27636bf251c24dfb985e3cdfef70da70dbe0aca60baba18d2c6881b9acb9e9ab60beeb4e12da35134eabcb21e8f523b60b2a58d9b8e9b2ce857c8565cb2a47cc84ec148d1ce055b09055b696334c46590e2624dc2a8cf82a0893f987ad5400396923fcde655ec175d5ab81fa5b47414598734eadd811747454b49d9c4ab981f9728e9aa21427425ad134a27c0023440605c4ee1f08f2041bc6628ef2e96a97867a56c9bc9419195bc36f802eac5a6da5408d0d6fa248cb655ff80d7a5f3792b46df573f01bfcfb3c8f82a7e284973af2f445a8d11437ada8d60bd953ab24bf60cd4b540de00f298a2f5518f267f2d34a0a0a51ccbc165c3d8eb5b04538da0dea99acdc3ae943c5b59aea2a0b2c38d413ce7595efa6147615fd63e66e5fcb1f60d54d5852ab82830d3b051c450507e5b0bd4d9fe0a07c00553be74dbfb5778e001b311b59328443e9e4b303e538d0ec13710dc281d687fe7081e8f9786de24697264bf9ae951012c6c3db285efd9c3bb83eccf3af377c9e5113e67d6933887ba2f25139dd5852c51a11903ea4e5bd09462029c7c9954bc37aed7bb74d1f032fecdd1a9ea26ea4ee17469b66a3f39d6f0b5faaa5ef037aeacf70c44eedcf80b0bf5dacfdc55cfc07bb12e353f728f17e06f2074528602ce38bb05cbff42af4276297e50632330c95f7c4ac2be24e762a85cad25c21c43f62fb878005a3c84a5202adf020e74c391d295f9c85b56c43e36d2a710cc7afdc6ef15ac6b1d1f06a84987b17312dc7c3df95c503d74ff9328242b8ffdaf0f1bcc7ed6d8536eea9bd6f79cd9a747d0674d8dae8a46632d6bee30822beae5679fe16d84bd576965f04404aae3ce81989075069397e17735af3f3d4857614ad6c43fabfe452305c69cc0a2accea28abd53138e584285900657457dac55d128a1d3999cb84874fcd0818e5e29a4e473d1809a1882e91d81579d9082e400d55e820bee615961f2b27be3c63b3fa4e0d47d0b07f2a2ee79702acac58bc5072dbced429600256a0d72394806fc2e3763356b07d84d55ca7c130540ded74c9210f2c7bb1620c21fc06c8097715a057b84c3d11c8a3f3ecadf8e021d3b5a1d10ae4517ff18bed3d94a960b6bb466ff750d523c4bebbaecab6219fd4037af24869d785eb1d6106b34ddb26c26de55a226f868a7f157db0ea5db33ec4b45ed2786ec9c39d2fa3d4b1776d11c5649ed1286bd1add5c087a26e439bd6032cd16cba7684b0974156155d8eac23246184305c65462f1300532210a568eca1b8a692ba7c3cbea0a8950d5518e4b9b623f2ee2308dff8f8faef257ff87c131c99f2ae3e3fbbc31ad243470a8355b9699aab44aed3b910f42b1c0082d72b2ed82b3639e470b5b9e6319b5f9f49945dabf7fdf3311a5bdafffe8ea9b069485f8a6fa201263125b487086a296170a6c6b2845939e4937e44398319a9785e54922ec40ab33a1ba7eb8bee9a1cfce9e2b691211a39e7dd0ac4699f9ac91358da2bf810d932b1b99c509bf346687bd6073091b20a28f6e0d1f17b0ee2a84921388a5f871e1418d6ae984284f8fd98ab220ffd24b8dc522e9c882b6e1e204d876a34407a537e93e467b9f2eaf77a9f34a672810722ab4248ac4021f66c5509000504447da116e83553de6bae361b126b46687506967ff0be66c88bd8d9adb840770efbce9cece49495ec7f2a47dec3e9789f30284fb35bb4dfa1b66b7f6d1ed1bdde1df39136c6a0ac9864d92c153a4d47027597eea0e6836ebaf10ee380f00d15037b44820a152393928c5cc659c79a81cdf07468672b5bbeec0435001748523bee6bf4267c7f128eac152f089724929e4df8b7d48f999802482b25ad3c844abd7b8054a9e8183106ad752fedd5ca464aa32115ac9afb1657f37f58ce9fea7686e6de8499a49cd6d6c1f1835da0b216782e11621df9a05701d12bb51a2e233d30e8c18df7793977bf7d03738f06f333703994f650acd3ed0eea465b3e1824c3d4beccdfee2df532283ce14642cee36171bbfd9b1fe98a39a58ed145d096334a549ab2d4aa767136ea797adb7c1abfeccd86c3c602b0a80b1982cccea04a418f6541cfd90e4df1dce2e2004c28c7f5b3191d001a99757b8c48aa26e837672e11074b60661fdbc80b139c0b5957e71a3d564f8574afe9d6c36154edf722e6c524fc758965245a8a43d8d9b7085c7cc8de83ad05dd60f192f5499eb53b36133874baf7be63869633be421b21a7a581511fa0783d478ff451c7a54625058203ba3f348971de14b07b9cd63f019fa28f4e27c87d5ce3f9c958d753b00ef8b06177cad0701caffc8ed50f083850e6d147797593f2c89fa50db4558363b577c5b50e914379df114c65ebe50f105bffc6d3c925e7af388c3d48472d00214d1d3d8a49a3e63ededdb1d8943f34823f49f0618fcfd9be2e6d797f3397623bbbf2da371d2e84ba65baf2accc7367ca66d513b394d0ead70a03949df645c1c7bbbc48508f11b34392fc055b9d9d882ab5d61aef86d7a51a058ad45409a0d1e6efc1b427860367c3635550ef81c2f3782ae3733612d9f075764866488e707c1a633f03b52c8c9338359840470bd340359184b3871a46e71e9857a9031dc6f3daeaeb5417b60e8e7463b8abb4b1fc8ac6bc063a83fce47469755d8e11b9a99c21b26307e53b63e8d3715d6b29049204237e4cf708e82525a7539d3723bdb01422522646ef9e4c4519c29978f6c4a694926688f83dc598692e82ee7f75b9c3df431da055d5b131b4456aa73ae1b11c42af92230482e7d76811ccdb25a217062c4d039017b52c5516623b0b56f0a0f81643590c8f5df57184b99661a7fa7208588b8655465249287df1b38b2c070c961b1b7f0f0c32dbdc32088df88391191af5a034a882485c1ae6acc1137d09db3dc0f1032151da53997d0e487a681ab7c52db5741b32c41d13ec35987d2bd07dbf2b250c4513a68da8e44c0456c8e7e7c5a0b6c84d53f84cb81373e499fe271a2696c8c5a74d745c9806b4bce326a731547ecde01d61c38723cae7c57de5faf8605ab63caf3e733cc99e28b77be96d4072f80b7f0e42139b991bfbc6581e32ffa1c788ebbdb63addb62fe674a3da30fbeee4b006685b7275b3550536cf613500ce75f852721df9d7c01a9ce48bb09038418d482b81ff2f6ee1c853d91c894381006cff461da1c73992e3c14e17142c0c9f197cc5f6db0cf50ed9ac10ecff33df667228b58c13574f4a37612f38cd002dd3d64247a14dded909a66b33904d7645e9ab2d8abb444e8b5489d88652f57cb702ca62676016a40fb766953c34a16e70291a42d14523c94a109a203b078dc4ca5a172a96351898cc67d9ca85a10e31c7b78409511ec64920da738137838d7d8f522e03f20ea3356f6aae0935d3e18cfeeae72a0129cb5b7e2eb0153090bcc0219f63d164f14e9a4b48248e125e78170869f1ce162cec0fddd2871e714c66c5878cfe3d88d7fae518aff98796b609a5e89219b2e151bb50f3a024daea572294102307dc97c9e4c60debaed2c7d748f7f07ce2b8e01eda0c4578631ec3552c3107606bfe5a8980aca44b5b5a23a2a57d7206fc36bbe47f28a9eb662fa7538956eac37a299638e3c56b0ec71eaaa17119e5a02fdff1ccf849bd4db976213d9bc4a77fda0d175443ee61d48a56a2cc2e1c202eb22070092cac9746e01d4e05fc5a9c7354c53722e0d3cf55a68273d67bd0baae7a2854c9e0c6661bf7be340b12fa00d00b8d1b753adb8bd2083ce3d59d24a585fe72799e80d2ed18d27444cf538cd441d3cb979295e6d083c08226bdd2048aa3a7e34d51362af7242fe32b2bbe04a8182877902d0d26febd863c061a9e2eb1e4f4db06c5a8f3e252c548e8cb65cbc93506e19a8a1194770469e9c04eeb02064d19de96879884542e74c73c4191e996696d72aec4b25c54dbac486bd45e2f5c6abdafc83c4edaeb2b6ee436ed7702268134ed34da1fbff749814506d96bc01ae5b0e161c49e1837dc6b1dddb377670d0cc517f6e928c5c3d7eab12511047b5e91a53838d4202239b120cfd748c67a9671b247d4dc7334b14054bf5d520653275e64a05f0d6388ac5b88a33337952d8f1c8e517b8f807a45a375db2efb3a3ee76a84106dc7df30e17342c37360a09ab6d10f4a5f47805a683cae46a890121415d13cda5d286a38528e6926ea81eb4927a6c71f8c5fb398f974dc6f5d09b1e425ad13f85a7089e7adc4a9a85d0b9d73b67d8939419d48fc5d734caa5ab3e507f1c49af4a40eaee7f24e0efa1ce96f68ddc9ce51db4e49e832ae5eaaa909930e321981f510a8c003c85a6ef02f8a070ef83ba0f1458a3ca4679c8983f321f31683cbe77ff08e407be344466a5adcff82566500597fd93ff679df54892d519260f2ba046ae78f6b7a57d2530b1cef9e4a45e664cb324e5528832b50a13a0fc8a8b47fd5a9764c71fa2a3823dbd89251bb5aa594e213a94fe5f9428503c7267e3c7af3865846cf8517222927f0566afaceaa5b518bc69639442744c14adaed3bdcf4a18a4a518a2361c7e4bb3d73a7fbc794288d19e1c27ca227f70b5739d6d74adc7d55d5cd165ddec435572704cfa2e739a69bcd95a366cb24f022f288f05df439624a9bbecca25c739d94c29fc739574f59739d34692f76bad76bd2447ea8d775d2aeaac7efeacf0f4042e2421a61bff0bceef99641c15b4b165dd117b2d0aba17bf8fcb4798c5f8b0403269e5b6b2b11c2a91c08238adfd4bc6e59df66b6e531c095eb25a51b54e83e7143009827693a079ccecff637f2b408a52f4575af7b30d66d1c432efa79a0078e44eb449b787d5dc0393d9ffe5c1bb570e018ae67b2349ce659b5ebe6fe2ad5881b1e401f400fa07deb32b3147a74bcba93fc8b40840ee9785da69e1ca85a30729b9b27b2417d2bf097cd16c7c650f3cc3a459cb17deafd58ac34058e6616384e7e590420ed5ea363d690c7d1106676f8899ccf0cc9ada24320cd5f0e57573fd2120bbd7aa1e1e21fe174605a71f52963243ca8318045a27b38294710ad328791dd6a99c4a1f1e8ba621d81441996deb6b881751525a8cea3cedfb157eece85ce0b7a7036ed4687d43dd292c4e639a8d4d815c419da6e58b2a6d23216e692495d28f73475b25b5e0b77c730703eaf92823271bc96bb7155a0e522b074c8778bbc16eb5905e633283556695ca1846e9a9acf332c0aca89d2ba9e841d2870a8d61019e60f1fc0281a40e905acc0b10430ead7774645309dc375bd91ec87af4069b987b9599318127f27f28657f898e639241e9d6c0089d66d5c448a4ac81a0d3b7487d2bd66dfcd5c8b3dfec5be7b02bb32b022c8e12f50c0b7dc27b974003c60133bfdd2b414a9b65df10453bface8e2024db4f4d4e35d63beb437e80bb89519af508ad24e49f26e022fd76f1b41864a4ee01c0ad085dbbfacd1d57541c79bc839ee986afd2286ec7bc658cd506e1f8e51ea500e01e8f9fc657f73402143f27899407a66799a5d8f29da5d68bc781f853346a7a68320dbafdec48023ab9c51a38c88b22f224cb111ed8cddcbf02b937194fec4b1a02162fac125ee2b6dfe995efde2877e5b3e8a3d25a0072411ba15820800de1b39e3ee0131c3a5047bfbe9bf8323a49548bdb3c660cc65c1aa7b2e2a21f0a804638241599b0b842901beaf6e91e7800563997abe68f7a89d626540e917a0f1bef103c86b10e552b525a60b07e9aacdb4ada7dbddd66c473fb6368d5cd95d9cb8e9744ee2b995deba890d3e6271766622a5a53bf1973c97f14a0394d7b29f342ebe397ae1bcce36222c8be4968981bd7b87b64ba3bdcda39aed67ad2435e10f4ce15897be6af0b4406dfde2bdb06c3be0b6b9f2e6826b5aa4f8cc5e3fe0709531582d6c67f8f8961a265434cab5b5b28614cbdc2ebdae3b182df5d579f1540da79d884d14e654d8c91d3dec7a9a8aadc15d1d986f0ef61c9e7cd2954c2639aa8387fea1442b74ae2cacdbbcaba347eb5a7f12d5513b893f63cc8258bc2adc8a331b251a08ab15745684f52cc9f510c340a07d98d1caa792573a4a4352a744d7653376311e9a3484360cb6245f67e16ee98e0917ff1788935b9bf1003ce137e38bced6fb2bba609a20207a200d498310b3991a1871320012bdc014566e8154755fe82c80fb02f6b15a129440f5eacacfdab9c99cb789a4f620db2e837705536d855ac748426fe942c629aaa659eb3e28d080afe923d326817aee912df35168b439897c4657337f1eaf4c19b0414f0110ad672409c2dc4e550b4aa1fd87ece807ed0fc3f50114f6d5f8398b05e1e3ac066dd25ef2476b20f4795173b7416de8641c63ff3eb25adfdf5866ffeeb7b5c0f621e00d3859a4eb9096c52e28b58f11d4aa077defe01ab2fafea913f23f66c00da8a0d5b5eed27b80459b2070e14916a49da841c65009379c886d44bb66607b4ab058c099e407d79f8ef504420697dac553bc465b5f3a3533c61f0d5fa366560472ebbbcb250c7a7c444d1e34cdba6b941678c8f2f78213178101efb12ef951d0bc3bd93706b92bf963133376c64c32ff29652bc05e9399d4074704e84e63bac30329b038020de14c874d69d1b488890101582a2c7b51384e84b4cb0f8d62f6782e4273c9c29afe80ee2e99beb76ae614a57d5e9251688d44e6a6c1fc14757660c2f7b66659dd86a6fe1d945d40629ca48b7119af9200d61b4f5f3d59256956b9f7807c1ce3599f476da9be3733296d92b55e0c4c8a9efa7cd15d8b4b6ccf22d9e2a070252162e918263729b27e208dafbb64aedd5a38ead1fccb4cef19479d7fee24d8e5f58ed098cda88b283e2e579ebb2c8ca41732c510e1a85f6e6832beca86786206795f61d6e9e94119e51b4bf5ce4a3d835526b5c51340fd1fc26f3a0db8f56332208debf28241c004c17aec6964a0ce26b237c190f941c8007a0257686483c69f7532a04e611eff34fdfbc27ec8852287d58991e4d19904dfe12261498ae300a72ce3dabce2dc649c1c9f099da67b6b09221b555b450d043a2d08e25f8ad4c44c25bc3c5544438107cd4dde27452300c9aae26a27beb941545ea4365dd267545e5067839499aa8091754b12d7fd09cb5803d238ef710e847177aa7cb3c11b8d952fd1a174021c6be1025b30f7e38c00b9a4109f6a8bf9d35d7879fe6516e9f55cab66091941c42954f361c559be59e96ecc656f565a2982fa03bc3556e05795e05780cc82df73d3f1bbc29c1af1890efb24568265bab42348de3ba37bdb60cf8e3cb72b4b526a3f8be4061eab7989be68e262f6510c65b03bce510466178aefd197f07b9ef9407f71e8ea05233308a7259e302ffe4a004d1c6d30eb9dd8e8cc37d015e4569723f6b6fac487edc10db150aa67487b0350a1a1c8eac7178c1393d1b4e19d12c1396d54d8bda62f05c13cb9b0f2bcb1cbf3b6b327ea390d76f76eaaa310170cb61aa9095f782b373a6c532e7f5ba658ce111be9d11d2ef7e816253ebe2e2daba92fd9fd119712070917e6746c845e2808951ed983380e1380eb8b52b7c0a4f80c6075c7fa7af03ec279fb6cc5dfc0823d1fca8205be71f2d8e3c8c864e5613948561962fa7cabb77f3de69780baa9e34c4021e1b2ea1ac00318f6dd0b6cfcb21233603a6cad162d6a350e5ed5688ae9126952b04a2418b5353a402f1f531966b2f2cf2c43c6225ea75e1b02fb73530ee29cbc01d33b2da2197c7ed6883c00c371cab43e404abcba12efee3274f1b890515bb8cb183bcd08308449a7195430a9c0dc7f9c9ae39415f64f5f9384a984a2469ce9f7548ac4cfb64b1df398cfe01afc8621880a7c486265f2f5c633669a194c91dcd5b767659cbfecbbb1be00236267842f589e3e37fee07abf43d3cda46acca40213a7958e51873b12406aec037ba22bc165c54da1fc3846aa643a90ffeb770a07b8cb53f96def443253c971879a49f1eb1232a1d57891ddacd1b30b1676c0f06818940c8a29621d51b3a386eb10d3f38c03bb0f0196f0203e20216897afa4e44d2f4aa030226c558d8e5c664013b4a076e5256f74e48c7626d140751007b6cc0cf8a0238a931696e5723ba7c3188e50edaf2f60049aca18a21b197bd58e71556eb763fac7a3772ae2549e205b5028f8fe0c13e9b26fc5e11f710a0bfc13b31a5a0da6ce2ed88c5f58d155b5ec0a55124211a63dd005a93cf2784549b64619a901358566141060ef5f2fb884c13e66604ec8af20b0a96d9b6b5994bd5e4e4b9ed357ee7b6d8386b47145828486f1f70f632a22b875c0bb7f00dae49fd65e3e9428007d61b6421c117d98c6fb4bd67953bf50ce4dc425ef7cdd59fa3dbc250b8b359092686d9963c967cfd4064dbee25461ad9c26a3becaa95365859692db7f939c2f5501997a7f7f775d51b79fe889ad80025dc50a6a7284278ea852a4c6ae8d5c5d5d6c48811b6e029b23b015036fb7d134166610a6ea63622b1c288cf27364ab036c1566454484c19d72462adcc37e024c20c3a0f2d0653707f4817cc4f2bfe5c77eb3d2329d0997e731c31238277fc769e796fd253847c8022fd0e96fb196178c91b7bd9169210a0639a598917b11d1c5d5f4da766d1941f8444bc2eff6832eb484b1c757489feb0c8650bbc260099e2edb1c49305079391f76381f9a432397e370c72031a9a27feff6552f96ccd717a4b69cdab7d4ee66cf99303cbb8e9073d9f5ee250b36066f140a9fd8c90be2e4e66b06d628f68cf91a27032797ad61adb3264f8d187768035c12fc2534e2ceef8fc10f29c8aa37dc3d5265c7b1fe0bd6b59b050ed3badd1bed3a0f7e865f16c000fc3361c6e35d2ffb5cc1579d9bec1bdc266b2c2c6479b06f9e0c7b8323fed7bb7138bc2db8f568d313f79c35583df7ea39bb4adfcc5285107c43bd9a22aa8d6c51fce4b344e33f27f2af1832def045ba3f6034292df442e4ae138a89feef3baea356372425c7c7aceab101f0011e8b99d3cb80e729ad4acf7b4e959a1b161a481549b48a142eac39da428de12d61fc45e950dc0b2d3952ed119044507e8c517429ecc0477487300527b5e4942d6cf17cce0d9ea40c53b3f236534ebc0777bfc086724168ed2cc36c30d8c5a2116664187274ec1c7804618050ac748add82ac282e9a4e189b35777dac509385e03f999da36af4fc51baa7ecd0bf09bed36036ef9262277405e18a155ac875098978535ec58919d84c897575a650b632aed3cedb16121f996fb6cb4619d21d9ae2710a654ea47ccdcee9265d0c7adea701e6911c3b3621c413d3ba5e871d136029d87d59a6e76098ff26d661913145710d149c670c46e008a54ec5e8ae95c056885ad5ffef161f2a4bd08d46f0ca5b9313d2d1c4b5a5d5e86ed61955e6e96aa26f7895ddd58552a64f519ecc18e8ed89a2c39362808daddd45498b9ff0007fb700c3e849f50fd76030cf667c9f83dd82ad05564881cc991f0739578ab382bdaeb6b7a911cf7730808146ea6fbc0508fe30a54ef5edf1fba645955e370fb1dd2b6d15a0183167caecce36cc2649147ab4dd1ac424eb2999ebc8b4802233db4e43afa703c34fa7f9451f32fe1175263c56502920f9f1160a49c194ad6e93ea30181cca0e3b3d088fb5ecacb006a34db15b8a4b59557df0bae14a15670055463319405d4c4df8f059fca49a5970158cda3284c77f677a9059b332686775ee58cdb2f2e556fa446fff3f0124aea959ed705dae9de936bf60e03ab6326e64cb4009972cafd6a4cbe9c64db97d8b0e500800f5b9ed49025cff219cf237a59cd6601ab5028fa1bde98954e063215ee15285352097961a0d126777f6bcde421edad8364598d509c2fe2ab6cd38f718af3a69ae52e168b210d4455605ca4c3e6b68ef496cb8ed6482a5db62eb7cf489d70ec5ac73f298412c3882a5c921a615975738d0f5520805c11b07b18f40e4aa021def82109413920c16a2d121f49c64168db13bea7d856a39d52ed172820804e956786c0c7d712903d3abd41f97ddea003509c4cf4197d21ad9f2709d8077883a521402c39d6e454133cf1063ab3aee97cb7c7ef6630e719ae7de0c664e6719564da06ca49f3e9a9b850128531835ab9c0c55aaf570fa72fb429734a0fcccbda68060e164cdde2bf4f62c28bc19e81fb8422f4e3aeabc1a9d0afaf9693d47d5648729460ea6ed4b5e189a6adf65222535993bf2a110eba00d34150b90a1b7da463c50542da5b5dc88152692ce5a81525c6b99b956735e6952d54607e2b99d31c912041176b417d37558bf62c49e4a9c37e44fc263822a1a3ddaa24bfd48095839140d607c12533183e46ca0702e377df5268aeca66a6dff035988ac01f7c5b5002137964f5b9ed409712a62b522a78acdc80d7fe47262ef0084df6d76eecbf78a3ce3b9d22a4af76dc3cd9b2fbf2989b0e42d581523a734ea783532008d0370cd3d39c00efce9e9db1dac9a4e41443da89bfd5b74158eb5b836d9a813df89426917ea8541dce1665b4ca06f4a0923d46279f28f984ba833dc075e7e4f2d5f9f64ab7a1919a998b995a048bc3cb9b22e1fbb5340c3079f699f005e1b8506fe7910630f658dc827d80ce0cef2f441c5896c1104a51d57345168c23c267bd7599fe14a9f10301ba2006738ea7fc207a4d89f32d0471af91a61cdf6e7c88651526c16d41071c12ac0c77066e22b72057468ac1a6ab96037aa5faec6d4bd3a90396b042a7fa640307cda7990b29e65b39905db066c1461502f839319507e8a40021f60cd458386f5db3a838378066b8e61cdac1a2b94eb25f6dbc8d9850a66cb8676b375457eb0391482e161339ceb8845bc74db5e9219ad8e4e4e942fcd2828b96a7d94d4555d94e84a541186d9e51f492a33369bb9b45da05d3106b5cabacaa196f33d57ce8d8598f19d400a9505edd7f602f1b36f447a9f25835357cc5e68983c6e2afd202324977922dcae2cd1f6ad07db674b6410c90131bdfc3db7eadde9af81a4a25a0ac6be59cf2134fdb871c555d151aaef252d4f45f76a40c97599ed3ca133a9a3e4bbd20254e9b214154f5b453ef89d47a6604a395081a9ca3200076469f7db022b26c0be41859a6a7432525d91a7f5ee596a896fbbf3266b54103b02db964c86598ccdc93259b4c23e9ad446e4df58cf362acab49be78c852117a7aea8127b85bcf5adeea61ec00d7f909c8d658577d6a69bec9dc0621ad77bd1234e9a353f71b5f6dec2a554a453657373f8ff4433873c3a6e6fe515a0629aaa3baf62acd28e167537809d9e383caa118b2a9f39b6c2876f0dd720203a9df1d300a8b5cecb0a035aaeeaed0d45e361d0cfe223073ac0833d30cffa8890983f8c3e150f4ff2f2454b08c2c81b97e928b9baf1fba1a4e40a910212f9e46e53288933e172d796946830c3e335f30921a110cb47759f90d5d4c94279a4da301289fe2fd6e1588c62391ef05f1b943bcd1fbd2104253be546ba547cbb54e98c3292c53af544a62e689a62b1162998b7fcaed414ac14a944a3f2eab3b3332618a33558a478b51ed815204e9f58897d20077ad0833efa0949bca9d7a133ce1296a6d6e3cef7459b2a14315d348f27154fc3293e7bcb064381f72db458319c640ad3ad5e9a5089a53cd09b2685d4e293b00b818e3915ad4fd4e5877fa7e451bd51394eeaf880b126d67a29851b73782a01fcd251ad659781f85f824b35fc9182381c43af11fcf6e85a4b447365ab7cc82e6ca20f111de18e388d6aed44dc69c498ad53919399a67cb70139cfc52057d5389703773a8c46b11c8d652ca6c324aebd8a586b1dda39ad300e633010e36832f250710174a0b7c0a8d99a972a4101df03ca4816eb569318bac03f3ec49401a954b574f42a0f35c23e82790cb3910fc8705bb09563dce7ee686cb1ea4d50768bbbafd075d69d84ef210035bd3f9646105651245de336f9c7a048a3c470dc4bd894273f1a2aef146976e9da94153745a366e241651a0615a8b41fdebfb5d33f54fa2052edf3ea8a32cf5ce30a435fb691bbe30087324dd778502071076954a49f4922a6bac2db55faca7b0a82792d948fda28760dce91b2134c94b78dea48cffa464904dbeb8cd39e45db899691c25b7b9514883d8b26284e4e4d0ce58b6e8ce999e4d32b75df8f9842bfcb52fd1157c631e4c93baef04b976061e32121b7b29e3a30b56d8c2e74f31fe532b2d604f5f4c5aa3ab54e03d942b68719767125539f6aad4ec69c7f0c9967c018b9b29469018c673385101b6817483f4a00f14e8cbc51e01855595a789c6cdcb2e495172957da96c13de4b189c67f0112d848eb8bab18f1d169d2700a18cf85010ec76d84e26f04a916ada8b82f502921da3638b925854c3cebe6e3a088edba6509512432c1104da7f2391772c8e03158bcab2c0a7b5edf1dda88f73fb686afd40f12de983a58e40f7c4615fbd3c0391f43d4a751cb90001920933971eefde8a6b0161f10909f3994eeb253d7d1c8da12b452c32f99e0b6b2c8bd1c5cc0d11b7a11f2513bd5a5c4fecb95984751066b8dfaf9f4eb33d2d79af7df8b5b3c28561753b900c3606b93227819737dba1325b5fc6964b323664d85e38071be72cabb85252e0b59062d5a0bcba3939a8a2aeadb13c666aaba30c2c727bae2483bfae49d22cb3c939f953ec610136dde613869115d1237152f5b4b910548be3d20a264c64e36c9fd5d4367e5522fc00f1250d04aff85bc70fc3fb9d48dc904b5e75b812227e358e83f1801bed0ab14212a2721935869848f75afea86fa5b38f1b271c2a8a9f73886f0aae985edc737ecb0d2b77d5dacd88943cff688232a09041f75b9b63eb7baac0840a486ecec65226a16a243ffe7c87553c703c050bfb03c3e3a7574dc87bb6a4638ce3df50d7313d800b50d2ab31efc12b9f9d0b94103cfd2ba2f641e9bb9e83a3604723291a86bf77d4741322bf5754e9965b7ffb819828f9b5447af31ac0c965fe6a139c0aa38cee5b2b615d281bbbdd8fbb0d009de4ae5189645732d446864db1ca62c42a9a87ff1cfb084449a537346ad691be56b189ce7dd43658d9326a8ab7c5f5bb273b894fa8b0fbdf1c2854e510fc05ca156612b3f3a08e28a6261fa5d91cdbce4555b98999cf152bbac97ece818ce4bf25c48594bfa93cb6800c2b643ba87845ceb44f6ebf61572e68f6fa2f4f66508b1015c315a174fa870ff2c93ba3640ec9b402bdb72809bbe22792842cd706ea5baeacd8fc2780a2bba82f267272f503e5842a72f8eb84b91331a46a2ab5fe3f6ccdaaf810070b829a8d00582620f75b9df028607c89176ad31128bf94969a2497bd458322691edef8f2fb6ce8c99e99f26bc2ccd0d4da7ece46bad224efa631d2ab7474fade530510c5523a57e4c8571b45bd9ae921a7ffe488d8e120c9a6d2c9439a54dbc13c0f1ace8046822b6ff9e4a8e6cfd11b8a28917a8eb4888697ca799e31992cf330b8ddc12b08e0f6e6f4b5048098314fb8be94b460ce3f03585bbd65b1bff179f9526f1b45dafea141d8ddc433e1edc1df93693cc034642666598cc79b2a9c53ea8d7fb09c91961df8ab83ea25343f2735cb239f332f6b6fe8fe7ccb41a1a34b8e63a8d0815eb90fb214735279da745443590ac137b7556fa28978b62a0eecfef4f8395567a241ed3427edeb29c46786859857f8bc28dbe2ee74361ee11242ab3804e3d059c339a8e86fafe1a61c35a80d3090c856821da8561c3402ce98ef5d267d071b6ee8f8c07cd688763406c68f17850b7a90057cbd64c246cc3ad0adf8b00d42eb9a606170ce83058aa23e6bda88a5cd2cf7c73ce927033dd4beccea2c9b0393a6346b7f548d8b0b47e0d9fc54f6eb9241082230f05318cf57ae29f152e71139bdc4f7dde74407ca7980c33c5fdfd8bd3a7afcfb6b6a701773881a73828d93c80bc0ff99632f7e533efdaff26de34b5399412a2227f2d242b76fcb92fb29106cd2dcf5fb1981c14603e502226b09fdb9ef87db808c4e3f187a615315ff1b1801d74f4510fc41b7001f5111bce97d9552797892e7d882fafdcede8e086625d2304ad1a3c86a55030d0f0c54fccc6d2b02de1a9e20f0fe68d4bed1599f939026e126e193a96d7424bda1110e8ad10dd62f8e7a1b716d860d5b135c9c3c110f61131baf41dc9d97ab58a45cb8cd22ff87459a3482701ddb72fd8a8421de2cf1186324c452ee4c3627a0c86363974af59698f9644396d5574ec4f2cb18140011cd35775c054ad59e945601589ec02b8d6a9c3d02d259dc546bf5ba4a495d7572140d82c6259a3f2e0640a2dd6d54230980665c7ce83271140293bdf7191c7cb82b598d4253a22d6703d694d79e4f66be575e62c613ac838b5f1141af291b44b09d714d5e96a06bb46117f31c041d2af6ed3a3f22fe070ee843340bc950b807782b471d97e996da0102e62afacb821a409f33191d616568f90c900d1af5562ec938ea4de013a841e7a0080b26b9fb1f42b2e5d789db3b333713cdff882d02998766c514d9191b056b716f59a1b314b17ddcf6f5bf064bee70bc0224d51d19c7f553d100b3f6c165396e31de28ad691d402290f0b023457d3f8b9afa294ff291839dbf083086513d7e7cf9691857d4574462e0e290736151c4515c105c1ccbe928178366eddaa7d99ec0c290e6a87d41a8e8fdf8b4f64cb10c38fb6e06cc8683b657ed7270232920f44d5a83fc1ab95c27899717479b62440d136c015ef9f0644a8af2f75663040c56b2a3757c5783d612f02335ddd16e62ea40658971e538dc0019d3edc39dbc8fc045606ab63dbd2265340644471ee8b6befaa66015c1f1104d53026110ea85ca51eae11f717b2bb229301a362ebc2f92dc2ba0b38fcf07e86269e6bc5f45277b34f44f255cc954be8a8fad3ceb9dbbc8a106366d52fdeec43140b177c82106e1be52a886184a734baa3538dbd607bc73ad98c87bd1366839f3a6b10002278b0a7c772c17fee8a66d58281ffe03d660677ac0a720630a554bf9309540bfd6c6e8db7750b68a2d6dda5473c94f50d4d5105b51507166c03544ff92986f2b9c4eb3ad89dd4efd0034d6ef5bbe761f536097f7d6f6207a90c1b62efee155e30ec05ed17df60b7f874031e2b5d316058ff8bf464d731d3e6e6f72e8d147bebe5f1729f54a5c55968c85f7e65748162f634228e05bb4a178fc6d0e293bd1759e06e02b3dabdbb832f319e66b8db123efb7189198dc3ddaefd58002d54e29ae67638cc14953927a8026cb82823db32a2d08e2d7cb803561bb8f03e58eabcd68423f68be6d976b67cba79ef0897291e3ab693a82a5418d10a29b830186076ac2f9cd7610a8551fcb40ff315c19463cebffdcb0b03c10cf26881d9c1304873365d4922f2d4d4cd88c4c81be33831d7a553e258125d4669fec27c4863de0e1280246f405db8ccb56201ec3b6afcadc1470da7f0423c0ad747b9368688f921e543c8b06f75e36ba49e88165c28696f00fb6621fdbd51a168d36ee42d13b44840e8eb6805c7a6e7138cc317ddfd82184860be3d384a18f5d0b00abf339c00e5b1822c240410c6c7a6592e06f41d40472d09fa7f63f5294683697a50cb35d8466ce9c6ae556b2dcb2f931bb8593469c3f76bc62a56779073d23e516369e161de8827eb40c3a61cf442e85ee4a19ff145cd35f0734cb6d1d64554ec98863fddd456b11d8c20aba2ed5dad62c75ab1801882ecc80c289a3adeb920851168d944b92cda85a7633dd3b218aeede517fc25c94c2c5ebfe389d71b7895d17c10ac87d65746196dec8de8e739409321110e365a22795c367d891b68b2599c9622a05c53a4e537ba7967fcf3af2b488b74f0185e886015c4847f88a0c85e89b93bcb62092ff8e0203ab8b9c89e1b4ef11e045bbe00d175e8b18886ba03cddc0f75f57781483e42921275ed82c9914f9912d8d3bde6e857178caea2308b29dbf293928d893e9837516d1d83939ec9a8ddf243737a752a647fe43d2bbc61fb7ebbfc796a925f1e703515903c3c6e165d5b08ec78b111f2f458b8664026215d0e0ae47fc0cde95d5341d7ba8be1dc5d227d29e19b05bc9cd6a3a3aff8b72c8814cad2d01d3a18010eabb5fe7e9d5235663de1f04780e230c1a88fdd7ab554514314f0821758079c27fc10080e635dd498066c2a0a4507afebbfb4c1a5918c09aa5eaf31a8badaa813a79d2e6f63c553c99810d922ff4fe05278697266359cba14b787011625d4e3942854f728fa56e76625df64277dbfd641cad9884eecf8a28058d7b25a354eb64e7b6f2d365b85d2890610139d825e332a255584ab0ea80868dbdaef2f6a8bd2943299b2044a00667c5675001dc447f9db9474919564701a16302c64e15dec065919ac9d637831d401206fc5eb46254970e5f473f7400484c92f384d722316df9712f8b580467f150e1742d6eaceffb204f00631e917791b6257f21db6e23abe2f80b2e03d6f0ee34f87836f12a879f31749169a9d262fcaf5e15cc049ef48675526a2f236ec50350cdc416b5c73412c6f5b7207d425b019fc1304df8bc05757a0253793cc4e6eb2fe175824c92f1e30f2a24354761b8ea068dd848c2d17390f169fb75b4a5fb102b22043c251c98e8414aab7cbcfe5b087f47627d21c02d050ecfd5e53b3d679837ce5633c631001182a6f6f5ff911ee7932c68bb94a9ad92aa7ee275651aa0127154fb1d82f4263a32eac06e7ed5b0517f489e24cf31dd9def73dba1edacb01fe5c08de68854a32b66a00fa5210753fb9a68450a9202c2b84d427f76756bdf73e47d4a5b96a7e67d09988f0997c9a8ff834860b4f000f148346735b659c157fc99709d19a4a5f5e914b5b2b31f35ced5149fa94def53a1bf46bf4e5f58f04a7eea5f5442f039c9a6ea24aa6f5d236abe99d24c846cc8d1ca1309e924ba79e44897302dbab73d3562067fd7f8bef1a074e63fdb93a468882a2030f9c6405aa542ee3912960c92bcb28b8e6a4d10604e0b0f830150a49dfcbd968bcb689b33c8762f810ed1751e4b4cea353be9bac2ad81b29ecd47fe3837b6b755010aa525acd8c9a84f3eadfefe6d9cc609ca241cf718fd9353a66347811cdf7478616b5c10fd39d0696b11967ef9befd961f7fadde33ea1749599d4d558b65cd25411cac0e0109ace330afd31dad1d0a141ccfbc41fd28ef663158625c7f7933a2666b64104bbd8ec14c9ca06207d43b804591dd12dcde306a701fb3cfe1ef7a22a6f8fcd18076fa483250e40911a21d61e19bd86c5700082f6fd60991f5b3ea05d894385e7ccfa44155a3551346447d812c06d37be646475d5c012c0428931848dfaaf49840db943cd835fd9d831f44485acbc4d9de6dc1afa71b49d6767a5d411f16cd12452fc3037ef0031b76fb3dd52572991e3f3530a579f96252f6df173cbce7f3b4c135b99fc561b0d9db1fd082706746795b4d1424473699cd1b55570eec176300f456f2f837ddff9e2f8db2fd7c993ca08d77db3ce054c356260d68666e0ea7be21bd211f5318bf55477d4c2127b6d3b25c4d0fa4efc4410f5198b4daa9e4a0b723e0304703089af25186911d8e9399e5d65d27c1d310f485296bf2e743ec2332f3699dc277ebbaf54f88014a3cc883bc5cefeb7b0c01eecd723aafe8801f02770f26c74556ee6fc6ee923cd8f447e79e70abbac8e15531f109cb2fcb558280edae0f80b621b8540be43a6331523b9b47baaeaaf8d1648a69e74c2b90bf08ae583314d385bd6af51c97c339c6da8d01fdf6b24d2d7483581635f116b7b10228584273edc0aec027ac54f99adc39e7c2d2e348503aa7bf4927da1029fa229009dfab300df7c411010c49fcc959ae8c1f84aa81a889537717ea9ca7eeb337c95389a999bad10cfc79c4738a7057dbc088488b0c3b7b8b36661664a1cbb084fc28b05630b8e55f5da4734a5b84772a7654349adb34088711a92c59a32cc3a057ab56368ca96b230a1e431ddbfadf356f61a18f9147c00a84d64947a5d2494a79f4ab3aba07330031afce86559c26381063ac975aa030c4f0f4402c147a21204ea349f5c0f295782cd000466d3e010ac55771a46afe8d371d1cee482831b05b7a2f82df15e2a13c9bdcab68a25dc4ef91a219f86e29a7bfa36ca768fd1939fb549259c3732730684e8bf93c4bc3a7490c5446caddd91f8fed1fc655565a9513b4e2f066631c2720e003a5415005785805a9b1baf281dbe3e57786f3103327c0a97f10128eabd40b554efec3d91251258f4f19e0fdc6cc9962ad40717fe6d4a095728f81f88936fbc441706745eb52d31a93c9ccad0e227b7e7c3ba2e8fb6e75c309c24ec5554c3e79588dc211a98f9f7552367160d375534b3c0314911eb50bf1df368339b01777b7325a1d2d9530e4484dd06e3620c02cd970af8cf80b558a558ef1bee92c5d4261b61bb8f64cb90bbbb20047f720f8f80f841a590c36611228d7d5960b648e706db191c45db733e11b6861050d2549e596132d91850c793d444d816208c6cb2cdf6896ddcb1c1ecdc8816ae19366000df101067330969fe57a4a6f7a8cf94ecd3c4366cefbb6da30f62a32dde81c8e57dffebd1167d83065bccbfa8bb9b7b88b1820e78522af922c1f007b734990f696e5cfe059687bd10d31b64009497b01ebdd11e179c6091db71eee8e6123d1059e5c3c14f516d19d049eaf4ad4ec39c5db8757d250033df5591f84ac6759425b86c8cce666eb6c6fdf2f18773e843e97ca2852aa0d88a0721a52708bdf6432004052362ad147d49ef634ce9309b3669d05631967e5e4824c6f70b340e0d92f47e73ac6a002079775edb6099f84b36703c44828cb3508918f3b66c378e3d9720c92c2d3f2ec15d59aac2308aac49fd0a96e46613d244d6d40bafe0a7ca42c950024be3bb91a0fb2fe1a8213be765cab2fdb2ff993636826c116915ebc93ad753a1fe1229167275a65a0c090111ae41d0e9833b89295eb18674fb352155dc18d6345c21b68a04c1d3d5fce9e5c1eecde7dbad9ac6f27f70c1e520c9a34e7ce6f0b25573ceb5a6a2bb262bd3ded9a67c680127221b2ea39121792043b0c916b851f7000f00657753a6be9086e2778ba3b805e512e623d3b8d29915ceca90e0150cb858d243a7ca6c6999f8e7ba6ef8c6eba37bcc73fe41b2162fd97e59cead84f68e0b4bf09c511ba10332f26646226b6adfd68cb4da507cb2c3e86fda8cb44e910d5d2e72edcbc8e7fbf83ddaf408f4608191175c15e7507bffeb5be4ab02f629daf4ad2c1fb7cb26451a086074d769c4b9ba1cde8c5cf45117a4d92145fbb1e78b56fb46abf24e87cc79de7c22915c9123fb0e4fba3ffad788e598fb3b4e18c856be5c8e80541a72ad333360e8361481d295363b33c1f78e61ff9bd1b209ee3716b88dcc94da21c043d86aa446929453b2b3a9a4b1c286cb4d5bd49502380ae465f5f30c3eb36eba552e4b541f3e8898c9c178be5bf394aa6d345891822fb4294ebfa8c8e44249eec7106ba78796ae6381d44d82233a4fa880cc95a4ad84088f5717e7b261cf8341f2b1a98c58f33a2bc74b8f3b2e2620ed9957a5287ada7015ba8dd535797b62061b4c10d1112f40ae4bc0a22bb52b611a63d4be5080873a4637c4c52b4af699b7a9574b9c1d05113642bdf90c8a02712a851eb549d0e90749833e90cfc3b7df7f61991740e470949c993ed9834b6414eaa565c89406f1a787954f414f1e2134a95cd2e0bb0ea2a553ed0eb8731d63bd6c90b84daec37a79b3bbfb25d81cd63234efbd6761ef22ec8cd838dc775ed65c90e3d16214021de74172490a12b1eea9db4491c458bfe27e0a87bae67a09d38522d03c37411df2e515b9533f92fb6d84204c24a0f9b43c361b3dc44e3b2aaf4c336a3fab57ceba615a46d7e13e148c7ca4cb6fa6b7e095fecb894ee160fa1258b3c23d493e67f38850e4a96ddd5ff44344f27d3038355864581b9f07d9e475d0e9c4dc86211ac810a14f97f85a0a4c532cf10747355a3c5656e650781a0b77b3eee9b975bb1334c93b8b2fc0b06a051f6cc65616eef6128808164da3c09b490fb65bf1223940ae326e9472aebfb218e0e4ef2344bc270031e554f201fa348f0f907e12479ef477f89034e8bd1f8b4a8bd18ab9e8f0af2a5f831510726f4861a05b079db4ade20e02610820be0cf29905d92739f1dc9bdd6fd379c6d90deefd88b953df2acb4b7377da88568706c4ea4eb981e3ba43b33dcc49337982c57071f12e79accd9760745c9407d5fa05e4a2456608ab38d1cbb5381c127ca355491063b85a0285ab01730e1a02ac54680845b047e9810c944b3341835c850b59c643da9e9f00c32e5ac43f88c0b0640184f803ea2cf39f573060d1a803499cce46085d1c8f5465d0f19e584a4864390e07fe3c51c5c76369934d3983ecf78cc178fa5ede4fc7f7f29cd1f1e6f5f52286acfd9267f0d131de3a8d3fa4641a4f44cd08b791bdf7de7bef2da594324919ee09f009f309638e6ed7c71f7ae9566bb5c8084d816e57799dba00040abdf0006d66acb5345fcee79dd3353939f7a494977a2cf4b95a6b9522518b2ccbb20f9d739274d24d97e5a427585014d180bc22460803423fca2dec1617881419e4fb5ebebdb2c67c2576649b850591cc28e2e3f5c39bd8f244497e92b931a17b1a09c17df9833540bd4fd20e74992743dbb1d4bb51bfcc01c1b0f358288b7542186e76dd344534b19866b3f158ea07bb54d48d853661c8104ca89bfba2a62dd69a27feaffb6a1509adaecb3c49b5f8efb9cdc663117fb3e974bce76408fa91e728481412bd7fa805d2845a23213d6622ad3d31b7c54d892287c3f93a9d4ec76311bfd3d16c643c31f364e49eec572414e389de6f31cefb7b62c670448fded11e4ff7e3f311bb2f7320cec8170a819d48a4b1241ecb1248ae3784d5010b16f6b25ab40075df07fb86b8d4ed434240156c166cff310486dde2e2bae8d82243de7ef658e8672ed4dd13356d31a9f1bac5347d75b6f91b9269659197c8f63dfd3861fde27e65d1a29b299f2e2f3a206ddc20f3c43fff28ebb0a52c2261fb7f9431ef7764fbf3a38ce9bc403f4a2b4e94c4e247e9e2643f9ab6fc20a48d1b334f3c745d80d8de167240245f3d31d4844f41a68dfb426b9d7590edf674a2a69b8a99366e11176aba2b179a853e91e8989076f9f2c8de8836d7992a6305688b5e7dbd42cd731e8be639edb3bf4eabb22aabb23adcc711c2f16a8c87f43b1ecbfd8e677bdfdf554a2ca2495d3a6c7ff9554d678a8e5761bc3384dd52d495d3ff782cf73f1e11de555475a92ee307e3ec8f06c5c7ab2ad5767187fe7b7c12326d8484cc137f2142b6bf3d5d562826d4a2247f562866fb87c593cc508c85de0b8551d83744e41f12e2232464fb6b465890743c22d04666e35d5628e6b2c65017b6bf18fa42ad506bfb83b8fa03e4d596da8267367bc4a332329eeecb9a3d3d212b421e7dbd3421e116793426a61bf136706b3d444dcb6fc807d33489c7c20521f1a8cb25128944df1ef9ef3f79896c7b1d0fc80bc116ab034f34f2b100c2c2a3add697bd1654f8c8bf8547592c6f8a6ebbf0284ca652646ebf4757abb0fbf23684dd505055d636b79deeea09edd154aa93a1e6b5c7c2792d769efc12be975fba07e54f7ee9709df7fea66e9169e3b2e6c98a9a3632b1d4f6223bdb5da621a524f139bfc5341f1bc01fdb3dbae371b4466f645e70d489171e459594949470ba2f6399d7eb5552a4c4f3580c060c18303add976f8bc562c11002c3f39898183162c4f0745fb6aa542a15c3a788e1398cc3c890214346d578e67e92e14ef8c85f86e71f8e7e45945064e4cd584c935fbae764cd7c65312f336607a18b1a8e3484e44d184c865c4893a51c699e93ab1c69489ae7b2129af89cbfab9546f3d3dfc7fed8f0b9419ab8e61bb2c51c74d9fedc0e9afe6033c80ede74f100baefa18bb70288b7fdd560c81a9ae7fc18432c7d2cb246e74b9ecd1b0290c271ec425262c2279ab7bd91f1cc8e27c65306ac6da7d97e4dd6d2c43e27bf9027f6c50c438eec7f992447d6449e6a6cfbe3e60d416cfb1a9b844dff002ef6c5bade49054bcc13c86cb59cc789c576535be509fdebddf07da976efe6658a31c69d971d246643e02470a7ccbbf15e9e1b9fb28c82348f45d4bc21b2ad4142387fe3329527f6b56ce5c86a9264dfbad5bc1b9bf65dc6fdb881c41f4ba60d6f8719289a1f538460b5ece5382f9fe370381c0e87c3e17092d054eed38d1cf1db7eb0294020babf0680f925e97b0e97a73cf9de662a47dfdf8ce5e8fb2d7372f4bd964139fabecba2247d2f66911c7def6517d2e47b8f77e34b62777e7ef578377e773c1a8a473455a365f8940b792c2f3e42cf08ccb9470867985bc2954cb388fa837523d708212ee4dd107532b42f62d1f485093791c76249a627d71384d3c6fdf1da49a70dfcf58379a908e1fc6a3d16ab2f4c382b1327f6ed37c4475f6c3b11f0d55ed2b6ec2426e96a8b3d6917675d29db1b8c8b5fad38ad85b6bbccbd0da9a780991a42385fd330fece63c1f2fee6a2e3b2fd19dea12e57ab814da91cd9d7de8dba35cfbd90d6efdd1acd6919dee76e656254694bd6c07f599fc7725d2c4d08fea29a201cef0be797cc3ebd916dab5ff7418fe55a1852d81841b032803072da012f7941c317210c185d6d09477c2241387e302dfbb6d46ae9f483e9fb83707a09638c61749a185ac5bfa131df1ecb075b0d81c186f0e8cc1019cf1b82db9e981e7c98bebc745df73731990cfdc1a218dd5771921218b772dccddace7696e1bd59ef46b6efddd7568c3b9737eaa69bcbbabcddcdbbc149edc318468c9b65a0f037ecc34994e4ff3f3fd807a37a0c3fd8f6dd8f21c3e26c37ddddb6ed86029bfee6bbae64f91be2247febb15cfdc154e1fcf18351eb534a2f6d55462acb1e214ef2cf9ed7884f58c2b6cd9e9727060a4f8c4788162b29f1585e7848d84a14f34b3c96a93d424610daa77a2be2231e78697b7f8f10cf6bf3246cbb12b6f574227b1395bdfb79d449999166234349aec48e6c6f1af7a310a650be420e6883f352da8d0c35796258d30647dfd73cf10f453d863426636d7f0141df5d56c9323cfa238fe5fec823c2bf7cf796abcc642747f53d2ca7b68d461e7d12c9d657f16d7ec5a41d3a92477f078fe5fe0e1e11fee53a5b4ef3344f3b903a196e4ff258b4277944f897e9d6913dcd5709c86c576c7290275b112e73a8eddfc55cb63f096fba6afb81edcf030f1efd19335e5228c93fa50194e40f662466cce84c3c16fa261ecb7d138f08dff639dc7d2fdde3fc923d975fbcec374fcc7d4d1bf6344ffc378f2766bcdd53d20ec2f9346f45381ff6346d6c729027fe4d6cff4d8f21f763fb15d2c41febd3f637f186b0dbea2d264dfcaf0e7ab80f83b44307f25e424af2bfaa70eec043874fbb4ebab718081486fa01de8df7bdd541c6613b357d30f9b9419a3c319ed777c5f6a7d20b9bcf0ddbdf13f312cebf5f79e85cdc8425cdda0c13138fa58e342df556c447fe26b8879b039aef66c649fe27376f6436b0d2c8d99e184ada9ed20d6c238383d0feb891d93ee389a1a62de6cff9e083c7b2bdf4b618f681513c96aaf109d38dcc666603eb782cd79303544546e0b76f3505405beaeec4b328d507ba2db1a94b927d1ade8d6ce3ecdbe697ec71d65b1127f9ffe0b15cbdc57c10ce1fb7d8f63c3710de1154881a9af0c0bee306367d79a36efc5c10f79dc79426f67798d181e1077a1d076ea09681f85ab08214f409c4777bdc1cd2f0983de6d566154ae0a400422aa5947adc61f7448573cfe904478f10ca39fddd7dfe981e6e0f3d44992d74b5e9b4df6533f3fb639d5689baa56b08705bed27d92ac2005eaa7a82ae33ea2df46f0cc2f974f5c2c912edd2c7cffd96c448adb52a73be103ea2dacf1d76db14cf3a606699cc293ea233934284fe53d39c92b2a91025d752aba4ec1494149a12fa08e42349bdc449406ca7f63aa1d6ccdf9d0917df90a4fbf267e86d212831c804f25c04121912d9001a0903f8e8ca997d3f8797b2bf5f84019098019a35669f95a82e589cd8f667c1fab4c29028b23e2aa055703eadd66cedf1d302b9b67fc86a81b0cf0b14137960fb6f9fd676d61e3f2d91e5a23c680f945b230c61103dce3c3914ee5280010c60d8b40108307bcc60342bdcb5992f7ce10b5470f25f4a6aa23388ff572194ffd59772a2442be963ce56585f85d67cbdc54f5eb2eea3c54bce023cc5ae8f8b204bee8259d4e4c3d71fbe3e8691354c1c95aa2dbb7e3d49935d35810ad9f5291764c9b24ebea27cdde12b0f5f7bf85af295f475f4d5b6f28f23185fffa5297b5192ebaf3f658d192f9ec6cbf8185fb5b70809af0f6fa1916f067316c852e60639f2ef5c28c94b5dca474d90a5ee0672f476b5c74ed5dafed98b9a40162579f6e2389d4332f27cc5c44cd8e6bd4c19ff91e9e2bc97d96a8929d047d3648c3c968f4a67cf0bbdd2b9f37d7cb07c5a3e27243c314a722d3ee12317553e729dc592fc7169a1247711862e369b15943c59decb84d159ae6879f2020882a126cc3a9d379f9327160a89c418d125c2882b5125a644174aeab468d1210161600c0b1633454928107489a8ee3d1f8e68e4b90abd97a99a1a8d66236e74d668369b8dc8114398ccc848d6625192c7602f9920356f4451e474385da733d843fe9c621e98e7e591f97c1ec4922287c3b2ea882b4fe7db35bfd0f81f7208e6430ec998d0f8cc0d194c64c19c28c9bf87ece1217b6032312f170ea70393f23cd005c67810a0cb03ba40976ec285a3b3e7c3f3903f274fcc23e381f910861a1f6064b1b512559b4d16dbfe2827259d4be7e2f18850b0882b1f39144053d24f54711fae07931779fea8f3a3ea82e7a3ea48e00e2a19234f49f678bc970cc474e63e17fdac6038ee53a2b3b62fa8822290c44be76cbf1869e98cf70d855e843c9daf0c192ff2585ee8ea831822efe5df08ba67e419794a93fc2212d06579c8a11d624639f49226dd0dba9497b81f3b3088936028c9ff45065d3e720fc21f64b1c4948f56e17c153595bc7f08266b68efbb97255a4c89297d2be8faa85c3ad7179994433294e4e2134ef2ef549fd6674549ae692332f447754777c463a92c2d3a5a45a84425626e31e5239da98c2cc6c8a28a92fc4116c8ca2425a9c414357db24c4cd5cd85920c6ae1bd84a1ceee42e7f9faa5e46f89fe40f1427f541f95e8e3e98838a2487feeb1ffa74966791779fca0465ac5189280ae517c8d1e398c7409203125a6409798a24bd8a3981a7f8f1f154823a6460f1b465ac5f71153d9f8518d21316c7feda31aedf1a3dafea398dafe272ff9f0163bbd222476ed5a648a56ce83ea0b8413eeb4da8b336df3b8aefb3a0950521219a0241d2a9817ca1b134e2f01da8a01aae78006c468bc0d0154589b19a31110282842845e4a8ae871e6699ee607a6a9c662f3148b7d9e27d6d83cbdb8e05f85485395a1592b6b6da1c6284bd6b04f75d6ca5a55a663eb10bbc282603b689ee63ccd93879a700a428dd6582ce6232d84ef792f20d007e49c30048dccaee585e608e60904d294b55a26d835968550b6a8a9c628c93fd6620912f2be8ef35cc410a4b63f77ad108e32e6b4da8b336d9335b69a2f16c2b1ba94985b89b9a7ce60a4490f3015c2ceebb40520e17240036222b07949bc3eb09345d48a8140411122857a9ecabca60c6692a4fc991961ced2e6aa4b90ea739b6704dd76f358ae1442099b809c2d536cff1cd29401afaeea9a576855171532404dd52563d55505d7762b8462b785eac28234cd96b17a613b4c08335ba82983d93c1691ce6c0a274d6f8e28c99fc3e1749c0404ea743a9ec909438fc7bec763b1f2d359184a7285dd143e7216d519ccad420623b92eb5e50bcd16385932d2151b865867754a932a2f15c2f94ea77ff65616eaf215c060d3ab972448267cbd5ca09649e5c3a94f3e9a421258be547665b1681276524a29a5d3a50b9c2c89027fd745217d765ad354c06ad6d29f5d962b58b396feaca20478df7d033cdd00d9c5420bc858f65266f758e9b1e2db5b60563d4e1fda873ebab739b6e58a943e8c3db61da2c7a672258fa0b9af8f3cae67c40f9b9e58ba6f67bdfa58cb512ce197524b29adde975d2c6da514575b450747e5ec6a9dd2da4d497269af26d3648680acafe2f656ead37e529ad85a43c0496a8ae2fe026a10b52e20d35392340c502ecb51545bebb4d57f36a0250a0ba46c1c3be8c63fda3d56b2e72c30eb40f5e8237b1144618194bd83fa50bd7a44f4d89e65b962471f795423c46d8fa09b46b184634a69663fac97f06de9b697d694d4ae766990d003fe9842f2a364c9d6689cb175e8ae450b1d1b5f49f238efa89bc50ac251c22a204dfcb92b8570879be48a3f27bba9daf06b40c222a8699ef07779248f3af6c8c77bee661cdafbe6383984a6b7ef383d2631f23ef21ebf8b57f1eb79dec7fb2ecf3d927f47dd2e5cb890c20eba6d1f7e3ef4f92bfe27cf1dfacfeb51c697743ec65f3dc2f8121cda6faf3dbe3152a777c4f6da11dd73af89a6bed1694e4b15aa8dddff17a0f3deab3802b4e7740787507bfc59cb2323bfbd96471d475c2df2fe6e59e47da7893c7d43878e7d5feb5e739ddf7e4477700837bda3e6e7348ece7b1a47f8db8eaae91d7577741dffab67848bdfb40cbd83eefba2dff41843571f613dc2d03be80ebde8dd3b40e83f2fbd0384b810be9fedaff609e9b1035af7c9be3f07c0ba6a7a14fd0eba3fa21e7bec8f165ff42a5ec2f94f16bf248b5e84f192a8c729bf7e5ef4dc274f98b9fafc3857a25c22c5ab38c705e76a7f3367ebd8dd57d18f5d1137f423cf8532eecc8d4319dfdc3deefcfb682494e72e829a363e3232f2223d66de11239c7fad691c1cce9671dce79ed338f76e19e75107e8a7f61ea4e5264b276d388ff3f5779aa6715c17f75eae765ae67ee4fe023d70d67ecb5dbea17943dc2d8ff35fbc97471e1bebf17ffa68fc9f9bf32a94935d7c49aefb451e91d8ff3a8f3af6ffccffc119ebea1171df02b20e7a8979a3b35d7c9e271fb948a54e331585f03e71c33d57d4345db427b4d962802ac271baece9849746b986ed2eb3092fa12a206bc85d3dc9420a27f9638f85e43912fc5893c0e4b9ba37f358348dd33025296127d951371619b1fdfdab97a8bbea8e24d77dbd2cab2af0fcbcad107ccf7332145f72b01ebb8defddb6c7ddbe1a07fece8f736b824c26ee5fad42b7e8559cdb2c4037d78139f417fcabbda669bf817a7ba9e5ab69990ad5f27d306f39f45cf6e8716ecf833f5b42a19f3fbc047ee8f19c029cde0d6e6fdba66709e6c9f6386bcf7df2c579ec76f79788ee37d646f2cbe6bbcdabd0cf739b0cfa4bfa741b13d1011f67d12337f8b304d386dce07730a867387fec0b85104f297cc47dc83dce776f3f6198d818eb717bf13931cfd51342fc52dc22543cdcdceceae67eeeb9f292f8fe530a37852e7e75d3e6c5a71e8ba86788b237d9004ee2c2ab8be080a18ffc57236a028db6e32f9748e99e11746b5f04f5add363a84b1cb0ef4f5999c8f0d52f551bc0495e04c863f6b03c660f8fc7ece158c60cc8bfba297bacc71c1d576ffd4158bfd66e575a031d0f2ab312c50c7ff888d64e266cf1d1ee74e7224d7a70b3dc2d5e024317ce6301372a93898ca85466d74ea79343691266de01f0eeb24e8f1910eb8d6d6f886ecb74196a5f2af696a17c04eace25eb3a170dfd8e52caa1debd1dbd1f08829b266f728772f1511540b0a35208c770f332942bac282f498a426dfaa097006d25cb509913592acc509c4613bec663096b05bf7e53ececc70ac5a6bfd1e8ce859268d7848f501e0b48bb4df67dffd96eec36dae1acc4a42a8e02440aad28afa85d39a7cf8a2fa0313430d1426351a031abab4c6da1311a23428408112244881021428408112244881021428408112244886c33dbcc36b3cd6c33dbcc36b3cd10d966b6996d669bd966b6996d86c836b3cd6c33dbcc36b3cd10d966b6996d669bd966886c33dbcc36b3cd10d966b6996d86c836b3cd6c332892726aad3907675beadcecb13310dd9b8dfb1d67f2beea3107675bec6208ad2dc93e461e847b6f3d96ee5ec798765b892bb10468dfcf3c168ed2fada735ad57c4a4dd3a856770f9ae14a01ceae9a733b072e4f0ba4b62815beb9b939ad3feec7ef396d3bbba347cefc90d31dcef598b239518f99e8f950d4638eae633b0fe60e0e21e7c71c1dcad6de8e9f8ef67e7a44e0e87cdda0c6c1111fecbc7dab47943d417a87ef8edee19bf39e1eabdd53d438380f1a016a1ecdd1383a1d2e7b2ed3b71daec36ddc732adec9d5479b9e8f637212634e7a1d3d32b13bbfe5f91366089f396186d0e9cc0eedcc9f524c1bf4c70df41c08a437ca715c9e2fb939b99f4f593e7aecb13bafe273725bf67c2767f4a7141e0f7dcf538fc523e3c9b4d31942b7a16c6e046273299b9b43989da9e710e6c9f696935fc20fa969f31ebe779cf69accc9f0e3b84e87cb3baaf71d27bf6c5ecc2f9af7b2cc9ad6fecbe06f7208e6efb53c5b7e25d4eeb17ccf7ddd98d92f83df65ef67f6c7e38ebae710a60db9270c0fdae3a36015957b6b7dce5a6966e7e4822721d3b14326e8c5260e7e0ef7d8d98336ad6e4a29f73e784db336c374ea1dd9d5b93b42f3fae29d4d552728ca9bd8f567cbb431f7387fd09ff7a7ceb697ee5addb87be925ed99ced1ed8cfb4e6f4febce340e2edbaadd35fb8c6abb8fb0dbeaca05ce7379dcb1b90ef8fde6394e7aa11ebb1d7a449de73bcf7fef095fe48499f380b9fa68945df89d478f3bf6e67bf9e51cdde6bc0a1d73749c597b08c3f045da7fb4ff2ee779c9fbbc1602813ff2249e0f7fd3f9af3bc2f3e1122ef6057aeceedf4545c8dd6911e77168be7b8ee6bbd774dfe6556898c3efe4b17bf905005f136604847af37693bf0f33c7bd67c7119f1671fef36411e7bbf77ca7a3451c2d3e8ece735eec3ce73b1c2d7d247d147ef83bb6e7c33ceed0e4b1fb1b821e8f7e0b7ea87180afd138441fe6e8468fced16d50571f857e237af92479ac1bf4d733627ef8d6bb21d23b6808fa115d7d04d263f6d53bc0e735edb98fb6c9d3bb413f8ff67df4d881ad7de6b16caf699bef438f1e33edf334ed7d26bdcfbce4e9717e5fbdd4fda7c71d94d372a669bfcdcdd3bd276fffc9e38efdf9baf9ea25d06f36cf6df2c7d19efff246fc8ee63b9a0f5fc3d9df83ddfebacf73b2f7d24d9a171f94ab8f34cf798ed674347aa33b8d63db34f72af4f3dc01b4dd6dd9f3d2f3783679ecf6e6bf3ceed85fe7ebe8cd86b4e9b6e7e57f79ec3a8dc3333ddd73bef3e4b1c7f6741ecfabb8277b9fb9df3c597a05e8b1459ee7bce735b9f35f0ebfdbbc277f1ffef71dcd73328e504b1f7d7bec5e7c15bac923f8dcfb96e1e3f87ef3a1eeae084537bedffca7a58f365afa4823813dca07758eee93dedcdb363a60c7962f335bb7acb25b896289d919e99a304f92d501f9dbbe505d9de494094e7ac97676cad1b49347284d3e341d05fd6c1e1187b0beb43fbfee7bc3ca2d5142f7ae9e61cd8cb0ba524a1d0a4e968c2853d33423bfc7ecb5a9b3c9f99477a3482124f111cd73d75548020e631bdcccb6d4757360b63939dd3f3933de3367bb479d18e0a494236b2b139bf6a8b3029c6888b9a5ef39e75715ceca5195d461e6733206c4fd566d50faa2dcddc0ce2e4755ba7fdeabf8b6bbecbb7ae9f3266ed979da0db7ecf9776b0921943f6e2dda819bfde229ddd6fc92fd966d2d4a9aadedf2a48692447f6b5113c8b5277d89bd1b3fa5d3af3e7d7b7d5e7bafcc5ffdcfa55e7b77c0c99725a3bfea5cedd09cf2c7b97a71c06159168e9c1c731566570c59877fe4d4ce47ce630bf6a9675d3857db5e3b57bb3a0e3859527f859b9dcd9948aef8ca5549f715771e5774608a84a93854e71312651ae7cd2b42ff1799c7f8cb6560317aa2289aa22ababa56a552a9542a554a4a4a4a4a4a8ac42cc090e301c9c062a7165be94c494949494949e984482e2c8642a15028144aa552a9542a950e57f9ca619ce52d7755140a8542a1502a954aa552e99030988449988485441d0b17a8974aa552a9542aea288a52a9542a954ad522cf130a8542a150a899852108f43f9a3093355bd33563e6cb5128140a8542cdd77ccdd77ccdd77ccd57d61d0a6c24f32f508cbb1c95726a7141a554b465ba5c2ed7a3680b0a65511545512fba794558d2b94b4a097397eb3103fd5bad47943dd296ecd5424d1a0c97300481fe4723149414da224d3c849169f6590968824b0b3096ca8a102850a042000300408d00fc9052fa6a8100f192e92b06d2c38f334a80f8fa2427367cd834bc14c48e5da19d505478a9534141963a1ea08cdd0ac8f66f8581b44c7ad063789243347e38a1418305fa6c9b6fad56a9c50a72923d52b44e72478ad613aad40745452b649d64f187fc59cdf078668c8cf8484b0079ae0ce04400272d56aa05c4156ab1582779b33fa90f2a460c19624c848931a24b6c892c7145492e78e0c1c5480305297401633eda61871d56401026c2c81a25f0f387add25669349a4d8bc56a9d64cdd66c361b97e8e2b44416abe697edd20203c66b322f4a72140fb44a877bc80f3f6c44209c168b7592c100a05c4e2d3f68fd8253a4e4d562618c81b45aac560b88cbd5dacf6a9dec5fc92217952c6a11627f7645162379c504207f5094e42e2d9ed8499af080858a450bce1017628cc8fa7f10464931182c8330d8890f2d56ab75923d95af913fa90fead3f27191262a1ecf7f3a3e402aa248238b2d4a1a1919d14edb7f00f9031340fec8fc903f2e94488402e20ab558ac00e84fab25840f2d56abd5ea3a9d0740c9c32afd7092b9cd0f9146feb8625a1ce7b47ed09f56ebc487939c6d1f4e7ca091c195937cdda47991c722b268d8e8c1460f28b6461601208b52722856caa2933401614ee201a7e23ad010efc76f055ae1a418f0e5a38fc56a51138df717b9c81a27e1832f4516ebe405beb63fc949ae3e64919592452d3f68910a3fadb6bf298ff8984d6cedc76ff591f9b87ce4dbe65b8b86feb45aa516abd562b14e7e781a590c228bad17b0153a102c6afab45aac16abc56afd7092fd24cfd6090d1afa03c407fd69b54e7a4031f9f9273d98ccc8e30766a4558c1d298fa311081b39a7f10383ed0fe3d31a47acdbbe8aabf8f6def776fb4f8f3bb4cd71334808656890ee4b504a22b7e3efdcf9686ed505c7201cb1cc0e42eebbe74018c8ca2d4e06cb8c9c4c8cccb620cc4bf6c393975cdb0f5dbc247230b6ad0d5be67bee0e507fa4da7375935cb1224cc3c37bdcaaab80c21328cd531c47ab70f758f511e842b3396d643ffa26dab6b92513e80043456dc27dcb7038c3bde7687763e1585b7cd7d33bfedf6a4bfde125fcf5899daa4e6c87a1a46ca7a809cf3809c67191ed9fc243b67f4a009ac32f0ebfb8cac178690a37cdaf27fc725437e68064416807dc39186ae28038c91f6bae95f9c51577d54796597bb11442ece2194177f71c5622fb1dd9c64f3bb0ad4b13eeed3bf75ea79d731f31fbd5b2cd2b045a5738177e4dcdb5fccbde79d4933d551f5ec2fad20df291ebcc5201621a0e4193286e4bd1c06e64b0991bd8ddbc36323f5e4d803f9ce45f57767555f46b716922f5c4bd38c3d4b31a6cc9b22cc4d242ac6d4afae1cdcbdb5b118ee3384e4a39b9bcfd4b9d7893eb7bdb4c2a954a8580d44a27c6f8822e608bc7b209430ac2914badbc346ec2b0fdfd091740ca4baa4d183caa2bba6cffcd6b13134f62cbe6f5f2f08f3815a6b8948f5a77f332f0e9639ccd6ce2d77c769f5e0fdf3521f834839f6150bfd4dfb8a8c97bff4d0b5cb5b4a4542da93b3fc3d6faedc47855509a802e172ebbfe5f8f853ed54268ab9526fe3483406c00b6dc10da1fc11611201017a00b978d5d1b66b7bc34670663b68a833508c198ed0fb2bc04ae36b863bc68103859327a52dbc72cc32368725e5b405dd973128551de8771965a966573bbaf792c57ca1c15b57d13e241bc3c887103b309c9b20a83fad9cb47ee9226592ac64b5946f506a6e557f06f60bc34859bf0944298eb17b3fd5d1e7529405bc134c806c65aed71c65bcc660a0f2208982d6603738210c8e7fa8278698ba126fad9d77265264d6f42b6181f512174d70e39a0d646a1107676db37bf682fc3bada38b3645bccd7dac050176a0383dab84813dfc07cbe81d1f4d7a22457e85f35af9b39dbd9975dcb851dcee0ca7ca16ff38a6e21fc5a316a024f1fdd2af5e9495dcf1bf4899a4229256acb9a2af26283c3813c99d3e9b7c3bc89a124ffba52a59a708253414169b538dcf3ad14db3998ed1c0ce656db35d3fbb1b68030195c5150f5c34d206afb832927b67fe8fb11ab38958fb6cc3da7f1381f6ea2324ef24709d15a34a1b5406d7fad850b122d5a282924858fa44784fca95d20f398e37679aecc2cee3134c50ead4230db5bacb687565ea2afc9db879b6d889b688c93fc83041122c40a2b6666ba215b03c2594aab577fd2ec5a7b31f6eae35b29d56a765fcb6ead3fe6b829160c54ad6068cc85fecce00673b542c5a93895ad9552ced39e4e8dc33ea6946a1c7366d987a7debce0108656d8fef75262ee31b4c2d9be967959fb1184d9fea00b35d118e7e0aa9e64640d920fff96554576a6bb6c69d627e7417b6415e482d7763a29865113d6190cc7613a1d3261300f0e349332188661d204bf015669a5d7d2d70bc09124db93ab36948ebf9b3b38585b27074e59a3d6984f351a10c997e0ac840404a2a4cd62359ab9959a911928af39ca9e738f74dd38c3bb479d58079cd7e0fc89a0bbce93f9446c7baa60db366d9330bcddcd6e5bddb68d6e9b6fdbec325963e3b4ec9b33a8a88a929189c5b8aea39573c5c4bc64b60bb7a81442bc8d40a08a7136a2a0a048133300413ba95150b40d6f5c771a51eaa945498e5b5c677d80928282e27d5d176a3a8fdbb4eeb33fb714501885e512695251994e4dd9c8be59ced884a98681ccded294235b31c65996499c5d8b5dd6eb0ca62dda9aeeb4250422bc9410cee7ec1461374548b3a7cf4dee71e8ee8a50d34d6cfaf8c7a63fc4acc3f65301beb2b92b80ae504a155057b65a6b55805dc1d95a6bad02eeca76efbdf7669e02f0ca86531425f3baab188c05635b5c2ddd19211cab02b297ad6ad10dedf113a1e918e9e123b42132fa588ff7ebd33b7220b673d496b959e82ba3db0b6a4b6db1d65620505252aabdb4e47fc66874319d242050f5d2a45698abb9923534fa4eb38c4a930e4ad231067b3737bbaca39cc57607d5f0570d6b320e3a24c9ff02d294c4eb8a245e1777d9defcb517140e7759a66d1444f2d9d4344e0e0e07b4d7669da64ddf1ced34faf236563ffb9405cfd245d1362e535d77f8886e4e53bdab75f840d6fa5dbf5ad6695be6a12008307041105ed0022068121fb9d398f977ea18dc9a2b3853186db9842dbc29cc0c197d9153fa37278551988fca10cec7afeaf4072ef31524087dbda80c95a12f6a2b862943c51ac360180cc3b95038545aab89934736687f3cbbb3410b6049aa7fbd1bd9ce385bdc1cee6ede6c2eeb6ed66c4eeb6e0e37b77537839bebbecd75ddcddee6bceee66e735f7733b739b0bb79db9ca6c3dae6349dc889ddcd77731caed3793e1da81385429f7d893570a549ad1bd8d4651035fbd0ce68ad53564b7dd64a6dbd33c093c236854d6fbba63069e2030ac359a88e5fead08384b30e9c2c195bac36b542f888d618582be5f49992129a9ba464841cd1227c4461c860f155ba54bb8ed585445f9444bffed7af296aca2d5c7ca545b62886d52f483e8523c92a4242921f5384d02a3ea28f638c9025bcc132921eb391a61ffac189b2cbc81e184a5aa940bfb9fc86d5fa6474f6c45ee4cf09e34ccb44b96a9ab6719b28db0d237b605621ca65d3aab586a87092c752f50608cbc6b56921b1615112fd667c443f51c6aecfe7e329e22491fe9c68885583e459e8310785edcf3d43582f85514f111f51265c6a1314b63d311f799b446f60d2c4072aee89798a7c4e5e921e8bdd284c04136920505062c48811eac8a24ca4bf26c0573c2d2f74325b94ef7e915f4a5eba29c4a224fa1f8cec7151127d16d9d3f282f8f4718cf89c954a6c6991c513fd108b9a3a1d4d173e196a2a79fa9b95ac217a5aa2f3a8a394928040d48a2cf5ac0eb138215688158622cd777f432c5b3f30d47cb04d3f51a6bb45deb42889fe27b319e224ba810501619e58163cb10d8c9a5cc81a242eb427e689918060c8719d48c8c6ff227f3a7f237e6dfa398ba9cf22ca45de6c30fa0df111fd629b7eb04fc647b485dec0845045559a5412d1cfb755a4ebe693d943f8dec0bab08189acc88646ba417af4e86053d81e3f1919d14584f1543152207be47eb04631e5f9c1a6ff6525eaf6c436e542ac518489aaf11bb2e9df0d2c4508156b5bac6c0f11762184d1a62c9915e1082271d30c941ae36ad51dec4506f7144db7142d73a93015663403a57a2cb6da5a5bb29a04ae83433865360bce69535b5140f8887240a6a2a4f4f73ec54b9da65f5ba849e47c7dc9fa3a5fbfce12f8f5b3590abf7e374b57f3b5a276f756a3705d4e5143d8fd880244f72aee3df765c718574dd3c018900a859651328d42989231f76385224351522acca1cb18d6c8013e7773e892c3963484f7c7b08588f007fea4d1a8444c1776592c15cd8800004010002315000018100c8805c3e1609666aa2a7b14800e7da84a74609a49932087410831838c21860000000019009091d10800883550d3cb0af54ad4c84c3f1e411bb68f625a62e43c9f4c932edadc20b65a4034281db47360d66fee60373f63e1f881488388d276ae6330b1c4051e6c03859031215aa461740f9ba2f5e4716169798db218a18f7fda6f4f3f2424188b30ed59649ed026d0b4d66ede1f925ae7790c5e50e29d717760a7dc3b6aadd027384fec2dc315789d4ba5bdb290fc5a4c633cfd041ce64f05c1405a91863560f765b8ec3cfa5ad0769bd444913c31418dfdc2320cd89878955004e972702d9915282b0edebdd5dd733ba319a123ab65fdc0d1a73703b639465aca880e7c1e4977aa55a08d4cf695231fd7fe51946088fb2029c474d6ca23ddb08704592acfa052cfbe9257c67f783bd3a17ab8b65586294064ec3f3ba851372f59e6044552572c551a8d1251f64e0bd2d020912e9672ff53aa972f5351e19e7e05e7b3062b57b077d5b0ef0a037a19ad6e0660f8e6821ede3efe6fee7f96f274324175429e17337cebca47566c96e44ad855bdb18c9506e6c86a65aadb2fb341797953959e7b6090fa8948fb4f4a63d7e34abd244d9475af2274c93d2a63888948110023865ead8e103d9743994a1a69869154c21df21e2caa1dc5d11e37cbe8ec8303b11d0d6747ce4eef1aac260f2a957f6b69593600962ba2ae4658d4f6833b410c38d3d089ee1212afa4318d1820fc87104c4113d934c55083bd2a47d6e0be27fed4f6a7c21327ccc53734276929360ec0ecf662ea74517d3458fd5e0c3d9692645e4fce4482c3097d35bdffdc212cbf5832596482477e3dce53ff06c3e08aec0bdcf4e47f13c583dabefea668b9e8d4e2945fc47b310b87e6f6c9af71c7d2d8e829874223fc918c2be894b6125abaec8850ccde261232c6aba3596cb9f5a5d76cdd07a1d6121aae0bb9e90f915ffd6f6bbe406e9705b4879f3b6d93b38b960fce4a22431bbd225b9504631692eb72e3df9a5c2ec9c7ddcdea0fb857a64540e100bbff4396cf50024b1d4e9bed014b21cc70e1e828ca231cf39c382a1f2e5f8fed4e2614e8a9b3f1734e189d3ef8d6a44c28d45e835f9ef6b173a3e00a82aecc8693ab4493ebbb59de6682fc5512b618ca01e4241b84ad56217c665cd1f27547e8e3a0a1a8176ad587c70df656cb9073bfac98904d4fe79f01b8d56bb73c85ecf711997e8df9199f8ddbbcf016df2d578c2e1a82dab0d2c9daff0f22429cb2f87b237c100712f26f39889819e121a6ad5ccc16a5cc64e19c48b64bc1dae8b8c1412bd420b7744be397142b6c8802eb25973d59c097017bcf4b1789eb16f8aa7195df8c52617b3cd3abb9a692987422f113b543d64918d3a2cb6ede3b285a4d2253a29423f490403d58449ad10d2fa30b8d66ffb68f1db9c2b90f75b506c36af0092ef1f264100f56d307ad2af20f9990537ca34b60849fbe5af1e443f52d983e8b50147fa0c2e889f3b3101bf73982275662c0788153a16aee592be71313b51afe0422d01a98149d041e50d0468ef3d9a8259a4c4427267adbdd603d4f876abf91d53e741613a9998eb6e121748937f00d922c381c6859441777d8c0125171bb86ffa99215ec16583b8971dc9d856765f78616c53858cb121df7a3b821970fe8bc249d66a3fc694346bb8dcf207f72abe6a28da2bfe680908a2216363131ca0129f2a58fa1eb9e314997687014ef01439f40eaa07b88a842cdb0675c8b8e8ee5be8ec67bc24f3d0473e50b508daca3a8737bc25632699c5e42e868e745191fef3b753455e23d8f6dedf8a1c9a3e525b43084a77f1d8edabca41feac262bc7088c19aa6086ba6222acdc790ee38f29c48885cce85669b87d221131a97be332b118aa022857b90930abdf0ad00f37449a88d97058fc103b510aa49b9618fa47f7719f81d1ac6216f4180af6934131d2dab0f196cc0eed354cd871bade5e7a28cce96ab05690a77857bd7de212456ae65fe7afed05b8968ee26022c61ab8e0e343c7f2652d9ade16e326f03d557d7b9584c6d210b5b5a2db9f370d6f1662b4640a5d639ec143bc66e6769bb78324fbc44fe7cb7b705aa070c0bffb273bca14862bda466abe248b7c2c67bc7a161b8fd232c0954d269ed0f8272631d8abd0f0e92bca16607def1bc471b3ba4506957d31c16f1b829f45265c42e6893c5e24ece6d9f2ee685cb4957dd8b97dc3b9c08c17052b795a0ed34b31d5b5de4f62fe49f21b24227f71583fc05bbe30238b18739715d611522b79672aa85b951f64ee6dabe8a4e25613e86306bd48923ec6303b004b04b1698ad64e4a295cff3a5a3bae478f823ae6da3415e3dd944b8b272357a2b5541f8515c49128f1d1a4a6b0b4317caef465cd2041c3fe4068f1324630ea6c4fa2f1a724ab1c0f07735d3f24022728967014be3fbd5a107421e190e0f203b3ced1b80596d127c3a38ca44509b7ebd88b149c664e9b318d1dec187ccb260b86eb208af5e7a8e15c55e0395144677dc385d55fddd1b54046fe0e87b20f08480736b241e75806451fe9990aa0c77ddacd2ceebfe207efa18ff62b3309d6972892eac9a42784ed123c59ce3a31f04ec9c2b376eafbd5783083724132a3e51c97dd88da73d31f66081cddbd462b7c4d3c4e44f7f0254e847232fc6c3a78d0c3c26c7412d11f5df3f0bd197c7834421e6f16ba906420a6a8a580e08133f4ba933acdb95a8a377e91e26efe095f6b24177e35768a0619054d975fd4656b00a4b2df5b5630e61186eeb1f065cd13018885779542e1765e0b40400bd2e217fe1613dd43e6bb1ea2d27b8680fdd961f34182e50fe4d13323f9ac1e8ffa1b21e1ad05a4a9133bb49bca3b637bb63fe23e039926af9304954622472a7c7532459a629d6392531908eb5033a95d77420eaee944662df785fc983a65a636df5600f45f13f9d495f78d5aa4d364878e2085f49e924b983797f11ec83c1568000a2e50e5f51efe3ab4b04aced858123d5276d8a6e26bd6d8527830549d7d81e2f4df8d50be45e6ecf05c227996491e59136a0ee28755a698207d548dea337f08d528b15af91171393f15a309874743a7c1e3dd93fea644b16a97015cc46acb2348ff34e1c31603eff24821e0808d563ce5fcd4c836e02263c50439f660fa74a1de7ca7ea0e3e54c6c0d8182f1cdb47392a190f7391db6ff9aa3237d92910405697df707fade640e0cbe5941207dac5ffb613846f142a682d9c232010c86a13b098bdc4a84b780640279c34835f2d40d3934058a59726fb0bc730d2a0c0b66d768daf2930f757699cebbe02daa1921959a3629ed4c91145cd78cfe0cc685660f50348dd679483f0c85f235afede521913c9ba965c32b42724faf126e9d90ede6b9dcd74bb7bb427703a094c141b3c8c816c66cbc66278daa5b64b5cb4e2f0e8987a401282f9b0453163ee1e25ecf49f60babab39867f7970539c18b539c98b81aeaf270d525293c6c85f27157591170a8e841965a840875fabbd813fc074905f9e4bbdd699a8ec8f39878b4aacd65f3787e2661b101ee34767b9fdca0dd86aa271adc28a8e92441738abd87895ad53aaf0353b25c891e0ae1bdc689fa60b216c539699faa1785e89990c32c63c1095841b1ed770f81634bc2d826e5de8e22ea4e556d71f71f4ab1444340ec0133b3847e0b6111b413754d45b21ae27319765519e1b11bd098d578993eadcc42c41b721cf34f0b7449ccb93885f6ee273bcbbd2f69077189a47903814e2e6c7d7e9f8a96993039321300ea9dd8766714caf36499d64fc1d0a643cdb69f394724fda59cb49a10b6d13d43811cdfc38c7c1456b246fa44260544b7381e715c63fc0b57602e96987ad2b85e80cfac5922ae691d09cb43dd10c527537598fa13e7839ce5fe9c0313ec70c5a3a9e04d2afa274e7b08ab910b13bae6000ec58286ccda32d17d284c94d995b23adeefc18988e9fed5302b545ddb34701903309c95061affea1353c5d2e181dd59cfc9b86031df88b6aec070409a2fb605115db0e120dc0f65292a5b61e3efe3276e05141b5ce8dcb5ca92779a99d99b1da0484aa5f0af3e6c58d54b3a2cc29273a641f2832e6252057456a09f51c117d03f804b48e7462fb6f0d212b14df64d6bc658617015252bf6f2e108c4150ceb318bcdc6660a153e6901142a30ea4d1020845897157b1f72e00b915d1e5560e4f4117a35e312225511c2697c71c154d760c1ee9205b55f8f7d6c1e7e56b5dac92c3c89fbb10f580282cbd7cd4b0b172c76f464ca64ad4f44f1fb1f64ddd1354511ab5f8ab2732b84667f8b48e25628fb73b0c97503ca94fe5912b6c7e6b59bdba81351e3a4f1c5bc1c7aac0a6754e3a0830ce72d3587e04dc77cd57bc09dea07ace083ae135ae87b1f8cd141cf12a6a795deb9a5f82b8699fdd3e9422042bb254fd175ef4d01abea1e98d2406004ae252ae9290def8e6de5d556153538603b6aa26fa579bf4609f8f1ad07058fe99af29ff85ebf6d3bac5d638f52eac16e5954e37a755d9cecd3e9884353202122c9e8a8e607a0f03937e7ef81009d53443d9fe967729bb1c6998cdec2faf00e8e32f8c8c1a8f1bed144b458dd9410063120158d567d560d6970bbb23c945150460da350a5076c800680c1a85026237441c868544f255e5ee2caaec95f486ce8569cf79a1a2f3aa6cca627f04ef3c76da0d5ea969ae52dd4495350ecb0d800ebc6a44ecac896e8380d691098377656b8fc06dcc7875e4f8478375ecc6e231d8a3a4e0e0998be528987425474620ee705aa4a81527808c630b43ec02f3366ab07e92df339562b7e4ac165547ad2a12a929cec65b2f21e19477021bd824dafc28ecaa491dcc92913ea42e4597a09aab1e61b1ee8f941f311c4081a42929fd594f5b40c7145654a88fc12e5dfb8293d0a7eff69c50c7523644d31e8cf702adc2716fa068326a6b8180e91987fdbfbb7126fefb3295e1266bf590f0aca96f39ca54756b6d0058911d1d0b11a2d27e2b144fc8c6e563ab59b90e340cfc683492ae96b295bcdd68a03886ec336ccc31b6318292f8f046e83bf5f7fe3058814b6e825a5a90907c60188351935c84f1b01e6f0b189f0c608d43cc755c18097f9fbdfbc175a2e44fa10c3025634d76d90d31a9e2421a5af0192b287338cb2f60981102b43c89c7f2857a616361923e4ff3eaef08c4e2a1ca88ab18599ea725908193106eca6f5bed818bcc2041a0df24ae0a1c0da0bf4df860f9e2385ffeea5a7330ae28c1c6a2cdb90e4a3e739561eee65bfe7a93b8d80caf8aacb6b6051075d7fc265cf412a891f4c9cf631384fdbea9957820ff8ee6de922c1571e7113deec0af25ca1605cdc50c442ee65c8f30be26bbfcf7528205c9d6386273c15dc1304bd1014a8f1e8dcdfebb59c59ce16f8b827ba5298dc22b7f4e997ad52d656fa2b73ac9f269a05e5c2fbdaf344c124ea92ec8942f83124e0ab48fadc8bc8e9401e9fed5584c4aecd580cb7a64c8ba623830c9c3df83dfaa0bf7bacb548fc9283e1c1f14fa9015aebc49a9156c2aa6fcc3c50c22f551d9ef8deae0761ee32a1ea95649086cc8fd1e09529cdc69edd3c96b98f2ad5f52c7340bae008d63fbc8e42ce59bac21ba19ee9a93efc8086399ca1725af18eabc1be44d6c835166ba8e8dbd822aeec029fc042b3ffdcc48380449145103021d26f602f8996fbac959299d7e09ffce16d77d26f02d05e321786e91af47811efb19422d5a1fd0d88ef49412ec78abf7d94ae869951fb41e1ab0b43d0dba2126aa64a0b33501f0effbc76d45c1b83166cc1c2879f41a05b64d94c4a59e06f4866016c4efb92ead824f4af19dcbde13e6fd520366fa89d4964c70bd5365b8b9b33226416f9d22999a6c886d90f37390acd86e94d458a4761df0745099068e1c91af894b295488289ccfc3907608e1008a497e1c5fd4cc2699058e579679d05fb4d8a3eeef6d2e4b35b2b8066af976aec81afbb8f12da2bc3403b2236834855bfba6af243a94eed7b358c00388634eadcf0718c4b3137a73c91a0d3a605801ae589e850aa900cc991c87519a50076aab866310e67f193044b45799dae7ce8827b6e7502de80edc1c912dd49d223c7f7020cb8492f2f85cf97c0f08f80f5a90888f3019ff884aa41812b882df6f3aa7a3c0d96c0e1dc9d813587fd46147c206fae0c1fbd15a09a802591a3148c363494c90ba85011e0f0ce56344708f712b0b14e6912cc0337c8dd6cee961442e41193c1d821e4c1f7ef808a9df10413abe113df648c1a3983df736d339421cf7ce703f809127020d82b2e8855fbe58114ab67f370dc09525d7b8cd3dd81ba9f5f77f32878986ffb2904dc9eabcee0dd8d1e90ce1200a9d732a72c8e372282e90c7165b6e56fa4650787e68172bddb1a4d88812ca171c33caa96cedb1c3a84c4c7bbcdd98813a9317495343eee90f26f9084a99667c920a21eccf82855f0c5e4bfb50939228c7601b4e5fc080814d2a78d6824da366cabfb9fb91205f77618e614a50f484057cd607d16cfe865b6f8c8ae52b62a345bf30b7c0a116e60b05e12fefe5809597982c137f267eece7da7910b9a5277d393ee1ee7e4e2bf181fc7c6a8c222cbaced25149d0771352e87764953964ac19e32c3823e349ea72b66a3daab49e44dc988e130323468d81d38442b378143ab7d8c012f9c45a63583f3b2476360cc80410e2c4901e519ae0eca389675774f3978c68530a6c623ce2c3074a7496e8bb3aa31ba9848d5dd11eba9e62b1c236f1d6b8cefb14362123130a6e49beb25593748a09a0d40716e6a1f36a6aa555b183ebdd02ec30b001660681cdbc0cae28ac8aad52a260f84299d087f0d225062c31641b0e3bc00d5851b816742991efa1fab3f7e1c5a6ff31ae44c02113a9a45b9367a4d571b4bbd75106e200974e032fad520d375be2f2d26d2afccae2a49240ea299c1e45057b3d36f010a9f05af8cc496ba7fecebe0a1c8f00ac92aaa56d887c52ec8bf15799c9ba7e136e4010362b6438518ce30a2dcd9a6ac18880c0f7a5927b4d809ef414684dc442036b39d11a7afa10d72310947f4b52f093c9cfaa665e8699405507839868e6d6c3bf89935397625873e9379d38b7b6f23ad79fb32e4b7c4dbca8bd577598ec3a05b7ecef599e3ace809bf67a97c7f354de7fa1e2ffb7fa5310dfe6ec19f069a6048cbb8b3667717cc1d2188e41c8076ccc596c075a5ab316b1127ede5568d31fc6dbceb2ad2c7dd678dc210745959e6063937cba7a8782878670a03d5df46c65baedb99ac03f74cdb9b168173d5a588c49807a544d4798e9aa631add12d2beb55eb5116b7ac1a998e94891c2246a3a8a49e9e7a21cc03dc746ada5af5c654aef3679854f2bd2cb3cc5a997fafb9cd8bf510d733780a37962353f81c65c6a2e542642de687d6c1f8dd26cc7b1e442b5f32ea69ca94c4710a0321c6fea48145610e4f62074109c9fe98b74f003c421e3b8d8dcec7ac55dd4cba2711a54e72b8d33b505b8eed6cd998ba8b1bd84f8ee664a44c4bbc38b81e12d09f34fd5823394b6b999d49e1c983f592d477821216e8a62cdbc2d7d5cb4c8dc8cc237814135876136424b5a52c38067278c6174adafd97127ea521c7ae84f44155552a147d0dde347370457f25970c93cd47387dc07f89e5cc8ee2c73dd90de3f0758c202b664d24711aa304bcc86320185593c7f1d7450be31e3b97d6e170ed9fd233bf06ff75f1fe1cd203128e4ccb38411f3e0475a8365d816d3d91a77970a3c7214f9fd15f6f52f1a6be25a84d909723d2ab4a83212939bd1fcf2370ac837914647f65647206f38d0cb0e5171b51033accb73b7d1311bbd99dd8ea2aa2b53b6c430b776465b42b0c64fb3669f2ce337e2c19c9857ad4fc5312dec4b7d80015947c97df85f6a9f7fa8439fe14b1b7f7e04f2c1ac554dd18ab6aad81dc32fe55cc6a5072b80488baf1f492f323572da12ad3f4a26eaed243f30242d05609eb980c6199040c6e011094a8b1f7c78a8680f1be36a16a1ca2680182cb0f40a308e559c7c13925a14e198793700299e2947edbb48a1acc2e3253fa9b3a35177600cd9004db0525addab398b4f132f6c3b9cb73bc9670eeea3cc78a8e126106c4edb243827b7023157e8201370a77886994969bc901242bbc1cb78e63501b56e6511cf688123b43b46178db92c3f299422b864ac9160d6d18ff5287f14eda5010d30bad2cce21ffb0bcb6ecdd2b35acd35afcb9a17860fce1837bcbe9e85d06ff305d9224890ee47766670f7243aefee843a946657549ebd728f0f9e3531195d477720528e15f324434eff590a16b1050e955849a9948f474dd9047e2483e3faecfd0517c00ceffb3d0a06870ed237977bdb78c13f656d67434ea761304f1a1f6c06c874617446750d3704bc3b61f02ec586776f6195f0a50d70a74ccb8a22ddc2bb755f17cd72948ca63a7049403271ca4f81f82056558ad356ce25cda5d02e11920bc9e867652903a83239e40042c9f0e325a3d46a4659e20ca0a24a7b6b2482b57d5655fd39836ac3d0e3818ef9f360c7c9270b5b9ee3b93d78033c6417ba834d51afcae6202b93e0d87715c513605100f9858a03253231fb93469070f1dea72706c95f23b954bbff0e76d2c5a4056845ed705fb96c111dcc02a01edf2673702be5fd273309502c254f2512deaaa78cdc12cb041e0da35bdb207b8c0be27a5e0b0618bd9ecb2b0c4edeb0512577724d955cb71e4cfc8b819183934012bbb6495c87699169822ab89908285fc008124a0cb679558a36d5eea39688b9d9a9dd4a9902d76cff939d019a88042df58a100c9cc281012fb863962c478726efb9ec359dee4c4450c82fe430bdaaf29067cb03bec7d56294cd8425bcd4ccce5e07464c79a1c91f84eb93116088234344add4b07c49885a88abd76a3b8972731aa83af8934f3c867a1f38e3a802f17c50f4b62a3e4abadae127609f8ebc72763f6a559d012caac6367faaa6687caf298231db0469b31252a15642e364f818027a76a5d4742a54c2471a266999ad08a1425534328c3a69e08f3f3b32ec6ace016ad2ba685b9fc6e65e1545f1022e566efe84bd981646771aabcb6c806d0e29281511052d0ab8a2794264137015d178145132317fa9532b97233d7f1cf710a54f352b8e555b8b54f7a4ac5b2a61d34d975521968721254c9b7e2e5cf523ee1252fea687ecf99a7e5665a0d7bc0ceaa1180b56a6e49c34d6fafa9be753f92725da01f5bff5b4a7e68d3c89f3deae0218bb2b25b04716b358b720a0507d49fee053fb8e5709c7e50935d443db302524bd2d60cbcb9e56d04912193382140b0ee8f22dfb2e9d49b8372a65913085138f278f41f88eef21f33c8b876811130cf10d93106d1d0e72407760e154454293c482bddfcac2753cc99da5cab65a584eb6308af33be38a5fc4f99661ec74e568d2a8c10065c1801c87497ad5ed2b6c70161113795c2c91cba0e1e893ed3bae30f47cd465d2f141f6fbf56110e9c88b0d89d2bc8353a3629811263f858836eadf4722f79d6610ffbecfc1738df029fb7de2a8ee8671497b48282d39ed676eadf9df1ac8262c06cd96c29092023c3191766867da05a2d23333863d5ac836a060fe54ea21531c293b11e3666d5b145d4c3b5575a2e3003c14e4d3838315ebdd7e3acc43aa87dd06a0d5927c1c9f944d4ee6faf48cbd97e5cf408e50791042722f17d887783dcc57a8dbb092fe92357b5411b628cb985d846dd012462f22157bf5185b04ee3bc1919a3b0e69ac67df8d8824f6d24747c794aa361a502f25d6f6e845dce22c63b608b6b13b84d14503ba5d9435372292d84b9f1d1d7eb1da6840099058dba317718b5d65cc1621d0bf4b6aeee8cac77af60da0aa55d9a38ad071756495f353179e6f7ca7844793c294b03fc79a9b6f75e4f2fc8ce9e928cfb551d6165c787bc2a74772fcc8b653e12dd32f6e507026a45cc605969cda4677371468311710a09000b1e61385a8c9d407331791444e69df587836972691444dbdde8efdceaaa9c3fa2c24488ea9e36eb8da37d2506b71629f6a5dd80d70b4db2491138daed7270c130c6c18ea48125040abe2e247070a11fecd4dd62b39977212e90ec3b291d735b86b772b80ff89ba502e069f42166cdeefe0ae0599eecc0c35cb1f202bc38aca5607ddd932ab901c7a0404a6255693ae5f8f473707c3460e3955fc53fdc1a3eb145a3b6ceee81dc1854527ec1911e65960f0e7614685e7c1bce330f5278f5782e0b491edc5a13f4b62f6df684846f1daa88147ace5c9697bc85c8bff90f47848776962966f4a20157baabd7dca558336edc42e1b9a7a0d8751726f6d7b72f965767381b8ad1a4232cde9157aece4743013863ba1eb3560879f70ef2ff265877691dd71b1fde06c5868b8f9512dd7a01d2d57cb6c218c5d96e1d9a4537b5babdfc2b14a2184ad1893a9821d058e656aa273b33c58ef6571154f9d0aa01ef67524b46a6d5ab1b06b8d3ef0f530a1898e1584ff1d9a8a25dfe9c62198ca8b5fc586b6ee7fc58f48e7f966331191672d0944c91c2559c37325f3fe2700003648f73fa06becead73facaa993a2ec74a095b81608d1db5cf7f34f279044ff9e4539766b68e24c1cebe4a68e005dc8253bc206d3be532f9dbc3e921317d03554ecc3465bc2311f15aab5bff9e33bf681be73f51932c1d64c1309b9bfd04279291b498b8f2ae7ffab9ff9eee37bf356ddaab6e0d7a1d9fb24f0ed5f7de88d6ddfceb2110cd13fe76cbd2d94b31bf46c9ecb296e703928beb9a82c779fdec8b94f93fc36227763adb15a5011ec0b1b540833c7661d344f6884d50a40aac199336af23a8788317f80c11e970b184958c54035104569dd40e28de772bc48f155d87e6a02cc4c981f13a7eae93015d63176d8971d8ba37818c2da43fb743ae160c4bb7eb5b806e7cb1c23036071a07ab9d5fdf7e37dc26f9d6f632cfbe7ed2f51822ec017ebb6d1675fd5920ecf442ff29043a457568038ddd78c608be1a9e001ea8dc8ca2ac568a41d6140b1e0988271e22f7d7cb3d49a528ec9a2a7436d028e58455df120c86defeaf62d9e29cdb61914537f4e72d66a4d6d5ff8b372610f7b2c3a8ebd7ae7ffefb53018f21b7e8a3633c010b67fb16012114642d717fbf62c8ed68fd84b140ef52c13c4494c9cdf73f6a2d325f5d10ae3a4104143dc53382c36f96c7bf26d244fe58b0aff1b6c4983040d1f1b0693ccdda85c37b043c683816ee64625390fec218800c2b7042a3626471de74448ac6f8bd406d58f56276a073d742fcf2492a880512bdc1e9e66533088c74ceab0de975f13db046ad92f2d3fe8a1a5d81d4e30de2cd8f0b5aff1e84b4e45e6f77472ed9646c5877a068a0aa3fb9a931fa5a707b62154e2f0502ce1b9907cb4ec776c99dfb4780259a85504521e6f3916fca3b222c71b9a4532b38f67e4d7ad5ba69133ac0bc2eb75d30633c4165b4bf858bcb539b39572e45075855074adf3d45c480ef37db97a223940cfa594233a4e6dbed0e5a85cc079b8fc90fa351b554ef2a99087c0c564ae355cb4dd11546d3e5507b68938d01eacb0556e5808776007cb8ae6a984845187b952f900a7e8060edf6b69846c711e7f25ae32a8557e2855080259dc31ac6963b5286b852656f99d8711f42104debd7df64708a51912fda6770182462861ffb9ed00f505145e3c998b0fdf1b0abd91f3f2b40701391e68138ca519d3ca92a8a4f13a74359914529e5fb90ea67ca8eef80519a88838067f5d9f4e6dbad3ea18cd7db0add1d8fc55801b4cf20ff19591d08dee8859b423ac33154d2b32b628f73cfc77bc42606bf23350f1c2bd305f41a448f147e7fee42483cc7d48d8206556011e4214f2db4a8645f5aa9fc6cfc29cebf9e32c1da4cb3f79f5033038985ee64e9d53c95d23d5599cd78c78bab0c83a4f10c5f99738631a1efbabffa40ab2895349eccc962359ff1589aeaa95c90ece9444c5cb4b8de56b697a7448df3b00ff1e8e44467bbd468c6a8dd71b49aff88f02d9fb23853bbd82b01dc6a48a87a251770cdd8e8416d898380d378320c61b16584aed94916f4aa1fe02a2dcb944794ceaf42184f8d596e7e16645b7501e4ba9324b4f4c351d34b94f8b21728dc2eceff0cc4ebd5816276a270d8e9b0a142e973479261c50c5d702c5dfe0e9e06de7ba0d191ccf7e0f13f3f43ada20c2763b3b785a631e6ae0c6c72a587ec9fb73d2bc5ab34678c05e1c868222a74a8ee3bf2890a942fc87e4a23a2fbca7cf211770bec621ab598ee22fbd13d788c92f7656c0b994d9e3554b51be3c50bf16aa3f86dbf59991140bef9df2d1c293a895eafd9536b8a0f7a0826aaaba90e3cbea161e7b54c541397276cd45704a5b7670a177b685957551e4f01f4800f116134a5ea86627653d4f87389615cd5e4b8ac5a6f96f608dab55b4094b4124194579e43697260a0ef002ca288cc76b21add364431bb63504582f802c9eefe17ac9b261c4accb590a2f2bab08c93007412c583fd162bc7d352bdfb1ba1d8055c943f5d28854f631cbc5029161a6cd39fe574b69d63bfe48b4d30b1cb0015f65aa9481225fc6259c9bcd4a8ef91120f085d2f834bee5b17f8c6c3c6c7ca84304965e79be631f35b03bb7c5f26fd2b83c8a1c48107016a88c20e1e09780726b011be96e27064017d647795c527b3330ea30a55f90d76e82bb69e785f55e03ac53b157700f4419baf43ef362f69814369fa399ac112c504e360740110302161e7cd105030ef0ed184105bec6644d327d2da2dd21ed06868e90ecac143d27d3511f0130fa33c57e4357845b80af717d5de35085907865438d02f2b883a0c1155250dc72df28df2eaee21817b5a6de78e210aa0dcf58732cbf3388d64108dea94e81f953817c2776d3d7bdd0da6bc2ed8006b112cb1829b834010c5a334153b7af4de341834b399bbdb95c1024bae97141d4a4967ba7388d3186a058457c2c5959117ae03c49fc62b64e0fe55ff5146038a2c0ccf9e73edc5e2d97bf8c902a1c8a0ae3a638d860766b058155ff9f7bd60fb5e09ffb3723116fdec1bd9a785c87192dc59447791935a2ee0ea633345db8581e29fc354c0bb05d25c18d6a5357f8246611e11be4d8dbc09cf498664b99bf72f9c1787fb902e827b83c0a1fedc6c00a48bdc9df60e1a77d37f0216e1363cb173febb622fd822775a09d781be6f8d770e14a058dc19096bfdb2d36c9eec68e0e35ea10d554b4fa0ba4cfa1385ed91034a5f639a850f894a338e3adaa489af391f6f316c09775e1a1531ec8ce51002b10545ceab692dff92a518111807f42e07336daea6a1e0dacdab2f237ad238a08bbe45bb626a2bdbcc16b1ae28c4dc68299ca6d26dcb3508eae30882cd2d2c8ba7cb71635538c02d4d523b0a077308c4f490dc0936a5ddc0270653850d8338e2e7fc15bd70eb15898033be5838c811230053144befc9fc754f694854be52ee49195a106f51b997961ccef1184a5073fa96763d41030544052c4197561b72437de34c4ff132a7ac5c88e0c2c573d8dcea940d1ee8b908b28d20492c5d9814518a09761da2451367f23b3ba4e3802db193a946004d3df9a6a137a0fb4fab20a5531dca3a4da210357e29ee56bb5e828c10f851315e57703f80e3034af2510b20f14dc140b764c1b3759967ef1e7829463824516e0e531924e723aadaa322176ff022cd232b2f466db74c99df2e56b37c8c85fb037a71c350c552c9ab2fd1be8ad97e75d556192c956f79225692c852dcc7a2f8053d578d14eb6b61903c548feece9e5025f050d796ac32482fdbde904252acf348b489e0b7c58216ffda4712648df9f5c3a26c2ee4191168741bb8138637f277d346fa036fd6bc7e255fffc0c272ff37d0c3fd4f26ffb4ddbfaaf90fdeff77d2ae137200d4f75fc450b063e546ff99cbf53a17c94440d75bc0ca1c161a8dc22c68dd2f0601f93800b3d09ad864ff39fd23054c9d9c39a2314b856916654a7a370b1d829d1b21654711f9e5654b7e4048af4e6e04145bffa52692553d8908c9cb6b4f2fd69c15d19819c49e3322f9cf710ba2af31965651474da08bd8416a7ce8e8682156fe4fd540448cc053ed81f1d5817155a0d148dca84da2741f95f5e3330483be7857ca6c7aa869882d219470a6501f84d26b15b2d5218dbda0ee792498fecd584ca5e90add2bed065de44b133fa47d8a7a59163fc3a452195950c63593a60ed0eefab143919e0d65c13e1b928b056da83218dad0348668437a41a30d85a48241ccb3609658d620fee45e7b1b530f571f88c11fde3378f82d87b1b642e68d8de10f97d9e205cd5f505707d982163d43c17c009143fc640f4cbb288940e60929aa03259057a5e3d54326bbb8325f3d2dffa8ec8321f39efbc67db5f88a36a8f70c7a45ac1054290567c5953ce2b5878ee264f48ccf1301828dc890c37a83b620df7e841afcee7b27505e4c19d46c238850f85a53f0e6f15c93418b29b63044b44a23e8440c488a432559860c6a8251a8810a51bed2062b3db68c4977f067fab3b0e9301a4ed504eab486ef99f1f4631038000707db9f0376a003f5036d7880f45aaf21764b2c3bb3309fab72952ab3bae56aa1cb0e7a70a74ca85fe8514d4a86c32555e6bae17089eed71bbbaa60a0bb02351ed3147c4f0e6f525e0045f51615ba013afb1eb28c00369b19e844231a7dbc8980552cd275fe8d5c37e8ab3269e662b4d84738907bf1fb2b9733c34fc9af2193fc66e0063e812bf002e9cac91c5d3ded7893f2f02138d4bfc01092385d4628e17c53251e5900b7b63f58ea9ecfff2612f5811afdc4d86ff4a31de0e82732b6a39fd50adacaaa48c332512b53f3d2ea0eda6396855b3bb68a71d1c4a2c486f8387f8dc19411cadeacba51432ad7903ac297a783003a06953644cb7e6a80658bc8752c5a1df81ad697a75935562e77447368f86adc0a4e58d7793ce2bd85d4fbd682c0746f589718b09aaac28a0c9b7f43e56c3ee300e5dd57d8527459e6bf9d4b293752c1314f0a989da7a768aca85926c00527ca4ad1142142ac9346526b49ba90e2ac2595ace6526dd2f0cd26cff4aae8a865b9046ca29a666fb7e09653d180616704aa4cb6250b66ea167e0ee305d6fbd246ef5c1848209f7ba0378edfc4b3da27c2c7b780cb8f71728aab0838899e2c741afb6322e5a6db75ef3ba28edf7ba8212b13bd1158b35345662e9c668800a5f1e569c32e76426df7adcf85e415374d804f7b2c65d99772b5cdeac93fed780b8eca1b26d421b8d0b8984d168d0f146d06db29267742334268be8a548d8269c553321d9d649db813dadc2a0d49db192a6a90354581181236436360b661a4c815ba0f02442f2b85226c8d412025b08ac78c5de8e9e78bc518ec2121d5ec1f0df697b5ce40fdbd842724d225d0c7b33ebaa6fe8703c31a2aa07a8502a13347ccc0810925abe6906c0a906a8ac958841943af4771a06dbca7cc83ce6cd6443a2f943a02b43607dae15eb7bf5d6c4fe7e8679b045d3e01a960d486f8a051f3d502bc4f7cfbcc6a8029cf8e0e1dc7e5bef7987530f01874f04c6606412371b763c35e6528608fa8a050c2a4c8b1a9f8c3dfa52c582809ece36690ff855474cd9ef84bd5a36272108d4637b69489c64ce2fd34780f33d44fe26631e1c6526915d58cf07abe4b0370841053923bc6d263929b52346784dbda735541dfeceb249b2095b2363a5acaf7c47c2b52535b454d7f691c32ac4b3517854df8266fedd5a76e1405d7ba6e9682278edff803a0da057c6c9a74dcb51f023ee2b26cd9e1ea26c67ab48dd9e4ab75eaa39cdb6c7ccb856b6843da339c8bdff3f061a2b259f59292f3580690d79689bdcd225d66bd60195a9f8d5d7a740e573a1bc48d38443441203805c9eb78a67c79e05b4f9bf53902bb2444ab068141eec8c00c284e4844d671c3c6534763b397199707e0db6b63af52dce4dade4b250838e23697c7d3788a8bcf64ab8a80772db852c2b74c5a7e51bf715587b958eb5c620f8d79aad913fbb288e768970e1d592d88498a3bf3b2df042e723ff03aa135c1719df284246b8c3b36d4adfc3fc4bd7649862e414e672fb01d213676fbf793cf45103780397e4c151843d59b562f4c638138c2ec043cb1ea070be8830e2c36daea12f499313f5b4be03b1b2bc3666c8a174a443b4d51d3ca0a10d7cb97a3037cafe894dd6503146af61da6c9df6a7913366af6ba8b31fb2884ba8d71b85beeecb4a8b3b2f4b6d9deb4e1f2908f1e708fff8f39ee1db3f36903607c6a6dd6973a7df67c249d2b96a3f338c34b2ceb8cf7f3b888b9c12f4404870c38a9181a22313f298fbb4a4b02568c794d663c22adddf4acb2700a1efe9a890378db1d12c0d1ac1ae192324107f7a35e92156383d9685d13d475ca6d0ad3872af1a74b3c0c7747613442df181760f7b7508624c3eb6f8ebef4ceaa2502b0ee23176902c0759620e4fffed60be967b29b4da707aefdf3bd7aca51d79f5cc2230145c50da680732c4a4f5cbe1fcbdb9026a043c893b24b37edc60ebe3543e946e582dd6628d7c04994dc7176a40adcfc78e08cc5dba8cdce43cd6ce4576218ae81922fc2755a4d57696315e09a3ff42a398f6ccc6fcd3035c1ae11c6cc1e5c03c25c1b92ec5affc21b8ca94904b65ce0c3536f78e2015fa166abfa0cac9fa8aead83fc9d3ddd92275ce3669e07a04f2fb75b6ebd1ed79bee378c21365af56db7852bfbad5ddd50b3e3b5f65bc2491760b6983c37fae737cfb2b7d0cdd6fabd0e70055c511848e1c0b3e27351d12c8b392d92626edbe4d42ef16f7cdc5f9287fa290fd3447064c3b4109ca7e8da776495f5fbe69ec2fa34a3362b39d3af2861a4a11d173d43539185038cfac2c9309eede024078c277dcef720c9f184dc39ed3cbf6a56569b0c6a7d561bfe169b7f891af3fc5d7bb576514a8fb933a3077685afacb831ed892144b5a4760a6f731135e3b78af8f5e32e66c24a87585028747df9383c4249c31940e6bfa5fa47365a8e1f7237b0db1f0b7d0356e4e6bdcaff7433c125bc2404047958509293e5b5a9e70210c417b72c23bf7c9be241a47225b7f031cb1c19c4f237cdd017d69c3be07643724340fbb447666bb19aebf9cf144c949394bbc458d423690c4bcd2158c3c8c8caa1f0883fdfcee215a6f72004bd6998c7cfdf433f9253991705fd5f9d4e544b0d382c7f834b6acf5fcb3adee9cac786189a3dea32bfe9941d1a2ece8795cf2325b164dde233130242f983cb824ac8ddaf06d8072b294890aab01e132cf08342b4e3e59276379bfd2da256b8cad8ff5431873e63ef6bc14dca6e7fd2b3a427df328606f95cac75b5a15abed2046c5138af02961f62ada6a9a5eb04967026565c0d2afafa71eca054e1b6ca57a7760d514e677f49894af7ef3b4b0e1ff1477925c82c50564d0ecce13c09c59308829df227630f4dd4632b74f78bc34fef852ec9410ffb60d31f033693fdb01e192a0599c1d068dc3958c004db085bb330dd266e03784286a80195cdc9d9bea6e146c940b0852283925c7a6c56c8e20796fbeda72529ec258c64210b75c05a1de8208cd7a7271691106041dd27feb587929caf90dd476c6129aceb79b5685f9d2a18ce1c3dc86a9e91d4fbbc078c95e366cb50555c5659ab92f34351945655fe114a6eecfa8d0ecae5da44d1f121533ec5870e95a8da7069674917afb2acdd818947455566772d4db8b68b8dac56c846e0d1cae0812b9975b413411e315cef75ce9a0c58c8b0983c9a08952a5de36e933829dec403b8383162c0c5946c8cd47332ba43995cd965898f1a3ec65ceb9ef55fe22a52fc65bcaec119ebf98c9a1d27bb1cb46557eaf02907933ec9bc172ba53fc932a48c5ff45c978ef4b8fc6264d527faffc8ea411a0c51d704da39c966f493fe18b2fd9a686b69c4b9157fe4d776f523a40da8c87a41894693c9953cc4b58ddb118aa0bfa747cac83ffdb719fa1ca1f3481274531f4c6a1cf8b2568350ebbe6b3a474e101663671e0414c4611be1944285674a20dfa02be059183502ac758becddc005c4145e7bd3c1edd990a35da64415ce9db2422c9b3ccbe2a92cb89ba9c4a489d6b0b4d4012b53d8294ab20cd5c301dfecffe6fd5b0532200576e87f7f38b435eedf48933ce02c4e45c27f2a35bb47f0891f3ad3eb20fdc199f290e0d09241bd90d9e852b188b1716f08090400af5a2e8acacf61c5490222582c500b210544be240fc5812731a591f8feaef9b817f7778b617bf6f7e3f32fc321f82bf4aaf70537bcc20e94fb40d1cfcfbb8ff152da40cb65bcd815060f6bb72b0d04482a6afd87d5d660598b56e72ffb4b4be50938296d737aa5cdc7d3b89154cf061c3c0db6fd72e9a70af177c1b4d603be5594b8b362e2d31bbf55da1854e58002c01fc34a019ff5e6392e4cd6f589d78e860dbfec506c8624d19fb57467278b91fea6a1f7a47663125d5c035909ba7ad6ed96cd88917274d311720e07d3cc6c78ea8ff6455922b6105702f1d04ff2ec55fcc94c2191789c5b20a6af62ce9e33d918d9af5d5bec752a3fb85a5cb227610449cd487eb2b53f57ff9e5b84bc8441f5c121c1006bf98ab61219586a09f56da79db408c57a68e2c47e2dce1481a8f2f4b1dce4dbc401465c31dfbf96841d40c362ec25a1b930699270cf11b81e321955061fa753fdec9a7b02d9214b8812e710c6663c52187c0d94e42a8f272c9d50e9a43cff260689b92a42bb7f474eb67e24093ac28cefb88cf18d1ab65b0f5d75a6a53809614bafadc149c80dcfef1040c8f36c381547c1cfb05446be2401a1a9e021486dbc0843936a302d95be273726a5009a388d5951fea1100eb8b70076809e343b483f7a39a255335b3ce5c3b335b54aa73410fb420edb961b19b43569d43a8027d1a392e871cc4804aa744ac038f37914d25f85a2537c1ea01cc675c6aa37477e04fb617c098db79283784a6d46b2401b300c58e22d5420e183d65afba9379f22b6e7948e704a1d1ea0006bd2e50cbdc34c21db6cc021e3f3fab2b24fe598932167c8a88704ac2c8431ef8f3438e92c16245c1493be13a297f26304184b42b8ee9b33399ba3d1b5af583e5a5a9c7e4feba1671fdecb2aef762b7356111c8c7189129ee121af5f4d52f683e42d50d587b73de50d695e4f170dbe464f064e41542413583651c9898c1182a304813e32da2909dd097f51fbfc65deffa25d218a5422aaf67b8fc6f4193ab50982c17a4bd00bd23451bc28b9c043aa9eace2dab2826cd571775d0b172278484410741b19b30440f06435393e22d2180e618235967169787b52b41c20edf64bb038781017d90ca497a233372801f95f2123e8ed3cae844d9c7350f5a77c3d4745299397909e58bcaa761c90a532a14a33c053b4c19d9cbba7243b90d8fc9353148c315ee7acaadc97cdca4a607d2fc3a380fe5fc39acd5109103b48826cc1d51f5baa3118262d36a4adfb1722a066a79f690b9f7d95b7d8be74abd81979405c72afd6ed35134bf9811878e63c1e36583b91425e0fc130fde10d9779171607d55c4c0bc6f9b14d14ccb8f961f3c006411a1ab38593349ce4817881291e0c0ea33140365845fa428da5ad01fbc6b9db066a02d5d645106ff96cdcf5ce469e4640cb786fd65db83c5e19560a981149b96e35f7ad95c99fc80e4c8b8a913fd5cb8ac1fe0bcca2e1f7474704dc29e6e172e09876ba9fd0b3ee0f379fd8ef75f1d498a0d03cb80196430c64ae3cddfeb83377c8836f531387c2e8d12952cb9db4ed5476873cbca3d20a8f8185b345021cf86fba6cfbdf49e45d8b42730a85f8f2434d74c4e866003d44003b81995057e520c65df186b27c48c234b0c5b0aa21e35e1f0c0e0fa9a04730064737e2cdce89e8f97d3d65d763999239a548f7f5845dc5c2a6d40d1e9200e9485a9d43edef96af0ea8365bcf26b4b14614a99d1db07cdb4ae3664dbb06d428dba230338fdfe74d1c208e06afa015816f234603919183d12165762689a2eb125e5cbe0bbd020677e707faa852558a12171d7c9ffed94d307a3b3681a2ece3fb8583bbb81a85510a936b549b02db2fe1c418c414c95315214e45a7416de442d48784d1f1bec0034fe51804113de7942eae55239870fa8bc30ca2b18a4f66612a591f8ebe1654c16702c101efe90843ea05424d9aecac207fdde456e623b3da5ed6c26a52ab4f96d19163c81c58f1fd832124ebf9b47d42b14f6f9d740a5a8ab9d7ef69ca2930b5c0ba762e1af9480d88bae2246e0f57ce95a94fc85cf995eaa5955393c13c3afcf2cc9a288a7aee2aaabdf4e00a28c25bc4ecf7b7d3b15e6413e0ac24b67c598416e62b81046f4183f8293d11dcb6b603e60a5ad19b694ba24f8f5f2c01713a4846714bb68cc2779356bd563a28a063b3370aa157afb48c028c0059ee0817f0946c09246e46a432080d00664df7a89096e21aab7cd3810b741aa7f0c121fc1e41fcc0ed7439f66c7395a98af003fd239503cd8217721e8a26a0d508e932e19c29940567888653ccfa0409770d9b56e608a0d210faa10f9320fb9d787a9388312d9c034dc2bbc417c9cb057bddf7016a4fb9c3f2d1c89e55e25b82b82c48cd57ea8a9c954b227f11ed6523793098ba3129cd4abfd977f638e25d0663ff3763802a7db8cfcdd1f62c185b99cde30e5c5c4bedd827b341e34e734063ec1feeb539a0e99d0a37e39306a2d93e78b961e2fe11bd687e8a32c0d5a769bae690f4b19de83105fab57abf9efe2576ed39bdad9785868f60b430a0a15a856d6f22644b87b692459a69a8cced52fb9bde9d4d34a6cd7071b3a7fe15ea2fb3a8ee661c53bc71fe0a3a05b602290a369ce7f901acfed7c86951331f6648d8725cabdebb1404da54a979c509d2bb2e7212504361057835f509f5381aab6dcfada22cae3a4ec91b771f207a689e85737d2967e6cdd202f36082599d3bbf16ca02743a1d42aac5a13c0b54d432299009fcd5350781746f48f2c8444e5651ce249d6a3c32ab69dd028122b244712420dd75e4118b70e8ddcd4244b683329a7350c2f2238c3238c5a122b78fdef99e8b463ec70928d97092ab83b7c2a51325e6dc28f58f57649484db91968fd19f3cbbc0e0fb352825ad9ed59a6d31b92fd6832a359d913c2ced83ad2927abcac2b751c98b3bfe38119774114d9b67690ca82d7462a061be0871bb8bb0cef728235fb6f4a70e1f27c9c4cce2481527cb0343b16fb62cac60323223a2ec798c84d162dc152361cbe22eba61302f7428334626d9f1dd099cdb09eb1135aff1057e62938e11acdf92e304252548908d7922dcf97b13e32a007d833f4a46933adbcb9b1e9719098dc9e5f92b09981eeeaca88f2b09a6ca4203a0782d0215e259925aab3b88684b59428923902eff2bdadcc8182190b51538d775a85f61bce417a885d19836e11a4283380a5ca0998020fd03d89edb413dd2a14780101d5c4c28d4f145404eeff8c995ed421168fc8c948c7e535834220e471f1192bb92b6142baf02a4a46bc10f16d38d19a4c5747a1b58537720a93df6e6c4d43bfd7634313eb2e64ea0dc75725b5470ec74e8065a87ccc1ea557df989290545d8d3f251bb62eaa1edae472a25407c1ced986ca7ce4eb64eff447033cfdbe28ef4a4c437f4b872db234e690f0be2e633427631b1e039d2ce85a33fcc981464475f5fc5913e5ebe548f6447b31765ad30f3508ba09b1e20c8da6be6f274014a2cc3c06a220631062aa3d700aba0a6f92e08bf5934f52bb9cd5ec5447a12ca58a398c2ea717b3040228d27c33db2e4793a9cb7c14180a18782f48a7ba40481a55d8aa0211f6d75cdbefea54e157fb6e818e78d146838be7810be911a5bee245029b28e2cb6c610c7f4c8be0029e5ac0898343a5f7e5452189d4708ba7f45a7a09ab5f094ba9610083339f0f8e427e5352c6671986ef5b841f8b714897cee9beda306c273cfa83b4d38161c633b54175d22b404d387f5ac59320e9476eccbb6f8b9a78b248cfb7fa3b8718af88dbb24a61459efe1cde9f0f752aa6a8efa38aad011d573aea822155e32444006dd3e263c478c28634a0f60ca3c47345d95b2c822c97f259e730435d09fd0124d984e07d63bc96c4f42d53a87e5066cf686c949623942f0ebb4cb239923f4429b906b8a137eb5cdd43ed29771675d49484e37a8d6c1e65d38554b338f626312edfa8dd725109aaa844696aa4a987bcb746bad8abb06627da5af8581528cf89682075e0773ee61665705b8f734492905728ada2fbfbbe4120afdb26dbf5fed3393b1e5bdab6f263ad60a11cd48cb1658a4e4f1226b91d085da9cb30b8884e22f76dba5eaf7e60fd435772e5bac9af6d036f2a6d945f445630c23b7acd4c12e493d867865975737252cef609dca5d4ca1b9d79295cbfa22891cc6178d7e5859adbbf3dad90d46165feafc149feece02216b419f7562e262b41bafc7edb7baf4a7ddbb4f2843542e79797b1c1040458f0883bb103d90d5807f98a5bbc48a35d2807e12a8b9164b6c7e211d028885f4aeed11a24024d24e3276af0cccc840423bd8eba8ed5159ab57aba9587e83af3a0961552ff5df42247c93e6f00eebcc8b022b1183746a79f536820a87f1c4164e3ae1a4e15af7a7e271ad5d53040b406c4c127f7cd5f4a0fa06d6ac65116108eb2764e340828ad46a60d02e5d827878638b759bfb1ef2b9144a0d1472058948979fabd5d9fa9d0ba0fb8c80bc82591f4fbf53660ec36ae492a362368647cc1416c077fccc3a7fdc9f72fa422db0aaba967eaa1b18b2a8a71789a51d33b170aae313acc9ac7a3e0ceb302368dd19b4870294aaf632d704861eef4e9a1efc05a8db6ce6d4ce2619648d2a96c5e00103a06650cf701a1a842ef823e5b6a1b6cff873f20f81e385f257711345a5f4508bba1f8e623342c9ab457e077ce480b821cf4297d92d4cb4db76763d33ece98eb136a26b01d28398d8884add3a60fcd4621b23ef52bf16cfddd301503de8d79ec11171b42f6c8f7ebdf98d7e9dccbdcc1c5c47ecac6786a3899f71fe9a16e75f5dfd25f27755a132483153f75a90a488d01e7792169011b9c760f95460cc420e6d253da88258b4344c54da9644e55c5476f345e8c28a4fd4f26a07e37d4514f6499e9504b6c88e5760d64489b7f6aeb1ba3e53ebca16ef0f0029527434c42e413d09bbc8b6c794c9146d8098fd9379aeaaf55bf028a2f7724bfb00234a09f1281746b2a9c7d1f4128f7de815a4b1ed43dbbe80425fd47b91048790a298f857126b40451197f80269d524ce688e35f6567ec468e0032385af7326c6f4496c60b76bc24f6a1ca5a3eb4d0c287a4595cf1b324bb85047a23c9c1955801f09f43272a0581c0b1473238a59e4508df200e438b57e79f4a592d762220dc074430819f75c7f5d2f65d2df73df2be9e4e32a632bf0e55e579e4ac34b8291e753fca50bcf705b0cb429e72b92be3bfcf75d4ac647b711db11f832a1b03f3ab7f19c88a05c099dee35929083ed9661d5e096bb36500ba36fb0cdb6b5c78b5857447f27c29401120d7b2197965ad36941c6fa71f292685a908b38bbf80e4242915f8a6b3c83ed690d3fad8f4d1d2b40183ce593a0855eaf0383aa9a02b0a9a116d0fdde3a7c5ad148b4c236f071903a219edecd0cf24404d1b2299d00ce62f1d48da69c1937fcdf3df44974685536fae13df2b1bbc10138b24e50098467323930524f87993dedd667711db4562d3a9057ccce152333c5daa750027d0d0c9b584250aaa345c741e99a1a0aa3f684e8a422fe48b9b4a0b6ba6a79958cc08702a0c13820e0ce40c5dfa3133e19f3dd0dad7c7eabfe6ac59a570c790a150cf06b2d1487cc5b51f8d268ab9cc1c646061272280f4a10405618b582b34634a344c5c7add21bfd611f6a9e533bbd4178dd50d7361328ceaa4b18413a0d038e9bd511b48c55966dc5b39f6b4fb98588841034e19d44c78ee469999c066228f200be6df087a4c987edeae28eada24b21b62ec10147b266b614652919cc19e34e9c0da4540ab720b3a8245877d80c1508886a1041c45c7ec80ff3476d8e26db7fe04048dde85b67beac7c32cd3b87f36a7add75016b5a425daa0e7b2aaea10c800e833115f9b1abb57649531068fa25d9f6fac2607068c18bd1625c106afd0d5f71bf885e59b493138d9c456dd554c88cbcab439fe714d982c929130215c3e629c0426a8a206870068176c3eb663f50a680eb7bf21eaf8d23e9655c665c24fdaf4c5ced2c8497474bfb6651bc0d0b83c8594e8f6b2b7e9197012d00de23e74496838f75bf40b3ea50617a53dfcd38c531614a2bfc8c78f2d146d4d6cc40a00a7d697e14714cf0afc55c549cbed0a6b7cf574bb81ed2da9535f2e69d89274f4b4900cea40d52a0fc94d61adcbe664ae00c6f27c59adba4d9ed3593d2d0fc9f27374731914118ca191e6fdb5a3032f38e5d0078b397c106ac1409b1ff6a65ec71b94d0943930cb9190638d18dcd0d9b483e2027412fe1063c1e8f4bbba4bf816d5dffa4c0d7ae5de70762cb0e77c78cc4e3c3d02783228d83a4262aea0d5792a4ff16b1cf403f5ee142903aedb2327fdd3a2540fe99ab9fc112fdeaca00d74cb24cd6826d69a08ddc6fd5c98ba2929248ec2296f5b6b7cb696174f47a6aa1b68f77d7cb1b30cd7e73e2b47ad54e1aaadc96336294b2457dec76b8e9b227802ee333c6d1b7d591ff5dfe9eca62092b4f25abeb5df9e46299e2868e48b240581bf8cf923cec2f71397ac0f5da5769c27367fa6941278cae25a4a5e61016059d9b767c1ba693838b5448d925d3722a3ba9feb7652a00516f17f56d4cd53ca1cfc4ee43da6d6e080d7efe54ca44e69078776dd018dd7a335d0d48d806b858ccb8eb75604b703d9dc85aa5e5626085c3e09ae208d028266419bcdbcff13da7ef3d978e46a6f152f0c4240719e88a0639181557bb2af4f83aca16700dc1b50289c7e0a00c78d06d2b98947b64760cf70fcdc0c2060e9e1c6326acc247ad4cfba68cef85be09c7bfa4e436e3ea77cf69b764b5375c756a984519c9193d42df02014ff2ff6762832d58cfd8269114929a456230cb50e9ca331dee55a42bfe940a543be294cb3339aa53eb935376e3ec869cbb6f1aa14f34bbee386e8e7bda9951a290e1c84b7157e577e7107f8ae1e8e648dc8971c719f077766f80d5b971f073ca2082ce6633d85a0b3d52601673695b964cf0adbae8263564a2c1467adb335b96f3141aad6eaaa8b889d332b608f5aec00f06c1bc7db79d4c811c98a35725186027624a8a3ae4a6d39cc2566cd8e6371a0d9022c9abf336549e4aaba68e506db6f531e1ed38a7c830dda9efe9e1025855bc2411a0bd1fb454fcf4ecc8c8a41ca435daa1317dd4dae205dd52100fde6fd5c20f6847cb28e6a32dfc9463fd62b2930016b790c032b2e639fceccba149af2596ace1e928d38b9ecba2f78585d807bf74af04f075dd448192d363f5a983a828c4ca9dc2cf52a0932fddfc0eb0bd11546edb07711e1c7575b4449e4375b460aac02cd3ff0253b896d3ae2d6d57ffd7ed88652722d0159de38724679e4ad439b83c5ab83c924c7083f6a5d25296a2f97b58ed34d30d76444b8aa34a6f4ab77d1ba52da14238812b59cbf31acba37d648534d3581860111f31844175990a57c6443d84a085bd686517e47b0227b152badc6e5509844dbeca277870affb9b5ce5b97a19541ad57525a21c3916b20c9964e5de544258a32ea821ca285a16f6039bcb40e47a2731543390deb39d2d44f4e022a6e738badd80f6bdaa060709398b0d8bc02127e0f17edcc321dcc65ec1b7102b432d2f3c3028e9c6293e1a2bf60976977613c0918d215ebb76cceb8b5b9fa6359faf77ab2a5a7f56a42b30683263a13c36ceefeb9b7127cb7b5f521ea0548f1099847b6568352552ac42c569746f4de95fb15652b6a13c136662cf686c15da0ebc75a2cf6f1d0510fb9bf60cffaa846ad192a3d7ca57778f7d19bbcbffbf679efde8b0e99aac90f827262a226618a6c11c431b17d0413a6abe8cbd6a28c71ada06dad57be39434b1a8a5961010364ad329a71ea0b13015f8f3b41d09679ebfa1cdbc46ebbfaf2fd8688f707a2034263fcddbd34750630fc4423f170665e10e38f0fd2184f6a270d6b8a91048ed48ba272a1c7e095452bb1b5b553c0a781ba4bc1b9d459f1434fd7d07f1b6a95cc292564348b6b22a41987564b30f981df53fb9114c44f08ade05747fb10f11a82e7e3e89bda8b123152abb00579c41b1d868538c833874581f9a558a9970d0c41c3cbb47ef26ea1526aefa9ed34ab74283d205e6214b502c9b2788035369e63790447ffdeaceea30804867f592aeed947355717a952209b4d699d2651d4f848a6eecaf8a670cd1a6bd2b25773e36016db64f494229baa0f46fa49ea47d599285e9969193d20da3c7be2a45e7c510124c6689aca4ee10d3564c2a6813f57b015c8f9bdbf8441c983da827c774d85659c9f0a30667cb3af2f712b8232f07e9c4fd5e47e467ee85fd256d612546d40cb790fe51b191cfc12cea57507387a52e01b1380488929d19af7c0288d0d3739bc4e3c5692ed9a6a510ba365e859559d548a369d6f97fe2c150a142d56dd70c039923181f6c3220840e2c7b99d2a2d72ecba2aaa339d469dce7bc3f05604d7ff0abe34c0593039d39b6efb3ae5a6031a8138a1927d2e11d3d18ea4854913e11a2c95d12c2dc144770cba99a68c78e1aa3de407e9c6e1f9e135f2bee839694d2a7c7ed2095bea76fcefe59e67c15f3e51677e010ec5bc3e51b1211d40f73e0297b48a13297852d0a5d9dcee35cace037fd33105015d77860000070cc3416cce1d2f230cef236d176cb13a3cacd8e44e82b8264483fc0a7e0bfc3b4021e6f469ed38488421f1f009213299475e39bd99c1274d275e36f31d1eaa26533222a224cc44ea803418b538848f083b5a45a8d0afe26046237cbac18e349eaeb7dde58f999ea0d2dcc1df30285e8711a65cc58efabf1cbbf1e2b0bbd1f83224751eed500361d601cfce958f58089183831396f3363dfe95854bb9dd772fc443921fd09fed9dbabda910299281333a9f456856a78e67e4729b6181809fa1ce24928f4f42540944ddbb0b2621e12862dc36a0074ea5fcb5ccca165bad5673b9985c7efc1919a33c726f475a388248c4da673dc4ace01e7506a69f48bdb7c4dfa0a341ced101e6e44104aaa7eee135333702849e38e4c82ec650c07a21e4448fe612bab881f85582b5a9d7211c12ce4f56e8e57328dfd09e8e4359437b3a29da7c629eed3b110113161638b1fa4c2432515dfea3ab3dafeb641cb969357308b929dc4c205568349c4a55b78217d197a1b856f67ca680d3ec84cda9fa72c3cc4d61e12c839d58bfb3eb3846d1e8843b6407553ea288dc828e0587b90d93f5764519fa9160a12d971550f50e2fead99d6e4eec12060404208eea016d63b90e494b63e947aa32b2b1f8e737788ed7801aa01635076229d5911f40bdc3e54f15170969a891b52da9a797f8a5d36fc3f52d6ce26ff5f8fe4e1ff8f2ede4e6ac8038884ebc511e43e58e850383952313f0678e06540bdf09060bf94fd8817e6cd74343c751bb9132d8be155cf336ffce2892485d22880726aa652cc9980cc2d062a12b92e9b4b56d8a744d6115d7d4293d6eaf6a1709b57e1d22a19f57e1c4c909b41698efbbd117eed3b3ce7ffae9d49213ef20216cb2f58926994f18b40a8fbceac69962c4fb784f760d4ee6960f3335adab16886a8aba846956d8eb8a4c58ed71e810b261f31062c71c7cd50a71ce5f36591b25b4f8c33fff9cc05cca0f990de6f53eda96488e66fc1264702e77a4b33ba78353b83e006d347958291faa162bd74d6ad825f1414731795a678519b34cd6e3eb9037a4b6e32ff285688922e3a2f3ffb27f96140ddac0648acb28c8cd42234db01a417b40ba21ed4043948c4b207f1f8ca473955fe2882b05c334d26f4ce0b7f846fae237a8eec405db3c9b86e299300016a536a39f8041918ce4f79260251149a4585bf9b2dd165a5f7c80543ab0cea43ed187d9ca62906f7da06789b250c711b9f0aa9cba88c0609e446625af69c2a43918c791c9c7e2eb8a41b4a2ec66603c58474e5e7ce18d29f835abda22affce72e1bb06eb2af69368b491400c5b9e4a7420920556710bc7e00fd22a68821f75c4be6de0b4d600d41e8c1d7f8c5bcfcfd590954b6edf722dfca23ea6c4e2dc5287a7c610c12e1cb9e2c354bf1b0f46bffdfe79ea27c156aee6d7073189afd7f4d6a589d03b7b7a4346d69e1bb13c344f06787c8660f8618a7fc93226294183a91bda105464ab658ada7bf5dd2f3a670ac264532847d76213704989908484782e59ca01ee198808b35eae13c8fe5c702561ca1cf2a248c37c719cec5da2442d9b0407761660182801516561be3a148485349661f2037f164b0a2c6e572573cab358675ac467e2cf121f54b27144618791775d944d55e07da5f4982cc2ff377f753f757019dde72875a153a4c0fb321036d09ffb3982d20c8d7562a4355b6a414596b107bb9429c2e2565f5d563e8a476e0100e2c9cc35f3efd2ef85d608cb3c1dca0ab4c7f9beb3db63d35aac955be55137e17674e76e0410ce9a3e71f9df67f1d819c212be2e7c873e5dc86a5d4138643bca475890be4b007ae457dd8113ce2addcdca788acf0000dd25a09cb2bab0d3756fc3197343548d6be58c60138d78e0b93a26f8fa268fe0c306ffc31225cd93c01f42c0b2d15603836878818ed1a540103e851844481171a7bc8ad2c035d1e2b3d325506f3bb58af4970f1884322db70cdf63c222ff4087d8cac4916b4bc22e0cb3a006372232414abca57d9272c1826cd9561a49aaa3818c2be523c8a8e5338686bb510b429c125d227baef6085d38b01f398da682c481681e41ec1e1d40ecbe2b117db678f87aa0a8340a5de4896fd57d305bfbd9734d3c19857e508723f4c483179c51d01403addc6941c9a6ac634a94f1e1228f046d1fc1da240d7a65b4eebde77188271b51a12f615e1b45ccabf9d25ce3dbf22d8d330e0cee2e696b6c986f7f45f9d21c4cdada479af0c348a29d5a690ea430dcded3637a0d6fe605cf76720810c4c8d6e475e8db3cd504b0c4e3d71239d97b551232c80f00d7eb574b34b600316d866560a2d69ff62f3809c2ec81ee20ffb134d602c6c702644851b0ec3cc37e6096c9e4ac3975964d615222ad99977a9edefceabc3bfe96474a70228b90ab4bc37df72b3deaa4f0c8a3ef9fa30e623ae8eb8e08417ab99db5946246f514de8cc658449327a75f1b7f76fa4605a6b4828cdd15031a6ab339910da0cca28ed81654102a3a5f137af434232a1c3a93e0bf4812e9356092f42268b3de6fc9af8d90b279e57de416859cc1d710ef7dac38807aa66bcb3c3023d86c6059f0d538d8779b89d3d64614aa6c395d1254d4a3b03529550f123c3469eb071f9e066a962feb5d09b229efdadb741424b16fa6c3cebc2d0a584e45ca37b425c5d9a5ea18569ef1fff93c431ac39dff812c2d4d1652be4d2c3ed0c52ebb7bbe153c214e042bd2792fff039340f7c1df8f8146eb38142214f8b420128895ec4b9d4ceacfe3ac430414bc02fa36683589f78653b2e00a9c6b4721e516d60184c78ed16631849bfdc48d53e0190e917089e05250f0cdccb6670b861138ad84ad8b95a8d0c938e086aaad881e3f765e4454b78a2e907616192b20c29be31793fdf2011e0e6b3e80aa57dd42de4b193bbb5a5788b8673104ec201f308ea0cac37c451e88240dd58a36ef8be742200dc70223cf0b738931bdc069ce06dd0b5858ec661649c8ed147b386dcd171baafebf55481848936c3b8c0d1b3ce6b6696752c5fe5ad3ce876e98d6efaca4d529573f0fd671bcaf42f1d540ae4a1d6094e450ab38610a8b2ae502a4bc30ead9b5a6d02221754720ac7bdd7b2db4ddc01b2a6d1f33f469ffab25bd4e3e93396146e14b57e4f83c886060025a85f1fdc9be5ae78a5657d30fceda394edd09aeffffb82c36d77b78babef17a49350ed181c1e3c083170adc06130e1c12cf439c1d3d7fc11d56d5aec95b30175e3a28e21ef1209ab01b044b1b416c3b3ee4b659446bb899a4b8fb12bb3e2e4c460f1ab81f1c83c07beb5a618a054118264b29e911e639a91e8c5d6746d30505ae9a5293d0cd98d79ceb78ab4489f576768ef4d428b73f6cf788fd60460501d8102507a667a3064bc614d48c7ca1934b938239e11e247c336e89b4ecad909fed70490c78c5a9a22f60465777ee1a3d10da920174531747b3fa36dd1682ac7e5bd9943e539d8aa71b5704ef2d204d4030de4580f63e478dd70385a32170bfabd879d00691f434e24fff545c9ee12df2bd853dce8a991fccdd6b03fc83f79222922c5add572070c8901aea15e1add7db7b0c01344289737129e8ac5d13f8f1ef7d83c3be80cb148788fa27a1332d01388467a4cc5aad45f4332b554f07175783b2821323591cbf7f2266c60d4b13647d023b1cb361df3ca4688bc07dd589eb6d573a6d7e00703f014e10d50e45f419554c77bd06293222ffc0f2624c97809d1f3e11b49016b87789eb6b8f47b64f9103791c81b7abf1df38c56cafdd0d64dec3bef72caf526ea7c30986990578b13cc4a1b5486445b589c19bed573738618e883688e91b46220615ae1e1beef152ecad8801bf5abbd7a718d203660257ebdb94419810deb3bd36f396858a65afe8b2edd6190b663621ad28f454e6f1661b3820bfb63cffc4920e8c8cf712ac7439b9738ebc4fe03b7e9e3b73bf7f38dd8383b76e6fc2bc1ae6732b48ad90429ddd0477b4210e70078f3e8d90c39cf388d6ba32381fa19be5af97862d4b25ea9d630d8150d12dd7a297e0120b27b6b3e76829156336ec569f2a2b15056244d91290b3e85fa5402470b2d2eae0c7536443786be7d0506c5ee8b7e0c18b7da9292c7cf6b40e56ea3a4aa61c924383e1be884c0564c244f24d2157d710f03aad1ea9888a8827dded987161e159c970e5694b9df5b6545cc89051e8c38954fb1dcea58c53cb2d2b15a2da287dc4c6ef258bcfbaf4e2fabf033bcf11a00c3aa05ba40f636ea4ba18e242fa3fd3772626d854c1338cfeafa4a889c97ac55c561514de432c3c8bbba29ec02659ad5078ac46448b881056db1c8c41b65fc681de4c256cf632c3f2d0123c11048084da1a6c322feee6779014884768e28469376985e9139c9ad3db765c446ef14a506b44e5cb80fe35bffeb7e3b35f44c4ef199f78711d2d1c940279b8e599948d603ca7fd8f0b8139b1d8501e919da8fd9209004fc54dff06b6b96a0d46ebeda76b6dcecab3a99fb7360234bb04aa9737b15a409c113507afb424542424e307c49d5282f09da7c00061c132a23edcd2ca1c91e9466aa36062a14e24007d95be350e1295d80731dcb4c85cdb44af49f2e198aedda5f1091cd0909269601f379bb5dd5a5213111122a594494a19060b0c0bc40a765b5b37a51bbb58459dfe459d4e4aa54b1852ce794b7a463aad76e4caa91685a2d61ec93e04ec7f03051c2768ddebc66dfdbaf5f7fa6b7d8559b1ce0ff6325b4d873098d6e22e2db5f69d33b9a5bbfb046a39f500a69b7ead71db85cb2db7308c33cd7dd9ebcaae3455eacf9b05366572b750cee42b5dc909b5095d8933753134db098bed44e975a99683e5639f183fe2d4aa2eddba94df95b4d35afd5d5f2660e9d4a9a47609377ba53458d788d6598a7199f67a3f524a29a594d21fe36c575242addf88f47d2caff71ad1f217c1cf773946a4f1197d84e0a601dc9d08b5737ff287fb743607c99ede9b7158d6c54c92d6c510c17182d77b5859de6a4a02b6b48cae8479a5d7ba34ee83d9a0e606e7646f278c4672d65afbdbc957b0b8b1c0bebd575e69cd99b9532cd6907f658f378212bb35980db82dad7c2b2d95455229a9858e0ef6d6c2ec656badd7d6b83926b5d5bacdb0ecf7de9b61797a97cde122e1b4c95472d7d45cfa1ee1a270ace14fb347d06f24f9c798e94e7b6e7f4adfa23228ad94564a69d5346e34fa3e2424251ea595c648b69d3e93947011c303c1f8988cbed0cca6719847d674a2172ef24cfeda4e968b1875e63a61f1c53c285bd365922dc26405524da6186f675a2d694fb516ee6997bb3dfaeeed8d0e4dd154eaa3a34eeba13cf433daf7041fad7d68161f8de6d09c2e8f10a1546ba18fa90dadd14aa28dad2b280e4e9739fc9de8719db1a9cf844b784c36698946b2205446a68b2111994c9707da48745885443aec807c6ceaebc09e9fe1ae84078409a13414486887346a2a426e69696f7196667154a3255ab27af01669cec313d2e8df6d6b22ad8be94a9da9051bc285ef60ed455a0bf7a2cfc6b21198f7dd9be423aafd797be32b9ce9131ae11a4722af1b69e13a3a5dd6ba229aa7525a16d9f634cfc9c94e6482f3bb8c6d12cd51a82e5f39d47d050e4ed795642c6a0635e4d3fc46fb4f6bd1fefb7290ec3f39c8c887b23719f9d188bdb1298c86a6da23d969b29999198ed3521f67f112269814363698fe0bada5fe8b2e5f37955eb813274c1f86d6521f4697ad4e2a9582d1337962c4d05a68972bcecdcd4d8c2c626833476ba1ff547b29a68d4d977d635d76226bf374d2729091e746b417e522e4e6dea250b3c4c363042e031d1291869e5a9b3293be0cada5be0c4ed33e6f51bec299509af6f2ed5da2cb40878446eb694686c585dcd939f15aa594602a951285b8008d3e8f67c33d1ad791945097f672216f5c274a202e66666678e48dcf246b7c40361e1a8c06f7cc60343315033282f6b12ccaf9b1568eb02cbbb75acfaa5bad6ad755848fad9f7b6d4e6ca7d386b1d672658ebb2b75a50912a18bb157d42526381f5799215419fcc15f928b907bfb5b92374a78640d27b645c91ad357b69393809c4e24587bacb5708fadd1a813798f39168570e8e797f0fcf3ece985b4a85ba206b5e776b235db692b21b13720900d4228f40102c77159c4da735a0bf71c4653019137b693ace101e9626e0d90cf54ebcc67fa7ef45177a598cc997cfe769237b4ef90883426677548743aac72876bb416896e57da23d547b476ee794754d5762949ae2dd15aae104a72a840f8bece44cbc106c1c42477a52ee64aff0f489782bd823d3ffc3eb04f2f3e996ebfd5d61716484c57c28181ebc7d05aecc7d05c4a32925c84dc1d679a31e2056fedb98fda0a1c2758ea32106bccd7728784c9721da38b99d91d109923aaedba2b4db05b62774ebc9643dd5d09085dc9daac6151b3be667fd738bc04a6be6539c947cdf2efbfafffe9ebca7e5d2f81785a8b7f2d253a8419692d5e33c95b99e3484c1d20790984e43bad85440a12cb72baaf7dd5ebab55eb55a9285fa37c513af2babf7ed48d686ad1ed75a32c7a8cd35a445fe5918b747dd444d848467308731d083905e5eb69f6af39ccc2faf8310c044c6928b38de2b84117c6f8455a0bd612a7ec2a73402649dbe80643dbc11d05bc351aa8693b3867e24cf4ab7e2c48f679c3a0483fb6d2d75a2a00ba92572a69b6403023692d57d64c2347ba378a19f5d6d46b3355dc7d5699c366645173c9b60c87c8485a8bbfcdb76682ba86fab7e646716d6a89d66249329a896668185b8d05406bb1ee743bd1fb9452f78cd56034fe42b693af7026274dceb49d02c0996e14fad690b41daa09d24c155bf395d03a016fd309c62c005af583aaa2501aee54005e39209a330dc19133a5540cc8141b6ac040ea95da5b518b5e18cdb40fdd28a65316e093d95146e643c254653002164f428baa0af0210ebd017cf8367c08a65402f8107b28e0b661ca052ee9821700b7864bc33db935557e70c37811e26d85defe6d85e0b652b615bab84b748d5ca3abbb66523086b19c975f6bb057160679249f9db4a34f5155b8003ac41e0174e8fd0074f836e8946a85966ae8b02ad18837fa2600fa6686beb171d2fc8aa4c30affd3a043f0448729bbaa30f6b20e3d591343d6d09d141d5fa9344e9a8fb1f7e9d0fb07414f87297bcef84aad3a1d56187b233af4fe4130a4c3149b9202621d82ffde29e7347372f62ee3322ee3322ee3323ab4b6749a2f8be39caa194ce349c7b12cb4546ba9966aa9966aa9b2501b6a436da80db5a13699b2d09daac2d8f3fe41304c71964a5355187bde3f08569566cf9f2c35654fbe92920282ff9e87716a4b167bb2277bb2277bb2277bb23efe5a156948196f228fac99336e513bca80b1c18784992e001c4c39274571325490e026d31b2a44a0458a8a11c84c2a4194d75e7ef2e34d164e3bde60610a9be64fd2186c9af1c66ad6032ba3f54f11be3f375a2861d3ec29b1b3e9e76692e66c6355e6814d7368635626f3673fde6cc104db3ecd9f7dd1d6e24d912b36cdd7c6aeebfad4a72ec854c804fd25cddad66ab63f4669eeac2d698eb1b12b23bdf46343a4e14f33c92ed99ad2a4c41b620a35ede95fb99632e59cf4bb194d2a714c34d8f1ad5db229cdf6ff4d692c5ae32b9fd471bf7a4bf3a8b2b79ec7c5be7a181cd7d794fbf36586f95575e8a5f89ddabb35b021d2e0405c19802956c1841229d70798c64cd0bf4ad99ec2136f9091c529fd4c4bf4b376fb17c05742334018c1901dda40b9208c45b67f182ba5a692cc5409690cf58ff26989c68028f4c6c250c734129bf3f2408919255217743aa947d6986f238987d4c58cd28cd29e51b3714ccf249e19a519a5095349bb022c9e84b494e32b91a57aba2bffebf49d7e48e78a1399247ff79267e9d504e764992c51734d2f0ff0898cd8dd2b697b70b8e632b7d56e7b68c90a583c09b99d5d1fab58bcaeebbaaeeb2fcf12a0a63df58eeb458f5d5924faeb67c6e486e343ccb6b3f91003e31f86ee01858eec617c0f4c7ffed8c7f8183f758f4c7faebf1f623cf641c4d01f048ccf3e7b180f636213bb1ec021a6b3dd745ff7755ff775b70af8c657b2afdb47df302a13b5f3c8949494689aa67d3e9f098e749c6010183a94af8ee774368759f5a22038ac76d5b4df28355197eda78ed1879cdd049e8fc367ae3c85c938a9d608234b162a83daf553bbd69c5d6178caafcef7038ccf5e070ced7578ca49da47275d73ea6dc88663b71b4c4766d62853ad65f4d86796ee13d8ff637dacc7e1a30c7a2b877e6a2da1df704afea5da24ded7df8698d4df6ee20df3fb91dfa88837be1739a9be68dbf172c9cf6cf78b929f6ff2d8d55a4cb4c4252525da7b9109d64c7bec35cdb58820493ea2da25da7534ec312fc9ae63a2bd48043513ed3fed5d0ab186f6582dc941b227f132ed314d7bedc36d673472ada5fb4fce66625a9e47d6e8af11f7a38c7f6a2d58fbea4772b8f960d717613a211c0e5161efd9c459ce266992e44f2cc7d511e96c3a578bcb539974ae26f00b70f618a6d3036acfeb87f09c7de96da75299b93da7093ce7942ec0fe55a5433fc413ac6f32c1905e9dde043675883bbe4bdc517ff377c88f3f755606fce5901f5f6a8a6d40c809c47407c229a540d05a6b05a25a6bad05c2de7befbd405c16fad896e900877edaa9d4a4d9d9b1b191255992130351b1d0c7acf93e7510aa7d6a17dfbe1c1b66472d07d7d1878499b36a62de77afea6319f6d607717da67b647fbda57b40a1a3c7f541d8dfec5ff67b5c7f3fede64fcb78643cacc7ee63afe33ef69aa6b1b75113451a9407143aaec7340f28c220a5c7b40f1f2e9de2a44f7b18162b7f9a364287f55be55d0f4464c97ed33c78440cc3b27df85ba631a6f134000e3274014796ebad0f23cadb302c568661d11ecbd8d77c84dcc1772d597f691e3c84884e320288c86244114044162c9425eb23cbdc7546cacc9cb09950cab4bc96ab3e421631b7f65996379a113ab2c7340f1ed8633a26d3f2cab2d7728d2c56962c51ab7a24d2a0b7caf525919ced7ac69ded51e050a26ea68a5481145eb0e7cb22f2c6cc719a793355620db5d611309c0e94b66782a5ac3802c39c0938c65ff941b2d44a975c9b1d2f394b966559d6bc35be722d9f285f9173bed42eb3dd6a0a64ead0758254ed29cfc9c9c9c9c2b4c45ce95245782ecab9489580e85cd42572b3d8f1ab84bc112f4aa7086186adb5357bcf045d27de3043324028dd3031b794723aaa72d2c466be91863fd5a134fa80e7449f982b23333fd0c2e4393466b443dfa1a690cac8f8600c4276489da0727ace5409efcec2b1d837de50439580c59315ccf81176fcd089802905b08183631902ecb884ac213fb4217b1f8a4ea0154470668251ca483f9f0742b2f8fb0aa28ac320ce4c15a7d136b217c9b2df441a2997dbd810d9439690375c0ab1c669aaf81122e8544470be53c147b0f18a0d415ee335a06f3d9328bca65d33552e07bc0651e50289e0bca648635201876e93815875e841709b0f7fcbf92ad703119c77ca087a20aab84dbcc610553c081194f1862baa9e02a6da717449ca6bf160ee52ca2794b63f36e59c74664446464f2aff64a6844026043559067e3270aa488b4a2a3719e7463f740c918653f95281162226e85fa780e38e37442c284f35e59cf4056a5209ba8d0d529e1d1c28cf05acbfbac77deb2fdd038a8f7e64c9be87f595fe288bbf494a1eafaa8ca7f06aa294f2b8fcab2d1eb0a28f55bc65b765f5b6a43b9b665bd21cdaf29bf345db5e5b66fb588cd787f6441afed40c91863fcdda9633df2258eee943bc818ee187b842c920494a6c7f5407a450358005cf0278301e1d26e8d4694fa5a951cc15aec668b1fda37be9b4dd85d84a89c0b9c05409e3152fb1479e4c956995e81cb5402681c51339043c278fef4c9067aad03dbd8b997918a46751abf5e77c07c39c47c0f2bd67aa542d7fe66c82f5299d609d9186fc2a230dc9c385cee7c82be0fabe3341c933dfb998736ae799a07cdf097d47b26ce93aa9f95b0c5c80677867b049665b4a75741206c372ff36816deecc5489992a31bc7a3656daf3efcc7dc28960d5dfaa2febdf1c823657c8fc9bef7d82deec33d6c78491b402893720807e3e541fb70ebcab5c39693e66bf4eed5681efdbb7402c10ecf69d07ab83d0a8cd4ade884562f68c32de107d6681654790989cee94d25a6bb5d65a7befbdf7e6a468766c782aade5d2204e1027d27099a37bee9e49cd9eaf838e93a912ad18c3cc9e73876f634f3a23846dc518b4982e633555a668cf292b93ef00cb28ec504a292930e5101c1f47745211f20cb1dad6ae228d193fac2e0d64d41608de1184bef40f42a50c82c5931d1b76b4e20a526cca81b852c938c99fbe5753d8d8cca0c6053429983929a16f4ea4e15fc9d41a3540f0dff3a2ff10592a6b9a010eb11c1947390a7314e628cc5198a3b0944ac657aaf7ca51590d0e2b2cb6ff749c78c397439e61571d1621cfb01d67f6200487d4f4ed40a98e7b6a39589b9a228d59eb9f6187df0e7507c5317754ed3891868cdb7ac11f870a933dd0b799101c7238db7169fb35031c7e724a42b08c8c8c8c8c8ccc27c757b6aac2d8f3fe4130c53f4cd99bcc86136fb8db3fabc1fe285cf295fa1e594a21769c2260299a5505583cb166c0317a599c73ce3971d683ab6963aab8c9a3a4b89c359bd615ebc3cad2d14954536a69b5b129e7ac543061ea50549c760230ab3c0151ae06702872db05f692af542193445f24b3e947cff607a4cc05b036c66281c27e186fbe6af357b15a8b706f5710c86cfb150435db628f39462b566bfeaeeb6dfeae17edecb15bb1cae6ecb12cd36acd3136c6c93839faa9996463139bd7a70879865d31f984d622672648bf5201cb2d4f575eb7d2406b80ad3555ae341dc0f5691ca284cd9652626614e2b069bcd9347a008795da884336fd6a83572a1c36fdb09a3b54ce5039437580654966409664695e1f600708116fa82e8834e8d387405ca92f9024fa94648795c6b33aac3ad8f443d0ae3abcb65569ae0f70032648dfaaacc0d54ebc41521d13a45f69aa10fa35a716992b2335358aa9128140022736fd483fac4336ad35389b56d4a6358b6ab369cd3a8c60c80c119a9c9aa912c62c367dfa52c8a6328a4de5eb688003a68a4b94a9e26fd5786705164fc2cf52f7a905f191d9f728308909b9ea0ba5a81d76251b6fb4a21771e215d7d6a010e1e210936d51f246094fac31dff330f69345b37a496959524a10602076c8354d154b8fbaff6caafb921c12b14b70e8312beff87e6eefadece59843981c3e3d7a91a743214a7ed403c9ff04431fb51c278f635aa1500893e81756f72f4459ee921727df9d9c7496c6848c46fff841f8ad188fb3dc3fb1a5c3196ff26f3d25bda543f0fbd17fdfe528798be4ad4ff4de7fdfe510ef2ef491e81c22ed7d6f7de77d490e45ffe2435163c0f79ecec280bfef9e866cfd974b4a7ef45f0e89e8c1d25fe8adf7befb51fe42717e219d234ed07b91f67448c4b6fe7b1cfee550f4357825d6d3f09edeb17d48eff81fbdd03d7a2b879f7ea17bd3ddff8ba7da0e273fd233f48b6feb61fc4887244d41fde21bf4307e6a3c801eeb506e1006caa18f8dbbcec2a3b73e0cc20f03e34e8f3e1dc2c0560cac633c0c8c263fce31de24c388a143b9f1cfb7dec20fe3319cb11a8c06bf8990c731f3c97b8fc9efad9c7f9445a20c834ed0973c06caddf65d0ee5ee40b97b921c7ef7dab244dfe5b97f82394059565689f5255f95943c0c9dffc57f7a477e2f6bef71b86894e397b3f551b3bcb7729843227647d275d51e753f1a753924f91a5ef47d7a87f5de4f6d8793f7deb32ccb0bbdffbe1fe590883d7a51cef17df7560ee5873e8e7248f200f890d7bd7812fd42b7f7c2933be7b8bd9c1f87e77cf226996e00bcf81a5e3c4683d5d0f016a6414b4c436759d6c9c98b6c53276f53be724ff42d59ef722d5c6f69aa7c3fffc67cdf675356470a38ac3355c854093f20f589a9d2fdfc4a335564bc21ee50595d36f13c4cc86ca11d4643272865cd54b9aeeaebb02b633555097c5ddda8fbfadfc8eaaeaaa356a74339a965596fed4b7baa04d6de9f7b7f0e834094d64a29ad55efa01fdaeccd55862348ff934511a45e24d1709bb928e680849c4762c349a914125a4de67cdbddcb1ac9b40c8a7dbef28fbe58d317bb7210ade71ec9426439f46bb5fb661ac1fb57ae2278ef77f908f0de2badab5a5be55b79d96b6facd5a8cb1c652a694666e4ccbdd75bcd658eb2ef3893a58c8c0e932613e7817cb395a301428e86b3f66a15ecf955a5d1b7ac203917d03b44ec5897d6f2d7cd464146dee620d55bdd6f279737ea8cac31df8e641c1c9025b6bcc17120d698ff04a7390f441af3e24c588c5365b371876e009b74a5bc3921ef76baee35749bd94efee176da9cf09aede40407648251c0d5e6c4363355ac3544dcd994c61d2985b491f6331919c9ee56c58035d2c55c7faf68f2e2e24c5da976a5ca1fb0e9bb7559bababf8051ef88656d5aedbb6b0e207dab01c1b92092e87f398824fa165baab9d4ca099920fd4f8ae9c24531c12113a46f391afdd9441ad5eb3ee466b5e17dfb5d163d66339733b9cacbe6ae34973355accee16a2e8b9caab29e8bdb136523e8d66d2814919c4d3f8b4dad47f961692d96e7926feeee8f43d0e3f76d7bb136c987ace9699bf669a311ab2920afbe5358b3f459fa4e512abd58f3c57ab15eacedd346239af5d96aa9964c414bd614f8eaf0c5b2daf2bcedbd5abfda8bdfd6adc2ec5a6b685fecf6acec79564b690a5aba53e0f002a5176b7b1fbe589697b75269ce176bdb227cdb362ed503bc7d97e2b68f5a0e9ddca04c4bbb4bf9ca97ea525faa4b7da9d497e2525c115cdad65aabc317ebf20047d495027fa9afc8b76352328931319900d1d9f44b7d3c9bdaea895e763a5d910db5a5b61dcccb718fe4f0007be4a9cc541969eaeeae35229187dd1ec7fcaaaa3cefadf75eebc5f8be7bdad337db27f1907a66d89bed7b79dbacfd4c6bb155e6b4e750e8bd27f584423fa3a4692d214f3af6b64b5d2782653bc0e1869a2a5567aad86b896c594c9522dcdbec3da6b57045ccbda1220dcec672529c6e13d84ac075b6eb1ddc90e9d2fa63f9b3714c3681af0e70b8a1c22fb5a14ab21d7aa94de56c077b916dbffbccdd4c951cb8219abb9920ad6f79a2f0bbd9f48da07b434d15dff4399ba9829f869c149b8e1e7fc80dd9f43def2dadc5ab2af76cef8f1ec7f45c7dcd96bb6b7c7576f8e277f4f82dc98b72dc556bc1ef917c3fb59612ffbc953f8f89b2b5bfd917d5fa21fb22fba22c77a733554678d8de86be720ffaaa43ed5d77298d07d15bdde9eca895f7568743b88e749167d8f6abfaf815c031a0eaea3ffb3577ddfb7b9e55bde7cffafc593a87fbf5bdbffe35bc6f52b9f7eff47f5ff50eee2dbd23f4f587708d9f6a3b8c3ea4e3887ef1bd3d48534dbff816f120e26113e55b6df5d5567f5f8bacff8bd7b96da73355444fad157da7d3a54680451f76a9aec804e98b3e23ef6dfe7c97431ea7cf6325b7d225b2def855e6bec4e5eacfe3afdad33b3e6f7dba68adb7ae83ba390b03bef86b0ebb37f9caf3acd15b56adf543e7bee6b0d32fbe8738c0b6fe85972deb290073866dffeac8fab1ffe22beb02353bc46ff5103e84eb6cee7108e365b93f396e1c6ee5d17ba6fb450e5f70367e931cf2386dfc1dfd4e47d35a3e2d7149b52b1de4fa4a0b627a964b1f21738cec1149c6a61ce0d187d43473a0a3af20d16f95af5c5fdf065f8f71349c10ae868b62aa748f7f43fdb6e56096974398ed79f6de7b99c08eed578fc32bebabd759f8c36c43e58dc896633d8ed97d36f429b77d3ea20f4910b683f1c4484fa32c37956282f4b9219b7e2807b91ef4a5c22d8b4d7ffb788e93e85715c69ef727706b4f9f02d1b0d7348ab3b5bf5a8ba625de66f6c4b099d94f2581e7572fc0d7631f761ccd5409e969d3a79fed52fb078ba54b6da82eb5696943f94af6f45a2c99de5017093cdf894dbf14767dc85d364e506f7a233241ea39a84d8da0d597b23af6e967e9fc521893436935050eb3180e633d881b60f124bcf76db0ff9482521a7a11cf022be239f425bd3733584cc1d906d1c7b6696badf6d66aaf7ae9d7bfb0b5edf558f862d52cab9fbd4c13d5a1d476b836d59acba7fa28517e98e2f5973b0f0c0ff9f7863db6fc1ba22cb17760ef63cb1cfaa64f297d0b05c8b51eeb01a3fc9037eedbb977588fbd9453da97fa5ad65b6bf577a90ea5944f5f3e4a49bed5f5aaffb93417d04bbd433ef696d64316ca4deb5f5f3517fa3bac0ee5adf5025d9ad6926196655996855d5abe95516270de5ecbda7ff2bd6fff23354a6982779b917ea55facbdc33e66a3b603a6f587bdf6f7edc6c59efff7356bd30f5fac8c6aa14baa658f52fa682d1966ad7dbbb12c77cc6595507e7c45b7945fc97951d7b259565d843c43484bf7094c3f741e2bb36b32741e9f256e47a44496954a3636343418e39943bc28f0c00c576f6316a04aa93c30c326bfc58c0070b5eebdf4deebfebd7edbeeddee7531c8862e06dd7baf65f187f08370acc2eb432f73484b282510e8abf0c5daf841176b941fb2c67daab9e0b78fa194507e602ab34428d3537dfa76bb165305ef3817f8f1831ec3b4165005aa58d8f23f5dd8f2b5c766c45c0a5b7ee6dbb110b1808574d7a1326e99b3d0b1d8170a1014d346f9216bcc4791f2de47315dade5da1c690b308aa9a233585e53f0980d641141596a3d58a16bcbb182ac19ca2188e378aac8c77fe5d073b6264332f415e82b5ff93c0804fa1008a4495d80de3e262dad45ca0c947d67825c384ff5b43c3fcb98fe95c3193120ce8c12a98b2a9392ee19256a7395b100cf284d704a1a35f925cc6d0d74d4a7495c9d44a5527399d5d45c1cbbe642b1c0826a2e75fb635b8cf2abe662b73f66abfd788ee7441a97092c9fc2cce922f09b6aa5cc9ca2e68ca94a67c7c69740134d55836dbc9bc7015133a7c225cff432e069ce489b1b1c544e4aa7c2de0c48935293c2b3c1f7705579f83df053401b9ec900cbca4fa18d9b9a71c74e1af94e53776ca84c511b59aa2797a58863276ab2c89c79e8a66d5debf32943753d8043e7b941882a36c48b79a42cc015fb7e7873a48deae907513dd53da0e831bfd241d01efef4cef84a8fea69e524794fb8d25f10f4e3cb2a9fd2443157748ac6ec6c293fa44b6c19d2d2694b130a764a0341906fab7c1ce6cbbf39537f41cc1ef1a3d600d737475f54c96124ad4d603fc071ff9669744e2d3780452cda8ea30aad2fda3866103740e4cc09bc665e043a49720438c4b84a17028ef4e39cd23ffe22b5e7df2038cb3ece6c8f804c283f504a283128a65a2bca8f1e94124a8c7b7d1008a584f203b3d97b7ae9506eef7aee5162e48db83914d354e1fe7a47b14129a1fce871941f3d2825941ffef706efa04e35ca0f4a514ceeee54a3fca099bbfbf5abb1bb7b13d875f8625d1e60518f261132c1495233c149421369ccefe9e9e9e9e9e9e909512d263825ddd121f9d8f344f52a724c52714fcf0e4988d8cb032cf272dc5cbe7e2493e450ca4451654255268abac469e6099a1a1b2986e05c3155ae8f8f5242f911514cdbca598629a6334d92d2e4a4884d1e385c6a397c7b4fdf5ae916fd5a2b09890e87a096a615c69fc4537f460987d7ac431877cc5e2fcad747b9473e5e2f7a528fbc11b7684669aa88fefa5ab3318c465fe93e0471464fea42dea0750445313af2770778877fd5464e53e5d2334afbfa39f2237abe344d95919fa42e5c6b19018de48c8cf8fdee3681c311948350391809cdac96468484266b1f6aa8119aed43122271037d5e9aa44c1338a4a14698c023a809d65abde21114c8aafcab65b596533df42108b549424f693f829a2ab5823ed4687ce5fee4b607a1a64a4862bfb2f63d5b5acbd188cc6d7b30fe50436de99f203788c972a5c95726cb7c1c4ef33592e316e5eb39102aac4e50102a9423a8eac454a94f7b4ad43faca60a04fbb09e669ed8937e5885d49a3d6b147bd28f52ec999178485d4cade5d212cf286d2b479ab3cf2a8d65114cdf2fcd030aeb795c5de9b85f7da579441816fa6e5b322a787f42051c824210e1830e1fc25864dad06182536582f3456ac2683e264cad284fc0e289c43e92b28f7a466982d4b78834b08c836133be82ffbaaeeb31ed310cc38ab8dbca1e8bd921f6894eb27408a2b6351f6710676b8f5dda7a7febadac3d46e29920f69a26f5c81a8ed5646cc649fe1f7fcc5f873c76f658d6da63590eaba700ccceacc7485dc81ad8b63a38f42db6e3b87f8555bfc5b5ef179665d94fecaffb588efbba6fe590d4b3efe3f08a3e7683cdabe3a7d4a4d9b191251c347bfe090d9f4f4a0ddd86ca4bdc1a4f0201906b8040a11a2734d4c0719b0068c8b8ae0a2500da5269ba5fc800200363eb8486eb02533a358cb8992ce3666c43d9645927c3da36eb6880d637df6d73016ce89c80120dc7cdb6868c041135fc47c38c195f258100c832302c9371a26ba0e13a4146fef9794d86e666b8991754034086754283dfd4a03b9a9b6fbcd96ba04146559d5c2fc8b879de2caf0c195a7734375f1b3f068c17265f0989d78d46445c08843b9a14ef02a98c3e6cae06c82245847761013af89003d2428e034ce1911de0e1f9682d77c7dabb45aaf3a608638f4466d5e542bc5bd094e0eeae2b1bbf58f0a1013a6c3405071bb28a38c1ca6a2d47b56dbd5a5c2c5c2cdcbf29fc229168649a78dec8c8c8488ab0bbbb53d702767ab310aae2425539f20953665e131670fcf09a2ed4448257efae7df6ee2fa7bc711fd32ade1ec7cce2a653056f91e5a3d5ab59f70955bdb7de20d767d7ad8fd5bfea5bb5d6fa93feaca68f7aedcf39ab6a9120a594d6d6eaf2a6446f1cdb4a2bb5c2a411a4940758a505b0385526f55923e818d8d32b7d29e5102b9ad45aeb5e17bb2f755b8a45ef980e3d7de9d47eaf7deb3797a425ffbbfdef013677f7128eb304f2ab2d638d55f68876524aa9b52c4b0d40adad94b26894d25a29a5d6565b997087cc2d3570a5d6039dc105c296d208f707ee33d260a1233bb6bfb4753ab5f7de07fcb6d5d6a71c90a5fa3eafcf1cd466eaeed51e3137d578f04db7b4028b2918f32ab2d02cb7bffb5b7fab3331607fabb3ea07583ee1d6a4f0cafd584956aeb69655b5d4a1eb00992927cd1415486275a7805dc748a3092e537371918ef1a4d43dcf0588c8e212b7bc3a5232a12aed8b62aa282594988a62b2504c3a0b032ddddf79b1ae2b5afb5a283f507ed02db01ce419b222587ea495635a3dbbdff971fb943870afb665bdf8ce417e11ce8319f7bdd7aaaa9f4fccfa9e9d7ecd2831745a4a514c28a68d6283520ab20999e0acd96838d4a7aa300e3dece23e8f63665996653ca85ad3a1f6fc7c55615c1272a87c7992c017088b658bc121f7e186da134371a8fa21c6a190c01ceaf33826cef8b5bf3c53e5f313ebc8e5fcb67de41b4151a1e7589cf79c641eef50dbb438c0e68c92ac3ee610cfac923f493ca49e59cda94bb219a5184afd32c319a5a865d587d87bf59f0ca276953d28472755dbce109e83b1cec9d1f5676fe50bc77316068c69fb7ee96b7df8a2bfb21adb55fb9018b532d87c6c6697b86515b28a5b45a9646353050d4d15b70ab977766c6ca49432d0711d51fd58d85b334a1bdb2a336d876b5b8d692e551733a6d652b3f52213bcde3e96ab4f112772b30cfb2cbb119465f70514ca1ebbcf899e6a910e27c6611916520dc3c387b53380ece0dec7a679eeabfe6527f7f5a2f452fa180d29a677dce79efe45f5b5c37dee7a9b2bc53e211e385d69f6f62f1e72d4a73dd4a7187d8c86334a58731171bf693d64f2f3a17f85227bd9ff682ef577603a945ab59fd7f255e98bac5befbd7f33aefa2b57ed41f97a6c7b99f193783ed97eaefde81df5b3af1ad37a47cd24fdac047ba9f19061391ce27a1abed09dfde7d25918f0109eb3b10f87a0970e5ff4d55cb0df91e950daec35ccfe653d89a7ca9e33c168adb572d707717c45fe8c5f9fc443336ac2643efa81d139ab09b03ffd9998924481283670b8d7bae55635e7c42193807558808dac01bae29857519137e6bb0d1b3838c24c07f91ea53725d801fd02164faaf5d8b351bd04a5c949f2e583be720127c9c7accfb2a44902b1192297a89ed8524a292c5b338983d42e90855565c261dc3989e07c22fc23381d40c4fc7f11623b1153c5f34c44bc4c15d732021394afc3b46163a29e608518aef09d94d4366b4504585f83e100b34124c00ca2011cabd9c0e44adbdf1a79eead19d4868268833f9737134402f85b7963221a40db526fa71f78da4c15973908f75636552c9cc66a6880c3ed3467b627ead73abf4afbb5c68f139482891a2b5a10c50b6f3af5cf9763d7af343082d4253241e731636db56b1ec25358141374cc06ab99e096040e2f2adb4e3a88f5285fb1b4ef38c943dfc1245623b7212e4f1583e90e910a9b7e0ef5ba504ef22f87fcfa55c3e8486dba534a6badd55a6bedbdf7de4cfb30ee7c3eb4b1b7c71fea00fa104606fbd087d6522181431ffa98d9f2b1eae6681fa7797de8e3048464b1341facff20d607e17cc8b0d49bda8eb24cdb7f0b2f2ab478ae9ab03a5d1589d12baf58581493e4d5be3bbe52b1f83bcfd5588d0670b89d68e4445161875bcd76f2925328156fa8ef5f6580c96cb29d362770362273458a60677b62aa442a9ed8d98e6d516cdf66b66f36db9bb0c3ed66fb0c154968b1c3ed8aed5b952651b81313f4a755e06d66ab5560e932960f09632d490d164fc20ab57dfcf85806eedbbcacd3b53ce9106b79f2aac29805b39747c42220225d4b589e4a748448491a59236d6e3a89023df6e5fb25d93e49b6decbd57719fb91f61c8ec9e5c88209e19185459e9c44b196a590be400670f82dc0741b412513f21469d017e1975a11a137c286af403162fdfd18fd8934fdf71528f0d3077dc53e7d1f7ce5f3fa0b3d77a3bf90fe7eb8f7e78738cda37afb3cacbf0f9302fa2dfb7ff23c6dfa3205a7a93237cdc1a67206d2059bcad396288ed33ca0087d48ebb00fd23ce65b9c7dd81e93dae783cfd71157392369648db4b9c141e5c813f8f2f4a8e9434a1f17ccac3224307fccf34f104c493939913f785561ec32453b94d4c464ba780e32d2902f238df85473a13ec42491844b6dc9ca80a7cbd45cb60a05d8c444cbca80e76772c2ece952c5cafaccaf5a98b4da82892d4030e774df4208582677bc60adbd970b55f86c21647b78472bb6d0c167472b765410862642990c430b70b66ddb86714877186a463b5a0186223b31a35017ba2d90d8de68341a75dd165c6c910546c2859c1c7c99cc3b4c9894ec684518705e806a6090501163a7099fc9bca3155d48627b139439927c3418541dd04c1521532536e0754cc1072ab07f8efbf2cad2b52f9f102266823a7e8829b965e5838e0678feebae83549584d9f9cba1c305b8cb5fc0046735419409ce6c0ab5e4a44c0a38ac2a1de2b0e354a9169477ca29f5a5b5a68e018b27a1bc1f65fcab7b581f7b441b386cd8f8195ff958e64b1af9f175c88f4f3f6a1e5050ad23bed53cac8ffae3115f6a1816fb5706efbffd3e7f1d72e78f7e0f28aaef21df7e0f28aad6713f7e0ffb51fdb9fe41be7d1d4eaab48ef8f77b5cedc3df1a8431e5373894a558051be4c4e00725380214502cbf3ffad12913bf7ec4d5cb927c3ba79499519ef694a5295dc7c88f93563ec05ca2ccb418a564410e155c28426681cedc910a2e5cb1bd096a2e25bb08581400fe64d28b1861c57729c41bf78f702aecc8434bb1647377b93f9f1c37f5ca573ca5d95d6526ab5ad5fb75c7499447e7a2745bd975a20df4b59cf996d95345f8286539eeb9af1336fd186b848ec55b99d4412eedd8ad5fa3bbe64f3349afa5d9df521cee14c50a155c314f68ce2826b74e5112e03abb3e7abbd6a7d4a9dcd5ad57690a156958ee45dc7d431f774689d49367949e7eacb90e2a438cd4a65f75e0d95a93538161b6fd904be5a8a157bd7adf8b9920e58a5833e0d08bd9f4bd18777777f7ce7234969af697e2384e67aac86daa35c8f551bbb67dbaad86d998cd5f0efb264f98e4e0dbdfe48909d23789992035030e4d6236cd719bc454db5a6bf5c7d13889c6f0dbf9b8084d4aa66b7d68b2c4a6a1c9c9c4894dadd0e4894dadc0f4b3a9c2592f656ac78a2628b7229b5a6ce5b841cfe9d02f09418fa5677cefb52cafdcadb51687578c5242f971bbaeeb1ea5ebb2f4500e654f85f223432945af6e2c14d3bbf536622194431199a0add6eeb0da752545cb7733412ac324b81a27d1ff6e9c44df8573410403ac96a8440d1676450b199a1108000000e314000028140c888442a1583490346dd60114800f8fa24e6a509d875114a49442c82043888000000088008ca64900cace158f9140a4f6abd936dbb61ac399a6d3ddac34ea62cedd907a9e96648f15ee832be3af016957e7d273b5adfa71e8c8f48ba1a73ca5c290ba4d615486f2900b2a105fd07232b05e1b73383749620a5292d63ee59a54a87d86aa8373ec841f0e1052a721d2ebad0c688d1fb6503eecefa0bf61d9e4f96e903a08e4088254413f5f0bccc89fcba8dcb89d5c53d59d69406e9886ccb6eec987fa3ad58b85655f91fe479d402304a99ad7f9a36628c0e415976971b1e8cf9779eceb4dded96ab44c43346f8c462ea21563e85c8d72bfe55aa2ce0371f46c7bd48f39ff473dea1cf471454ea6d47f695712f455e0565a3e71a09cdb6daea7793b2ab0b3b02d156d238d4729ada3c69226d0c93ca18c0ccec1d19dee0395a3ee16000b6fa0878f3eda40826deed083e664a4843a9696b188a3a350cced94c351ff8eea4bde539c0786a32224faee18c33200b58dc05147f89d87c3233309f320b037aa65cfe398a0df0c017ba39a8eb443ab37ea9c43dfa1bebcb10b74dae8255bff1b95e2bd2d2a2d8954e78a046dfeae3b5950725e62eb46b57f2c2a83104947b3e6e8e66cac1b55a57d8d7adce929bd966a697052296cd408224e8284be41d09f511dc51955d89a51e57c67823d54bc8c9a1df1ce8ae4db37e93133aac291b48c7a42d5a2d4cab2d954f1c38d2c0bacf228b83d197582d137a03d3a905187e57e491aa37e60e038766c7160576b7d45da0a278305bf160ea32e326984514fadf60b07461d041afa67fda2a2cfa06d398b24d72cc26f8ec1723a4662aafd15fbdc47a8128b7a105da152a57bdc58656295aea8dbb2c4c2dc9aea5d495f2a16d9f43104b08715f57621dfe11355dd2edbe7d1bd41a02126e8def7d2edddbc81d11c8fde0bd89fa29e4f71da53cea1cf147518ab74532a9d6e4411fba4a80b51775c7c3b0d8e159ea85c7edca0e805060027d20075459f5c7a4a59ea63fe3712d5889501f1735ebf7f4147d4010e3a121a512fd8b9b3b0bb4f1c6d1244120bbe6593a93c216ce1e070844dd02a4c9c784922a2fead596415a643d434e6ed49fd8e88aa2d8ad4d1216ab67c45b535fbb681431711875e362127fb871aad90b3160ddc4897653c0992e12e5fda3bc5d6459d8f8bed651d4f2843f250f3212344382dba286ce8b042ff67298838d10ce22c74d08d0a7f8979dedd3077e77dcb12e0c8beaba1fcde5b2e0b1697f3a0fa5d0d18fc178fcfbad1ef23876abcfba3347fac91137c9c943484c1df33cbfe8349d870a89fa79ea95b3c7c727ff286da1132d2bd8d50563bb2393a67da69438f2a687accedd9a1c0f65640be68652a36a858bb53ad4955b68ad8ed3ac9dd1968373de605a553acd7a7244b841933c40a343cfb58d4b052b83268569f608e88870d4514565626a9fb03591d7e8731a8c636cbe21d76e39137acd12ba579fc0d8b458efa4f12657ae6a6aa8fcb928577d8e794aac24de04a7735aec19953d8510ab3aac6638d83c655d7fbfd0cf5e8b182104b9bffcf72e89db5f70bcaf283642c6a8933824de1775bf52d7a51a7a924bcc38eb3994703cd6eac0c1b93420f637987d927f6a991254246153d1e2c42750774b098679e76ce61f6c22046b6b5233b0f928d125b03f0187cc8699c27b1a1fc8177270986e0edf297f9d4775edc9a48bd6ce323833c8a42bb527c4b78f5a2c3ecf06a55b628688c7f585cc6c3516150cefd45497cf10ba36e4087224d71b8b9910e35d2ee8904ddc3ce86008bdac39a55cdb67fd5dbf530eeeee8a57b1148afb9a77027d75d416415d4828b74bc15d9aee8a5a36377c9b2c50492486210d10b48f56a06949712fcae5c29af803a152764bc53af394249082b51ea958337e5962e9bf9ba1377dd01e42fd6d9ad9e12af8e6aa91997d6c48dfaa227b55233476c0f01a929b919927ee0788b037ab7ea892491d11a41cd7aa687977d8ba055d72bc8594b93bf457064f5e529e344585fc909d774361b159c882ac3fdb95931178d17a81fb4090e979b42418598e76e2ab798b5d2814baab15cbb42624d8d4ec74a932c46a49c72d478426ae91046b0cda5049d138a454690f933d1f1a152e7b6d169a7112f1561c51144674e4aae439dbcc6e8a3c1438c2f631432eb441d7de7321fba481ae3ebe188414d3043ccb5e15c9e4de2651683e6c82c6b60cfb6f045b59e30d553c44523f5b7295d30c58c88880b7311977b845e8a6b0198c915212ea52d9b52579846f874ea60f93c8cd47d6e8e935741537addec94cc9b8923f28fb75d6b0ea9763553fa2803cce1728b4f94e13b1372c8cc71372999523b7c94fa5645449600d4e70188d9a4749adf811ea5adae47fcd2c86353ae2ac1943e964ec9c20e2c79f3dfc22edc6c29f966e8b7f0521a77c03710e0034b7a01f401f07af2609d40b2d0208f886f8a875c835e95f4c1228c8deba20e231d80131547408addaf89a183b59f082410bd871baecdcc9f583a1c6babcbce34f27c83b534069004aa0b43a41e7265dd84a15f7ef533d74cc28a62c27ae03e253a34736bb00e1e63119432166b99b184eb074deba236c66acc42dc43f898e34441e77926b6c7a253d40919389c31be76bd2318014649e183f50be32c93e68f45655886e56d21fe8808a3cb112848570ae1ec17525823ba836a491031b688311edab28753bd15b8aeabae8ba0a9cf3dd85a18adad817e9c7dc99c2be88db40fa5548b788fdd68b09783582e5609b87d28ffac89303789ba0530d85db2dda2077a1da3881067cbe81ed981a80429a034a235f1fa8f4e5f68f473afcbbad4e17ae6f60cf961611c4efc876999e34aaa34c95ab10960a9f2b67bd9fb1d55e92c7dd3fc0c084a7da32b2c51b30f65839e2afbe8cf02ecbef0a386d25a8b52e751b83a5f69fc72bd6e94d497da73274eb0c91bfc8e0a3dc4a5e51828c56ee01fa0901a0c95f68ffb11512bb06bc2f74ac71bda102104631559ffc05a66884839df1f6592e24778d9fe355d894b0674203ae483594b19d119075a4eb6faca561de003d9d51977c0816d720f43f3cd56ec7b1d9c64cc9b67e8af5f53a974f40fa9486308a02428aa072c7fa552401a2bff66add0565bbf2df2893f9e6f7e8d7af7cea05747b737433cbca1884a23dead30d0f8662fdf1961155d7981e9dce6a46f315a7ed2e7bba32a6fb235e50b8849e57777cfb58c697e05ed1b46c4abb87e0b3639a3175580252fc06e6350bf95f534bf2f1d755f1c2236b3317ba1abaea214bddaea9ff8cd81ec8e0f9acca2b0d2652d366e8eb8793699cccbc132c84ca8ea3ebfd0a61bc872d7a9f7e1e6fe9d160ae348165e83854d159bc465c95d3b60b458d7e03f18520501b2c28efc31a1f256ce4b2f3960037d1a17a96581ac391ab3ea82049abeb856d054e182d1f9481072782d834c12c00fc75c36635da645d7720fc4f1aeba0892335e675d1248f25297b5dbdab84be6e9b2de5b5b395572b9b1bb1cd2d613d03f2b885cc8fab27dc6677b3c1e57d70d300a867415c61f9785c6552c5489d6c845b68b0c6ae78137e8bf500d0bd7bc41187ae9577d6e472f58f28d202e08dfad678451e75b706280a1de8d3d5ec69675eaa37e15bc67465b1fb93d87c40d90a9573979164c57dcbabb5adb146c9efc49514f175ee48036411d883af5f2c13bd9917bd51edc55602482d74fb5499506d0b8812accd632b1402bc3f2f7561aab9d0ee8af4a1ef9e3e54d4ab184bb0acddf547b6424f0b9a9b4fd729843169017f406ddf5ae0c68f09e62b65feaa738da601a8bf2890a490b610b687ead94de8d2c4df620f7464b10b8fef9a38ebcab9efea3857863fb68c349b3c1344edecfed4342237289708b27da7d80db5e316137d19500b9287eed89cc033f3ed81b8030ca7faa8be49b94c0a8ba8d50893851b866d14a3a8474ed8c77203d3e4ace95d6b9153a2f7b29c31560ef8f4eb34f3817859fdd3e2bc3eaa4d13a1140436a1f3533227d8cf686eed95e090e6921ef6ca98fffad0638a3e44bb158c08234aa73d4140f074a24feb91bb628b690eee80e59bc1ffef4977c9fef3eb7772e5c5ac3feed190cd5ba9f14f5e086f9c7b2124f5b1cf43d228e748327009adefa156d3e63fd94ad5f2fed046dd93c01fea9bf4a666aca3fadc8756f1cb61940d89eae2457f0578bd275c0cafa951ecea7bf3afdf01e61e245d1001e11eb7d386e2eac33a2cab17520e2932d38ae653f66e1f3548e220fb49aaa6faf18d61e7753cffbfeb213884b61668ca87129abd5d89cea8d1d36bac030ee36eacb157ed1a85cb40df2aad72c1335f4c164aff56dbd5c8081c5da08d976ffcaf5bce07aae073b223129d9933f4c147b697f5dee5a1adc4ecf5372dd747a8269b6b1e7a7bfeddac18ea1bed4b3194db50c24ec5d7bad4c0f5d65f250894f8f1c8573610d6e89bb868d6841280d11fd17ccda3fc6d890ade6777c8fad7d08ae3dd87fdaaeb5b5379d72afe7fcd1ac3da05bfb2d053ca29b76aaf686abc2e6603edf74a77d8d887de85f7dd3b4dfd316a3bd727e5d5521ed9b22caf347c08e668fbbb1ede67f6f03cfbfd4049a57d0a84e37feb392f3f1eced80d77f5f6ff84729b5f686e90668a409e0dea57d0b0148822936100d511ed1d1140e3140f9a4afbb3a3480046136cf1444d72fcdb5eb7126074485a3ef3db3f9dc895c2c777e175605de917f1ebbab0bfd0e53c923cd7f68584dcc21f1732f0d4f2ec14e062cf33305636c7b8c6585419b89a6640491ce87e2621708e8e0aebf8fa50bf064cd8e02dbcd17222980dc5ffd167b19ece7379637067a1bc6a22a82498631b7db5484c16b3ae83217826154744eac29cebeadd6dfdb75dd5efcf1a2bbc14fa2a64e3649e0da6ff1976aeb8a32191cd514b3a6ca01cb684f57813ceeba9fa6959dc700c49ab54a3b973eb2726cfc0607f2f495b766d76c671bb74c5af925b6e79c60b1fa2a42f825a361de1020f9546ad18806bd95e6d6ce191d7331d7995adc1a66cf99af3a8605ac5f5e8a037dd5a83be4370a47b45bf78659ceadeb5c2bedc76a3f680385b24ce0fb0373e0c79a4b6c4f2c372764272ee642462282428f9da1d5aa84c629b78f2557a2b70b9fe10e7e6c7832d6e96adf9d93a7aabde2ff5289c832cd57f4bdbe3aa140db531d4a447b236604194c732f82190735e8bf29cc7309549b6c860e485aca3cf6a77bde7588e22aef95a4be28369de0c7b472a2829bb711b3edaad0384d4f66d3f62b3f487b779b0d88ab04f17c274d4d2430945ec9e6b7bd6e6302ff6f2dc22866f3fd89e9f2bf151baf21a7afe7b5acd9f325584d22040fbcfaf7769bd885ae5bf10f7c15ee7cf9639af66165ba0ce52e0438fbba889bc41dd2c85dd5b76809ce921fc63eb3a78d10426c0b8afe6e4d75e8655646f8428953b629efeb08e33460733ad2ac7bc561e22db0731d29f72f1a7a5fd99aec3a2441ff23d107cbc9c58aa0f1348607aa6a443463ca8ace7e799a8649e53ada016bcd4790c9f748a64bc9b29252d7c4cccd2e929755994c4723071a14c9ce35c0c464158dc4a1c58a74b62c545310ba1232376ecab345d0571644468e0777555da195f73ed644f0f9d377c790eeb0a2ee5cfe3fdaead58b391fde87dce2fef68e06b502f748de535776b6293f713dba79cf5d4e7cdeb17f15033766274198f50479291e73e7e7e115ed24476e2ab9e8c28f59e5787aaad8be119e5a2dee98d575fde4138e2941c9c2a8328172fb6b0173b7b0335129cba1552edb846f96694138261db1b3918e66b40581bc8fd6371e6fe2f9df8706be076468ad103b20f3195be7ce34e874d97fdb678bd68cbbc13b6d2e5089750388958298ce6d390bcf12526735f9b69414c09cf9643a930ae42834dc038bf4b2d67a7de5419ca0b14becb00e783f8c918b9e97d8c7cce22eb6337f1ce3b042aabf679d791739512a1fcab7be1ecfe37c23392221aef5775ca6111bea9449299a6b28dbac4355dab95b9490c8fabd1f5dd8ba48c40f001d26ac14bbc63af898cdec11c6fa97a27acb170ccac556fe7c986e005a878b0650be7e43ff0d40a8c2c91c8171e93174cc35e8f83a782e51690464b15b043aee8e251a9f5e9e174f2f4ba69be33ba174582504d8e94c46949333e40bd70456655954234978b45bbd33bb4ff790614ee88b0b96bf434f01ba89113ef82927d6c54efaa5ceddcafe6264d4b21df1c7d0234ea9b81ade9b8ac876294f7ec5b5ca2005ff4f7f9113ddb261b838729a16414823b85100be6cd4f4d47d55388747aa761b28f6fa7479322a910d9cb0d6d8bce72dc927928944162bb62ba3ed0713a72989933cafbdfc58f2b9d884f9f13085d08d88724c153770c2db82e6ac310c380bab001cf4f6b4c185aa702087f4596c554673a00eedba458b8000c1a94dc3e39d9fbd94b5826c80c013356fe5419c3417b2488a67b1fd63807311e395d8ba4a6457aec297593d0c46af5011c13a62b6f66e7067126a0009e846da027398e745e7f39431001aa70f14977d60f687fa4c1ecc465395c9209c6b1ed7a57c958a77223cf2436ca7dfdc69de59bdb7a8e886486675d357bd11e08169043e757109b52e71f5065bec368e9afc292ca3db1e727b5294a145448f5089f06a0ea6c8238bd717cb81f01024a7f5cd3a8a91e4feb36c8ef601f91e2eb456cfa016fb3d7ff96f0d6261bd488a9ab7741423725b23844418e6cc98e9ce9cbb18e255b831891af2775192e8847a55d26565e08002d562419c258f0427456bf7f63093315b505ef6a9e7463cb64d80679661e77d8b79004c346344f76bc574f68c3907d952d508b2c2d281a0c9412ab8d2fcff66e5904087ff1aa8c92bdce8647ecb88780805117b63b68a134b152d6ae5dd052b306c657bcfba1b42a94b46344cb9a465a5c722fe3d9d0aa78ef99dfc84c2d1c205e7a1b58d2f2407f51f0fcdaa9c12487e50fbc24491e709e1e3b3723a90ebbf328b25ae4164805126ec2012643590c6d441d8ce978f063981520cc78ae69823396ee065a89a64daa0e37019832ff384ef5e0ad05aacaf5d0fc9ab078efdb65a710588c35f38c8d62771d6452643e504691251a51df6145dd87bcf04a325c84c47958798ae5bdcc6624c719aaf109b826190b9068b9b5ee32e14b8cd2ed181a2ba2452c00682a026dcaa022715b825944110f630c67a36167fa087d36ff351924cec2b59106b321f48e602f9a556519b7a055cfaed23928f14e389be2c35947405cca4b78df8594189210e0ff60353254815392242188b73031cebfe4534b5fbabf5a69d1372e4fb66c5f749c286353520cba0251e3195e9f3ad88ef392928e2eecc441801d9b9a84c2ace60969958b1133685173107cfdcc9ea1fb1013abf128bea4b1fe0a37ff14f75e0b270b65cc19c2d71604dc08c675c336fff3bf4db70cde933a6fde791fa161e89c44015127e4c0a13b9cfdb1398948d1554fd4d4620d16947955a344d219dd14f57cfef12d927af64097826c032603d9d25e4758ff80bc6bfd7ba271d02587accd4644d85d1615b9557031d1345cc8db054a17e7341f4d8eea2e71acf93ceb3062289a100bde1dd90519273b5b39926f8c45d17848ae475bf9c371e391241a2250502a5bb98155b0fbe12f44cb62eb5240cfffd1d2bfab19888a931c9da223efc3601a461ff75e798494feb5c618880946034a766f73588a740e28773ec3ccf44581079e627e098fa006bc287d03d947118d0f56c885963e5910a0e7dc418885ece0aaac0efdcde820a70508265d40671fec15a74b374dfbe2f2ae2894e63e50eb3d7d4fd0143392a1cce41f34288bdf06ccf2bfe1dd616fff6668de31a8c28fa7e06c7ab6afc706c96b28162a0dca6ac089baa5ca9b966eb0ea168677f8a489c4ba0cf520474fca17d6c30b2e9b66486fb86bdb92ec9d456e6a5a1202bec09aab0bc41a4f528c551ca096db3153b6b194f1bff8c03b7d6e9bdffe213106a1803db948142349467e6cfd97919884588de61677e2a3a3ae7baaf2e25d86b40fdc7823c9d3cda4408ef5e8e491f4c84203e60ef46ebb569d3de91cb4797ba3a54b9e127cbd6f3e709c25717498f18fa9055cc3de500b1d4e59db77934375a2335b5d838760577ef2741e5a6276ae2352138c5bee0eeb677425cadc17e3115982e68eb345611525d63874c407dcfa92eca3dd7718685693da638b9273bd851a340a0aa381d288ab5b766071d4827b053e1bc61f3fc348564c179b0077f1f36da957d12a29767f74cab082929705dcac2167ad28ed4d8085ab6bb2288a9546809041db73cdf22dbbaaca86c43478490a117d51aa9c5a80254e4cfc2ab15dd0aa7fb287a7d5f85e0fdc67767ef4e2d903b9fef2c64f1b830a875f0fbeef6ed02f523578ea7ef43ac9ce882bd0e80bf59c6fa9482c5ee06cb5381366255effb1616f502bd57bf2c20b4c9500b84a2ae03a123fee7dd76073be43d87765b1c6dda2208150a1e8210b385ac857381485a9b2f8c6b02efdf6b6253e06bda913125836a474448ebd505b9a0d49d0ab4eb1e6cb072bf15e2638e6fd86b01fa7bb96f9268211718d46822aef3eb1cd415827fa7bff37464d7f7c39c3d484002d5ce53da9c37abee4ce89c82e7c4c43d05aecefd0ff891b50cec83af209cc5ea6b87461c36683fc68918004242becb8a2eb0195b3d4cbda79c79d54c8522897e2a1d4eb7f553ec40556e68c5dcf25fa93de54b0f19643d1bef7310d5bde5895f04498e35b83933edad3f6ab53ae6d8ac901809894bfadb46d2096ff5358cebdf50d7871a3bd470ca34dd28ccb40da26d5d2d6a0577df5d48571ebd6eafbda11445392c8a4861b71440afb4971aea1be1074eccbb99cd0fa38ce2ad4061564bc7d028efc23dc80e1628f4889f2e638feebd39cf2938bcb3463a638d218661b0ae97c6e84e642e4769016a4b08335cac2331f3c2728922c885ce7946f8b97e75bf2f52b81e4cfa3aff76d0c66ecae70b0f53a9063a11eab6b5888d1de08ed9a30283be6cafe652e1193ed40a513379f53d5f2928541c80ea7cb313d9efd46c7ce231bd6da3cd9b4a7c24f09c1cfbd7f7cc6e2abf8f0d3b36341eeabf4f435ea607c9fce5aad1113d3c542cddea8237610e74f2f83deadf17f96f202ebda237bcea2704a62a374bcf1d84d41a419ead04a42d0b022500e2ad63a8189b3bea28371946b7fe33671061ccc3c982b2c47dd12794499204ba26d07cbffbaecdcd8f0115942e21040da8407b02dd00d258b23870c727ca9794030c98d65f551d7a0108ee9f5075e8ffe6b8947550a1aec1768c90dd4e9b381625fa12b3b8f2e8ac4e18d8ae69d869904ec9ccde7895b9b171b4c4bb2c56abc00d52f9b725943e0ee0c788b2b265447485bbd94b4a934a2e3c3cdbf7d0484517081b009568a5ac2144597e140fa26972e680c2b6b9301b7177661de008a2f7f756f47441ad566bc33b6672208cda1add9fcf8f46a834fa964b67b9742fcbd965b5ddb02c1771673e0b7e1ba40aea2184a351b130759be1f57dd605e6bd53e1e95060743aaa3c11bba9ee5d05d12a7b7085497d008168ec4f835f825b03bc9e45aa7ca6885fa517b7efe3e26b2a644ffe2d72f7d283d1b4c524f8b0c4358f5e7a16a9f1fc2a8d22e5f334c6785a601e6b28b88f2750c104297a545b18ad0c1040fa5ce2d06d33e482583322fc37e4a81252d1ee45a474ae68492ac4e38ca0975b64e8215a9acb5d7a6ce45404bc781e3d9d4dc126c6eabca22fef4b6b710a271be84972efe1285d60e7ae5bcd734c41612665b87dd5958ff3a2a8fad78843ff3d0127bccfcba36c817b53e1a633cce3da6c2833a88353d921634908dbbf653ae2965c6da9bd76552e6a08cfa4a549f1ed4c44d5e5e8ff3cac436b11524e855973888f8958b0220b9bf6aca32ebf94590626e82725f952e29f6d32262cc998be88e65eb43076e2ce5ce2ae5c3bb7a5c348328896a111e43dc55ab837ef7a4b94d574aa70b56eb4e13b8bb0ae608dd9435b550f6f89e28fdec1a8e9f5825b0fc5be119ad69eb759976cebc6ea27387a45a044825b0879a54de729f7988c8bcc23a3f9767c06f7e5d76be852572b1cd79531071c55ea742ef21bbae3d4a9515172fb30758d090482d05b357aa90886f5fa85a92f65e375b38e0c202f415261ea68e85dd4e857a4929d1b3372c5dfc30a314cfd62c7f31ee0c8adeabbebff9e3373d2f02fb05cbb5d50e63413e05353931d1d258ada35e1cb32d3fbc48ee81dda714a5b48efa39924542f4f3380789159a61307d8c15c4de696f86517a7e2fbc2ea15cbde86ea6ca8bfab603b38d885306942f672bc57bf9a64fb7f460403a1911c3ed9f780a8168a80709b3c9644966f46979f579e3579835bbe955ac184119b1c171f1b402f75cfd518ad14e482641d00609fc975a8ae747cdcfff5c3195f3f1a2d80fcc6af66d41469228b84bbdb20211f3c8a47fd54a5bb31ea385d5d8f5f33f517628c9064ccc7247590e69720d6e10b00171779a91a6a7fe58717858445dedaba3a99da217b8383f381d447f9afc93367e75565c93a8232f8ec94598388e3f383467b5ed807cd91dde78c7f350e760d615600923a6ed72a5cb02720a341b0a55440a13712f3b408d7024de7cd8132ba9bf73eee95b4b017d9499c16680a865e8cc4b299500c20ba8d07c4a81918862b25e589fe74f27bfdb57505c7fe6d47c05a06924b80e979165c27ade4ba5e19186bf95bb63b741f466994bf64aba9c42b306ac2d02417a12e9d3969cd9170c9bdaef453d269df27bc3fe544b894e81cc1e27cdc596e7292d74da5ab32239ec1a64b0b112ee9c833ce5087d2ade635e0e236491f4c47885d23f5cb9e3dae114017c0e03fd2ca2b5d2261e114c89dec295558959d97bd9de8b5de08f5ee91fcc5fc7e185e4ceb99d872a0ad38d95903d49db23aa315455fb4ee4686211770e8161380c4ede979c2e9a24e4ab0fc8f5d4fa2d3d9fbd5439bc26287c1ba258bd7a11040e6e0f4dee03ef199daedcf0c96ab71330d2b6f28cca2507412927b44b93ed098416cbc585070a50c14c066a14ff768a2af0707b3be12a274ec1651c36a4ade863516c9c89c938898954eeed2570ee436748be2864834e069766b936066d4048801f96189831b85cdece6dea552cf5eec0373be15638c568add39876f5b1c77063bfb40a0bab66a076e2a7a898261124c82d7511717230736410fa450a1fc51a2749334c1b3e19f7cc8ea6654a09b1fec964f13f31db6016a2a16552ecfcea9e6393920c0c63c3d672438e23fdf4c73fb012a5881d97df5605c94ea3b713291076861d3730381efa6396cea7062a15941652010a62caf58cd78607f648da58e9d8780a7d8ae2bd9b830f274c8a7b225815f9f1f398ef8c4a05c3b815048a0177aacef12dc079935ea8517050ca25d2e7737bd14b0d3914905afaefdeb055a69902b9f897881cc80b1dc54ab72334058b1cf2040d0607da54169307a76c7b05d964ffb5683508a1e6da2450915415c084c35a8a11632e4229b1af0fa5cf034f83173682a173c4fc7d568c5c136240079e7c1aee4d0755ede1e7a40aa3d4a91e67b20db1a30f067d3bc9a2adf833061d2947aa3ffa87b202d8a20a4a9d11e10e2e6e869d83c0fdc1451dcb5df46dc889be6c3d8e1ce2489c3a34fc9749abf606a8bad47d994c01405e186d9d0762542bc51b8912a45c293a10f37253a5678fbe7934c02f333c7f320549c8c4e391282fe5f57afa5799aee68e43daa84b7dfa032eea2142b79eca1b4ec9c1d38dbb1266353ad2a9d63ed2c5f8d6952406d22118de395f7746457f8ec1709947a44935bfe4097585a90b833fe621600f37fcfc1aa8eca6546f9b0a57858d37b3a05d7f2c06c0ab46e56430577e5c402b4aa811978486ec2085a41f3a76477c5a5535d510a767b5ec8e28610974527b40f39ed56f641e43c59ea3ad074fd0eaec461d6f98810902a6490aa2f19f0c77acafd011fbb0138ed928228b4805b9fd99de53c2e184b5a157d9fba05c308d77b3bef41d216faff5fe264e24228f8b6d54811ed2897b10bec42bd19c283b0944511dd6592bac2fad1ffea30934f04b9d77ba48a00705308eafc7ee85f91f81edb508e721d073c21e67248ca13c36e2cb3d5eea9d17d977ae3dd06ebdba00518138ad7e23ba22de6965d7990dc810f7401bb102eb07278a2701352d92e1ca701dd76243b60a64c50e6901f49096de7dc3e36d9ea99986c20f415b43b9c02e5d3a1f115c486bdea09081e83637e8be22a6d74f9c4b5855ef872186bb4001a9a8bb7b3064781c51c174e05561bc5b8cddd4a7487e30abdf9996741faaecd877c75c759ddacb84bc80196d4830a10cee8023e4df5d9d3f82251656c16b31edf24563ee5972405a300247d718df3e5762e1b0525a1ea651661a160b84d620be7033e35cb7d3cf842998c9b37e4815192f9f657bd53dcee4a725a31c47b8bc13d06bdd2b227b641bdc989b4c9c2a6f99172d6620beffc086dc29f07c290921792449fdfbe02c3f05147f49682519077afab778b2b7bf43cd2609331c67d9ce92c2f6e076dd6a6ec9a2fee051dd6d82a449bbe68002879dd2eb6efc62fc91088871e6410e821e5011ef9a618da22281ac286242ba34ca8296e3f37799a240b209b56c957faead6d9fc4de8826929ad8bd42574b2982d9cacb88b2aa48f6b72f2802311d08f222394bfd968d478d733ccf86026de37343c6534a52c5a48d2f1d7feefc2a78ca0f2002be8844999634295a4db4deca8bf174e54c83098bc5e4d0645df11c2fbc2db767ee97b2ff5e35186de47232da250a1faec5480559fb126f7c04a5c614cfe13970394a72b00c586e0fcf8134fef411a2f43fd81e99b20eb2f9a1a42af9df35c3595979e7506ee69df01f981b77f78595504ca63cb13e2baf865c0a03e8e5855c817d60fdb3d856afb7f3f98dac2f1b7f0c99937610a0fb88fb4fadfb4d24f14cf481734182284bb30c7324248126b39f20f41b9d83ba71baacd4e46fac06825b6686b37981a9e191fe95ed62bbde4f432123f315f14c3683a91cc1c804ad44c4464029112e49d8ab02536da431323bd50044b75b3504041d48769a57156c4bd48e688a884407c8c4c45dc561400b8caaad613338ac9d091275044a2c6862aee8268740a646bfc46bb1ea88d0074e2c0c3e7105b2c38b7aee610ed07ca9c03c28a63d31c54201e53684294a149e090ae22e8e65036bac9a385ffa9622b4f450e630d2871eb2d0aadbbcf44bf770d69443b70c5d871664afabf018294cbdc99b5639aaabe1772f36d0a0969033b198d6bbb2bad9bf70a74d955840dc159bbd61c6a11c0b9ba0490c614ae875e08940ece8fdfce72f6e0a4db581220214f2bee8a796f204b3b331969a1a812e18dbd4296f53d32d22615d92c1c5b977838973c9f9c42efca5abf876342753112c517f1d6410ba622332454a0a12b9b7d77255f85f2d7d121c78447aa9095cb0c45d4033b886383044aba40a441a451d582a9370f84046710c2e006d1e30927da15ec715103921f46bb2783c05aa5876e5645bbcfeaba94e2e2b845637d107bf062e1821bbe95c686e39355788a12ac44d2e1e6688d9c78a61a439f992855900799b6b9214ba36409e9971da757de4b706f46ea15dfdd6df09588fd189ff2810d849915b10bb7ca6194eb9c052489e4e8aa8f03e6ed6758a2aba37319f4f7b8f181207a6d493776fb2b5ffc0c8fccaf77921af004e6812a422fecd38aaf16c29368b1fc6f8d3eadec5ebcf3187e6dca83870ecf9e964454273560e1f92980e117c40da002d738b6365cfca7e7442713a04cc46e4dc2bf485830601df7e673270032dd04154dbdf086d5339dbfe391ae498e19d2cc762d48fd18294f844a4665100f92b8771699190cdbfeea868cafe1b500f99ba2365885027f8bb4b321664d9598e0af9a269f4c026050867d7bc9dfc9c3f3ac53bbc8d40e00885c41502c5866587a765c3c205cb8da472aab632bbb2601b81415a265afe842398de64fd32d9e2c5f3a94b04122b460caf400bf124fedfd057d722766911a191a32a4149853d393accada3799313e2c46bee868a379317755c36a4ee049b7316819f6897b603b627a393fd78d5dfe738c8e00d0c40a179463d0008bc61f0788d3fead4b15d862ab531246e1e1f401afa989d8ab6d36e7df1befaf51e29296ede257c46706ae195f5dfe57fb6ee08119ffe82f7a711d783bde74d8cb35b81195566b1118cc85ed0eed3553962920f8d0f3cd03844d2bf593698dceb05db36970a0e6e78b5e2a71b91265f9152c695372ff993aac4e985002715033e636a5d6a51862e19efd338789ec780fef39330476d1b456a2cd91cd6b6f999bd159848ab7ce1ee85c489559bb121a9db998b260960edfa059fa403bb17695a03aff98f310df0c2c411260bb36a5571dd95de4ef392408e09bc9d1ad0cecc75bae7f2af016f05733d2b75496277db540ddcafca8516a3cacb44b4251a27365c7ad75ada53e053b94a8f6354d9b24c1a04d15f58cd02588005370f8b562e0d445174aa8307dd4444121af28bbe40de07cbdacb187434c81a4fc2edcf4d8d486efa175eef32359aad51b87dbc5acec27cdae13040de3895874eeef0e8e99af9352e0c4ca938c651df84267c052163ade7aba51628f5dd45d580768c55df24405ca9fcfba640d5d0d5fbb6c5c169a47b716d71e4730617ca2989aaf4c5f28f86fa27f08adb8548fa7a66e6fa82ebacf690d77b6b19d410b52f59e72d4e32ec2a8cd582a0134199d0b31709be4236669c40a44050c39b0e6f80bd74ce2a8e06089f19b71741a5715cb52d25fbc1c1410c88dbf8fda2ecc05e019d8e588e2ba690dfde56d2f9e17760d01e2d8d6203010daf734070398c2baa24537eda0868ab8adf298570ab9d0cd3ac7b973d3e81c81117a2d31b531039e329ac82a33271c098298ec6c1bb0997411709b09bd03a069eca640934c1ccd48bdb156c9bae202e211de85dbbfdb540822c7e76e270d12846eb1b005c8bece5fe1192f79eb6190f21c81c5ad13059ab28a5032638a233076990d94591f4a7066fbecaefac34c2a9fee0d03dc656465946ba8bf51359a740dd5170c1b1018a00d315b46f04701e301bbf6ab9b9fd1e20dcb7d90f2417014c2ff3435582aa03892d64f14fd3d23fae907396f0f53510c97baa0284de7ee542d57d06648cec94ab15d8918b1aba6b5f6c77fc06c6116d464d6cb57544ae694603a68f9439ce7c2baf89056ce595a45cc105ea7ce8b850f897d14b588be212aaeb140dd4d0331da04e33134e9437e3236be59175a7565459479025316e36e28bf28d1c3f1707542e2f29570cd4b0212343b717f5ed8f21c88489a897b411411fcfb6ba7b25cc121d6f27709adcbe364775bc45038d2598e14b8d49be92d21f376f4ca3c5d2cbfb99e87cc6978fb744c73465675b2349f1472791d843fc82dc64f98b9986cece4d5dcc628a4c4a087115d1ac3e0b4cf227aeb3da2363f8a2fd2aeeae19c8bbbc45581dbf982590ef29d0bac2994140e62e7ae49c1e4be990449531f1742f9fbfc43a21974adb984a9de46345b8a26b4bbbac3e3ae18d3afa3bbd0ceda474ef463ad1260c9d66b9d05fabcf8dd666286b6ece1e9184c31ebb689a8f28f6bcf2704df3894b776a0525c32d05f9ae71b7e004fae5b9dbfae7a3eecc3b885e73bb2c05ea2a9a0882d8535d534324d2dc5504e76ab402191ec719b52dea2dd4c5a63207f96b27e02ac4641c16cb815760326375f0d1380363419ade1aa3d34fd3547df10e8d5a51d9ef34192bc972a3654476c8e55fd93dd8c5af67ff3a0d8b9461a517a99f9208bd3f0c3878ed02e9cf4975d575554e91318c58bb9ba961151e8afb23493bfe695a89364f42d4c39bd87b0a46c25c4a5e33b1f78fbc4519eebabe730f8d493aaf976bcbff5a0ea9b35fa9b7e3d8a24295ccb79cd37bc479671e4a59bae144afd361cc431255f2403544af17db9d3a79cfbe212ca06a8bf1924511e6222e4e125c36c488414054966028c527b791da06413eaf59f25ac9a628708fa1d18f3ad164856631936b1e6241bbac2091b1603a13b48d13fc06a1c8c5aeefeea2fbacaef75c17702dfafe98ac9729a101f98b1bff5bbce772a6f6db336ff11b69b4cbd34142648fa26ff6665ac3ee1f58680d29451883260b4352e83646ea0e587d334ab601e5db37f694406d1ebbe72ad3769fd287dfa03ca14466d67b62df89a0ab393815700888a0b7c24cb6d328c296081aa675647123831601952d4e29ac9b03d9fdf8dc46fc332d35bdd253ad806087064111d6324755cc9bb7c947e3335110a911c3fa994e139286167d99f7bf96aaf0a3751086607b3ff45942182573ba518915ae2a0a610ab8d648ff9fb1e0be9d4824a6ea3da696feed4248eb333ce9984476597d385763b8a29edf005533204027d2b5aa786df65996c65720997e0cf57a1c2ff9e5048c17a530593312a5f0ef4e32d9a7e13867f386f7dfc61c7ca2827ce6844d63036683fa4c887c2bca915ebcb503b4f9a0a586fd3985cba4bae382418ae4d2fa5185ca70d104bed67d3f3847488e74ba3b11ed3a6de58ef31591b7d452c3d03fdee3e266c0c88bc1f53b5aad230f242c4fc7cc3fae6f02ca74cb011969d53e0ff215a350b70f3874a4b0eddd3509f0fb33a4c0d4ce344454cecf7fd3cf80b8c00d8187f89f9bbd54afcdfe3664126d23f142c2e9c40812a9e8ec4c648a05106759449fdcba547300e8015b82228642b99af58a6087e60df80ba6c298671202bc7f87a655e27b241c64406fb116272bfe16dee1cb93226ed236745832859af0896fa33f2884c5beae31e0ed736323f26a44372e92f316d6886c769a6602b7882871c362353975cedde39894f157c1b4db281b3701493127422e3809356af973085372218297863e7714f903b300a3ae97290bfa45a37440559d84c9901170983936bd38697598ee7fee56009319c14e5231219719adb298aa1d1c0ff58d22607cc5e82c37740ff18018765991202ef70b057b0c297692ac894550e0223a4bcbe6d39cd50da849d9890999b3834599e1388c3a2a50d5431885472ad583cc76ed1f56ea778b9d5e370e0e7431bb5be3548affffc387ae2418937664ce2dca5be99ad2d04ba7c38859de7be8018fbad7bc7700648b07f953288aec5936ab536224d6ba021bab06cd867df88d3f2f63fcd6fdcda7bea7cc10c16fd72d79b858f9caa05a13e710b379a4803ecf7af5eceb675fe204a55953e75175ca35b781a4aef646b7777f47c36103c9a927c20c1a302bf07100a3b00bac31e361c2c626f043258914d25b058aadf8589232ed79a148d209390779f5d2ff1e83b1c80935895a5d38c00d99c0220f10a7994b388a6b792164a97aeee047587db0c7680660d990a5d152c49e3ea1264a9fe3100b048a2da8fec5fcea5afe9b0a43e244c0f446a59a8cdfd06c2ad1be4bcab5d3ddbb1b61a280f916312f9bedb7f0bb840feac9c8bf9622eae894ac82757882382a63d4bd1ad8568de63ede863c886b5790954033a5488b2d029eaa9cf056d3f0978ca0863dd9d003816ecd6fe022ac2917c6c20bdd29632b87068cf0dec611182961ec3155538f464552ccb975c8d60eb59c3a32c8cafacb6d7fee4afd58cdeaaad0480c42b57d2da9c8e742b67c89e7a761ce120ea263f881d19d7e535eae118cd4993ddbadeaaf8f7c35c1f82c1487dd24211a68ff141cb676dc410d097e4706c0c8a4e46a74a29483a0a200a355e7010445cf6ab441b2b9834fe28ee81408ffc7620b3f845ea7ac330e73332b8aa1498d53d72f51eece6263e5bbfb796a12316a3eb472a39101c57e4ad8b5566b7502b6d846f4b276a4c826f12005bd167aa54424b1001a7eef6b77d5013d0fa1047e2539dd77738ab674eb47fea5073862aae2a40d67c09e0ce3ec62642cbc3d902a744353b7487475ba6e889e35a5cbd77fd1a569949ba449cce1de4e2d9dc8ce6b958c7d70c52ae17636d8594836b986fec1914a79e8addc432f429c53fe459a9c239347c64dd327dc17a01737aecf099bcac0be043efff02289e731e4065e3d9a848aa8409b6cd47fcffb77aae7ba0fc9c1f555078854592f9bf26befe1dd650e432bdaedb880d70d61869a53c97155dbe6321bd9f0b6619cd7f110588e0b2c7e79a925c82ce848dd0b49b4544a50773b18a1f070ae296271618a2ba828466a083905860c00582f5770bcb136d8a0647517d2e5a7dd286ef7f967ec281ea5695cb5d0f48412cf30a901d2729271632c7d7fa2ca2cc5606c538e5cb6c6cf006ec9c1f6e892f13d6fb98ae779c7e3411d96266e13cff369febaf587902c1fd5e1b671969d791bcae327fb3872d4738cfd51b4e5cf27f0cee58a030b56706ccb2d708ae153afee92d94362d7d53e459fccfc7d3c58a176c6ecdd3dae185f005c88a3aecde0e467237b79021fe141552dc4f4ee90ac493a644d6ca575c43961f5a6443bfa53d7d9c612725e8fbedc9fd27daf6edfd77f06413a59b59d8583afb3ab0c4919767e17e928c9692b6d1327df634b8c206bbeab4a4090fbb48d4d88ee7214e24edb688dde8b91be52d57de421909275ea40a7c859ac6eceb685582a7e23561c7457b4feb40be42dbf611fd38f5d0283f3e620d02a82d940e13d22e642139d90639b27d7fa3e5e8103d5c66f23377033c9f40bcd3e73e1fa526b7b69e5edb6a38f57aa1c1db02d968090ca094f247273e7d86b57b3087d42ab43a89e03638cb4e3dfc3a4a116294f2ef161602b70e8d88506b8c2f365393c5b5d2bc1f7fbe44ec930cb1c4cddfebb2c08ea17d1959394e16311f9353919daecf3fd2006af3514c50de7e201fa11f1bb65c962340649035a7536a422b9ae6a8942c7979552d62ef50d1736588bec497fa9750346831857151a47d4eef9c205e87909bfd50ae15a6b88188ecbdf64828a42c7ac96f10eaa12b90971df8d9d45147d88a5f5776412b7540e0646056611fc91c297169ec8d3b387460a3530d8ed475dd9559fe546d1622dfab535f5da5afce69f86ae19000a459370aa3983d2dd7b533018fa441b528ec638131c39997e263238a9b7c4860ea5cfe83a874b23ccf34a06ff8af4cf45724c2043559e83134b37e024f2fe87ad5268cca2703e9270f81cd6b8f7423f10c9a1ce367b803851ac46f3bf10e8904a47b3333fb8f6721737d7a3f644cdfbe4bd134800d6f4932227926b9497e92bd63ec0ecb0c2252b19fbc3feb2a07353220256d7aaf97d1a6701d7cf50faea1ae49ed5724ad7ff33031389ee046ccc106ce40e0a6b8a20f4b0544749c6d43f2f0b58322442d5508e0d2289e9fad5400ceac39d323fae5b9b4404b52fa43a3113633ea89d44db9443270f90a400a58077a1e6763393c87918f71748e1b1ad73f6a7c8ff4ca59b8f259d42c2b7bd228be3914423689127c9a3976505f1a5e25232edaa472835806a8ceb9eec1c3bc41b03ea1ffa0577c4b5d0aa451b80701f5a2e7c69bfdd08ae6a7c3adefa8b3cc24776d14d01d805dca0365d7011b4ebf531842b7261db0010e45a13d94fb1c4fe089a002dca1851158a78d4c7d982e1adce491ef31125b77926beac0652d4954c3fc04e852670397de8f8dfddec51f24c85084c84746fe6ffc8e180b8af3c36e12ee0294dc6e72e5dea4f98f566665208be79cc3b0a5edd72d14fce6b799b51d17a1c3f4a67e663e93d9a4ba882d5687832fd351cfef09103028aeb1b71c7a6a634ec26e9c0831584fd7228e4d2264cb61f409ce5d69dacc1ce444de71b48fae51e538fc674d0531e27409909414f8e13dd6dba86f80471beca5d95f18700c4f0aac5de5955a89a8b22ec487af00bda1d9146ea0b154b425521a568f7f9ed351520cf0f3f0415d1981d2d4b1e9e7154b5d3c3ccaa8f9c252878fb350692040d917c0b1ff24e9da4d4d60c2d647befee560124a04417e8cf7a2bf2e50b279f8420aeadc63bfca4480bbce41cf2949c00ff33d25d617d5451c76a7b1a7c9ed37ba500995982dce5c2c3fdc6d76a05ba7e244cf63703e90782a97c8af76dfac813d0431ca04118ed1ae99047e78e206ecaf868b473c83ebe1440dfce044ac03db8542d9d70cfb194841af361c57dfe7d7a6482382d4da67e77be970791b46c613ad117b42fdddf07b86537ef643a4a0d3a3a1b5b0a9a829ac1f811edd8e8c4fd9c1a10f800b675b4f63c981be4c424943c625797ac08bd215781a853940cb70275eb7c5efca929ac83d0ca7140684a9881f0bfa66f4c253289b1b6e5ae2fab87c3e6c582faad1c995e171ced570ce7ae1d6be4712a143c1482a7ad36348c10ec3b0f0480be9320943d93bee2feffd56d8d53c28124913b7c9ea9e265073ec02ec0e646d4faa6874e4784fd36775244d7a030804c678c2372814a4112a14be1a57ae05d020986f357d2377ee9294701bb2cc459ee7957a430be3d77c06836b1b169b4413515bd693d803c8f95e5cb9fe94a477e928a19ef7521dff867a81458d2c91001abf574752c1662272fe8463ff1861dd1500a49a2b158f9f3b5ea25387c5aeeee83151062423ddb300d463ed2569870a0dcb42afe7e21faf717ef02fa6cba4e2768b5dfd703f83e640aeff2b5e01ea3dea85fda5b7d8afe145ec5133610db71e7e69e6c8a211baac7f6a0f112372b43970469342b8a541749013c4c115739c93a103dc1a6d7dde65c0acc7b4e73a47eab8c109c68d1aba2d8500d5f91b45347a3c9840ef6d99f981a53fb6cef1ee52cab8554ab5fa8409c3abf56751ad49d26ca08b82e0d115ed38a656240f6da9711279af8bba132e9dcd28d03e5b3c0404bfc6db4db6d0eafc2ed4887b161d2098e6099389f77b94578102d3c2f1fe79dcace5566e559ba7ca84a6ecc3af8fff12d5c29fc8b46d8e3af98e653c781a091c32d4524a571984b1325619d70a84e720ee4b11eb1808667fdcd358f695834643a3f52c8869cefd5e9932f33ad56a5d71dfd4277f90de1a8a58279f6a7af3d74c7e1b06e06d53c30d5daa6b825c6b280d3bcf93ff4376353c40d3c55e300b4f59d4c85348767394f574a51bf5c9ddec1d49bb4ff08f3c30c1a6d28df01b7824921525cf56dcb0837647e224dcadf8881dab34c94bbfaf060952ad276d9fbb94809f4e77ef355b3cb86d78f9d4255d9badc7f29a4077f0b448b310cdbbb41d41f0656755119bd85d725a6bc6d5ce8193c44bd5043c6af11f34094e2da88a463c2e63a6e571b8a885d8fd1384019fdebdd81bc8ef09d95c0b9455963e5f7f7759b46946c1b479aeb89a66ab5ab760c6f3aeb080e20d7e82c3ff37165fd1606a469e690f1798173e896f2535126ba4c104f215b349adbd180c90eed24ef1a077a9361f46870a30ddd633bec0207a32d27e1d4c2494e8a59540f514ae695c1b8fe1c379b9c200cf90aa2f8d28a0ffb027b654bc9add6651b8ae3c15e64bf1297d10dfd1d5adad693919001607eafb8d5daabf6142f41c2bb0d869ced9daab6b47995ec40174da8772fbcff75ec90b3defd348809e6a9b1914ad11110810d96c331b34b36a29e9ec9d927140832e0b2cf66e826eafff582e690ee3092bc4e0d1472a9625e3d185e9da6032a21e72535d28b5d2f55885a345c72965ae73ab40c458d04585b1b5af686adbeb05146c3c223c14c9dcf1ec7077b289d7e90053d53a88a5d84519962ac5bf7655f767cd7eace3bf0353b14b0f068454661c006ec938289a769966221e2fd600a54003636c3fab8c05e68e828392240d70b17f5641def0d8b73f1214db603039a1750a188ccdc461981b55e6be98d372920607ebe438f64a19207f0286cfd9781c8a71e543e4a2d0166c8e42d543edb9dc83e9dba132237a8c7c6380925d64e4ffc874cd2851ea85794aa77d20007338b66b29a1d0d2633ac57fadd5974656f7fe55a462750594e2a4297fd8324887b214f9136f0be544f86cec272e3ceeb75d4a0a92e27b1a27aa72daff8b55e4692a1ce40db3976a46d07c918b809c53f16b060e7f44b969557c49ce2ca0bb5e1e5b9f91e96ac1fa1c97a32f33dfea3e6262ec2a1742d389a784945350317a74defb1b7826de84cc8e0597606f383c1201012c5f31e935898798ca7bd0ecfb0a49468daf1469d18724515ad3493a0c10884920a020719d15a94a26fbea9053f53261391e026c73b87eef015187b96c9b538e39f0368fd7de2c7e4bb63211493106c66d67c10962dc035cfb2c1d42cf3fd1aaf4414c2798d1d2e5038d9a2ab91a05f165e50b2c92cb435bc59e22bb972893219ceaa70ab1f522ab8a1162567e243c64cf79c33496daa7cf9d86790f23ceef16ee5b51d7ee39ee99a399e6ec2278652c411fc0df31f75c1ef0b866923a230c4ab2ea5751c3cd49e88e5098d8ad0c224a646458766ac8c754520888599d486395b9327c546420979ec91ddc5f358dc8c24973c30cf2ef57fb7755d00dbf2a8bf701be57323dd91738afdb20c020a7ca0d1594c10067be0ddb4fe01c806508dd4ebc13f5dc3b4fed45581bff67ce1ca40d8181a6db58b47b7fe19c0d0b0ad3165c080aa4e4fa8d8cc95151fc7b8ffa2284d5dbaef877e1042a05a7ef345c8a70d4316b202e2fffbba789801cfe9c3ef6abca7f154845d8af5a98c8d930be8d8da9907f0e7785c72f76b44efe035532d4401f6b6a4c81dc5823802a04162f39600e9982436a6daa2507ef5769e92a0c6ae2ab8c464f215b79ea609b1c72bd1325e8bbb4a33db88b091b3ac951b8d62290a48587b037fb83e1aabcfc4115b4117ad82a69366cfb834b4ab576f16acbb18fbb8e2a0bfb413fd07a5f0b474f3fc8bbfc603e2b2b683c20fb20bb2894c46be1f539c96a84133644a9b31427a9e60de65fef7605d477050676b53dee83b5e94af841649704b4bbca31d9d6836bf97af983cf20b35b7b4fc1a65893076a9a1c9b669553f1ac11a2c447051009d8c258e7a16974b95fb2f5cbafd42c7654b07f59ebd282d05c74ebe105e13c260bc98bda186c3e4af7eacd07f2a19683059fb90045ed079cc8d4cb9cb1bca193aa54588067a8d145f1a2c3cf93890b041897f414baade0898be2b121647dfdcfa10d3617e887c653be31328df6336a49d5fb4ed9a2d307df60d00114bb611b61711b352d5d4397166f71e0cb57cd44994eb225b4af64b80d4e44bbd7b9455825532f381b33f38848d44d5e99bf66bc560c1fd9fb235230f7fa1d1ece9928bf112c8b381e40fb1039c853f5ff3f43b8e8b4c3a8325263696fd529c2d70bd6491bc9632776e420e042412da03636224bf45b3cd6eb391ca2448f73b8aa8265aff09e7a8b5521875d850cc2cd16cde569c712ec0b2b73ff255421a7faff0c08af7413ed16de9aef9ba87cb83acac47fba163c0ce35eee6c38835d91773ec94d499056ab31a170e77bb15846742309b45203bbf6c71cfb25d73c22d3f89f15b4074b18c718be8a40f391d0f255b6584eaf0cb2d441b751f5816740232fa5aca0742dab364e49aee7e1127ef53ea88713d6ca607334a112a9ac08a1ae5e0a781720e5d702bdd3ea5309ef3f149e485b98f5eaee4117eb8f04215fbbc148b1794c79d3f53465e2d75e46087c2c8092ac48c8e21550ca90bfb1bc2d20a95a9906026da4069c7b4cf20350e1365d89e100dfc86e4e83fcaaf9b8da9339c140dc28cdf59f096dfabf26ffa46d29659cc09840c16521dbf4f97a124f48c8209be98a56171ae63bc9647087aa8a5863480b53e8e76d3b438d578eeccf604319de640f5474283d3602ed0aed5bb2224023bed13b0ae29d413f8e3732c09c3e5b56f621ea1fa95a758c93f7813356df7091420d8800326e9f2688775cb21b2c688c2a1f8164defa5c41066840ce64ac2cd80c532dfe1e5e3373d57cecfbbc6787d15cc8516b2d25c84f8928ba0b8badce08035ad87a2e1bd3b1655b22d482bc08c61b369ba618e984565a60cd56c3e83bf22e8161b19859b3a8a3c24840eb8206c64c358c3efaa8394ce8369682bbf99494e968855670d5518eac04a1a32262df3e6768827ae95630a7e0c457e1eaf350c29a0bb44d0b62ae081f3a20d45e5fafa6ac246f1921bf91e9496293261be16bf7a3b75a9caf4e2b391cf57d170fc241001bb8b00e48be0c95b2e71b3a8e48a48769db048da1f97ac09491f8da0826c6e0cde4b6cf6237d68a2ff15c9168ed5189ba14d0b9ef98b2e0a25359352f6b61a92c89af553b15d416251bc6e1148822a6bd78c1a6aac1816ea3377495bd260ea89295814ceace8515e601dc908e77c55041758a191826e4d76b583206df6416870d778c19c94eaa8a2812ab6799fa51f022469d0a87aee2166394ab6c95e32e46dcab4216c977ba9adde111b2a07c7d1bebdf3fcf2323592e02f5c9599d744e61418b803e75509b11abbab545109bc25e127105d78d722711c97f40cfd576a807af4aa27dc97aba35f83cf1d641ce0bdc95a061b2aac56682014461eeb2b3c421c173fef3f6b9fba191506a8f2487a1df4eef91749f50989f051e68a6dc41edf3f4d9dae25e89a5f6f091c9801d4e9a023f31c908248e190d984a9b56680927924d9c79bb7abfb9c89dcaff4f55ca603558b6e4f9870d7ac5b30fda425c89a06a23984688d8aa6c105feb2bdc9d67bc01a26f098b4bb124c1c116e8718020bcba906461f2b012718124a0fe506ac041c49a298b2042f68dfbb7d4b7a1d6254ff457aacd03785f287ecda6d5924a5621ffa3ccc5d52e57021d9703a52f0ff04a7ff8a6950364710e73c80186772f86e8ab35cb70f1fad0b83b903568555e5bf8f03a908c49960d85551753bb64d6e761e1d24677d196f1610a3d5990bea547a1bbd85afbc1a9df5522b71ed2ae51564aa5955c69962282f15daf60ed33d687261089ff7834dc73db8269d5d40c8faf4268e7e2eaa24d69d18d22e1fc8efa69cfa397bc56931d22b47d64f6ffd4518104f8b8aaf44c610e807dd2769c71cdcc21db5b259c5a46627b943adecfd2eb25190fc3c8a5186f22dfa9faf368a8e0fadd6f6960241e1c855d4ffc53f8d7bc4327a23971c00e29065d3d3a4b0fdd25885a29934e0f062997acdbe63c77d9fb1024a9f79537a9135bac680508366a749e9bba9eba4e1c710aba2818a420e013d479115ca42004bab18991efa8ee3e251f6d474a874fb1243645624926a3dca36427d63432829ad74d5bc245c8e17fa57865f9fd68923de50052a37d22c764ba4199ab5726e509c04c098352f52f2f71424c787c01178a04c39803ed11fe2b6dc6b160117c15a0bcbde85aed86df71895bd37e8b01af20f7cedc60235a0d411f028ce215fa21b1ff433fcabb35237abfee7ddc054ad7f3718cfb8c97cd7d047d6641b3b5e0ff28850ead62f819484e158456cf014808145264580cd3982bb52ca82537676f4cf5d04a9aa0223bde5cabe7d79f4bf58873c7109ceae182c638533dce50c000b468f5ecd9c6b849f55811fcb4838ef016da306207e01fe2c2f480645eb982924d11f864ae804854ee9bffdf8173f210ddf7fdb595518ba3f0e98214d4001164e4e679e7827782ee236615b6d206b3daf74caee16e4059176b0be2f37f410f9ad8d86192b6b9e19e5e3d1ad1ab55b3693bc208e7dd5550ece3c3744cce7e570c66a8db77703c26b281c55b2d1b5ddd6e7b7c84b944932c9539b61e2c075f3ebff253ceba55c26882fb6b2ee504b283347299d5789da4fed70916becebac006be0b4956feb459785c1c760629674f97f52ef7728694a188b5a7bf007582e7f032f2746254aafb8fa2dc9444f4694ff225439193e485cbe26de2f9980f6ee3e8b8d65054b7aa87551d57df3ba8d5ca63b41fafdac66f26de7c67255234de4a764a3f5de8e522ce23e879f1f383c18542def793c4871d4f014ec69227e8a2cc53d617f730c4727e699dd51d49ffc57ef2bcd1bded4bfb4ad781585c45e3a9530c1bc42dd7917f43c4bdfe7a5efba2a2561a7d2fbc29b902bbe998c8262a4a1b2d07d6a1a2e58714e83011d97fd036c8d8d5f1a770c112efe3ea086e72dc14dc219b1c74ea2ca447b4230bf7bcea40c5bc7b9780a8b39ee46e45437dfeda081ad7c8d35cf77a99b1bf63ee6bf8c2bc5f71f386180384a7ae200fe986d8963333b286e2c2bc73f099308ae7acb4dea5dc6243f18a0c9b6bb0933855deb4e847318867d06e377c6d01031851b2f780735a7c10fadf0c2f44baf6f1045c1e1b8743f438aea4f2b060e366e202b3f1f02a97192095b8747a1bdc560421f8a196cb8a09bc757683bf9a82f03b61198e56e63f427a5b51b15b4a3cc5fc4fbad75eab2f68944985008766990bce8782efc541c5589a266047de4b3951471b55bd1676846eddebcaecdce2b7fea7f20a69e1cf75b425f43d9abd780debc42e4c16943b5d019cd65947005adf02afd4e34e4c16952afcda6696729f90108fcff7dd804ef50ef1b8c9c9d4791649b8e53a188690471e4400d3b7d8dff40e5cb18a5a260057284bfce8572f712c3fc9d9a2df1700e0df0af98dc7a70cbae556fa446bb19a48e3be3cd2e3222a41ff3f55e8dd876d0969e7a0292d66f11287a2b742224613244559d3ec22836cc8114dad67090295799008e904857020565a48c9820087825a1f9b56ac7dc3b7628c752acb4e81b8d58a9fc778b3495c59b70e3b70c95c7c2b16ffa63e01096e10e468b1ce29b1f94181660d9e40fcb9fec04ef5f0273000c1b7427a6d387aae07045b3a167321c8b942651cd5dbb43b0b4ce44c429b86d97589a0fbe7944a384801be57ea2165134399e7b006974ec9a1fbf0c8f2521410a79a8e32901d5a62a734e840eff4c70ed041b7051d33e83a55353f982ed2fab5a82f76dc071941538e76ae6088a98bb4eb3fe487b190c991af7966a1c1b7628bca2e0719c609b44051dd311ee5f85690d2be51a71772848d25f5656096c892e4ba005587c190bebdc0540166d84fe6220461925a751bdfa180e26337b53d6d81f6dd8c3a0001df8a775265907ae2a4df3490e01081bbb7e2388af4daa000e5a103da0fbee6da5ae2bd1554cbdafcfe8e138a3ff73fb53168f97db8bb8d36c0e73361321ba07dfd3c017fc1b1835451d50595b709c502997c1df4328601eba667e1e0b795adc07dbf00d6c15a2d93f49ac81b7448333e4dadc06333525a1e010a2aaae78b992d37ab6f0572ee8310ab73bacc8797d05bf18c5c956d12539b85e9026b5c92a6a193870514456f5b8fe2d1485042cdc0edd4cccf462ebd1540e0be8b8a3e591eefd8841a06853167f4967341be1772ae9117bd159f4d0b032a44c2e122f37e23f45630d0689de229b2de640ba43d41437a2b3865ac11bc96d65e7279c0394e5dce848f8fabbef6ffc0f63f6ea77c9c4a8443886bc850bfb729b1c68fd12fd6006e6832bc154fb577df6625dfce7f4e1f31b66defe38ce3f382fbb2e48ba986ae15a62fb0a69fdff946c5c4d3c5d31d079da0a23d5a4e46438ba35595b306b2388a8dcfef1136071a21dfd32be60ccab4cc84ea388a8d1114c560ad32d54a3c27eb0d9a433a015b4d5a61e93458f386a6f62a94d3f84cdcde3729122bc6d6cd65881d8cc4a24b6f7cb59a9f3d985596fba7c1077c6121a91fe5377488f6921a0e037ec1c2f720be8ad9ed3ed90ab9edae6e3b24b357e812f58f436d8988be0c1da13a8deb751e21b112723311512ccb2065499dbb47414f1134b620e0b6267d0d3135e2baf69048d9594507a127eb4790b621eae7e1afcd4ce16c0dfec2528e81b1f93f2a2c8600cc2f581b2c660c2eef211767fc97ff54ba35c06115fb300b6e5dfe812c867852bfefbacc41a6e78eed9bcbb0d16925dd6f3436daf915c9e0cbd155204bdb4b3a6844299e15e8fd3d76976251d343b484e02438539ad6a8d5b865abb6aec07a583560bab50e28ca1bf725b995176d06c7176748ab8252585365c5d039b4297055ac7f204aeec9656a276ce2289191431a81125ad8960b2d505f7a67fd0ef74918f72de7b6b3d1fb2e7e50aad909bd008fba591e3189e803a26c10d0c2668160a9cd398d2d3f7e6e88cb248aa005937bcc2729ef1cef61734e5ae64632db3080a7f4e3da6d467080fa26818a513af8a5196f66bf741421b9201935680c72b8a8e7fd458b654a39dd6b728590972236c32e18c8eead20d906db4e2bd422f7d2940049d81284d8317de47effa096097cdd2194d160284f65c77933b297f5c3da3084b8b69a9efe15dc0e2e508a2d94f688b6a4cc88a98f13a029cfe0d6ffb7d4cff900626aab919c10552434de084f2c4c8a5a1759cfe412503895a98869fe3cef073d4c9813e864abc88b9e78ada742fe49502dec2daed8c4d5564060c2b2d5afb223965f31be783a7dd2ebb5f271604c6644219894462e76b2090e0df213bf90dcac2f48e46bbbefa48056dbe3b8a695268a7651b218887a5687ed353b3134205559f25e5f9760bad3b32def95c7f292f19d9eb35e79605a74e0aae5edf04e0ff458a5fec55a621ae4a1641682a31e3b194c79afb96ef503554d2ab3ff1dab7bab28a27cd72b9f472996a5c46c21890d7fc713678a25184eba64193352dd79aacace130d779f39ad8a5e4c9c19a2ac287030aa5d04e3d1d014cf2fea1d86ad04aab991c06d008e99cee0e5426d6591b40e953801f58e9e7dc8c8596b5ec64d7400ada3b429676f7af743ff6203f3a67b05822d4f6352943a6fc7ecd686f1ec8974913587cb36767fb93543a422aec1da4acac991b7f029a94384dde3ba5f443c4249bc063ed481ed0d3177b2c7830cce923a364b3460f00667557428524221d181deb0e38c57d9c9495961c58ed329ba1f0bea9bd3c54900f5a937fa73830a66257d7ad8710e8f9ecf2910b3cf9d8c9dc8821de72ae20545a608469eaa741bad49b808158cae77f69965b90b10202200769c56fae654ca066ed69bff57c92962ad5d177632a774fab5bafb8f21ebec033bd21b73162ad609ec03310b652ca7a1c25ee38e73a9ca7db7a9c2a602a5ec1328bbfa4e951d04bf30f9d881dfa33763cef97b2cca0b71ef84bb4bbf324b7d8aa1d54eae452831747b3af3c3b6fa0e0b6bbf54ca3b0bba3461c2d4244791ba12b4f2cda5e715afd29a01302fa24d052643584d5bc75c530dc910803298650f37f9876a617b4c31c68384666c9c800d034b5205b5c3e4beac49c899512d593d7504b8b345a47a884b088c90d267116004f08a107a8a690155635369b75a5529ae3e6624be6b9392b5a1052f4481c6366d7a301d44c0bfa340d35bb492a6237bf961f004de311e4da331da0ece036b2025d55e62836c5f5e791e5df50ba65cc9dc1ee5063fb8ec106e274f33d46519de7fe931044b08ffcc4621a3c6e7427ef8881950283d5dc5cc5b7053f5192a47deeb5218940f9ac1f0659c8d3e4881488ef04c801e95a01111567abe99516ab4601676f01ef9a0bab7f1b05deb1b3c0a22cc1797a0597f668f75c980bcb2abfe5b5baf93bcff9a17234ad01027bfdb1172bf30edb8e068edeac06e0ebba4c7f93bf33a3721c91f0482139519d1e98a7742635ef74f9b97ffad572b8383d1e5b7fbaea41c7dd56a67e30d0f37bf67affeaf48d923998a6d649b82d4f29b11e858872c3d6b7f1277469cc923ed3700b766cbb7d6618ec2ca0203219d1dd8eb4dd4e97a2c3103355b2464c95c241174cd96cc966e4e336058b308fffe11eb0fb9b57668769875c0ac90c113c3379df19c331e0326ccd1fbeeeea555bc4a609a7320283c3cd615946f70498cc96c7796e4b84aab900889554b98fb3cd470ba8c2a1020edac3256aef672b16f6ee3a6a6e8e10fc3df31abdcecc870b1408e106e07df806228f0196337f39df449717b59f12bae809c4f2631048cd6b3b9222b9b767428d3a8d117ffe3db5c7702abccd2c09d33b00a1c55a50d8d5d185b9657c5d1af98ee9bca838adc924377ffa075ddf1401f77385dcfb467930f90f1404fd1e715a26573551846dbf4ad090099aef2fd3f5f7573c2bacc7e65fd5c15a35076c6f5a7bd3e937dfaaf6abcb2c4030e99de518dca7c696589cbc86addc59a259b07987fb87d8dfdc7fb0c2e5d9f488b983ebd1d9791c58aaca9771f8ad36d8bd14b622a0556aaa0322f2743ebd4acb7fbe1036b9f83967224e9ca0cc6bfdba0774e24c429981f7e5449d7a4becbd4b79a495512c2499e28f054f057b76f5f4c52ef335fbef8ddc61fd216eccba7f17bec2aa327b778f8e1d64a5051dac91c9c90662d592744556bed884eabb1bc3980734c1620c0c425f6fd7d9f05cc2cd90ebb65e8213c5ed8d80bbe81fa9724cd022309e2882692026c0669a7006a502052309e76503dce1c2b4c26d03dfd030e28a484041e21c6b1f75941f3c9f5228371016708dd4c727d7c98a317294c58b5bb776b2a813f92bfe335a9e13d279128000e4c5b6b7c1193a2f267fa32c8da520f8adcf608faf39e9cd1fea326d7a8b7692e251e90054c8000b03929da501689438a893752c473578f997b5de956395651dd13bb2a94a9fddc30cf568e450660c114b47a36b002ca7b36b758a637cc57f690540ea51327e0599a91cf927943907dfa52f5fd475b365f1194564cd0afde5fa9a3587a9ea2ff9c93a36b8bee6a5afb8f670d8ec4b45513438de02febba6a978e8f6a0d273c02e816829b873bb8c8b3017bd07ba2eaf9cb5d849b82488f3cfcab8b375771e358220f1d052f30b4d289a03d4704af94a0c313c81a1fd84a09523dc1be52ba897e5cf32d0f650cffe497c1498c3e5e5a0c259763541d21842808d9437ca2c17df2e22671bec66bbe9c967b4a1e662e8257ab2a77967ec0ee6fc65de81e2dff4f38c80304159a4864ca1da948140d24711d82ccb2f12f28371e0aa03037f9cfaa9b304282e8150f1912ee0115ad67da2a8085a08d8398e2d70c0659b20bb1f83e88442fcd1bcd07dd030d94af88ca36a680e7de62ab4144fb3446ac0efff90674750149a7aaa4fba6ea069f2da7d725ad496f05327ee9a6f78b897c225f6ca0c4e478d81ef631d907505af1b0384b4613cd1d19b52f988aba6a7bf094bff1f458a702f0c58f9d222ccaf462680cc392b881fcc97a48bf35a2fb763eb9e2d7076f643b660a9cf2a467ef0f187e81610e0f06888831ea190f39e9d2e465f2e8b240cadfe9409084f0f28eac0d51fb6618845195ed1c9e82d1eb00685527267a7db6b454410489a7de4e65a1fd780cbb3a5122dee2093d03a2f93fa8a3b93196b2d02fa305aae16b0e1795ee3dc9273aed9ded7a0eb5eb8923018e5207e5f315c761b94ddeac57f40ed7547ee50bccdcc037500e7502fd80b34ab4facd7c57bd3646557a0b1ac6aae4394315efc00c98b123063cfe4ee06442f2abbc50c6dcb0636739d495b8633fb09532434d05e8f10be3f4cf1fc3153dd7892f7cb5298265cc03d40771562660c7bc48099a9e5dcf5b3f1f36e29f1efa141d13ba16622b70659e77e173f5810eeb91f08adeeaa08e0748a51c1b2108a0968bbb1736a2a4e97b1b278078ff1948d965b138f2d89800b83953ad6f3f2fd4f0ea990f5f68f55803059f6ec84c93dd507056d9400bcd5938d935241e305dd9cdc2563cf1b8cdc1ae1514820ca8236056770ed9d31766a53af320d5d8824a2197d5b6d9fce3da9de1f91fb34ba249e07e0346c0041391b60e8a8ecb9ddf921638f103627722c9e8d8abf60daf887fef82dad1c9b208b53275d1d09724439dda34f83e8b44d73c34cb0c5606494b281526eb1509bac1eaa51bdc89ce42847bb64b648ba691804845684481d38a9d549d25c3cbf054eb940c53266d8d52a01dc607cde99e82ff9c5b816b83cba852531c7522cd5cd26ffb0c80a0d7a0dbef1a1681162defd6dcdc5fb383c5b29fdc4056b8ac952f2c784375080e53ddb02152942ec0caab17f236a4f6d1a9d971f76e93b45f2117d1de710014999021dca489668ca44cfeeef0293d0c55a9e0d5d205734d948710f42870a8a3401690b1336906625d5090063a4a948a195bf89663079398d692e837dc3fb372118cbd44d3940a83c9d348199369a822d0b20ff755d8413436d6e8a845c2d98b32cd7358d9d1bc5371f842d62d219d1585af03741d310123bfc887e626c678f0e370214ba4848d86064e8d36f58ad2c71cc28101eaa0074b376b3f064de01287f3498ccfcd1a1207f3ff08493eaa5274ac64ae15b00c6b1bb280bbcd5ddb2ae23e0e4c3ef54776b64af34ea27128034b7275259afdec5e874543d6617e5d22eb08816a0ac5747e83f6c72fe0b2bc5e578747f38767beb910c3837f670b77ad2ac5a1e613acf8aa0342e4263fb19cf36a50d03a9d57b3adaa69cfa0c000e7a80e82db4bb89bfdc1d5aa44e0c21530511df646e5dc4bdd4fa27ab8ca467518fc0beea65fcb646b7ce81420220a1f65426df8f77adb5aa4b8295b1f7e689ca95790994fc3f463c8a8c3bbcf7b871fc947ab4adf194b88a355341d6ddd97e517366e779c9a7cd987720660218f82de8548e2cf1cc06183847df82ad8277c5db88d8dc38019c31af6321462144b4df57930dc3fcc3961dffd003e4eb89acbb19852c798ce62522c7ba6b89afeee093bcd110f39c1a8b33c50283c27ecc34485c62669c64fd8d1d364d2f8848e80e6a01e2fe9b0156609ecafaaeb102f7ec56b2013deb0b94f59281eb5af03f1a216e4ccdb6420ddf9fefbeab708807dd6e3895e4f74d013cd00d31d3fb3f2b8bf83e3f9aa1b4357fb5628155fbbfa158aba4eff450704373e6278d56d73554f3c99c2ebc9f5a97e91e2412cc9f6c85fe65aa72340865cc75d65792bf54835a3cc13f195450d97954321314c4a02e2aa40c861b14775548721cbd8a0ba51baf9a9e076512e91bb64bb97f6af72735a9c608fb8109a1fe96a71a5cb0f4ca6adad88bee5c8d109b1aad6a3ef2d20a9e7fbe9ec214b13cf5bcfbed06c5b8f95d2326149ad69ab1880e666fd496f3e79f49a6c5ff0006bcedc08b96006f39839b8be1179e7051c68540e2ed6dcc13a55b66da7f1d79983463a3e965127dceb21fcc3b5b36aa8b8e0b3f5af563172f2605c39e37f9cc5a9c98f0aea828608eb2db7321727d43811704d92158d8f77a9bd7e250ce1a0e6c982ce67d1c35c423025492fc94e7389f49a7f10dfdc1087ec6c0811fed701607400ef347776294a2d8a0aa5986acfde73e94b15036ca0e0d080f88cfac0667e0a9c4587f59aa527a1bb07bbc6e0c0a11ec61879916e7aa5c612600428742c204827cd9fbc00782ba0e408290e54e801930d09fa018e915e414fce70d76768623c6526219724091d5837bf0e6e17fb3e4685f89e5dc0aa7faea736601b32e5f62631c2fcc8746278cfc0cd7ddb1ec5df4bca714d1b8656c152dad14bfff5050076fb6ba3efe7c04fa5ef713b65f85a37172b2204cfcf8cbcfc039add332ff836a3cb0a873efd62f57f0e169d2d5e6508b3570fe2f5f239195b66e6017739b11a34c9d56113d7df5cabd5af55d9177ccafa216b66ac7e9557f5eda70f6d465d649757ed491997eebe909203a0629e7e25d6fcd52ae5574aadc2da44a3ac5117a9a25fcda7ae670d2bd03a9fbaec5277d020febdadb24d08d6d833408cc0c5d12032a37e675ce834d776d40d57cea308e7cd039350694721f50b6b79203ae0b467a72a23c3056303c78cf2a0e9f751a040391cd30a84a18bd2a6a97f4b7da8f75dd43241665f9cb7c8f61cd82d0f19ab2d75ea002f7dafbb0a95029e817bb00d22d67659e3c5069b017507f346229f4f2fa92b2e14a7195d99c03e734eb50f9d08f9e3451254f7c4a73f54a3e1ca7a7af89f9707cdcf07babbd2172b2e8aea11c1bbfa167fc51f82d0d8ee5dab03802b34718e757860b2df6100a187a4bdf2f8777ac4fff6d74dd4d9cc7c366351cc01ca416344934b10529e0e0a34485ee3f8bca7b8c15f404a7e2b9f11f88df0e010552fe76394da047dcdc504578f3e68475a494e7080b2e474a2512e374f32f1803346a5c2501f369e25c2773c7828a4aa2562a97d993806cd47356a0928774cf4f88532cc0497f131442e4372e659382ad5393c13509e870cdda9ceeccca25a1be7d0b34d7828bc2443e5657e2e4c0f39962660336ce737b7b860187bbe3b71129e91658802ca3bfdba06475bfb2f016552591f0c66172fe1bc70859fb6c9079e209e540730b8cfe22b7f7557eef53c9fd7d70b313c0cedf9dfa7c162d9cb20d7e4275608f01f3d0ae312706c65054b3d040cca6660f11d08942fc90e8ab67cdc18619060c57f2be085979804cad15133ba6533f93fdda4f982ad1ff0a9c7d0552142f8b16dd6207080fb8c82803f38ba5fecf13f39ac984a983176429b545f39f4452d980764b47004ffe470ce572432d1a094689883b384891a7e39bc18fe7aea439900a16b418fb23c7bd1d7480ddf3a1824a94ce12d062fc9b967868211fbc87ef5042888894ac6a9a3ceef1ac24270e7dab138906aebd0d38a3c47406ea690e99c778d48c0a890451e51d30218e2b1d804c15b62964d0ac9bfc28c0161ba3d491c00eec93c9921d675d7275845ac3bb058405c07ba2087f483a6d7bb30ea87021c89dd14f648f3c022735f178eb346ce8be9ce038bdabf1946ed97c03c1ffc1dbf1ff44a7579202333dc3ae044abecc518799da6d30ea3b6b2aa1e23ed4530a0ece81842cb3073a738f69e64674c571750309774244679e4415a8a5826bdd9858282abbda67976d6e4977c5f29b891d5d661ab4dd506298e1d4742a85e7eec10463d935f9f8d7298cb9615a3e78b031e1ef75db852f34d15a7b032aa38c931c17d3ad575ab9ec6e4c5dfcdbec2be71e54d15b46b3787fb0dc24190dc46fc2c4a5c2c483026755cae5aaaf5bfc3fa154b21384dda09a5b28383da1feffbd88429022c5c96388cb935149f8a437b71606e89392c353487ed9a7f73759a96616da95ca1a53aec5a25b9778d50af4f6f9a8a114ec547c6a2341415bc508c357841b00d0488e046e0dc1f963c2b87fcb6a93861ddd24935df8de5f1d25e2422c77f4f55438bc4c5d7dad6a603baedd3a7a2cc86ed55729a9a0adbc87d0ca5b03218f1a9f99a2476f90ae63a0a1d8b1ce58d8d583faf8f15b4f9b2c139e811ed5b4b31dbe08759e9e370e684dc02250218698e3ee340be73f13f3957ca9b4f5afcaaf0a4ab4a0170045735ce5ba5ad7b4cc49db4804c281bb2d263aecebac60bd090d94a6ea64f86c62c5d97c228ec653eb959d547f03beb97e587febae1b0a8c7b7e98839bcbed10488b8797643d6f714634fdf28379f2c4d6714ac413a01d4ad47e9479fec39d4edb827b2989acb1b530dfc01d1ee7fe3a0f813af3c146fe7f35c4c6b0c6743d2e2d9eea31cd72b0f00d397cf982e173ac03e8f113937be47b29965a174342a859aec5dff4e266a81ded0db4f6a8f6ecb65110a4e947dac08bad823551b77509407c402122c857b9e3e648ed651137753b7e6fe66ee07928218b9ea19333e1d5c370e44294834254d167bf617294132346dd160e55e05cfcee60425969d4df051b2970181d4e69aaba23211488c046daa5849ecd305539b377925f787c6b3a52fe6e6c539391b7e5bdb3abfe9c6132f7abbd1583e07d2b7a9c574f971e9d231b1136183d421a014d1a5426148377ce219741d546407a134df26860e216820a050e4188c239d7bcad6c2d947e7cdbbc5f9e054bc91d8b5ef983838ff4230a3b4e0ef7ed0046a4102f207eeb1f720c1cfe6803d2a7a017643136b46114c5426e7427d40ae11d5770063da43795c1b073df11e27d40d64d78370aed02f0380e3b66f22d92c09f4dfd88168dc77bc9b41321eb5b787f8a1876a0b6e05643af6256025b406141c9ed006ca2017a40d5a8ca5c39563200f020bc3b14359a78bcfd805c78230b1e5031428198b5eafd5e9a7ef6e8fe12504a97d931cc90ebf4bf6a0308e018971ba713a03fab50301eaa26c2b11c60303103560fc5cef841af57b49104379833868452f183672772de361fd7a9353b7715b6e7043a7411fd0003d880f28262bd3343fbaef4b77dcf707504468a2ef5b5067906714b721aaa6fafc22f118a23e04c995c13292ab8dffdca1e59ba604406e28bf91d74b7df0041076fafb611fb1b659c6da6d9267c3cd5adcf578dce213668c61d2032a331495c7e0523b4b27fb5dbd591557e7520fd87adc15a5eebd50c955b1eec8f768f1d5c15e9a4033e265ae6aee8a12e9962eb6f8078cb0282f992397f7d1735b576c1377f5c5375782ea032069f516a5535344814a4d25ee4e52b4ee76b87bc036891c7e86e0a37e815d00d6c9c44bc467933410de1a7a19cb595280fc4b1b2b48481d45849d690e998484bacc74f0466707112d2e63b690e9da0256547d111a2a895b3161ac0aed9dbd1aba110605f7774e869abc6019ea0708838aa36cdc3542b02f804705ede5ceaa725222a3cc24656c0230554596485b12d5661326f1a684b8c08202ca7d886fa6f4bc5b82e0f7e5cbf065457a862184a2d4571c726652a189e1e5801574f51f676686b450960be688ccb56ad1bce0e97d57b42a4df60b513968a066be55801605b1d9988d99bb2e4b1d49577634624a263fbf5698b26d416172d452c92f5afc61de2f4faaf10fcb9504054d728594aa0f12d3c02acf39e808bd667e82bf091864f71fdb317a9e731421c37a317d99411e8618e50a4ab794f73fddcf298c945916d28458ab6a98e565d524f99d5f20e74cfb1cf0d1aa9a2a8b413c76c00a0493c0d2fb3a8973d6c092ad1bb9e7b9839a9682a63a41cbc23eb3fd65aac2de640ee427cc291c000c36850b244e74f9747382516c95c8188b5bb6f712ab7674326467e2b0e92c19fb7fbac394ca7263fddebe8677b8fd902ba883920d589f238e92f9f01d67ce9b35049fcaccfe4aa8d6a0bf8fe6166acf39bb5ac9b6d2d60eb18f5ec7f0ff6736841bfae9a06ad50f5c39f40385eead17a30e533da6d26bd9c4b8be11a3e4013798cac1d6873384fada0711720a812caa1bde1b914a4fddd5258ada7d9f33a7899f7ffec64c6b0b742b1efe67d2bd7dfd41e7c2669861906172f1fe25feb8e857f0882dab7a282d7a6f55bdbabb103a36f9f3fb13300ddfccf15231a2f22227d5179ebf762ce3f71c1018e142b3d057b731320e54efa3eacad4a038a94e0b0c59e860736af3a14ff9e56451f3cbeff270111c819450062dc83f218c9962a437399059b143e67ec285b179830a1828b242b83311723757af77c4f4f1a37a6627d2bd560df8ac218315783632e6157f5b44365dde50dfed5d43b4dbe9fb3c1a233212116662b2b22fa812751dece78cf93373e3fd0b47e799e5d8b3e1dd0c1ae43be59771f19ee016f918afcf967be97bfb2e4af0985b5e4c59b3f40d3f6a3fc333175da7d889623fa707e19458f8701a7202a5d4231a7addeaf767cc219164279b34ec185b1d1c1376b0c228ca9eccfac4fa612764c462207d04f90aa08b89c2a66d6a4da4dd8501638ece99443dfb6a14d686aec3bcec7f2bd80763fd0d3c8f62220ff0387c70aae5fbd9d6da9d50e12a371b7c8bd47e2a8c484bb60772d9c62d2aa8be31bbce998be61f67bfa0bbed0253f212fc7050f16649269d9df1d00ca99d83e34b7652a5a401869f98207735da31eed48ad2acf04847e2a47fa000e5ac57e80c044d95daf93046bda49021b14472c51da853d9c9bd15c364cc0fb87defc871ed32bcb66fdb57b51089b5e092f5833c96014b2703a7408d61e21058e72ca728ae79e33c8e0515e1b6757f52c2c190a08b1b7b40d3828656a6ea14b4d1eb80e244c639d90f6fb9a0c331964689cfd882d328c1aa30bc1e5b566f365c0968e72f010a74614ac9fe89fc31f9ae7fd0c09e4da7e5480617213be774709fe9e43e448a0bc73acbd81fe382d82c07681156815544c247bae40c842a7fd73ab8e93c4f7570aa26089d8c672930485b9089eb7549106a87f6944a9141e822bb173df6d8bebbfdee8b9cd0222402ec21841ef22ded97a4e900bcefe90ccce72803c54f08fdb77f296296605482a40426842e820eae1eb34e5270e161cca9732d1d016f07f1eef3dafbde07d8a51e1d1d784c908bd2bd0b111081f47ae27ff87ae05ded4ca8b4074c087d6eb6bed3440b9382f51b9c34b6eb7afb806215a9195e5439431794470fcb74ae88bfcc1f8f71b54b518a8cd6c0a08ba87e58fdd77aca9f2b7116b24a652ec435cd3582b2afa4b601688476aca7bbf4ba8d6a93aa825bd88eb5480cf5317453fad2628d4632ad232b1cf14e9176d40c3c0d9453e5d27427a6ed31118b3f5aea57b4c08c9ddf8ce03a6918de8db862fc5fa4ebda0073932f9e255c4d98faf07486990c93f8a3c50ab80ff39f3ba432bb98d4ecb91652a8cb3a58988e667bdfbef7f6d65fbb79127d2fd4f7f34c0f5429497afabd60344fa410f65d232c3986bfbac1072d984b5dac82eb8661826ed1ab218a22128abf87d2679e60fcdf600ac9eefb8a9e66e3560084f80e8c684c4d91a99fcfb62f03548702faa5e5535e6098cd3807adc791e31577288e6763cbb98f521d34c6669d6d3175278d6632d5da3ed5883f23345502cc4acc055de922e8459d7cfc259a0782e5bf31cf28bc1a012e5043452b26e7bb813fb6245ebb318ffe771311111121524a29a5943239054805f7042b44fe2020151fcf478a8e0767a3c96042f0f33a6ed332121de3045044210a51b081135e5e5e5c906dbdf514c059475b53aaa5608bb8f75a4b2dd652c8196bbbb74d82cb65c17a638df5def4a79e409e233853d1624d2d80f5e79a4b60add54b68250880626df7b6b525c6ca1553bcb28516acbdf87a4472c8e3f92d8b7ca4d8342ecb326dd33e11100cbf6ddbb88efb32c75d0404c3afebbaaeeb743a5f7973be4bf8602df179fb1e2c37bb9f8fe82140cea28b5229140a659e71fedc6927bc1c92c1643e118d66c3e17030ba09219fb75e888889e5912559afc3f12f6b3f9d8eb51f087e30df7dfe60e54fc6601886980ce6cb5fe8692584bc90e761f2ce344dd36834733335d6f362db4603e1a3e2f3a1f1b919dd84fcc91fece1b37fa4e87870369a0c26043fafe3362ddb2dc448a998d7a05a6bad75ce39e7d1be66cd53091a0902c01607d65a2f86cffb78f5bcbb6dded7d1f979dcf7799ee729c1799c9779d306dc86d3703a705d14dce9ebbc0e47c792acfd5039731b0cc3d0fb8e107a1a099e6e02b351de6732dee7e92368bef73e4f6b9b353360a148d8b20927b89ec56b8a027c79797979797979797979797979797979797979797979d15eb417ed457bd15eb4cdf2a26d166db3e020037f7d1957c6a5d5cefbb1148095ebdf1e01fbb9d7bffdf6db1303ed9e1b7aedf3b3a71b03343cc97d8b001d202ea08ef06bc66a0d0195014b033310e7482d739f640fb14ec1fe227be001d983111db28755ef7013e4dfc03b431de507f97ce10b9ca88afea42b8d13a949dc5acca0296f2e2365e94fa935d451d664963acaaf1175a8a3fc9bbfd4444ff6e4e3f3cccff2f0fd1f3cfc143cf31d8e79d0fb8d7b34877bb407efb26d9b917f9cae19f664ba7ade88365cd101b08a3157b30f1f01d987a1cdf806b79f614f3cfab304d89330cc321d863f553a1bffb0434d1d9a290f732473f62340efeba7010ef73535657e7f0be6c3bf9ae8c944cf7d0df5213f35e59c81e879a700b47d8689723fff01e609e581fa00847c456a9a23f9b511c0fd2135759e19e0cb3055300f3e8dec3334c0c7fcecf026d2184223ce10bef63432a2478b3430a24787e057c07e267a3402c00fc50ad407458f1665982a5365cf404f96943f43f5fc5aaae7dff2735d7e2f9b2c292760461de5cfdc0ef5822ed866294c112a4d52c5e2a529d5d2c7220df4fb4845cfd37a7ba8fe1381871d34e1f6cb39da4b3b71b827f89594bfb345fb60b71b8b22f464aad8dbc7ef3098a88c24265994818422ccd1eca20c2434315bccbb92e964a534f6e6ab73ed72b6ed863336e2b54dcbc43bee00d6ef64797b08802570fbdeba24054c811716e37badb5d75aabd9d9adbd18df9c6dbd37c7e96636873aaa358c9a6effb600b438cf0c6cb55aae0e59da13fc931996544b2590e790ed3db50ed5e4defdd34e18fbad0e19b7e1e660bbc7694b0b35d517f577b7f26559d5340b72daf2edffad5bf144ca62b76e00dce52a9d1cc7d9ccdbdedadfb4fd36e4a04335999d76dcad645793dddbcd197bb7766bb7f0db52a974f553fb7782f4e4d56d0459679df50babdc4a3150ea5297baa4e224afb5d65e9d842380f3c7a79506b88534e96f51a2020b232423128b1522be424803402c89849458d89a7fbc08a72fd70abd6205c97592c0e97eb0f9819759c1823412f1161f868f69111209c96446385521e1237caaa8522cda09558ed556a5529a635428793c1f9291152c482311070484a3221402029588708f077989d3551886980c260c31184c46930163b08f8f8cbc9dcee5012693c968361acd3f16a49188afe87452844244f65e21ea24e8d297b450a1b46d1a9291152c482311df6c383f7201a8fa9df867e3ab81f518810e7a1d83cf345140310089738ee0b72af867c2c0402631f5d19261c1e1761b96890c77f5fa189049d3c7cfd4e9e367ca983e5a4615b1511f4126ccf8993e5a7afdfd99ec73e216397d050901a32ddd58e6acbf4d6c5fd417f531d65ae79ce9de3b6fadbb95fdba5bd94168bdd56eb716cc37539665d953fa74ef6dda58507364a374de39cfad256fade9d7ba157d7376e93a65492047450d04386a5409dbe1c53c27aac9b8354aa32c29ef1fb8be514955a3605bcba8dd1ce76b03cc7982196bd4c56137162a6e2c738487fcf6ebc6d2b2e2c662493fcc0eebbaabb377bfab33e5b66b8e037fc6e2d6524957dc5844008e1eacd7f760f6a4b371f7625b69d67b6a1bd779738ed0c7bca8c710b6baf7054bba25813ff28ee5acf5ec67b52d86a61e00710aabd349c93216cb0519fdfe77f0373d69f542b193a2011fee563a0ef038a8016de87773dde6d0efa5773ce9f5b3ceb6c688d1af385fda035b6ca26c7b03e0684b5bb24c14fa3a762fb035008edbebd52b0fe068cb587963991568e9eb79b9dae9dbe94fbf2106daef6f9ac39deee44e637c2f798f007100b94ebf25c1716b8fe374ce29d2401f7fb624a85ddf8f5bebe653dcb55c188d63ca3aaa71bab36f19b7e30e9df2baf90469e7b46aaa713b532373a3bea8eff14caabee038edddd4332819b46faa3ad2ba19d392c616ea1e75f8ec65f7ba9bf13b72f52de35bff380ecfcb34ced5d1a6e174ff38c8b339525fe35cee1fc7b1bdc7eb8b4dd45ad7386d2083ca6ca057d48d6aa2ab8910d564cc6c608429ffb3711bb7692e43eb77f66ddef8c04e8666c92b6eaaf14bb554b4df4ce686d61954b782297b00c74dd5eb88297bfd1c948872a2ccfa55739a9c7eb2a975b6d28fa7bf7f70b1ddf744d15f35e5a3b8332bccf1c076afa5f3d2f976dce3a5e2eec0eb15c30ab517679d3181d52bd62fcdc43eed1b7ac7a96e53afdb46af5ad37bb2514d66127dbbd87544e7dffd77765ad7605f039845e854dc1cc727baa8a4ba5d5eaa23cabd9eac6fb780b49e5aa74b63b4fda6398b0370bb5d8b2c561305cc5ebf34ece334bfa0e64ffb7173f144af1c7925f729b5e34635c56ebc2cb9e85bed56ae58837d6508d857d7228b7134aa26f653477da39da5f4312c9a35b1cdd0fcfc3b4c714e7106fb59a4913d0d4df4dcfd3ba8d0394b192f59d2bcb66adbf7195a0272d63e8b9e5b81ec2d4dc9db97b6a753bcda0553f2244b1d8c4fb0b51f75b2b673e370c9086ed35680b59d6919df9c2be0edbd7392f4cdfb67ce3bcbb6cef596795b92ce1a3c0108113ce1871038a107fa89960f622f04c0051518314c4e504a5e90b848e92be8165ac050620106959e228e60a9a454225964a9d44243c108326495a09c98bc207961c4c363a4e322c50b2b9458f8f8a81f240c4e556290c0202159293289968764b144a251a6ccc432ae4c2b43ae58c042c58214e6000078faca3a52410515025022111f2449605085618821592cf20517601011d162c04039317941b262c5dedd8992124c2693d1902c56490ac5324756acf8101421afd2de7b720dc307e0051760e03815316094a09c98bc200181405cfc0a2c70ce61286331f18bc5485ad840bff027262f485ef0f0e8b848f1c20a2c943e3e3e3431b8470c06f78095708f16eaf34125d1f2902c168ae841922eb42059244996946cdb66c2619194646a684adca3e5da6cea862c113d48b2458b1625fea9e852098361955a68019f98bc2029e1b8ce8557b2428beffb120b2592afff0166589a444f15b705cfb0b8c7644962c6884ae252b4682bd451ddb6ba9125d1832449481649b2582516f6ae2b902c9245b2c812b254123d9268217a902409c9080b1500401a8944424201a68b9a3fda172cfcd1c66e0733dd371cb3e21822eaa87ec8311812d3eaf531afd17b792fefc55b3415312e180d061be2fb6aedf7b65b013f033fe335d8d80672ce8b73b22cfb144b290d1b9f3de7cb713e95c7441da550f4438ef14ad3de980d86a3c170b87ae3bdbf0cf38d5be78559460233ccf76519f759b7b27dd6ad709aa66ddcf665dcba14d1eb6742aaeda8a4aac1ec7f5f9f7e205246edd9c67173cedf26c8a9d6dba9d78d08975e3fd4601996e238515f70621c0047efe5bd98a826dcb643834892e3ba155af6d2a3d37a59dfb03846740ed9eb639cb8d13f9407b31f8bf722355835a138dc8ec3f55e7564031c3598b6e37e119c18a7dccf81719cf3da20e0bc384cd491fd4ab9ec9b42a0fdfb8cdbe7bcaac9f6f5394c6ccf895d4e3b053f564fa91858b6b32cfbbe4cfcde7632bc9e813f62605b267a2f10494164cf440b7aaf5eff8228a5620dd963f55ac2e68f9c06abddd4b6973d8e8de3d09a387e3a1dc9b7d3111d8d9c58f11665c0d2f9b5d6f95faa8a378028adc136432388f5a1b3d2b1eae037cdcd4e06fefd97efc79d0c15fd6a1d7cfaa75ff14bcd9127809cd844c97ef74cfc54ba956235271603a6a98902d2a90addea73a280fac8897d6250d1af8a0eea3706907ec53947be1588f5a534c699eedf2ad766a5d9576b5fe33850adbf542dc207d287d3e905db0c8d20ab2cbb4180593fdd1995f3ae13658f17a5bf529c694687d0eb539ee99f57d37e736d7ba2ee7e51f4a2f46b948cacd3ed895ec78b92b13b15331f00470f0a757fc85986f4a07acd202b0d031080f85a9df16fd3da9b73de5aeb6c5300765194db2e6baf5edf6a186f8b2dc791bde6a657c96ed6b26b338731eed9e6dfba6db5c61993db92b6a533bed65a9b51388ebc6bd8bc73b6f85a8cafd56ca5f3de0c0a6c645863daade06cb3b44c8cf10368a8af35fe8d3fc318e32ec3b8c3df618c1fbf06638c7196699f52eb7dbd1a8300b74ca4a17ef69bc669af956735cbf5e956c5fa29f67ede5eab19beb69e3aaef4e4b2500cd093ee294aed54d2a8755cbb0ed659c515ffad2618ebac62dc3dc65e877158b38a71749f757877a0e25ab38a6bcd328e1333cb0b40dab35ac35a2bd7fa6bc5db8fe2ab53acfd659928f877c777d3be6e25cb798f355c7cadbd5da5b3f3aab8d58cc8e901bad569b04f7f824024e8419f521f24d2a0b71b297b031044557b44add5c60975fabe1cdfea5bd14f8895ffcd72f6089073ef05fd86f13fee56408f4f967cf1b3e1f109f1a93ed5973ae243e58c2935dd9858df818165cd698c131d530e20f71b6814b15e5f773330304bfa6ca0eae8f3b3fb4e2b9edff4b78138ed1b08a73d3f1647ddea58452f6ac55b223a08bde2671a23d03fd3c8718d1f2d44f4fa1b08cf7dd68ea7d43d29c49388b2a4fa013281705c39107e3b66a5d268660599349f2181f0da45de3204c86be055c4ffe07ee4b8402a50ca9240a6ee670599ba8ebb441eb2a3bea8ff3c2486f9a85b1c88f6e7b3d70e6403610e84cf9e01993a90c87938ed1a263a0ca67533382d4bf2fcc85d1f104efbb66ddb16865678428a080971e9212b4be23a267ff5ca5fdce5712288ef0ec2756fe9991f3f5a32cfb9ab8e322a7ee42e0fc677efad410f027990c70784db1efef8d1d25122ff4e9654419e033db7e3c5518755ff07f1f10601823ec5826ad02d3124564721b03a0a3142481902ebf5454cd5640c314248594da0a826205f5f84a59afcd71769e1ff5f3fc40813657e3f824cbd823f72d717b613ebf5e706b5b9514df6de1bd4dd586f5013256f80d8a0ee26c706b5d9a036406c82d8dcd8a036a8cd6ae3b2296293daa8a8a652515badbd375f6cb5dd17db0daa2bbb27ba970e8aaeb42739e7bc4392566dc97b73bdd8e69c73cef986e42624c3234224c22472ce3924c324aac90e497b92f70e495748be2b24efc69a9c28393c22246fa82324c3900c8f0891089308c9900c5f212cdc11b64217b5d5da7bf3c556db7db10d494da5a9405b8196435361d5ee4a5ab52defcdf5624bba70a82bc356af324c95d0a92bbb27ba970e8ad9955dd9955dd9955d7937d639774f74e5f56a74e544b1bd2bbb27ba970e8aaeec4aefe4a1bc1b1e8b67b2d4566befcd175b6df7c5b62bb32b2b9197c83af0d654b46aabba37d78b3595cda2bda9a6f258ba0c5345e4d2549a0ab4156839a6a6d2542a4da5a95229180c0683c1609aea6eac35d544c99a0a34d5d58a50edd7549a0ab41568393495a6d2581aa925a1ad34974c6db5f6de7cb1d5765f6c3555e814f221f481908dd009db9d73ce39e79c73ce39e79c73ce39e79c73ce39e79c73ce56ffde34bbb455af3f55de6432b9b22b2b9197c83a66766557766557769565599665e9ba1beb9c5d1305ef9b77e4ecca4ae425b28eeccaae1ccb658622bfcab22ccbb2b4d4566befcd175b6df7c536bb442e9112a225443a442e6c43275a75be17df9b2fb66f7a130b076076eddd8185ddde9d7073391ebbb24b53dd9c4aa5529a4a5375a585c16030180cd6955d199215af56ab554886e406d581759ae81ca1b3837660f6e49665d981951d58d981951d58d9d9a0361f97baadfeb84c94ec325170be9f243e2efbb98fcb27061f197c8af8b87c5c3ead8feba3e3c3fa907b874e211f421f08d998acd089153ab158b0d089864ef6e4ee0d82a113eb592c91ab63b37e37d6399f260ade372444e834516ce742a7900fa10f5018f7eb876c54931d3a895ca15348155a858808a142a9cca39f523f442e9112a2253617e9d8f4452e7b724d57e412b74845ae3bba2e96b46dab2fce7697443151297a8976e6ed274fa6e7e17ba02d6ad411cff834d913bbc1ce8fdef4a62e726d22d744c93add55779b95982817e33b8a767cb65de49a28b5d71729215a82c2c05f5fa46313b9b41fbfc2308aa010b9443a44ae8942f7fed0a9d7cfa99cca29bbca29979c62e514ccf582c160315809b32c306b82f5fa78555378e582572cbc22f1aa855734b64b90a553d65359512e2c168b64b5582ed6cbc4b24de0a983fa494d26b2355bad576bc25a97671a6df199ce3cbc02e92e80fd1b68147ddf9761aa3cc70270ec7c5c601365f68f8b3dd1f3e3c2ea758f4eb602118490c566abe7c8b6d93e9d23f5330fd511d702700453bd560e548d23eaa2fdb62798d7c4d186150d168d54a73484e89486aa53eeb73d099f13471aabe786f810e8624f4017975e7f75438e790dcf80bf659e7651a86070641e546d1d84d913b005c27afdac5f95b59befcc6dae75d5565952ade24efdd0658f23ec78866338d8b2571c41b1d5ebcf50bb3ac8c1551d6d17308788a3fb940aa6ec0998ea63697eafae2950da4e46d7f1fef1aa40daeb4e91001c3954aafbfbdc6639548a1dbfb3bb1d3954aa7eb57f35d61365f690c55a80eeb05d6e0894762b1404458b83dfee36918861f71bb83eeb88da17364096ad6bf60b5eae6508fb1a78de3204572b59764a4d6a72b3af178caa5c4e35cf986e3aeba5f67aa30e77076bb51229e6a420b9691b95342ba6f56138a85e5179ab514715574b27c65a7be30e7d33757daa54d43900c7cd7432f514168760850448a97e3ae7b42e157862099bc2a804afb6f52c543300002000d316000018140a8a8422511824519ccd1914800d638e486464408f8b63510ac3280cc220838031860062083004285343423601303e2e304b32a4585c59d7cc51a282d1bac5a735c2ee7f1c1106e629a4a8d531de8594183ac812cef90f117c9b57ab7bd19dc2a19c26aaf7c29b7bc7eb64d6dfeabb65eec711b8e75083390a5dd9ddbdb8a54fc24e933c4067bc524a9d56e7e303dbd2bc7a683518156d60329176de9171042958abebbb728355795394cb6a79a7b0d003a3d5f6e45c3242087f57319cb9846fe05dad016e995d39d206522d7a4f0f63605abd1080c4f8e630142a08c1b64f91af2bad6db0c9b475faaec674da52a9a8eb24641deace72833dad2603acf4b9eaac3cbb5ffdfa9aef231e9aa6bbff0a72d130867e239b491eefd5be89e5c183511638f326cec2caa308c245294cb0fc18fc8bb9bc668dc6487e0aeb5fdd677cdeece4f46ac711a06eb221682745108f240529c00b0acaecd774a42f7b0eff0235d05faf8e1577f0f207baa19439572c07cd14a64caf4bf1595c8ab32990fa931779cb1c561ee0c6f38207a41e3c9dec9dffa58287f77fefd2ae9d480a26e31326d6aee08a780eacf6d60a6ad9df070e20c213f55d17557ba792900eeb71c332f91a5d1d462cc0b22fde34e91dea5177013e295d58f7833addfe3560826f388102a632efd988394d38118699343c4c4218583e3ac1c7abcd8c081e95369d4a44a250f9a869c0604aefce4f0af91021f1a926f375eff95a21e9aa56373b608691c51d17a67b291d8ce34993e9a734474f4c67119a9185fdd50c45360e18377fb62d2857590133ce62c6dfd175efed7d0c2954c04cee22f66f0afb4c5954e6aa57142d4bc0e413930ba64aa240b9ca2ced86cc67c74a0654033d5b4be33658ca0a042aaa6b8fbafab55feee1561c872e073a2f1861a0e78cfee98425494d36b2896a43e5ea170266d763606ce615e517bfee6a451304b54df72a3e3e433bed9a8af79282d82fec54fc8e6a037963eee62060609e8805ec83012dc4ac763eee154791cccb05d5c9dc31f98f19f41c23bd751de72b0626540d11cde1f3c0540802959fb0a92b198178c43a48097d401cf6218d0d239485570255ab2af7e252505c742fd1440def016b0fe44d2c114ce710f3e7e7ef33702dfeb4fa204a4287f61cf86fc6f54340ce0055f2891c68baa43b7de75d6fc72e25a1ef5ad799b7936900ecd1a091259576b8417ca2e0400ecb330bf0c45f01a11035e4bde240940f3deb726abb472ac2f09b3dbaae9afa44a9e910d1f65f1312033b1d16333bdbcf1eb4a959468f2afb7a0eb276dbf42ac3bf84580625ddb6843704c3a9754a2f19e81eb196fa28565073543b46a5c8421467c5074d20c96b5dfa24dc0d6a5beb2e58b2a28da92f89d1a3094fe5ee112d123c335dceb5eea37aa77d26647d6c9abfa0a3c77bcfcb6cdab59dcaf2b46e2c597c7101ea3dd2646e4a56a637a5a3258ab8a0491ca1335e29a582d6f5a382ed6adc76b9c254e6c1ad37389b3f4590059a468f55032bcf672dc82c97360ae90630b4ce3e4d5c30a90843caaacaf2fc12ff232bc000d51609d91c832bcc45686da936b0000f60383bdb7f447c6e69b7890d53cdd1779d29f2b6cba61299215d53f38838d8d03a2f13327deb66cb9c3be7e116b7fffcf2cbacf3613924bd0cc1392593bcf4fb205ffbb162f07bdd185a82483b4cf589b7ec03d016240751cc72cde305ca085541d1d209f017737b9d1a9accf12de07798b78c209b1d9b1de6ec2840c9e9256a2745108f200529c009cbea4a4853d9c9b3ffa1bc3cbce79be13a46478960dba9b6a55a15574176e9de5c877d06c8ad23a8a21c137d99f2d12e74200dbf3024e51104d94afa3dea3b4e7fc43e6a3561a7c8457a306c9fe815bda42928e997c8b36dffe83eea15724713cba07a912634918a5a1590838ae5d30fe79885b3df70aa92c84154fb7ba5dfe8d7aa1e3ea5c9ffaa1e54fc3aaadcf0d79833504ae93ddb1c151f4110ec5018be4b4f52709ad1c1b2420396a7d0289028bcbeeb043b9505656f8306aad1ded45965cf2a0eeb4abed9266ff08673761758e55b3d623575acad0ec27cca67b7125540228a4322e935ef412bde8266d7e0a4fe06aff547eca2346c70caa9ecf31e950e0055b2cbdd58e281d359488e05ba69f06ad170d26a26b8bc45af5198f5909a5d6f64bbe2c5a497ccca76fbea32f1f516c3a707a331bf5f7ecca0a0adb37bb3629b8e7a454ab324867182f6c976d17b54cb41103ebbd1d0143969fc97c3e0bcbb5156e78133bbf66bf282494518a6dccacc6d6b14422fe601d0349c85e225e7715fe26d2783ce9cfd4792b8183ffe9e08df5bda69b681d463ec5d8715df86e9a9f66e4877d63c260e3666f76558bb039100320fb81080f032fd2346defb434ae44763373d12420f3148c68d1c4bda19641b7312f2d32cc6422a48816dd15e081f218ab6721526af444819a6aad17587bc09718b8dfeca072c8d3a4c6cec731d8c148e6b17dfe70274c68e36ce5b010fd518cc501bf3c27ce3f41971b45a8865666a2352741fe815b9240954429c08ca6ebff836ea057a23136b1a707c27eb3471a710251df0641fea15b1a790455157bd094d7c82cea9425ce42434f687ce588adad9af704fc9590945974c66685838d86b7238f17d84565fe2e07b045749e88ddbc5357f955c096d57bc7f374be88a5799dbf3c27e077a796566a49da9ad019a8a711492f43a2fef55c7ee4dfd5e3cc4a2c340357b36bba9467a927fd6302b8eac03f9be1f071c95aa2393022ca4dbb773c49ad4a75883d651db2995168b7fde131f34814d9e02cc4f0adda0b6298005417c6d63ea4b6a7c60c283b91f5f8b64cff59d730a304df992d6b3c2d96acc56bd47fc704d7d36f2eb1eb41b72ffc94a8d5f5bafbf19eba6be32ba7a0619147791e691def0fc3a1d2a45b99b42aedd986c11ca859402b46d0c220eabdcf21503424f2980155732658d07b96898376f0a169f314795e57e4dd6ff891381f923207f5dca0d3305000a64cd1f0a744ab90182f2f00a0073079faf88c79dd668db44fa724ed769e86193a9a8b977c8322eed223b1b14e0c89805b02844091fb889858032a034f4ced2fb865e5800391bcba85b064f628fe84cdde1cf0df162962f0b408a18b53f4865457feaa72cef382248552563769857c1f8ff88e5e39315560241fd24d0e3f318a134cd4e4e16c07204a8ff5c9ebe930b884792821460ae6871e79ccda9aad916a0fd557d81d52831b385ceb2ec9c5fbc333120b0141ac2aeb4caa355ba056816544f179c63829545e2ec97c6a9519636adf863a74bd020877bc3741480bd6e7dd45111dbaeb12e370578ec59517da777ce371560e4ae905ddbf58e2f0d60f42a897dd379273f013cf2ae88b6d13a4effc49f18f27b8244460134fe1add9d781c8b2c8e3b956cd18f5016694dab874d85797c6b578b595dde626127640de3acf3b225b07f8e8917aea8f635df05ca4af0993ebb19ee202983cf4587cf39169fed1d9fed4dfe5bbaeb99aae36c8ec7764135689817af0912bd583e42e086038cea792f6f32b242b1be439069588306be98e471db378b0e30277d74ca0e2b46b74c46608f1991dd46638cbdebb505ce3f020f5773adf5c4ae5d989f1acc5d55d755d223f0d72bcd7e2ea14be22128bd56b3505e6b05ebf09f13c065ad9cedab654b871292bf1e69e7232702f25140fee619e123f9d1439abc96403fcaf38452ad6d02599bb617bbd138906dbc7e381b4ad7903136b4d8894ecb138b522cde9987cca9c1864f155f33958c9a3af4218649854fdb4332394cf3195e21c55b7eec770d8ea8dc1c9fee903c64ba4c84f8cef6d28566922643a6696ff9f5a298698623c1a77ea58a4ca7e89a43f860a30d6d5e7844c12fe0e8107e5c4a10dd9bad223d20e20becc35a1f18b9e13c2e904d8c49f442c9217dba7cc38bd23b42a5ca08cb82acfd63463d2fcdb87890f248e84a7cd5a54be91e851b550b19c175831a53be1056ab12ddc7e79ef1bbcbfcb4bb2ab495be43a9ed73f0e0b76d6590b45455a89fb8dd95f3e57379878bc65339e76d7bebb5ddee7959e3554a7e08e6275b53674e5a88ece1bbb238e282b557a785c9944c324d7a2d1d9425a2e1d7eb077aad1912a2500b853f15675bec5d35b140c97040ecc8eb1d30af701f87ac678f259fd15fb922bd473508068cf937853f709f6d74bc037a0bd0e27d84c47a186b18ebfe91da07fc1940ff92414e75d02be779112db491bb50232ae13bf6e2cdf1b87e95a7564904fbe8fcd8f8c51df74ccc987a5465fcc7b47e559c936126b6b912b9c141eea05009ad0de4a1f7f10bd68b77a40cb29345a404ee6ea37ad13c203ad7863c1d8cece26c74e69d4aedaec604cfdfe0ecfd2c90500dad4d2f2d299918e6e3a849dc5d12b098fdd0f46ed1666e6263a069aed340823e945574f527dbb432449d6e27fbb4d75a2451829637a009fc1b10220e2091b93427af878b708782b5e155fe3f04cc66a705bed4df10fa88110c1b7e45dffe1109661e9b1a054d4c906048bbd81bb2b93dc0d81dbc43aac84f609bafdec2379adbebbd4e35884491e5610456d9acd6153ea274377735a76f3a937a278e6a1c4df6226a4a2dc4657f5707d139d9c39de5698438ea03d643ac2d0ce019290b7d0132fbc784f0b28171318e9399d42eb3d91ec9151fb7e7f6ea17cacb6fad7f238f0b54809cd830719411921001dcd366d5d94ec2f8941711b72ffb610a9b4f094b094196a31d9a34815577d9ab14d52691a00688077ba5be3116f5e92d425aeb1f082e2dc9fdd94a2c9ffa87e67d5d7f597f2d5e974148657b841317e7e7d46ff280723d48551d0bb994fc532f8166468568af288f47eb4d074f3e7d354b2578101a4dd70013b24ca9434f4fc5f19e0c79dd6c6eec6fc56e1050fbf9293f6b561c7af1315d43a0e6de666e18b061125042f49b071cd3de2376e241c25e92ad5401384e43d75ab2f3e19119a6e5a81587d8ad60f9d839e1ee5156e12d11b2632764c88adb797d15348f5ed35e228101dc0420620a6d9dfbcdb0d27a283d585a3b2380cd7cfbb6389a40426583dd67aa39c10f6c1f3202178439950866b62ec5caf39df8f689d67dc013e92cd73a0d075520469eeeeceaad100088a252a21ad17cf43568fb45b5ad0aea269f7beb803f3224074bdd0b7069de0af2690ac0c399db602e2d63c639799d8eb889ffebe4c147c11707ab04cb8e83691ea781362b53663b86e47e0efcc197ee867f5bc06786700610ec67195a80650b3d30576bad9f153388581bd10a050f88dc672237f6b95203e3d1e3f07cec0b0993dae4b1b76ba2f465915a317466236086bd237a8fae1249cd618526977379049092e5700992610ad7852f969ce730a3a1c354ef0fe90e204e4ba4cf10a1197cc136a239ca931bfaf3284b5b4c176201e0aad0712ae3fcd414581a7a095897d5bcefc36c0e1c892c0d557b37ef250651d34b0080f47407804ef8e755d08eacdc9a719b08bb85bde18310c38c2df263327353989392d29825d579fd3ad8290de393a13167cbde7a71647a8405138583575136ed2da6e9467cb27cfc759b9d710e2b1c197b3205854377bdc0d8530a7926ac9b40b484cee7dd0b72be2cb4277b161ff8f48a1d1f82d74ea05448ad2b284bd6b143ae43a4f78e43c80e86cd3856feb2d8ea1eef9362f15e9f9729c089c5ef881da6a63feca3c8600eb210b4898a27cbff7496c7ba15b315ff418ec9220309c13eab805d886a000c553b94b16033a472597ab199bf368c1d3bd6331c91a2aef28ec2a5e7b3f5613f9b7a598cab40beba0c339a85bb15b63a6b9cce6acbb70dc88564927eb3cbc3f4da1478de2fead18bcefb6320340f5db559b4b813e87a6afdadb378188e968c9050265959454985693043837cf0161cd0750ea2b9a053849ddf363f04053908b328d53726243a62bb96304a1e8cc8021202fd690aa0d7b687bb4b04802328873dadfa33246c1c2afb0fab510ffe71786dde5ac238ba499ff95dfe6701f6b20593bbb66711bb966980115f41d2f9e3c3d2788901807a367c8fca23e0051d08d6afd5d620f73b12e307603dce106c756db90aaf357f52de322e5655256db0fc5aa061c6367d35d1a49675cfa4a1c50a422c974a4147a6af465cf396d367f3f48c42619f77be271567076fc086a4d89334680e9ecb0f0991349886041d3e64223ff93bd1c2e88f4a9a9a65116f321c405c2f305e725c40ddd7f13c995c4275089edd852c869a7850fda2e2306cbb765c689ed8b6ae25849cfdbad1fe4a573aedd4d27e5ca66d4e19ac2c35296977e7c1f5fc97fad9bebb3f0298c1d066580ae2dff9a6876c2a9425548b61c17e8efe3610ff84ed199bb60a9d67b9480ffdb21acc042b1cbcc03f0a0ad4e9dcb343acfca41645e0c223a71cd7d25304c95e95ac6ffc75fa67a9a08e5c6934ccae7b1ca42bde3108852eab6d1de82141335c5d69bd85144a9e0e8a711b5d0101ed24b9beec95ca0e09d300cc3ee7448a7725f84ac83420a868292409dc0ca1f7ff84117e02a80062d707f71917a9caab0a5524316ce6c263bda1d9129c3f527ba5b73c39f36f8c19bc430ec886d371491961de1f411ac2d1a6f69815cf4effb31339b8a23899f932ccec2b063b5a6b3892d193653b4231190a8b784b44889078fe3d192055e66495bc1f10dbd4e96c198b9f18e354652a3c15ead08c7c98d5d3bf0456126fb4681d2c812e44d21529b1637795f2241e7c42893667397990ecb3e02e27b43ef14bdead86ff1a35a8bafb2b546d55bd25708cbf6841dfd4e1f568e0ca88c8d220e663fff2f7b93b5ffd2bff2c9a0b584bdc446bc1598c5a5ad9fea76c28e4fa069aa70869439080e734d814282c40a7ec040ab529927fb98f8bdd6aa6cf69e6d222bf9081cd26f66f0aa99960ba9997fd025465c637f4495994b9812d411f2f673529aa602e77ac336c11fc3049054befb85b261dd5d2c3c61c2a48b8a15be00d6f1afd13e9e6b6a11891fc2e139ebb2dcf5eba48a58e601798ed35178095002f4c608048a3cca21fde449f42e0732a8b14283f31ceda91c0cd285f1a9c1567d914782e6613a909c5e63f44050745eed29181935ff33efbf8e10093e68e96a340eec148888b628e54f6977200b950d128997ec2f1b7539057ff0ab64fb8f9fbb1fb5db1dc87ed16aed61c62f5be63b4478af70dcef7a846bb5b62e1a2994ab31efcb3cf81da9b847156c5fcc19b2a4e0566700ccf0a0d699bb69a4664092ed3563a83d28f0a82d0ce66a444a5aa199c2fa1c34ba07e601139ae478c4a76a49910726f54136f5aaf142910e83c2126664ff12cd45c70c69bd3038052b56c8ad07997404530111347a27a98f5228285d9915e66b0cf7db8dfa1d35bf2f1f536844edb6807e196f2095fe37915bf92905f2a66536c27fca79a759a412e8f2273260e53e6cf5daed3a31a4f210d1188934c1e3d672427230ba9643d08182cd41b73c6f69d300da101a492e88e87818db8ae2870378bb3d3137f15b554030c4ff67211af5b9c7c4f0bb0929063fb836601454fd6ead47cfeed80af58b0a9075c11535c3eb0e8dab33d455b0c94a3d0b442c8f60560ea362214822c283a3aef62981388b9f9f2e66b6b8768c8f9e928d52a8f5d1571ee07b305878de565c27af7ae1b42f32901aa258308523553c329fde9bd0257ad96f8820942aefcb22b9f504f9516cf8ff1c8b03621ad50181023da795eba6c0aa7eac2d77e0267c8107675dc44adeac22f6767f088b66a79d06742abe7217ba27383bbc91e22732383e63a89eb01296faf8849049df3d015c25460dec72e85c280cc742bf335d0eba2583dc22a16004b54ad6be1d531e5fbe96b589d860dfe6751a473810269b430c4833dfab7d377a596340582d504c50bd5c775387efdfc7bc7770101ad020e052825818010487126c5370447da6285b3e18c6d87ab37f93bc221b747410f8a54e5faf70428389850528e025fb8652a887d1be0ed85a08f02e244080940e10d32532c4f82dc57920af776bfb3e5b848332752d26ac1df5ad4b9dcf1121093e85d1ef9f12e5d528fb2a5b4c673e83ce159b1a994762d0fa61c0523a41c743a32461be89ba24e8fd9f77beb9a67c8aa37012e614c30dcf92de1fec494953f815a7b1bf9aee7dd02239662ad9f386f0ecb940a7526d58f2498eb100c0f7791ad3ffe3676cadc128775797a559ec7881be86c387153d729e3331058f41b76a0a6cf8e78c5dc82270b50c761ca88df5a81cd6bae3ee29cc37b14eb18a0b82823168eb9f5aeb6c8f9ff7832854e13b9972cf9f60065ff29ffb19107119825751006071142ae669aedf997999cf13be93d993953eaabf3940d45ff801f3ff3fb82b76272c9bcba605b271ffa1d75728395544ff05aaf0c73376f0fc725fc7d0025a157c16838a8b26d35c28965003ab7584b2f245c5b0a29b5684231e1c90d558adb524987dc4acc5733a6b4723b5aa04423ddac9041fca5b42de763c77d5086ea0801684eda6fb3651338513d7572e6bbc84002a8940375c8373f4d075edad35cee2d4f4cb4667ef9bbfca57b2c87215a0e4f2bc936ee9f68ba800e3402c5273ad6ab9ad80a04c1f54ee6d676049ddb88c5707e543e9f340c62695619b78ee6353bfb5df5d13718b7dbb8be4d115baeac3160eec6c48460e0ca3901e1de946b3f862e4562914971a8b380c4a2108095c96a116e4114ce81869085c039f2719f16d5a4637e50dfc5331842abd74806516b710a323e1effeb1d6771a76a8b82abbd45a22dd52f28f0e5a5b5c4708dadeff57c0dfb605b8e7b163cd8804dd5960243c2833576137441ca6b77a462d2d49f3c460a6dea197434e37d8dc8a5a48dc0f461d3dc0abd9a4b96ae26ddb9a287852e59f96f8bf7724469e2a959c4d2d8e3f95d5bfb5c3814d01745a61285605a88328766a2a38de93708fc4eada0fa773df3d911eef8e8af101dca804b673e95baee1f0d02ce90e45fe1996147e580ef81f414181a19b73d3544da463590fdc1daea6de0a28df841ccbe19ab02e8d0de26cd157276ed3ef4588263b1d0512ff84e6d6a05ca394e19526465fb72c72441c52a88895b7ce0d81c297d85b1bb43e571d803b35b6aff25c84ead0b5c5ed009838be407b403271bcf3ae404c36f0be23d4c90b1055c88724e7d0b358c524059a5196b7339695f4304c2ad5e3d111a51ff9f2c0a25e0b7d6e6fcb1b53e13d95a4d0a8cca8e6fd22dc6386082a256849adac851de6ba7d9ff8ca373926c7c2e12671c932bd5fc6b9d3c00b1e50f096ca5c9532ea162926d840e04d41f7401f1af8501bc7eeafd9000123430a6c8d6a8c4719bc26ba56a12af89bde3b5454bc47004fde6299e2b64262fa9fcfd6f8dc36f53eaba25e1b5bab6b58a17645866b13b6102436c5fbd701d7690c719feb2d51fa4150ed9254ac5e3cb6b9fe2a5af5d9d7d3c7dc886732d083790fcfe5ca5cb84cbf6ea4606b8d978a77f36a91ec25b16153a5f4637949d5d972851987ddca641fa64df253ff53cf0c81e9eba44696feadc1e0086d7a3f2ce5b78c5f6217289b280fc596af52c6e8ddce24d96a3acc15c50b9d9261231836aa0626664ea163dcab2401d33c4f10022a81583b20d403d190bc54bc40186f303e48e7407b374f559bad05b0ddfff89e8d542575ef14a4067e9412bbf4b94550139b124d685d7cb2ef158d9f4c15944972873f0e8d1cc7f6c6e9f568438488c927427b1e8f7dd0490f7aa23e9d2729c9b102781e547afd61fb8171efe1382e105d8438ad2f0f025d278873263ed4b2b131ae9f9dfa1cc8f142e3d8e931f4d743ae5a81df41d4ac052166e9e3b9ce918fb7728415c641ea8dedc70b5ac3676c7a87d34b1c547fb19b853ee9087329f89110b3b3af217502a5dabb6ebfc9f19e5361637e5384faa1ac90dc109c7639ff7fa045e4659486489553de578b712e8f0645b5f46d942bb23a89a8b49b572df9fc1c5b1fbd9a9c2955cd3f84a0f3178db7af5584c8a50b21cab34e9cb28b39da972e30dd814fcf173549124905d9751d6815cc5261cbdcf661fcf5509af6bd628999e312cf815b7368b4a1fddbecb6903e6dd5547bab9222f288fb4efa259f3aa556917a4e8f08186c19d1e9e8f71ef6b14f64692b7030526116c47ba530fa1d8206fdfe4a34013ac23f393f34b7c9ba6e169c4ff790c820621e020adfc1f45b8c7847a8eb415af110b15100e99f5440cb283b8fc0ac3bd56d521d6d014fe22edb955e84fbd783e11dd6b22742873535dc90830d3018f9227dd105c4f108f58481a2d16bb59f37825111c7af73b05977e7476ef53d691ae08c3d44c1314bdf407479f89fc3dee6502fc7512e73bffce45848a7e7c37823d50221bf8ed93256439a6f3a76fd23e98f103971c0c6490c9b90f571a2fba20ccce3766b101d8e4e6c376dd1b0448220828e1ebb665fb0c041af819f3e30cf21a2723822de5a24ca9d2b34c9390772c69a854d1cdffc9b677de81bab38d284954f74fa58617191943c94ad383a6a6853f24787e06304896e0d15f658cbc9557141b85a21ac016936eac09f96b1af5fced10fcaf80f9f455d4101ea232baba56d0b60690461d185fa814c10c82df92bc072f3200f46af1bf7d80f610bcd8d9e45f6b13f516a69c7036c4406715002a389287ea995cfa2e1fdf7d1b3f8af0220e3f039e57c6564e0359542f32b56ee6dd54ff09d92266bb7cce8bdb60d8896fad421e5da260037f559aa9890ad6ee133711610c50af2bdec1fa69ac052a060ca2979da4ce9f4dcde24b47cf108d03d98e0682c8ab402659bccab8e7196c0279eeb4390633f274223b22a8175cd72173493539c2e44f9ca44f9826bbc54dcef18d3ae55a9da5b3e5eacee417dac17e36ef388a957ba43fb597687398ad6db6b7c16ef2eea230b7979bf21d81519539428de140afcfccf3c97343cb2f7bd2da500ec35b47e6e5e425f3bcf034f120236f2c3c364fb4343e53206e47f45317b82174537a5ed7e90ca8987dbf9dd615e1bdbcdb5ce1f61bc9f0e8e4a9244d92840bc43bc1795fa189df0ae0fa85834a7777abcee0fc9f28d88af2c76963dd0f45f0aa0da92eb3b968da6f135c94120665bd2df45fe3423083ab202bf95a61e3479151a72642e58f40d5ac4fe5e1405beb2e2592554e930c65c0ac52e51d44a20ab69c85dab12f8c08c35c5ee5b96ca7132eae176b8140f634ba0e98745dc3a6261d0e011b675158a622d0472897ba3aa3fcfefa7d02e60595defa77a06ec3057010870db886a2237fe77cce69fd2ddc1c3b5765d891286da1f7013e3adaabc961bdb3a8592897f583e10663046501e47a3888d95e848bb933439d670ce0b5319ebd227e10fa550cc0d6036badc1accce3b356200968219e5259718be56d108df678d8477d7223ad495cf08b702ce67cf5e6f458546310ef631ec82b39fbbaf276785b2130fad5f84debb574339a392df56db33113f999ace8152747f1150273cd51f67e9958cb7ff94984fbb299c43e40fafa099daeea7fd863a3e472571f5c4fe8fa8888c74b4f2a3872f44dc3edd47035871aba65c5f1053ddf44a884455b4f2407393cc4d4626a37e2568ed6391eee06874e2331071f1f4df8af7d6c9c455f97925dfc0f7d9678cb0d652352dbd7027e922560ab48ec0864f2ebaa0d8b8a03ecc8466c9537e7a15d5c77b0715d2f0f97938f063a41af0863a0f312c8e7780182b23039f646aba44841674f6c75c9cd4a5b182af86e524d6a08e9dc93cfb2e62db6896fe7288d23587952a1f81202e1c74205470dd95800c639adf11300df716b3e2861d75ebfc3d419972a44044394a764ce2b470184393a5ddbd5842f011c4b212a8d15fcb8cda3f812f5475e806b91252d32b33700664624068f8e4ef0c24ef019b619238e72777b88446464a82823e75da2591a264a3bee7b6bb35edd0a35ee4998c088f128f1888a463e0ec5a4015629f606309a1bd113f1d191d7f7a1a344ff572eb4e7aeb48f7fc1fe8907f316fc782a1ba799e727d72f4a7e54b11adfee115d3273dbbfec7f41fdd1c8ab309004c1c5673893e03b7d824cc0ab528254438800de112f58a99bfd7c0429aefe77ef29bbdaaff124b4e91888043733710d892711d6132f08e48fdb32eccbfc9d1c1cbd26014fb9596f504b75f944286c460a98bc35040005206f3147a438d6d5bd12910148b9fc109e22569918028f3f11c493f401a87efee2075c3bc671739a015a0edcf393448c8a2f71b6e2cb9e6e47a251e5a9b8572307f58b77e9b9e0e2edcfa9c183e4b064cde08fba3d9ebcb1a93cd3ce671e4220d7808f1203e5e83e20f9742b8b3131d3560b077e4c06d2de3545febd153dedd7f44a4ee94a4cff4a445693a8c5534144c5a64e6dce892bafb3ff0888c27e386c93e7f1e33cd34e768c47dee0220b19b67b028cb0008ea86bebf1e295828a272633a2843235a4358251c975a4ae7e76f15b12adf64a495da05e9ee2394752e130c987df228bba3fd2aa7a90dafdafa807c157e8adeffe6785c28140bb081ebf002f5d13371a4d4ec9b9945408d365e9c29d04e6a216fb98348a2c5b8a00f1b6b4a454a66b29a0f2a5a668e76fefcc55b6ac7ceb366c9058596bff6572556ce72249db2563b06ead010e286bb47a427dcfbc56d0b4a7c5dfc29d8c88a5378172a2d98e7a052515d35935900aa8b43f513c7a804543799438795fcb5e9d1d6315dd1a95909601189ec5f2f1c7f220f733ecbea5849e007ba3d47022f959b16fb8d8794235cd3aabd63053e1a063a2a48f54b965efbfc6d87929e4e9064074d6a62bc86831f424a115ba4b5c9e10d1f28f205476a9c8d8df34bb5f6d79a0f4b4e49a5ce34af763bf8a8010dc61f0d22d716e8f91bcc5e8397ed28005ce3ac40d2ef77c02845db38e3a09bdcbce5276f012cfec4c395dee32315222aedd7bd05d10bb2244be510acd917f86db0b6240f217b37cffadbbd04569a18f77fb72fbe636a330c0a10d8d4811416756bc79689153a1377647121b142c9f8e53b71de995ceeafae203890e92cda0dcbd2861d2a4cd8a9bd0905bcea56665107513e0d69fb5a3828a085a0721ce59895bb64a8b82d3bd88a9ae579af8d1c5d9777e1ec46e464feee61d741a3d6782cfa785349ef61a5329baa0ddea55a8e63d83c0fb3facc20eebf5a485dbfb514254e041cacb5fcf6e4719bbc51c8bc52181c31244ccf35473aab6313a48cd3bc4fd90a3152237c010f330d8801444cd0962f0cb514de06148da4536edf69685e21357a98ceff0c6c5331a468f11fa7b703ccf099c6cce309a070820c8f352a05d039bd8d431840ebf13de528ef633c690a4ca54e49168253b35aa15f422266ae24a269e123c5d4d350c62c7500500bee3262004ef65d0be2ba148bcc44c1d8ae5037d8411384f31d2d45daff881d6ffa4ba4eee0e304604a563e04cd9d486c7ccbd1240164bcef6946182c12e927c4b0a1aff85913c4027ee7d86cc9efcbf4b1cefaad28d8ae369e6af4c8875892242ea241955fdf37e13ed5fbfaf9e41a92868fa90f49b5642027b130542042335c23a4a93b64890216fd58a6ca505070ce3204e2fc1f8dc224c559e43108724dc02297b290324a1b0ab289844bceae8a4a7e2a8308f7288814564e4a900d8e255c90c85be380ef94e62c3a931db3fb6b43012b1e355cd77851e9d3552c5a10f724aa5d78d13625c70c09dd199062cfa2ee7a347bfb8cf07ffe56e994ae4d70b4d1c49c09e1536772f92dc03b80bebf521498cd1f5ad2189b9885ba875f204c229011103bc381cb8e657f384b2a622d36fe009059140d21b83719cab0ea49e5110b4184e4fd04413884f947959171ff1225a124bb4bf6969aa228d6f68034a9194cee03ac0a3a0af7053c12f6998d42f36ef13dfb578cd5e21e72b395a596f219383c972a23d8e0f2d99643c17ba40770884feb57652cf7ea63612ce3e63221de72998033eec9a1d07e9de00d76162d759d7fc6b25ec3c92ffada54160a5bf23199938cfeac8b0f7c9f85c93d4ecbdc12cd5968e2d5aed6bdf86d9cbc7d94984b75317c9371bd2b4cd656e36c6cd2664f0469d012d45b4e241481b54e6fd4007237ce42268dd050249055cc90d5c7d05808c53b208021a60f39b31d8199a89be89084d11a39a40145a309b5c338ac528932c16f531f0168b1209e6c067fccac64b348ba622d633ccf9ca7b3323aeaaa2e5145ac503f9e61cfab142b013f4092bc2f33f660ebf3575223e70ef6a87d00904648a7643113ae60831cde7618f4097b70884c17978c1c868429024cc5689dc35550ee7a81d4042fcb4ca8770c5e16f5080a470574c58346d0f9468781ece85916d6324122fbd25298ded4b2ccf6e2720e02ac87693da19a0ebdeca489cc199ca7b47960904745ccc084c1b9a81543b38ee6a946ed23d083855b7410b23d799318887b12bd6273e48169373a45d5dfecb44f3803a964d1c9cb380104ac6da68fd709620df0499a1b56ef14ebae546fec07ae209d68ee4e5be1af0f81bf008ae74330d32b68e4c53097436031e51f0f23fcf7336e507ea2025075edb0129281a699259373e3e448683fbeaa60efb79d40f060d37366636dadc238172eaef2061128a9a327cc28e4fc6342181e6a55052e76ecf556d045a38265cb0fb0a3a9592fcc9d014c9c69de39e9325ab22ea71201481ba5ee4c41c0265a6ae8b44737de63e72ae0642a034b20b90951937e1358a6535b8ecb6691850bccc7a0a041a0e00307c0cbea3094cfd8022b55b90e5f51402776c4b8471b30774edba5f8e188507d4f6e1196282bd4274fa350e10cd7b764097d0046df304fdce06ad02a575c0c5b91546bd4021208448ab075a97344dfa20b2f98af6d3b067b846942ced8d61ea4294e5ff0fe93c41f529dd2cb744124c024143290f4ed0f10949b753c4b50932b05023a0004dd06d742b96cd293d0285e0af686b1902133440eb106e350e8fb704b5aad02748e5c593374ec10bf4fd204cc01561b987e8a86eb7db31c85b73cd0f46cb2628412faadb5d0b4ca9a7374449669cda3f7e9f2e1d9dfa889538ef9dcb3c62f4777f21b18d835cdbea533b1ab6cc1eaa62b862038d8647a122e84aca49373c45200436ad1b3ca37ae9a8203f19306628d21397854727041cc88c58b572789876cbf0e140c9d20d072f19df917bec78ca31384703efb43b8e3494deb9816eee184b1b5869f4e19f1a71f0d19ca250e0e13878a62f1fbfe273ed574ec6ff83c6826bfd43fab451dafc44cdfde55fe022b8a6d483af2076ba6b7968900dd79f4973aaaf82a85fb3f76495dc6fad93fa90d4f0719e86b286ac0d91efe51357ae03c4d487e106b87cff63f3b8e43f833fc74bfd7bbf387d2fffb90ce402d6d07a05e08b0be1928bab4404af273e56faef30b521a4eedf9b34b0eb760cd802d145bc7eb44fbcbf99a900703420731d0c9375d7680f7400e2ab1ab096422de5b07db8f4225f405e7eb889e967d102160ec0bc38ca2140ccf9de128ec7b48ecd06889e2ae470e07cc0716e040f5c7a43cb74becf9f0f90a20dc522a622f1fac5999152e4e264d7e529d63d0329426a400a5d2a8979b51fcba63236485fb562d90c81071936f60bfd2a1fa0de58b42beaa985f7d87ff36399a119f7e76052fa7398b7536db00185f35bd5c8ca8afcbaec6aad4e49ef8b4133679a3cd010767ae8bab444f2456b84b509f98056ed4523504ce572ad4b2e2130a5d593e0cb44f526d6294b97ffccf077055c98d088bf85ddff2743417d9206c185cf1f063ed63ab401e486e369659684fc82a04428628e6e708995cb2b834fc87ec08f927ffd78981e151c8411f7e01ce38472ad10a49826a33f1f5f72e8912ad1a0831052136274881b680dcec5af2884f746b03b32cdae00f95a1f092e64d30540c88367b47c7fa319a79abf841ac08a54a89e644e2a5a7e52a6e58a4fd5416848158f7074068de654f836a2683c38b98beb0fbbf3e48d4262a63f8a77372e771bcbcb73080de591971630bf7ff8f59a2b47669c5c10cbffbab780cddb904ef86f1e532831af503c40f5fe629c58b38be897b365dbc3399bef79cb585d1dc3b9526db085d7912ea9b1a7f07b633868af0ee0635c385ea33e0081a2ef005dd9e39f9d7ff07703bd88939dbbacc9ad7c7fba7882aef11de586e4345a32daf54b9591f1bd061907984c70b7569b7a426b85430ebb963e13fa18dc387fafa6e5e93877ce5e2be7e623d85e63d3e6e986ad3c451927418d7e56be92ca5fd77bdd47e59f5428865cced56b692418da35a769b094f70105f77c59fda6abe6a20b74743341a0df5ad194e492ffa1663dd4b8d48ed63a1474a5b304f8f9861fc8467a5b572cd1d287187c6e603f75baa2e6084670f0c12673466ef0eb0840c314d43a5900104aa740ae3fabe4e59d69b9a28ee59bdbef192883c1d78c7ded2fe01323d2f4c40cc13205a6c2b862ceab447329cfd08d3262a18b83a5801349426e23b3c6a4484264dbbd4063206b3dae4b2b1a5c518e5bed03ea7795fd6fdcb2a7fbf267d7eb4552165cf117bcde8dfda18bf38a424482eb26d3cf3e822bdefedd3ff9d022100613bf5559f44d4d59ccae3bb285bb1547c115b7516470c415907989cc745c1fe9a68820cd86efa7ae84078b9cce5c02ddbb85d1b39c158598ebe6f2b209794719d52b9ff97b865c568c99292aa0a86862825891190315916c5eea4174ba234c4914f4359b4acef407082f31328da9223f928c098d15d0b501c71e245c136caabbd262457f5a317ab7a5519ec3f10af84b196ec50df11a665a1b3f42c62ecde03658bfe9daa056710f9b985a78136e4871ca4da0f4649156573dfe7eaecb394a15e98d75410191ea021ec27cc496cf732ab63724e615c134a0aaf8bee75065ab8ad9ba9003a9f5690b69ae92856902fc194a152915c15e7ffa57f6dc4a0a339fef547c64e31cda757c57cf2defb5949620ebb7f956f773116cd16d89be44e0a2f029b22f15e6dca62b637ba73a74af034deedfa262b49523e866fcc20451904e32612208b58207f9ae6c552d2cee33b9f212eefe7fb6fc53a0016a6162d76950d1d1b4cc396950d6541533f48570fb5cec03336e7782b4773158b32c0fd423a15f5c33055e6c14a4270164e2d2f1a7387d86c8f8771ed0193e3f0332c33e451c32a5a86668b1c3bbf699eb80b7a294665c6b229a21ef3883a45364e8dbfc55ee29d2521c6632cc997ca35a5791addc6244c35695df73e53106bddc94234e7c1d4e34886e63d100e0daedaaeb5a0a4e88ebc1bfa2c41605e68438088966310faa01a7289aad2e4eea648a52a227d5ec65f3529401d0759cf0b4c014d70b6b587660e8167c8d6e72a8cf5ea4d9677397b9b184091af45b5f293e8053eec2de5ec1199c6782510b124a717114089496146d298280fe96bae1efa95fa2688a4320291ab201578ad26ab381e717b8a8021288888a590c150387dcabf0701467818ae93348f848ad55feb1f4e3245bd0f85470a7626618c6151796c18d551c299616054befb46a3444750a90b67244a44b4e51540e88b4a981f79a0072403e12ab58c43a9638ec3a784e4c4e91f0f734c36d4b7d8847bbb2e2879dc0b395c41453de47b17a5d0083ade243713a02a24b7199549188d31dc098b314059af6236eb43345ca9e68f34053e40491a357f6dc1e42a2354cb3640c282031c571c706dde967bf51912897e24f6c29f20cddd227b314e729c580349cb63c4571e104c19cd660d27626c71864525c01019715197a0742e953523c6b5223c11d508ae7bc0d41baddf0b232cfbd28453443682169370e964f8ad38b9898df66cc912565d7f4c11c4c81ff335e464c3a62988ce9807ed7e7e5f876a05ba3ee4c8ab603c07bd3dd71a1f899628625c9c876a79bc1d140302a03648c44e1f4ce2c29cae1f627da6b05afbeace3b27c24c5073a137b1a1f1e48a4283ce13849ffc47a14b72e6ef3f2a1172404d95dfbcf07bf06bc8dadafe0e6297ef9d0f359edba7b3f914995fdda44c18a917ed2b6f6f6ff08644913459e96dd62214331a0ce63a11892f4437069ecbb21c60fec4a53144729bbf6e97e9589b8c6ccf7b3d6b4bd93eb4272963568f8259785e42c2ba021975c6e4aa61bc5ff0fd6e2dc0ee9da4204b82f78ca2f06417f3dbae029bf1004f5fa4893a7ba24d6543da84037a50a4b4bec9a6ced7e59909cbf06197afd554ad2bd48f08ca62bac0ba5227b1db605dbf2ff20eeafefa2d0b53f191b18bcc20a42223200606bb2bdfbcb93e4bd489c3cfa55e9ee0a58bdee34e5e1fe01b2e2687c37e59e0e2dafecbd0e321d11cf6249040bd2e41d48e040aeba47f4c3b9237c70ca7473bc8678058d90a396e8afda86f3a796c5364082040e119d7b878a5564a6760b85aa23d1206144645a4001effde578ee5bcca5360be31c583cd3f779ca3699e899fca5f16999761e3fa85cbba86b479eee67a262b7115ede8f53f7fb04065d651002ad69bf3d2cd338de3df88c3f955c386b928270160e2f1852ff9573cecb6ae0d1a3dd002604440768022c7d6b5491d649dba35879e10433138648e0c8bfbe848af34855f3463aa228b17274c35cccd2b668514d37caa36df73a3f5abecad621a2eca50e699057bbb20f92c25eaf15a38b45ca221198738c112ffeda2ae329ccb2063c19f9664917370398e11fe3d0840c35538125d46e9c1e3278ea671eb3a97f3cc15858d984e7e164734fd5eb9be627615a8f2bf2f21a4f67f18117e1d3e598b585e646801d4071ae08d024065e8cddd52c6ce3b6057e09d660eb9844fd5bd5a3f3409dda84e565e21cff3983d245180c6a055f1b019303af47877a4cb1cb0194310f57cf826328b6fcae362ca6740832fa0bbb61edc0a35211bcdb6ed149bc5e6e195a5189f1f4a3aa55c13dbdf2ee060e52ebefba5a5ab174ff4b1e985ae4fc04f95f5f3fb7573e31d5236c782c65ce5de0dd4444cb3b13b211e1334fceb0aa7d40ced46f70a50bbd643bdebfb451589e24bc54529ef36de8b6a707702809730b463e7f1acd00d1f51b863ccaefecbb25071e54c59442d47835dd453771124c0d56249259f66d2b192340fe5eae01ea8c2e61befc460bc5f85321720fc635203b2f2e77bacb9d3c7157e9c6828a07e4f6a8c7d6ab793aec025b49d21657d21825e11be9e889c563bb7018c436bee82d394a7a6256a0f14d3d88c0a219d307b0b00db1d5b5a2b8831ed7872b4c1b5783404d412ba602f98e45907f54a953804171b253cd2fca04fbabcbeaf14dc76c24314deff42cbaeafdc1c2b9173ebe830a8c3b7a56f1d241ac4cfe24c0fbbc0212fc43d9cd7f47523033aee0971bf19b9bc6b7ea29f1cbd2c7d383624ed1a6382ceb080675ba31740650d78a1e0b974bf35d7471c46ecaf7ffb810e5031f4bbde0ff1952a54567b87d82198fbb21b5185b2ba974079de787c6c2d627533a0824754ff4812a56ab2f5fd93265c3c3c376c0d5aee8060de3f4ce97b3ae85b16edcf32b55c3154e9096fa75e346ef2d485abf8cd2aa35f0e10e29b56ecaaaba8b8b9ed0e4ab48576d41b82441286906204615223c470a1756a55f43c76efa1cebf89f8cfac0e92bf488939721d8b84d930148ecde5e842ee86d92dd9f266630aa2783013aa013f637f63531568c3623e41f5203b25d8d98de31ac78d1f8f7aa44761e857a08509f23175db866938a16a0de538b898e1aa9e5f9a763a8028a4030638a1e4db3858d6732251de2622e37e5f88b89aff3376e5697840f6194bc381ddbba64c577c4d8280f7aa747159c04cb066918f9f42c90de13ddbfcd3531d11935858ed751c06f1ba6a9064be08b3592cee0f49496d06125b0376ca993a75f9343fb7528b4899f79890b7fc9f979ec4e27934215700b663a9346560af142d914324fa58bead746b84216e9d7ae0e7555fe338e25dc3514121a113a0954bf31da499b1dccf53c43deb42ef9921b54b948a9e16089a2053fd7e727ab3ef423e8eabe5a2cff9d7d8bab5bbb6e9c1e2bb9c0475bdda16cf2325d46556a0bf4a193480818b2ba91ff55120c336b75af52bd3ebd5292ea4ec6e42b3f5759dd7365ca155dc8c55f17f1cb8d46c07a1919b50dec4a2cd0a4d922104827f2e8fe701e3a180ed83974a996fe1f90506bad3a9de16396f4d5b7da23b187b48d1598c3f9c193dd84ad0fc0159a947b04da678166049480211e15a238454cd8896a9b40b6a9e5b0cc80e9fd22e9a8448edd1f6be38b375bf211aa4919e2fc8a64047a78fe6499ef935d5ac8c3121e5790c0b39fc30dc9b30334098f73d41f83e7d3893831070363c0c58fccbe210a87017680569f9acc2989b7534997c592600eb1f30239d16f2589261815492f255b8aa39fb62612e034ef588e612a801d021ce0c6e1dae0dc46cd56d61acb95f1f91078d8408815b6c40c69163860ef655d3c93c5764ca25e0696288f3005cc404e5feb01bd9b4e0a96d558f8bf523971e0c50f938750628de65e0d3669fff0cb53780116a944d1751dbad08815db6fe75e65f4c371cb94684c7878e27af101026fb403e30e0e437b66bcdae1bc2dd13d0aa5d46134baa5a04ecfb30de8d8ea8e0475cee5b40a6443113220febd38430ba2f697f0d2e2be350a9396889595c6d725e3e1c6a2d9da454e83a7f9ed249aed03e68ab274911d9ccbec4dcf76cd2dd0c9ed07b9bf9a5ba09bdb037277357f838e77ffff9b5b34b5c32aa490fb82a7fc4210f4eb9105cff9c520a8af8f367922546f2a3a94a59b5671676d4d5bbbba2c24e55a050dbdea2a355130a867205c102d14d37cd9166ccfff83b87d7d1785be50c906d52fbb8298a483da9bb677757d9a08189ce978f1655c37bacb556f8af621facaaffab6e89ad5bc222beaf664f4d0456a8dfdaa624177d56cabf447841d725ce49d8fd099169e37ee783aff69ca60889127756214c7872f3deb5d348ad2ba53f4a6e9c1416c01cf921a750ad16888454f523f70d0b819d0551e42c87f11a9a862e6485949a513af5e414ceab688b779545dc065f2ffa0b1513a309ec271da974ca68dbc94ae2c7365c466c4b52475d4f9f6bb5f0f79135a6566515cb691a46a1cf81b7d2b5c24759095726546b083d7410b2e516d3c290ed71ea91f834eb806d9689e1275d895cda31ce77186ef91baa3bfbeb6f5e5e978bb2b4ff25530f6fd17c8c591ea93923c03f1d87bcafdf748a595a03ac7fe888d564451156467f10dc823c31cb08acb549df38ac8a159f80073d553f144eff9217311b32dc450292bdb0b616ba4ca51f96e7b1e9387163252d706dbd79837b9ff338524bb390866c57eed2472fdd7482c5d03cf1a878a23b0bf48581d68e4db1bf8c1d760c01d2403fad12fcf9d8d1e410d8354557936ab7707652c4cb79b82563d81d3e86cc5968d59918abc786a0d7e09d400e7be79200c862494852a7c94456588326d8fcf2234928b57017f232db2bcc5fe3feb9b1069b53a39e535cecaae089d611b8f994c609a56785c47e09c9f034a0a77a5572010b1a20e82ae36213e1fcad3d0c6086dabc9c885e71e41b2b1fe68e872a1685412564f2393b9b35dded1ecdfb8581c54c4329e870b5acd51e1a393823bdcd9897f714d1c9e84d4c2b3af11b9a56d7b6fb9e596524a19e509890a210a21f49521e163aa993663ba97c24aaa4b897a437856985785ea107760e24e95944718dc558e314a3898d624911e54a2391bca497ac5edc121668f9c039c34143ef4e8c650e92143c25945432e7a8231c65ae789f2390baef21a0a92e78501329c214977845052da54992333e123ff3416906be829cbc9963bc0455c5e1365fd6584c7592844dc79c2fb82c49407c70f39e71092c83beb5731e319f25226199224aac898285ee2bc6cfa3bb1ddad9a9bb5dc2e6bb973f6d8ce9706dcd98db933c3cc4ba46962c09304e68b1224706228d4d85171c5e744123c3fe29c79b2e2cd068c71aa4b8930c6c31caf3d530debbcd67eca661dbe182044c61fc03036d1f438e79c31c67464bca633d5421da52f75e2184098a6690a8c4d343163264d0a356f70b99d3b67189f88e131b670e6b8f03a8e97d74039433e784d2567ea6ace8e16a8e664cd42bcd6c9f4a43a385242e88272b5ca831736e1e53551d6facd3ef318cb6338bec72ebba8ebf12c86314e752991c51663a0182301a0126a1943f50688a97517cd62304dd3a2ec4103d6a5b9d7c3546b5c780d03159b2842aa364b6aa8dc20d5279dea2e5ac59ffd59edfb97a6290adcf6abdb7767e6a2259670bb1d5eb483df7e53abdf7e892c10df74af17fcdde4846f1db05a82474f0d3c3754e07675f37bbbb5bae8f8db6d0fdf748a81ac25b2ba14d64c3d55818117e5026e7b9bdf6e95b0fc76ebe3a2fbb7cf00df44a1703b062e9a7d7b0a21d8aec245cbdfbe023cbffd05177dfdde0e017cd3bf2d6e9fe19b18c440d6b77fb828f6ed361bb82163468f0d314e2e709bcd6f1f91f4db4bb8a8f922881479f1f163f262086eaff9ede799df2ebb68ebb79b4a720ab023c7961d6bb2f068ea60bbf7754ff794be7c49fbb26c52a51ef39454fc388e39ed23e69973844eb8710b856f5d07901745d106f52fc79b0260a58b5ea734fd9cf69c3316a6e9e71cb4c1b79ee30888ccdb4c4ec7c0fccbbf6c859580ba9681bffccbbf0c8cb2e7557af1876fbae7a149951767ac585901474dd66b9dc3450de7193e1123e79c7100792ce6b16f1c791e7beba23e679e69b0452b6e7cf982759d424a32e3036bca0c5fd2f8ecb05627e9f90cc62aa569ba02637cce2250240c1d372b6ce4a983cbf90c9fb3991863ccf33dce39678c2f5296d756668050e5ce15efc96babd7ee2d5efb07edb61a30bcf6102eca80d71e04e286e0bd7612a06ca879ed256887c0452b54d294d74e818b56a7facb25150a1b48392a26218953d59aa1de52191c162e01e39c731631a691c2f62d281a465e8779ed5048283af85ce2090e364e4888ec193245063c150b096639b4c537c3c877d04fc225e86b365078f4e0421a5a9dbe759d5eb4622b2307177cce4c32d770b29354dc3eed0f0770a628d3fbfcab5966a060c863d4aba1a7a2314d54f9e11be6d1b46bc737ae4de9a2ba6671395dc34a35ccc34a17ad318a6a18f372fb75ee7ce58a79454bbaa77dbaf74b7ac569bd3ef0f3013e67df4571cdeadc0623c433d46122860edc99cfcd3e4803e5d4640bd60b2b70d5cce76caf73205e7b09285421fbda43e05bfe69ed4117ad54305e785dcbad50812fd6b4afe73bab75313d7fbc0a0523c70bbdeee1dbc659d7beab832f0f72604b6c122b5531b3895c6b8569d739e79c6fce39eb4c6b71cda4bdd7566cb188b1088355218d5faf2a246697ab0a65b1d5aa42589b6615ba63f955c8926415aafa65ab0823d6591433eaaab6ead8710d63d173d8eb786dadb5ea259a9aad15c58d33fe1388b58d77b06aaf575dcb9d2fd6aabdb512a2bd6246e0ea648358be228100917105fab8dc31add70fb9a010676e66ddc66367ab9393d4df5bcbbc8af1e75936620854e078c2ad392d369da35f8bf17e9cf3ff305673ebac8357acecf5da76f6ec79e77bbfd842084102c6186bb762bdf75a7badc5185b8c7150881fa78d848b86a88920fe5eec178b430168f919447d3c87cd68a878f8d333530cb47bc984a392ed43f3a9a2fdd07c801868a8f478f81a126d1f0d359fdf9e71e67ecc9f942926dc0969f8c0360c63b4201b9c5e59d7d6e4eb2989a65b52a727fca4f8b6c1f130dd908e523a51d43299d6a3ccf783816432d8cbb78bc40b368e2459cb7af1cfeab16bf8c926d105c2667a6dd84c6358ce989bf584bd328f07734b1bb79bb5da6c8998cedd13951ebbe6e5b2fc1e9b38fd499b3818dd05608fd538e8ae0dbf86afac1446343accb707c39863cfb1c7729646bffbd13dce1b808fdde7eab16b08fe1829f989f96069eff1c8e39df8a7f61a62206ca6553fe9457fd2d7f0dab099a617351deb5c9ee320e3b173d071d85d74749f1a7e0d5faf9acf8e71fa98d7b662d587663f46b672cc49d239e81ebb0ff9a3f3294b1ed68c18d6e9e6e9b9168b59ff496134fbaf611501fbb807c32a641d9b3e0e5b60b1c7ccd3c469ce4c3f9829be6dc79edb41b6bf36c6ae5aaec3676f995b8be5d5044052234c18381c94ce9f19e7c49edbd7763b649e7f688db08760bf1ea76d06fb8d5d7ea4cd766b843d3442e621651eecb78760bf1e1c945898c002134c30c1d652f8c2401f39cb2f1a115309d3ce94f10f576d33d7b646e74d237f866f78d6f291e672d8e8f887813039f248df18b87fa4e160b625f0167fd4738f5584cd3b73b3d9ecafb56082a39f356f7ccb4eb40ff28b7ff5e71aae1a77d8f509f7352d07699cb971f7bb3288993e083e36fd8cc17479370e3110d616eeafe6d5b555138882f9c34078ccba36bcd3d638c4b7bdcf731ce6252cabc33799ce66590a42ba0c639d30e1cf387c0e9dbd3776793906564b96d26444d786fd75d6ac8c3376fa881b3b6b27b00edb3aebe3315a909f1f29d98e43d605c29b88846eac17bfd2c7e370685d678dc3f006966c876f3e8edd03270e430c8491b0d3ef0261f701833ca596e75aa958be5ea5cba5c5ad75f97a952ed7b897f2eff255babc54ea615d20eca96ed4e6d84af7de2e1231c73f66dd05e0e1b56d1aad1403e1316b1cb660c3b445746fe4769d23ee263196f33e4923622a9d43f62d003bacc431bc68d6455d8efd4cefb9390cbfa724bc40d853dd8e2c635eba48c44eb7b996d1524b776db895c6684148cf34a421d105c2adf4da6eb41c36c437d2f7f63dc6c10b847d1c6edd638c49eb329d0ca7bb6ab91530d6e7a12c1d9dc8521991d9729d00b3e76ed933763a3e6b75c74e97c98844122207d9eef1eb759e341460e1dbda09b2c3dc84c1dcd64ec7ae135a1f133dc761f838566ba55504ec663b6c5885b263d7e7d2c556fa7878835d76182d976b2b94196f6cee9725dd45b66a39d96711322d6b5aeb83e0ce81c5fa8310e1dfbd4b249dd86f4d66edece631e7ce0dacf123edcc05b067f0f3d3df6a4d1105e3ef84fd18f8846b1b6803f8d75b425b87a6ea553fc3b2fb8e33ac2aa467a842d94531cfb27e86355b7351ec33acd90cb334b3351d18cd84b33533ac9b3b38597c31ce5967118f786711cfb06255312bb12bb12cb12a7c730d35f0ec1d312f677db3a881a781a78187b13c29173ab82be4af0781a8f244f4d749b8a8feeb3a53c3102b778552179555fd80c126affd9a69d2fac7b55fde55ba3d1f8ad7fbb55f1dbee954d7ac198ba5b5d67e892c506b9f26a7aa5f8fd7afd73ffdd331d796679554bc96bd0eeaa0760ca4a0b5d6a216b5d65afb081fafb59376d2bacbafb681c6d16bd0a04183d36bd0d0ebb9f032994c269349cd38f23f21fccfcf8f4dffc76b9681238c948c3841523192bc8f8f4f9a394458c1602c169bed590275e7f773a18a7977a6693a59877124659aa689d3c73a98fb58013142e3a5a94acd92ed995475a6a2ac9282508290663d618089c1625ac37c60b0139ba6a94db0e0e4053764d66c2102e2034b528ad54cd3a78d006c58ba1031b1424377e3c7e76c355ef8582f1dcc124d5b7a4cc171e64c0c2a7c882b4c53ea058e05983eef748405935d9211518f56129c9aeed1b4efeea05a384bf039a1891e1755535a48316279a063ec05f3849da74fcc2fe60294da05f9e034cf9fd363bc3730374d9af6e99e69c662522e56fc799ea64f4c06516cc824d1d01363c80ef35ce3038b9da7540b376f9ae6707879f927c7b084b9fc1cb5a2c867f373cea667b74dd8a9ea27c367d8e79cb35b9ddd8950f179c3e79cb387408515e8903efb0bf2878be69c7d84eff3cfe79c735195cff987cefbf8f8f8f8f8f454e8f898e7582c168bc57443c044e9f6942f5b829122ea61567bced5145fd197d75da252f8683d9b27557451452a1cb075b6000c16638e603022844169dbd379bd9c61311ae6c1dc63301abe614f80d594340c56b328e26c00411229658094d91d1163752480ea0594233141a4f4c871c6344df356a18bbfbef8ec394711c9f059e873148a1d9f67668e0d6db02813858945901838445839a1434d143c46cadc184d7d9e311317c8809d63b000f41002c3110e292b2c4962aee68ad8093b11a541fcfdb02e0ffb602ce1f0a65d1efb25ba68078fdd02634d4eb6cafe8c1e73788c310cdf4ebbb33cab74f5d8ad0f8c1d0329608ca70c3d2e1f631bc618fb88243e8f31c650603cc63e35a71e7f9ee7e927f04f979d4f45fef4f0e7799ee7d9eba179d3b3699a5490bce905ca8968bb69a653587c2c163345219494a987c160a6bf6942e1f15a6b0da5cb6b2d517200a1a2d06980d6e1f35231cfc9d467cf39bb2c5bf96cc5dff048d3844f12003963260b89af8b1a1bae5c83c83c4d2d5e59282736f43985c89821de1d2b606a8c9617ac0133ceb969a80b549397aa1378813a513445c7400aa28740ece0c5a927a21745d121208a6ec3a20785708af2a2eb455114453f63bce8b28b9a2ffa94931511b99af99c7b54728099a212e7b1152cb22072c249f1bd9e5244837aa2e2b5d3942059a6a6f86c18e708ef14cd570c9a20d1b125cb9e245078220f85d63a9b396b5df5c860c27104a786940ca435482e827bec24a1496269903509c979a7a4b000a12cbf94129ef8f2e7cbd26d65594ab9190366c86b5ddeaaaa2fbd0e152840d0d8a893628658561d4ef00694d0a1136389171d38ac0c5e8dd71863aca317fb9c8362d250419aa1f4644f0c329fc852eeb12ccb5ab63a78e7075e0b678444ac9c8182e14a91040425235529950e143f3e5f557a52f39b8385499e17e78928da470e0398185e3971c30e30c84e83d61bc5e64135a6878eaba71e783cb8dccc89f38248d515302e644946394f5d3df1d80142d66e8be13eed20faec53a5868e314e515a48d1e273333f93f464144f4a55af6a8246ce7907f049879dc7dec25eb5765b9923e79c7346b32ee3419ea71c2c3cae5263c85204e491d95155e468ccbc3166b94543d9229aa1dc4f38966abccb2b5fe91a8c4baa243ab026b5d61b890f1690e8a1cd00850915569ad0dce86254e2ca7391b369c53d8f9f8e383d761992168fbdc34537786632c705189cc0d41893c402858b7cc509865deaa6e65d5c4ebb59c3bc6bb3376af64809b7472b7e2ebb56c23768d9cd5ace9fcb3afb9e7c39f5e261c1d8d4dafa607cc620c881074e99395ce2c8592183523352a6620f81021cdfaec796155bc4a8c078a9e835d5920b56544c478aa40853c405292350268d188ad031030565444ae7b61f8d31c6a688d2c475faec397bad5eacc86082c6d00e7827450cc52f53114902e1a639450a1f0f2924474b626c9199e61b2d40a0ba91e40a878b1770b021010bdf744f055f5cc831c31018516050985aa3987a5d891cca840f10f2909a3c38ded82012076889ccf44e1e9ae1f163ac4b1821e9aee65c05f7d4c0d9139f9bf9aebca85214b9e06a96406ac18a0f24225f0e33d6c456b256c8967b7a04f8ecb614a2eb91e4ea052551ec900f8ac725c679babcf6d73acf9bd75ca2f4387189dae3a2039b99344d57e4242de162d322ac9c73d6152e796a8478ecd69633136c72ced95a21fb654b54d60ea03397ad0c07638c9704a04441260a0f0d0134b9ca136072ee2d9576ca01a8b8acf19531a2a6d739975ba202b085cc639761b7d5496bb7d5e89965b985076d683543464f478309cb9e92c84a6f296b8953e614ecb88151070e5395147a5c453acaace5e741a98ebea37e74d945cf1ffd830d8fa31b215180d11906501de500011d49d73aff5a9f03f1434b2c95d109047c768bf5d6b99ad861bc84f5c8224d079fdda2c23c75da10c1d0650a2eb7f37ceed42958c8a26551e6f16f9ba6da5f2fcc7be19763e0a2307f790a2f0f810a54676cfcebf57208bcfce5367cbbbf344d67e05e25101a51c1a2a8ceb00cee95f52f1f91e55fafd7cb09121ebe31c3387196702fdf171dc0bffc7cf32f975d74f6affc13f35aeb582c0363c058bd444bf28fca8c8a87c1dcee73533961b0990c9fae697534b125ddba82e46086633a310fdff699adae8d06f39206ab894dd7669558cf66ac889b7e4ddf347d8779d35b1735dff453367381cc9bdec195bcd980375f78f3a68760c220f5a683303d04092364bce9255c14f6a643a0c79b4e818b9e6f3a0a49de740c5cd4c39b9e82074210e64d1fc14535bce92a5cb45205d5bce92b98be02236ffa0b2e9a80377d06a6dfe0a2f94db7e945dd12519109bee9d6c8a48a41c99b550c8fc59b6e6f985465cabcf97ad36dcfbe4628e1c1020db0089737785e59f7301e45d1b54f86198c9640ed891345863bb1134470760999c23c81b24b539c56c162bdcdde72ab9b41abe52d4f01b73c042aac20eb5be6b77aad5eabe5b6960795dff21147bee5255c747f6bd66af9bea8886fb1a0f32d975dd4e75b9e7fb5194e3e47e59c7b3d2932eedc7e8414df302f9d92a15bc00e67b13801634fbb7b51988521d83c8163c58605262ceca42fe81ae6f1623c0920682ba10ca1820f27a53c5153575d8639100f05638cc7183ca0d2dfec7061a297278d945a47c4a3f364c839e7b28e238c1d8ff1140c2e8fadf830c6186389d293c1cb1a29496e301d8c31ce398f18fb165d09f36e8863ed7c71f42de2b32c8dccbc862a5d21cc608b5e7b0812469400010aa040a74ebdf6143c100220af7d04172d5fbb0a2bacc0f7daf57aea48ca6bbfc14543485d4021ba2800746e5ee38bd6a916705ee7d737a65c005fbbf5617b17ad53bba5d7b5055f8ad76e95e8a9175d5ebb8da29db26801394bba0ca96961074a840b9b089ee769346500f957b3e09879cbb82160ad9ad921ec76bdcb4f3aef72f9071b76d55c3ebb2ed7f2daf3567a2d664a5847ccd49b2d361dee00421709d738239d44dd1ba7dc2889306a8c6d8ae058d3befd36d7f49e6a93f5c1e7f8a6530fc3d71e62d06b1bae553f35768d71d5577bbdb6059c00df35585731eb456badb5e25ac58ac5a06a735cab59b4d6e6bcf7edba894be01cd82b6a315bf89682307892b0f9e9287ac1c2908259ad5f313b214992d4a2ae2adf32ae6616748659ccabac6cadcc29d7e1c36bcdc20d0b195e6f1773b0c73d8a28c4cc20e5b3cb66d93d43b1c8f2d943c823ee88cb62891e5ba8c00ad4c1b73aff2c02ac57342cba5c6183ab2076ebcc75f00ff2cf8ac03c1735a6618d71893febdf1c672ee8732b80f812e39cf398b1f0b5987199db88f914b3f045a5bcc62240f43cead1354df452749cb3701c7325b03e6fd9316cef0d2b77d9b5cbd2aeb008c85e6eb3dc295c9bc69e75ce95b8f666d7b46c776f9d7ec4cdb414b09d81dd5960b4bb6bd3b9c4185f6ff988db7a0d252d17e24bd7c09c73ceb9962bfd45d3bf1de7cb5f59e839fdd356d7a644c7086c86f8fcdbfb3c67eefa77d1975bd7561ab863b5dc79c26ab9d9ccdd1614f42faf2f37b18bc4cbac0738ad2b7bcd38048ea9ac7d3081cfa597355d65922f5a7e2557c799d3bda68b66eb7ae9a2557ffaeb286f5de7b493e6d1b44e35d06e346da477a2d0f4145ef49b7496631306d22deddac91fdfaedc29d256b0fd076e8e2e123f3f567ff0c1072e0f366436558418ac08b06e4db04a7d6d5ed881a708675f98b9f5bca60ae518dcbccd66de7a2e63619d47afda8a02d7366a8c473747cfaeb588458c4390a057a8c09144886b1b6bb8d2505083d801e0a6d3343ca60140c3bbc768b92a9500cfb514e0b97304cfc93e969b7dcc3f66fb58d0c7407c8c848fd13c56008fc5bcc34545f0987fb8e8068f790817bd79cc435c547bcc4754a19ac71e7f30805b6d00a7e5ecbb0720141ebb16f30d5ee715bcde8e692b043d0edafee3668b06c237ede7c7b78bb4dc871745d15bf746bae872988b64cde6328f23eca461170d2ff9f08d749bdd966e4db78ea52e3a7aeb02690f80d78b0ac0d192f6e1dab493b41906d23e6a372d2d17f4bab63db848bb798b561f44b5f90f2db742d0dbdcc3ed86f5071c93cd4ddbbad97cc4e50042086e7dc4dd2002cdbe06cc2380db019018c001dcac67905717892039a8401c1302bcba482000f862d6a2a8754541053e08377d680b70910602448bc3cd731dfec3675bd06710798367f78bca3c7b0821aa10ccb39b66ee3e4db320075fba072cb05f6ea0d9bfd16e1287fc437d4437384aab17086ba0dd24b2846bd32ea3fdd08250a822683f69aed658ea7a6d15f8ba267a90679a02dc87567f01b4dc080e82368207294001b49c4712704c23282001b47a6d41b47a6d08a01da016e2dab408b4fa21d0eab5198056afad00b47a6d40b47a6d3602d00640dbd7a61d04da8981b47ff050a3a55045d03548ab055d5bf0ddaf7770a7d517002db73f00b55ceb4503002d073365fc073414d8de83da0966ae5d13c93a7c4ea72582a88093c5250d14173b9c75717851ebc25bef8096829d39a6ad60abb901b6a112d263461ba62b612ad360e60896a42a58522a5a4099cc5a6706150e266bbe24c9c2024a558ad0417564cf9292346bc634bd4ac0509124048d9396365380e68e567d014c939dac19be48b51113c30be39c4140250995912435e8e4c0d930affd9cb9f0cf7a6a5ccbad60fb0de3b460beace5f658cb9d62edc9cdef732de7afc98c0143064a92245926703e1b36a6a2a21076f5d76159aec3805548017f1de6846f3abdb0aabf0dc052a30b0ca7312d6cc1dd1dbed53d3a2d68764854766470d761bc8bda2f7f1da6846f2252f4f02db9d9f1630cee3aac7751ebc5a704d604c5e4afc3a25c74b45351fdd3bfaccfc261151a01dfee70f852c237154c795a4ad3c40e550fdcf557efa2b6cb5f7ff9f0cd04666010a3e5c511224870d75f4d17b54ef856620a9319372ecc7ca113c4592e3f7dfd75f5aa515131f8327aed5ebc2a5480bffe4af1ed62b99cf0ad862506353244bdd0c607eeda2d7fddf5c3b70d7851e1c2478b3538a0e0aed5f2d75d417c738195123a499e3ce9220677dd8575519b4528e7a2e291bfeeca7239a9a8f8fb45f9ebae2597aba90a01fd759712be5d20b0f7d75b417c2b81c4891b1846f6acb9a30477bd8575518be5afb784f856d10cc9c0624d0d1956b8ebade145ed95bfee4af1ad6ae1a2878e93ab1e308a70d75dba8b5a2b3b192ede45afbb6eb4c6545474129daefe7a2b4bebd7025621db5f6f45b937cccbb5a4fe7a2bc5371ca461f43481f3064b1cdcadfa1254aed88082c574e70416eea2b6ca5f6f29e15b079cf81072a487a60a0bce52fdf5966fc85f6f29b9b71177ddb45351acc3baac357286558876abaa94f00d04199c76c3ac222222b86ba7feca800b9619473000f100c15da9bf6e3ae1db0a866024b913acca7283bb36ea6705e4f1d7cdab8bd6a8e87d7a7a6b1a99324c5e15f2bff9973389fe7a59f5c3370a14a138922606a43b4eb80bf5d7cb20be39111b645cf042444f0cdcf512eba2f649c8fb5be2ae974e2a7a8508795b2e954acaa62a2480bf5e2ae1dbf5f9c820be15a04eb0881224413a3bdc7512eba2d6e9af93427cab70645c2933440d942333e0ae93c38b5a2a7fbd4cf1ad0e87102162648e8c30297077ca4e46c9bbe8f5f2c645cdbf4e8ea9e87d715f90577f9dcc425a91c02a1480bf4e3ae1dbbd97acfaeb648a6f26948921062b6fdeb428c25d277517b552fe3ab9c3b712484b5a00be218af3040b779de45d9454c237109ac0518187cd0aac15b8eb64efa2168a4f090915e5a2a49d8a5a3b76b2d6c81956a1d94d6f8ad56bba68adba68fd5901f3fcf57db56b54d49221f3f6fa36da322e5aab1087bfbe537cb3585855c02ab423e7a27968e7af8f59a3938a5a2b56defab8342a199baad086bff6f77b1dc4b7123a26aa183f90825bcad827f85601df0b1b36d2c0a85306775d0f2f6a9da04cde84c161834d1434b8a69d8c8b8e7f7de4c1f9ebe38d8b8ea83d72445ffd759d455b5db4be86bfb6a9a9aac4d15210324fca18a9f282bbb6c99760f223498c0b3064244183bbae7917b54c3e4492ab2b4d566d88dcc15dd7bd8bda253e25ba89cc5fd7512e1ab353515ba3c69a8b0a657f5d0c5aac12424e1425c5915a3307084ec95f179b9cf04d041d3c57f04c99c212c45d17ab2e6a93fcac8062feba7875d1f2af8b352a6a615818e28dbf2e1a89327855a8f557f72e903d3d2712fdf55c958158422b7f3dcbb9b7170ea5819d287f3d2f659ff9d7f345873b9f267f3ddfb8a8cf5fc7632a2a02326f1d67b968cbafe35ff957059ce25b8924bf16b2c2c0b9226487bb16c95fc73b7cab7656b4193ee1e104490a9c3df2d7b112be5516a414f9f2428985a41eb8ebb87751ebf35dc7512ebaed543402d5cacdfaeb77cd9533bc417c43e1d7abba68fd590179fcf57b7551d75fbf352a9a8004dcf8ebd7c8ef0e5fde4d6f092677f2ecaaac58e1d10477ad91bf6e8117ad5817ad423936eba24e2ada41b559efe0ed75aba4a90ad95bc164093112f2e5081d1db6484573e687191947b050e9c159a607c8f032a45b32e605197076692703f6d73950515b6dd66f9b02285c4f81cd509e154092d61c05c159220c30ba41c6479494e011eefaeca2768806aa9c1062c547687de382ecd12bc75d539dd7a59b6339967b2c8a513949518281f5a462b9898442e2bc9b548de4f874e3477999009be4938950a7424b1c154749574f8610b539a25ae21b99a42ef6f6a16ac2520a3267305cb910aa81d11b92a7c88425ba13464a7a445c28d92969b2c8efb19491a3140aa5609aa62d869a76ad522aa4aa50c9ec949da76c264b614d48ad7032ab5b53f192f48d634992bebd83453c34464e4825b008e25961548251b08415411fc19074e61895e4385eedf6156f5f295df566573ebf6ab20595e5d0976559966559da58482f50d5ed4c6081e7f876d2f029ef299b5d053150dd5904d6efb1b7a1dc7bef2de6ea025533a50962d6cc4eec3d3ed5991203f63ee0aa078beeb7cd76ce3c68b79482c6968964935a7fd05b6f1faf11579224f71ec791244972cb3849922465a59108aa1c514f6e92a40293ca9ef44d562f6b24b94992244972d46449525909cf7cd66aed054992243945a6c8937b3c835ac32c411a5b7b01ee1d75270ed218a4ca4227861e472b27adb5a830fae2d332636785a5e5c70a2f422129be683162c5d342e5c597dd8cf6f5290b4d8b6987f9bd5ba60947c216342a3c3d6f9c3ce9f174e2f790aa85092ff19e54a7cf6b9335edad9311bc6194f68c5a00951c99e062f8b43361a7c4a20b0c135a34cd3af8fa646388ef72a824f7e6011bb5589665c9d33ccd33cbb22cb71ec95d9aa62f641c69e5169d292344bf755f2f5aeebdb7d2ef516b92246d3c4992244992387e1b0770e3086e1c581b8770e3186e72efbdf7de9ad4fbc8e8a5b5d65a36430292484112098b44129248439257ea209224499224b5d624499224496a529fb933ea271952cc6dcf9df4bb4015b88327d64ce849435b1af49bc40d5d88df5e3a1991533edea847adf58877699ad63862da7b9f53407c555f2f2aae2841848d1e29749e0ca972c78454f00d997b88e086893d728451b65ce1f6d053559928e6075d948c9bfc5d77269fe8cca5bd4fd96c89eec738d6bc975469ada794c478ed79cbb4d65a37f9685a227d8aa88aec6162440d141665703a7dd2f4e4caeb71d45a6badf5388e5a6badb51ec751eb514529d659de4c76e4de7befbdb713270c54779d1f3d97793ff161a8384cf638baf9711c9baa3050dd6eef388ee388f4e3b8f7de3bc718f528c3b64d74249aec48921cc97124a7920447124ecad65eb1f77ef28b3ad32347921c35100c515c6824c1bdb1b0d0487a6190c423552cd8a8c843167460e0243d5d8c2b9b1dd125cd20e1f3b5209104689d7cf61082387c7d8ae3f36d2e99bbf5a4c20eaeb55dafcda65fa7ea58d9f4499a0cab400384c1e48554132929f6584d0dc5ccce7356f7299b7d7d9a61747a4661ea56490e195bba955b1ff40815bb674dd69a336a728f3bfd32b3232e391e3d5959a12755f3532babe878bff38c1268502961126c23a7066eebf95d45172ccb2441ae16a94d361d8c24499230529d59be3061fc7edc7bbb2e22dff4c0cc729de5fd42c68b1b673992bb4ac5f0e9a2670a491ac7711c4717c1b24a8bdd8fa3dbd3774e336090f991dc558e863c8751e5b6ff127cfdf88dfa48b8f7d50badc2a7868d916854a5c60e8e2c9b19e93050dd346ce01403d5ed2bbab2d9914f9f70d4743291614f5811c440755f89318ee3092c7c18a8eebf3224c057a81341df668fb1345b30fcdebe65fb77e9aeb29cf5f06120b324ef08cd71040204089071efbd79bf37e9a39be4488efa041919caf10e9e9666d2655d9522ba2246294c316f1e430c548f5ae87105cd962034e2ecb07998e830e1d9a569aa0206872c9b55a8de9a2a5d8e56c82e49dca273d6e057a825a2dfae6bf0c70c5544862e8fbcae6ce6a30a03d52d9ed84c5755d4e021a9689b3793920b54a36ca933cbec4b262bb7690fbffda4f2fb85139ea9726f1fe24eb177171856434b27acec81ca624ac3e4e689a4f9ebd31024b32b41aed668bed9db35b6c6566d54d244ba49e6142693154c5ae8256fccb872dd792bd9912c94f894cd96a4e56672a2ceef513b97dfe5f5d3e6ffc1f66b39c17cefbd7de7ad048881ea93ba2c7df411d73fd8cabdf7de504c66fcdea326f7de497cbf7ffb2e7defbd97f8305025691faecdb58df61e000d3833d8dce0957181db787efb09fc0db5e4ccef5127e9f987272fc2cf7990d9c64b52ca62a51fc751fc516bad93a47b2fb9c8b2d91003d50d2506de79fb943050dd2fb6e0b8b299912a233f23c0f3c4b7fa428d0d244d489c663f3a8a1f5de046977915aa3f8e23f002d5d747821757c40903d57dd16a4fd9936ef8b9d337e9c30e4bbc9891f5054c1217d8b470a76806276ec498701305378453244bcb9b2b44629ece0ccfaf522d9072520c5251bc231731948eacaae9fa2a7554a5c7b8f78b56929b295d6e0c6963c48e9e22d857a92337ba4ad96697527c88902d1d2ea92315af33c9e5a5e1ab94911c29232c17d4b8b5d65acf6b5d948f8643466f5e7f031e2e3cc132e6088b275c1ebe71b9be46a5664e3d5ed53367de6c3d8ee3388ea3d65b6fbd759535595e5169959c24a24087fc18b50edb1194264431505db580d37586980c4519c72123e30b1dfa21d66043eef628ee4d6aadf528eebdb5d6daa5b59e09ef9843795a6813ba918688436badb50ef25a1cc7711ca34cf0f8717686fc94cb4bf6352a4df1adaf51432de81346092a40a69c30f182c58d187444e040c99cdd8b3c548a80b17344881051c2878be1953a4a3ca2b8e0ac9cb77e9e1121b4af531c2ba95b68ed5b43392255e8335092c6a8d4854c034d6f6a06d31a3d615ac08d719ec4997a5267e6b6f1b307d53373c85af5c4ccefaf534fae84a58719453ac90d9c5d1c9f101d1c393ec014d1a832e3c79b2e654992a56d136496963423deed66edbcb6996cd76433f2b228f544ed172ec049f31b6327ca1ea190198634761dc7d12b981f7ff42dbbb78c1bddc773cc44b31f85bcf951c89d1fb5d65aeb749f58ebdc397bed4f42b6bcd6f9b53eebe7ce1f5910f9e0b696de699d8131586176325e487105a7dd14c1d839f00fb60fd736d250810791144be2bc3004056e6cf3e3101e55ea5cd9dc67a5f9c1fcfa24a4e9731e44b6cec0207fae657341d82f50032e534df4cc39b19403876b8e813cfc887bddc30759361d7ce0471baa1f3ad690a1c1a664c09319741419499b345953b514552d7bf213120a3269b2ec7cd4c159356ffdb43ebba887b7b66e80c94acf9ba9a91f36d2542e2c3889f2a22ae98d8a19ce94e0a53254f1a2c4c44a1c2c0e708009903c7a6850418a4106d858b586b75e31164beca5ecad9875496eb36abcc2cc73adaf359b6d0bf2af307b5cd31857a9e2b2a54e903773d03041a3c55dafb298f0d4c0f9c2b43b13e4e12b149e16befc0a85a78b78dde82210a4609c6accf191a2076e34f3a35192057654508200937c4370b90c99369f5d8647cf670f21c8f6152aebe85f5fa1f0ec112f9bd28d69676b5de6754e318e6af6f0f83ccba26f903714ac936f3f06a68d3879ea9029b2c2110307cc9ab5a6c9340dc6b080e4846715030d4e93897aecb21976c76e937aec217808a7ecc37561eb2261ad9cfb6b1b286fbd859d666e3d3b459979eb1deeede2ac75a0f3c26c4962af213e7788f3f9b38b96b44b4ed1ade77cce1cdf32ce673eab42c60dd16c866f39d724a08446c5100e112439381bd441220db37ec89d4223aa0824e8927493acba963a273a292ee01cb7883f08e1f707a246a8f42bd9ea72d62163680400000000d3160000180c0c08c682791e46614e6b771480106094505c5c3e1347a3419083288a81180832c618638821c818c34cd56d0313920587dba46cbe443d6e6e942f8ece4f97924babbb140da2325554422ad73b8d6b452934d9def0fca1d6609f47c5f69867f4afd4e013824e6b8429e4b4f0be994470ef3baa28e800b788ef7dc33fe5e231df325cd714b163c821050406641fdd0e19168e34ba021e22f54a2a3cd56b02d62a46f0012539b71ac13573861bdd34b72aa0ef7c29280590f624ceaf58c87dace1c596db8300747e1c3429a89a319ecb1c77ff1f55a32ef383395edcb05156e07b5d2a0747f0c51e2e2866d021c62f99d61fc564a24284af0a576652432f70c8e0c4ac82a4feaca9031a96594f6fc98d0b78da49942866f62f055822014a492f6a14a67d589a4e42fbb496caa28f4f53887bf659a804564289a454082c55160e824628c5b0f9b3525d5158014c3e982556c6d84a37782d97679584f4aed951994cd982318c953e4700226f67843e8a9c12098484e2fad0b172d424f309ce57759ef68d057f9a4043389412ad4094edc42c7e35dc823c830235ee926995a29c49fd26981165ba954e6e5d8646cb05ad53a0dcad34c4680786c5a253d299bcfc47822894880c7cf00dd9161bffcb22e5db81aa27e75a578af459707875debd40b0500a00b5acd62e2d0e8ad6d23b4c9182e44733f96149140adcc7115b3eea912b5175a542165ec2586ac922659c19a850f611becc9249e468a7119661497b2e329d4fe91d2288f0670cd70dad23014cd94562a99a2c1038a1293d6d67b7c8327f0857f8f72b3d7a398735f1d493125edc5373f2825a1b920f0144dbe800a78556df181df750a116ecf450939a2a951b0df125fbc2a54979eb7bf977c878f29853ab655727613b2ce8035a380e49d7278b839359116abfd76a41114d834146f53fdf68a9ef9995f4803c10dd6e2e8cc283b89072ae19960d76514cf6744f7583cd865b63473c9c1eacd6449009b8aaad3441978f28dd976005fdd845137ae0d20b815d6d676bb28c2a03228657a54c1b772813a40d6c23304fce240af6f1a6a4d17bcacfab22c7f33e2c4a48480d778782687d4162f13c55e49fdc7030b784abe27084984189f4591e2fc245d303a0062de1607815b8225cc2af74efb26c84e8aa5ea12ebf6eed8a121944f18684e70e349f3173c91313b9f43bba9bc888462e0f3280e241b48dae7e0620c11a761e70f713edf0e2431538a214173c3c7cf70a9c05c3549a780cebe6f32ede243ed8c437c4831b31762af4cbf4353111b1b2dbe639b903741c4c01a9abbfc39e44da0bbd87349f225ab8641082d3189a8682d406de0fd15d3bfd3cf726dd5e703aec4cda6e88dc5e44eccebdb16cdcca843308bdb717fb963710ccde97a50185c462392c16706771185fedb83db879559719d023f4a03368a1e3d74cab1fe54cb4505cc08b1fcbfa0cadcf784166885f6e265a08f98a706d2635f4f90aa898243c27e32dd69ad0d278aebcebd685de2345fb320480681a130f6a5d7c51eb7257e4b8a55c6f278b5f53221b827535e4b6707451018f450ba578706ce94a366978c2511377b28bd81c889b0cc10e2ef758787b39f8f2c7342de3d2c16df76211a1907b62c9140953424c4debb4b17fb7c75a8d5156255792ef44fccec26d3736e07f50553eb134b3b08a85cd4762163459f46346d57e8da4f7736f4003e83ccabc856686877c6f5305e941e59175e6fd57cbac284f08b4bb4dd1b35f5b2f9fca8d3db5018ff53109979ff51444a60984e71b16e315be302d437f55722aafd9aa868c595a46da01b789efced12472f26d4c7da6444eda0e5dd0b2327a2c57ce963164e456049c6b91e54194d280d57c6bee9811194920e4fc140d2f846b9425b84421f312e319ed577719fcadc1c2dbe27855ac6ae9248b77aa11f8d1a0968c7454f6cf6b6fc0dc556a085a269d642e22b1fae3b92ff9e414961ede0e276a4ed2b1159758fb1da5193513b653e648e77f577c5bdd4cbafa1f6d0357ff1645dd6e39dd3f25352be56947ab12717c42af474e3fbebf5082657bde3efc2fa207ae7958d03c3989fd734c64518c919c97394c2e3ef58f1cc4fc3b0738a3c3c6fbe40694fcf567c20891df3e2569f3159cb40812fc3f1b5bcf75e04a169938bd6d83252fc3f4ccedf8f5d45b556edf1e4818ee43c0d6e22d0116d6c9c69b73d28a19183415726d1a20e4fe6a02a33449a9f88b8425b3d05fb2e89031babe90dcda486a1fa81468076a034485248bc3177bbcddffe656f52d229f1424ed4764863c9c10c38851310e9e0067654cf85efe861a75b1ef55812ac7d8e0e2ab60bdcbb9dd82326133d2eebac0dc2a91818838175444976a5d3b8f05a53a3bcb9e7b019b271fe9f3e53a963a892f16ec218df514638b3e9fcdfafb33c320cd76fe6e47b0487768463d7fefe02c91185ea57a33e8f9a596fc299b25f75e253081b3b3cbb2613dbc50ccc01992289c82efc3361b8a63991ef218743471a4a66557b3dd15755daeb4de017cf5a3e9a6532cf586ce2a6a7b27bafb13a2dd6687f14e73db9756f3c4b8f9f8ae72ae7551fe0bbbbf0ee86e427cfa53466748225a3499bfda4139311e55a359c349278d7c33fd4b16c263c2fb0da9b1e216a8c6481a819cc84f0b4beaa64112230b79a26865189b5bca49753f3d409b18b0d2039a82bc7c6a9aaa6c7fedff0caaec98d341b72ace73a054db0a8fe7ff22032877260d26cfa08b6980e4b77739132d04bed222293f92fb9c73821122941736e90d16443d081b335c2042d5ee7528c17ac831f26506374f7456f92171dbe626796cdd61a3106beec4f60dc87d9af94dacdc0bcde96155ed660bf1bb4cabda6dd987af58381a796157c61f83dc58e2f4284e5e915ca3c01ac84aa235339e8e6ae1b82e4b1f7939c8b88446492df852f6278655c3e24d206203f6ab9671385b8d9ba844aae832d06491c235035c93a7c88c55ab52fcf2559a58bb2bdb9156842abfbd0934f6aa1168ea7e094d18c80219fa5bb993fa90864508502465c0acc858045106e9b2ef0f114972adfb0b4efe8f79648f2d11c352d4cc963c9092d113298dede558335f968d24f3ec9f514ac35055f6c52dcda29ecc625357e1d528ecf798bd912a0de986f6525845ac650344fe519084548a34a0492e5f2fd3c8130931331ae6604d3869fbc954dad4ec54ddb267b35008b24986084555f2c1678c97a668e167a3cd7273341270395eaef1feeb975ae4d44ca2d6ca230c84c80b2b5392bc1c19859928d9570bd7e092c784ed0cf6d2bc09711aec4d0e476d55bded35418f3ff43cf56ab07d2a68d3d29f516cf9c3215851244a62055a05b72e0332ff0a735a6fd3597760d6aa7a48400a5e0e54d47dceaee60fc4def27b33250344b67108336874215d8ccb6869a3e6d9cb41407a5408041b2153094921166d1c7198ae55f698cafb5bb1be8463c87bf0623e032f530ecf84e65019f8e08b7fa4ce3c2aed2ec260c007df7254e30fbde9be1f0798410db947fb6f124c8211c411c76212b814bfa555528a37247ad0c398f4df2afa9765f0dfb73146aaeb13bf03253964ca5026d02969b6225e0406f504714e7013f0d3cc9eadb3c3ee9f1ea04866efba18957538521f5ad25a73cf4916a2426d82f8f17131fed4a3bb25f79cf1bd6083111d05c895e4b54254088edc4132c9ca497de77b1e11361e259d9f8d1eec441e2c256eeb6cb74e6979b0820a5c90c0485724224f330c50d531705115b3de0795e30cb6c09b92c308bbfaf0f3478f0b00a38e40ecff94901d001617688a73df1ddbfacbbbb86481245151ef844747c9f2aeaea61205a5423a58f60459f50c6c1cfd490ffb0d0f23cf5219f05309db401a7e8f151a54e922c4e71dcd0cf5a8fd3b3812f16f5e2c30d0a11d4652698747cb55c07860da02165d77e225e07c65022b32eb8e0dc14d92c1854194eb6bc3a079af25888dc364493bd0813324838b83da1b409639687b5a7fb86b84e1c66eb20f52990a97ca98ebd7839ece4149e7bf554c493b03d82412b44c3969fcc1a665527434c009bff0e07d170cdf4ce8953c0f8be24d05e611603d42aae2975fa1b899764545c6214b102a2a7a33c19929a68e86413599f4e0dfcb662098b1040f42387c377037c494fff88972a110c2c2cb03bbe34003e2ef9fe7d004163ac6ec196f8dd2ec81fa2664b8ee29455fabbf2fcb916d57cc89b3a7bbad212a17cb29358bf6cdd2716a198ee89325be18d72a624876518163d8dec05bc98950e9c64df68a1cdc03792f53866aa04c9b14bb592344118b1b3eea30461b7e121c78d797553420fa080478a8cacbaff7c95937c741af822be11730445572056e13ae8f5b1d232f2c5ef2ae92844546263dc3268eca169437eea6e75c8e7d32105341e05d0ccabd0ccd37edf5aa498c3c34c842e5f5c42abd0a6f10e5bb03cc040af6d1daddf34817d71dce86b98d2ec6a29c58a5b5c8e5c585a4f6ccf0c9a16d02b1467693aba605291988e511e25026feca10ac227ccb31da5cc67f8947650320c7886477ceb53ced3accbe2d5f40de3ef32eb5690251821c3893ef210f34f125cb1cb8bf2a86a3e173869f93f612a638ea088a87d9d19575f4d60f45e171ff21b5299e03bf45946c912ba4003fb050d07b4d8c82cec7608642b802efb34e2b340718eb1cc5be8b6f419693d5e0d455805a6560549b45af3e0787c9d111268db25d1534a6e1bc2f39b2cce090fa43757f2efe227663d600db6e08d887bdf360e5ce5ec40cf6456c2d7388bc6dc39498ac3468c456b53fa7dd181ca03d1e03b4d441892622a4c5a290ed66cc96be459b7ed624e13f947b298df7eb6e2e1374b80cd0979bbe882c6c83cb3097a1658411e6dced13632e61016d0328955948a92c3081460c5c824e633f8e11d7d359240abe7db4ca13645de2da6174dde5e88431cca3b8158ab728df1a906cf8cdf5f1c1be378b01f12aebc29b0bcf1708c10d272fae9c6212464d71931585be1a54ef2988c12959174fae0b918e2ec99e984bf52f02da168663f9e99c9569af330ac431cff91084340165e79eb2010d45b455a9ef20710834136bc602e57621a29a1be1c3a7f24d0d3edc4bf01cc8aa2e4d707d97a55abc4c3381f163550d69e6e22d656d53873533756f06dc42d2175178a5e53f6e55eebca111e5de3e7b6e9a0b06d1acbd4449cc08d1436c62b2ca4fe8e54215bcf512e11bb38467b450c578a046d29770ee642895992b925fe92f4b296fd4cd24ae8cb18c610b0cbd163ed687c498d9a14b6ad56a98e4f441adf102535fc689a607d603568aa5c29e6b2b65a2982d63a812740358c40e24f2e9281a968f0f85eec1c4604e67907adb03dccea323fc04e26646102b19e99aa53c121a2fa5f706b8fee0cb597142964b3878511e16a63f7a77b97fa2b9e2441a3b0ac220c44a0cf49a32546db4fbcf1fe60e8d320ebb1fb577d18e33faf59da7a6921a279ffef8f40ea7138fe2d91b0fa5cbb53f68426a69a70370aab09e6f27c604316b47be3dec90de4d4342327d269d07f26dbd5548508a2dda3c7cb0d3689e96985b8ba8967d2080580d32d712500c72cd629be6d8f1dda741c3a1b733fdfa8b4a36e54af65955e2b9c756e69f6746435b7d86ff1db716d55425f7bf1317bee4068d7b8c5d20bf0d846c091283a162afc4b4e7dbe4c293c8f0589532a5834a26ad062365436e4b31e3df6da73e518a3628a66545a9d8ed592cab4c854413f29b44a96ec095d928a39aa4b6cc9c8067eb3c339aa0d03cb5e85f31b8bebf2e51b4b23308992eb9975cc193e60154a6675290f24c1bf771f0e77dcdd7a4b23edfdf041451d3c959d241d5c6c1da61c2eba5e3219e494c3b79d800c14e8d619273c5668000d74464d0c538147f4f96c35a329561900843926013a35bd0b1aabcd2fceae75d78df9665685dd00308d4f52a1ee7ccd04151e318be22a491a9e40e7cdadbb5734a51580c74aff4fcfb389209d72aebb8e5249874c34a1066592b9d1aa28276c046e948e8f4697d03b5efc8359a31ea2bb3c13e5a1ae218e7f123d8bb58f07ee049c5f542e023a02a2006cc5dfa583c67b248f166a61ce464ad529458dbf9627414f61ea623bbe944b3ce42058251891c34de1c1f935841f89c94f0d18e55514573b58585894c107e30ca8fcfc2db96b658a73865fd8a8100b316d6957d2527fa5eb31fa4de84440aa7d123d33655118b82e879208e21e65630e42d05b47907313878aa760faca617ad626ab6dbae3f924a5a84b6224daea37af488edaa50301702880dcba2b8516c90c7d3e20cb31de10fa0d9f01978c6c9f7a281cb1668cb9a3aece29c0083d114a5f83b1a408723b74d348d42eed54718d22a6a0a82753cf7dd54535d6e722e9cd9835ee91844d49835d60285d260e82e8e5f7d49cfd0cb9872bd2dd5280e3eadd1d9e4a501734c7d0b8d12f4a7a7caf767b36378358822a6394d42f082c4401875acbbb34d6cb49f6640b42c0c9b7b175f21c9205838baf584d8fc0e2ddb6c54fe1caee7da7c21c4d8828890ed36abaef32ffa9976810fd3b3e6faf398a1de4048a8cee480db4862cf1b4411bd2098a7559135c8ece659092a62fc2d4ca86615603c29f78c31ecbf672c00930716ce1a914f23806c00130a3532f7e7aa20882db19a93eeb501ef425e6e11aaec73262076bc50a693499f6422b8faeaf1451724051847d98684c3fd78fc11d761dc3ba8213d74a34b9a74c7b916c25e47b7f993a6cb784370f695abeb314a3f20018e72288ffff86abc862a1367bc37b754d467f4ae939538ddf9089d1814efe494a8aa4f3846d626c9fe2081195540efde2de1c260ab891ba07569d34bf557ea2fb0d91349889156cfa7bb014a9ea98c3be1e1933cbae7cc348c14814a40002b582d7a1ffc4fc727d86a8c75f7762ccaba2d621240a55128eb0e6ed816e02cc9906fefc9367db8b9df0c93d7b907e448862da33d4bc15b5083895d8d265b4fa8de7a64cdb6268aaa9614363e9b5bfbb79370cb295bb3e5e6930f95993a01a2e64f47336e4986650ba00d71a407a959c8766f5a13cc96b82ec9de19c66942c05ac03bb770c0f57329696571702dbd2d5c4572a4e04ad82ca7a06e2b52c7b127d0f251a32a029790ae6e339e97c40d32cc95b537fbed98afa94e10b552433b72c133d5498f98a08844e27187fb1a56355c14fb849e35f8bf2d67f69d2cae43d6009c8d4911797d00ed923c93fbb1c834cef894ed66e8d8faa9c475c78dd9394f308889718e393f3a1367a077e6997f41e561ac76921dcdcbc6b9afb786df07ee40bb9d2fe301330430697a7ce314d9030cdf3951bc18e70a117a35dff0ffedd5f51e76fb016671df0ed1629624cb4c5256e70c550a96c705ebbd4f59f1a6eded99c27f9da76e7b54a279a25a0824ecfcd00e0eb4ac5e792ae8186761c8f33ae265fd45e559f290100b7a5218684e912347d40b89f5395c4c85865466ac9bd336b6fb564bb94d40e11407d1e20fb98f545feef6f9211636689a7927632433efdb0673134dce10ec3d7594024d6e3aebf2be4c2e8e560ac187f54a3e92ba6dcb5c12132bf22d105927738e308be02600c3bca9016e12e87d05fe1d38a1c64ec4c43f822747a268b30a2da225be56d624135227c197e6d62e0edcbc48b60fdb5d719624d80a69ad1e8b7294c101edd4e8df8a80a27e1ab7e1b4a3a4b7579c3e8c12767139835e5ecb27b72621699e90af5241da10fed9a5ec333832449b1b45f51cd55e5cdc59b06abfd68245cce26a004c52952ed659493324fb44ab9a7128bb31ed8f04ae12738b030b676468c883badfdad1d380b3cf1abd5eccd03af61ea6b2b3237c83ad441c2c9a314dea8ce4ab8ae55e6304e799a0d9d733739fe1b25b2f7e302cd4309f8dc8c0aa7c309fef7552754d7e9818b07a5c6e963bb93dcf8508a333c1558332c2d6e9bd5e6aeb68b3c31ba57881da743ffcaa016c91dfe119b8ee442b751677789a5d5c10dcd5d3429756dae2a0fe402b20a3e797ef3e94100d0feaa297ff5d48528e87e51c044c4944773b07f44e90ef6dd28b98a16b6a3837a8a9b6d9a4d0f91b4fa347844eac53dd3bbf67e1451f0fc931e186bb77808e117b1fd746544267c0457ff74517fc626d51821f85f5c03d4c4c128e34cde91e78d5d1150566c8ddfa0710ce19b1d141bc7914ac4a610f5c5bd0b5419372e276c5c312a1793368e2a16bd64f95a0d5925249b480f71cceddd1aef05615a9e5254ed886222647af1652aa850a218143a0727e03c9e93d4bff22a10aca77690cb4eb77301a50444a58950a3ff19a2f70e7db140a120f426bf938c06d1107aa33522f4d32914cf6a5c72a4d51790bc2150f66c80a31fa63286ed13d404f5cb0b9e94bfc58987f3eb1ba535a2a3bc5a4e54d4fe30d6aa9fb429518c1619cab9fe9fe776d6b5403736522fd641708a4d77cebb14197fcdf27e35da487cc7d25b106401fbbf04199328614af726c2b447c367dd89bb0ab22f9b7a98e7875a6702a0678166291c59e4a6f02f5b60ff25f458371c14c673a0874e8fff49b30f8f2aa7b4f0b742acfe28eb8cdf0aafb12f4ff3da8df577bc410f59aff41d068b407430cad8a18e7ded31e463c7ed03e14d5dec20363518a3b1b80284137b95a3372cedf566aabab8089962442b4f426ea373fcc9f88adc45127deb497b379985a6823813c44e0dbea33120a2608fe8fd653286885541a38212c441e37cc88a0902e599318dbd55bee81d15354a00195578f6eab3c831d2d50cbb506c41da0324da0fb4d3fec7ace37da4e6665ae9002602619eced370148409dfeb9612fcaed134a7ad6e2e46d718b4d3c17a5c24b7ef9a16f5c5903d5797ae8efa40075692676f73981a7f1f8bfac47f0d35319b0030cc4d8a35dbb11040d0d81398afe0bd467d880532fe9cfbc24bf379d0c850ec5cced1db299bce6410459436cd22e9a4dcb944877d9602d0900e07347e031a3948ba0e444eadf7d6cf882f1456001b9e44546c885d5cc0ba5bd5003a96426b8a7f994113e9e24894172520313af52c6229124c9149a45f7a7335d266f73e6064c46226caef5a78bdc1cf03cc2b0fd8a8860a105437ef38ecade9195a20cbd38e7a1bbfd5e7e52b2dad28d69e9fe021e44bbaf92e1dd604761b7f2d62d8226938989378bde13171e248d9e71647498ea2760ba120d3c5f13a7cfbe9c052b35ede1b9ad44f08fc21e30ba56768c8e3aff977ed9116c8a125db80df2a9663c08b23d001a40c2465e7408998403c9e939a0754562d88b97cec988d253aff4e3aeaea89ff11db129b1b1f369f6ebf6ff2ad9a3b4477d4c221822af3627e1f4e1d004bb5656b31efc191a9daf6aa1384b9700acd4c43e5cc755b454102f62edbc4e6254593de182a5fbb00d2215b79b5c31437c4c2bbd75da0da7a9468007b7f7a06a2f63158d6d08a8301c378d56a582c307a83600a031e5527b525d981edeffce3112d4ff34a9d5e028ecdd2d56a6189368df16cb764837387df2de89c81b63119e4604a156013efe6bb16588508bb6688a624abdcea104fc5ddbe908b505132823b4d917b48806e292312f5dc2ec644beb8300bbe37285eb973d577bfea88aaa4079e5d146b9da4eedce7b17455f79f0314cde174a8bbffd81b46b060f7ca5dc91a0537cdeb73dd457cf0cdc87577e860aa04827796b3539a382589248d038bb979001c590e72d453bad80bc4dbcc5a1d51906c055a5b6eb6a05514fc91ff034dc0159732714d26cfc26262ea9b19ac1cdc1b660ca3cb264c2b01fb122f304d62858a71aa62748bf6abc27e5b99be2fc53001ea0c432bc5c05ebf4dd167e351e6b86080c40b3ca55b906b7d65a8683abc1da0449c5501b81006989deba3c7b0f8306cd70fc3439c61d6c867cb1918042692eef342e827593c8887db6301c449dfc155262c0334bd4d50f53d3796bf29d096d3b56e83708d7e0d3b5a42e613a7126c5e32194343d75d6cccf1347398ab82d2228d8d307dd14675f32310726ff0c5a87aac85b81a43b87de0a5376023cd4b62a1b350bd3f69136a72ee9819258f78e0144e2b7e4e51b80b8b3904ee9ddecb7d7df0f2bc0c0c47d17d30265dbc4752c42fc3862c64f8b40f1faaddcd146f9384f29e78190803ba4b2ef9dbd7468f2b2c126fecb66776206d2a9ebe5f211a076dadd16800ece87976fbf25e9629ce2e1ac67048da99a97e111fdae676beee3ea5545cc5c97c714f057b7467934cb9753a6ef18b87bc4cb80967725f00bf2cb9aff23f9988a8c3a2c2aad2a8933bb049bb7af774300dc246003775bd5f6fdf76d506a12cbc1e43c688935e54fd8fe33d7707688505ca06650c68a2e930271b1c3b06480c5da07f99f4c6296d0fee46e33c73425c6154b4518af5cbc1bfa3989e0458751b597bc2b8de6b54dcc2613003f2922ead1c6a8ea72aaf169985a37ea6707df1083f784b96a73d28fd75aae32f0845472cc941b2815d435c2c869d95b2090a92c08ba41fd30eab8b7750c01b8a9e1393412338985b0304cd7a8c0360984294109b49e4e4ac67143b8cbc6d68a014e746f34e2d6d1d4d7b5c6cf7ecdc5d71625790249cba58e409d1be013bb5cae5b7860133a6c33f73ce7ea95e8f5a6de207581a3095826c29eefd0928285f006b0e3060a0185028438c11a3f238bb6d7ed54e5b701c0581d811d79a223db5d5441b9a4402972ea821292c6b25136f5d6110fd53f58daf37b9346496aa4f74d22ba8724510aceb84105b6b8a4b43e6fe6423510489d809cd97652502c1a921232c9fe18ee4f92fe616071d1fbb1939304655715ace6c5076b4b1565c0ec94a53b7b4ea25c0de92272b459c2df6b57e692ed95f13074d71061772e1675dd8c5894d485931050e0aa5a17b955e27c9eff3b29cd8db3fa5f3866c5c3c22923e29c9f1f8bbc1cb8a5a5e22ef1258060f595995176adb82dde085c36c9a215d28e56ce88398cd6594c79fcecd16b8f53dadbe4e12e8e6e4a3d36783b49f8c5e09c399febdfdd4126340ffa3dceaf741e0e5d0d5d2b2d4800fe842e40340c05c5ce4327994609b2233e488747167f6338e38203e07cf4cdf96c077d1223f9b26fc7cce8ea535d6b6b71bcefcdff69aaf199919c751b14e26466c7cc1e82fc6fa71504a834e09b4058cafd706d9664d60f83d2371f59e20181d04e506db90ce2fe439af02d23f5f39f0ff04d7ada38f5948b1b2b3d9d2c1b692debdda4eab999ea4606aebf6b91f71f488638ea8771a2b1bb017fe4b19dad1e5935cc13292d434f1e93370e54a2ae976c2d15993d697439bcbcde8ee8bd2b4e5555bf005de4e1feb19127da1a0a9703dcf48d842ec68ef04f6c43d93ef895915021f3531aa30895824bf7c0481aefc72c14353a634faa6c8413086cd6fe09b0ce021a64c11b84822e76ef1fb422418ef1162202c2ca6af2b8bdb38920f88462f6145cba725d685c74d144a7fc2cd02bdb24d6d60f00a5e0e9d2b044a10603e74c3ba0ddbdfc6130465f9df2d34f77559f6327c83df66c0fcd42dfdb46a3e006adaa498200873f66cad5fa31b3007c5c76727172f4deaa18233926384533dccccc423a6aaa70189e2842ac8b64950998476b2694844e6b174570929ca1a5c365a1550cf1ed157738fafc21af92e3f3a03a929e08a5012fb370e2f404655787bed7ea30e2380e8f1d0b71cc19913ba5e7d0f0453a72afb0bde32b5cfea6469675dfb77bf9faeb40cbe3f2e28b47b89ddf21e8c716816ca46be7677c013961f8651aee3d72ce113bb5160e3e5acbe3799ff459058689d47fb05e12c682dd7f5366a808fc4f65fefea8e3f2ff3eb22091e04348b05c309f20aaeb7fcb59f19b0d87527f150fca393aa6c3d305de369393d0273fa706ef3189908958316a12e491e2b5041ad7d7c32db397e6c3df43b484bfb6bb051ff4bb6d7121d645f09ba184e92b4d26918c1016c10ed04e27eca526f4ec8135bec4a9820490007f8d9f369c6a3420f725a0029ed477e435f96625db192a6b91703d5d6138a3aa02f838d2b37a60ce072fe7a934fb547d6dcaf57ddf4f3999a860f6d848807857605ff299b678f88f97003a7131fc0d01ee15cffcfe53e9ce25bcc221406ebaf580320fe763113cfe9939e0fb1e086a9b597e3460ecff187c628d0af6ca1034c24e036224709a64a839db5f5396c0a31fa34823b06c05292df4f8f0998f9ed9199ee8c5b0117fb04c92afb5f15b2fdbc1845e55147d6dac1f361c0e93496231a573fb59f547652410a8a24197bd440f20812726a28af52c04118c8044dbd16a31424a07cd9a961076ae18fc104458c167a6e2c565204d31867e3a235e790eb6e8e21a9c59a1816f8e46cafa05a649da2350b65501f49db16f060823bf2d9d9964301e7b738199d26fe490015c498803074ce6999c522504a87fe044a7402849c05f7ab6d3009dba74319b5a8b7781992465788ea704b80ab17d1be5b3fcce1d0358397b7c29a9d04c2cdc07421867036cd7bea2be3d657bc6e255cb59b950b5c45102f11e666b40eeec10d5b8995ffa8186b9e0196cf2c60b45a3e309c822b26ea9a7302789427035b27345863486eaefe6ef9c4e924d3a1acb9bd4483d1287a683e322eec208543dfa1409fbdbc8774a0d8460b6ed7f878871b101a81ccb86014ed74207c38381148956ab280b4c8800345e508bbe5766850d8ccd8fac25043b6f160b32ba9864658087bb5ebe91633fbc1a24be926d55468279ce5b8f61909f4d41c94c662ebabeecc3397918d5c499e96abbb4274e060a850e565a60b7d4a5d8b3c9fd1c7d3297f6fd66b395ba5af14d08ff3b59123f6b32273f3d793266ff48dfa61d946e9eac279833ece966f7fe56b37649d1e831319413121722009b808c943f3670c8220cc3d3bc0ffaed0c0f695c2fef37e324e71a84eec7c85ad534cfc2d8351e18ef05e62c147c907e3dbae24b5472391d67ed74e072a5d49137d29ce2c119f72e699a7b9abd5d8467f2d7f728a79f14d383daf52ed3df04eee1ffcf147b1bbf000c664cc34ed6051a4f516c4610c3dbca4b16d1abee89cc3df119d462b3cabacc06bae403bd87a762e54760c354c566d5cbb9f7f96c9ef0df4a1a6c3b2222df7580a274987e19c7c3beac34cb78f0f74d38519527359185fdfbb404ffda9ae73e5dab54770bb98ddaead457dc915d42c63bbef8846e012b94073c677a0c77fe82a421fd6590930da6fd4894608a9ba1c069f9ca8d5116ad1a2d5c43245492009deb4b58288ae8a6b02399b603342df2f63a6d800338b0ff1ae08d3dfbc1d0ce27c132a917787d4e1e1ea3c0cc176a19822448f14428f0dba16b90ee119caa6fb49b4db1272158bc3b61b6f7ad0851e5cec834d873b4793506c978f14a9e23134781df27ee29dc4dd8e500e903065a6a464cf62c318446c11418c369d1bfed76a9e222958c2f0aec919cf3859bafbd9774ac5e4041445b78ed78b9bfbcc890f111fe16d64838ed8ed26a5f48f15848f14191db27a14fcf7c5ba1e0b7ce3b0eef97623517adc8c7060e3e5349ef5fd8f01c9b67f08f047f2f6c65df1945a3897963df7b913d4e2e7d7356b80bd91daa99916d108f8f650cd930600ebba836fea1948d94173e149cc0b785d60991d0e87bfb963f62db1be13a1dc4bf644c6cfc54ce0972e1171ba5704ca59146250c97785ddce0b558daa6d183ed8c9495c5d04494abe49a25b75ad46c103fc2353f1262c6d77dd60e8fcbee962c50adb6f89906c04b030ba35ada49daa2cd1cdd5cd21c61274bf2df4f36867cd11d60336009e6751dfb48ad50861df01cb320654bf8139f6c9e39c009381ef1adc4bc5b81682da2b8191d10739d4d5484f1defbb88f78ce7f7b46f62e54fbd9a3dbd3d0192c54a31eb8fd17696ca09800f18a614e0537d93eaa0c7a53933a073090751621e43a1ca122c94b2f5847be71a4f9941be93ad3835232d641c856f72e3dca72c1d51602910f4467f75adc57a31dc9004cca3fcda21a2af2bf5349b16ee3806ab037f0465a11d004f6c99e1cddc95db5f7ba6b7f3d6e4aa4740708e00e0d00382ed14e4f51f5cebb212c23ce201f2173c9f8b031d5db31b7a1cd708c43e01bd92511fd11d034ffcd513744e1ffbb377942775819fc030959198b57a5d7fee16f0274f7e5c9893ab569072a9c18622c7f2c2acf60633b8c4a84570f91e7286f3bf5fda1f9b1065b80344dbede8d5a24d11d1544a07f3650c7c18f131942af934c53350491e6f26ce8737ec016ef953fefcbebfebc3a556cf843b876140e146565084ae878befbe472e8f8067175f51b5efd597efa603432d4c6e8e29d38230ffbc40926c8a2458047671e2267ed0bc89ddd7a63da1229add817a64acd96ff64990f02d68d5354e446b51271bbabd2b254e855fdb6a9c0c8635692871c47f5178c7befbd154347c7690d678869401a6c3cfc483f28b3c81114d8934de87715dc539266c6807ec7f63dde32d424abfa2f9ee82f851287244def86a4766e872f27dedd418e9aa834cd53e586e85b7c9a7a3e16ae8878ccdc64849623c4fde6776a3824171267c4e67bd7005756ca1f2845989fafcdab757cf7414e38914a40fdc6aa0c244dd33c4724fc3aa28f865f2e0fc2a048bfc94790adccefa21e6a419d601b10089f0f494a72148a5790210c8f06d1fee7a95ce801c09708a26baeff11bfc45c26b51f0254d76fe20cc996b5da2cd4f4e32157a3d47db16d9ac714a0d209737ef52585fbdb0662b1a4b4a63282fbd8f3fdba4148f2fe5ebdb16e62f1e878425b420c3e03ade76e2ce9695824d78ee5630c164f7db4d304b778586aa33b689422f5b1c41f7a5cee47c385b3cf3e58911d8ad505fc524a433899073a0d4419a4604372a3dd7098d197c3c09ac197527b8301e2bc4fb8548b5cde97cc962176232d94f69e36b9217b995ea133fa0f67c8979e96a7440b3748b251f86357f24ccfe3db33e1c9e2b0276e01d3476202189c073af616b9a3a347bbcc0f1c6f953f04ec687e31fad7086eea64bf865a1c4ffdf1de51a197f8a74bddfaf8bd3f7a53d63976ee180390d6ba48dfaa31f36529b2653378a4922b7413fdd23f98c76c4315088fd04a363157cafc29502dec3de81103aabae9f260dd8c313699c7633f853a84d35452c20d8fd21a9ab6143c562408c070c027c1c38fcd685f96bc4cb30e56a905da90a3840790371dbd63827944f6cc78fee0ce5aebbc66a2a73c215dac06ad60733abcf8e6f088e977b47f23d0599a6eec263b5b407df5d5abd341061ee6f305bc85ee90af1dbe202d5fc11e77dfef01a4129bd0e17421d76737fad875266d7c89df0b2ebcb4f3d66cd834368a7cc7602b32726e321623288bcfd35ccd432c2dfb1d49b03bbc90084ab167a6c5e2b8c779b8230acd10125d658dba15366746a2118dbfddaceb028322037f34113d7844e683f57a8e985d2f2bc871b86fd6b614b4e114eff02b981243deb0ffaf38be98cf1ebe0501e0af04f503d0f52a8e94b52fb062eb5161d058e450c144cd860871fc5962a35d07cdb6962e63f9e0782166abc095da0d5b2c1918b026c1c7bfd9a285bd31b319b510a6acd83ae0993bf05434dbda2225484e1cea8345ad25d79ac9e2bc1f05317c3ecef40bba840a926f5f05588c0ed762b508e06815b2f87aa1783c8271253192a932120a8ba5f29ac4a99775a6fc520e918ee6662ec0b8c36f0ad35d3b58257a25efc215203c9ebdc6a8200838d784d4b3b77bd65968605399b791227546662137e00b421afea6558e5e4e6ff081436c3f81861c8612f02b097f96bb4301d4d9794519fa7be48d77dad560684ae74923c8f418f319590afc59f226b420ede6f8e9fa066786d333bb93768c7ad8f640ddf2469bbd469efaf896ff3e0cb7d83946ff68928c6afec60096b141bdd747e29d0c16739d56942fcfcf5e9ac35d39e24a40fa39273e38b4318c8a5fd000ad5d8268395029c23865d5089ff1500e6b7fec6110c7777c8c035cb81b0c683ecb6fde3152ec51645a933f6058d1b21f187297ab9556ac7458ef18b16419d1093c060ee5d012dc43b42329bffc8fd8d311452dd90c1608cd772277c9672d13e4c8ed2840130812132763e3a9cb22da41839de0a1c6bd191e4e5d10e3d7ea57b2951f32ba89562574807e17cc63cc043acf6ca5b9cadc40593dc348592219b9506fb0921cf2c275ad6d4ac28ca5ced3070fb921ec232710b0ab24dbc6ec599c44880762999fa6c0b231465edb898dd302029604c637a43b0450074ae61f1596446b463c913500f651d1ef9d42a7837a8483962c526b0094333642780c0932272a4f0dca5c4a3ca71d0f56b344d19ff52f48bc8b36a2c4b6c5db96595a68ebfa8b1b09adb1a5782ec28d3b348c2a1ba22cfb5bc9ab772485f5a9e6c5fc14d7f9e0b953689731124a6ad48799339e2cabb95708d758b8a036ab4a339fa351b940acbe6d7a111f826d9ee087ba0a953f38ca08593ad75562a043a4b8a2381c1e68dea8a2a6f312122ca53e916c8c9c3cd1ba054b824443f83224a0d554f977e32e61940f3607eb0f22b6bd3dbbcf2eb007110a055800deb57ca9440f2336a548d7b1557fb89e0fb10389e77c1802163c0071a024eefa22b95e1618f00eaf08d1d3fcacd28e9fc1f6843a65ee9901f4fd84fc3ebf9ea3a6da50a5bbdfaa65e7349d61879fee165fd521cb5aea671624b2cc2dc034f9c2671a8bcce5eb544368fe3f77a06ebd636d8d0a24e788a67ff9d6d93af066a5da956e07c97b607ccf2eec3617d0408a5765450c8f5828479d25eafc396a26f15599c7b109e47caa4afd9ab1e4f43a0d9c744dc2e60796b9b7ca3d1709b95e1d693678f374d448af88488fa4ee0fd8aaae5f44a4ed6a62f408580f9807fe22dbcd51373ba82e525a5f107b2f94aa6d923dde28ea54b814f8a48015402e354f9561cf2307b137dc8b88f42aedd720db7297814e726644e82c2d777a61efeef784d402475074c250c49648513f3e7108d27004432434786555e8050007dd539423508b59ed5f16a71789c673d0889a53b97f941f611a1e8f38372c566ff05c216efa73fe1169a37ed39157788618068c89031b49b2b1fa7d86f301e2fd53508d6eec3f31bee99b239768a5ebe8ca8b3970acbd50a2db97324351d237af1c44cfe585cc3132a423a0cf5e94d618ec458f4b231a369321686a0f22bfd8bd80a2da4acca863c1fb4a9cf06373cab37102a5a9707bde86df558e60741d742331fb73fbff036a11430b3591ee4ce6b59f2a5b2cb0c358d9687a93d9ce37292e474e7169900da65c6385deba2a2844cde208eff017e60078024356b6c31e4cd86badfcbd6f8acfd6ae2fd6a1e0440aae761919c64b832d71191ebbc31647fa0f780044cd3a51f1de83ceb0a60f633d342d142c3365aa05401a60c7ccbab65a7bfd6edaef60898aaae4b61c7734f946e1737c7ba77d2f6ae1b9a579f4f5b5929650044605a998625d0bfbcace05a1893b75f3aac879d65f50021233eb0eacc01b7f5cc2034e50f080fa80a3bf23513136e884b04969566c4626821a8d1378b7d1146e10e1f417e5fe75cebc35c561de1592a66497d9d81b6439cdd37f8a508ac1d1fcd6f199b5184d2dff6ad8e41f4c2d25b17750140e95696d5215d1c57cc8f686222298512eac15fa69ac1901692cff2692a40940ee52d5f8ffcc9b4d37ac68cd2e5ab8a84ca2cab453a655d05f4c66d764e5f90b5d6792545f154e664d35ecac89d82fd9ffb33fb4f50304523fb155bd8ebd9ca7150561aec59685885031319d18b551445baaed1cfad7d0967187922dffbededc37e9fe1cce66615ecc41b84ea93f4e1056460c77b4a04f1b3c4296dd76af425cf50ad8fec019f050f4f16529a77e4e2700930afe3a797fb9a786e778feef17cff8f49b9300936ba21b55f0b7cc39dfdc55467021f31ff4c00694d1d29f4942d1f3c261f0cc50ad7b109a690176a4eb2def7aae404466631e228af6f929fd6031fc331bdf15da70b1d91cd52bc5c56a71a9f7ccb26dae799da2d702651548478bfb5158c963b134d953d7d6a76627a70001b6392ba88a5a49ca0c29d224a32f05a52486f24c3cbc5df7f34126daf5c27ce0708f89f2baecbe7a0b58938de0515cf4deaebfb53fde41e5a1cebeece430a7c3c272728e1a91334c4d0e4d0cf4d617aa81305bfeb210a5d159185e8c6f79e8b30c76d7a54a743b7c5dccafd4f8f9516bde67f4f3bd0f818b21f447f929fffebd72cabb1dd30bf55a839891109d779fc80d20995cda5e528134e3aaee36d39d28cd28c8155f746f25f557b3c17f4defde4d3968f5d8ef4d1ef1eb7c5ed5fb34cd82156447528014f88148113061c9a310b7f14683bc3ac159ebce493219b7dcca1a6b001739cef1f5b78ecce8f201ffec7737a0dedeee1d5aadc4101ff75d033a696902d9b022c97d08840b82aa05c2038a6cb6110168ee540aaac9c5fb52463f3306ee373ce0e0930452d1bd86c4a7a783297ab28e8fef2c476a4ee3d4ddb8da6bb767eb2a0667401abbbf91d4c1cecc0c295c53431b40b75ae8d47fe6024c99c4a3c9ecefd51018875f313e019f74d7bb4b7d8d7218da2a33119c73a2ecd407e77dd3fc289e3a1423f649c0e682ca0fafe19670de0878bf87d189714b4e6572fb3805943541a67a0fdf383cc0df5aef434b13eff103cd3b3547cdf5e2b3738bdc43fcfa29564c31e5b9885c37c0c5d7c85682f33a84511f264dcb6b57ae47b256e32a72cf10a48d99d5f836a7b81973c29ac6e70a77968bac0015c0615fad59ccc4e8ceb739cc401285b84b7c5c63c7106f1d9c6468b59469085e43345b1183e17858c170bb21acc771e23f519c81df7175a69cb8ffdf1c69c1fd32c29d893ecf015d8d9a7f5941f675e6941b699a6f46e4fbdd6d53803a2d2f7ca6ca2167227127054975ebb4aa92086b5d4ca789cb1101065eb3747b3757edac6f94e6879535f7b0c45535b132cf5814c730ecb0acb3e5c18ac560d212bd6f32e7cd00009d395745c09dbcb5cbda656de9c366041ad82b894dc61a688d8c7ff3d2d310e16acaa439745369e4c1b23889f54f600701cf07d4aaa7e8a612a2dfb920c5a4e05ced114639323741480e4393f39493936b9f9981509aa524330cf475a9173e54a60e496f7705c589ff5f5be8bd7ee6ac658b42fb9173f0fe58f2735b7d82611b22b234fe7356ae5bd5e764b304be2c4de4d3e05596a2ea739d3de0b4dfa34628fcf8fa1a4ddf4355d9605641c2d0113787e8c34e260409e11334810ea97fe07a32fc31a9dc6633e47030fafcc036796c33dac25cad6e0fd7bece2aa374cd7b23064590d67ab4dd309641c2e9bc359bc35fda7b900865f825ac9d0e359e9151580528d67aeddbe3402f8815974fa9b7c98db3a94d09e1940732b28aaa107f2d660e3c21ae989e78745d04be367c0b3160a5cf3452bf931f8e7ba8a4d60f9c6ea517dad4f69016f6124cb24cc6879a1b3310798b7e9439ccbd320531bdc25fcf04b14d696632020e204321211c206fc39cb5390d4915a85e31c0293268040b50364c52f538c859820a993261df3093ba08859a146e4f8a12b920d0b2443c3ec40bfe890fbe8583d6ef6106153b4fcc76c1dc48b63304d298909756c27394b20c3ec13650404f1658d1b51c604604de0681431e7be27a5a670f7c400d475dc8ed9b16f7e0491bba11367b700e3c2592bd46785f3640d839d439572199662b49616afe6362df0861db7e921cda483db1dec271149f0a0b283a8e703c53cc8340d90301bbb9dfa599b9d99469cd310eb1a3f0e9aa4a9019fcd6e05dcdad812b8b1d46068f3f814dd587b145ccbf871c2195cc785316d515c5dc863f73082822d135e60bf03bf9851a3e3ba67f829d62723c8a7360d7082d0d279cced32b0b8a8ee31f685acf07f48cb775a0d4707cea3aaeed0a3b93cc15a4750d53a05e8bf58f39ef61c5418b0cd5c22539f10d5e2c8c8e53466e2c580145f805c206276c14b001bbe8dbd6e8a191f0077a86e24d975ebc28022b43a9ce40a415ddb032f6f2f0a4edfc0d324acc75709d6f1d5842c19a70cb3a3c3509f40678a557ceca5a41f0e04e0d691b770b35e1c66c2b152482a708fed0993c5d10f80878e01a3a2b98d592f2eb6112805299e0a12b3c7c56ae578d41cee41f786d2d01ca4dc2b8e5f53e6c8042af7b026fba152903596d3ea4c211b3833bcc002bd91846d95e4bf48d5ade352881bfa9957ed7d306e87cecb1163feaed83ce9c6abb41065f0e70b5122aab8d0aa7c125c9ab8896f7eb22c467a8bbf7d48f6395bc290a5e54c9f65498a7c40e57bf33111074edc045b6dbdc6a52d370834db2865ffcae31eda9bbc87a54d9290c0aa2c6694194a3ef5f9a1d3d353c6c4feed2df8187a089be855ed22a187c873830f45980b22b5b86c2ae87a34fe5fed1e69e99cc1a39c250d3d760f7e1ea6f91fd80e14f68e94822f04de53aa6f76b6ad64739cab207abe34f056a8cb7356151f6341a62bf0d5a4fed40ec41b6904b69fd4b4f66a51cd56f6881f2a404236650f319d6fda4849f60ba472b8f36682a7a14140d17f00de180136a0778092955ad9d733186b51bbf75ddb605559079eabc361228ff3fead1e78718782abd9575eea05057810f36751d3173da480185284bf70a9d1e078681f9e9b5d7ca27528574e72f68a5330f89c2a049eada54bf865247e1bf26435811b05930e4dcf154fea4f4b8d4adfd75576661e718acd546824e6c40149fe1add82a7a45759d422d37afa02b3b59ca17239a8b92eb5662a07e4fa65818dfb317a347998dd27e8925f438d54655e5aab18adf5a53c2352133df1500c0e8036c9312808f915a0ec74cb8c07c0508069cfe7ebe3191d51a112221911c8db6ede7b82078056daba17a2826ca7add6508b134234bab03cb60d70bbc5514c6147f7299192e31650b98c8d2c316f21ead07462c2a55b3d26e768aa2a12b80cea00d0b4123be7390057e28155c84f000195b56289669303e32ba0088025458421181d074bc5db84a8f4a02d25a43bb6064aaa2d64a7ce78203ee56f4d041fae16780c0f7313d255f82eddfb9d95ab321ce43828ced5199684d89c26af82805cddcc9b669268c10565ee9fcb303ea159797fd080cf04b62dcbd5adddd3a3cce1d6789b1e051a4e450911e2ae46e1aa87db200d4b41e219f385b242b207d405ac345f38a1344c4ce6bd35a5f2d3d5f027278ef79da270324906cff9f1af283680f7fcbc702e087a153a821eaa9a3424fe5062bc984f11c2e6cf52ac84d0d20b3e16a30d3c4b1b46615ef07c297ea06112da6dd2a3506705d397c90c3c0212ee5d1191caa3a7f16b9c98de953e5fea087f82ae28ac0ea3eadb1171724b84f9ee1c80f41670b65e7246efb713bb9bf4af884a7bb31d23f5aa5d8e8928d01697b0e7894ea417f2064bf721f2706ee33e8341bfe8634923e54a4f2602acfef25928d1d64bfe966744e72785aaf4bb696b7d101198e794a35823d5f4bf8feab50f25e4d7654a156b09e15dca41b5b772a54daf0e028463fdcf141a042f5e2893d46da06d80699a4ceef70ce177003c114766ac9e8ae3358aebf771ff5d053c1bb3bba0dc323d7b4543bb49ab6672bbefa8e30a568a04dd3aa274ec02fe0ec176d8102028453a42074a0e22c6c14c53e8b0b7208220f1c479ef30192de412d944829865e586bf084536e9626ac024ead4a9333a29fa36aa254d6c009da0a2004c223bedd4c8879e9399e3001e5706a354f1723b5f06206a25b00b43195a37bff53b9178757480f717a4b3964a7c823e8503952143dc5d0715e220434dd6259395f0d890fbd0d699ceeb54f80db8086c967b98e24c0f1f40ac4ab53fc712f9590d6ff9f9c4990b1e01e685efba17ea8b4b80df00d0d004c74036c32a7c04dbd8809504ba572387f4a9a58e0e5a9a409c2a071fc8cf990650c5c5045ee6ad466257e264bb33cfcd7406c899feafe8a4bebd50d60f6e50021289e6891453e523ab850a0d911b735aca034c56595bd7d3c42576cb165f277b96eb772488876daf32bc2f946f6003880e69da7a9e9325aac02d4f10228aa8cc658c8d799128d93aa259e5417be08070d4fd2260ba9fdc36267425f1c35b12ca7417b41550d2f0d79118f38facc33d121174709b20d7495ae724e383b0bd3fe66db01c80987afa9970f9a617ef577bde2e1db2a15b9835421c556c836ac1fd3b4e648ddbb2b86533bf7da5f80d33e5e61681701edd9fb546da39e9ebc1a925474bd26b6dd39f3a49e64d45d76f8f4f9bd783f7f8cc312d9bcc36d7b6bf54d44aaf7ebb76cbe3739cf292caaebbb00c89a66eef72827fad3c2ee0a1da92eed0b9c61278cde5fc2c0f89250c04fb70f9be41b18ef7ad9dd1b76fe07071b147f147b54671ae8a4df834c1e02d5397de40a368399d1df05122c30649bbd98d0c7c1a64e7d5aa858015cddb541117cc513e48cfe0e401082d2b6c6fa8e61e0598fedfb530d82d9367936b6abf4bd130bd7584d5f06963e2f33e3df889abf9ea1689078b622cb0cbdc0dfc6632e5a78e4abd40c6174f1357e5904084b25de960e151b992acf015dc62f445d65fae1224bc9700e888f168c4760165a3c5aa6d9d0264fe159a2d24e058f2e47bc02c0e88d9a7d2b1612d5d2266db266afe58bf7823a346cd4b17e842c23b9f34b8cdf598bba1ebb625183e772e4775420b6cfb355dd3f6078bea60fb7e71af873664bd92824062c49331cb5207ed840759f9f1fefec2d763a78e38a597a6a1a5e1aca9408c4dbd00383730f095a946d1a321c6b38fe6ca57de709e68ba816be4db78412a9f707345a0fd32ffbf28b56cea4710172f002c41d85f1c8e82f27167b6282c54688bd4926f58586b6884ae43b2703a5a940388e03abde2f2d9e62b46c6b67a1c513021e0a9d2d9ec42003b27ddc30c501882d3c6d52e79287f5171551b5a813e6cfeda321e951a8bcb358401f2f2db5d8a66daaeb12b24168ea5a8f8248f6b9da9cb13aa7e39ea78d14cf7ff6568de06169f12a74d10f6348d9cdf7be53bbd29dbcdd242a897cf1bdfe900e3bc5f2d35134170424ae84ba26023b9b1f20b8e47a9c08b093c24460b377ac0372cbfccf2d4be50a53a0bd7e33a717bb8c6a566134a52c199ff891067a36a1075012f21b09bc2b4fd1d720ea85a5f41126206cb499700e2fab914e880c170dd0c73c1e42113e1d706b6846d88f2238de896083660350f98849b7422270e5a9f45253c1440873b679e569c59629bf0b3b2e63dea9a0a853b28b69a44b2ad2db27007955a7817389f100c3c4e619a0a12b2c53b91cc20a2f2f8b36646dd2030627a4d0181c6455a40fa961e4203539e47425c58652527052008940163103781bb3f235498df47fc7661b341476ecfb91ae3ce799a7f685604271e0c25e5507e51b3003eb5c23fe0ad03b9aa38191ce990298d0364f8c4d1ab5d06fc1db7966c6d44cc7d5196005e2637eecb383f279e628c9f3ac6558cf83f870e769bdee337dde7b3d3b4ffed8872e6c1b701058a740ca6f54848d6135e8377a11dd4f1d1ad494d83e2710befa81277e202d790eb41042f0b0aee68f3961480354e7a7b2ca4969893220a41cffcfc1af492318efd0640d6c83967d8be0943e5926ba082e77cfb23b8377c0b9f493c45b3802bfbb94eefd6666d64dfbb3ec6ee1114c04a0af091faa4f0613a474326371402e73b3b7420650e832389418f6de15896ae2cbc888ff20bc9ddfe566bf609e31eb996d70dcc2fc751fcf9aba13e5a1a9a54f5f1ee3babd5bef403862824a7d94b41284086f0c03d40c46c1ce97f57f3230fe33ced7f62c818f0edfc28f416df200c5d6d6790e6d1da234059b25751505ffb08a9624a562a0f559668f29b4a103f6e0aa6c06a00df12082b5d53b381cd2d28266b5cfe6a6097db18f762ccc0fa9fb9e4dec959b4c837c764a28fa3327595516c15ea04098bd2ab3905a407378913c5aee8eda00774d857df624a270b50f3d31d891a2eecdd806d46dc810697a2979e3951049da2f8978c878dd58eef10342c6bfb35a745d1195724ac1af3b4df9f0c78870632912d55052c9f3a798513e66cd6d716af7b345af26a0c965c52e833bcd079172d26e50fe11a173f6d10bba28138292839014bb6c52dc02c2524cb91d8f7cc46ac5ab84f8d38a07458265ff2c2d360c402a4aaf3f6bb89c605d003add09447b15316deb33a68a538d2a1629fa4131c1b3017460bc5f4cda017dc6551a53ecc1e2be849ec1f0f673facd241d400232b6c3f0dca2e1a82488f9f94a62c97b7fa5ba70c7aacab5335ac1b62a2dce4b05f40480e57db6b4cea82e05786331c7fc61eced9ff27183cd0aa2f39311a2a659b84b74662ef09b3f8da802e543ce6b9150f642ebb51ab97153341a2421888c7ee059437c67d8b572f38fc9fb060bedeba995fb526642e24e6dc5fb137e182bc23b445a3e04c99afc67bcd30a9a7b54af3596d74d97e723b18262d7afeb0ab420f99cc483c39fea626f60992f9e3eb5d7030c73c1ef09e25060f808a5fe9b492e0127f0b67422f6367be1edc87f0ab02b12265ef0531dae1f9bcab2187403ca7cdd968bffa0dbe17556ea49ab7ceb33d26ac92175ef096e8166ce3f3d35541da82adeb981088f374037ac2ccd4a032caa9197b80d6b55ee4d154222160b75812fc4c23a34cd480ac4ab28e144b87065b9fbac496fd9574e56334b17b0e5e1b1885a9c860878ca859760066d659f5b8958bb5e353df1611515f57dba3f01231a08d067791c21f94979db058bb992c787edac9c3e4cf8a32bea02579024c93d51140bbcb9261c47ae0251f755d495c383723a945f661621ea6a8ed12d5f14d75be43141c7dc684948acbe598c93e7ae91a87e3aadb5f2f84593188424629afc1267bede6daf879807d35becee2ebe4e1e65f824de83acf365991dca07c8ea57a04a6578f6459cc87ff55c1f99e02ce9786640c6f12cb8161feffece1858c68122ed658d17300de39e4296df3924d3710017fbd49dcb44b1cc8f2dddca4ae1bcc7f5189824897fba7663183c92f277b4dc3bab177ca00ae607e4eb78fb7f121cbce5d6506cffed0aea70ba6a0ea69c4d1f234fa5c178784b2055966a35713fd13434800d98e4d072552b1a719a62a0bb772a91e132d93c688c16b7335cae5f8ae5d110e277e5611f91de3b5998b836d156dcb24f4197e823d75477e519586e4f03575c858c9417e94143416d24c52951957b1b2504648124af04c4f5effc40fb7c845c6f52d1a426f497ab16ab9fe90c255b63e2b2bbc1afeaff3f2b85a2bc05824b1e1bfb313d68f9e9c6b1e4f7ecd7b626f59099dc621dd29abbb0da3855d07c9aa26e1bf202e89eae0d71dbaabbf4731d08637cb516816fc6e76748d10dd646cc4bb4ea649143f5b79ad8dc241d36852abaa88e2a96a04a32354402850e29941854b263f8b00a2f8748759ec1be5673320ecf61a021dd4c2dbaf449c72b7c251537c4221b8478c61edcac17328ca2cef44a011bdaf2ac6b77947b21d97a9442e2fc4751f158d79304d3b4383eecd1327d008104323b3dba033fa0dfc2e3e983eb8f7f660d2bab4d40b9ac725e011a346127be3d5558b891b10db2552ab72fdca9528e032482853b0c90642e83fe75004b928bf4d1a1eb181c8487d14b9f6507b9340cfa1ea0927c300b63bec2d1aa2182a86adb67b35b2a74145c2d50c72a8c4b313654c0ff2535ac9a446f1be910eb98b60a8c674eeebc09966c013fd530b4286d850145d7eca486435294290ce98cf20ed959c050f1f624cf7259832ac30e19eedacb4aef3c7de8713bba1a77e6de8d9e9d70858bbc01b448b6c2c8151706cb8277cae006a38c32fa2ded7305f9ddfc9c9f03ba579bda11c6e4fa8d02605f0abf3bc846cfe2255c26bf90333149093325c7614305a0eeb2d39fc8db55c5926862bf558a55fb83b09c8ae15619a0076609bcf389740cea2cc481a6d56866e53d9385b2900a46d154102d3332db4db2412ef03e52ddb01ae04655cb453956138352a535e15b97417440b5b4a868c8055599f8d7f2335442242e673d8d2ea0da977c8a52847b5a9e23cfc4120f1835c5652117a2c6d92259df70f0289b6ee74c50620a522d21c43015fd9568caa2cadc9469bad978292c462200312a966976d428c24540abac757369733ab36ef2dee99e9b87cc70be8c3abc49602c2f3e2f908ce86f128809d4369fb579f45a289368012355234ed0fd7252fc74c53db6d8764c28234d21c6abb5be29f45fd8a7360b39801923627f2d2d619d0f6b03378088f6fb98d8d5f0412c5de5893b23e47d097d9bc97697db711dc55bc46540ac55bc53d10fc20c0cd100450b283efccddb0efe6260a94b979eb83b376d4013e8e759267792fbfe35cf9b64b24ff93ecedbc188bbca5a8bc0c0c3236167d3828a0cc332937c6bd35d888ad787b46a561e5f846bc7361a0fcad1ad836fe966e0b06b34944ae5477be107857c80838519d34ef079962d81be64a92a1f2dfc113b1c266de22df08924113794c0419f77db395404e64dfd2daa119a64b71355b4e3604333493347b2f286e1c15432b0f3371e50522e33bfe68933bd06bc75376530a6064b07c21fddb64a8e540d9fa497d2f557b9919373bcaeea6e18c391945ae939a2e87878d742b624626e581c5d194cac13842b20f5e73383afd1ec62262d42b0120d1837cfe18e95de520028b71732255d0bee48a9413956e96d2b93d344855d975da8c2135a69bc28e4dd5971c85a0faf33c510480893d39c7adb55db7173b060b74a887bafb8007cd59fffdc88983e418ebb891e1ca701ba45e5415d70ca604e3acaa21e02cb5977d0f340ca749fe1518ed5d4fb3b41daeede550f3aea7d087e39d27d88fc2fe79c649623391e1716b00996271eb6badcc9d69c5c350d26de27ab7e4be250023e0c0660fd307bcdaed40f4bb69432d16ed2482004ee03a7033deeeeaed0adf0219999f966074bcda64248858f7e87545a96822985d3eeeed2a5b5c8bc32292b7613d08c0893891d458f3966774f48c95a422e6b48348251c91367293352871ada7b7775baa76386f6394e586293759cc49670031d28de9c2d94337387a10d3a24750cff94c0f415196e8016fea69eea4a0d7f52c11ace0a6a48d48581268b15a1e4cfd0acfc299d110591b859e4eb73bbdd727e4a0880716a4804e48533a39980cd97d7d00738b72e97dfd4ff98086df70f86f293837c414c414e41504155415abd452a33333333b30d1f1b3b1b3c1b3dca43bac51205ccccec73f241f9aa7c5a3e2fba126b92749504465bcc58d9dddddf93d8124a0183f50756936ea18801a9e245f7fffe3987d966885293ed8df16eb71b4d0b183b39242ada552ebbc3a7e0b2687242485088cf06ab4629a84350582ad66c44beb05bc782b7dbeda6850a8d8536a2de13580d450c52fe3f47fd873f87b321ffff2beabfbdfde5b0056ece1de6b0c94790478f200f6e405c98664689c38698498261815c408659933d2858aad2ddfdf4f4f444323333ef0f1bb514233e46764678467a94527a5efeb182024ad5ae8a57d5ab1aa23f7224d8cfa450882de14f95029aa14a2fb69736fd326dfa6343a5e4154e6c09af70f84a47b3e9e8f4304991034b49e7830c180e4ae979f985ec79f33258e5725230b125bcd520b8a553149a99999b082ac7cccba35246d284e409891412a00d49b0acb0d3810d204370469010c201cb85e2889080514acfcb375828a594d2285d944fd42e8a17d5ebee37a59452fa9fd2ff4cb8d59055925593d5d3fbfd9f97cf4e3d34ba2355d552692d95d752856d91975d4ae9df74e9fea74bf7ff7f4ae94f9952eaa453295d4a6996d066f9b29868594e364a29fd7fa71894c9c01fb125040231508806f4d9280e0311355234bdf84dc1c4fc92dcf6ed6309cb3233f3111db125ec41f1538f0075c7ec54eeeea6cc4c97521f5d95967363210341b1407eb60201ea8db90a825402a906570f170a5329f5a994524a29fdcfcb3537253b4aa05a5465093d600b03f5016c662692135b421d5a89f4d874382cb1c1539231358461c30af2820f5108271c6667da31e76c481c4f3d2068cdc663c783474b31d33a7a1f300e1fa19a9dbc63a764539b7a413654a626285de5d1e3557748c1e06a361d40594b6853f7b1ddcd0195a38a26e203cd6e0fa9d71e405ac92b302ca02c39031a006d14252fa5b0a597a5dc92ceece4e9921f01581b5a36bc6c84dd78b9915bd245e1351b928ed81222f530120a1ad28fadc45118878243604437221c110e090926ad66a35145438b86178db0a0170a64ebc9423eb125647282da40a8aa697f31d5eeeeeefe41fdaa7e5a3faf5f5885f24b6aa7634bc10d96c036c071b335dd6eb79a25265842245f4f6560577577dff858206d4b96a2986279efeefa90cccccccccccb3f128a1d2cf43d29980e3fd734dda8a78a6798997b7b459e6156c0ef080a105c59405972c625c4b2729cd949caa29b56bbbbbb97e4441d1ac9559b4bb7a2d2d5c485a3a524e9fe082a285fc1ddeaeeee5e92d4dddddddbdddd7d987f764c7777f7a9482537119a06a574f464254f74cb883c7f0dc95a425ae393b982dbff6bb6244d2f66a3970f3333f3aa98415d7777b78fac0bf7eefebb7b8754b2ebeeeeeeedeeee8671fecd39d893b5844c6eddccccfdff7fb3d1166ecfcc5ebddd9bab6cf40506c3025543322947749c4149066597a147cd0c98210a47660d65b89aa160b296903374d1f4d62d43d80cd76c3e624bb8e3c1d84cc67ad299f119b1e1044c06467a31195c0573190081321920993193c111608c08c44ec913ae76a7d2bdbb5b04bcd52e495c7777773333777777777fff10b86663f25a9ad0748b947ab73311eec776352c12216cc7ccccdcfdbfff16db2a65f4a96191915ccc470308b5df36ddad80da32926af7ffeeeeeefedfddddddff7bb3b25a0cde6e370f3d99f66a58e4c4545f6eaf76333377779f9999f91d1656f9b2f24551baca33b30a4550c0a7580d4f171d81aa2f77811cc286b10849a732586fd3744020c24643efe6c7c98bb89395244385b213f0630165b6e4d38c26d9913a2895853656821b6d6808355944da055dba6f9ccaa7472d26012eada19452da54e9ff91524ae91009242a9dcccc2c4347e5f3f720fc7f97cfa58b69bbf6ff1fea29a5340781181aba273f5aece8a0e3a428cb47293d5dba43614a4eb928b84361e62438594bc8cccccc15800044b3bb1b34d7025bca8d41203293ab294ae612f43922ba6cf15c90f8348971e1bac958954ceaaccce776bb8188a15269d9eece9a6a780475ab2fc96daa9377bbdd4ec474d16a365d0d8f4610a6cb52f2e61d9b6eb79b0b1c066e2a026b78e4e4550ffcffffff3fc5553f6b7eaa10253a8051448415f44561a82176b8a1a3f7fffff7f6b6ce1b27533bf235f5ae4c89a8e0c802caacc9ac152a9bcdb26e249d1a42fbffdf76a4a9fbffafe406160edaffac21594bf8ffff77f7fffffe875f49fdd408f5475419ea77f75fdede3dc21aaabbbbbb7bc4a77129327a6435715652d653650a3c0cd5a09caa8939c7cdac6633f204d54103ac1e974dcd56641744028d95140e27551442125c10a743d5d3891d20af97a34111a9250d8ce88670d0e00aa775b31a58e1fc47424e7034a8c2e92495cca23ba9c3a1af0bac724936f54eacc8ee870129889508394f53bdfd42a2a958b39500dcef50d64742d8d479a08b094c929d0721202207ad0f22345050a4c5d32bf26eb75b07a21710465d0d7d604dba3aea2a7469e0e9509aaa5a82f375747362814411a26d737777596b5e0d30f0e6b220994892b2d16a345acd56b3854cabd14a3a8260799574815b991f05a861910caf52a470355c80c88b1424601809e1133fccb868a961d1cc4b4de98de2910c913a2b71005e4da142400d8b6684545a902bc82af0026a58440353596a48c4d54413634b28a7e491daee4c4658e5925cda7d0e4f6a2b01f509d1754e0e4bed48a7eede767777f7ffeeeee248f9641fcf57b9ec6666669eb1fc5efe6f6ff7ffffdfddffff9f834265a58653ddb27b777777f7ffeeee6e4e0c145acd16c4fbff7f7bbbdf6759aa72ea5b4aaa2ffbff775798d8dd7f55527e80b5282c1a8a53d5ffdde69dd56cbe13bdfab29b6714c1ccfc6f6f7f85b090be18ba7e3f67882eadd992c2fa394bb36ddf53d237c3e49a6de8677bb73fd93744ab72d9cdccccdcdfce01d2f735052b97dddd2e785c01acbb20d0e9f302dc16bb0010f184c565951b4183cbea76242cef4e2adb5ddf08a0eaeeeeeeeebe777777f7dbcbccecfbd01bc17c458c7ce0f3fdf0f0efee773fdbd864204cccccccdfeeeddede870876c02905656655a282a613a42ccaa258b058c019c939cc4da652f02af7f62e5b71a049d0fbffffddfdffffbbfb6f9fd58659ed8a27e24b1622ab2746ca4eeb90827a13b2274c2e6b39310cc0a90edb57a12ca40517b492989999b7babbbbbb6fddddddfdbfbbbbfb7ff78dd468595240682abdffffdfbd23709c2505d8b4bd32d9c89311a93e8e36cbeab99085c24477f7c9b09bff779fd66ccdccccbeadb0ca38ae9e7c554317b6a42663dd9899999999f9888e999979db6744027c77ffff4f4e2c5effefeeeebeec82955437bfe6ff514401bd4568b166bb7064684f15bba085f393efbf7f013892f04511f1c8815f6f861ec7dc45bc63aad9e009985fa8ea8dd8305e254d11662e50dd6a2e14e915c9e580497825a774cd6893bc2fdb28a54180624b18cc2008d80d87a3cbe0c987fc106566662babcaffffa5913152f8f1944413b432810a299cfedf7d1a26092458eaa9ffff5fe834532a35a31b38a609d22618c1d0f9bc459e1b4b68c4412ac6fb99991fdc2d8f881526726a2b2dc254b0d08c480075e31c66e6b673bd94ab18e1e02dd2acbbbb8d3c40f56166ae3bd7834f51babb444fed6e212cb39acd839fdece69d19393a36edd44b9afd929a54631bc2a97ddfdd84c86493b9ccc14dcd80cccd988c58e99993997f20dca7577f7aefb7ff7414c780f1dff3c1a41dd2aaa0684396b36a32a1ed877c66c6ad42425f5ffefedf76b6a6c3333b311915ce572976d7e761b9446f8e0a104c385792a1bb955361253b9fbcd0ca3d737e35827e96a97ab2399bf3fa30499bf3f93cbcbffff4b9acc39e9d87c9b2f5c9ddf2f3015319c3a1e448d8022894b841b542eb357e764a2ab73bb9a7c8e734e9a396daa56d06870314307e83243a8737abdd40a6585ad16657941925b0b9e1858131914403844f990f10b31644eee13234f9e73768980c636eceefe7356981fbb7abcbbe5055d43ec627eb93e74a060ee72e5c4d89ab99658260586e9694bd261021a6d2ca70421ad36a786b18ee338d7b665951b97eb6702170d1c96a0099b151039da978a19952f9e4cca922a1e94e0cbce6cab2b87e4d27043b9a0767aeba98667dcec07997f258118791c26d187d1825f50884edc7277c30d35f3d79543fb7d519501c891c968e31e66a79605de58af8e6c4159e182f282727451c7b1e4711c4b0e2ad449019176cc389e4fd4711cc7ff349903ca1063592bcb2d2f50a9615109609583d2c28f29a3a94971040c38655502840bbc5e7e4f9a605501016d7500242364333485b523881863099090214739493654220c1e5386a147013d00a8e1afc7a2a7a35dd6837f9a25bb864741286823e198323a9b479f8e19b71d890e2e6254bcf8fd7475471d2d6916d4260822b7221fa41076b24af0909e7c2caa210590c300a914187ebcba5a78f800490be9e82266bc18e1064fd808a65c5614415da41d4833b84b90cd24f69474c7c9e467c7711c6bab61ce12a66d4e2631ea9c73ce716e0d7f5f5d95ac1cd04a9e262815613ac0c10271a30adb4df55cc86296745c42381f247e6a7cfc7889da91834586af164d642f89e238d630330fef2b628006d110214274481f3ce0e91a660a1f8804d59031c4838f0bb3a8cc3c272aefc739abe18f676607d93fb4b00c97ec8ad106d311e91c6bb9dd981b75c78bcb7f8e8bb7e4a70207e84493cbee627ccc1d09ebd183068387264e2bc056ac540e4a0b2566e8a487162e86d694541251858e6c312693fdc4f71ce7389b39ecee6aa83b97f7cb44a92e870fc428da0a3269827ae1b229ea26a9fb7182ca416981c7121972566677771ba586483f8a4a0872a40334e5740385a881de910a191f2377d7869967a22aef8ee38e3bbe20cde050a1218341f32b35449aa151536a8834f3b332fea4faff67514fffff25d8a84729e1c54e50c3a212723e64043e52662e5d8fe36be388d30004885216538ba221279e7c6f5a16ce947d6f4e7691365a501b63c690b97304b0ea818387c6a7d44134f1642f520b649634065b4f6616ca0bb6b678cc9031abe53387397bacec4c4f04192b92818de9c083ad9b1a1ba8119666c4123437343cb7d9dda5117144f34243f637c3eeee96b6c9352322adf0d50935445af1c28b66930b16b1ca01da21fa78b071d361664948c40891c4f26154866e4a7c78b2b50564c44efd88e1391c1cbbbce386302b57424505ae9a7a828a30e1c14214812346c6721b62eceeee4e3018628f0730666885e4b70426078c278718c2086c06ed912261ca868b1c582e13449d6506462923b099ca5243232660321f7320811a863eb10ccb06c842143104b4951afe6a5cd5ade1af28890766109bdbdd1d31541769048b5aab2151f0761996016a48e4244495d4a8d4ab37d98806a0802000b31a04000140612008a2b085f00414000c22966c98fc645022934b033128181204411084500803300cc4600c436118cc6229e201209012e103858cb1fd08b6cd0efeb97e9b0d603f37f54d3122cb57897b69c404f3e4a507bfbd5dd93da5e41ebb0e56df465090047fcb1809deef47427c6bd7378432f87c3038bc321bc5e4ad2728a3e88b1e27a085a533466fe04416ae6497826ad727c261d6da27a3fa9cbaa7d779c5356cb22ab5e98947cecbbe97e9dffe0cc83f0d5017edd7788ec90494cd0df342b99952c18d9e777b2de2c5df649443e96cb940aade06ca3df10f3ebd714e2d4b690d69ffe0b0dfcdc2bba7e91cfa413135da9b9d2ee7ad48de6b7517b415aa7f1ccd07e7e90f1240feda68f2391f4c387a498a15ed1339d7ebd7f382fb12b0d22e1d2adf725a44fe1bb45ac8aad28711893ab7bab0e18be706be18f0bca0e4483b6a65040bdf6dc16b1df209ce2fbfac3447021dc2cae385371ffa032e32ff10f3ea37fdd182ab895a9eeef00f27bc5a3b36c2485044fd25b340fa6453b4099b79cf6324f822b9d98b2852df279f259f4df653edf941af49af378b2a4a4ac964815ee83202e8ac0cf41a63fe19d6792f5433c349078cb79418c0044d5cc5ac0ed92143f07dc1036e82753234206737ebcd1d446958c394d42ab47ed60d0eb808f6d98587c96cbbde7810a13163487015da1e5f0039c8fb095f3fe5542703cd48d2cc753a8206fa0f94d9646d87af86b24f95f5a5803ed6e88d8f010660d9cdfb5e90444b731dedbf261436d9cd966d1d9c14e3e5367ced671f77465c8534ebe662848996498497050106121e887a3518a47fb709418b1c4836e50e34bdf73cc9a0a36bcb10360236b1be086c8962d16f958e160c63b33a760e2d1e2b2193abc311fb070cd4caf86d1b357f0bb5811f7c9259c2022101a9c9308c2cf6b5a551cad75ada0f0326a21974f07e382e4cbcbf80313e612c7da421b2320297023e5a5ab940d36aa90dc070cf83ea20b1ae4250a3c386b460f4a8158d2510f7a882a58f197bf6404a04f7a1f0c1e838e08b96da5948c11e392850e8809f9948facf63ffcf5e25681dacff6f554c4e7aff26d8f46a4ef81cb5fc81fd198da40a5a65020134ee2296f251cbcc164b70880c9150825f441e6c995eef3b06ea1572bd06d156132ce83e1151c53d8feee791692e59e70f9d0f9cc8fd377f899d82bcee2e8bf84522e92561803a7877078262e9d96b950de2c68adb5f137e1c555fa6c9f94c8496ef4ec72dd59f5aeff0410ea467779ef64b314297eecc086cb42170079ba0497b9f92dbd604889006a8756c2fef108b71745b3e4548bf05b81d821ad0b05687203720f495771c27e8b47e667f84119b06fbef8d146db4f1d9f9d5ccf8c5c8d3a1d12c1f9cd41b2f4d4e5f06eab959fddf3daba026635741206f359b94b2a0c20d237e2582f3c8765fb3b03eb1b36492de6b35b873e6c60f390e44910068946a99b0dcd143981d55ed68ce9055f215d039817d26f358ee8f9c4e0866627a0b4e0acff70fd3ac5218df859268fcac65d20d0fc8f5d9ebac54103790368fc8ca5f1da49fa610d30d11bb43784ca45cc729ea44c9a10da2e373237f591fd41ea8d0b7574830e97aaf457a53b2d22bf7b2953da19d21ba9ded5eb8276e4cf382ecdf233a45066c9d5a2777a13c64369a38a05e8ef23fc5fc08a2e0bd6a056e5260f2d53413a4022833176ce185ed0e7a4bafdbe290f6d9a0ea092c747956aade8b60f52176f7a3106d3503adf36afe72c2667261b13741cdd172fe636249b6fc2ef11191d3b4f304b2c3883df3ec4012459a65c20a741267e0e574e05d7a74194b263a20e529e8530be4def29115306495826a61584b3a74ab74a01e229ca65b5f41141aca4928be15ddd670af4aa04e50b61581ff352ad3c50f034ab7619213439ca36c9102f920a2c7a07bba5f8a3d88dec39a070fa2f5d7a6c6db0f3aba7b177d97ff84c495b3f1f703baf1ab40c3bf4b4490a12bbb586f5c8a18d9c4d89053d60c9641bf84252466645c9e0277f9342e402e37251aec670f33ba85960b25294f6eae2cff24a2d9c36562a4c35be52f1fc8132a01b2bf88d31730479c85e2680dc353e46b7f538568d68918c72dcee244f21fd80d58ffa46648014f2ee2402735328e8dc031cff277e806a23cbcc56e3ad5640fe25e4401f01bbb09e722cb58fa6ba03708981545b71301f83c7550404853193f9a1c1561d7c4e65ba16bca415522032c97475d7313883f7ce91b103ca66a2585fea2b81aecbb4b804483550b25ae9fa7cdf29ff57261d98d06b975d36af61f04a5bb4f82e47eae613860e3f886a7a300dc68c61d8ccdfb95af2679b49549c9a3b48cf1730d4c60e4e8c43e22282da7f807e926e629bdc52ae378aa097fdc90871ac62fc79e2ded130f44d5fedd24cb10bf53acae5a837402f3e31d8b289c29d1088d633255ccac919d582c482cb8109d427c479482f79520d878f610f4207c334fb6de433887f8466f498ea243d4218371e9d83a2c9de60338188038953be34812c8510b70fe804eb97c6c6389510091cdef08073e7cbf2b566261445505cdb476304a013f15088e9bc206d3987a20c0227cfbbe9ec0e4a5d829e9e7b602c5807b76a587655845a871421aba2129108310b42f434cd19fe1f789338888ac89cabac81627d61d780023b68c95adc0eb10157d2f44f6663fc0ec97a4f072cb17f3eb13d906de83b2b94258949e94c353891c471df7085c0f1b29235736b6e9f9c8debdcf0e0070e0c521871d09e3e6156b4607cb09a8decb6da720a8fb88a8961d210bc8deeed8aa08e78f58e076a5e7f2ab715560a20b6c4375700fa54727dd4f9d2364c133a861cab66915e2a865cec8fa16fc5a9b72b1f29a70551bc17723081783c449e6e0b15ea3ee81f815d69b9e8a05af54ae094aae1512ab7984b49d9bfe6e5d6c34ef7a399845fd24b19eed17858f3b2693ca93e05969fb29e9e765cbbc7a3634b7115d04dd931c855fb4b5135af591991e81197ccbef8a52c2a740e2f122e03b2e729948cca181c32c9d92d570b2204db033f043e47e9eaf278260e0be3f66788aa7d14180d7789375156941e97f982c967030bcca78044f8ee8ad763d0c4b94e5fb030a2578e86a8fc4a49e17c3e961b1672f27a45fd21d85269085e99da22e85869a2a626b5caa948b8c1af88008056b2c3d5a10d1f58910704053ce832f4aa83d286a45773fe7a878f22f878bfd3bb74bf621fae55d1530376f4db46ea41850ed777875bb238a70d5ceb99328db8cca71911af95d66d68a8e76c6a339092cf149b7648741ee817e2c0200a922831d3afebc070ef6cd104144bc1f35ae6c6cec42d951a3568b7630a6026c19b42bcb51887044d11371f89c16062b055ec7d883f8ddd16286169b41ff94ac67ff20baeadddd7006b2536633e879bd4ddb61920bb34aa096ac64a1f110d35fe000b458dc8c6a215d2d008f4d09f13bebf90b803c8e36f6f993e7e714b5862891ad769e5569c978837d3c1dee839ecabc77c3ef272e204efa3ed3cb6b6edadf654976dd0efba1e12e5c4c3d589232cd54bd41c1fb4e61bc8d391307d03ab8d82e259c4d52393ebcf6f6c6af5cb2797cf81fa676580b80712bb7d68d2b8d386c3ae9ff8e7b4e0139ac97e4eb7b60dc46d1fe6c86b0cc85171f7277a50ba28747bea0aad187e0f6acdd7cb9da5bd435b3ad115c7761eef2bb5ac11aa9e8e960df4859e1b81e8a1f9b6b25b4f9ad7530db1e755f0220636d11d8ecd9d9883623362f5d05e1e4b90d5b8d05c371d00c5e765052229522b34ef5557776b1b46ef87a16138d09196fac33cbaa7706e551b56656f5540ddd629fe74057c142cc7ba2b0b4cb882eda8eeece3e548e33ca0da33d61041def4def41fb25d351c530dc82391bc1eca6aaf5e156d16629f49b00866cadaeef0389197ba23cb30a2b044f91476715c3544d197c6590f8a1804b629fe0da152182fe19d5f9ffa6f431e9b48e897412a156617c42c59c945fa1f57808a7bc77adcadc34123ec86b5c04ddae89c35ea8b849a95207b559dcc81f08c61fde0e8495905c40c51ce90cd21d99619b71241c60fa0286c3d2b3dd2109d590c48a5b8ab7a00cb43bb8f3bdda3886be994bbc076381132cd55b0ce0a8626bb934b6c7f974b8208f9595f58833569adfaf2c8debee7e44291c410e76f271545373b6695c90482fa75b5e01a5c4e13524b2dee2d95816d3f75ebf8e8784c0e6e0ac061e68839163c5a0d7622ecb0c4ed1cd2597c8be6b6c91d6139351052ef923068af81165789a665aa3af7ff9a9a6524b8d26413cc7f0b766f696cdd68a2ce2bb4dbf6b5726de72aba0e879a2b5526199647bd985ca0904ca534cbfc8c9dbcbfae4b30b778de345a9504585f9c19ae48f20003dfe58a68b3e49354be97b9515a783b17dd2eb6defca7cd515974b43a5cdee659eb439f77f2de044ce73966b3c7cb8b61699ef1bae965ae1a9ad5d436d1b47c4ea2990ee5d8ba283813ab2cad9b50e8936eb67615e45efaa8161185b79e489101d6c6f5b1d2c92d9754a63c9de52b9bf43273d7ad190b183599450aa2164f8f4205e38d1a09de630118b28efbcc2f4e2547e3cb6d94c2a1557078f516562bc670d4bb1b5cad2761e62303d2d9117751222b62a1ca82cd3d06c6e1c0ca7718d8adf6f53e5a2c6a6f148303475c6052c0a26a17a9d2910d601891ea56a93e967407042a69f5f03abcf4a2cb79431563b6057079d7b29b677b6957c5c79d79e1126b2f726ea68a4d3345680d91804178bb8e834584514b806fb865a8a994cf6b93f958a314f282de2b950eb17780a8ec7d07a58e6b3968e0d709c5091e45d8663c66879dd23b51b52aae9ce1b4dfd9a8825c021b1d7807c69fae88b281dd47877a4aab1f1d283d8ccc488a43978140fffc9ac4edec39e0fabae55edf9ba9fd81fae302d51f5af8a2897b599bd70332ca045d21d477a5d4e8ef7cfc591a9a153feb99b29bde662eb93d94ef5c08b5f7b8495daaec269bd147b465d00562c9e82b4403b628c509a7ca52b9eaaef67009f4b9a87c468ec32a80f4c8b97a18adedb91b942878ec7317f0c624c1e615d5b4b5e7595b72aa94b8748f86190633f75483ecf76a2a9663ffac21784ce93229d9585099837518c34f83063d5deff76db698383e8b9ab5a34cc7148e1eefb96e9784445084f116ec2626a5ee61a5aa796e042463b68b3c90c7eae423bbd53046365a670df9a0159976c1ab78f5af23903e357726292a1321ce073e1d2f5898a4d3cdee74415b8148afc4b4563327db8ae2d036b372bde9f22168df85324e527994d4ae9831a58394ffe4ce9eac20ff2234981f70e88c52fbf983e4b1ad0249ab91f74308515c8b0dd702ba597f575c941c672fd37df8af20701217ade2f7059bbb516f0f0cc2deb0802438f2c37cd0b8fb7b0c42b26548622937a114b9a7bf5c0520edcb226104399ff0390cc1f0976a60e29fbdfaea0acbd902c27f4e0e41c488cafd86c94c1bd53100aeb484bd9cdef586271f504fc374119556807779d4cb6184d4b49bc44dc311f66e9f5dab25dccdc77d439d24720e0ba79b4f79271f96a7aca26a128814fafdeb1d4b596495951590c0fdd991360f42d0c19575c845ec85fa5135e8725e681ba51f5c61354d064cbac28d89e832d10bcd5f774e61a8319ecdc25261ed361c1970a77b44da3c1a4703bee34bcf5b4285d20ce8f298f397b37fdbbf788dc55dd019c68ee5aca9eeb68030115cd33c924239a2e6a315a80a0a0832a04f4bc5285e6134716d64722f43dd17d41a0deada44bbeec831e48be944307eb2f3ebc6478f687549ed24b0dbb8e41ef5339ac449df86ac61decea30b9f09704eccec95a9b44dc28c47033f18dcf8bf422b165de1127801e0e5c3c917b49de49e5bf2380ba9c0eb1fad7fccb811f576137a9ef7c78b8076e419ce183f0cf526558e6e7157be05f1839fa88a7e0c468e3de98af0daf0512253d161b3369d688461f8370d1534ba5f8ef8b0c9c92a0e5a7380ecd99df8de75c4c70060ac93874f511791bbad43ca5e7086f2d44372e541469390399e32248c7832d3b83e14ae1edf986886859629be06fd6a487d81204b6842b37216751850f5c05ec65cee194a1a10748bfd0e69abc0990f8c30f6d47db3d14542f54f1449dfdde5fd99c0e95dd966a9b4fcf2742f8aeead5039ea1208537aadbbd72722b83b0f120e4d9b019646d4b4b41191ab3b1c1ed8ac6758c976624a0da36163425c19304e6b7b773217baeb05c66ac963669a9526c9eb67dc3031fc52258a83504160ceba48c0b0e68ff58eafe13a471631d65a52de5766f415419507ba9f9897a0516c33b00f78de58c35ea195fa0ef602ca8206338ebe3c34f63c3e2ae53165aead7f8b26bbff537a6516f25c76a665b7c49983c60a986a0e3b3c3e534ac6204f92d2a990910a332898ae58fa88c7bf3be346b24f4a701a6f424ab80153f13eace4e0c6a365492a2fc1353ce06ccd09eaf0ac46f857deae0b952e9f48242e6f24a0627aec1f09bb517162b9b5f7cd16c5223dea27a0c3a013a7a71b87bb525a1b18ae20715c22d5d68e87f62db760891d23498d20ca83d8506d787fc76bbaca0b2d01b6c0da74b7a1a6dfa9d5265bafe0853c08ac28b20ad29f34059e647834231ddb0861adf43831c5e4470c73e8b7f9d0e824043cd1bd2008e7c5d9c664d172d843c2199e8d89549ef7667e98b03ae964fd10d0ddfc55c9a02b3be8da4fda5cb96dec68bc55072c045212cf4846f33d703a82ae3864188865b931020fda356bfa7121f6a8795e3e213782c2733935b7a7bd352a053a13e43a8759496864ee2e6abe37411c404aa8dd204aa66577d61a40888c75a08986073ebc69d3f4c327e4fc65c67321560527d4d38a09de4f58f484e7e8d358cafc2e91d8766e7f1dc533c3dbd22643d13ab3741065af7621eff1f54c083c1cf3616d3a59b340001ec078881d4ea12819c337373a7244a81321b9ca2adae2e3458009d3005ae66b6ce9b6857a8d11e10b58e2ee3cc74de4da5cd7b1e5446130ea78f2407cafd14a17740df658e9d94c47b2a1d17cab2ec127b2034baee0b0aecf14babc8f00812360f419104de7ee69054d070c4f3a373a3080a9c30bb351b42d0158206540daac033785cdc68b7150baa9a85c8b37f6491b713617e03cd8449e7bfc9d841db2858a73aa897c8b08443c96769c9e00d2015e94f79c3d51d7ac46db7e1f1a8357b8c598c2c6619cb12242fd267e4740a4cdd4d87b51dfa768a1705948b4776d8d22b0c44c52b70b5569b3e4f11338a125279c2537452418acd20f68272fbd67368d727fd5ee711bf1263feea6fd7dbcd067a7f18c80be762f283bb359989014e6799fce8b6d66140c66da894bc3dabbead1d735430249a6060c0c6956c123b663ef6c65509e1e0bd83c4ca9608f68e2fa839ac7a54a39a0bf3e21d80cab2243ad58f3733c4efe910d2b23e9e7b5c2501738f67ea801ea76e56e318f286df38e7529494765a3bb1086b1d902baf8b8201f02e58423932944047bd52535d2427033a8cfb81a88a8a322a4171594e8751161e11037a57103c5384a242c3497ee1f7f30fa868bfda2de2009d8204ba2515f2a0cffad87507c0cca8f1dea3b5aa94630dbf9a3bd725b49dc01602100ef982d3df5580d03e829f34663ca10fdbdcc2624e7c7822fb4d32673681181404b10e69ceba2eeeb571f9db79c831e5f82ea0c77a85de58f09b33c7005707a83022debec9659a67d4991e7b723280a667a498002c97263955fcdb227bb7d48bccc944cdf36e7d244d730a8ce30d484f84af28ed6f32e11e1d07a52386ea6024f34bbd298031f983e87dd332e3042bc52787243bb80df11d83d083a80d3d4b82d5eb81fb6691f5c9106628e03074a6be0dcd0c714980972c07c60c0d0aa738c0f098a041b8d30f477d36c2cbf5f05faa538a981123423d32b2709b76094a00880e043f4909c92f8d2897898aea9466b445f23b1087980db7e404605413f74015fd436a64e4c366f792cb097b970d9b50c5d279350b0ce2f5dc58a41ac464b163a2e560f2bd919c8826676fbf3d901675e27032554ee275542f7410bffc9bb59759c68bf33136424f39fd0a471731d26f63ef71e37db9c95dc639f30433d0d0f3a1750304370b1fa9271b59fa9d67aa832142b09de7d2270136dd8b9fe070e26831722bcede6f4737fc46c3f33de4cb6b9e7d97c3a36e9e6de381f3114587b496f018a246589caafa16c08f9b70409e96f9331be1667b795619e8e2495563fb3631c6c63b24d6db481fe84bf7d23a75bec26062a07235cd9df83e987caa2c14eedb05a193512db6ce9c31828d2f483c129ddb8363caff21180f655490809ca5c9ce41933e5519fa1d9d88613e49af95d36ae18364688a8442783a6da4483b34bf843facdb006ea21bca55c1e0677812235c65de42362f24d093d72918a3cfe0a5f963286e5bd9c0187d58ddfd79d1ab5b652a260ee23377da1c8913ca63b01fabac602152869a875d032d2c18b6c29126b049851895273853c08cbc02e7e0332ad55bd3baafa08c0426399853c230c08369f7223a05ae5e9ea3b4e615f75d9a5a02f24829a9635ad5ceddf60b703b6df81286a53aa5d31fded927a846b6650ebd86438eb649abdd8ea81a68f0bfabbb8f1275a33a5260c7c5ea041348aef84f3cf19676748aa45531a71ccb506f957d6b7037bf41ca5b7ae3ba182d6f6056d5a5b3504032bac6d16a1677e03b4e5046548673b52988fb60107a756a004d04d00ddc930526cfb5e8688f2eb87fb15e4863628699cde2190120a401aba2e1c8b9811feeb78969b03a76406e984be5276fd7517c0e4069f23a660f327678c6b2f6d342e10b351c784212e0902831ec765f0b22f83b01fe0bb631db4f155144ee9d0d7e19be132d78d7ae23bbc60ab33d5abea7b5740230ec622cbbf334d9c27113fedf3aa87d2357fc88badd979905060bc815c026b90ec3281e90e5a61839c9af58d3b0c5c90dcd0c31c73ec13298e0f04c90c25b4d0c309300929dc4e6fd175c98d5031c7702843e0b22aa388b12fb853afccb89952abca314bafb8eac1650e60d1ace1d612988384440949fc872a15e6a3d76cffb05ae664c4ca95be2b84ae3efb405a6a9bd2fa7f009a7c3841c8d45bb9dfe1c66357842b2d3a74078d8443e252e842e1b1a00100f3648c7666a3303f6431dc642dbee34fc69d7ec2c02a5c9bcc7bd3be0718e3eb98452111aff869eda8b9bb961dafe76824cc432535a8e297fe750bb171b22f05bc57fe6087145b59582ad184452b03de70e43f7f4a18fca31726bbd4640021a2fcd49c5000ddf3ce7b11f95214d374cdc0a526be35b604639593f3fb6bbc390e141f136f74789cbcbe2591f33ba50a20ff2132bb242b8948ad5eb0e0064f816dca83758dc0944e36c9253e30dd4839ed606eff84752119446833cd19ffd8fc5b601bf63725f954a033febe58c8bf432d239927d2a2f8c042e47ffe243350615be9e42e75541b7796d9858c422826e87453c22caca598acad07b0beb92cc2209b326dc23f9c9f152f117e0c4fb63156f43a4b4fd8e2abe2f846e855ebc05157ef4e6feea3d55d3926d5b7147c6a9b360baa962dc7f937a0ffe9d195b57ed00e205ab101fb623333d3265ff33342300c6e8dfb7c1b49a7a541914ecf079cb17c18ec37078575a71b1c3cb2b4ccf8ca2328bff6596053083029d3c6ff822dc9939191e98349bafa19901860ceae999a140bdfbefb9abd303ae6f8103673a98efe7c66f75d4f6f34898afcc6e2b5fb764f115072c3399ef4075bda9c13209db96b3251e66c4acc3de6d95e049f16d22f02ef09e32ce1c59f8056fadddad87ee44427c231b8d90e3a82242eefcc4de6e89bb1e846e4ea189ac921cc637ab6afc8f294b6b202b5178d380078a38dd84822ea928ceccff3a9ba1b35f53cf7d5ea19c5b72d54037f1891619201205b2c1fd1bd5051f0317a2614a4280b3214e09e923dd0287d2b3d0930ebece31e9e6e2bb19073a0eb6bb50c8148ded740d1819b21aebdacad9acf06433a05b3c6cd8e2f91ee13f08140854a5619f225e29a133ed38637115a82ce115093c8792e19461b75235d42db677cfeab71d62310b63df379c72b70b119ddac2e89c8d9c85580ebfa98e45267b210b0eabd46176aabd3a0524f419d78f5f5236ab5befd1035e7eaa5f7e7f0108ecaf7fb88d6f08959cf49b535e5f03f60d81562272857cad301a8ef6e387a2a329b7c889c21abb6bd3e75b959cc1d7dce537796b6ad05380bb4a12c9909476d5e6a1cc815b616104b811f07abfb99f792355cde0f3bda2fe31b36f87008adda3f2ebae9bd1f5da52fba5c8938168f57d474e05d3734002558cebdd793954a95ba176491cd94765cc0f21cd7c138f8d33f1b0d4ad205e11a265d96de25e87fb0050f27767c4faaa3586226eec0ed4b64773eeadc92c840bba3a38c1c7a8b28fc8de440ac787f427cb17d1668c135d2cdf162f0a8b002552464dc10581ac010b271309c282c6533783289fc611b9713d25af8d141e2b609918441a0992502899a56eb7a3d737cee763c73d7aa886f24a67aca5eab55fcfc23fbad18ac79c40c39f3d6356b1b6ac5fa725dc6c2fe4016ff59ffe4c59dc1dde8c018072e0682a17710ef1d7367f6a8787177ff11c98b42a97e5f1bf69ece705c9a40482a1c1a0b96c28cf4168288e72a5008bdf63773f146a23913e5761f548c05dc51a3d6a1ce3ee117971927892548b1356f5f706ab250b693dd60806b4b791f45ea7027c88d337ac0991a192d2927e25130ec5d8271bea18543ce0538165838502bcaf306bf285006f64d81f93afe212a906ad194b0762bab0e462c4d07245d7e9c0ddfe406d2d61f072033caf5169e300ae075c973bfe6848824c84be2faa2f0ae4769e7d27dca51ef8ac5530748662909d398d7a5170224ca214bdd88177bec7430170364ae9d8b7e79d02f39013913a6992a781039af33fdac80a88bccada5bb12922bd2a3da7f8d9d22a5cd83daa6828966549ff8cfc9ecdae7bcd5830ded1995e32d3c863b992e6981eef1823d4abe48a232ad0efcd7cd65b23cc193fb49a102cbf2cc5adbf9f9304a6f71e9830e5e649ce7d0c6b7d8410f88787df2f650c90cdd1f80688975f768d20a289fc0ca610d071d2457a3cc226d3bf8ef7c680bf267b58ec3fa67cb20921675415ad737f408eb2807e367ef4a894a84b9c42b0370e9199e2eb402b4d37eebc7f6c43ddd25aac3d8759b3558b665c6870b8dce9f39f2e98f63793481982228905078c61b81e12946a900f3771486d9d3803ca62e08113c442d5f2e2ffab752469f1071f9d9617d3b69d322c4645cb3c5705e928aaedb54d4fe221e3babd8963d76cc1badfa17bd840db9c9007da7871ea04ba992a6e9b02f12e4ca54d944120834824ce10ee8b3c81ddd75ba17b3e0fc854ca735ffe78a044e22e6a663f8fcb11e5144fb9028b02ce4150b9ea3a7c40a80ae2ecbb7dd12dc79ed2562860f4d08fc79b17729406dccf6c933df57aea0419be034150230280f0abc941923a753c8738b337c60ed698d7709dfe83b256d1f25ff737b75f3d6c4a1d054df5246f55414ae0ab515205fd69dacaedee30157ec021a18e63c96158704e3657b1504f7e3de7bc34b056b0b18f832a9c6350c7d2589931d69358bed6ae19b9f4e3185cd6513f2730233f3bc98464b945676d5406673a74949ae58519441a0e96a2c529f13c292ad09db8b3d84edeee73b385b73a83d70975902f301d80ddfc183e116e55708b2b6c53d3df8e0eede47cc0e36597b6a7979c99e77b4e01e8aa40171b9fec3a918d5ace7affba4cc94ef72b052ef49a8be3ddd2556476f4ae5c9d5f3d03e46f50528c12fd92a203ef0ac95ba6510657fe278189216b16087f2e27de1e10453afab3da10f31662cc34dc21e04bc0d0e464a8c303d21ec947f0bf7384b31118ad456bfa69e53bb850f2d2ef833b8e008bd58b51ac8cd2b02ecccef94adabef5dba35cd297ea2dfb586ce7b926dfac85ab0700e88809bdbb6c5985635c5148ea60f0669048c0e5b59b5eec770c30d80832c0ed3ab52642df17d51705725b4e44782427859a23046301ac0e734f42c7cc3d5480c92e8065f507e45de8a6b229a0959f010c00aae0bc11478b39e021ea4cc244c49a85a310f9562991d3f90a594898449c439b2974b6f5019174e0714e1b8fd8740b9a1c114efaccf4ad38f5d2ecb7a44a400c578d9575f96b1f5aa7a089cf36c245176dd98dc5662988291fc85961ef01577b2a047992f9a6184e6a47685de17c5aed9db3cbb94e22a8ae7f3c51f1216ed45cb76069c96a9f583a98d7c80bfa8687db9d32f1a4fa123e9b3ec2d403238b53ac084073ece13bd5934a3477fce7a527a542714437570e7e4cdfbf33097098d203388380c929f38033042053c79894493aca4c826604be39c0e43638b80c0614e94e192eea10474650015b5676412bcf493306e80d0d090f20d3563b92ce7922626729a1374f3035f4480430a17d1cf072705d429693171424c95dca63a1bd4b81b910b78df636dd6406c61092467edee709f10c1b639c5f4d135e637ddc2a4d142c6edb7e2edb001a310df9bf5acd5adc2139dace5274f9c4504307aa6ae0e99f535514b9928d650f7881cc9e4a5d92909eca4b327a8075eda52bfec3485aeacfc634b5d731cbf1a9ef8cd5734dd345906f9a879072a3c2179c5b605f11d397c587bd88714c9b7b4a7d86cb8202ef7ccfa834ec4ae3e34df579c5fdd8e9e830531aebee109904372cc593d1eb6653c1a0dcc3855dac61d90d61eb39ca0dd9930c620644794351a059505be3408ddb6881537960ba78fa093872b7b525e16a5eee9056216e17f1dd8af43972277aa42ac00081cf3b65f8d56cfba0ad32701c4fc83d1d4a18fc00c33dd95d4d3f4347ea9a80782dcc4275de6c3ce61f8b05518c92155624d2239ec83559d328482d768f852979477f25e4ae653fa5d3098c025c05345c37bba4a1ef63a969c4a911a2b8ca80aafd9836c13594ef0bf956c503944102dadcdd5f5c400e4a4e07eacb54ade2ce21c99a1dd200556dae4a0088284a2da599304442741ddeba9161f6888ed825d9ba68bef67fe27dd49cd87140c14227e9a694b9b909800295adea2e5b0bff8972b90238b76d12136c42f6de52a624a59432e905f905ae05dddddd5ed39cbcd65a6badded5d65a6badb5d5ddddddb55d78adb5d65a6badb5adb5d6daeeeeeeaed57677775bdbddddddb6d6eeeeeeb6bdaa724bad5dadf55aabbbbbbbd75abdf6c9a37b77f78b0362adb5dddddd5d5dc9c99520fa3252192a3921011322f9fb9d4d06952953acb5d65a5bddbdbbbbbbbb6bedeeeeee6e6badb5b6bbbbbbbb6bedee361060010b63bcd010c4081992d8542001990f6050c006082426c0545a6bf51f2345caa0a939b1e608161289ad091e59fc60431624564a70645665a8acd617e9d452fa4536abe5eeeededdeeeeeedded947e91f48bbbbb7b77bbbbbb77b753faa5dbddbbbbbbddbdbf7cf94229a5d4d62a04c6054ba610d1421368bec850424325a3f2f73b76e78ab75b6ca79b65bde00e44537a59f7eb5432c214570c5139e28c10258e784208284896b01266861b4cb0048a114f94929a8e98e2e5b6dcd2850b1798650d129b2955646982052e4c45b51a416120f2c293305ca65059a1b6b4e403143adc9045992374c8626967830561bd6badd5b6b7f7b51d7e75bffdae6ddbeeb66e9be89aabd52ad52ddee170945305831a8c68b1c2110c257841902d5582aa5861a786988d8ba1898eb3b6a8d6aa2557a22ed5b6556dee6eadbbbb7b6d6bdddddd6badb5d6eaddb5d65a6badb6bbd65a6badedd5be706a4f406dadbbbb7badb5d66aadb35aee2ee35f3940bcd65a6badd5b2da8fb8bb1315a9d67aadd55f40592d233744819a42b5d65a6b4d014a5e56cbba5dc2651561add5dd366a088916549429b20609129158cd12031431d4dabddd5fa8d59bcad860486f3bba3bb74de1167675d63604b76eebd6ba059a5cb7cbc2b28598bc6588658b23f2775f4cc70305ec90365b9228b61b2698e87a30e176b5d0dddd8ba836a8abb66e5cf783957cca10cb0f32252ead0d27112e56442005113b9cc08919641154d4a800439b760b11c0972b4660c4941da86801162a90b237e532543ae304106ac0d02364947870410c18144c09baa2268b9a265be566a8b4066887b37573622dde64a8ac160dde144d0db259ada6686c90d4ddddbdbbdddddd6ba5686e9093524abbbbbb29a5b41b07092d9a28325e965007552419a3a4c4c90a4792a490620d4d698d2c6f192aadd9b283825a6bad4b80e45abda3925a4665a8a4c4892b91f8ea318d1210ea9e86cb9024869c08722f2b0d1599cbdffd0ed2c9e92f1c6009262740b2a187362ec45c12911d8d11d99bae32549ac24cee325452134497d4b6b68915d95aebcab63681e2eabc36b7d65a5bdbdb2b7d012f05e2ddb568c6796bc36eadb5454e64eb5bb2b5d67e770bd1e53cad9b146badb5761b628b96c8d6da221ab2b5d6fe9645b64f57d65a6badadb5bb6b376d624a9190259e68c10d25a8e18c135ed39cdcddddddddddbbdbddddbdbb9dccc561b5987071d1ddddddddddedeeb5bbbb0909727b5b2643a0acb5d6d625b44910d59d490e2b777777777777f7ee767777f7ee767777f7ee766f26339c50ac568703e744cb904f94278a00cd9c2c5519620d501725e94e2b27448a84a03a562bb1d61e205b273354778245b6b6372faaedb7eeeeeecd5a6bed13d9568f0188555b6b6ddd8c5e5448ed09e87677d77203e9ee188872777777370cdd35c88c492293a1411a8ab595dc444f72887ce85c8068d2244d0104509228468450620294068a8e2188d553487777576aa4bbdbeb0b50d4daba240a94cfeee61a4877b7d72ad4ddddedee6d851035e92472e46575931260b0640894b5d6491a0a5cb1018921e20a22110c9122083923b7e6053ac8637fa805e0e866db4c982468b9b613804a8104983523e80da238020c9120c6c0e8992e48cc90437d99599af1f0c47af48c962f5a8c741ab06a49479c2068cb80a219c2044f4c5173cc04e1a50d191c0caaa8e2a505311ccb053d745942c572909ee1814b1426dbbcb556eb8e26523142885cfb8a0b371156ebae26eeb0a4e4ed52441d94c6580dba5814262cbe0774ecc861820d11e44bee503136a498f836fe8ddf8afff15ff177e27f207922538e6f23be08f173c425727c1df177c447218ec931b6b1f4855aeb14304c8982872d699894d002041b15b0325462d3c5063a77fc039287e6f0a60993d75361a74d18764520c6eebb4ab8efde347b6ad7346f7bd38cf8fb549337e59e4a9330f927168c7e1cfcc9e060c39f0799267b7652f8f3e0c5c1cb8041f11859c7348cc98fce2db99f6caa5b6801148292db4f2fae7fdfcee0d27349eeb7d1fc3f679249b3a7be7cd92497668f9d4d7b97f02791706bcada8cdd3f79dd46db9ab2a44104702809c81c9b6cc2b6a40d294bee28251463a494522e8708d96089b420b2dc9a78c86636daecb1441326bbd423d95aedcedaecd95aad9910d1ecd9685b0ae3e0d667892470611298a6fc22c3a4992c77f234c5dcafa7e7c201941d2877f374bd4d68f6dcbf783b9a30a9faaf75127a2155ab75baf76e1bad36aba9d0e3664e0758a303186effcdb7fdf6f56deaa7a702cab648bee4649ad8ce7e6689ac917cf558a48f5323dfda7b5b2d24896443da30f2256bb387532361f225279b30f9add7efbc3ed869fa24522c2ecd9868b29625773461d232d999107696a5ab84fba73fe11faabf0f63ddf57eb070fafb3e2e7695a0fafb17ffe05ef530e6e3f4dc4b548ed343540e7f1b52e54d715d967cc9a758ae448a0f2fce7347383891467abd9f58a4f8fbf85d600df9dfcc46cc2839a66d8bfb359468245ff2af3763980bc1ed9f7f39a0cb1d71b2d9f31393cf21713388809825c51f17f1c72d65f9d773a609a34d4f85f83d6ce672e0a2c01a40f793484812893b823590dc6f3b72324e73268fd6bc2ef2881a4868c2b6a369edbd3bdf76941dd3269d1da119a5740bb79f3e17317734745d2d18f225bf96149256b2a44bb0867cee85fb714754ce5ebe8edcf8dfe34410cc1fca6dc0033dc917dd617a3c5859763cf2fcf63e56cbe55f4be6caffac91dbfd3417b99fe5c1caf0af09bc647181284fa638e4424cd251ef93b31fb22c2d8d49088a50518b0543be6294360af1a03b5cf936a6f578b08a047d11a8b31f03dfa0484341de91574899fc4d2621639a8884099294e3cf31b32947339c0b1768f6d8091b7255e871f3644209d841d43284286b19329424c7efba3eb1baddbd568902c14eda006badb5d65a6bed5413e3064da178d6e48b8d34407c59e6c69f4c92678ce48934c9f3b38ce48914e3138432c618e5cb7b217cbdbe9865a63ff3449dda5cfaf6690366a6df758abe0d09610d4b9f0b924965cae4ca92afa006c8f79f35c9e3f87242deb5213921777b2ec8fdf14523086bc8c7f66d48296759629f4fcefc87ec9333ae851b69f983ddc7d7018ac08c75587eb096bf0834ef67310f39d35193e1ff55c17f03316f5885edbbcd0b2166086b506ef3b295f379c8596e0ca1e4895138b5b93fc7c8d79d3d7105088b3fa485244620aa74270d4fa62d17042ee8420a9403d4f5f4472c5a00253921c6187378c927ebd656d942961c3f0ac524b227358485991c1f463639361016466a4142f2178bc89808114b5015393e0992c7796616810875c38dd4902d2061f13916ee072103644057c0a42b5618390dddc380917541b8f205ff67c6589b0980f395e1d7ca70e727f6dd321152ac42cca71c51f6862ba194914e216772d6c95a00bad99e21892d4e5832ccb468d11b149940cb0a2c8c062e5a8aa82f254a5a767862bda32c5a821071ff044b96329d06ac264464e1b26540a358a9618a9a73594a80c852840c0e06517e28c2092a96a361044564a132a50825453960b102005962c48854400fe24fac69734304e7eeee5264f720b5257ce86a915abb1aad7604e710cd165838a112459224552841afd49a64cff04a2d098d3374181305c9102149ec90a48a20a66a6badb548123422d0ac40288827311793dd565babadb6565b6d3581db3427b7d6d65aabb5f57ab35a6eed10a85997545a6db5d65a6badb5b6566badb5d6ba7777bbb5d65a6bbbbbdb7a3d4556ab1b0826433b1b16b2c3591a7d335364c5a25b5be19c56a766c0acea46a935a2812d8e9ab6988162ca10288082e64875332cb8d57a0775779b11ca4d2bad94ca6a664d4ebdac3e4364e5547677cf90d39745cff4b0721aab0cd9dddd4d5de9c8649d3941ee7b8606e4f6cb503a7346a7a99392821c96285103ed4b123266447002ee548fb823f142162ba8e24252192b310fe3e44b931b1a35843691a1d6eeeeea356bad0d10f7a0d9b1093847951be3ea63e7e2efdf789f8bbfc969e9b45ebcc8d1f1be9ffce25daceae905e631f34a55bb2afcde7fff571876ddbcf1bed4dffcf5bed4df8fe6a6aa87afd2f9f6befefbd0fb1af79019fe8de7e30f7387f3d0fb6e9f729f326caac27d5fbc0b2f85995b3e29f8c8ad87f9c6bbafe3a53033c43ef5617e91f278f4c8f57aae1bf7fbaf3de1e02f669c9b7781f310fbac60f7c7e3a482de571fe775cc1e79f3fed283127683f33157d40d99af8e098bdf7ff3abefd7317ba2d1f63aa22a55ff7af5713c1d29fcf9ac56d7fbe0df1e2dcc63e6faab97a81b5d76adbe95bf55ca67f550a26eacf0c77a1f0c1e3e7c49933c10fb6cafb23df2f6d0e9b765f859f8292c993c1ff82aa83ac1d8c1f7a383ef03193efc7e32f4be2da75458d256de87425e559c4f7d073d1fd5cb8c63435061ffcde24fc7eae52bf59d4aa56a2a27afbcefe62fe7592c181f5120b8a00ef93a41bea2fbbfa87f531f46148e9877dc3cfef06bf0e2bbef3dc4dfbf06aaf757dd583d84aaededabda85836f6c18ca97eaadeae1f7afbc6ffb9c77c0fdd4db900f50a9be1fc6bfca5bfdeafd55de8742567d4441006257eae15b57ea37ec4ae11b50be50c82864f8db03c0faaff0a98aebb80785f116fbdc4f619f17efdf83667fe87d2adc394f513858ef3f51375e608c7bcc0cdfc53bfe3c4cdfc54bd4083710d79bdadfb0fa4355bda9efa256c72afcb9f81e33d7166ebd8bb72175c817083a5fbdd66be0b968ed903c2df8107f2ebeabde0e1dd585a7c143540827e8b0540f3d9d776fdb74a0115c7d77e3f57d285f385eea6fbccfd0f1f6edc9fcf2b57a88ba31b3ea6dc81b2fe655345abd0bfcd90c819b8355d847e7ed0d1d6cdfc6dcdc832a1dcfa2903bae7c85713e1acd68dbfb701e00bf791d8859a5c23ef0ed4b140ed6db87a81bf02184b63d146ea830f4be1802fcd4db985907e733f894ed9cc7c13d68b63936661d9db731753cd66be0d19c81f7e5c8390f004fc70e773d84b803f1060699b565a836d4b47ad5cdd7b6215323508f09507dea6d17d15cb8e5284c96f94816653ddc90f16482e461b156ab15eb73be63792678391ac965b1be1f07f92acfa57a17afc2216408a83e85b9c516dd11aa22145537b451aeff0d15ee8c541fadc8a5d913346b50cce4f8f148f224c55918d913d4b2177cc9f1e318d903c318492993e347d9b4aa116244e9bc40e1e857bded3a140838c8af281c8d5ff59be7ea8fb9dfd53de4c6a368245ff5870b4780efe2bdf52acfa75f85a30095b75afd44e1a0f2b5fa2fe6d5eb78304795677fb3f8ebef40ccf671ac4ef3c0f17ac857fc179e077cc857dc215fd587bbc11aa9871e8d1da4de85e7b183948535521d3db1bcfbac0af30d065fb164922f0c3e070926e438bcefa806dc7b31780cb0a4c957845fbf3ec4ae7e98e1175d960773d778c7f340bee20e1d6a010a4ee7de87f3abae3d9c879e7d1c4ff51005310e107fa786d0c37995a77a9cefef38e8658b43f451fd2aa21ac7db10e320df4a0b7198aa873bb819aeea71fe8334198410deef220ac7eaa647b6df5eeaa1b7b9f79d70f4a7b00f942f140ef83773f5ee598fc729af1e7a2e1ceec2b1ddfcf630bb7df810fba4de3e76c187b113244ce5824f33c43a3819ba7b164486371aa5bc08254a897fe4c3dd2252b4928d82228e084bb09051063f4216c04c20202bc8d128ca87d1c83fcafca36b911b1b458921362aba2e12a8a438caa2d18445a3974c6439266388c271354e2166f8724c964c64f9f0a5377f42940922d8c01f4c587c1c8f6611976372bf0f6a19c600c1e9270310cc9f482500a683325a36de813bf303c903f3cfcf3bf1bf8348c917522c4ff20561926c8343cbf2bbf933cb323c6a4f28d7211026bf1255c9b22291d538a21b9f3b923c11bbe4d31eeec71d1d8d00f24824f892dfaa65b944cb52882cff3bd1a59defb6feb3ee5121204f354273219623b5dc5f35ca63248fcb623942cbf2a91729ad481e48264b3a26cb25f227b36429b9a3598d0214c88a226892154e3ca1b369946685494be364ab5888b82b5702c98c34d084322346ba9407a580a226a9d6ea510d37dbd2c50c0793b674d142b6c5cb931eae3b7daf29c731caa8edb9a99c948aed7f9ebf7f944dc751168f629459f8a27fe39d3c1684d1b71e85376efe7ae41068b638051f797b18a5c8d78c47b47ec5761ad1ad6bb5175c41656c986451936441d870352144aca035929084315a21698abac928162de8242a20837393349443376b5284180e459b6caca46a6980302295818c1a6101123ad1b210524555a342d6c98092a062654dd260f8526730b0e0092a95348194144962e1cb8dc964832aa012041493f9377f7829fdefd5c19e49046fad32254c1985b1cdf45a0c252a46ddb7dac95a80d2834f5ac3028446b72a85908e6202628e09a0af82fc452b793ef5b8a4fb4da21996365662cd05176ef2fc4a9f6816b58cae04a9c51c99744588cdf47294273d923c7304999724cf4b2f92c7f3fcdffebd7cfeb4fe477fc3f248bea68cca997ccdf7a158cae4eb35e59299ab0245e2ce79346593a84a9e6dfe69a3de066206e1d4e66e797ba854822819a21ab0d11a942d37892651d10c33a1c8a31ef29c4879cea43ca7973c67b71d499e2f364929b3d622a33c271195b9235f1ec8ee2785f2944292a788f4225f532ec9d7fcf9b1299a913c8f44bfd611a51547841892fc24a294ca886495a89fd69f47f5670572c5249a8d29e66620883f5576310a0b1d9cc0855a8440c99f7d0294e75b9ba7842f6362e028c7bf2d189287e5802e766a9a720f29ade41e327f7049c950ee21b3cc1c68e51e37cb9f5e076c96f847c608d4c1035c88050950864a34a8e120432c4361aa9050eb05230d2e4198047f07f63453beb4530ec880190af7aca54116a1887cc10c3353cfe46b26b3c42e1cfd65c028f7a35e4a4a2557bf839769422ce3c21c34e5a6c3a0be99a4fcd47ffd37b867cd24bfdfa77133c9d72b4af9ea99f41ae57d3c4e92c8ddbe6792274c33890069eede86ecb697de779212e57518098b8f8231886adcb3149e343c872efd6f32518ec3f176b39b5b87799c287d486dd3e4d74d3de36cb85f15a2cd9e4602c2e22b91e393c9f1a1c8f1695fa4f56c32f56c363149c974e5ebca9e458a675dd7ee2a24798a481e78a54d911cbf2265913d9106594df2821a18b68b7d1f1493be57feaad0d09022f9f320f6dddc54da208a455fac21c72f3ec9f18b36e4f83142c9312ae5f87116e5f8df2422c78f5f27e92a397efcae021100bd8481913f9804cb98f1207f30096211d4440af217937893d77ad68d94e37792266aa21c7f12419168d264ca4bb3681a4d258800ae86ebca41cb4b13166d68c16849299fc8a497f13540047046d7f5e2e0f54592c7b5e3c14eb7047222d3d9bb3ec81f34adbb897ecf249eb9ce5ed09025c7c8506986305d7a48ea3294e39f8082163452a0c42da57ab823b65af7f65bfc1a6c4ea50ac27e78551f8d54aa5a16f1885be1ba27ade0030b4318be8e003cfdf83be6cb2f21004f7fbefc21203a4423887f489074c6bfb00f1f3f3f24d0788a7d4c81ef43c6d378884980f988f1b0ff897d900663d2934fbf8419ffc23f5e3fe3855d70c6ff70c17ffd4f475f33de055d10bb224083468c87fd0f194fe34b80c5f820ad02afa7323c97c7f05c4ec373c11fc0ffc4609e0b3e8dff89cdf05cfd0178192f3d57fffc18df6d50c36bfc06cfc10b40f534bc017870c29a03af86e7ea17c0ffc436f05cfd1cfc4fcc7a24c4f8f92a2f0231503426a4a8a9c2080828e6825fe37f622ef81bfc4f6c831a70c6d3f8194f830301c05e3eec2706837970c2a4ab84187b18fb3185840d1ef630f66303ec824ffff530ec82b884d7d37f611f535c395e2f01187b61386125389b2552c820c31210500cfa1092b1d7830088de6985880f471c51e6855990ffdd19de4f8c060d6f86a7c35582fc77234633463dc92499ec84b99672fc227e6201f07e625d3c05c08313168da40e17c6160063312683a3e17e9f21bd7285240d31399db8957baada87f8bbfef95bac43be76405abf8f378eaff276c0d7215f3bfa4f487d7b3b523a76c8574442f254cc019a71fae39f2079e0471568c6c13ea9f72416a040a85241082107b08f5c7924c8577f0751f0d2d4a720ca039624a8d4eb5a0a6a102aa56600000000004317000018100a070423499044410cb3f10314800b5f984c64682a8b8822f2280c62488882180441100010600c228629c49474530300af83857cea04a3cb456cc0963ba01f9ffa5e69d823dcc75ccaeeb175839d4a7da76851f2e0ea5c4f2b3c88efdf606f1d61028e707441ba404757d3bca821479606f8a9f04dc1d3a6e4e1825680c6da973b772d44df864cf80303e9dc90c2035b10348f11e4613bcafaf7d29df2f6e143af8e5975c074da37606fd3b79f29502544ee5fd12c2fc18635d3c8c705fb662a84a4b39391d59b19b058af05d2e67769526540bf085e02a8be1bcd46eb9be41b79b23cca637f21040c510216d6a1090841fc8514325eb2e73dbfc936c3776b3ed5cf797ab76cad36aa88de3889546c0cb39ca5ba77dcd8c58359d34abc0a4d0e97448ba6540d82f3b73db21d0ced528d258a49040708eae32f9b2fb875477576897d676cb621d210e8d78463f67e851c76fdd257205e73a0a95f8ab3c563e83a23a997ae04de18c8ed9eabc7338ea809cc13456c6b00db35b188ddeb96b81c8ed735cb722e7571a3a9bafdeede1727ca07e639c8cb38cbf486140d5e9979fc59cd55f5b060d4a07b84758c59cd531fc25e2483d47cb7940f14853a56fc13f2bc44e8e77db510315c282a9442abbbf96d5f0304f4cceba82ea140494c30a6eae276cf32ea69eaaf65aee4143c56c486256eb81f93283872be5b888339be6ed55f263b543c963c58e0db21332862a3247832615d117ba35255bdf16cfaf8c0ad0f54ff852cda1a7df3a29b52b4fc02190a119aec7a95008e8848e4cfc7a2b0f39002c032a4ffe54708dc4a612ebabc5c5a51f7716023a2e881e0ce2fc6b9a96826e18eb3ec6b12ffb593d6c9d32c49059b2afd642e9a1fd2f3d1b60a499c8f8dea3c28a1a884fabfd204aafb338b96ecb4c49ffa991705e29a6c902c0ef3ded32951f012134fde04e35012f89b532e0d7305fa8a5735674880e3316c6007ee6b6480b821428c396bffd5f1b3640348ecb80aa8e53429dcd3bb6757abda078504939abf19ec167fc282462753e7cdeba959918a175c41d3bd8491cbac6e1953402b3c691709d33232923bdd22eb109a7839f120011ff6216bb3594a10e236446e14dd51db4e81534da79baa05bf9f3afc46ef0ee046719ba66c20d438f611cc7fc3911e1696a7ab061bf2ac4cf4d98cfdf31809cf11daee37a051ddb232c4a4c3591462f1603656575e2a5a46ac3881cfd20dd78f40afdde909bbbf752671e7e660880a68021244c706f81316ae3595f69cd8105be198bb6e07fc69c53e371058fda793926ce6ba1c4d870b916d5909706ea699f270a8d509466a4768e63571a0bc18105f152c4e3ca557a7682b30142aa9786169c1795c052f6c10be17e6cc476019aaf2996878b6df9fa3b9f762bdc605e622047a3cde523edd504c7ab21a4228c4fe45063df3998c064b1b7356eba6432c170d8521f48249055e28bd82a5b781f0d8f62c14be138588ef395c405f20ac4c4d99063c6c759d5f5965af104806315b2ebe82fef92a68058fa1753424d96230bb38c8a7bff3893818a8d31b3e5678ab824d67369849e069c2830bee8ae0ed1e74fb7d6b9b841dd1db820c689a43dabaa71ce3c69467de85dacae9a63f03540b325af147c94fe845b2391ca8240fb58096024070c25c7d7f1bfab1a2604a1d168fc96e852c535216828e691e5d7fd0bc1a91eb7534f6f43f295171ed262f0956b9f0e803300d5d61230d0f1a2b97d7f12711f02449b9cb75baa9105478851999065e9fb8e980b8c1804e5e6be31d2e57c2686d1ca3216461c2cc40807cf51accb8ffe8440b401ef30e05cac45550c6e58db41a4d9228ad848535ab6bd035963241b09051d12bb43a68ed403c398d7503f53c1140e00dc97674717eb19bf77a0a9d279bab86767c1072161c1ee04eac074c2a4fd5380d2b56648d6a12e87677c60a651215f15eb9ec3aaaa70cc48295ec4483228f7ee080ad1f57853300f5172c7a00222b22e808e4b1606eef27e7a489abc61d64ec70e73e81a2672e48ecca5d46097dd0512f8ed7a247624ec45f7da773a82d9818042dc046b94a18be6f9cceedc2662da43ea192317bb6220743fcd8d6abd77ba931a0cfd697122e44e8f7e3af6e650324ea95e457f9242f12c1b02f1e2588a142a4da368dabf2b27f0dc17087e2201d5304e9859c688209d9dae31bf40b80bf9f2657cf68382364955feb46ae93a5bad883b43ee90ae91a7b3541a451c92c6e8cf987c513574efca37269e98e7a7758ed515fe0e86be666c9b2a5da3665426838f2a5c013bdc18fac6541e7787d7f454d54c9f2f2223bdf46c47660c0070e00938335082cff93ddc3d5452cceb3c86da7830beb68636df9866fa73d6f254b7078928e0958e9a050bb01b25c407d58521a9c55ff1f0e589e7603f265efdcf565c95615570aeed457e43ac23bb4e01de382988a3aac33b24c22feffef4fdf3eb423d286244cd939a4844cd212aa0ffdc6aefa5698bfc1aae4de83e0ad870068cf1b492b348bef392a1a8a0873ecc115c373e6921cf05643fde241a0aacdf1f7175f2fdc9cae106e48e633b5f055459354f2967f2ac037e5bbb575dcf66216622d054ac135116e145c165959960be1e1c9715ad18221b75e04f405f6cd747f6bf01081217accf955c1255088b3df963a39069e38a2f6af90dd05f17e485f59858baee5566ebe7694b9ff346e7f983e0f33b1cd7299f8dcd9708e0af5de64691b8b09837551d07d0a2ead67a29bf83f3c21c62e03977c5bf025a8596d3c56f90cbc01c5252d96656660af2f26d7060c284fb3b9cf2261ff9125281a6bf8441abaeac8ea2907cb65d6e56e88e8e8c23692a7e8e45f6beab8dfb75047ff29309f980792a9e77e6ca91d4c780c68d7872315f84a194a6eac11b3253e00177307d51fc9f41898ae98a5dc830c3d3f8735b243c3dce9ea2f68cf98ee2b1ecb13527d5c9e1fee1bf08f0ecee15ce324adda3d70e7921bd63299553f15da1285d0ef210e9f7c23abe2c706bc2b41c2fe8ad05982a1dc99596a121c5c4392ab365aab116ad08f368fb28e6d375f01eb328edd723037d21bda501f919c00662c7ed40273d785c38fdf7a14eef1ed3790526934c065e8f772e30ac6b890c71591aaafd84b15deb4635de02a314ac92338a095dad9c35d129c71dbb9cd4f22f2cb6dd0fb8820ad1ffd4bfd50eb8203f05e3c60a6a880494997054f23afca19b7141b806e2613528b54554b218ad7988c1818ef3e391168bd52076c97182e183387f9da17a833f31738132d0739b99a5b345cd3bfe8ceff7d9045637656c62cb50651b3782ac6f28e95f5e2304c34620d14d0e942c5c4e5713e662d713244bc9c7ba1480d6b4e55df7c41339ef540331bb1c0162120aa6910b61341497823ac011d48993f31a9c9f0dab34e3dfd8663705d67376fc510de64364dfb3e2cda78d0c945f2886403a81d01086822a5c4089db5cf91b079961b10ff5948695a674c8ac067e6277272f8af11812cbfdcdbb1e110d452c44a821bebdc65124c0c6ec38966c53e72bcd4c767ffc408dca5ec9e6e8c32a04a16df81a83723350a3a9a15cdd3aaab90e9a455c88c1d76badfc156f54a13fdd95edade4a1cb5548ca9c32c924a42449db47578496655d00732c6a19b75fd9d456b1cc0d6fd27e8f951f21e71ec8fb07782385a79a6272dfe0d34794bc02714b461267b0f64994278f840837083c105d8ec23bbc6eaa7cf48166a09a711c2718164126196b646aab141be0a1fb15ca641331ace6a3f8b18996bd9e363fa3addfb4d95e571d835290cca79448b35d453a5f46ec54ce18c35728d9b1fa981050afc8ec603fc1308c37b5a4f08b25082e9b0782d1a82e114b59358b45e10f0b2a16294ff7d60a39c2b4027e101d03d1ad0e08a01028524a1b997fa96731cf61f08ad47d23bcb2500bf9814a83074bba2cfe18cc96a256e8c20bf8475b347cabba05ee901109a82b292099206a707875057ee6a5179d4e539905683c94e2306c3f9200cb2ce8b171f6e6631d4b19f0b59ea4da66c06c8f3826b5fe9a087d6f58948bf2124f185f3300ed2469a3aabcfe64c3cdf095a09f1b577e2d10acf1275b781ad3918a90d61f689fc79c7a479555bb4412f33077bad9b119ddcf0df688a9e009fd62c4ee1f61c40f59d8f6e2c51d8342a56f69cc17d5155a2f40c27d609deec3a34fd46c46149884e589de6bfd24e6d5af50e4c06a5823b29991a83b2e0fc849180011295cc5995525e0815866696be816f256ba60c89a768faf75a13a1d171493030b66b02e3b6528db46d16f856e837bb4b5700fd742fc0591f7e1a83073ab4022bed472388c64681e47af49b91d27d8805b865563e6831afd98cb6887493f9b7ee97ac541a3aeadc1ddb566493213132b08b465f0fb5dc569122883a4834187b7479206102bc7bc9d485d423c84bb2d28c94b81670757f67c49127b0185d2c17aa8dea768446319d129c51f063f5dd51d4202cbd8169a12560d0678a3f8ecdca39a5ca963d80ed98f9ff98ca5fa700508fc2154b2c77316af4d9e03b69768a235d1f6d36e04264aa55872c7cb39bef29eb9fa0ba5b716df3112f8f1296ef621a740a94c341a18b09e526a0527267d4990aaa4842f59a028a39c4b7e30a79db1e1339ccd017962187d5684c31ea0f6d50e8924781d0c43956f7296d90cb786fddd1240973ee3c90e7c744b853848065d159954d3a591b55fb83dad6615d03b40ea3c6956c7a941e7e6d589a0fa911771d8da971ae9422baa5ec77522db841ac608ac34a0c248262155de0174a98722dda80682aa5b84e7e11ab96ec03360d3f1bff1d7ac25d3d809362ce11a9f60fe5f92b399db518e9e8016d98e9d8c3d280d2992ab0f031915a2471717c13598f4ed74e8774535279061cc87a3e26a203de3cd09d7b535250946206748944fa1fd63da442d48eb7cd4de3b2857181049afa89b4cbf9394aa13b8723405a36c3870c855b6bcf38d147673fde2c85221326264a5d8c719ce866aadd31b9b018f333e04d2413615ade8befdd06ed49679569a6a833070278032413c17750e9443592ac715737d02d5f1b1e0f39d592f118406ede73e28f8044a94d3ed45bd78ab20f886021dcb38a6d86868a2407b84cf441b51c4977cfc8d23d6c3e098df69ad0ab6afcc7f0c2b0176b7831c30eca06aae26939bdc6e5340a17cc81a61367c515442cfb30676f2ac2e70feefc0377d470a9949e2f469e00bcb9a6ed19f456d9d5273902381e2123e71225b4ec1bff1b2c5929241000776bac6100171a7f6f92000eb5613168260394245d2c72b41d9e0cd8c06e9633afad8446038707d92d05c2e9b187d04d65883ae691cf661431114ae0d6161cc56fa49544a35007fe4e0fea341f82436cba0bdc2815e54b4090a92cd22e51c213348b2f54081987f0add56c7880bc5083098a8340f2a6c0dba93b784ea1a97a65d97d1986c13f012e90b2863e21f32cf65cee04112cfee317e5f0238c79698773aa70fe6094a3defd406f3cef073ee246320116a94db15252472a45276148f98ad8a4926a2cd4b01e2bbfd949abbc904819da6223890cbe9aabf2a532cf4237ffb36e391ff3be75de8abe21b1a5cb7580bbf948646cca978b7a3c99df2fd0c16d59309d68ca1228eb4c5aa03bb8a64103522cfe5787d6a866091cb84645569dbc1fc5b17d95b78960f9f630a1bd0c88b16406295d1a8ff00d765931ca098899260de7971dc3a98f28624cfdb7ece3431c2ad1be1b6c66a387c2666275ba35d4045ab823a354e6c424309a40f6d5b29e7520dba73cb3109af3f164ec9d0d93ae7b3fd8990bb1a85e2f4afcc32b1155f446a839ff7a2b91a7cb247c6590025571f7d1957d546bc82bf1cf572bbd6edfd53665262373728c26eac6f46b41d7d477161afc44e010a28cb214f447e1e58caa3a5b91aae61766ea3529ef8b9702ae1fedc840ca1dfa8b2e30089e7b502f032b6c68c61662c6adb7c1f76452c020f815b57ee48905aad9e643ed2f73328ca6c4a8d0c12d8476a6f715981e2764a1c8c633b2d0fde8232064b1a4c40045b59f5d572673693aaac99881345c6e7840f96c2e1d95694576249f17d5333927dc146b9d275af8ac4d2bb3eb8ca75ccf6f074c20e5a0ac49a992e5251683ac0856b913fdfa9f2dc0e6dc94eb06b6906ad6c038410ddbf8145fa0f78e4cb826d5d6b6d9b3db19bcfc8fd31db12c3095afa07952fee985849d50023582d9a77218d3edb1c4c57a27c3700f360e0d8f08b159924dfb33915ea23345d6c32fc0653c49c10193375161bd8515edb9baa808231e375cac1ea9bf8130d46889f9eb35c5f90095825cf16a1ff4001896f5ee0db319168fbcde615a539d0c1dde0c85a1098a204963b37b09270d824c13896228346a9517947d93c8f339255c8d04845afc3b9715e35ab9af830c9b0407af5cc47fa250a73c4898292e6849566981bb36b1b3ee54c3e2bd21f93f4ad1b46937663e097c8c32dcb27551a6cd0d8d465e4255a89010c9784abcbac062d29cba70c8e828776365a2f36e8fc9476cae019c35ac31714708a1d90eae0cc20c8f65eb8b2b44598fb0ff6346b829fcfe0332ef86cc5361ba18408c7c81abcea48900e685c112a915f57eccf6aa1c2d6f730c9879bc62dea705f604f4b33f233c5cb71b3827866ee362488629b1ca8a06a0bf5e043ab9212adf5e17f143b4610cb808aac1a451430519a1e9402a930e0a3e2d3149616e5ccd8f9844f71a678462289683cb2cca1c04100ce75a0efe1c841641bac6468c0da62012639853a29ab0b4ddafb52aea50b80b77ee9d6a8c744c1b8afa110bd199ea956af7364776add7dc65ce5538cb878389c731b3285abf8431457ee76aaf039774b9364ba9afc9e01117116296eaed9340ca4fe19b8f96b21a06b6ac896749f70385024604892da43563f09b512874f177466d2547cac9166b62a859bc11d6ee938b2263bbe87bc12e2ece00e546f4764de11918581eec1c37b5401b58c1b4ccfd9b5e2a017de8fddc942be1e12473e2bc51915829db0465134bf4b990cb865ca0e29968aa8ac5590045455c89d09f819b7d45c5521fd67286e11ec1b308c0ea973c1eec2638154e7721e0b38ef74b81514427065b1ceb30ea854dfc094637c911505e04996085ea258113cfa2e0e80ea3fa850edb83e683f2a978eee250ccfa71e77f9954f62f5741e5b6f79f1ad2de9f590a320de5b178eb36bd018d1e43c632884825ebedc4119c0a66e2009b5403f917475221767ecce48eae38f141aaf11a41e83df110c1b6142970211ffc2b18f48f121b82cc438060daf144f767f55bda0f445a16fba61b2c6b99ff84ce9c85e48aa904a3f745f9d455832714da8ef55daed0e08dce67bd6b2744031e7029ee50faa7980ed22d544500327a3a86a23805cb012a9045cc2e618c2b5d4c2ceb612eda537563f36e3cac51435551c9d61978e2f82614c5a8eee142c4d248b3dded8d9a9c264a6001a328bc988db6829e14af1d173463bda7685c965ea1d9c2b50ed2e2ede486101147a18063ac7e971152438f6e5dccbf2af9eee229611cceb42b775800b7704551c74043588129282b38796bf3d478aa05a0c92abc22864aac7a4ff6eb679540b2254966295b0c639909f1919892c4ba19438dd9c1b674162b62c19451380c3ad1a12662a7442dbd55c3c1f83f62b5aa316e6a68674a767c132cadc9dcc8e286311b987d319ea053f70276145d7f0517b51dd8c7e012816f3e4eddd47ff101cfdfe5146f92bc82aa58f785eaf315b05ff5a02b2b29514edd2d4e1a6f1c62b81fdc21815722f7c3a9fc33086e23dfeef313020d961bc381c2224ac19a307780e99ff44d984731c62d977e810169d25e0b242e4f5dcc988976c3ac2fb677825cfcc302f7586729e5c5490f3464d3cc54cd6c7e8807066f32c8eae11ea1c594427eda746f24f30175a2888457e41eed8598f9b22343bc888af4865c09eab96e4068430de46f489e82d80d5f29700a660226a334f7708be20c91758d3ee28e5fc26b9b723e57540dcb146a110d488ebd2d2ca7b0538c10b4a5dd1d479b721e4a09103d93160ded211a53846025915f923019357c9420c52bd4285730a3a200a130e6383bd565508b2649d8753c4b6c31fb1fbf83cac725d9b21d5167d440e25ccaf0f5287ca8cffbac962023df9aa038d1c64481e82ab6441bea19d627c1b25cd4489535001d5be546a5b28e0720ef9007323f6cbd92b8e2a80977994a148576b732fbc525cdb5670f1435aac356006a7b798cc8f4ad96977015b84439e61465b0a1d89315d5d7f3094574445c2e879aea138631b77ed25c89896dead1697a30133de693d6f7db0a6365db14bc0bd72bef97f8f1b0894098efcdd2e32049f90b6df9ad395cfa060058ba75a25901b2610784fbc3fdd238f51d930ec9584f7261c20b4445e44b0d8b5ea081a1043b6888b975cc895076acd80b04ba05559cbe51090b6747c95e5ed8467d4d0027920a0b77b921e4d5beaa844a056747de032bf57099a2dc032d974354af56f8da036542ce67ca14dd46c7f266b5cc02d801c0748247511403b9cdecb5a124700f074e6f174cc9739abff8e4bb2849841dc2474411a991dbc0d158aa9ffa8c10098fe5d5e6cbd907a00668c703da4ea332ea3676ef1d97804237d2f43af6405de7f66c31df396ae758b15b77617395a1ff19c713d764054da60135ea37e0a3b82525728f54d03a7bdd0d718aa856de3f6fe208814c744d662409bab5aaacfba6630ca9d555da4c79a0d3529bc491c91d0f59b8ee5f524c6c19a9116df0c44fa65e2db8b4560371d4a47e5d1f851cc3b93503db0e0c9ae03b5400a7a5a418581fb6772499dd1ce7903c0ef50c56276de18f402c2c1292cafe8b7a1d05f052e37f6a67225e4340e83b93520d83308b1661f0112ac57fc2c30b9e7b29bc4f654fe143a4bba070a95e37da4c8f69814ce9e0c6dab3d96170638d8014b0dfcbe0d2ed106317028e3cc53497fb915daccb00dd608329d463e8602d8fbcd966187a620ab86a81938fcedb68d021633bdcceb5953786395060e4c3281015837c9fc7afe38ffac0287ac1b902cf46f2fe8479a998f7054e9e0dd55e66bbb5bd176ee8a73b985db592fa8d9ab042fc12bf2c7420420ef747602fb57b8f3e5bdb80a7f19b3f5e4e80a5c036a9122b5102c3a0a44e190a11bb114b4555f130569dc362b788076abf4129baa7b1b4ca09d13714f2135a315bda0384d3a4b8579295aff209e3ed62a0d310672d1f8d2264587d24e063cf0fbfb64e5ed03661285b9a834bd631e604c52a02bde36466edd3107e030905d2704e41ba73712bd2c4c9999706c2fe636e80ebfd01f6b9b0a97722b9c6ac94d6310b5e40200f48429b05b47ed40a448e5f296ffa5e967bd53f29a9fa81d05219d9d481d509a5106cdf31dbb21d9609d5053551585d4547acd65b342dda20a018f331bd78235d75352c1d01268dc915adce6c345758333bbd26cac6db7c454c2bf92612a54b88a50c2ba2311c2852af34c253166095e820574fe8a60bbcfccd50e08296840d975ab3bbb7a6da4be958e0ac43ed06a44487cf26f3b6181dd5ebc50bca5aa16e46ea77ef995eab1130ca74d53d4d4907bf38d88a634be4909870843990b1d3080500c48672018c30f22f286e2baef4f4266ca2f552b454a9a9d96a0eb08c68d82e6039e9a818b4423183feb7a579a02c79458d928b2fa3996c47a5e831c6a9485f63613fd22e1a2606ec9aa1c80ca91a0666704e5ce032add51d0243c464726059512519bd311846e2d9c8469b2f36e9ce5fa93c72b2b0aa4c07ac23fbd0d430afa8909c0e8de24810baac5d5d35040b65a076f636e990f019c23dea239846d3cbd998354486ae70e6506caade39c8234a0e94ddd0541e15626624063ec6dcd26dbad157ef580e696bbf1d3e0327c170cdf0c54b4e7789662dfb301f8de56f9254ea8094e5600351ce9b80af920d611c78ecc9fb258a19cde71b5fc57b29aecfacd690bc26cd51d66f14f06ed8981ccff9284ace5a4bc1bdfe342bc9e820811beab6ae0e44d4640ba13b0928f3d0c8f11efc1e769998e31ea27663a1bd0e4d29e57e664adc02e7e2096962e8f04c9ebaa73950a1e4725d4f2064d3c79c19012ed22f63acccb60a7b3dd4e03ed5a13f940f35e83a04df46da5d5c460eb4e1c8d74e8b229a63d40b9ca87c470f591bf522fe6c90815f9d281c1b8888367de3c5560732cf53d28effff012c3de9ed8e938d9de2d0fd524e153e25d49195b8ca38bb1e7dd1cdf115daecd79bdf844fd878004f8a8796bd999df8fb9993632b8cb3bdd4a76b76e3f64084717e524e72cb2c73d53a077add03bf66a09ced77e97aff5307290e82bd93a91c0aa732c57c0980c82104a5d4543d80a96e73384acaf942d2a06f76d5d43106f168a636928552b0ba691bfc2ddff3ae924cd9586407c53956a5720a6da823f28af71574375a077015162b671a25315a4e5a85a9baf68358f00f803e1ab0e78aee205fae167b92e650a15800dfeefc2cf451f13339a0fb2743592baef681dfe2c22504a5dce9b8b56fc60474b916585ffbab816ee4001b613bca1b5d0b9d44ce570b0965c12be0d18e4f4ac2482f72facd0a50cbc18aba2e3b16a8813781d26ff610fe1ebee053b1a31353641348fccd3ee1afc3173e7c1d79972ede8f65312c5c2bad63897af049a450e6577d5575e8c5d251d42fab2e4f960b72c2a8d601fd0a75642e9097985ff6b04a4bcdbfbc4b0cfe0182693a32a6971ab2a814e91f17bff43cdafb6bc4681b942f731dbc98a2572f979999c456d6d18324e26429d4e3533fce1d32572e0ad17b3384c7bcf95da804a0bd550e2da82c7c8ee60c06f71978585f944e2580265f8710b28173ed2e14febc0a164b9747ca9b5760dd464a05ad8b7348dd938818ba4213ae661c70f1735b6e795888efb685749122caa22f6731729a18cefe2fc1c387c2b53528660493f5190059236aca2a5285d340fbf8630c211c352002e68adf5f5b818c2874dedec9ca5fd2e251934c9da61722dd7de70ae07707c0fb85e86222a61edbc952cc7205286e600a74a6c5885225097e10539bd80de808a904f2c014fec09eee5cb4005b1873ef5ae6eedfce81ea8e4c0ff8eb3085bdc86788fa3c2ebb92a1e0e57f558a39302fad7daa9095e49101a118c3b0051be242c1874e73a108cbb285dc42d290416b1d1001dc82172e34f50f8b0513898180fb5619303e91f345a7f99309c681b5765e222740d0bc7f0154cb02542503682fc122bbd2640c611bf7de35d7c36de029518d4f46501fd6a9288aa32a6eaacabfe23a01950ecb2a7a65a0ce60d090464a9a42716dd83e9fc7ca715f2005fb69213c1a6bf03eb7a6b5b4e774eb3ef6f7a26f65316b84da15ef40980c076f018c42e0d6599eacfc183e9e9e85bc29f6aa392d148cf7f3114d1c5f346688093c50cad0e27e99204d39b38a0d24bc136822241c2312694ebc0194bf7a2dd7e42b05c456971c8c012989f24721b17c71cf903a678061c632443d9baa9153acd409d221c326169055f59dd91c8de9410e75938823bb40d5d49d0f1e6bfa34fccf47255f962dd1cf5db5d2ad5c92a790346acc72d20700c99d15a42e33c45f964da05480d6acbb9f490aa278a406d89b5bac8f15ad31526bfdda4c51bf74761e86fc5a4062b057ace4c95bbecfe9fc790849e4c443bf607a71477ca3f9c51f44fc91b449a7742e10019d61b0180e6631b1c886d7fb0e15bbee0c32a11d2cc4ce7e2cbe56f3c30a9ed177f4b46eef0027241c603def68813bd203fed2492cc2853a254d9aed8a2e8c0b48796f65d69121e5fee7b74946af9f65bfddc595984fbbe95425476cbf46c746e5a45cc11c31f4442ca2bc596047d7a81734695b92552a635b46aa45730d09ac3bcf0bfca7fc6da30e07e4901628b14608277048bceb55eef505c97bb97723322d04bd20f9f0856be08146e60d048d71c88fa2a7f026ada6e70d81fc945e6bdff737a6df1cf81baf9ba5f4c7db25a3de66f1d6e336f0aca13308bb8eade10e7358d28546c0cbfeb6503bc5d750b64ea08b4f11f0532a59187726025abd3bab9b06223e625a7eb8a757f26edc7a916c2bc7431c0266d83e896e5da5500c6a17f988fdc5ac4d5e5fc97a52406326c26b5dfdf893ab7c54d1c2d8888d9f82402ffcae1e9644cee438617984c25bf38ef9add7a65c2f998cc81a04daa4472456b6a9ecb84dbf1259bd51e8f45e967634c09a22647aa5cc85a0c4b942db7d8f21d0370ff75fe0873418ca5cdbcbb842ca8728160c2f1fa07a9057af1902ed82b0d6e36b554402f3d907d03cded84e7df7fa381068f61c15b0ccb833648dc1fce5a72a010151f8a8084d22d077625d931e170ac7b2604c8395c606e07009e5004d758c47f286a4415dbeb95ae563fe4be599c14800a4e6c564b3e9d6682684b5527f9a4b8b259ccdfb087236b2f344da5508c586350cae18fafca46d74fb3e8098e4baf46417fd64d7a6e6f33c025c91593b0d551342bff2a1b1438601bf87489e7ed82d54a9e6407db736a3c751887ff7ee5a11892fcfaf5fa9ee1f92e0ec7bc8b5801fb16a7acaaf9128dcb24362c8c35a85b1afbab236a77ecf53f1c773cd61d749cef1389bf8c6e1e19efbaedb21fd43ce44ad78ba625885f1f08d9699912dcfd13edd5b0d25bb95cfe2e1064b32fcbe376587bef37d255aaba8482dd8dc9cb1f80d490715fa406f0e16e5376538c2de00b90972398031f1e8ee8926dca055fe266c10202301af28b1623fe73b0fbaa66700a069bf4c5cfc214cc3613fae04df1bcca899d726dd4270a2a464804b6d8a108ec5b49d4ccf6de2a1ee0953afd4dd87ff3dada90856a0b76be0e1ed942760ace30df6ebbf2611031cf52942265018a9b20c3c32ac55af78310450759dfad70a64061b5e092cbc4f55daa1ea2fa0787f453d60c0a06a50ee3e00ec575a55445c77a732ccc0d2144f585cbddda7fe62c11ef71a74bd807e95c32e231698d218780177050532f073d805902dca29ee37f55c68fe0d6ecd5a6e004565c2f5f2bc7616f71483dccbeedf5dfe5f9b7a6f0834dc8e95849b700b354855d1a834318d1713cce83e209221950d362af1a361c3b1cfa05408c01cc5ab368592661062be53b696da4dfb73f9b3bed3e49b0f0cd282c8a7dbaf2bc0f9cf6326b814f0a062366946caa290221af8dbfd647e8765aee6869cbf74bf8807fb4285339976f5c8b92f5043b81f85e8f4ca80b9d4f89b9d839adba0a27bb9d41e2e086bfe781c0a6603f16d4fa83026d2ae1e397705a085db8a6a62b9c20eb7856976aefb84e35798145a22039582c7707079cf28212dc0964f5206d55b68697ac68002274400bf0c4e009cff49ea5846b41636224fbed0b048a8553b3b60acd894d06a90e08e0297a427f2b15213eca19435f7617545cd5c9517e800dbe7677dedd27ce2e9cd387603a4fb011fb8af8a28af6b91b651071716d4813a2609c4aed8f4ed4ae0954cf765196b7b7f6abda07f069d0cadcfb77dd6cc6ce3b7d9cf3910890e4dba858e4051fae7f818d0067c4b2f757c559fc3f6dfd3de61ac4e5a24458a9c41c88d2c059a5a0620350190aa46d4a01b2135ce6d4d09cb73d720a42b6cf627f48ee4b88add389cc69d45d98e344c119d974059a5d32cb89a39e3b1ccd86660184fc905ae800ab73c3917bcfa156db8123dd13ac6af56f72fb828333e5f8f31c9b5552c1c101e9fd7dbfa37611a232336be2dc7a91a6434bb1e8bb296249e11af4bdf5c11924a1e753c9e36559d8fe32b940bbbd1ee831c9c5956a97d3b3098212079599415261ab8ff75f3165ae4a3fb5895bb52544a39996d2bcada8c9393f9af64983ea2a2dccee5295894e52dafe145c20a1f4d47780e23f20cca8805a2aa56eee959db516693789ef5a3ec6e90b8d246900cc92887a4003f6806445cd00661351b9a561dd517be0908e44f311b3707bd04cbf87b1ef2538a61e1a9000e7e1a519f19a1c02b97b937c840b984efddabe130d4568c8043d86f4e624d61a1be9b7f34565c54fbcedcc791c5305a3ca36c67327bbd2add9e496e4b493bea671d2dbe8c6cec4328aa4bde49b36bc25758217152439c874ac0f5fd39225ed9e71499458e0589f9857be8ae74f0d61fa521e4aeb00828c6aa2fd675fed9703740a409d096ff4e511081727f29415bd7d257eb44b8857925b72beb2d7c8f8cd7930d80bdde543512a576ed346b00fbe938cec8a20af55fda4ff96c1aff1c74ec5f4fbf021a54ed77f9bfce904806ff40aa01fcbc79af9653ca3e0b5afd30cb6782379f559097a1562fbdc9dc9dc612f799419390ec395abde58e624d1dc9478027995e900db7dbc384721646eef33c00dacee4c2d76652b14a958ab312592a8aae5dd5fd2d3c458420cc9532736e54f7ebeda20d003b0e4aeeda06c862c94fdd712ae80fc66fdc2104ed13a87d912bcc31fc6e6e74eb43c1aed6496eaa6b58bff6292c4f24e6c1aa236f38590a722fdcd317f256ed1ae15d993fbf106fcb60b35d156a2e53f543a068e861aa5759e7edb29a9a4119dad1316d83069b48a1cd456d03c463288706096f718e5f1c195a87be4f24c96e9bf5eb4a19c9c2f6d738e725383b350f9d5457260dd83f0b72da3928e074da85d7b024a5a651df32ca187c0192dec55c50b29b2ef870d7808dc375250aaa17c42d06676ca2a896499ac0eca8257b82b826ab184f43cc80e640742abf2477751effdecda09010b1f2bb522563604443af54f157b1d95f4a091882b813f54e96ff87d5e5721984e3d223601237419fdb1bc5daedb788cd4b8fd20555202eba515ac70ca565b8692e4ae75345de265ddff2b667960a3e108eae64e760481114d842c3a79f2054aeee00a4761cb1b09c462b0a475c4fefd726d5ef52dc665e201f74dc770b05bf22e7079d7b36134545f31a8507a373e1351e141a7bd4ca0c5cffd0ee30ca00410fa2dcc5b1bd2ee6cac577f4e9001318dccb95ab942cc549b60da2729d688732f65c030e50dbec5b574063f94d97329217dab7d675b8d2d29db8b405062aab959264bc89cf07c506c85be5020a37839c10d8e1e8956c91f6129f3ec5453e4552e35562dfc53cd9e31ed3fbfa34926f65d57467e54c4df39053feccbbdea5c6550c46bf952f1792f21c64c2a0bb8e41a83052466eb9fd478b310f0493752b5f46be9ca0fb90aa52459aaecc7cdbb3bb8a7d587c78e53c59a51b1dd114ccf25aa35b857a0e0516eafb2858854bc13ddafa65d5cbecec0974d4b1e1bee631fca0a21447d7d58a137b579e45c0aad9ffaa2ee47b9ccc45a36c14e5c49cd9da1538a5c01ccb4221ad63cce7d74ba71ea1c36469bdf36845ce99adcba97ba60a075e62c1c741f433fb9344324101c206d140b7a830a033c1fe10b6ccafe822d68f1c655a898f4133813ed0c097bc961498aae1631434a0eea0c0de07145c268bfb936df569006640c39326981a8b05c71ebc5e043c7d5c5fbf470ab8c4fcd82f44cea2e7107b4186170983cf4ac9adef4d8ed79d9c2ea973fe4353e4746d9f847f24813ae16c17154cd3255721ef59815f88b3c79881d7890d45b05e5985508a1ca1324143c3e0b970d3ab8ff37b4cf66a0f94d39e431cd69a31f87679bd982bbc82e5108a28744158e93dd62e628006293ce50813ce4aae28b3ace463a0fd146e8454a522ae7ace8f5477e89acf872e0541e227f9a27c3727a5c9c6951181f251612100a17943c7df8121b5e6a77279e5a7a3db14ab0a5a2a8030bdab6a5a057caa6f88fa2bf9b747c2710a3fe8a4e95444677af31c37909454780ec4467d4d2f89741e1cb0f5bd0c067c68fb415da903830606807a2b18581cc38096730ab1d2a209d6d7bce009c8062260897961807e1c95fb4e198104594ae40f10beaf2b8e7a6383da6e4918c6e46b6d9d4f916ac514c379fbfbd81b2c54a74569725ea79095c4a16e88a7cc4985716e65b741591eb8f39feb6403ef562688402ebb4296ad2a0026e5a19b8d7dd5d02425b3544a3b2467e0ba2dde1cb628372eda1c80e3a6fc3eb0303604d5559590745d89fa5f29f54d19fec1451a86b1eb63ec2f9a983a0f1d75a5412173346ab66b4d961d8ed622efd6027e7019e724fffa1bc8db812b2de509b6d61ed2293f729e66b4087781e242af7b6866907dbf991f06f181818a039596905622e0b342ccae64f8261939dd7722f71c7ab6fb3959f4fad59fc469101e761b1d10793e206c720eaf76753d8169b53367a632885b5b860755a68cf1d902f92d31c900f0e7e2f03af7502e0ee73f8d8770b3db25f56e238a02a22ed7c0b6b1f3184d31bc103c0fc19d068061814375c301b0b1e7833f54a59a0b0f01b4cf71229f84a018f69f59ef59c6786a4c47215026cd02812e53910538bdceef075bcc3286c96c612ad5128e821753030107d72cf74ecbaa19aab29502cf1c1c4591d16f23d8131a1fee486a3529c35705ee7a6aefc28919de31be3a7058e4dd567ba2841cc1ef50214a1b83c50d982536a71d88bc153de53928e9048be376979b1f8f5879ff203679812f16f8f50767f106e3db246bff1d6e9b026d60cc3db7963354be8ec384b5fd9d6ceef0cdaffae30f97605e2e65cf5323d66660efe3736120ad44a88605aed1951f0476fe02391f17bf7a5b0212762c575baaa2ee3c51dc7957f16f5ed44bfd79fba5f018a001d787ff727b1f3dc62e45e4514db609324252bb81e4e37bd81f29721465d99999e2951efe252ef4c68794091dc0ae82119134eb40da2c1ecedb5a9c0ec06472d11db7c3b7879dee633a4b137897c06f02920e3d52888fe0f6a69c0d00aa9205df000bea3bf42524a4a9d9dfdb4d698a12706517ae411a2476f84f4770383493c94577bd0f4f1b5edc0e683ab9d76de14371b397a7014d4dee7a977a38dde417b5a046d3ec5caa734a4bddbeb39a9d04a2b0b965a1927af1b0de0f12de40c9aa8fc87b6e2d3c428870e95479d7e06b42c53671c3ea1c43c0b50122a862eb6e5f0b443882fbce176a168698058f96b460cc06c11880a8882971aaf43c3fbf8d1bf8a8845f2b233b80547db05f4aa4751664ec8496e5fc02828ab1b8c79a387d58e360c8f4473fb59c4765d1fe65e8c0cc41a32cf2a896ec0fabf6f9db5b4842dc2fb2c36636bfc0976edf17f47029b02f605de88be96931b777adb2e4c3f241f8826a1ac3796047fc5ba913392e08e787ab2d6949236fbd33a3657db64bda826207e2f914aed0b8ee490883192eb4a53140f58ab92e06393dcda065b1444a21aaa582569aae08847c057e9f044c0e58305c15271dc932955eafc78de3ead83db6ac4112e1e6d8ba54a24823a22a822ba2b419be1700fd7059d108c518b0000cec30600084d8ca1e41219f4d81587948cfaaecc6e066c67995adf86dcdd65a4288b44d08d95b6e19180ef60d250e21cc8ebe1d7d45ef2fe2783c70f4a97d79a1a736b22c119c8ae9c7b48da1d6dec9a172e861645d0d7be8a344e2b9d8853e4ed52e05eabaaf63b8771a67fbd5a0769d5016a961ab6ecff413da5b46ce1a98d4f66d1ef6e44d835a4a74c914ed9b0cb4d32feac814edfd6934f584a3a9952c99a25d2a41274a98483bd63c270020e20d407589b1155b2d1d1695759098ac63bbc6cc991bbc32efc235b4cf193216580a776a5fe419d8a76d4ee1b368bb7ce9c229f3265305af10f24eafa53fcc33d80ac1ced602a086f4cec993bbe5e34c26038e99e5e4639631dbc3952cb750a314aa0f345eecf1e6e071ba01bad84117c31e8578207b8f7985a84e45c494f698d2ac4c97ca2c8661189beeef6c823be1e8ed05555e1e26d5dff6821a0ba044091bd810df9accae5995eca391599969f3593c9265998a061d3683a1a0b69235ac41e7b61ad4705b270d69c06850e35943031a92dc3ec3196e27318319ca50063290e1f51ac318c4208630840109123080e10b5f9899a9d67f88804b4883c602e4b7c36b9bb867e60fee01f58309c1ec7c8c56257fc2618156a5a655497b2a2225ed0b112238050246928a57319254112919c9c031113d3072b98a9a292e172e576173e4d21e342ac4812557c763b41c903fdde056dd693920ed29882b6d68832f128ce4c67380ed298878e3fb0b9c79348f87661eaa65d8f7d5db438342681829e7093856a936b28c696cda71da1a97643788819c129391d9f8f0930132662fe56c25709ce2c99d70c8c747fbd26f2fc4c7afbd70e3f936aaac1bdd368f87b2fc1033ecab0c44bd73da1d4a5029e43c820c10b48fb5bb9b9011461d5774c99513c713cb17815d5a1f4470b48fed588a999efba3f58b57c9e831ed719e66bf88ec8ddd877c664ff3d1471fb3f10a9e117f9912279206e3cbd5a0c935448cb46da94c891d75e2b401c7a355d77396117a58971e3bccb7ed987dc1bed913bfcc477b6298145399421fbf89844a77504ffc8db76d7be47c44eef34574d889e3b713df07f6faf99d787b3c8ecd0711b638eab1fb88ab4be2f77441b27165a9651b9a4c1ce88ba9b8922b1e954ca15781184983942a6990d21daad320c55455e7521ae394e9c378f3e2b1757a1871505e5fe8313ed3617ca3bff844a78ff4165fe9a09364e9161fa74033f4947e86e6524bd9521775719489cce389f7513d717bb4278fc7937943c4d46fe7e89cd8e7fc3c8d47a827ecf145608f766ec78e591ff19b3d35777c22d2b48d33ecb98999b6c6b3f286f0d4c8147a8f8a029c428f05192f5c4a069a3b04cfa0dc76847a9227694f14e0bebd08eedbbc8fee9c2a626e9ff62491f00c7a4f9006a967653d350d6ea1869e9a4b376b844c196208996284caf7410447fc761ff598adc78ea3e2d88e7d238253455822f1dd63b0739f363471112abfb31867c388b130feb68f864ca17106f3220e78067d7b71c533e8e71136205788b40d3d4674d3d99ea41dc2c53cfd10728553f4469cda13bf85cea5361432bd857d11ddf497d14387a121e3cc2235f680dbc4842a451cc2a594060bb846bc9402f3a1e3980fc5cfb7c501baa941dbe38ba8c7ac8fd0eba38ddfce292e7a43c4947e6272d2e8a279108e06e9a4177d2ce9471fe93bf958a694bed1c729510a44e967116ac838270ac46f37221a118afd575b1c33ba640aadd42322a640e7e6173f9c537f1e2695736aec38e2b14ffbb28a363285fe85257db4a9b99229b4cf038878770011dffd4481982a221e3b164615a5d5a3baf4f5639129f4db473d0a740a6469c8147ace13d9233f42361a7c96674df495656ab32a3285fbb20c6a737858a2794203c7a35ea6cc9b640aa718bcd3644271c1d12b2f5832e604cd385d5260f182198711dc4c726d94ebce4fafa56b94fcdc5ad0dfa988e823857946c894988ae7646629cfe0beae21702c239caabb711e95731e97c7ca1c7aed98196a28735c39dbbd2687f08c4d85932ccf8b34e891b155b1aaecf03d0d11d38f0fdd883d8c3acce219db76cc4a9d4b9d2b77b6b74aaec8c815c9fa7c7bdc912bfdd6dd24ceddb6ed02b15d8f95395da87d4399d399405bb440db93c70243c894ed1feffd22bcb7f5410447f6be0fee5e11ed237b5360a6a26d954cd92e59db375648b76362a8d5ca9b06b74b2b6d1adc8e85a1623677bbdc8e21a9d4820d6ed7ec1bdc1eaadcedd816eaf64ca7c1ed590a2a5fc6746c689736b865f6e4e186c84e04a78a486576f3a20ecfd8be15a1ce77074dcf468c89c9ee3d86fbe727cf418749755fd7ddf30e645f3eb65732653bf717cf6e1cf7651fcdc9f3ee30a997ed1905b273c7919dbbe79c7d21e2b138b877f64526eec894ed2fdb33abba1ba7381d99b211a16ab7c1f79e8751471597c07874321e46ec2361967b18ffc5934c8d8ad654b9c66853c5c53e5f1bd58f316236ee48c6c167196314929d3d23fa8463bb77cfbe7436ba640a0efac2d9f8922952a6c8222611314559a6b05c39e1d8aec1a4341cdb35fba27db39e2fa6a835c99479f084835f6052dcfcc2de099b155d7225469cd87251a1509d6ed81b775a66eec49d1977aebc9c1e23cc8148aaf82f068c172827172d4ca51313d24814aaa08fd7719b876a193665f38cbe10c9b16dcb18689aa66994dea6b4b16855c0067180ec48b9824d7599de5c49551d571798731c538bc58a314656d4096764f5a38e5ce99c97ab65ba61994c3ab7b15683dc35558cdb10aa76288268d5d52c86f3f1baece37558c63536e8a1c9d334edbc02aa378654eb3e0ca751481aec681be3e2178fe11c69b0a7eba686bd735b984baeb04ba51a414caae7ccb93d7bdebc6ecf32f810656e93e0f65dcc1b62adf6bc644aff83ade46bd5ad3055c58265d8c02b9b8c196e4d7dc16d6c05b74b90c5cd0b57d8dced26c3e2b7231bced66a10b342b6875b111eeb0304f29ebfd07bec89b33ee83d96c8f428c0a94973e2d68a9b8c8949ad32b7db094c601eb6235bcb08a4bb5971fbdbaa3723b47846efe834d89f5454be1a129fe7f57abd6c3a0b5ce38281573a4ec9893e44e6410b8ccadeef2e300a7b9b9a6486db97b30ce324dc50464371fb5a9d76033225feeb946a898689d8c9122c8631c619dff231364be6d4fe4ded87f3f221006ebca4fc62293a46665d491b6c193c235e5e11635a766a03dc8d737b5ec1f527276daf45ced813c3a49ccfb029bbc8a8f9eed6626590b1f8796166945de058c64653f9bec0ec094757492083550a260593aaf6257e01095860a55eea97f0e1093e60a588840e93ea0e93021d26f5a28aca619fac91292631b2c8228b94c9250231609ca5b98a22c731c9906e39b1d07cd82d99f9b9008902490dbbd592b78f342a0e91f38b71c523de30aeb020c22bbde2141c302a2b0113cae085abc5556c1df08aa441d1fe81ac9134b246d6f0a7943435f4884be329f35773f667a65bf2481da265b3d5282c30bf45bbe7dd92d91066c6cb8f3a2f266a185fa37315c5c9715f1fe1ceb2478d43abf6786ea3a26621cce5f66c58b78730aadb23bba42338c5e43bd7e49c0d4d26a736ac266f1517bb7967a4319e534c6ea262f2cc9e7c364a247af45a44261f8d1ebd96d12c525b7cf4356c169c3456f19ae6f9b2b3cdb655ec565cc5d823bb345e18913b73c8723d34a60a084ed05f7cd2b899cacd404ec9aefdc507fa3e9f87be4776699d40d0d9967ef1c6f8b8482fc09f3fa251946a9927e36ccbbcac94c1c8327aee1cf719b1042969c0b0210d15156fb3215bcd86269433a3fcf4d5297edafea87f1a8dde2b4a33ab79780bc1788ccb228d82f1911a3cdd02d1f730e48d64cd61e648afc4743a4b9648560c1872a65161efc8273ecde369795a9e9694f9644c839e670fa5eacaeff49246796cbf9c20575e78167b6141947e6c7cc56be33733e20294722836e4c0cbd1b81c77d9aaa674c52a34c29f4c3efa4e1d16dd32f9e8f1bac86c7884c9a5d7c263fbe8dd62dbf2d856ab0a6d3aa186bd6a4ac35e891ebf30bbc80673a2efe4e21382d99366e32a35e7d45983e8cbee42fbecd6e705f497255e96c87030839d14c812895fe2b4e40d3629cc12c9a13dfec3fcb00776e7339c065bdae773cc7b7a60573be799ef23bd82c5219d22bbd5389eb862429d73e2c880c60b9de76b1b4969363dbda2a9f16aef2143e28a456abff3e311e567407170a5ecc1952d787b2dccc5aa7ddc47e2e524cd3645e7cce358d1a85087ca8d9fff9cf8ce06e5b32ccbb2ac651aec1f47aaa701499688e1ebf6682f9b6ec979bd405ff32d6c96659e6b9fdf0f0dcaec934de622c7518ec69651748abca4c9a4681c66a28993b3f49c430db955e3d18688f79955e5ece0e8b45e2c978a25d39ab939acb7401c959006eb776633e3394d6eb2435ed28e182420da86d94d6ee2128146912e7ff2edd06ea3af264a22922c67fa3865f2c5cb45cf6444d2a6a665d1e4932a936ab22346165964714d7a48a7c8c798a451279767b9fcb6a1dcec618e4b2a77d2882b1bf6c86e7693b631f97ab529a1573d248660c986a00d55e2ea216d1b568fc6ac85475cf6c4248de2ffe4cbd123bbf1ab46991c359f99603d32932fc624b2cb362691a39e217dfda341f99651354ac634ea397386a6dbad887386ab31b307b3619c9a55cca212e2c0f2f014ec851b959ffdd028296fd22cafc143e22393e2b6282a7659b3922b983de1c05ea21a864086550ab3722553e461529266c6249206756a9dd7921a4a1aa9c9f82a2342e52b1353d86344e00099983a65f684bd88cf41d607111cd83ff694fd734e15811d74907d59a208153a4861f694d92140c7ce294e653f7880b49906e533db320dce22481a1c708a7c0fe810aa142b9e81841ae52aa47166517364e7873a788a30ae26ed8c9bc21362cea87d3a788ac6c9baa584baa2dd204d833175ee689a2667a2a06559964d1ae9840f54acd48cb623def9fa3516b27004566a4ecdda2454cbddf7f239a6d9acc18695054d10483a382e60c10c0b8b2864dd0ccb8930a8587208d203ccd379a2250303eaa951411754d0861c785422089d3579b64ee1f2c86e18555f8c5109a961ccb9a21fbf2cbbf6792de7d80322dece765d7ce2766729b090e2c2dc2fec2e17c66f74b3a1123037f69097da4882c843863dfb68b4a18eeeaabc6b185551d5a838537365e2941163e20f2fd410bcfd1d2e237afd394194d91972fb2fb453312831d3341da44e09d5196ac83b4ac815954c1d41ed36c5dfa6bd89a0b2172f57c071a3de316e97935d7ba8070476cd661d966197a39d46e5e5b6cec371ddd6711e10bc792827613a624e60afc1565ca8549842245243ac26f2c763de55cdaac18e37c46ab020d10a9eb16a14739cf6c4b6716ebc2cbd35513319b9221f5f8d83e560368db2c213580d16a4573a8515b97dc5156a5bd160e734d88d23e78d5c91d186acd338584d4b9bc9c8942c60359ace651d2656052e864816ff107b66ab0923993abbe725b73f2ba9573ad55d19b7513c5a7a41c82caaa97de0116ff482e02cb2e8b01a3dfac6201c7063334e0d2be5410d2b0a9a45ba3ba8613c1f3b8ac398e35222ba9048723b5a1191dc252c63f45aba063bb36174c5f9c59c06fb1cd64aa25db3648b63194ccfc90dc8151a3a738c4246c45f0100cae51525644a47286ef7f932b8c687f2cd15ea2988996336c87c593adeb8b8f99cb3c3bc162dd3a46703743db65fe1caed2291877ee522970bfb15e476f461b68079e8171972fb2fe019fd30062162e107ae17191c999c9b1cfb43fac7d7c48eaae8f3ec1442a3503d76fb64b477cf02a183ec12a722620af4980259992e15bacc4cc5802e029aaaa75f4c490fc74c85ac0842004a81de298fc700dca5d7d281deb1015a8afb79d82fee9eed064b71bd47c9b75f92060d151510fc4da65a3f2dc5e58e84e99dc33ab2fc78ba8f790637a368706a932602309a8d7977701657db805c9129061b6c70b26686793f666e4b8c74e9e70e2a7dfc7490eea467aba3c1ee5887deeed33137cff621d1dfbe01b9d27db39d4ee5978ec6e1e8874483ed9943a53ab887bcf3d23a6ddb427a0fd5d12df49e6f030dca5467e74aa66481456edf800e24361bc6eb797b2e7c3dd4a371a0353ba7c72e2a590db61aec235da8d90cb6848b2996b185e08d8a4ac296e9468551a5b2e2c6f44aa7fa89dbe73629d478255fab1aec182cf455a778962a24703173884e409f0aa16d7f88ea62e4f623c056b02be26008110d9b34662cafd9f861971a9835f6993c17bed3f6c0aeb467c2051cabd42aaa3073fbef2ac8dcee2aac78dd4ec1e1863240315115bf05572ac61b5420d8363139b3ceb296d6580846a05bd3ba3beb6cfb22d0292e3f34183fc4467b4caebf215c22f05dc06bf1582378006a67d1e2cbf56ecccca551d8e3233044f7e34c625ecdfe30afec3e6d5ae3690d071ccbe03ad565be8c2362d81746999071eebcb37ff44f37b0394d189513a333a87e987d32636da7b5e1e49602c771ed8844833e6caebcbc42ec8e31dad6d14890e8f4babb9b3d02aebbd875c7cb9d6725eec482c0bc6ddbb66ddbb66d7d83f40c4dcdcae68695a392a979d16a3a886352a101aa1c345d86255b33392c9a53c3a2352f167dd9b0a80defb028efb0288b7aa49724075d0eba1c7439d038fa6d3b79a2d83c9eed73a53aa99945a6911f33d243b71db9a41f399629a66bcfb19d3edc6e6c96b5f74f14a551a104fbb36ff7d05f40bf6e9a8e927e86c233e2b96fc67c536653ddce3edf45a69e7b416c96c689e304ba845ba12153ba77ae447143f5a2646949a34116794c6218b52cdd324a1a2cfd821f72c681eb0f7b285d573b762e02a1bf88bd349bdbda4aa660f462581833cc62b3ce195f5922803224e786342e7692e9623cc5c5b01d2ef619bb5b4e38441d399c70d0130ecf8b0726c53242173a97b17eec23ac110d8258a02940add1856497de941f8609c161b8d1e690e7fbc26f7041185429edd1b3e1e282584aa818bdd8cc217abca3c7ec13b2c99f4eff9448bfd8e7d2156d7c5f891eaf7b7a14e2439217fd924ae1e8339a30f7f485dacd0d47d7215d5774c9b78f5ecb67c405a4d722e539d24da44f93231a6572369df469b974944f1bc6388cd3e7e75388ec7decf1636f64d83bf64f2f611388b77496965f88bd6dbc9dc7bed3e935424c7b3a61ff5cbe317b43892bff79a9e92fccae43974e2efbb6394affd81cdce575481756b293fbe8d30b427479e9dde042b687bcf3279736e4d9a0b4610cdb43b62701d349a4874b5c92bc9c242f8810fbd440e7914ca49f9048d2ce68c313d2342159939f18d120e933398cefc4c484a73c8171f680b84083dc9d630954d1fb5c7c9675e7648ec9a735fde49ce99bfdb9fc4e9f5ff861ff9c6c28e5977d0a513acd3d8927f3269fbca2c139852859db7d149b4566d8c771f6a7c43ef985a7ebf0ec4bc2e6f08210bddf737efd0ebcd444f9cf5964179e2e43d2dc70f453bb606ec7db75a2c3f8e695f1854adcdcd175f8c2979a3bba117265a648d6c6fad98f5e16e2397b9e24bc1b26576485c83cb5d90b740a9fbd911dddb4e69c93e3da75f39b14b525e508e78e6ea46cd4ec384cba44ae46ae6c0d62cf02a492e9db4e229d904a2612e905b7c3e9703ad8c6c92ed660b466c41ab546471a15314e87d3e174402cec9bac06a7a897bba39bf8d38e784f2e184643aed433d7bbd1a87674435b582bb626540c0355c163629f5fdf1faa945d8775ece2dbce9e055abc857d892e581284124da9a614a451a7f34bab4691fec9b806369a2208f3c09fcb651fe8460d274504b3a08b2da1968ed9d4cfb9e66477227da38e5372639fd18d775928a68ed3190dd16a4636a3d51685d1ea72cb74b9d2e27cf0825858106a4985712f9ec12d8e3dd370ae942c9d50e5e3295651e38743fb665fb4b614f0a440ac0d0a35723adb13aafc9c2d7e8b6fdec81456ce6c192153f8480d695c0e47525cfee43147adcbe7e88bd1680483830103c6c7f7e38d50629ce340a0175f6946a6b4f7060fdd3c5fe05062bcf37e685477be8b5cf1ceff616b42ed1bd2e8340e3b0ecf357bc2a17dfb86d2208f6e26caf99344ba39056990bb7feac660fcd843538c71329aadd98a71792ec677138a09c5740e792db24ed3a7a52b9606617ca78fd6d8a0d6dc908669d5a87014840e3181ce7d471ffde42506b1463792f58205627972b6903cc52b6404bd4053805a8d3a718174404a404b7a85cbe0021de18370222671a6157c29716a08624594af34837349dfac16ea648e3d94dc4e17c36da1898dacf8480d6611836229b288b93c6235eae4f247397225a692d49c815f3afc510b9359773f7806bf3fd014a016682ee95431717a2df3a68feffc76c46b522969901f3fcfe934c876c4b2dc0ef68d8c34c8b38b6990cf2d6990b946d8b774661f4891077ee99d4ca3da0d97dffde01af1ee346aa2b02c3b29fa30ba611ef8fcd14aae6cd68868c3be21e9f268353bce8806fb18861d71c230d3cae8c686a7ef88cf8806f9f2bbc073e68db8c011a78fafe7b5bcf35cf81a218f90a056831ca9508d38e2e43c5bf5f21f3bab0b3b87fb19dd700b4b3a8b94915b72f9a52fec4c70f9275f48afc917ce4bfa42fad11bfac2792be81b0591dc1fd5961ab1640a5f2aa162d7669f3e9f78f9d817efc8c8e83552c21f4dc1cca39ccb23d7e55192cb9f4cd21ac666f4be91914e613bbae1410d47372cfb13399df8f5e594342a5ce2ca67717e22a79371a3a66c8d73680d0dc2e7b9b52ab78424534c2f4991519221973f32326a8d8e5c3e57a1841aa8525c7b2d369541ac0b34ea7403bbf3d89db6e32ce4020512ec86201688d5289eaa38182157b49f8478346e0e36375e4ee7f279b6e611be11fc0b702ab57dcc299382581f688a06d9030a41accbe7741a158e6e9434ea971f732a77e71ddda05c1b7458298e6b3432bfb9833aaf7d9cc9d98259aae3da11ab411edd34c8a31b173ab361a2e665800c0ec03007c89094b2fc3cf2a72d649dbb6df24a34aa6fbff4773b0ee9c722bda2809a18d328a6420a321b27bb0d12884674673950a8f421b332ee4a34d89c7d89aa069b776e04b1e53871e78f762e96a5c1e61d25e8999b526a32fd32d68fc7bc18a98baccc0731b22c465721bbe93fe9fc4e45e5199affeddf46957753f9936ef68dd4ddb22fad896acc62f9a15177919d7491ffa151990e52f7298d3a48b7b9ce39b1e06bd9e71bc5576ef1d2635d582e8b4ba35845cb6c48e34acb381b15b89f9333da9e1d6577f76c19e5118e7f39c618555a3857dc9861fc468554c6fc9879e88845129888b90ab89c04266a2e079224db4396b194313236aa46d07f2a5ec69c9addedb2c894784a6bcd9a45ae441a9a2c8f96b6a70b2144e6296a4fad5921f4f4c69cba5da6a2092f48b186a61d0888744bd3cb291ad7362469dd97a48b591a5b0de2e5789e115f05bb90e80e79e788d65a7b820b938f383911e73f62e50dc732421953262c14a38dbc9136582808cfc05ed8a367c383856cc4e11958b422a741ecd1469c06310c0d58cc89387225a6b07bb9528f3dea740ab063a0636f15a60306b17320d161525d77d0717420fb42248a5ee416b2314983d8eb37535c77dd270ffaba7e765e0d62f2f545c8575b445f45a6600f7dda658f8899aa36ee803e5fab640a76ef639e1182b7fba40e18c58c1deb1430881ddbb07bacb46910c322768c5a6c0b4b6e86829a92ac08133bd20c0baee7c03262c3a4ba234c2afb6447aed1d1884422b75023119dabd1902bd5f4cdf350a5a52aeb980635d0b1771f76cefb4ea2cf475f5f4428f46a7d10c1413aa77c7c1e7a11de49d607bdf710bd771fa17fbcef247a3d4ceaf3511a7ab52ffd903d895eeae945a7de43f685defb4be89f2e143aa5d42e7144c8b2c814adbf93e82af53b892c0f1cf52490084ef549f6e5a55e3b4c8af450856459a674b5eda9ad9d80ee43c89438845e8f7d5ce8834955d1e947451f57bf38531fb22f2f512553b4232153b457ab69df4104a7e889e054a83e8c3355a5d9c41a9b15b509630d7dfdfa62a307350cb9645cf68400c0fdd8906b47bcf4a21f8da226f4ddf99cc9e7bdfb422f1b72c5b8c917865cb525f6a171c90de7dd80c02eeddab38172d043aa904e6dd50d7d21158cafee6c6ea8a1877527f4baa4c136d430140a8566ac47a64109d4eadda821ef46adb59444bc252bfaa1a4d2875d4b755f5c63f4edc535d8503d310f45e7364f02a31ba5531b3d214a0f2569100026ff42a52f89784dace84783ed5135d81d13a4d7b5d6102ea1ba610f7a4387718fca13037a74c1813efae86db66b10043aca4bec5119aaa3864a737b74ab6b718df620b9a487584d77c4895abf3df45c71854706f4956ef2c5db2274479e3bfac735e847a3475ee1d4e82dbc9691e604cf68199ea153abcd415fbfd9907e7be90bbb0b3a47bfad5a50cb6659e4617cf3665fd837dc3c4a6e7fb4bdba181f0fec862157c4094751d0ff5cd6c1f8a68eeeca7871960eb94248443f76548de2ae359a01afd9d0643259db895ca328ba47417a34a4898c8ad4ae758b9073c32ec9d6a5a1869da7fda0ef5a946e569369b0673a01fdd074066d46472a99e9ecd71df9ba56c7ac997ea26b6932dc1de914ae9e8b5a140a555a2ba5f4b6d6cff3d0a7a36fbbd60d849c4e4f3686bc96b8da4ebf01b9223a3d1272e5f41845a34a9701c0a597c1354e42944bbb5ee91979e923fb506f220f7d93d3d346914ecf5c6374badd136bb687b1c623e3baa0d54df4a1ee441e506c5825c8cedc0ed9b035194d06f45310f4a1876c8e794493695468c80d75a3d148d491bc169393bc16d2499e8dbea373a4ae3d1ba01bb25d2b8826b3922b7227fac01279e8d71836ac30ecea36d7b5a48a25fac0ccc3e7b57a52f561d617b15228068c3b5b21988bf29e11b2b3657a8162e7911cd41d40f0f4162d1e532d4e2d5c5c746af14eb58b1a12b5b0cc06a830b7f43e0925a1be4d8f926fd7aa3664294a368441c2ada741434505047f93a9653a87955a8d3a31d910a6f431cf38b1b3d560b5f3c8170abd1a1cd9900b07359c2d08843a250af5431ff38c6a67ab87166ae7914fc8158692dc7ed7b578cc1b6a32b1a6519e37fdf6b81d5940837d1a5d4ed7ea701aecb06b75477450c3d96add7964d4225b22c2542d2e61051c2ba032ab083b97594458728bf0e3725c254665304b19bbce23e3623132772c0d6a9aa6fd870534a85966ea12638c2ef13fb8709ded6f87065db487524aa979ba047503ef5d1ad5f173613966492ef1d2b2b8b8fce082861a326bb2fce032df8f80118da24751424ad2dde5c6614bb5f0e5320bc9b04fc8b43f744a93a086f4a2a20ae3867061e8d85986908f88e7149dbf1ef3924ea6ecb2d0410f3121da392c742cf41c58e81de98ca7ee7c397ef41ec618637cc54f7435f87a45fb62666ca2a62bbea22b22119dbff812a9c22ebee67c74c5970becf89db8e489c9ab51fc3af94ef3f3ce9b7c42b624a46ff4b5151dfaa2cc17633e99a7342eaae4cacf50c3a892b913ff78df31272e593523a32a6583419d99dc56545254759ce9c9368c3451d55ab47745978caee7dcb8904425913932a3e8b85e9c04c96f9b649850a8261201a53934b7df1971014e2287b07cd123efc9b0b3b4b4d94e7945bb94431a5c79ac1c7269135756da58b95a491b3944dac8d59c2142cd647846674e642aca32675a998a73e46ace304e7f081c516aaa28f92c9d73e53720573ac76a988d4cc9321cac087683d96434f34e8bd5501bfac26aa8aa26c88683b58c02bbb958ab75a49264304b1bc673bf62bcfd6a97ab91f05fd1f6abdbd557a8f15c2379b978c6495ecb54990c4c8acb3eecd339c96bd8ce95d97160cf4e445a1cd9356bb19757ceed21b0964ce98d08956f832f2605cfe879962d9982dd60ac68c3a9c26e6ad8aead0c95761a0b3650e33ae20aafdbd74012669d86b8f3d25ed958d3608c354b6a8dfcaa511293524a1b57b1a6c1200d76ac89c7e4ac611b65e24c4d7ce22deb6479844947055ca0311e61bab3b339ccc971cc31d2bf5133e467a6b999fea198a63df62ccbdee781dd1ef3c6a952a95435a9ec5da6d96aa914b1a966b3d86116982a1c69cac64083d222b7df8198993b6bba89aec848551933e3d1124d6d026b0c918e4fbb063b9e3d9da595d6063b7a9e471bfc2aed988b5e4b77b7af459efb5ad89ee4e30db11beff14caf029cc2e2e631d188343a7be6b508c12c4aa7b4a9a565516a02100e4b6b3c43d97fe33d6793090999c2d91909b6b5415327a06bb3326d8a90743d671bc66bdf4c50b58e5e7ce44cfe0a4f480c639e93336c46d93899d4dec065671921c91533693a01bd71a1869366469f07cfe8ef98359baa92988666d6442bed8c823fad8a6d14185f4e9a06bb463e9c34cf216d9c349e1999e6c79a0669bc2066140dca1492ad61fea4e9cb511a4a328995d25a4d266dc67a4e6cf86373d26ce02d42c5153a5a0ab415d41d4f1635f486dc0ec48f26fad04c78ab1db9121ad2297d7e48c37ad2ceed8786f48aca0ea08cdb10c5146d484f489809eb202157ae003b1daf76e12707650365642a3b8c70704638239c11ce0807675453e3393906ca4f4ea8822e693faecf0ba42259cc62241b24b806dbace4cae934c476be44c0a4b20ed9c81598102bd4baa7b86dcf1e9f65e7eccba95f4ed1f2208253a6972a53284cea2ad1f2c0d1ddbb675f38ac280f55b014a740ef1b4ffc21644ab3e58123fb762238e5625f58644ac3a49ee19c7058221c10720ac29e62aa592a55ea146dd451a96eb354aabb5995f7ce02dbb3e3e0fe792112ed4b4c6de75814e094674f4574cf9ed9d33b3b6b644a4f282a1fe5fbe4749d8b16a6330a8a15d51393936866762f484d837dcf7a333285642357482a99d2a7b456928a644352916c48aadb27d99054db76726143f0261b9ae2a764c32ab2a11645b59d36c464d2b490d8c13e642ad63ac03592a8373ebe8fc47c410b78d250a1ced35391ea865672654469ad26d343ab70840393c2b41b2d08c6c5b84da18693664641d3a8b0c3612f88783e0d315dd74855a2c3f1641a1cd5d05a43a72236eedb39c59aab49e30304dbbbbf74f6d4bd6cefec66bb1d9942e474045f0dac78d2308f747474582c9668869e5413130913cda06166d6ccd56471889ed89056131b56932934e3bae045430d3f39ab908b7b5f7b62645b644330546d149f20de87746091db37a27d535524767007683a9c50e88349856e4238260eadaa1a3a1d99d2f5f5551d9ea1d9d05bbde8159386268a59137a5c3309f514756c60659a3471d2f43b9bce2676ae0d47ae64973b72e5332f6d48addcf9e4c47ac38c0cb7cf9f1cd7a409b599b96a54e871795c565872fb1e2493268a39c49304bb9951cc9a4993c5210df63155f6cac8c02bd12653c3ed0c0eb735263e391dcea4c93e397747a6cc743898b539531bed098d469bd176640a5b39d320ce0d3d2e6d66dbb2504339e3715d6963cb197b8a4348ae6e892c638014d2c6e6dab84c283b806288c422184aa3e8c31d2e4f1bf24313dbc7f94675186f6ab0a345f9c2c9c518b96d8b5126f2c091049107964a20891186dab6f96c1a2c62c26cdf34181f4ddc46e0196dedf943895f1bf98c93bb260669b065106a68aa8935d22648b70b79136d6c58fd29622b3ef171545d29985064186d82f4ca2cd2293d8d2cb961b491360db614ea8c35364bae2cd2603f08cff94132494d92115d4839694417efae51266f93ce6024b63395489d4e126f94b111498312498b7f9e8525dba36f44024434c1f877e69fac0a89f4175779615f3ca3cc29269b9dca953e9b4c1f9d44b77f564777492d3eb2e1bc9f7f3f7d9d1b2a8aed212fa9c5b78f8d1cdae725d91c2dbe873aba5bfa675d743af554fac986f1c795d2647394da0b82f47961b3976c0eedd8959e10d8d56cfcdce4d97762b27152924ce73876279e0d5faef7ec9397f67e30483ccf3bf94867cfbb4cf4e1e4e4d9354dd34eb8abd9134d7b946191da277ff2b1b424ddfb4c4e1e65488f243839e9d26b21d958fb897be279f345fc71c31e329e5e702d3ed33f1fdf169fe73a7cf6a5efc359fa795efa3e254a840eb73a7c9e8fca9496e74a1f6db0c56d8b16a6b367c3f41667e9cfeda7c377748b6fbb7411ea3839b1b1462497cb3eac85497edee51792b22c96ae699a6d61927c62431d9f0f16c25c0c7bf6c50bca6c0f0db68be61693d36814e97d8e639417ffe8bb74f118973684f191778df33e4dfbf782cb3af682285dbbf7e9b89f9377f916a66b270fe9fd9cd850c73d79d6856f0b6bd22eff094f1e3a9775f2cb4a972797d9bd2462dc0ec0dc937ba4fbf97c4eac7779efd2fb3e2f7de1c9b7635e045cbc74cc7389d7c5b52ff4feb19d1baaf7ecf59c16bd09c4fb29b928591da4fb614f0817ffd81c2e5eb239be6b3a48a1677590ae0b3bbf20b01b9fe5db1e52b3610c3b61d81ef2bef8e9d193c08b934e7a91659284794184daa5772e2369cf2e5fd8d04796d9e9d9f02451507e3a4b933e948fbe138a0de325995ccad339d2e9f48d7a68b04db09f9c8bdae567f230decfa78b16a7de4de73e975f462addfba2f7c54be50abdf4cea6bb30bd850dabc974930d7590aec9b74babd91c263fb1279f8f35934f9e3d797269b221e97e9e796ff171839ef72c73e1c286f47a362c7d7b8b941636fc7c3b8b2c7da18e5bfae733699acd2183c07e72a265972737c9a1fd24ebb0a854c61b6af71e962ebaf7e538791b71c3ed25ab83744f1eea205df9ed218c76f2999c459a7cd8491fdfd137afe80b7fb8db435fa8e36e57912b33c551d0bc202b849ebd254829224960df3e158ebbc7952ff1722a5fa8f2a14a0f16c6fb781ff6b4ef37fbfa3216af4a0ff49be78b5493510641274f694d4b344c36019083253397a9b82c05164cb81c08e4ea1822d9411e4fe3306b077d22788ac866431f36773bc7752afcf8cc82fc68a3cc7768b055dcc3a8e23eeddbe7798c013b012a9d00eefd1d5438edabac02825668ddfe0eaa981e22c7a0d795f54cde572ba9f68c0a67a3aa6752180395a58889b9e065294260e42a892aaec14410da6d10b8e0f3a1360477c0d107ee1b90b1c606dd39f6361b1ac1a3eb112fc71dbb7793bbf0bc8f1b3479022a76efec71666a9427c4a7224b2196d8f450ef1ce66198f72b596240c8bb435ecf32cf98e7c229fa42d3ed7480d7db4eef42f4905eb3747bb40d46295416627b0e36f93ca7719dc6d9309a7c3ac0af933aa8a4b325912c5fee479df3dc73f0ba322e579183296e0e8a709fcfba11f7a3b60ae8a3af2ff783bbcb2f806bd04b06b006fa26fa8478ce659de8eb6fdf3dec3de2edbe5dfb72749fe738eedbbb8fce73f31c476783d18a0afa703d78f1f401cd0d4db2aaf4c075e57b6099b9f228bd125352e5926e689a5c092a183912d46bf22995466d0bb892a7b8f2288d0ab1779737710dae91033bf790cef9eed817c63b314f08ee939bdc59dac3ba6f92b46fda8e366ace19affc2c11613259b5103972e478a6cc4ed49059f12e2e587e90974c2b96592c53e9c74b2870ac52752073f9f2cecd2edb26beae496ce7b6ce8c3a32ea50934ecb1885d88a4e608e54b81d5bad231849c8edcf39fff14ad7cc3b6705bb8b3dbe381928a43b674ba64c250db604c27b6ca4b6759ba7376bc02b5149a7b40e6ed491a961ecc9fd0961301de0958f494057daf89a37864b5c6eb06da88b6315e6152c74331d6e1679900fbf9b5df461dff6ac3e7c8b9b853c28d24319370be3499f47c657d0c7b3221bb2d1769745d62f8c01a2f57ef2ddf6f8f190e75ac6fc6ebcd4e1c66bf6ca9961678fa57b65a6989b4a3896119b49b17bb033b14c02f159d75e1093669c7941c4e63a4e1f441fe2e5739eed597f3bd745aeb123de24e8edf3d432ec7e1c68e397de386d486d67c1065b40377e932a0b70c171840e256266a25815611dc9f992a835646f76517b12901192c0daa0fc959eb67248ed1b665c07e1e36607bf4d2ba3c124e20da310f53e5e93546691c5e5ba2efad04c741eafc573a32f37a784c165cf468c3bed8e18d36b99d73ef046dfd0c7d5be699fbcf34369d308ea94f371b2a671c697729de78b1a273b0d08ec8b9e674b3071b373a19cc3cdde60a3bc207ada6810501bce478d7a42f467f6b5112ee6d970c09d76870364ecf9e940df24b23bdf12a50e28885c71027b1319965da650b046935c7182be09ed54b34ed0541319cb140c7b1689846a835386ba06a7ed2a43d3b20b8d91fea469171a23b3270ac49004e5321562c0b9a1504b2f64e756b72d140a85425ffdf6559391c918948c2149cdd5e172126292d08415f7bb9c84266c2e2b0b99fbcb2c392cb1a20e1181aa899d2488e0c80d45ae46852123b7a711a9821b86928c5ca1d5b6854e87dc7e901ad4707bd13cd128d4f9baf05a5077a149c0f9b6f05a1270179a1eced7e4b5f470171a049c6fc96b41c05d801ce07c4fbc9603dc058801ced7c46b31c05d80a89c2fc96b51b90b1017d7e0cbc3f98ebc161eee0224876bf02dc0f98abc9602dc05080ed7e0bbc377b80b9016d7e02be37cabd722e32e40585c832f78be20af05bc0b909fefc76bf95d80d8700dbe333ee32e400870be9dd74280bb00a9e11a7c0170be9cd70280bb00a1e11a7c0770be9bd73280bb0049395f8fd792721720325c83af00ce977a2d02b80b1015d7e01b8007e02e50ec700dbed7050a1daec1575ede050aecd8a7086a385b4a3eaf063f49688ae870f65a74d0e1f4fc69e9d7350a040aeb29f4d039257a88724fa3f32dfd443a8790887428257d3c655cfea82472e9d4ba895c7d0a21f9422e912b14da5ced44fd15e984429b0d453bdb452e3beb89da90d23a24043514b942ae4a236972402b1b3db0bb9dda2a81ed352442126285acc8257a750240ab57a38c346ab3424e6f910b0444e84fdf98a8218ed2ed9486a80e52dda1b45693e90741159516509146519b63f41212b754b2a10e1d77749a8411c4dc50e46a142741044b6e5f8444a4331a6da552a9542a954a4aecd8acc9a90ed2a5070dc9411f32791c86d8d86ca8dbea4dad37f5a6ded06a03343b1a2a72bbae6ebfd2c815110e8d0847e4e29d1b865c53d0ac685634456886d01469a26e34369fd7e58a8271a159354d0d4d0d8d8de845b3ea15918b26481456d42158fc88c3901f52b0a146d3348dc686a608cd9006f96a5e8b0b4d109a9a46c1d0d4d04421720111af0bcda4a979515aabc9f483a00a0d1a17abd9b66ddb3e391e299959e34fcec7f54162f2c8787e786454d81594d66a32bd06ab51a11153c3ae55830a13ce8d52ac0675481ca87821b94cc56b8a8bd5c815ed0719acb8a1264305198eacc4edb58582c4683a2f250e58dd68467a2586e288a104b743ae2766421bad378d0a432e238d9229b87d6da6bb1872c99553284948a73b7da15aadd566b41ff2a68a5c8dd26914a5ef8b908c548d3ad1f30d5da4043444b4531b3c854e210b44df9046c54bc9ed1bda68b65dfbd1a8ed03818a504aa9e845a91521d164341a4d0b420da5ea36ead5a8782ffdd194be144027b544017452a7d3635e0b35c21123afabc9684e700dfa3e2704bda1d3f704b59e262382facb2c1a5c7143acc6c5f610ab910141ad093519abfdd83e9768321ba6aad9b61a89846a85ab51b747dfd05da0c8097d2e50b84060c3058a2bba46857587292d43cdbca285da584928182b5ca038d2a8f072d1058a23564081130323b7007504495cb0c4054a503aae285e0b3d8ad7b2591728ae7809e7a5db665986b68da29cbc0eb940d1d2645c784268596491c54ea3ea9246851e99504cf461c88b6b308e5ce157b7f399a25113a7d3f1549fd6c7c887e525b95e8e87a4dfb5ba23328dea3c9fc17edc95d0922b8ee07c3e1f8a028b3129b94d73bb2792db54bc8adc1997a978c5dc52e9a673d2f33ce412b9a8c631a124c6ce925b1a59fa8515895bcf2694766ea8db4d3801782d27313c17be279b0ddd84458e3e2d005e4b6763adaf064b7fe1b9f0adf6856743fb0ed6a68e4706abc182f40aa7bad2971e6235d4ba5a4aa57fbed2bb96915b7a5b714b8f71e4960e234e714b47b9877e3b0700af657bb1955e3ac720b754d36029c667923afd271a25672e5fd4e742f304cd09cd8f4649145cbe09f85c687ecc98ccd0c4344a9ee0f2ede173a189a19121d1c82c699434c1e58b80cf05c8121ad5c873a151296994fc71f91ee07301a26447e4b900d949d2285982cbd7009f0b90243a21cf05880e924649125cbe2a9f0b1024affabaa251d289cb9787cf05c8152e90cb8a464999cbb7009f0b102b723e9e0b901c20471a254770f9eef0b9003982e3792e4070a6689414c1e52be373013245ab6b1969946ce2f2053f172046581cab48a364cce5fbcf0548919bed6648a364082edf199f0b9021361e9b208d9220b87c09f0b90009b2a2ab281a2599b87c01f0b90089a246f35c80d43cd128a9ba7c07f0b900798226a301f2a3519dc5e59bf2b900f93183792e406680c434aae770f90ae0730112034466029159d2a896c3e51b80cf058a254054d27301a252d2a85e7295ecf44e9246351697affc5ca048a2e302850ecfe0eb02059246751c2e5fec7381e2c535a20b142f9ec1f7c5b500f04ec5e9985c3507000f399cdb2a99b2a236f546c535c12ba591c9498d3a797f5bc2a938261805fabc8190db41220f36587130e015c7025e9980562b43963ec451fb179f2a3983441fb657e4a13f835cccb4aab91d8e60703b468cdbbda20f9f9cc843df6343938d26335a8d6470c3ae0c37b72f8203833b9f488948479444f412217135289203a7e44416984c80d5345189f0f978dd39f636fe80315eb2e16fe97a37a1d4844dc08b7638e88270c0a89316173da4a710ebf30ab15e2116ebf699b93e6cd52834da425b44a2b9e5872e61e42e6173e9b9413a79227169cf38e767899a1b46d785f1ca4c774e4e62f55a4e46a34bcf79ba9369a38d4e3e6db8d7e7f5798d4c2d4c2773c6e78e38e32380fc42af5092eff3f911600601241680cbcfb17972f2b07e9e9327d8e91780cfcfeb8749ece4e4dcc91780cf4f349b6933577335874c9bd107f4198d48a451c8bb3112793746a1d1c9e8c4a3f2c4bcdf792dd4823ece1b7d3444005a66da5eb9ec292010c86b81715007fa46d74e4e4e4e4e4e0ec36b39899b4eddb6d77a837eab1b57b7d1177640a0bc7eddb76f00ec496ad3a850587768770ed47d03f8a85c71f1ae2e2c734ae92d282d7da7f4d0047ee3149ac52497f4f1881c66d2b53e1f0facbbcd3363ea4db5744e554be764077ef16a19d75cf4eabb3278cef34df09b2acfc3a98a69b0bb968989c949d6e423fb4b2add7af6247052ebe9b9cf677af799dcfbb4cf8ff4e8c1588d46a3d16834aa377d9f9b90be798e93a85cc510d5d5fe7a93c967baf69d04e098d71280639e005adc1abad5736b7d8b6b3f3929e4ea1a3479e819c1b8896bb0c9e85d2bc60960351bd201d8b0de183fb1614db1a1e9c6989e8d5f8d14e326e75c782d2622af029c3add641443fbe8303e8e5ca35101783d7dbd89bd9618ff3a3754d361bc9e2b99ce9e00ec8dbe3b90b887f1e849a03b8c0fc687ad6e985e6df48480f1612b6c483d4bc3886177c4abd50fab31612bef0600aa0d276df02ccd305a50724daf5948f9a1f944f109f2597d867c7e7c66e487e613c5a7a6c16d0ef547a342ed30def7cc342a8776d3fb1e19ae11e37d8f135ca37e07e830ae7d31be78a72784e9d5f47aaebb5acfde8d7ad3593ac6c7577b77c4f475385d4e7745a7f44dbe0e4983af2e89663b2b3a6a3c3f21cc75a2728394742b08fe2613f7b69d7e9a8bbe7e1a95432d3dd46466c7959edbac8c06a98c52ce0ff38c5f4fbca12fa41b5683d99625ab22b7f405dc520f3bdc928c1085744be70ebb5bea975a4a3656665d4da69aea4de0c886570165d752b9b485450db7178aab58d5dcfe1601be5d83f4310e72a5720feb8d5c8929efd548afb468d4e86dc53d3dac476e9d42aeb4b0a0954cb1ab936599e27926e71846e8c57d3aae3de8a5ff782d30fef15aa8ad1cb561ab2ead1b85038c87be50e87543ae06bb445f3f062337ec5a8d622ac650642552318699d0652ac4b0240741b680e4dacb556c8175eb394e55ae820b4f5cfad2398ef35a366b776e6f70a8a136faba230d9a7c7c47485857dc7456705cec606ec8f343a745e852cfa52b5dab9e2af124502dd5a1962ed9766a0ead47bcda4c833b35477d8f784d1e86c2ee737602787796fe7cce09e00bc0ec62bcfb02208000f0fcbcfb7cde678c7fb419ed096af2b0be3bb7bda1c66b63be9ea54dbe1d51e7fb9cd6180faec2a8b4ecf3a64d903a85666404010000f313002028140c888482e17848a2e921123f14000d99b4527a541887410e29640c21060000080000000020080200a4a2ec761fbd76f04c60e78dc1a2593f6e64c2d5ce2aca8313368838663336109de4c3af91fc5d135954b7294119b881397df3b8361b3a50e0e18d146351acea78e7fe998465e6dc30b4955c50a18bee3f1e0f57b404002d75040782927fba2491757794eac3a6b393dd5363a1a2ab729ce9895edaf57818ac17f6cc687095cbad764fa16940ba7b6791ceca9004b8e9c85d6461773e3964629dca7942bc06ccc4460b8a25093fe4382fb518671136a8686b6d10b01604fb291b30b7ea1c203a7ed61ad48705fba83460619e3448213c5b873d863fe942b3a365256a4d10232733e62ad6e843df8cd89ef871da74584960b43b6a2e1f4105313ac41a262be7789d4bb1500a84b372a55dddd88f9c25a3ab4661a2edf07be1e907f8622e9984bb184dae99847597df5a6408ee5933bc9e63cd9145c2e67607474aa8d920d158ef00cbc273f211c3c0c89a0ef4e1b5ac01a3c809d5d4552496a9ae8e40d46b92320dc584f47dd75028c0cbd813536f4edf9708a5d31128c1b8e09637640602d1b903ca8e6a1aceadc7ac3ec917d3858e875bf16808b3d79c6cfc9503cdbfc0f1d83a62f3c5efaee99dceb8525868015fc9d9d1613047ef6b52d375655e55f602a38fe69837551b3659893708753f8680d8325960c873f3ec25cdad1dbd7949995d5b1ccc1f9088f5328a5785e818835edab9d451fafe54d7934dba2a36f38d06ac3a67f3f4150f7d931de666aabb59654614a8bb5920cee1ad812b1ec034eaba1b0671184ce48d48d810d576c019d7df56dd0bc8db0992a8e7f9facd2846ec43bb9ed77417ba25a271c9593c035c80777f1cdf8f2c89205219e97ed0f21a5d1eb8333365a535aecfc4a49c3afe381ee4a212f90d5cf030c2652d1ce925bf297844a77011a0f5f6bd37a9b46a1465b4d49d43d5c7a32e5895e31a3800b013917c07288465c930d153e4bc3649c9797f45788ad9b47b956810d8fe80cb8dabe1a28cd7b347de5bb273bf471da1099c1d5bfa0ab05027f557f464523e084541c62b22877f9a8f573591ae3bf526d538634a4d81ad81f95ecbb8a4c827fa247add3a1095e0041e8aca3c485312bd7de32fb865c77300b7340034dbddd341fa2ecc91def376b27ab0bd07ca6cbb4004a48bb8e195a2af342ca30a2a32e5339227f45f22fedbac3909b79161bedfbf6ec8f1989a73173b4c8a3f54e429693a6e62b2525c28fb0677583209f6d828bce79655ac66dbc5d59b9e59eb135606007f3002c95d107d81ca8aa0f1bb9145d22a9e34e27106fa842333cfb7c02fcaff116fd0c9e0d7ebbe3e707ec976c240eebe83573dcbc8125e064fed777e9d9b298a627aedc7e41f3ab8bb06649e977eab08c3a9a7dba0cc8f66bfa42b760d618a1cc1fc5a952ce76bd3cf5c6eac6ec0e4d69a23e545643cb23086c183be682e7a2c4f1b55167c2d2681db182c2380e1c9a9a4a1a8c8dd2c2ade69b72527c1cf923072433974707faf410e8dfa19f698b82111d08291e8379767615e9cf995c182559df8ce34ed8e89e041850b6ce25b13d39c20fb22d1463170ce33399066be16e6e1eb736fd7333621ed4b3ed6e7325b75bc56a196feeb717274256e5fa531e15289f3acb9a95d230414efb0fd17d8f5ceb217218e34356cd2b7f12d376098899cb143bf7fdf9da381f8c38247e3f5255616448735247e8fe386a04f451f766e209ee647c6e31241009ceda45599b56ae76641ea882c48f3d02384651f21f01a3fee33a9caf6765b37f1f886100496e942826d1f4477e646fbce9383851bdcf5c845f2d6b06e7ef014544dbeb9eb34b6c9bde71decf4bed5056970e0c48ec413db72ffd87700e9eb34f408d088b62cf26e2dc51c68314f086c55c4aedcb47a88ad263273340f67f2cd814de119b3609ee02ab1df38020fc53af7934a24422b79c26a4f004640cc12b52207d159d4ebe5340b89e6336d4788459b16d9e0788b4f72922c01e047f7f5b8b9d6da8f787e42b50a642ba80ce91b9f2185339e289db3c0e35d1c9fddb316986334fe20e4245912a651e13e5decee22f65fc3b3c043ee36bc8e4957ed4ae6f1e7ead07823b7701f3eafe7e25db0e27de551e08f538b489425decd121165a74a736793d5561d19935bba1ade8ef6b6f230eda93d47cd2d01e7f79fed24ffed8a689418e6141ce81d64d4b8784ac2985a49ba245bf3ddfe07813e767801f7458cb0a16dab6600f1da1a2733069a679a11bae90a366c2e1725b0f3ebc5c86bf8af6be5fc0df2e6d1110cd2cfbecb3fc7c56a48a09b3b73c7a62d330ba2a093281185045c6a9f474b21c4b69674953b837440c45e3ff53360903801ba233907b0db6e6e5e6987c8d60f15e0f40f0acff27a4fbd225760a50df266208adbd6518714d81704d9ff9f80b6aeb63a44b0054c64e8b632884a876e488813cf2eb31ccfd9c8f2e3af90ec9aebb09ca5beae9ce1de34d5b3da3e333a5ad1f933bde7df48b86293a6258289c5c7e74dd7ef2fc59a8d215a95841a636dd506e46d1689c329446b6044379f1f062e7aaed3c6b00e4def8d2dfd45ce70d473bab41c24b1f852aa3935f6bddeb884236629c1eb04dc67b4d6e6c9970d80d594bf64bb2712594d1d7ebf62d4a05a9263844a03d5f8d32b54ca6ecdb0e1e82cdef6009ddb94b190cb1ed62f9616ae60324378f9f7a4335068b4ebb0f737c20f3f9a396e532fd730477e516edf223dcd03161b297086688fa8624c1d2e1557f511a0590d794b5ace2b168ed54b87969d27201a0493d62f9ac2e45bceaa05c1c4d91b27ec6ade913d739ffaf70c2d17710c45e061a79692fbd33faee512c15d09d7d869017856be6d45c87687c070f7180f00ef1ed1825a75f54a86601840b3a95854b61168327612356a405d4c644408c86566ee6f331d7c0651016015e0a3d7f4d6d5a597c0934c239367b3cb1daee972549b5f76e9598b42ce369d597acaff9e1c39f2a7730aff47b1a1b54537f9ce4c35d1cac1197a0ff7d598fed80ef3586bdebaa614d64828170fb34d8337f465ff737b14869e407d903d7617c0f099e287e8a31700be8fda5cf543ed67da8bff61ebe50191b4033936f934e00f5650652f0f7213d30cdd434d28b15e28b64c3b2c6a6a89c5de50b5174064ec75442e4c7ff3d02702eaa51565eb8b421b93f299d1f9f38870a2f7f6ed46c6cc338a5e0515e48ecca29c514404823300bba87260bd108d0bf1820401b5fe199f6e8bebeb96944e4632e5d4d63e8d3c1ece2005b8965816d9cea026de67924df1db0202863bb4e923f2bcea7abb2f9087cda418f4b0f44138a608de0591934648e9ede1904a10826b84331a2c526d9da365d85f154fe7d098ce2e1092fe7004990c79b9158756f21d685ca3428a2419ab3c1c9efdfa32866e5d75c152172f2199e77b8e62a8e49ef91bd058d6a0a583f32c63b18282312565bcac182c1f458052d2170a5338c2a0e592d1b329ef378f03999d0387b01bf7b24b2e643d5397ce2e09a2e9922a37716ca5e09ea4848c4c681ea22cbff457a7b105953d6053c7adaaa832c5c6c0d550aa4363c3ba3af514a5650f5e87a93fdcb322fb2988ce9a2ad5fdd64a0e9caa98678ca3bf9692511583f56ae7d3251d21b8b41444454145093ffc9b5a81b5ce1dbae06c147b4fecda7ac21b674ad58f21744fa4e0134697eec25dda8826a3528c04ad0a21ee35bcf4609434b9fde65aee28a67062d118c3c424649b66b263442fbfae67a5a74fa4bc4922d2040e82ad3fb9393c5b73d04061d8c1a6c6f577b12b23151f1f7af00e6dd5895bc6e00ea9b275dc64d368f64aab74a5554aa5ca6cbd558ac2390744af32da66be687cb546d933ada7947246fdaa516ebd4a9bf2e577553729ed170db8391875385038d22645cb6f97dedbfe5c292e1fe9cd12d5fab9fb07ff7144e2825453d1ea80379fd17fbacf20aebf4982a7a04f0b6a00a41c956985a795ffe6ab019f17e0e8a69660f4091eb23fbc6eebd2c11d067ad82c8fa6696b284f4c9e67a95fc5cb84eb4408d6f8fe4a2116aa964ebee91d727510de285ee416ba40bea342e93e343ba04bc49a10faead080e3ed75496a1ec8737cbd57ebcdf9226e7dd4105f491a46ee15e9891a619f0cb309b9dfc80ad36ae37f3101f69b5491afdc36262fc9331f5973da2ff23c93ea008890095d49f4282c1b8916195d0575a95bad364d28952150e01fbc45f442b301e421e11a72e2352b50996db803875fc0de9694b6251c753e9ab34f3b9365572a5dcfa8e5f4615f007d02306be1a5b23e6cb7984c9d9a7e16c05ebf4ade78dcfc632803626f2cd4ab63403604295702f746bdd68dfb2ff0bc0aeae75bca86ee79061caf6046ca5b22985628e44a879bb01cfc27bab42933e90b3c700a900fe3cc079798df5dece8735654a9929bba1362e48040522af83cd88ab50f8e4eeea8dad7eb9c69618eb4ac60117e47d955ce9b8d3f6fc9954bb5f5a00984bc9f9b810dac82352e8bf96e64dd72445f3cc66cf3fccc98015c809386224961c146a766d122bb7f9883ccc2810f554a12bd4898d7044e443af40b3d884ec5c68830f4ea40dc5422ff35dab2a8f00a0c115ebc4bbaac22849d7c71cd25367932173d3e07853587a189c9a3bc7b662f90f976cd6436e129ce5185292d64ec80c4b6f82236881d2a71dc1ca746ab71e86adb1705fb5494b8753087ec07e7fc0dfab1e7cb8be6e280d54e041233b0cb89d06f9582eb56cda960d6f537de08c3e8bd5a3549c64838e2e2a5b30fde6044e579af9ef1cf88ccb90dc69d0e149e6ffabe612b63b8cb8222b0dbd5d5fffd878f4c2f7b6a2df3e1f6e1c6a21db42331f5edee4751024ed10cca826528d7eb83eadd1dbe990e111047d599ee6bc71051738508a18c8c64ce8f41555e0d4557ec64d2d39a0be5a80cbb627bcfc1c5d751d11c16186cea78cb5c465063dd2db892701b33fe27bdeae2460d3248600679fcdab86c9520545a7da8852224286a4859c667e68c8f7d199a8766a2edc065411fa3b116a8e7b0bee218faf938d9a88816cdfe8b76b78c2fa3f9980dbb096cc45892b03028e8b651ac69e1c81807fcc0bc4021ff2e409d53654f1c00d4915022e74089c8ddd922b79b7fe07cdba2667c8759cbf58d152a25fe2478c96c49ee044aa77bb53403204bc48c33d9a5032e8856c5053d689380d478f038983c7523873955758e862cef5db00e1c687856408b48a437c6c7d8eae0518bb622e80fef082cfa4383b121bfc0d00de478079c03d801b6bc34df3129489d0bfc1ff91214a260ce88aa4cb024fc5885ce8aad0a4c61af04c220f5118e117d73fb871c6c2181bb7533c1ee86ff04cc6cf28a49d08e0a9505a3d11b9cea7f75039c8d2732c2847b020396e2d72c071216c04fc488f9e365c2c0eacae40171ed7a9ff2c755098d6503e0581d0004dc1ae8d8c2a3771e9999327809686b38179647c0767d5aaedd54469c1958294ec0cb982e3d14f5443c0fcb3744635cacfe4377bc216629be29f3b182ab8908f734ef91f6939176d27a9040874005dd900dcb59b2caf21c1d3f4fa906fe65c88bb7820c5056f738b22620be7288c066d1553196f702f2798b0804af34d9230b5f8ab06a535016023a8a9d6c59361d7c43319862e04fb00b51974413e5ae5411150be7cc89ce44bcb833c37147d04be4408628699f86c439b592355a458fa6110ad90a86d1a930e0c644cbae2cb003f0670aed66bbfe47a3d6a7ecc748e80d6212fe0a40d13ac5fe8ea97277d41e958431779324a19bdf99fa5cdb5468e91356cc181fffed5d640240b2a964c3e0b290b8c8ae16d628c70c03d89913836231f1b2b6d88bf48616f3a77aa46911bfe9959dd50a3c51b5dbff0132cff2de9c32a40d2e9fab74d28780341921539912e1118ee18a3b440eed855986fa448c21900a04fa6a7f3ebe888e9006b7e6a6d7d4d1250e2ddcc595c83a2ec0e0ae291e03f123ec46aae68c2527a0ea686388fece56954fb32e70ba9ab8a9d04c6c0472789636860691359e9d8994ff02680b6a4a1015e2fd7af115bfa1f8528a7d43495e902805634c116a207492369234491b491ac94a1b088aa4086d20aaa2361455945255544a45d54c1a5d15dbb00bc5140af04fc33a825dfb7063ff4bd63b4828d85c1fe3029bf62f838bbef7f4df176a9f3870b8490171044a5509314e4f8a12166b33183e7556f759577cc2d2e154871b2050facac104eed32b6b5fb4854329d8c32ab63701cb066225754b5aa9bfc78c9084c2421831e53c741b6f6405a475ad353f35e10a161ae4ccf2a3a7313b080757a6ec36bbae7a7fc117939db3497c7aabd16a1b917bbc190f78f1cc2f66b335387fba19273c459c2727bd0f521cb424e8d481a6fccf65724546ebde2123042f6802840faebaa2a90f613b3802d5742aac398fae1ab2ac1d96c08cbf2c5d4506f7912721860f30480c359a34e1cf3a05e197456e7ba18cea7b42152db428343961c94a3559664e5e99d202ce8d6a94754e7dc2d4c38dc207b7a4293489f8922c4ab80b2920d387ff003b91140369443682eec9a4216d9bd68b556661ce79105201641e83550da2a484abd164060f7a64083c1b9b6711faf705663bd221b070f65fae1103e1a1f813354e4776b74cf6183d60190c6bf9cec58381664c84be79541492674aa2479f50a002e202833fc7309cfc28cc73200b89ec491fb41020d70eca185fb78913d7d3080a2ea6daed992a3539fa191e25e6d3c8bdcf78445210ba2e3cd29bec9601c5e625ede584e962575f96497c20e27ae015121de650178895bb83f1e522c82cf64449cb95106c80fc014e9e8ce88c9a1269c26ceb9fe8f39380a84346b98a42048199b4ca3f289b9a7fdf58512bad2c369437af33e526e28d345feab5a1c1793de18e6d3b8a3778200662f716b83d308979172e5d0101391dee7397ba66876dca3fb75f1bf99210a294815ed66b473cd21e11b7ab517024410e51ce8c3d8123b4d1f3e083a867f3ca1abb060285ab53bd8ba0ee7ee3153ef7b513479e640cd1b86c897051005ac06addc0509a295c7e4539e0b8ffe03c4055612659e968a188f35c62cdf279ec68bcfc88080d0bee6a8422ebe9be614409ad2049986d3cef03f2381342abfe2e5de33d471ed026e58de66170841bc0abeec15a59fc4796a4fc0bdfb8adde0b6a3676f9b40e40f16787ad873cfc25ae3e544043e4251ccb0d59348ffbf041df1884f2d5cc9cd4dbf19a25add477524af87f9286dea20e98cad8bb0b1d81b704b2cfbb5a320a8f2e8312412e002dee214b3a9d9849b1f36923dad107878baef41a6c2a9bf1d9c25da0d794833214c4f55d89c78e4fc1f552169126e7e4f57e52b29b3d78966da7e15634b1514d3f0400deb2d083211fe5468b2f0a46c6f5c231ed31d9df45f89ce2d1eca2cb71813c51366a65c491e0e71a90c5b2752275b3310344f86affec73dde5e532efe951a2e92b679dd3c42e45e9247f5ca930d1bc4d82b42ac0b33e7e263ce2aa27b706e8f089e437839e2ebaa8bc8315fd5225a305db72f94d4fa5cb32f0372ea12b6150b07c22a68956f515d07a9025e22c011143f341ff5e4b2b065632b7e2780a3daa733482049ae738937bd65c3159cf87158d8ab0f36933727136882a83b1dbcc72287ac4ad36c0d6f2d1bc7804bf285fd337417a404d935580c2f52f903d911222b5f57ebfb960bac60d8c3101a7f73755e18fff5e3059dac16b8af3b1b35fad4bc6af5a140a3a7c11361063fcf7ff4ed8f45af3bf36da2cbe1f7633be06041a547eff6743782ce1f8dc81799da6bc8e03414fbbeb04fcf35c342284f499544b8fe8a32d2e3cb91e566990e5c37108de44b9991f5039423bc65aeadce83be77a10cd5f6faa63a750cb5dde18b3bec0405779d68fb736fbfc20b587c11acd7dc9b4596cda354e124246149eaab829bb6da751734a7963b8f70be21a27f69e5a49e641453dd304d95cd4898697b1853a550adbd42aece747aa2bf739536663396f720fc0cc951331f015b25e1906979853c21ae579701f5066ab4851225086e85d123ba6a2a926231d0e1cd5358f743c8b02c8eba47cd08cd84198e75020cb3bc704f09314aae9887bb5d213b027bd776e12af9980bdccf43a1c5909d4052ebb0d898a15cfef743dfb6e5712ca71eed94ea773a6d4a80750c0f21dc92a4b1ec37be21505fecf85d2b4e21fb03942ffa742f726f9cafbbd945a6d43ee55df58bc36f781becedf4af4739437354dd85896913eca496865acea4df3cbb1f4e69b346c765fccda1f50993bacb6f0e67b36dde127ebff1b417f4d5d104e0fb020c715799140516077bafe19f646e98f70431ade9f79d97adc723d14cea153515d5eb20f8ce036154ad92a2772d536261c8c9f85d3d4967c348aa5cef4fc8ca9a4ba95e3aa06d688cadef8044b922aa72a06c376d7656afab0952d64098d93d4638ad6aa82a214213d7c1106c353ed8bfa5f6737579d38f4b8e1719e5beb47959edcbac82d2e50437c4563fd628dcf28d9c0517ded28ccfc1807a7e3974e4ae182497e79c4a763853c9572edaead50041b6bf945e16a0758c8321f30402d8892f5d07cc0cb6309a350f86123ec822071b57ef57e2f7f2b1dee4a9d36b638f17b6a63b0c75b31023c91b62ed330213d45206bba883e2e3863c227b56b36b10063df3650fc0c9cc97d80a61fe202b88d88970e2db163228ea8d0eac60db145076374e8ed881c383c440c00e342c70bcae2aadee77c82d15d6395a403ff666cf4daf9dc8bc65b4d88a60c8a3f81bd63ff376d7ade5ba74cde37635c25f8a849695d93ce7247710792cb5fd3d1ded664810ac2013272d35a78246adae883ad3c1083379f4b8b3dc7a4703f11e2c11088511dc1d3a75699750dcede81bb3370a8daeca66d97758c6f6df06a2d7bf62d3c1cdce24bf4abebd9a5711d4c78468b537fcd08161366731f2cbd0d09b20943309cee9ebc4b9a14332c0f349ac1f4bcadde38de82db1141c2d1868fb7f2c421bbb6651b9d6393b11fc321ba2fc5c19166c7720698016c8e3dc882380106a4f72d40c6501acbf333b04bc6bdd227ba3e1f0b60c609afef7c635d212c817765391a6024d89ceca24e81881bd1159841ba21930c6a3a8d2b39e7a30a8ae215cf529f734ee25c3138cb65ae392b5398affaae2aad58f69ffe7adfee9a07940327e9bb92540c80b346e9e7c8ee99ad562e328b98b85e029201d694f519b1366947bb58792711df41d79b7533468cbc1880cff5a0fbd89c4dd24a65489f284fec4cc0ea0a257a3e87bb9ef98a014a21345b49174bd95c814cab4e788faeab1348a40496db57a86c4f6b128b0d11c52d71d3c01a29ab8c22707fe3a5a9da93f3cb0ca74022e8a19982b03093b83eba707ea05a224088a4b720f8387ce72a6771bcc1bc5cb27098c6ce554524db99f9a8625e750b8d8b44606950d0a4d1bec1c001e94ee66a517efba3522d03862e0a278302659acdfdd7b9c0b78656194282aa84feb64ba8fed48a6c2424407a78f5d6fb6e9e6b49609e428063cc545512e29055398c01ea105672dee97fae015f22f70829788e15159685b4c1c66378257413b1c197fbef8e846a011ef9940ea18ed3556949164f6545c721ca6e41d98935547b88a33d366cb52b68bb3b269083462de1b8986aabccc8bb569819370f4fba0139d76804c40cd1220d7a884fbb80076cc6f542d80948ca30277bea3cea9460d75068dc39b6e50b4725a9860c47e65584b05a43dbd28bb1c0f747c9e1bc8d8459de9210be4fb9793ef78c55f67963f882810f047f44933150813853b54bcb2ba60aac1147060426a05b5c21423649d68d7aebb9c915c58225fca39fe57fb29e62999c951049dd4d8d41c26b32788310778554df0d23636ad76dd6308d2aafcd8e7f8448ea02b6dd07504bae1ae56692197e6cf56c6718f529fc9f46600e02c785ce41a86dcd80902c871926de315462f864f2ffc72e5574031215cbbb6080063800efbe029c342a704456ed999949c10356ab0c4062d23bcdd2dc01791aa24500332b496ca4e0aaa9f47f54c60efa50c6981bf090ba3b8c243bd9dca630f63f05cad1bbc4303370238750c8de5ed5a9c5c6de70a3987aedbf70b6fb237c4da0f49a9f8848ae1ffd0ee9155151346792b24a669bcd1870f0f38603f4281cb707f03097b7f3d096401cd2cde57aa8e5be9f6190e2cb17bac04440ca284f257fe06768b03eb2713eccbb2515e3a3b3c069935a97fb4d6b6cdbdffbfcf33573b5275842a0ccf589ad0da7f53492bf39062815a62df0b1a60ecd6774b3fb4b842639944a7ebea20ae6982e10856ca10da2988ff5124b487cc87b75f0f6adc1fdb46fc3d3b1ba78329588a00bcfc466c77d57943d4c0516cc11e64627f3e1b2b85464f57bd1b983f905f8cda8bcabb608479f81f9968bc9fae6e2e2ef00623620f39e9bc3097defd28c1473c799ca17c40c2b92f0a2621960f71623bedcf02aa0f9ca4856225111c96a4457c01637bbae1c30c0087cf0c749f61fca2fb7969d0cddd1a3a50663c501c9acedba3ed335a82935fea283cdd5f454fbc2f33dd4fdb422620ebe6ae632bbc64698d781992cdc5a2beab6604bcc3e0ece2fb5e4ff863f0296c8e44defb8d9202ea2d52813600b6bcb1a71f84dda73f7bee2fa3e5f309c7f0f6209d5a6dd19629531a1d1e72d1eaab1c1f3118770b50bcce588db35dc73a35c19296aa61d628abb4ce24a89825c843b3743588850e19ba0b8ff18166ad4e6a30448174f27a98755fa11010e8475455a4e3723e01b0c5ddea4566fd5e9e05b982b11d3911e0c5b8865dfed03685d241b65880c39dbf19006f08d487e7b4102c82e6ddc08fb1ac01bf318df836f17df0c40e1c0bef028195d80c10bd0ae603ff50effcf0564a0b4190ce4d2d1ac7e2bf7d6a11a7c5a4d45d0a91309bfe94de2df1a4113509108c403f4c04137228d04820967043a1a631c8aa56cec346946ea56543866d65bc78805cfe82f0cfcea15797b6578306446d954650e21bb9bbe6ee2bd7937f38085ed3db23b6f42ecf327e46dc3a699862f08a2e93d020d36e0f0acc44c3f5afa9df6c46629109098678336679afda79a1a9a83f1781dea3632a018144f0f1a61d806c238219ec593656d616359b3c22c94d90d5ee83eb1a3cac481d700c861db09edd6c1cd846e836f39a2066d38652bca88f816bc9a1885c2e9475d1eb71946a5c919ff22f18bb65fe791cb6f24601d1d62a586582cec339e48177d3e9add93048491093360a274539c59852b9df44e573e69e64b7977c2d37f8fa5c2e47aa6ea332f35b9644083ee71a99bd9cee9576b2b70009a4823361ea4c7888479599acb0ee249ae9992c26f169bbd15d786c8f08ed61e99192194edc55f511ed081a6bc32e312c4cecdb097f2d7e2975b84901f215be6fd703ce31f4cab36890a0c6d06109a7340724da9df56b898b9c7d7d90f191a60dab7b3932f6f86011674c7c220113129d25c3cd425c89392c21bae3bf6583dd99066f433ba1493f9e0dd7f7289df22846021314e53a5bf960b7d71d044aeac3f9ddbba47c4275cb3274a4692d3860b2b91e8300dffd893bfbfd818023c82cdfda33fdaa78674daf6a4d4cd907091e967f3875374cbed2c21da2b0a288d65d5e5455591affadf00d9819798326338fd49aae063d6366e695d1bb6e64a82770bce859d14b63a74d439af562f63e69eddfb36dede38aab038d54819b2adcdab7482e38c012ca866f5e0f97e7283dd347744c23f97077eca7d6a68c0e716cb25ca65f27ae030cb85aef18d4639f42bd92ee1a0d66c0706c61d3c49021f9194d3f0b477409244bdca9ab8fce39550da3cea183854fed490f32b093c1045e35f7fdc9228653db110ddf036698f3fa9d128628641a0d120e5335a7dae06d8fd3c3c75b80e02da0715097c37c9cb72e96ae6870019e3be990055b66473c6f842261f3004294525bedef31b8c7bd5fcf0b6998d7bcf584c2e232f992694eed96ce3f255956d3f1815ab1c3cddb5993132dbb2988f2f674611039e807466144028a51d16243104192529c9888196c94518a3aa6a3468240f83d74b928f2c14735b0ca8fea5825f18803c776bd124dcff12b37fdb9d7af8438b989f1d98f4a342e0ccfa08fb7b9beb61563e652a659ffc501872bbcaf8008f8a86276203177fb0fedfd2d91f800a139c6ea9ca6be99c05c2c689b49ddd1de6dd9050b35132268a4c2f832008bfeed49eccbeb1e025f14f52c1f70c51506254d3bdadbebed6a7ff044dbf106c638091f34621a0fc45d1011579ac9d49e38d50a3ddbf7b62e029a42c35e9f4cef267337e3edd89504b58f4046de235c00976b294c5f6fadc2d641f4a43b5130d7ff49c53569d5ec8cdb58d3cd3b0eb6d40a2d0fe9a4712e1d232ba3a1b95b28e590ef7128f71969fa6ea59e9e3f857fc8962e9a64cf58efc839675bcd49526a2f8bdbff69db810f7decc8760a509439722823d3c03a653f6325ab3d84191ae75cbdae10f9bd02b5e4221e7d5ca2c9d325ba584061a11b6f62e45f5a26a9ca431baa62330849c35b534a94f63c4317dd016ae71e67b92217e7e71c2f4ee32ac26985e28e47a184ae0fc162fe30cdfbb94d3dbdabb8ebb3c0546dac5c0c819196f1aacfda1e6a05aa36992d01967cc0caedd9840a935d86cb5ea6e200d935177b90596f6eec0d940b27c39e9080fcdd538fdd48019fc4be8258f6e2d624de102fd398f84cd3bf2c37c2c7e00b71b33132a28e22e1ec68af1db0869727780810f3284a5f655bf20d50f82b022e4510bf3da8c43ec8482f55c303f890336f5655cbc3c406bc6b34201f97f4cebfab13de9f0e37c64ad3656973eaa52d71bf8e44297527585b138be240d7b621f58ff8f5fea0acb3fa28e3f1a478373b6e57311311d823c71f9fc3efabc8493bdf4f2796a0fc6b487c8c010ef5a3f36a4cad246e8e1f9363a589d6fe96773afa99461c9289242b8bc4a10716f63a017be8f90566976d126ad9ca4e7f59503e1ce67cbe8cbbd5e81cbfa1f3ed60d81e174933b52fbfef4b7441825b661b568b43f717a46f02143bbfc0fcd6716e367783b2745ab6cc931b839cba18446151b43f745955c6c95c49e789d2ba6f0346b1b6ef1c4784ee188116f5c4799bb614151661b51d86a72eae087c6dd544bc7d1690bc9314f703ce6ce1127c8d8ab3bc3f04cfc77f188169b5c1ad7df564b1b1ef01e95176eed85104cdf45bd7b406eec1e55a0bbc541324cbd204f3e938ab640b114598f1f00548e978ac33771cec57800ef248917761433e66f8782ad5e7d35114fe1c3b7ca27c2286c976558108ebc048d7c2a6cabaac75a3e92d18a61bbd1611c724ef20eb62a04e5d9b6222b220d069189d0af6d3d6ac4f03ade2d4536ab2a569f0c41f79f124ab11408b10f052609175ae7a3e6f9a39ae199d361f65be399576465715b7edd56bdf4701059f6f944758ef0e994e1122d95921f17c24be5b07c88084fa94667f3839f5c5e0b2d8bb80444680e329f9234650b4f2ba775770d45c7a08e1967613bf3601629ab053f386f1a11506c32b4ae8849ca7ac1817cf2ec19c3347bcf0013fb742ae1415559473fad6079c92bc1a3159e4506678364674a1cda705eb116bb3b6de88b5e0bb92071ca702ccc70896ee67b105e440facb1b150d0c9775a9be47b2c3e66fe46d6e328d25949508235c4ce3e22a550a8764945fbf304d3051a7667402fac93962d45ac99174bc3bde0f460d962bb5dab097ab93dfb150acb3ca73486d380a1684a481b446bdadd7aa48711f15b086b5ba176779404240a0b3e0f862f4f178c7a6b6a2d90066e8c463a93c411671092ba05d9d9d4a2805014ca53347eca9c3e898769fd382d6864f6dad46e746c420ba8021bab84f43eae34c02bc562d0bc8a54a2722d4c82b98233d8138e61646892e722f50fc0edfde95cf6978c0a50907a6d6b966c2e3fb0325e5c85d2231f98a3fb86ce37af2646a4968daaae7ba4fa266d4240e0891feb9814e964920310aa515242b1e6cb6b7cd36f1f6b821092da60098a13183accadc4365b578107c32b605836483a4b5fa23349a99278fd2ae6fe3cf3ec3b75097a40c924243b4a348c3bb0c05c8d168088b20aa75aa3c2facc119bc9e00c0963a44aa938bc35eb019ac31df403f7a1caa55b0bb3dd185b59fd93f1e7c3fdb4cb346e86ea9b14c3b0288c71706249ca7e2065b00ddd20732ff972198d4105b83d42aae3e6edef063464a682c4419b73edf5cf5c38b1c9c1d3c08784e23b7aa805f80d9745b68245d097613f8ae9d9c8f7b872f2565e7edce2f93bf86affde06564f4fd41c5ce2037b0fd86324fbc74f05dc076ad34c54b888b17c6cd9448c25041431d29fa4fb3a4402e48f8df081d09ecd1b8da82d7e9aea8ce8b08b1af0e273ed7f096c441798cbee7f5f5a805b725ab61825747dcfc29a5d395726915a4b203e50c189c8454ee701d9d9a9dddbf3eb02748a3db3e2f0be2366c6298e8ea678a1312fa552cbf3098329a3b8218e85892d72ccba4949c38de28bcc6e6042c868c5442055112267f17bc8a4c8ed64458c5c7b77c5ae244ad5b794eab48873ed9c7ec109b0956035d851b6563d4b51bd943e1c4524434e42de11ba6105f69f7b8c1750071ecb8b5a3608e856d90e382cefc1513b5bf22383893299694d35d069b9681f9c06e8e8c70e3022c1dee6adda7acd01bf3deb70c24b0f6cc28de17ad0775380e2ccadb255362a40e33970600488eeee73719b0444015243cc7a1cd07d2b55c2f2259f50f320e3718fce0479dbcf74b3580bc33bbdce530e399eb3e62cdf079909cf260f0a22bdfc36098c12a8220f4c7f716d37fdaa4f7d1a0e39776cb0c8bbcdc4d81a34b702e178d7be8754365860609b21a4b00d16d8fb5273334229b6d85a3d6621fa999148df74b898dd082d42414ec8ea23b3ead9e9ffdcff4dc7d043ab49f9cc133938143c548a71bf76a88fcaf1d56e0fb11da50ab4956bd8bad64d733ecaeb359ca3a5ec350ba62417189ac548d8b989bf942b2f801eacb04716177fed353df619606c5b323218d1cbc2f815d4a1e31a6a9e3c58fbe158134bc52ac48cb7653ed07ab3f72f25c36771ef99b5a4fca069e4e44d8a9e473e241d1ae16b3255f51af1217528085f09a696a55ef715e8b3db7370910037838f7769ba029ad505303bebfb37ca1bebafc979e0cc8108c72662762b8677f8bdbb9945e07610bf83e27775ef40e8c6087210839902f9517431a191af7925c1aafac56f1a4445306b46ce9e2e556a1353321cc2907d28284843c26c191601a702354135542a7a619729cb1a017c11bfd2de3fb9ab99f7652be9918bded1677f93e6675a7f183f50e472580afbb08a54a43ed4b8e6ae58bc00e135085562b74c9643a5a487cc6db082e9b6d2436e4c36339046848987b67c00a6978ee56fa03ea67339184bad83d8fbe5ad62e919e66c24152154ba4e70e39cdd207606e0e628554fe86f2c545e32993382b4f6dca0d2a5f9fa197f4e5a2542f7eebaf64beeae66a20cd45762d8361174c8a26fc5ddaceb5c74cf3f06ba9118d1fad2ad101afa587dff33e25705ead00610c8ab9e24b2bace69409bcc4e3a120ba477114bba1eff5ed72e9c6eb5f8e20291724cdb92e572e6606a237eec113954110e9098845ab3056be437c1a7b45aadd926c8a0025491bd89fb52a5c24bb8604b3c7ba6d68b2b9281babf06dd20f295d61baf0053c4e4929e75745bb2623d6b774e38d75d56e6caaedc8ad631e9d0817574e4bc4c29081d9cd70d871c9e682d0fda99f33eb963a1aa50a238a61c6dab762bfd47c84057a553db51ad64a84b52e151561ae344599f52c3262f0a949a36a7dfb14e88bc7060b0dc2011c8743e6cea7c62df325ed98ba6c76a7354ac8811f868d62e12eb642cd768803b0d05458d0d6f4bc9ac029710f86ff14adfd55983792031e2829dce5ffd4761bc2c895f8a0549a738de054c7105c44ba8c8e835a04f65a40c3b5051ba4ee55c06764adca988436a1d2340791437a2e5bb76db5f27f9410fc762679ecd6d3733154434d75b93d77a55e824751ba62844345aa280ec50b44f912e7b1eaea55b80aefd1eb9b5173bf9e449081375a466ed72af0a69b477aaa2a18d8deb06f82e73d3dbb3a4036fcf7a906e722196e259d2b1ca480670b4bfd86950ca8c9f3668a056f5c43d35c62c20cbdc2158e52917d9124b3a2065e3ecf48b4ccb48e443ae9c3a3b0bdd69f8380deed92d489be6b98ac31667c5fe0c11f7c524b64d0c46c33c00a6543b2f470fbdf5f383c76e86a4b1729e725af276dcfd2cc38a9a15859d10f7d83e6cca8f2e96e4602ed24e81df1ff21dcd4e309848426dea8a2fece8e929468519b01e5cae7a12a2533e506b5a1c1e0ea4a4022d811a08caa277df48caed24d70ef649704a2f244ae5251eec6af8850b48e3d53bd086d5be6fd687baad157963bc1acc45588c57ace944201ac77a7a76bc9641da02014568a5f550b01dfe60b83c3ea67f3fa705eb4254bb2084e2dcdad1adf6033f75406a5faaca0e72fb2a8440301a76be56e6109bf4f135c566e81c1cc0276814d0881aed6528e4a9528f3e22fd50ee476d6362938eb7b17ec698c06c3cb1cb0be274c3a8424ea2c43ede6d55d46e444929ab34a60c93b18f3aa04a4ed2d4fb83848c27d91778b1c5008a9b5c14db2f8bd538b08ed0758b42af071f3f423ee2bdd87772e03efe1d71f8dbdf715182f39d2a25bd43643c427bfb0fe4d0bb2303471d81158c6c1f68004f032ac1a1f2257ea0647c95230a99f3662bf5dc3ff59cf6d950957dcfe48ce71e3dd9821e9ef59fc2e02e4513787627742f0f1c12109661db51a4afe73fac70bacae2fcfcc0723db067f68f44bece8045e90af53ea8ae3a5091dea7bcf129fb9bba2f641536cab4bc10ea6e4a07cc16a0f4c1f35a96e072f7c3980f667ca5f6a7e7e9666e75e050f6db2d7289f2f19228996e5609f678c33b83940f07e9b14c7a8495c7e2f4f8b47bdc031fb3943f11ddfc85e4947d433f23c4ba411ed97f31f18299e19c1f43f322b57f222fb2716d8dfc9a416d80d470f3cd19749557689c5e89af6e22936908b2dafeba8359cdbf1b802b3e9f9ac5b914b2586e6e881cee254e622fac933ef6fd63e661f21878fe41efaf12c6b929b0735ed2d3305396526a0d185b58fe737ff1fd3526cdbd80b587054d361cab66a3044633a40b8322349e6136399f7a44cb8d85f698bff620b5ce413c5a6ec2e42f08d7cd503a873f7fa8318b930d6014905861050a36f2af444f0c9862767784ba0f92ed45ff78c0d10c6d4293d83b4117efe7642d50332add6721be883c0382e48eda95eb5d22366114d9380f9d0389ce464cc49e07d42eefa4f4ba8d6d4d5780ebe7a20d9918d9ad10355fcc9f2905207da9efbb8cdb2a4e9b7e0033538636b64f2453433e39ae75c790f3ae4fbe3f561554257f4126e2ef01af89f4a57cc712142837a4130d644288d1e483476b256ffa1f8bbe2b3023f7a63d4906e81c0839fdba3fee087e76d2cfd1a7c1dcef7d75c49634c16e7805bfcd57786e34f13750a2271362fbe693593d49eb38933d59b23d8cc40e1b15120e65a305830c47f6c92ac5b7a240a07a57efc9396f340e95978aba032d1801405be595480029b986cf7e9fa6b4254c85d338214d6a1d294e75fc0ec3ce91b4ea26905db2d8dcf47921f63fc294bae062d29b7d50ec2c3a90581defba839f8b3b0a471bf41bfb9b761308ba81d2b21f2173d9188ed808cbcaaa0c9a3cf7d067f7beff7bfd19843649a77fdd46477e2a8efd0a0e1175affc7492db25ebcdb263dd973306d69f70f69b82719ff764e41ee6bb23f113a6621415e49c4ecfa100e7cec337bbde794726a30d2b1110b33f2e93f0094c7247b3068d0f5c78b12941a6f6879e566cdbe65ad57292f876585819463c3c4166364f0853b51eddb2467c917c193134b8419e3b3e42fbda7cd275d5f438281b73e14ed79eee02cd224d7dde9d4d2f80d79040888a2502da8efd5896a393fb656fffbd65649ff45343e1bdd67cb494a97ad2874a1ec9419d4461e442ffc9eba63163846e071ae11b4ad8de0f1922d77e6b395e68d13272d4d02c9e101be79301733b402fe9dfc7cfb25fbc84ba6dadbc6ef4cf58a67fd382f3cf175b762236249f5852ff04fb045ae77526adfe23a190a711e20795f9eacf0020b946423e42fac0d184996da89e7eb142eebe84ddffc9e471cc3bf791150c5ed6e9afac423720db4876a33c6f08a8599f84132f567ec6a8b501611271db0b0588fe0266631851431e632ec2bf324c06e3a34f67ba2e4c4aba2a2248f805abe6449bcd8540b678c155026aaadbbcfccca8a4b5ee4f67702a0e6fb0b4e3f386d9813045e5e52f202b4d9733267c0479a58c72596f122146b1916ca8ebab5716f3162f226f486f3d0e8e95c1792b6d40437906dd3d5d7ad7bd2c9c21408d20d5bc63ff63ccc170d795b5f65bd0a59dde470df9200f69c0520ac15d2f6a505217e92d9d73faaad0182fbf2e24ddda3f96669ff51baf027ad7e81ba583abf0826afbdf1002039a9c825bed9f987c7f765962bfc25583c78bdead22ccdcd5b04228dd5580029f1b0e1c9ac0b3f459818202f0f1922900c9deb5f13b5d7481f93758a4d2770c3ae9505dbb9bf4a4ab1beb035481d046b1cb98ca3bab24f414b6017cf8482409b1c248497f028a420a67ea2d5541979aa5b25e5f1aaa1ad2a5acb7ec250dd50fb161b5c191f9f420a8adedb18907c5232ec27ae32745be1fc0b255a8efb412a4a15c2e7bd75044e694fbe37c592e6316d74e51226c30ee094352da5154ae570de3fd73326ed324a8ceccd886223dc6d31d6c9cd97947c596a02ce177bfbfe88d0eaf5c26a3815f6e424dd34d8325336245e8f151f8ee8ee31c533f05909b4e413af8ee80a0500cffa4b61480991614423271dc80c01f0d13c04d6e0c131be75f38f12859e573bb82d80072de98b0e7d225835632bdc011526c70d16a00c0e3f6f0149a3179de86c58ad74a2bc8c450eabf12934d19df8eac2334c0a4b977cb518463eed79c7156c2324f42aa7892a5a59d67234e5f93e24f1d01a05b51ca4e8a1c37dc0dc040196f4045474d6d965044e85271df9eda6fdc2e155943b0b9ab086b2ad29fea55a48fc2a67c90a948e14500c45a81f35c50c89770a375701586896ef031400960b756c0ad3b3c5e135079eab7601f52cf897cfbf941d423831dbde2872be80feb3d5a6e8e29c7f495da2ef79efb8b49bccc6f11fa116c1c4ddc88d8c91c196d6ce8b6e97191b2ab5a13a9e000d0ebba8acd44ea15aa249878ae7a6bc1265af2a7316c65df8b687766c85a021d0295a12ddc9254a7dcaec8df65b3f237f368d86caecdd445898b01d219f10d06df637098289101548945f0ef60385da5a18c50bbf4087274b3a6f8e83fafd0d6491fc6799745673780399644ddfc249d4de9d61eca7896028d2e28ae6f9280ea43fa6314212b6aeb20010cb0e96e774c3272031d7a1a69e37f7bfb300b033d6c38c63496a81591c86381c7b2ea29a024cfc505232c19420f432aba3f21592896078acb9b09697e2c38d7d23cfb4407cd657ed73ff04cf97e9900d7b6442360e3904a800e2d50ab394ff8b8667aa8d2a8d7b45b7bd80e517ca7a9a66ac2054f93869817df01d18e4e770924bbf4e0543d5182d1ee909a3e20b07b2109830e48ec3ce1b9818081ac76f8e29a800dd5dbf9dae3c87dbfe08303cee0c4f21216dc3a29184e8b3d4352957ef4c9125e85bf17d70a7baa7ded48afff25836ae2571c8a12e0ad32b3ecc02cab9a392920d4613777a2494f708d8b4c20b5c8a5213b369529e516172b39ea327406356a9006cb91782a861fcb3e0bbd8fd0cab716d92d5a8e17478753acc0064b13318177c418591c1de29f828bd86165286901301a3e89300d204dbaa79012ff7051f2497c23a8a287b8435ab612d64359efd96a0fed36ae45880cedcd41fe7d7bc3fd3d48d8b4e6a60877e1974af40783ec68d7d843a0ca46dda036eb264e0e9e6b9c7525ce639a9a174999afc226378d2e3a1ed5824861260df8914aa39f1d876644ee10d85d9dfc090283732d8a11c2bc386bf13add93784608c89fbf514187c345dc3f371b4600879a300f7136071487a417d7d500c5fdc3c86e7f4ecc8d527d3d48e688d4827adca421f53a305fac865329cacd69bc05ab83cb724cc37732266ae39474d14559328c7b48e4ac4aa2613d9a442ab2eae9ac8c54b8d6dfa7accae677f0f0ff49cd9f6b48628fc93dcb95677469a0d1effa55c7e03f97749a959bd46ff42d0f1f1846e9d54a74084792c7877a1f30dd5c23fb0c5bfeffda53e70c7cf73949fd654ec52c9198e102ce2cc809a552bac977ac4d93008480c4aa8d9b49a2cccad9ad493609d4fcdd0681192adbcaf42f3e8cedd03d29f35502836a1031f137e87be7032757fdb9d68c4e9a4c7137a26be2b92312c76b3b824825f1aa7a93e2db71bfe9e5522a63a9a836bf570342f31aaa536e7ed86f72a299ff6d033c153356563fa7f03097bf81632a116420ab3233a3e634e298117175ea88726ebc017f335f583fe4f0aa8687d008a61041fa3f446d32715cddcc2ca071d924d614a2778b2c1c079d8d113dd8d3b462f7a861ca48d3b0ffff3d913cbb0e67cdd4293e569066cf2755417bfa907096943f2b8bfd332c2507dd02d9261d90e6a784c6c48dfe88d2b3181467edbaa9fc8cdc96f21ace9a7ab5878e55d626a39bf67aa2c0ffb867b3c3c7771b121039e56629dcfa3d6fb3ca6a469e89dfa0f8d66316121bb1077b55fe855e748bf37a5b4f664d9f59877db1559888f263ac78f982f894f2aed713c66801ca12770b5b83673c647c12223dcb2753c6e0568b57f39860e0daaa23a3598d670fc35c6cdf9b52f862e24bceaba0dda74c78a5864220dfc556ba8ed3f27e03b4db8f868e63209339cb7ab2542b67a9bbc9832299435344baf635714b27e9d9052448bf01f474dbfb0c718b3744469f0f9a5f6003aea9fd3bfe76983a1cfcf911b5bc0965f515497a1893a98fa150083e49dbf0005004b56f4fb83d62fff14f0bb37f066297134eac458bf3bc64b50f7da435587b3349b6d1a8195a8c8d4e1f4a236dfb2089bc153cc419553166fe745eb7208a8307089d38d8637a786597da803f07604ee4d459a56c17511eeaaf817843ffe2b6d096fb0de4bd5cccd3adfcab60beb6082f4e1e3f1ad9e47c9df665208a42ca5eb001b5a89b129feea2ff2ea40b469626c1b07c60c61bef6107ec3e52d6f5cb32c3c977d5c6878c79258c22f523f957ca7419717bb1d1b694df63603371e356928079d65c6f37c4ff4cb667a749025d4d38544c3bd3b9b7d86844b8cf1eda4113271cde032e3ca6ea34d04c40776275540411726059d545ec1560c5f95ba1824db0cbc5917d48f13d6fb0e2a950c26de6564b87760edb0c9caa926c5d9c9de49e9a7f3fde7a250820aff32aad80e28cf525ab5a67f85732ae4840678fdf700bf410ab436c6d52c90d5afd146bfdb34a94ebed2c16fd7179fd75a09e2d7e896d3b7d0d35e2a67d778671f9a7af0669a8477cfa384cfc0c7a5f63b98661646fdb3e8b077f500c86a0918a350677abb1bda4ef2477728053a5617d360252db21e4767e92f34148daba527caa322dccd45de06347c56c12bc6c1bda8474942e92b9ddc332a1a7be7db79ab578ad23cde9ce48ee4182a7be2c1fa7f9f72e3b9169c2bc4f2175eb20dff7dcc95b5d63d22125b0b7ef5edb04b20b89a84c885f97bc26e88d109706b9b38238f253178942212c84a777d1f439b949d511ed9835a0f85747908ccae3ae638e805ded1535fdf6951006983cd164da91a9eee2b5d4a8c854b2dcc702d756c043fd04afea41c957ec441b26e22912af659622a040ef07e9305945d4365a279552d3003a85ba2f756d93df77202cd70619091d8fcccaaabfc473b04009cfc9be5f73653dc21ed8fa8c5819fed1974f4f59da49840af6a5c1b5251cd7966aa4aa22be811079d8c8cdcc113700102923be93fe540680e3054153e690a9e14fa59a3538fb937a6602138438aa4c5de1b1f517559dd83ceab49b4b59a6ab5aac9cfb46856f624d19fc9110bba0ac92242d946c55f6848e53ff13ab0f04aa3df18d9f86a4528b98d4c1e300a410a852eedd3ccff9f6e61a26c88d482a49b797d152e24f12cca3c702a1ee32420f39576a34b028c9c36d32f211180033ace557e79626dcaeb4b5397955f26935b57a12d9d3d37b0d72ca0c11c32d74edc3477ed9f4805e725ec47c74c4d6051304a6e98b829efc4d4b6375588bebfeac1d1cee0056d7ba9ee3a853c5405a9f1c318a68c1dc99fd9d920106773ef711d0de8442ae8a4a66e29c14cb6afb71fd69a3578effa48bf14dcf36cf72e86233a6943fa85c9c98a4e9c4a40f28d07c14e99f84051c8535c64103fc439b65fb8759c23e2b846284a745857201bcc1547b52396804a86b1a4cb814a74a5d582af73a41de3304ac2f3e4c7cfb40ab90c9fcb9681655741da3ec9c214ae3ed0edfd0e712b706a7414292a1f847073d7b5a1ad414057e2a83f4ea83b813e42ec3d7554165e9c14c5dde86b6152b2d33f68a7d7897944820d319b3bcb0709e90feda3cf107dce0c944f3d349d22eb3c7de0955ec8a19dc93d50bc4a0fb6eecf9f630196cf86eeb90ccd366183461a7a872c1a83a96fde4f52d83b342e628286bc8074954846300b7e5ee1d26f38bcdd58f09229c98f9794a5d8db8c1767bf500e4f51de36303ae9253f118139a2227846f908def1992a5f5b282432840d070708bafd527be7a345aa0804e9586d635472ccd99c2ef8ccf715b541fd539a5a9eddbc37e0f5d3848c4c8f05ba5ccb0115b8fde909c1ba7fc5c91af1949f1fc121dadaa221bb0ef282373497d7823245a80ac0465570144a474bf3389517066f20cc11a9182b6cf1f80556f0c066ce603b368538a9e65ba339e15efb9203fefd56afc09b6607def35297346f75363839014a52581b8df91c4d84b4019fd818773af26a51dcae6b9708a7565b2883487e5f768ed1337d264dc50832812e14d8e751cd70d1c996288bf8699b085abcb098ce72574d18e031862c9a66148c99edd429e6eae10b363c5965fdf8babf7b7053f39118761edfec4e00b3c001664417d8f6682169aa2598d0dfedd91ddc7750aea49fe74ff4e2bb300eaa8b9e404dc32f5a05b878c90be995d54f26389c5e1079caf0551fdaed714b6602b65ba1aecd9ab855982099c0a833f0efde88c9d4f0b8d6eeb3cb85d36e175c5ef72fc4be0d111b3bc84c5ea04d15916c644232739dbbaf95d40138ad3d352f41291e51acfd874e3f0ba69252f8367b444c1d42268c8a7793a056f6025ef05796766f9534acb545e55831ad42c50a301bc02bc29e8f5f4494b2bacd49ca0abf4049d581b5c41b6c87a34f3caf0cef0d1603bf56feee1a58917699b3a8d5c4d1b77c2c0ddf358603ae509e696bc6f799302bdfcc54837378200d1ce92943fe776043b759fcf74970f646b65366a83b949250249821ae18a736f1305431d2e5eedaf5ebc192c99d274ab2ec608713756b297acbe1ec46d98002f5af765865e75676f17ad595c7a93cbc902c538ca59ee3f400ccf2fe6b5c10ba285d4f1c712ac1d6d2c3ed7e88a0bde28a1491dde634402ac80bad1b96eda454f26c534d8eb881c91b7dcaebd5fa07fff5f3a00fdefb96baebb8f977b8a4d51db823e88622d841352aa5295a8a47215bd26d2d8562cbeee849d133e956ac931c6d24d8bdd988fa32939a9c75467ed9cfb95523eac39b9722c74fc60e72cd5d78ec7dfb7d86fb9aee552f9e1688162f13115fe58c5a3f6d1e81ffd47053ba7aa2bc6fd13f62618edea0198789f01947454328f52b85fcc38e0f61b25ba6ccb80a186707efd2e93683ae768ce22199c735205f059efaf1d630a587265093e22e8c66fc8ac4646bffa28e936b938229f174be3c4e27c86ca98591cb72cd3c368c994d79d72d9f283d6fb99bb3479652e3b875914d970dd698d6a6eb6c6d939dde75cb11e7cbc22431e82b4ca99b59ec964998d6f11859346e21279ffb1a1afa89cb7e8999b90d9f691c8ed644aeac379d04d57d0cd55f2cb4ac453ab230f3f5c36240c45ed9c45df4c1281e489a81c4a0d55b567d7eb2b37911edb375417f59d4bb2c8ea08a6465c4f13b11cfb289b6fba8adc158d4c05d455683255bec58636a5ea2f97e8e55d8a6bf9290eaeaab164bc4c03a582379ad1c38ab4d1de922f821ab43d66a8e50bab44231b12069d949467113cc08e3019f9021ed30ee7c3002a8de20648ccd85e2b67d0a8d1f04082c5e05bc2e98981b30a6296d312eeaa9ffdb448cdb329ecc71f4bfa5923528dec4c8f6292d065dddd90a7d46cbf71df1a796f98d950d830219609e1b2a87baa9a30d605a6981dbe143edf3e45492f41dd266c0a86054a995d5c2b8813ee70177f4c217cb2a10ab58f3dba4540dfc368d0de54910b7d0060140cfe410e9d4b326fe761df61075540566d5c4c4f74442359f5bb70e854222d3ba9fc8c4647b81ad9eb69b0a2cbdbd909d353d5ab37df09d98f67c6b7a061b9e8b211de9dcdba40e8135eec3e1b257f0a0c6ddc9b687bc5feb39482bbd873cc2aae90c5cf32692a201973ab8726780238bd7b2edca41d9b280a448c489d7e5296fdf16bd2e070f1a9142060956a678e5e07a0ad1ebac04687581d9f1ac6af858eaae73a55df3ed74889d0822c8b3b86ce517be816abde658003c0e9b7317ec624368489b11513cf0e0a584fae12830aae65ffc52f8bea91221423502a3814408dfc71316c376768c18a9fffa0bae63ab3d7ffd1e915b644a3860f8321c501cbab069b3392fa106a71f0e119505528c3bf62fbde0ced3460ad92d7ed87b3c6e42c088bf0f39e639eb00ec2e4a4a38b84fbdc1ab725c2706d73d7a41f1a3f352150cd37182a47b52813ceb20ce4a93af41b7e525f24f4a54d0b1e0d229bb238c320a3907314f566abbeba3c724e763e041a9bd652c3a55cf9359ea565f01139121bcfdc0dc1921c53edb851168de62d3bbefac81284b96a885d574985fc307e55b2345d61dad43b4307e41944260e9c4121b1571eb01b688c50e5fe5e49d859f25e4374e0f348912248dc056b56cb74a33e534cd583f8af3b659a5f4749c30eaad1883823ba810fe976afb74c2c4b53a108ade0bf1f99174b831558666310f81c8344f0000155d837bf1e60b228418c14c39a710b3b0f31975ba5ace7b2e123424a746eb7e597518be449d22b6de15c7be82d7fd01803a3a8053febea4499bb770bbd054c2e7c270bd4514480ddaca809d1310ff0121410be39a97b41a3871f9794439cf08909411c6ced3290c3cb1d1052608c1f522d9c75288622132bf8bfe14bef0fa20c32e7da24c01628bff4751f7f0a82665b4f43e5b82c96228bd02a24a602513c8178727c307c74d3ccbee4a4af796a2d467038b89b8438ee4d1ab53e68759b169b9e20bd067155434f5c2fb9ac53e3d397bc6d12e73310d309b24615360287551133ab02c465efa2b3b22a70751bd290404899b78dd3b98e7ce9bbb45be4060d12deca540f9e652374e3b8611bdc1c60adf5c6c76cdc4b2148da16243fce69b50a50b2ba83d097ec2888126fadc2fe046a400e9127e2f8007be02ca969d562dc04be4d3fb1c632e591c24f3acf77d9c4f5e99875638a2cf5be2961e72154a22522ecd665ffc19884feb968f6f216ec410d77796cd48e33ebf3d77b7788a3f514540eae82c0a6cd8e0185d18d0907105c86ce1d44b599eb7115d27febfb5310dfd52cc2e02a0cb7e58e318c79e994ad786004eb3b1f523ca33d4465341968af631f1e02c3ac3460be7749fa6c7ce840e1f64e8c5cf596310c117515541f2f570ecc515411c27e28b52db717996fe6544e60ab1ccc9119052a067411dc8e9481d6dce1e5926cdeca9a780518b5fac5412063ac3ccc0be46feabdda6015301f18c91e6db445d20a0330225715301a58483b317551e812679863ab31a55600c734d0aa4e339d129cf97ecfe9fe7f602c271d6112d9f83efa596686e34723a35adfc68f045238d67bd4298ad5cc0137468f2579ccba1b00558d9efb7f257d8563341d1a1da2581510aafcb2dc25260260647444536606bbf07e437a6c476f0103c4ffc056aa2b7857e6619eafd0224ec3feeabe37ce3d8321292c6408b05d2145062bdebf13894afa72c60c76264ec9930e99a26f3d64e787b76bee103dae9763ff55eda634967625f240b788bc632fd9d7575e2f6aba24cda818b5cdaf1bd5744930e0b62c7af400b8d16af5224092020125c82a22889dd982e02fdd0b82422f135e3ef4420b0ec3065fcf045d59f91e86069abadaa689515b806bdc9987fdc7475b2f92c017241c9a3ea0170fa5c6b05098fdf0c8045c9e3113ff226239e43f34f231f2fd11f0373be5b96d43e59c7da20578a8da4869c95a44c90ebda7ac37d581404f25c54de01400d796f2e18c322e3cc9419b4ef5a2bb5ac9bfb0cf2ff67c3d329a551bbe7cc4e578ed0c95e684eab9e17c9ca75172503c91dd432960d6f638dc4ebd6d2360e48d3cc23da15e3e92a9edb9be80b0169780acbdab3a9ffa81ced3318ebb98083f17bc45f0c6594f4ae7eee75dfdc8f8b96b24cd207b29bcb9f954c5521ec6e0962e192c5364cd03ce60de1fa66d0b84b7d9bc069b66f5f79cc0af4aead4b85dc118741bba15fb21ba91bf0ca39e6eb634ac645e0fa02862bae8b4922ca91693495c085e0807d1b811bc053bc6c0e61633a1c89eee79893c79c2128504cc564fe88c4fc8809d7f7a28e494062ca026785dcfb64681901db2a745b389ce0f8503b043bf2e10cbc1fff723d4a22fe19d574b4543b72ae73580795686c74a171636053888d84713c60983bac7a3320dff764f06c948c941fb7456d2be01f29c58346b3361263733f003cb5dbf316074a40aa1ed7c62c5ab20058da06fc0f1ac826214564cf3343ee167b1d53930934421d6fdd703ac4f4e84457fb52946871ae077ed515c65870c1d6b5e6ee4e880ff384bdd9a651408df5104ba332c924c85158baffa6e2ed27bcd5bf5b47ac4baa5c9ecdf7290316f89a923c754e86043defd63355396208fb9239ddc65308a19d8f597ac13903cf3b6df33a8d3f853bc007f45376666ee6b65ad66af002389761bf02240a4b1f515d8cb27a6f03c625ee4cf9dc9909d6e0999f737cac88a8ba48f4becde299dd03bb9a7b761ceb554c76511964788412f0608e151359f6852b6915ce0d49abb018b9e10a4e6d83d3f72a2fff86c5f7cdfd83af78f91af0f46bd8d9dae9d48fd9a90f359bf2e93f57f1505ebbdd54a029e58f6e2ec23e07a603fd68356c11e0eb5f785a7ba23c87e8bc26f963d7caf718bad5f0e3d8d05e0c709f5f9281b0b3ae0107d59f6ecf9898c287e2b8961f6c06f7c3a760e90a50eb7b5ab6e0aec2fc1a4d8e2db89e9261934dadd3f19b85e61c4eae24d7191d2adb27898dc945136071057599976091492dde44dd2b86983e2537445494872e220fc9741a45360191a7f5b320a7b8bde8ba68b6139a4747611eb065c7fb6dadac758c97fd0d2ab1a8ef8604afff0fbc3a87d35462ec8fabd1cef0408096eb1c9631e00f0b1d9e2bf494a8fd85bd92237c445bb228278a7199faa86fe1973d2251693cfa28e7252dc56921a20d41f98c3750914257de52ce6ac24089c8406fea93152b9c79647918897e73130d4a1e172a6227c525a64e46595cfb6188abef9866dd12a2a57fd28081099c7d28f5594092c07fa83343f4307ad2eef66cc89cf1f7ae99b30b644d0da3780991aa9446e7243364d74dae8c320e3f848fe67730ec1ab7173f2e4f911c0eef7f6b48d3ca537885bb73e62f284fef7a480c406a69782f9c1318dabe8e154f51c6ac35a54279e941af408c12a24448d9062d6a3f0d077e482ca4c75cb14b1a8eff3af92636b274a8ec74e34999a4537d159b16610bdd345d4052bd9d3aa7178a0c15a55de2519e390eb729a60dfe9c5d5ed5ea56606c42c752cf0b603693828b9cb3a7bf412d59a046ed6393748d32c2e8d66e09a486cb9c9a81864aa8990495fb7e88b0717b65444c33b104d5d1919e1aa1ec2c14050d9180b9351677f10cdadc104aa90a96dea4ae64b94e5712ced02abd756a1f504c49c8a699a24314420610411df780dc9530171470eed253cfec5ab00b57b43edae673570ba708f20182cd29530dfb4a42c0c8631abf31a379e6043dd6d05859a39f0318b1e18aa047613f8139312abdc810228ca66e2c1ab776a6e4a02dd13cc8c7b3115221224993d406c32287de42160f3dd7cdf7e44cb7b25425b848337b14fa6081011b8c483db0acad2d01fe60533394b5de281b2d8c49682b5eb1420e6e45c7fc2c9150f6c154e97d7c89370ef7dada95fb3e5495d984c1d78899494971cc893003bcfa5834fbea2d2a378c6f17c80641b7302e48618e2a66215a3ecf8c46b26ae4489297cbe890878af1c4c44b8c0a3f689936d9fbe50e28862ed22788fe28086225931aaf6d9efa2b35a4bcd1654d0c866ae44cf32c0ec1f27678fe6e2837f52c6d89bde840f1defa46662c97955e3d79108c2b91c8478c491ac5b480c149da6e28d11a788cdd46cdaf29092480e1faa2107c58acd5e631170707271214a7833eeb814ce3e0d6b878af78106e446af5199291af829a9300c6e398c6b8a8a39238eca0f9533ac7e2fa84fd8843d906d839098a113404c665ae8c8571bcac4490b36a9d06f8aa31b61ef30b986682d3b0b915ec416434e3b8f9f90e63499dc4593b02c1c705e1d9563800f995145008280792e1e608b3dfeed25a587ea4a540314ffb6e0db7bd0560d65b7c9fcf942fe456a6b0b3a94fbc7ca761fe93d07ef53ae1ccf80c642a349df187d30eb749e0dc0bbaab4c98d6e0cf77f35e90ab447d2899ecd1223674f645477197d674c82733fb092fa2977034ec10e0bf7e0eded6c69e80033983d809ea720972f498dde67270abefa2830eea757f3124c5c8e907433664c35c2407c3d115a5164b28468ada6269690776fcbd1bcf905939ec48405569f21690635d97a0e2e1390240515525843a726bc50e77fbf7d3981097b8104e0a870f1fba2b897cfad373010f5699e22b6dbe7b4cc12eefccc85fedf2b7af33dc5abebb4bce4960b946f13f82d0907d703575d470eb035c66c3c54b5e77f486772301442aeeb881420d5fab9fca74e363933f6f0fc439d65fd81e4746e9e97ddbc5ef82f6e25905b703e014b2554e7fb0ce8d1b84a0c38753f89c046b2cb03575d2086a59b11203ecbd704b4abfa064f4c44bec269353a3a252447fc81ab032857da0c0cc040042df053f328104fd4df271f8c3fe226cd2e90296c9c22d6c9effd5e95fa34e5e2bad107dd200ce0852043ceb631ebdca2df1889f63ca59f4c439019517b3ce41a447d530e661748433093309296c723529c21480d8417bf0e07bea5cb48a7848c907a99ef922730042f6512dcf3cff6c889c079ae7fe8ab16b0cf2bfd0d85185cf1e32d1370fc593402b534ded39cee19d17f7ed2838dd9faf8c0d0224f83fbfec9f70598b78ec53955f9b1c9c261b1236897f386041b554a71536b963665e0e7a518c09e077b68d52bb15b8abe90296231519617a983a7cbe66c5a7381bf298342e81a560753a60db0327ea4ddbe7a4e29fa617489749bddd43f613799a1782e12535e8809640d0202fb589278d3606f8a135e2c19106a72a85420171b45b6314d0241bb1e51779c7f929c80cca7001f83b0e659428b59bd355faea16433a27bb22cd0c76d524f3aa9b825c9386b2bd474b29b0afb59ab05426913ef47a9b915d0cd328f130af141e98674dd7e2422e19710d36a371f5aba743f60c51fa92432b90b0848ab2d8f6a27bd20382e75cd0fab6abc7766a691a1138643c4d3bf1497c037d17174f445fe764a02e812f7f22f9c55a1109f40528a0cbf248ba749ba1ecf7f4100b3b74ab9cffc6934eaee6137cb71f142acdc673f33212694df6d142b24c7f94d058aafb560b66811ca3d8814a05c75e926e5cd587d7284c9ca42706704f18f48a579ee7e85d13f7b94aa25fccf876cbd080026f1359063f2e1d889f763d94d75417c0338e98d51e8ab6d1867a60c1c5fceb6c4505f3a926b6c9ac1d686f757347d928c996eca7f8148871da59f440a2fa1610cfa41ff3d128358556df00aedc124a891f4890cc59765a91c6c6477de6f9117d4038788cc9f6950b29673db5c1e530700b9f414356a5523d3aa807e110610579f88bf95a7b64b3f927780ccf078b968a81209eb2a90c7350de29fa30d200c0392cc7e8674e68051b326ffeb6949a0023155f40f33eb478801896304b974b8c3f81138f05e3efe5a1eb1d6538770b021816f8dabd2d0db397d913f68927b412c2caeb067e255c0c8bc3ca74dae9c6db9329702aa6bbb2a5c8ca40e1a83fbaea22c0dcd0816a8a2bcc9ad76fd8a7850df4ee1113f5ac0005562fc3283962ede07e341a725140bd2926b6434b9429f58e9c8d81f0c13578c8f171792502e8da59c1c5b624677633141da622400010053286f19829698a55ff459064d2b2c625d38a87fc39196901a5ca98155fd49cb8fe228ddfdef92143f57dfecb98f70b2073ac83056114115edb943f6687f1924aa0d419ee1f1889ca3100589fc13b4f73a79fdaf1be8b2fe37697c441e0093eec712c3d2b85df82d272d7990c9f95c55135df7e175900e142bd66a2a9da65bcf959bc9f663204e0a53f036bfc9f810bb6299422f461ba20a7a6568653204f85f588941246c785d5a7567a24dcbc98f4a42f196e7cefe23d6a4e21dd01b2a5ef5511077cdb87188737e5c634bb29428923504a2c66a5b20a4d2569e5a5e8d251e981fa208ab92c5f67d1823c131f6c0f95abe781eb62db4889947b55b6262f5fadd86e92efb19d808c4fe55a6d52e3e1917ee5190ac0036ff71b7033e58f0866076e0af5a4f7d1f24b3dec1621dbce87491db32595b91d223671473d26907785f5b3e6fb0c476702015f4d57e71fac60d622c21eb60c38a56b7a838224d197adb6fb9c5ca4314314c996af8a30db266ba4726f657449f559f43e7dfc44412f76d02a70e7c3d1b7de8bea0552c705520d38b511f224aaba4358fbba7b41df956ca370c34a335309ac5d9b58c2ec2d7a4655ac630a01efe44e3d803044465af6adc062433a9908f695b93904cc69b76ba1ecaf9bab1eb35deb656b711dfae940750bb466c598241ef13a3471033b8b136a61d07303e10565d540e4ca440c9d48886bdd5c571524ba0570c78163c066867a68673fa4d63a566bc1adf5375c5de99138c1ff87ac3279b8e1e98000545a61be0c36d44b1661a16a9ed7c7e210f303038d77fc89879d03de5622220c2fc51040ab0b34d844cb0bad9b0702ac66ab45105cd326c34f45a4ac92456cf349322844c078fc3a16f180ed42b53abd388e21edd784f370adf3110f6cb1cbc50fde71e6ae0fe43686cc6cce5373340d68371b1c95b9c7fe9859a8cac1efdc60f2535b019b3d77102a0bb6c6ac6a76919f7da7801678c27d6e3371c214640f6c98122cc21489a06532fe817db33f586381e8ce74e15faf1314b5ea99a45d8945aa6ce69c65444526bdce522b7ae38cd986e609b908ffaa3b25f61ca15a1f0f25f84cc18434cea660f1d0091dd24d18cb9539aee42629d72823e2a55cacdbb347370d6d4baaade16181c35946e3ced44d3891e4f2bcf7c27da3c0809857443d205d1588f8179878c61c153088126a6c76cc6685de2146df049ac66873a7a009b0341869a31cde3467247ccc760887b321ac4e6e92155745162f4e32525476b60a45590ae8bd83c28d3f4a91466f64b090b779f70ce125742fa51045bb311cfc92b6b12c603ee2ea06785a015e18777a4721174bae2de948ef530883abab1cd680c75059836264f8850e7051d0f654824230ca79616597d20ed89d252e4c0bbdd0630df6f00d1f24a90c4093c9ed0fb8f28f3113491c09a165892adb761f4ad8a4c54e6b166a43c95f470bc4f1690656934cf978385f44872fd23117a49ae4a8391f742f68b53d5be4730756fcfc73b6c323a13163a4777522178c3f97fcf0539b8f5eabacbe1a35fd1d18ccd21687eca49afdd9ba0cb246e92a28d955333c3e245d83a48d3fad394cc3b8f09944fc715c395e4b84548c1f3bc72f09033ef8c79248cc0368dba199d7311db1a2fc240909d63898e40c2b1528d46e6a604fc60bba7868576f9719adf92bb9618e848cadcdf862a4fe080683071fb03669adc2a4e93cb6434a52ad954e38c52a0758610669f653ea1827c539598341825aa344da76f8f28fef013227b820e8aafff3b155cdb4da9b866117eab93e08d368cc79211a2b1e57aaf10352765da92529bdbe880de53ad6efe638586227e2e9bcb0c82d720878c5d64f977f4c5947f8646ba2fa4b825c10700a411f8c0943c0a294537c119c5696dc75283a9f15792c40507addf4a32ef763a730e5026139baef8414f186b146f150d94b40e0f9467157e385264ebadc84034f5556e6c1fb5cf4b1dcdb3e5efa51f237e040a75772de7acc6eb5c6074c575e344fa0fac34eb37e5791a90c8000f2b5736296651a05f4c5fd63bcfac7810d8594a2f8b06b359f8827d35590bfb1b5250e0b828968b2a338fdfd33ba7cff478627064cb38f34725fe939e1afda5a7f197de8d5f7a357ed2dbf8498fc62fbd1a3fe9ddf8a477e32b3dddb865e6263ae32fcac35cd3edf149cb5976bb5547c1b9aae9b122c9764c9c4ba3096751b757919f46b5c273bbdbe952d6ca7735f7d32ef8148c944394ba4f9c5c0619b7d440e8ef2a938874305e0818de24bfa7988b77bcbd4cf7cf40f418dca344bccddd73469aaadc600240b6ed9eba6dfded90d011871db0473764efbd6b65ac1ca1aeb5bfa05dfdffd728f46e03e0f1dfc1d52c4cccd11804630b397e886c2fbc8292926325274470aa2789c41040b0127ec7049442e9e52fb00b2978e0f464bca5ee1f0cfa191256515ed62a9f6c834365f6e67e4bd3f7fa1cdd4a62feff89d7b07c0223e0db0662055450c67c2188f8a659457c35603667fb219b3ef1d4a0207a52756a1481d50918bb73fa43959d208f1d3c364a98d6661a2560233f9e637c9c9ca29dd8413ea4281f34e6a89b76de5e929d63b685f10133cf71dac09038e0a925e5693e9c973ed516cee4c714fed62262e56e918ee2b262db877c53ee40b99af6cc84043b9357f0f5736d8b9bec414fce21adde68e0af1a525be1322e01f73d08f4407767c9072ef457af6085856ce4188c5027f3244dca6730a707629f23ea7f0a18f2515bf5d993bdd9387dfec591c85321fe6d8c1c5df0774facecb62f03f0e0475428a17d3ea67db03a725965fa30f01a7c18f1dee468e6cbd79e71edf42ce65abe05f5b781216de429de5d5b197eba808e61aacffed3a469eaaa1c9480ded2630f561fbebf89131fc766bf545dcea9035593782a40760e46399e14a1c0a5fb1efd49d8cd7b32bb226d052a949808bca821e3eec8f71c04d359677a1c81a4813c661a7069891b8d7c0a49d12ec1440b52a742268bd1e9f300c4063053c9807666a13060822c81c7c1201819e13f67c42e7c712612062ab010c503a82c14023e2fd3d795b6e178f9fbf629edeeae0550adb38e178805835d87f4f2bb649ba1255f041b6086bc011626c05cf3f61a2248a667a2ef330153521326a6958a89b55ddc9f1acc0d8d4da8bc746517dbb05ef85ae238f0b163727df9328236427517ddd95d371d7560d183db7c11641175d31970d533a2fdabc8b17c05caf73280c9ad2e9e34bea4b81b7045f8e2d9963c5aaba5d7a99bb87e2a68ca8bf523bcff995466a254f8deaf47bda8c37e89adf9204eeb8223c93ea6a5956c984619aef4065cd2cb06d453a4651596e31812a15c5b8119d880d20217f559e3a77fefd298051ef1929bac062dc240a025400fa2f73e6e6fa9bb879966503cc09a23a1a916738872cea33068d71c3b0d05ad2077e0d59f8c94e7ef9bd6b47046000a2f09420177ac309f75bfe420bac9fc7cdb10d68a89928f06a38e1a4b7f35a84b7d31cab1748ff6cfb99fc07cb63987a29b7b4a6fd4943e7f24f32524462a2cfe6c895114ba705c06db285077cd1e83196c891e932ca059107924156e4e33b96835f8198f165631e335088f5253fdc33bad0f8cbbfcef459203a25744dc4a749cf79e88ee65b90e7de9436441c38646a4087a7a7d409fa8b20c211cce0e4e099610594e2abf19c2af69541da41a555836d066c11729b213f8001bc896a03393a2330e5ea2cda06ce10eecb709b254a3de461ae25f028808d66a6247e261fd2676c27f429eaa3ab91f4e2e67cd1b65961983bca549172bd8cf852e670a889fc2992e6eb160b72e9ba011fd71ca72275d9044a2323d2dbead4eb84e25d16c902d2792e41e5f62c1eec190abfff02b663f366d5af4200c03a519008b1a3ed2bb27551a0728ca56b5f6fe24b99a1f3c44dfe5025f182661a642c1ac1defaa5c521bbbb4694b37bac8aeb4c15642a594e838df0b3f3cad482a24e328b63955d3bfa47446334875e21431e94a724dea1c09396369adca53e656bf99e43af67418e24bb7249d3ae8f3ec59baae491ec67cf5b6f222cab227a626b8f75e89bef67dcff99c93d0c03d245e5be0f4e4a84540df6e52eec8ba59e98ab76779c700611d75a0e77ddc6704d47aa92290a3cf66dba7cf14c82ea66a95d193fc44709e0186826e61ad5fc17c4240becfbf81446b771386e073a59683ec60986aac82f702b4d0329ba0e489894f2bdab40815adb2d4b822742456f5291a4d06cd1367359c7c4c00fa7af15ec3a433962a87b1375ea2a18df9087ac0698c2baf9299e0956205d3d1fa0f808ece93b8223805cfde0a8bd635e74b63a84d12580c8411942dbe11f031ef374003eb7c30323541a81018a7a9ca4910772b6f8825afd5c3ac0d6474a9a09d4581627a27534397b65449013095ffdfeab251cca624df67d8272e957a3f6f5631ef09e8dbc8b75efee9032c57b999425cc81b2eb14d25409fd42dfa0d368a4a27500a9d0053973bf39aec3c6c7e892578136b1f9ca5f789a5037347714910e18a0f091d55616a7095e11e515efb6cb9161bd5e7f586153a996208b69e84753ba88696394522dadb1969f438bbc7218d5759759a0bdfe8525f1adbf5af318ec25474a9574b5ccb76be20111cd846686a4ab6393da5706c1d5d0b3b4b2c41cb66767478c9ed143b68e06667295fd35721913f2305f1f25d73d476e81acab751e1b729b1a4941cb30d0a82246e636a06cb78f3d9a565b754a6ed3e9a29ad73e5320f2a2050259757bd7f94027d6d18ce208a319114ae8b89e2356825c369a3e484a499c4a285feab50fea39d9a1dfbf9cd98df9ae01828b53d908f50a639228474d32808813cd02633cc9d9cf2b4eacff366b07d5782aa3866a28d53a4a5c99c0480c5bc366609d670aab351403e84415ab892367c77dacad0c4e34aea6c644b9e66871a0d181979946212a50de910cfa4a55cc7f3db1cc83154296bb666a42c20b6c3506b42ff48e7e53cfa74188b35ec2df0f33c9f997d9a5a8cc414314b9966590b51c8354ac4aee97436e1eefb36fc1b5c1c0c5412f64ffa861297cc8aa8b243cb2b29d64f84950c98ab5a9531e84792d026b121768a642e53493387262ccd1f464e60558aed7486b241e78670dde278e97391547dbe311128d5c1d457697a185f6eb467f6b4095e3da19dc64276c29ae36169237e2074e4ee53f15ad8171c264278f8fda0197b3ba8a28e4770e6197a18cc89162cafba8a71a1d78db96a9766534db97d4a1c6ddbfcd05949f0de005835404be3006906444392995f06c229c9c86f7f7f40f4888260bcc0c7bfc8de59154b8c1626534245727ada2c3a0bca73107ff3e0990d77affda0f0ee1d39ab8c957d39dbbdfd019c099be7fda2e5497408931e5fdd30ffdcef4999283b518252b0a0c40158fcb0025acb5b4623d33903809ec672911c27eabf14b0daef031fd72e724c8f689b00662f8e281f91be76901d00998a945abc69cb6ea1875399e927f17bea84c9d42054215a7bbee56f72d206f1e08ec44f4edeb55fe1d2ee0001ec9e166a35c6afd57872a35dcb7774c885ddd9142f1fcdf4e6880de54c6795dac32a145a172c29d5e4f0f39f03a3d346c4a40626467589596096c36cd43ae5bab0f1c5a9d1cdecf045de4435019efb62bd96cfbbd05825bb7bab7f3cc12c4321c7fa43c9d3673a29c9de202b5ee553c4274c37b2ffaf564fc37ada49a4c61c4e5121c30df69cfcd98ef1f9bfa82302cf6d919d1b1e1ff3c449440f247c9ddbe6183f172c76a7d024f1e91c09a238be09826a3a9d45d7d2f39937004c70806c31b94f27817a515ffe94e77b01d628827ce09d20a5e0929b1f7a37fcceaa3b44a2018a6b60d7001848116b7005a241be0cf84ac520067385d51527d736060a129489fed463b88dd3721bb7e9582eebb45dd3691c86d33a2d8d39699deed3e91445a10b00be4d10750832a1dd77309dfbd92db174cd63551b6108c33a82a550b788d1c60726540362ad5cadd63975fbddcecb271b89d3e9f53b93d9b11df6df80887cf923d74292af85f56ce20a9d6616e62465169ce3c9bcebfee5e68c06c120d315700e111bba7f4444bd52a87adc0856b87e77f85d8888a19849bb02910b89a3e4580e515533d67cd2a1c5fff4eb4f38da001c1707d8eaaec1944a3d3e2d4d2d38b42b37a13a870a16b3401d8abc4313f428e1c86abc8d02393c85101ec3696161067de3a546553255af5b4ded7a11e68a5c4d0ca8d49e94e184a591c4c22fd4ea855c41ff5e845538bf4f4c4c20458dc0d9f546d7f7fe40c4106906575a3bb87cabf264ce40a82e88119f54b5be148d3037d89eb1cb3f11e0d35434994069328bba49fff454967e221c92c368fef0a35e59346ad312b6fdb2de77fba572b6ebe682e6087235da10fe57e863ea742df03c42235c778b2ed2c7237f49364030af6a8a827468509ca8a7d48d21142008f60e10acee23108b19803582d6d707d4f3312c974322b8ace1b2c329f21140facfad5b26825ddd69da600179ae180dddf22e6afe5331d5ec7d5b21dd862bb947a91dd32ce50ca2949f23dd4f96ff49c16150e6a8023669751a3b6508fb5c85ba160f1ea4862009ca4a42b9daf635e5f6b6385ecdf9a771f7cddb2d541c327a137df088a0676f850c6d69959a4dd1e0a162d30921e3681ba4c08829108b29f8ca1c8760baa9b5acb4e7b41dd8015709da95e098201e9d8bcc27c65e1014c9b23233690f4662d0450eefd08776bcb10a0649f15f594c8b1ba5500c3fb1625750621c64bab86dc7129ef84571e3e804dd7a11f10f4cfa19a1354b8c07995bc390749dfcb16b6c20fa8af41fcd980f529c2e03d43b9c129df4cae835d6e2ad7e8bc843b9a079c06195a2245812d3a51eeb4cf8a3ef3e21c2e98fa3f360d05ba9ae48057a570d5be494ead02a2a56d13d2abc7d9f40ae719d6904b224c3eb6c2495e241d7f89efa479707a7150a746a11cd3c74e8a15020ae356107f9ff0b5dbb3ff394b7ec1412d69283c8a72955258d0baa6a26ebed3e9367fb9de43ca043b24329a9298afa393278f43a4bca22870cd5eba0d9245e6a2a7bad66d83aaec808948b1ded4b30c66a08b0a4506a09d23e0c47ebb0eaf481176ec3a9a67a264798eb7255c7c28428e08d9a39ab1f1d62661252c1d8fdc64b849818fc6b97db7b7b9e810670184bc3721c61ba46bb60fd2a878a1524431628e0362bda3e406e9f8a98d5e18eb83b59012ea7c4c2c22478672738373b4434947e6d3a31b14d58fc8ca045b1d3369aa885be489853eab819d086fbdb7328477267dfb846c08cc2c5a6004f96fbc9c809903830d821cb55f7721b23b5fb576b30ed0ed15cb69ab7a582fe87a828d8e4b5355ec1ec991b29adb8b9cdb0fbdef72d683128e220d59f359897db3ccad708c2f6c59d95b9fee095fe80f66a72e679f77d8861d6a4eb4eed1fc22c7929b851e7c56c35492d4956985b7bb2a396004233a84e9e669605797559345ea64116a1b2617195d1df2aad79950dc328435ba213e7e54ef66c8fb3a13afb02d437608e7348fcf885eb896fdd2589f9ad744f096f529351e078cdaaf902c73cb22c7cf1e61c8634777df8e84cef4960d3b650f45c64efa46a85285a77712a2ba0bc07980c75c0f62cc82019226821c835385500e2617d28574da8c4c4f76a1cd197016d9c270f832045335d497c76916ef53348d9e11733c27c0e0c20fc41539d35a636d1a79ef5a2811d083bd345a09073341bb52f851c07beec9d13c2d1adcae6c45c27e035c7044989ec9cf5314ea9ce5e11fb95e5825288840951ad94b22ba66647abcc9f14c83e681f06bd39c356c9880c6dc32dc06bdd1ca4388216d16548daa10e057b62de814f5cfd1789366c9f3f6bb7ab78f6342f5b592ac0c345fa455b3d42a163667f84899dbcfa6f4fe41fe11b6c8f152b9f23a5b3b2c3105e523e02377716090e0ec642dd8448d7113915a0176f668290475e99bafeb6aeecf22470f70f9880bc2fc8e7198e33f66127b92cdf01816483b541460a7ea48466782b29edb10f814e9017fd9195fe2336c297db76d3f34a7e27f6fd3676af0b6fbdcfaf3da4c9c6442acbfe9baebe79db8f4738bcb0ef904ca1204b8100b5a83cc654b901d8bc21e292ad3c4730561c8e9c6dad5a6e1c05c5426a9a29440f7f52c577f75dab3216b058dd308c6af04b28d58aecc9d5f91f738623f118264972ec41ca1a435607a4dfb6d65b14c01339f2a57727ee754b19f7356755f8c4e96ab842ea55c2d125ef7dc3b7287c56da147dd68a7fd40d30423bf8c54e76b32e0b75d7b8d6dbec1b8c524f4aaa0c67a18d6b0f3725638c6c7cba0af62156b6627fd722951f81ac37c5b667d9ab7a1d10376381087bb2a5ac9fe144137cf54c002d43db153a1ab7e0f28046f8356b50fb34fdbe1212be6a06df3c3405e34a09aa6116076836d6ef7b98d608f0bec3437e3ebc57676348a2f3a90e2e2332ff74616f314a6c23764f549a6a4216f314b191a096fdcd3006f18f73a0e4143d017cbc2b84a1adc2cf4f606c109b3849afdfdc5aa085406904b2ca041dee3b8240dc4fe99a1b549c830d884043caa7ef923d5f08ef42be68fe7e4abe63309a517cc21053b1bba967842434278785b3491b917acaa513c2e7210f6a1eadfd9d5cf3de5375069047b92e857cd32ca7aca5d416535cfffb23413f44a316a58c1db78067e5e84a1df30c61cce7f42c27124c80a1bd60670a5768cce3666252b420aba71a81480e23efe74b1444e53580e913f4eb8072544472e9075bbee8ad34e8d01faf05f7110bde67443d5dce9673db85d8373e8bb48008c87a9148d90fd975652f52bddb5045d9e657c4492c35d60bd347de1eb2d51de012c30d5ebb80397bb14ff0bb8c39ce4197d0813886dea4b3b49e36b0ee58eae9923e2256485ce2954b3109169f5f3d9057dc3f84c58dc78548b969772eea441627046b875c97f9e4c024a0bac05f9a3eeade11ec0961833683b6bba7918ba9a9f9ebfc7bf675f632f33a7f599b88cf8a0cc8b0de1e6562e7a9615b2638abd4ff7e841189b0c114e174210a6ed0c7f15668c2048ff4e285ce4e2c97626b22572725870dff9380b2cd46c66c3b5a050ea393b5fc980f1ea4062c229cb1c80accaf69d5180268d0566e55aab794c8e9beac30e120eba7ec2701c884c3bf75a71c7a1bde77bd6d333dd890f29bface5ee7f772bd45638863d4519367a9d303e0ee6c3ed84197ba06b93aa76d10d9534a791f05a789873fc49cf4436c58e3906998e9a64f20a30daeec5795f0733963f6ee3fc3c0eebe6796483be33b1c0bd797a73feeb58d3ede8f5c1af4175bc147ae8dd1ec4a0352937c4891bb291fad52cd12bfca344cd0b2f571801d2e3af048efe73f28c5a066b19fc71fdafdffd938739c14825f613b6dee232d347082e854227bbf324e240a3085070a2b2cb3861fe873ae7ca72f71d74f65f06f39a4042e0d84c530b93415a5043ebfe2e52b28c16e9ade4df4ae082ba2e05414d363d1eccd44ce5487ab0167f9d292d1ad0d10b0318f5dc494adb4a913d4d0c11405b7505c2916e321f2bade891a51f22cb522cab1156d8483ebdaca96e0cb0b622f6f2eea0a57c3e64a9224ae9286d1f0eebe5525e0085d1c93a49761026ac6d8f004883e9e8714ba3301c074cb7b9317d073125570a1ae946858a98bb14f4f701486e295df7765b4870284a7bec251ad65ca8777abf03f7eff035e11df53116f8f8e2ca1717e68a2a2e317e89a43a0973aabd16ca701f4416cf9e24f71c95b76b1ec07a546ce83e967e1c5883d0b480e3e3ba09323ed9340a8e28deb8b10432e9360440c412b545782bd2b88f62a63c67e0874db38110c8406a3cb3c9c43b4b19c7a77ec98a27387d073b91eecaaa45569108c34368521fee05651e07f13445e7028c9308d1fd4ee80e593c591b6208328286c533ea989709f3ea0270118261292f02be8481c784187ae0b30a7dbcc88d70baea262b96325cfc767cde58c81cd8724726625ec7ba748ff731a198b27093f8a6d9113bfa3c54355a9160e9171d328a16c0b041553bc5cabfe26184ff012257603d563df3647c0150e68aff8cecec54c38ee2206f48a0916e93f5e1aaa07b871c398e024ae856ec00ea45b9b56dae194c779ae229bf54faab09f4123446950a34e71cbcae5c8b456b32e9cd170a58e5450e60edc0e80708d18382d820f889971c7516e6c5122173c871a5ecd05caac1161204870cf9b8d8996ff8f4a1fe992b4ceb436fd40d7a8eea705d23b06de4ac35f87f91824c0ec2cd70c8d939c08032b9e3097dcf8cb8c61476cb5cd2527621969503da51297c8b8041c1fa762676852dc24c0d9568f5f893f2313279ed04cf29992b3f3e9878076effab9beb77def2fe1f11e9d059755186897f80799942c1dee754d6e68b4176f2f2bfa0df721855425aa482a2455c95528c040552dfdb2506e7e1351299b6c27c30347f683f8a37244113f43e6f8995a43a6d4041ec167c91f12560cb219a9ca17e24f9c8ecff827b58199b9fd0b5d182ff2126b944610bc5dae1fd0f1d57d4ed33465684363302217784f266af3b2deecf64cb5e8a73b1e84b614a82f22cc788d8086df3adebaf72d92a74c8d09a61d8d7407af31e258525159f7c1120f7388c83d89012cc2b7aa0324d1d029e07162f5a84aa4f30a2bad35dd9ed60e7fae2750604b31372bc5280f25778e9e850d9d4a724339aea47a72ffe3c1be949d8ebccbd836a4b663f6b4c8d7820c8a6a4a39b613ed6af48f26a4aece81f2a2cadf0f72bc70dd421809272db0689d19625fabdaa143686e9952080778572483e08efe5df8a0d0988333b5bd399d9850355caf0dc75b4c9ef6ed152befff73cf9b0511a41624363b9c2de28caa9265ab40a76b011877ee465e6883f308a58a9125f064b403dbf14384211aa62ee306bbfa243c1e142f67911ad1f8d565d48bf9f87c15ff97e9d306e4c6dfe1e3804c5d6bd40b24668b69cf2cb81fdc44a2301c07039655f7acceac0a4104caf6735f126f06e25725953faf92acc296926adc41a038ed5a4a0395e2973368d03680f2e56d2943180ad5cc21cfcc221643e0e0ea8cd0b852ea4c1aeff398ca5a320fb38db0595a5d8265eaab3344efaddd4c36674ba38b5ca2d3ad3089476ac2cdbf8dd4fb6b8c47730237e497123425fd2ce32343085d55a9ee4ce903b8ee63b050412a37109b8c790e4d7f18628cfaab0c51f5c01f8402db3a793f693ccaf76166e5cd1bbb1c943d521301b5c2a9c84c9c4bbc5acad6270932928cb41735c7d2b6d6c4629ae60b0ff2790c49fc31648a100b45c3ed87c7952031c38e7fe69f2cf68183045d882cc5f3793490017d8b0d36a6ee19034a2e06554eb7834c4e9069ff0da055dea246cce93cd9a19c74634bf41e9599c5d8870929a80193874e7a25fea66804b7095da4d351f7bfc04cfb828f34c3e8e650333ab8bf44b16d09761c5c8f4d2ef0341d86846b3cf64bf0b8bc3ef8384530a04fd3ce7e878539c66f1bd4b8cdda78a9505e068bce52245546292cd7d42f5d25b5725d2deed7e0d25a618acd84ebe9727eb614a2dc5fe775e576304d0f7d83e3e9b147121d6248833af463f8ae5fff2980eabad83a5ead2db194db2b3bc2cf7e8ca43fd0eff714cbba51cc15ee5f2c227d141db036efd425a9b82590de0598a00dd7aa22f2e55a9bb6455f11b3f7e6eca4ba7dcee062b35870f09bdfcba64a353bb8c66c519fa9d8ebf29d1d84480a9744d711a3dd292821b5ab997fb391170941cb6c03295cf90b39f59ad00b43cfe43e1d7b2142f1a02de4882e74ed60c7a51159f42afd7b2513d83814768bf4b2d74a7aead3d0c01d9b60b032a28a5e97e8efaddb1e7814761f4d7f1ceaeb34ee040aeb03bb55309ed5241dbf2d916c810205803a49e2f43b46315206d7c4b72d41226b1b410b2a7045406e060c22daeffee673954a8b3d2b70e8c7c5231889da16563e7501e7477bc163debe8a7e6bad6d4236d9841042f6de52ee780b9f0bb50befed5a5a83a7aacb5bcb017d92dd9c851608aa580221a433a0ef10bea7c00b7e52d0be33417777431b38c8ef02d2b594806e94638c314210c02702085b96703b6c905d1d2869b86ece64973a73a10674a3f73d20084d628c3142182928d2c1d07775375797d6628fa4eea9bb5d5a8bad69ad45789dbb39edd483992ed923d04037ea3a26374a354a9f2e5726e64b97f66266623c05064db246b897a884f69944966050454e8c31c618638c8f31c618638c31c618638c31c6c811c618e319c638030a1f63b48937d21c93044147cb5c8ba4824029eac5dc7037e003e09470c35101b89000aee18bf1628917a3695e40e785d69aeb016cae8b4d6bc04ca2ed045a5b224ee1601ce5186374324a10c6ca06ea9a208692cb871d3972e4c8134a34d078a6715e74b813aeb0b94e8b9c2a2ecc755a0021c93d8cb9fac6a4a4a0d45b896c217c08e87bbb16c861f463ec378db8e37e947392aff7013ac5957eea8a0ff58806c3c6719a1bf188830a9ce6eef6a6eba66b898f05b292cecaeabab94670d95c23b86eae9b7b6171dd5c37f1c5f71e637c2fc618a91a2315e3a9c679efc5cad74d2c7960e24c13cc1b374d307126ce9d3a77e2b4061bc82425acb37bba5da41fe44b3488f052461fef6d5140f907dbdcad66922ce8e600d5a3e626982758c166eea6a8464194588a528c51ea47bb5df0758f009200de3ab3cc489f5e2456efd9836f655966ac57f7615917925dcb569608bcd58564b7b2772f72e104026f59220c845f59227cfb3cde54c3cc051898087bf4c0a0c2a01ce53aed6683714360a7206e2a150bf5217c374aaa8f0dee25be27ee25be572ea67128b743baa83a8713e31be7894494de270f4ab579eedb54de934b32bc9bf3590a7a2418f87888f7f8d706b7230e2e463efeb9c18daec7ec6eef89f56dc6f49edcf8ab3ea74d97757237a6bfea5c8ee9d68c3bbdcaee74f92e49fa4a6c95fb3c2d9a4b8fa4c3dca93ea9c7af75ae255a9ad884a9364807036311695efeebcaf2a3ddad310a75341290be5e73e05dd709a83bc543f0858792dde06599794f0c19ec7901e98627c2bc02e95a5a8231d2f08b5128909703fa7a09d2b574b72c036de2c5b8279ebcf7b408b92b7c130ae0ebec131726e1c840dd83f1e10eed23c329ae11dfd3ee6fd31a29d7cdebbe45e876b8dff79e32f0f140470e51dc7808dd9c81468cdcea5ca9312e14e3c2334f3df8cf4d24e229eb587ef0e3d952175a21d975b7c8c47c041d102c0156086300c6ddae5b13390b244a902841b2e4b5118ec2c47def2b88e8be8ee2ba284fae806271dd5740fb1b5f71dd5dd23777ab996e6cd185efc9234aa6b8ba2f5540ed16a40f9fd5f156d0af3292a702ba399deb9c4e24c22445f81ac2259ce0e68a5a631de980188ddcdd65863782054e6abaafebe12ee48de1587ef4ddfbce081674e1de8eb1a064652b380704c256bc4b0acbce560091d7638560f242b8c1db6c45642b2c869d5e56ab6ed7b5e0b9ba6fbe7faeb3153c049cd80a0f5b711b650aa8f58d32b9f23c1e0673272c3698db57dcc90aced1e7d16cc5153de24f920394afa02c49214514060642d810761018e804291d33b36376ccd6c975adc1d61cbf307c71b9b87dcee2f2a72a2e7fd202177787ebb4d0421577abe1db971225419ece351eb65cc9ba45e3d6886e7c0dbcd2a59ba4ca75cb2a062b755dc79e710ffefc347bf0abbbb36e452ecb0fbed71022f0b2851389e9cc6c1df5379198b6698afb607f72140dbf4fd98d4f5d521365c581f65d1197d6583275ea4d4d561c28fc5403e3a589925c74504876d9bd30ac4530ae4a209d6c07b82cb828dc025cf701b8189884abcdc585ae835170393a0a509404b38d6371709abc26341a792f1a79d1887b79ff9c476bbf4884c1378e7c15be6a2452b4d6f05585544b7131bbbd23535481822c2ec7e03a259c208c2b6575f17cafaa877ae805ba3b33333bee41f40aa76ff4abaaaaaac3ea22114529e8f472ca503769765afb56ef3d8f64eaa19ef7085f3f0cd677b1ba51764be26e585555afaadeabaad9035e082dd723cf555578e9dc8eadba25a757ef564bd13843a26d9cd65aae15072adf47aab4149e5e56b5ef0fecca99eccacbc7ceaa92afc7d257f6555596997737286ee8f2958f47bf4beb465dcf2d0fe8c332f3eefbbbcf6e505cfaea738a9dd27b90a04a30c1cea5d713fa7cb0ecd58df97a2690eaaffa7bf455cdb03943ab948b5678899832f4d99479ef55c72eabec557d5885d5e9b452d9ab2c11d4936534a39688d63865cac05ab4d63c9618746b9c3ed2a3cd73d0fb8da447349e7fdc8ed0fb8d02d03dd704f2f9783ebfd4be35cfb37f2a8de7f4d6fc819dbe9a331e4bdfe58ceb03f7fa46dd238d2302be6fcebcc946233da2efc728a28ddb3167deab4b5a5544f87a0e956434f4d58cf9832f2545174f24b057d59ca1afeea6a39acc5b3d85aa71abf770aba6ae0f113df258cfe9e7f4d394f97cfad094cb941a0281424f0949223e92ca00812e65d4947f6a7c887e522e2385881e51cb07d5d05d8f40a740353e4469a84e0755aab5f78117ce1fd9f55c7eea759570822fae43c3754a3001942b572e0b0addf8b25c927a9fea7935bdaad45ff5fce3b18ee559ac3ebb9ba64c7c565f75d3b14a9d65ca5496881abe34a2d6de69d488d8bb92fb35b66de086aaeb99a418aad1ec6a408c52afc6dd1a87bfb88d93c4dd82c0dc9752e195c238b090ae6593bcb8f09a76e263285ae9a07f6a8ce25ea43f6631ca9831d989a37dfdc20edf212af9e23a2a5ca785121c971e5e2e07448ecbb9dbc3874b373417eea1a50795f7705d140e1b73e672699933574b6b94d61af5e8725d8f972e631592ddeb95af8df132882b461bf136461b31c61cb14a986863b4b1b5c4ebd7751e789832d7755dd715af6b8a3156e75e6a4c206f3a0fb3c7f419973057db882e1249a24b25352694a426528e94b4e084c6599af4888b1e39a1317fbc4f5751b11bdfad87ab5ccaa2471bf51a972e31912ee9c820e60fbe2b52888b27123b7c629933d4276daaaf2ee7c5f04e767af73ccf2611445c9ffee92a53e657f924e3776e070fdfa6d74b1f2b9f56525eaba835ae55c65fab4f9587af54446cbf8d4b87487a44f3db4b87386e47bd748802b763ba90ccc65f6be53bd94f933d8faed55d47846f8b6511c2379e08bcd38564342e8d4f13c8fb6489300a6876ab5b62d00de2481c2a6d2c3efc36ae229a406c0bcb0f1fdec37bb80faee5f636cea3b9874f9f719712f2d0f89e33f1f64d217c5b1e2bec115f1a8fd3470f8f97b1fef01f78b8ae7a1bbfaeebfdcf04625f2d11be2df74c20ef9725c2f7768b9f7eb02c3f7ab80ff7a1074bd352c3d75a9affb251b7bfc6b1eb73cefc1aede8612f49d7894022f00a1192dd68cfc361269077b644f85e76933e3dc704f247bb49af34f5357c7f6b692679023a55fbd6a89f07bbc5d7f89c3f76b8f46bce442b6a8dbad48f9d15b1506b54d7a8546b34ec769dc5f29c5979fc7cbb620f37d6b831e5c69d1704e6ae1cd6cb0474e5f36efa5891be5da3eb2a5554b758871a4ea9d2250b64379155f2a9512ebc94f362621ddc0df8155c788fdd4425b8f0d46ef403173e93722edc5ac9062f4e6bf0486bf0b204145e826f1b282d183bd60e84cc51a27159b2b435ae9280b991a29c24c5d8c23e90413a1823b40fddd5a1a6d12dedd2426c445cf7eb03ef54c730d137fa8fa2313c36b7f3de5b7676fac993cbe3c53417b70ffb8bdb9fc0d8dc4a3fe9304a40b7188d7ceb272fc647922dfa86bb9dc44814bf3c5ab2d676111b15ba2ee6484ae4f6ca325d5a119e80b9b88eb3b8ceb563e76820a3b8fc7e17c210c24feed6ef374f992277e9d1bb0bb7fdc61da5f3f9d2f4af5ba125c2fdb62eadb9c8fd44caccf548fab710c5fd755a68e18b33bc64a40c461ff01d9f6bb90eb27d3ff79e752db748e42e03a4a89e96dc1dd769d1c5912be1159d832ec617238462c0f749921effea7469ba244d522572b9b8b81d43dc9d7b912ed9adc8dda64b6f92d83dde961617f7c2cef514b1c905d021f11c740c39cb28e6010d31a486baee5be8d3dffc411d861eba74950875853c318cdc343bdd9a58b9ca7ba356aaeb78236e356fab12e12ba5a5a1cfdef307e859263f2f25f541abf49a5d541d8d7c463f4f7f55ec5d63dd9ab0deb7dec7acfbac3456cb7bb6ea33eea934593ff6a3bdaccf2b5b036ff64fc657241255d0a719754be27e2e03da1ce2f4c885ae9c46b81bb235d3473708642392d6e03fd00627cb0e3d877715ccb9b0edb3b9d0a635d839ef063c843b17b675f86ed5ae9f36d6b93a9d03e1b35ac377de5359e2ddbd2ebb0e61ec5d310b6ddc0ba476c33edd3aebf0931ed1c34dbb8886716194ee8ea2fba6fbc8851ebb1d2ac9eca65d99786bca50f8ecd3e3a7cb4c74452f06dabc1bf0146503854037d185b4a1cd7bd0d9fc526b551aadc180529eaa4fafeabf780f7d7cbcf422b7ebc652feba3ee731ec59765a37ab5fb55cacba287756ed5ed5258a6b5578ab5a61e151ed5e92d0be14e31228ba48ca33c01664946490d6a29ca4f4579970a3ebce39283c6c33ae9b5ccc6322ff983c239c23b60d8ea04347cb0cda399c233ad935781d28421d32dd67f3a2784674e0c0a1e33874e8689941270c6be75ed421c43565463ef810f318211e848d0f0047cb0f2d42c408711c1f40103a8488a141dc46109452d09419511f7c38f5c1071f46948e748c46a3d171e0188d70e8188d70fca0638e260e1c7c47d55d973afaa8eab806efc4f11f70c8b458a6335a2abc3c83759c9a332957877d36adc5e3a8cf8815e806775cc79b1ebdefb0482b2d410e5bd4800ad7393c447cdbc08dae4e82eb21b40f6e7c47d1232f2eb3d3362786cb7f4cdee6ca70790997833fc6651786cb4e70921e49d7ce4ab80ac682b3e02d54e2cd34fd717659dd6da2474e4c17dc917f9689dac40da88c4db4163b07eebc1827ae2ad00deebc9d2494876f0e8a179f6ae7c09d6b6297b59f91ad889c262927293b109f78c08d240f119f84a80b3d28382dfe08f2080f0b2334c39df8f88487784c38477c4c3936efae275c59045a03af8b5cf924df55de5386e53543ec90a5c2305a8b7f35e2b4162f1181c21d08c615f45d4a13cc57ea0613c38059b94bdd9ab82e97d3e529b9bdc35049b2b2af79c4a5bfc3acbce5f2bda7729ae9d255a64b9f241b365caabb302db7617f384f991e2e1df5e16eca4030e2753957454b8cf617edf252064710d72adfc7976bdfa83bfa4808203e80eb7897fe602e552ecf1388107a89b0dc0b14b92a6751b12c2ba761b9ca5758ae72161539bdc3d44de5369e0020cea200be403cfbc3ab39725c929665e552aa2c2b57b904f38dba2c776d5956accb6960be721798af1c6645e5ae3595abfc9de52a4fe5371e10397eb89b4080f8b334409cc5d2c4fc5da5d640202c6c6df429e636aea36ef00a7169fe68798c75ad8de47df813e203b0b03521ec7d389c48bc5c7b4f245eae5dbed40d8aab4d93d42ee3252f692f76db0075655306c7354db29b0f9a0c42b341dc87205e83387cd2a320ecc657c371a972a9dd874badc22715eeb0806a60b416afe170b964954b15c781a85b131788c3298323c7a79800c8152b5dd60906e62c563e07bd520588afd497bb0e40a5fa86fcca69de59be6259fe72581cb7a1626970dc058775398f0784c3a182c3e5126de20ae02b01b864b900aaeb1b2cd30360e3b26e40fcc69f8a8aa591eee2e2a2f295aba848d2cb25bc54aacb7154776954ee227de5d2592acc657d57e553dd9a907f978761f94aa5919bca731c8803e0392a8dcb3b8dfc746959ec1277b371206c0dbc2e77adc997dbc051dd5579b15b91eb62711c476d3900ea96c4b5f11b756be2da38dc814faabb129b323f58a63f54787da8f05e3dc85fd3879476cea4dc161b6dd4f86408748b4f6e3cdc01033e815060941ead3c3e46152317ee5841b5c80192bbbd2b209317f38c30a9dfe8153d2c9e4e8f243c0f3b77da3a27e71979d66e54b5ef3752c397e52a95e5dd4970c7bd5419974a280f76632f2ecce9263de2a27376b09ba846e79c86a5284a677cc6e30d4b95799f520874a54e6f923ea9482955a4a4d37437a547923e555c708ee952bea9c202e7982e5dd22dde456be5e4f5ab9c48292f3aacaeb5ee6208a7d421d3dd4275c8140faadb14ffa9db7537b8435f068b886f6267a32e9a76a376a336222e025a46679b5a76735d5cbbbd85824ec2e9223e40c14562aca1820c026566c3e525dc0ebe6cdf45d26e226a6510687fd3a28e1e31ffdd881e59971a6b53f5376d6d7389444e3c26290681ba17687bc991897a992e7b40a54fa1ea38741f7d43a7a11075ea3252422921dadae7a12a6aed13b2576b9feb32ea050719f7a43c242352140c3523c36ed7a56ce8a0ba15b9201932a80c19744e0a4b994f79e8548752dc0dd549519f53c6a59c53c874a9f368caddf9948a3df4d055b7d0fd50ad7da0fc4c6c33a739518fcef7a4a6359df608fbf490a847f3d369683dca3ed1693a0692a0504a4aca7db89b92f299f2f9143b2fe3d88bdc50fd7c4ed5ed4aa93d4207519f8c522bb38ed56bda8b9aa869b2a696252a8a9aca2029e95415c297722fd2650fac6359bcebdd50f9ea42b0fbe88b7d306cfa744f8665d8a701ad59c7aa12ad59983da2356bde533ff71c941df378e8b3efae358fddae3b65c7eef14c93c73379268a1e9b68463d3bf609c39e9da2280f869da2302b64bad356847a56298fd6accf7a5996d3a622b79242ad49b435c9b2a6e9d534594a4eb5255fef3c71215d0ba468a0d1808628d536e802d323be0f77b3ee5ec2dde853dde4caa1ae0962e8b8f4c8513a26d0230a9ea2aee3c540c0dda04eb1a195702fd4a512fa4e511975ea99dbc16c64c2827440d02cde0dad3e5dc8e73efa7e30e99f4f7d24a0d2a587bed55c32202cbb04d5506bf49f2a6a4dba1f7bb516aa992ee81f0c4a982449760b72c18442582814daa0b892bdfef9e7979407fd7349929fcf41f22e523da0d0f1a7ca83eaf50594efcd9949ca4b55c8149240dcee614fb26a0d5f19f959b7d0a5f754167977a9d6de09a874291989d4f026a048428fa7a1b55c18f6aca74c76e9a920d07db80bb22ca1d3802e1f025d1e7459e452ea36ea7eee398f875daa1bbc2d173b8f974de75a93b72e494f3aa74945ee24446b3021a0bec1ccb6712f2d930da824d92744a86b82185274b579545abe1818188ac22705d5fe24b4ef80a07c294d199e2a75394dd694996e4dd3344d5385f4d1075f18181976f7333f9fcf47baf749495d59120d5022024b4ca047d8e3a5946152a50e9a4638aba2aa4a9d528c7329ca6e35b7ced6944dd3adba1511325d6b83e25613e8924f7daa7c6a9a1ed7693ae87350c50e9ae0949940557eaa1da70c8fe75a0756b3da83ef1445e820781121cb83c99a6a75991f4424c3a798628a2917facae7cc974c553187a80859bee91b9ff394c1a60a52e74a514e4762d5faacd59b60b72a77c15ef0175c39a15ebd7f058d5df015f1d26e947d52499c9f4b29b159558e82416cf1a7626fd08388ae753865408753c6ba04558a416cf1c7b258a7a12e6f5197a7301013150d79feaa2b6495599955896888d835569d6d2a577c8f682d72147c330fad43b8a70c16e3379e77ee881eb9a9b5165da66f1a4f936b2d1e545b5a8b0e0cbec2d50d2682ac0a646178bccd81e19a0c81473011050c3b1171c0fa105839f9f494f17c62f7c575a783aa65f1e16e655940a7a94e1d549d7a65dd8bfcf34fadb0c03968cba5485a632984682d4a98e93039a0123bb94288c9c98b0980bb11efc4493ce564b230ee255eb210a68d64cd431db0d0a2064ab20e72ddc852ed4b1bcef166aec83ee0dfbb800f77a1f5e1eeb3fd94649211ca2ead494f82104218a4359e3efab665c206545252c7d81dbb3b486b4cb817e956147a98f7f876402598b8c168ad49efead29a748e428b5ca7c1682ed7db6e2dc46597cb2dd7d2de0d8bf93d7e4fa3e865374a740d469bb42bb99d4dc7dd34265a931ea435497425118d1ebd3b0f6ded9d0969734f2a75f5c849bca4e280742d6f56283c30abbfaaa262be6bd628e641f022a6e541f595294a9574ef4144b7fbbdf76065296a560f22aa2acbe3dd80bfbaa7da46a493557d55e03827970cf5578f48a236a0b51cb838af4b6caabaeab8ae5a3171b77e1011c5d659163ecd9b2e5f5d5ac70301ad41c8b7a7aba21ebca3d11a8422a903ba9d03343135fea6a851e192ebef3a5c72ad6cd93fdfaacb29aea787c7d264f79cb234afce53e73953fd320ea340a70d55dcf90c5eb37e5ea35253e6f327b39e3eb267f75cc677df610edc48fec10b93f09b144e8f86f424717888217ca91f6e8c312ac681497a342f2a9b326f8ad6266537cf69b2579770f6c858f6953cbbba64dd6012be3089dbf1ded307dfec55e53be374aebccc2acb0c3462245e7879ceb01123334e67f295fc39bb1c9f37d1c1719d1639615c98a44754d4f83b54d284284d82f06406e85ad001ca75553c9f972ad78c09e45d79592f4fdde63d5fc9bed521507a5ecebce740268de733498fb2ec32ab2f49ceb46f8ad656e65984bc21f37316966b56227de7658d8bc6b4ecb48f7c8df9e3dd79c9b0f961d933fbd98adcf678b2eaae6b2410e298320e7e644c198fc7e324ac904b40dd413dac7fec753df032a68cbb840ebac7c02240aecef94b0680e5b254d478757978014c1918041535be32e114cd7310174f190b85a8081eb8f7ece10edd67cc1f4e8264bc3073067407720ec66e3cef2aec11a90ba168cab88ba60ce8ae52f082f5cd1ef0cef69c91aae710f4cfe5003cff611ae1aec7e37ab238fb23822c4fd061752cee7cdd3d359e552a6a581667a11208933890cb6e4d195026c473aab5f94fbd5a9b87cfea46dd393d95a23cd281ceb2f2fc7309b2350da1c4c1a97e7d3cb5560c93789678388543d3878ca7dca5d0333dbc81993210269951313373559d2bae2a11572a22d02d0e4e56fdaa2ecb10f47244c798597e6319329e327dcc08cdf88844a00f4c22c2ec0cc6e2ca0adeecb2f095e4f1de25b1eb7aac0c58a3867d39ec9cdcb01f99e511700e064998e4b22cb1cff4013acd6565dc33815c177498e4ba360a24c306c192afebaa30bb411e01e790574db1aed2cb773948559c63cadcc09abb791ee482d4e6b8901fd03f20e891e149f1bc1c38caec16e402d98dadab9a3ee888f2b8eb3902ae115c372f5306822a8f29e37939ef5d15eb07a5ccb22cbb74a12c9312e76ea02ce4c90e121d6e7d2f509681322923a8c8131fcfe7e301559aeb505ce8c930cf41d63d58b1bfbbf1cd2c8dfc0402ba47fef2bca69190a0eb109b71d1a1fd6c35d3062d46237f1d7efb5c32f643fefae7bdc3cb6361cdb087a36237ea793c9e43d02f1b1e021e643fe7f11cf6edbab99fd36bfa50b92e55eccb69242b67b1f098878687c59a3e3ca701a9bcf2d0c0de481ecb8af5c0ab6002c0e24a59dd85504a7978590baff378a29af21955c643f5735add0591a4bc1c240f844d108665735ab9723d81f77ceeb1d373bb315f33d921851ecf792291813ead07b31bbc20cb92fdf30bcaa59ee757cd74e7439faf5c70f816e492a68f19a70c58335dcf4376639b7b9d71de1dfd46bd5f23e021a6e798fd7c0e33653e12c69b5527417821bcd98cbc1995d725f47c2e3f9fcfe7ee73f78f75075dbec8f5d48dafc7c89d871594dd4d1f9e67f764f51a01e7b82eacf2688d823cd8a6635c11f0d4e1af11bc5c37d7cd8b7a5787a753064ab6a94ea74cd556911be192ab24496b0f26817c1b421857da882cbce0853080a1657b4f280d1550b82645f0a0ba93937395ddaa739932eefd78972f42153c814cb744500105df14c10309236fe06db9cf8813ad71122531d7e6cc20c35d09a785f7c4133622114f1b9ed317add1d034d99af86739c90f697f6ce00ea92e3f6b0ddf29cf495ae3255236907afb8fc95bd223e7629ac9bbd1dd8c9d474bcc0a7957fe81f1983071cdc463379a629974ce6382b97e9265ef063f7ba79ceff670fa9e8fd85379c763b90bf8ca0ae131aa27a57e3ae5fde4224a3d61e7deef7aead672dfbbeffddd19aa1b83617a4c36a8b3e46defec832577baf481ce959777973a7ae41e8cac3aa417541e0aa1e30ae262dac6268c2811704edc3b0f20dc109ebfc308e146a0bfeb70a3d028e5cfd5e1f2ab8b71e265e1de77ccc53c264fb88f09e7a0dc68f60eec5fa01bcbbb36eec66f22a247428a5cd7dad3808bd9816ff039c7b6c3dd280fb894fb68dce776f4df2ff7a68bb99e6d406beec6f4ea34bb9b83c2449eed96dd8949651f1369370ee26e3c5194fb1ec67d337d9a67fba2dea9d9a3af3c279978c9272fe11dd0c84a2c2fb9a1b0e56f2833715b70f19adc7705799af91ace5e3da5d2647f975356b1f7b2771e8d557767fd95b4f64d6bdc744a99e8b34f925ea124a5ef153daab0d0e9d164279596f2292e4bd15714ecc4867798b44ddf486ef2b4fcf38dfffae1f488b78773f9fcc7648be7a447477a24f1df14fc729e18985c76127a3befc9fb498f641850643db2350afac6a64dc0314abc1bdc25703bb0c6c1a52d83cb82eec192aee2554ec25db49267fbc6be5e72b96ddc0b7f04747b4cde163d4a999f1e0ddc0e799e7f07f2de9c27f22b536adb74965287f4ddda46043d028e7929e81770d740c813c3c8cb7931cf09ee069f0a2f4966b7b7e481c18242fb6ef2b4b49672f9ecdbcb19c25da0b20bfaeeeed64c94b4d6555c96d20a7937c4a4b798ffc20983e13277d11a6f6da3b524a1cca173caf9ec058e51829d9ccf5d703bb08be040d5e0840c9e6f2cc66517392f56c2495ee5db386d133d2e2f079be7bf295e121ea2abe01c9cd53ed21acf5a3da526d19a3b568f68cdfdb0fd70ab7f2a76f2e6f78ddb819d99a480ec4685ec4645ffd84d349d7cbe693c854f8dc29d57a94db8f3a202dcf919037899d7d963e753665419f5aa4596dcf9ac5e76c4b23bf184dbe1b417e39c0e251ceb704ea689399debbab89a4ca94438ed3d547538ed1d548570dafba7c238eddd53817039de6975eee57d56ca69ef5d2ff7f28ed5e95e3077e3dd07d10ef77da332eeb35b10beb9ef307722f12e6d4d4fdff8caa94a2ed08c46088d6b2db31b11d75d4ed23395702f517a8bcb7571a0635ca8c49d5b12f2d5e9e6025e9d7602991a70a7dd82b8269786c8bb546480aa1eb8fe449122ae0f4c1a30c280cbf278d3dfa9ea8a78072ebfb2f1c0078a14e1de0d6a9362bdaee5baf7a4828227e9005ee06e89ade428f7224520469224e92e02ad491f03dda88be3244e11cf31e220a1c142900ab8211ac084db415d621b2ad2a1a3f29d744892c3c295a82aa46bd958e762126a42a3454790d6d80b1909899871f67897ad0ef7021fa4358a456c1bd0da9f634374e2dd8057c209c9369437d96737eac27f41371d179ee19fd0400b06dc102d4eb81dd22185e45d18a932e5c585722e5cfee6c38557c2bdf03907053c9c78e2563ab640a9533a8868ad8a314a31c618695c23fa1445699f881e8df836459d9aa8e9af3a2bc48d31c33012c3574a0b74a3b7bb9b5e2e480743b9c94960706e0bc74517d7394d740aff6e4077978583f0c143a6bf6f0d1e6a35608b926ed398a620a1aa9ada89d6d8480f80ef0eeb134ee874275e8c91d7b428b6c6d39b6c53572502ef645f57ea68d5045ff16ef02bbbf5a720adf19960c1f4c932129699e9d564798af7aad2c122c815ad6d7c450d5d271e532d12fdcc301a13419ab03dbd217548bd678d609979a779b6013689225742b6798f8d3c9105379d680d0b74029a0e238e8840c7389dc8456c8e0b51d31039eaa2af86f9d6ad2faf4079bcb641729b4c6f4241ba962bda80eef4cebbf14440b76713ff6cde4d8ffae15c70a0dc4f7aa7354851321d04bac1b67931222a96810057a60f3778820b2fa2a865379a236b00fb10dabc88939304d868701a9447c0b22c3e2c8cd06cf3627a0dee060e0fd13b2f043963741c2efc19dc0bfc165370e1b12cc3b22cd24b7959b49754d11aa4b781375750eb4d2df659372c1ec1e6b3ba3571b33ea424bdb4893b8f00656d59963c4d3c7da4762b3231d03f13044a09c19b785dce5141a036d4b3793637ad3d1bcbfa0e528bdef41a3b9ca53a8df3609dde7acb37bd256f3dc62b5ed2b2ccd35c979fd7e52fd951fef30454bfcea31560d90b0e291ecfe98ca795655e9e5ed366a7c13e9f35717b93976155a7f7d80b0e94da1a9872378154b72c4df5cbd2ec70eb35b0b2b0b51a8f3bfc731eea062fcba5f90334b38375add5b05bcdb35858ac848454634f4d27ebf12d4da744a776a3a67e937da7deb35024df76ab7910e746945db248e4b915a3d2f45d2386fdb29ed8b2faac2a959aa7b17e7ddaeb96c78afeb9b434a26722bb15e1f12a274595decd3737f06f3a02611c42b646845e66a626123a5ac38938388fa21ea52937269150684c81db41240e747a754b7a54818ba1dc0de930b081ab712598842524121209c995be728525f3b697138fcc8883021aff601249ba249de744a92b51546555525a9514b391b426e55c4942722569caa9a81c09478a48ae24c524579a138e7483742ddb64e4c6e9fde98a37d44555a9c3c1f0e33f1d6cc37c3716776d5cb61373d72135b037495daaba2d4289505e849272b708254742a1710e5078883850ea15921b1fe9e0629ce4811b2512dc78e7e28acd7b4b20f5b81f0671726ee08c362ca0efd3a3cd8d8f50a42f7af41e87c0ebe26594fa88341be7c2a1db4302e5469c9c48833bd938814cef87448a1e359c3f260b1fa1bcca886423bd5a6976397a9aa86f2c274ab2ac4967922623330ae49be61b99b95007e3e84c0fcd4440d88510efd92ea8b351076d86d021815d7e816e2e2c3dc9f67270a939d37feff71e4fcea5b57a446d02635e8ebb019fa4f26c2a2d71a034d6bfbdca485ab3b068ad0a5a9dbfe8c6ce487e58ef4bf3c7062e76ecb20e79a71e6b0ddff86f7c8aa2aa09a45239db2f051251d49f13f2ee8c97456bf0336ce7c08f15cdb8f302150de1d75037e5321e027de0e54533aaec824a676dcee0257246652c5a831755d6690d8a2c5731a3522de535130782d4e55fbea7ab3f598730e748b70eef2e13d03e5f104207af59398945499fdfac5b16c99455f8593768b1859691b4c6392cc50e28c6526076ea6f2f272a713ba8c3c7830b3fd1bcd7300ddfbab4ecc68d436dfcc63937923ef2c95e3018380c1cf3725e9233b481e7c060702ff072e0c085ef27820bffecf6963c145cd150dc0b0e0ee44f6cd90bf7028fd3233e8284b1204215ec85172f660977b1648b2c3aa747fc640a5ec255c0ab0494a5c7a3e2facb793197a5284a45a26f2fa7a1fcc08bb704bea1c00b09dd9a09930ba7785bd04745ef9180bebbf79b896bd2ae9da5e2fa171d73d9be69f602761856fd42f29ba2ed6372e1cb712f90975ce9301e3af88ed2a3ed1d8adb2107b7830fa14ccc4c84efbb8cf5e5bc295a8394920b3fa4e5a381db51038e6928ac830beff801e1c257840b1bca8be11f3c9b0b9d70e119de824229fe10869760433942b24e7641e11de497c585cc554e4fd1a34e02c6856f335cd896bf98a2635ce5f2969743c1f317f01dbabc4544a3b18b737a248524badaa3e2ce2e86dd8d7ec4a677dd2e08e13529f702bbdbf661a68944ff713f96bef193224584641f7c37ce00ff32c7e739f32e330729e6f3e8b77579cc3b19ff41283d6992a214a9ae34f1961814dec1b3db511d5aafaccaba4dba9b913e397e6f900e086a831d1b14e16e7db8bd3765dc7b5b9ad8130968a18f1abefd7709a9be3dde4cbf4f9b8ad7fddebb337d3e23a1bbbefaba2173c36ef81ef39d422241f9110b2637c3e28a4b2f16bfd1699299cec730abad87859ccebd2cad98a4dfaabbeaa7a9e6a77373da6dce4b3967143aa735e97c65a74da23568c4114ee8e698cc6f4142972681bde7cc3c6637fa795d806fcae3755197ddb06318365d5722856276ce21351902301e93884b8714c282a95c286d6a911e6940d10bd5f4f5e1ee101feed6f0f5e16e768e428b5cca32837dc667d84d32333376961e7d67dc877377c67bf6e83bc362d9bcae6b66f741ed463fe37c0dbc57a5a1bfeee4baeb2ebddef792f1ac6242f853dd8d7de3e7f3398fbecfb2cbacf6953e9e4bd55d2a49b012a1ae641de78897518950b7b28e736467a247d36ef3d53f879780db811d9e026e073dbc1028ae07bacc6eee8bebdc4b25846f4aa50e0a6d3cfaa65436c0bd3ea488110318e07a5e240957f615fafd54167a7769e6af8358a8fd814dcb3283ddcb7a3cc7aee73c5c8aa25cd3db4abc1bb095c02cb5d4547d5897978d529dc92e36a9dd825c7aa70f213cc6c5eedccb965d5eb4d25cf1f7cd1ffc280509b144dbc3baa41042a843d35bffb02eaff7dd8eec3c794efdfa35ada4ee7abe3b1f4db273f932f5dc9a32944844e99dbbacbbfe261cc1d7b7a62f35c6183d44d30c80be9a3e40758e4237bed8af6fecc36175f3e1e27db82b84eb506d4418abe8b1fa6e5687b07ba1af8177569aebf3b22c337de7fb4e6af118d7aa1b141c98c9aaf4aa6655573cb3ea58085f7edcd806c5c58e6d941028eef57929d53ebddce1ce6fdfe1ceef70af1fe0baca22ed0f03dc8959961903dc7903dceb6e8cfb59afcbd2f4af5fbf14453d77ee3a75d1ebf3b1d475d7dabbbc7c5c97a7dff3475f1e63f9218f1dbbbcc4e4bc68ddae57bf8e9dc7bb8e55961ff3d62f1b2d0ba9d0652321b630681c2c9c5cbe7c29eaefd1e27747f37e549608eab5f4a8e59af56265293b49372f0b94dfdd850dde4b9224e94931fec53e7cdf700e13700e3e3cc3ea58c8f4dc3377dd646864890b68d3e8de5ae0833647bbcdda83cf6e35939b8205947396c0ba51498ad544ddba0e0f1e52131627516b5a43c0651527cb4251353dda9ca849a2a2a669aaa6c9ba2468dc245e0c45512a1235710830c2b22c0b72915b2bcb0cdf02a24b035fe47265da14cb7477b7ebf2c4d0f229a6b2274992a418a518a1d402a5e2fd596a31c13a3fe1303ac6fa3b47e951f677d679ee4dd9e5a7795d4a37656a9a5080bbd23e712fcbbcc4f526ab736f6475bacc5c4bb401bd9ab8d364ad3b0f587fa2489d6e51d603d4b94ed68a987d6bd3a9ea01ea4f1429825ae2bdeb4d4160a8bfcb0f1c08b56dc0c86d8ba9c3bac18daa345dbd1bd3f9895e84d61aa8bde0408db01429218844adf55d74503a4d816eda6dcd458711f1ee3611b775e49b2d7d37fa92a22a2b45b6e98b845e2e2ba0fc4d7b614807437530f16ef4a1ddde6160605a6bb8043711c4e93021ba3c5e0cc5940e8c103aec4649ccac19c116012ca05cd08da2288abad20a5aba8509393446aa2cf56eb43b455193952cebbc1b2ea011b2ce8b716deb75e6268e091fa937173e0bdf43175acb4ef808e51644d9e241518c45205b40ba8e814550309a3046179e2140317273b3eb9a200617976a8d3f841d4e7293c9eade11eaae2fa4e024f19a668fe7e09cc7b0f3780fab959329e7b41910ec1705a70c465172564ea4b48ea4569585b2eef28c6729964435c083f1240c282ecadb7151dc1c712c85eb254dce84eab081a1284a35a723626eeb554585f919ed63cbb22c2bde9a735ac6b961b661d1ed9d17f376627765c58aabea55e56458d62d86d7aaee3233b3757e647e2ba0dbdb694239638a52d914a817d347d8a74396cf3d77d84e1d8eecf4c835a10e3717bec1806f282dd73a65deac77bd5a83941428cb0cb4b1e68cb69fc8586fe77a3bafe5be9d17c3bcc33bbc436dbf27d832de138a962278f018bec87df05a8f91d9b2601ca11bdbf44e6b51a01b3feb45b67afe45418d5cf88651d0f9ada34cdb61f4936a1b8cd66018fc3a6bfaacf3fb546bf87eac8cfc7b0175d77acf781cc62a0fab36181de38ae83078e878a8b6590226d3b0cbabb2e26cb659e2c5b017ef067c8add1eb220fbb14e5ac7b2179f2c8539afe5d0e47d734c0e3387237788eb9a20872cdcded17937a0dd609c684dce44e474b69753d9c0d8ecbc1bfb2ccbb22ccbb22ccbb2a265cdc0861d3970ef549675c86251f03bd79c879ca4472cf3a13bd9460a24394bb897d7362fc609cc122617c1ebe8409d4fdbc082154faed322e78bbbb509aed3a20a2f9e5ca7d306255ca70307254eaed322878bbb7513aed3620838433092448f44ad5d0d703bb801ee250e46aed3690317776b27edc5e530180bb78379092f619d1e3d6ef2f8f5a5ee1fd1da11b7839d7ba16e0b47d14243445bd8c804e549d27b316e41a24430de73cf3de75e7cb2c24da090e75301edc755159021843008ce4589a23b8a1bd0fec6516e33f311645f8a30a25c38dc5ca7d3862ceea6e30d595ce9a6cc3b42ddbd5a40dddd780aaa47f11c82e9d18b489c6531e453015d82b908b300a81e51c1a1bed265f98ae9537cbc7457514149d39d976c7c85cc55040fa6f7ec31ddcd1fd37bea6992a64b557a8dc57d9697dc9702e6e9dc67c7524c4fbaa47ca17bfcbbabf1d2735bc40b33bde90a0f5a075af2f9fb1c2e6998842fbd93f97a6811cf73966e867a9e51af7e05abe1a8640d35c5512d999a1900008020008313000030140e888462d1803424da164b3e14800d9eb2507a5658b32086904184000000000200000000000041000056a0af94cfb75891281301c23968a8a649c4c9b7a5d087f346e23be843cd3fb16b24be160c10b9613abae2130e4a2c12cf6e616f9e1ec674553aab398c19bf71a3fa7de78ade632a0caded87558d5b9d2e0a8e02e837481498cc5eec962d4a216cccf0d2e534484aad9b10483171bc1eb398973adba695afcca54518c65ad6a2c83ee6549ba7320e56f47b6f70283cd4260e8d158020ea0957e545a3253b164d3dfc298656e7c088c42d1e569623d9db0c2e9f51393e8ad61d19a6d1ee67ad28244eaaebee562cf8d967b2b7525fa870a70666744cc22c1b5f25bdcddff003e9fe299e1b5b5ec82f4f273b6bbedd5497876ff325cecd52a06626199701277f05e2023b29d459e0b3fe0dfd4ab27fd13fdfd50be092339b4e52d02645d0d026c8bf4bb97d45a208dc2f2f706d299f0d558b39914ae184b4885452fc7b9abf93e9a043283890483464dd1d316e11e2de2a43a23a279dc33df1672811996849e0db11bf0dfb76a8b4a901ebfc43c46cff11851348f6f492c63dbbd9b0e6efb9254c83b81cdfe48f152e0603e917b51257e9eac1f7dcfe4f604e695615056b6834b001c0816495b026f46e4992b4846f8a58de5eca1c5c53c35947551dcb677cb2d32e48907e251a8c67a8c5996e7da7e3c6b50b5fee4cd0c833b63b0e82944b2dd5b9d463862aff772906236d93a7e4380bd16cf4fd049f42d020f799cf4b36e088576937bce8f3fcaa601c95f7647c4dbb245576ca8ef123a6db6f4026d75dd4e0bcd6c3cf4e9d819350c1028022641f8128237dbd091012416b8d30a6b35026cf5788caa098ed177da567682863c68b81619b15343504e0d73ecdcc3c0b3baf05ddc3bbffb05757152a6f2697921a0beb0390487550b13931fcb0f9034f187e2841625a714ce067e0bc76d42956aa6f1fd698214a44e4ae34bda9d9bb0c5b91aca093def579ba85dd6b0e791b611de21409cd3d599b534fd442ae6fbbd445afb32cba2026355f8fec35eeb0d3caab2a16726580f573611d1d3180caa0e3d4a69e9f1c8736200c7c645ffb9ce86e6d7ccc99cc0723d8572a086964d08d2a6cbfd2d048b0e3fcdf4aa6ec683772f775a1a5bda31396dde2bbd434404f84292e8351d94d3fae823e1e077f6d733dea9f1936becdcb19d28a394633ac8bbdb54ab8a22cb018555f8e1eb0f2d3faafc22abd1671051f166c29737a43871cacbccc4b1dafcf03abe47b46ed3e34ead3bed21ac8232bf2469de9532de2e702298d21cdf445491bba0f7508f671d621af68eaacd5471a88d0ac0ea74f54ce7a790e6a15b1ce42a6d15f9a6e2ef99aa23010523ecb33314a4f893eb3a52b52a98fd4bd3a5227c0b95ece4c8a3227343caf3f92b1b017483c823993416fc2b6ed2b2578728d6e1cc1c70e7c895bfb546d5512e1358d68aa7ba5fd823cbda5647009b7548f83c5e7f4893b4e479c947c9daae77773b8b7315a8039d35122c8a632d3b001ea2a1e59abc1f2a8d183b874c2007e6f733a0c7603f4d6522de4d5967dabcfd7a89083af0859efbe8435c3178c7cc18323902f2573f93f1602851aabaefad27f461bfef6870c939c02b79f03b224dfccb7e2b67a0bc45ee90d32068c013cdf0f0d76945e7e26c3a681e29f51026ba3abfe36293dea9984b18ac62c49fcd559511b04afceac047b4424a968616ce5f765d60185c64110b2a6c0732e187c54dacca602aed198a2bce9b65e999d41b7f112ee681acf33b4eb0de37bee4fe4d3d711c8d9a294315290d742892a7cf17ea6c3b464bb787d813cfb5075ee4ea6855645509d01f4fba52b062bcbf6ac69ef0be08f3dc6c86f21b577d7a78eb61681660b85068177a33365b40678b73398db25313d4f678838c4579ecea6956b36578f09b9d8a274ea9c5aac02e9b1ccf05f84fde76dd7fd81f097ace2188128705cf1c4552504d6ab030c7ea938aef75679fd25ae55fd58c465318c8d68a017d0118d864e8ac80619aced830f0d641d2397a0930d9967583495d4e3bfb238062d61b0911f1b2c9a79d0cf4685e873144de05ee9f50c11a65ab3d2a2635156f756a9ffe152aef27b046c39ca6ce8866602d7dc29a629d562ca253546e43f95626354ca9b5f86192f8f121988e1cee79959adc80ae2e791d55fe4c7710404e83eaeefc768b45d7b09ba64cdec304ab87309b2c74cda7e1227ff37dd6826575b7c5e4a5d8ca5768512db502ebb1989696a3de8688873f93cc95a6ce43f48b474eec745e5f8ce1908f43eb19db83cd1ce2fd7eb8d60c46c856880afee9b2cf4f6797241909a0ee4ca76942b9241faef16701636db59db52d6afc75543c4ee7fed08e9b60338a3448c1c33b3d1d2089891ccaa108c6f0724f2d1d672e2edbc9e06534635dc856beca84dbd7bdbc099024a37870a7ba410a3ac45a931ec536ab4bae33e4d365392419338ab92059fa80eee7ca7b7605c55622a3d9484fbc9dfbeb43e8cf270e5f40013d702fa8c091f4cb389fcfa135e2ed74ab30069f1c2aeef3fb6763df93904c05cfa4f063722653670de056383e9909dc7436c9fb012b11f2bec9ebbb723da0cb938a4114e4358b27823b1a11e4b66e0354a1bb2b5c90ef619b8591cfb721080739a942b8d58c0546ab8c73caeba851fc2e155c5e4389a53ae2b112156a764825f374d2fb8610c07b3bcd0c086820a5b71b15325e24cf2795281133d163c6e3128591bac2d03febc8da5a538e1154e2b25138d35831737817da8b3cb0b475cb40a49ea16f7328348d609932e6491491d64f5d0138a4e045fa118ddc5b8b666994ca2dbfb4e5155d8531819beb20a764666c32b513c219641c02217607df05b7c85ab743405a031f98cb8831ec0cf1d9c287912f12c2f4fcb0d584decbda9a251fd6bd4c38828547c2727b124405c3b2ec1fea8155dd8aa98451c3441b849972425f6003757b3eeb867627f32a64cd13e5c6a056c54640c32d082fe87c6b5745c153295a27c950310871e9a7d4881ea1abba1b1aee397a3cc4924be5e11ccb7268b9099f04270610c7b41ec8a11da2eb3826f0cb4ad3e0bd02e73400efd1bfc481714192a1b40c13735a35c0338ad8e5cea060c4907a672a2032dcf4edae6e1c874687a09514fcaaa13369fd19eba74b28beab1fd048fecd3ce1c82b891337fc381dca593810fd32c8047a54897c1375c4fafd6a6b8d0f8d0a44fd38b4a1261ec675a1531f83c9f9f23cc0681c2a9333fccec730c88d2ad2d4a77b6ae372160948bc1571c089583952f2ac4ed8f08912085e12dcc6dbc708bae8f02ae30c206581e1be1fb1c62a50d9256e647d238c2ed0ed6d622eb6b07a13850f6e17044aac2a55dd2eda95ea841d324479224153dd87c409d41d20137ba7733c7e82211a8f5dfddc0bef0580308a22afdb579086f3771de0e163471a137d6a0c7793bc28574191c3d2f68b10e0866fc182a3fa63483c5ff886688226663ff162d080c8ee72b1e5d0db1a023d06f96a90ca3954f255b6f71b7dd5021803473970b5afc39383f0c7aab0c581bf05bdfc19efb99a2868d49580b268b82789c5910e4e141cd8376cf92b3d86eb873edcd71bee2904ade70b35b4a1c0e29f21b9569019aa71ce347ef61c060e8375ba1ab0dcb0ceedeb3f36a385a66912f9341e1290c5941e23895471db53526ad3f42ab0179ed9c653fd7e75e06fb06cdb0be60a82d3dab3336055f040eb4f4974cb4a352cc1cdc24943d0acb41e68ec099e138ab22aa840df4d16179519a10a5e801933be4b1f4a3b6dc7cccdea37076402c1bb35f6ffdd52ef6c4346faab723c8953a5215ccc42e9a54e512882a950b0d7d5386ffd480a615909f4a3ef2eeab4ca3744e50240c0e90ee25eeb431d37b72bf4337ba8f3dc76f14a6b68be0689dd45cc76a4b98a4b43fd2b00ebf8b9ae25a37ea7182efb1101d4e56eb38250c27ad997066609e767e2af7272c53ef69d611c40e987de00d0dc25db8c82303a9facbf32d00fc433e9c80cda501852f63c0596cdbad83b9c4443fe3a59c73a9b179d5dade73bd154b087e8eb6701dfd590f134f8dcd0f63032b8b6a6261af9e283d1350419f89a3566b802c69df28e86a3a5d59d94c8b279b2eaa1ade8e4dda0e12ab3de1ea199ae90d4357aade6f17c9fb901e06ddd7ae7406440151c5309ceab18aed0d94b9a4bce25638e8f54b43c8b17dbc626fcde7fff21d7ae056edf1b04b5d148ae5f151568db80c326b161045c4ccf21bf508482829726715dde036b38c6db144d99efb129106db1d5c3d76efe30699b01206426a983935b684746d9e80b81b061dbfc3b661d8a1a25639828994fe73d80e639a52ca1f5f8a1c5e4e4a979a1504bd15190d8952c2d8d73ad95cda1f139085c301d8cb2f277de812c4876eed12d906970012f6e252c10d403f4f531b750e15f8a72f33255435f13c2a20afe71a195dd44be76df0ccc6f4200540033e104a3e9cbe3eff0dde39651c7388ffef3c14915fb6ae3178cdc57c1858d1c28a9bc7366bc686cc2201193b025bcf162ce538adbaed1ac9122ca5388dbad515c9922d9bcaee1cbef846f6e29d3164d56a402fcb1086c1780ea1362422aa6f2c4ada80872bae2d88f1cb0f6af4e940cd1925b0e9dff11e2189ffcbf38b65322b10c9d766919c0383381e17e6cd42ef0f78d9a3a0f4cafe61de2dd9ed54ff1f7ba3f1bf328b48053c31bdf53d3f0620a42cacbdcc484b7aa9f055fadaf7446f3472a06e75151d981cc6e542cab9a63abb6f27f02d16e1120555125748a1db279cf90edb6783ad8da4787b65a4d7fd4d60679a2ddb267404fbe2e1c4a406eff4843e481e04b542d7e35fc7c8d28c2b25b79b4d787198da4532fea8b7ac78dce8f1be8f7e93b8c478313248dacb1906f1d245cda29d8fa41d2e124487f0eb52949dc76c6edf9bbac13639ae156d514846635840ed6e11bce08776e62d92b15b9c6efa70d265e14fb1d57ecccdc59a0c27c7753a222764d59a8f6ea9795fdb07022e69352b47f1200e1e7ee20a7b4268ad3d97b4ed7b5c00511e6a3026f57f0eba421b4e92141f9c9566d5cdd4d6f19cace9908a30403c8377477153aa552c8b268405dd35ccb549d9410b103d45de5090df11793351ab43a47a106c45f0cc5ea0d2ae49d961340c686c20d398c409d1387ae2747088d5a04077a18e5df45c57c8a793b1b241f50b8b3db64294453bc5c85ca1fe4305704c09894319954739647c5fbc862a523f7c3b79941e1a5db7f08f6bea9a9a0d71b8b76038a21aee75c06c7604948a90265da42fc2f8351e0b6041734f4226577c39b114cdedade711c3290bead861b841adcfc37c2ced87f9c657b8c10880e7cf1481fcd51ca7272755fc4ef06b48f2c1c18ce2243c0812a9facd61c11294205a93f1773275b432f8b939e5b9ad51927656dcba8e526555d738967eb2d438082f1e5dea312f5f1c28e71674c7865868f9d3566ebe77bf1643d79a011598e98852ef4d15dd007eaaecc076c83c727f2c3d15d40a51ccb941396a0475b17879f176efe593719c4ec4e4285d23dc7c63039b53f0b737882e330e83d0a756345163581dbcde13506084d95659e2dd9af5ecc2d7503ce576bdef8ee8417082ec4fc49c7f6c8fd910875c1cffc76e705eb3d98b0b4de7b4dcc390680660a018cbf20beec1aec893aac3f9a6d2b50b7785a28e6550606526b746d47688d97bc9c9fbce77f4b4bed08c8f4ea3a8aff51859da70d8fcef9ebda8f4ab5a6a30e4d1088d20f6be67f5345b7661e56f501e29f12aac01c8a566c88d45974831e286c740a50b2fc49f4baa8db5567da3185aa608b92756d37ade747e4e4654caeceb3e3c63070e8e56c5d607888cfada671ccaaff8a3e960f19a14f8eec7997f56cb052f3981cc9c7fe42b57f629f2517255d577731fb277283808a0577a853e1c6310595f7655fb0f8bd2120cfdc75873fe2092f4c97d5c912eac6190c9573c101dc759b74184fe0873f886ee484cdd8452287322f20ea793215b78b52d94571286f897fe5acba68828f6a3fe4b9a370d5270a1985b500638346e169b81219b3a63450899dc3f53ac6700e50867d0d1c08c9e0be6789504c644acdc740896a7bd869c86141206c5e7b485fb793c28e5967c3012ef38a5c09c2b9fdac9c050d2d92a89d61a5a5553f8acc3d9fcd47e11e4fcf328b3d681925fac7e91099bd7d80eb708a91128530c354057b0d844991f0150f547739f0b4c6048808484492976a7d0a2c15a836a8f5a2002e8ec7a50fa50b20de26c6e1d41b98036aa88b5e476a100572daaee1c1439bc3af482b1b0d7d7d5c5a3e0b9abc7f39d96b95d1936e189a675765eb50ca829f88b10b8438c52cfe52a531bc23342a3801e6108de6c02c13f4d527786e515d01b43fe94a2891a41f7f43ef8b982266f97f880d5228ccd6b3388b71a32ff4f088fcafcd0ec077de53e54458b88406f75ea3c82df25ed4ee934752881b23832daa0d5b3bda2605c1c5598cc2d14c299fdb88afd6e2b728fa6189f5fee1547edeb924062c1846a7c31018f68657043a9c6fd04904aa6957283d464edf43588186c768a2967f4ef9dc4f24857fa0d949f4b306d3d658a0adba303c427e08d96b5e9f1866bbaafcb6137b41991f61d5c46e2931a662e55b135cb4cb2a8dc57f3b1a73b390dd1b34bc40d5767283871491f3d3ac51b1ea39d3fa2ed74a2fa7245735154f6d1454dccd728914810cd5e54a4a629a0d010b90af256b78fa6482c45b08ab04500d061b43f4fba66627def7a9494d2e61c470589b0974da362e5df87ca88dc3947a57bc6576381197fc0cd14d8f608858dbcd4d02dace8cd6cc4aa5ecd297a212413f32c505e2382c7c63c8b0c92cc84aee834b628cd6b36e77faea1c41bb4c5d964d1888bfaa183638d512bd760b395439e077283e9fea4f3434e7f5912e32a87e0593a44a1ba63df8f34b606576f1fba21ba4ed6044e0639a08e22c8dbed1b868bd480e2e1fa726cea358efafd12c09aa2769b44463d2c10e0660d278609b52228b29aa10cc1a01c1749186c5b08e772a812c13b55fe6c615e73d405c9e7641e8746619c55a520268e6cdd7c72ea1be716f1b2135b58fa80f1cbba5c7da652c0429ae2961914da860eb95ce8dabeb430128e416c1051e8480043ea9be31aa2ef404e430801042d986507327bbd485ab61360e20eee7dd160558a02c7078ac62cd640ffd05855de161bd4c3f650e43d97b5299ecf45478ad2e2d9e6c060ca2f7c8c41caf804a205209e27dd42fe2de0dd4f4019d47e4acd344723fbe477b62eb5084cbb4d150ef42a0cc2a281b59a4d23a7084ae609caf7142bca782526df078a8075547ce1e547d43b01f6f934dd58fdbd0110f266e2dad79927be8edaacf7183c444ceb908c7c753c9f55adb591a389723f63e27f01848e7d402dcd0ea4f6ffe0d0d611a3800ef7bb712e340680a988dbae1e887faa63d5309b106041db18bedc27800c4b6eec7b653810a3d95f77ba28b6ff170ef472d8260c7cf865a8f524ce1e96d0a6371989b2ec3c1c70bbc3ef385421340d4fe163b62d19658e93709b5176d7e3fa2bbc89e771131b9afd6c124ac7b8364788230e98a5498d666e425cc72b046b881bcc94f1c9265254a60da15554c992095c42233d40d985981c00ec306fe8305ca5cf46949659eb6ad591a0a93392d341cf261783fe434df2d5abb485e2a55c798e94779f45ceab448331dd4eff99e52e80d6462ab8ec579e029350fa0d31c6ad39027c1b32d93e28cb33946669522a83f3ac93c4c837ef00716636c05cbc34f9859ee4f765f284d9c25524f328e2e93a03c8ae882a31566f2f7004e460185f50fba1284281d4f1d2849075a1b2a9564779d83bc70ba84f6b58cde8575ff3fc533649e4c05bac946248c81697625992d06a0f75d2aa07bc94c946a28fb8504c2155efae6b58ffbfd957bd8a92f6ca065763810320af759db16b7a1e41e52ac25fbaddf3e25364103b351087f36822ae0089af80fd9230c680c63a92b78849351afbda33ad7c34cd04b1a89db6c532e1cb9daa6849f482fc715f59cc9233f2282743fb832cd1a9aa3973ecc5d82835a176a136bc02afc9b856edbd8d140bc0e756a0babb24fea0409103a1e13a0f443f9cf1a4c40d5967a900e8879aea84832446a350e1c92546b02dcaf044044514f5505b673c65ccc09c1b1a7fe418f84fd0b4f93f40429fe030e4b4e0bed8458d2ff0e5393e915107c7d4a02066ddbe1c08d92a2f923d360242d471517cb22938f51e22f1004928dd965ab6c2d2aeb84c7dda59002db38d13045763ff6135481516b5257e9a131c9eb36e1955a1d89393b44f3799954996c2d86d2f79aa4fe4cff7217a5b3515328e7f44c7ad590e2b2411c92c60b7da191a88de441feef6145811820ce3c9ecde8afb94fc57f2a48b5bc76f4ad127c5411a25e885370e40e9c5c11a6d99335b12c75ce530e69fd834f58e8a46a9b118478c79de8846c07858191254bd1c71f0037d29ffc90484b5b26e71a3617a84ad27c01e3c09f8a243ce96d5757164dc52f2d9b780ef24971e9e0d08cc36f8833e42f11e7906bd0680eba730429b9bb8f935f4d62d273727013056a99f37485fdc81ab1609155f1d536d92ba158129e06f3502508b40d8d8decc98487b5c90c7f8cc7d5b5cd76963aebe5b1c566ffca0e351e5b974c686b135d27b6f1fd55d8188b3a6f57e40aadf58b61946e1882861a28b76c5e01f9147c9593b2c093ac21ec4f5663607f72d9191dd644bdd4979323e14a810c083f9f41966f33113c5c2a0c8d2ec10eb46ccd9793314ffd0f49fb8c99afed859621a80e43ece33dba4fc34dce84110807eeb781bdd047f221f3b94168a910bf81a0387a8fa05f6cfdfb1ba57816dae4cf47c163cbf75354eaca8d49fc72f0132c08e60063043ca8834af2dc3819b095233f758e7ad753f2c9495e00eefe02f756edc35010b3b30481d6158cb1c3838108ae4d0c5cded8dde042b29094fb091680683209d6e7f841ba5073c4088abc07f37e1ac9c34e4eb6ac459a5a39e839366814358a8ee92543955e4fec529161dfb6f7ea209b74241fda4276ea77b857d1199b6ff11fb1519ccee76c0070246a0350b39dbdf63bf068389e876ae12f114dc517cd22cecff683490199e032da0277eb5e1215d1a4d4970146d1265fc0ce11f2835cd6857cc6a890fd3fce38b1526520982e54b0973de99cc09ceb99f1555b8b99b9d4c7252015820cfabee31baccd58a56b32472a29c56fb4ae0384048bef62f9b4b36aeb9dbb2b52281ccd67ca91155884e955825ccd41a106d24b44935249a192b5eca8a10d3818874fff05f715b608f8d90ac97da496b7a57030c65612b17a5fde936917847600609209ad167c3ba62124e3b8f48f7f82cd8518e6206900bcf8a69a70462622aea99b83791a2605b0d3e93ecafdcbd0f28b76f6cf386e893ca27757aec6599c90ec61147a6049d78e519affb5b83beaf0facf7bfa7b0d820434d3c176f97497f093f8a3c71d6e403778fbea3cb6f4b5ef2f160cc3c904956cf4eb71ef56f6d0ad10148553164e051cd36a3dc22e7ecebeea6441ed61054f9f136dfacb3c6f4fa727b7bc03462b8a4422fb8f4e372a8ad1836d9d5415f004bb48378b075ce3c3e43abd9ffa13b058a81061eff5a699270805810c034aa80af3e1cc783c26d25718f3476954cb071311005b3cad930ee047d06abc80eee8585917a588cb1ec9a526ae8b6b90c9334ee929a62201db225ff4205cebc22e4041f86f21d79f193dc6124d844b6ce69bd0638abc234228277bb1cbb9962551c5fbf62309616fdafb2c339da5542c74758ddca22cc92bd8aa26fc45e6be4dbae1838eb63e55b42d18cc30ca20fe505f284eeadf47724fbdd4529f8a28395a482ce7dc7ec8927d524be4aa798e14399f8bb55caa19d71a6f465e9ef149d0e295f96f22f948b7eb3145c964e1f5f7235ba1de964707e30fc3667e33e4dcf0d46892279eae0023f93be278d3355d17277281a0ef0e4ffc451a4981ef3e8733ac73a9f1e1f849ec76eec8d3db12db6269cf944eeb9d44986e99fc037cbae134960c5a24bd3e33f9ebd2356fb40b43886200e93b928c6c4961e2217f5eb15d69d94230ba56878222e026699e52be2aec156e23b580ad48232763f459ef02e1f65585efc8a15db36c9f6878f1ad93135cee8b65eed370ee46affb943895ff78e9f0c7df3aef1092e11e909e9f3b0d551f27866ffdb191ed5fda9123d904c961fca0609cca6dba23f29aa8b88a665a52a50838db8f5637e6d79011a0e2a268d8f62f009c9e4c1b1ef59992fb5967b0251bef2a57b5486e41019e9229d80083ab546a950801f0827417c9ef7de5a21dc4dfe3f761baeee393656e324e20faef6ab9a062c0d29d4bf6ede1e285e2ee975c2b99ae41c68b42a4fa832c3a40cd0df222c782324b6608e36a047c7dfef12f08c003eda8c0c423a0541a9d3b2024690761a09b7f6a082042958738e9b1502901364ae6032692548fe64538621bb0be88eb8a9c6eb6ded998003a1c3455511668b0a36f9029f70903b4b04c1a54621acdae5e496d3482099c5b2f7d11da42a676ea230cc7f33d3290d082a858cbd227ac83469ea7cb6c601c06b010b476ab510efec03e89b50644cc69379832fd0a1fc0a05372e8c79ddc86a685b759e497d09eef6a3163f7ef5b3f6f12360bf1e305f4189774c868f8212a370d57c30859fee54b0419de9770fb133f278566ee4ab580c48e3fbd803abcf01910141ee1cc471a42db2854fc1751195e2228c5c0b202dac370323b0423b89c84109bbceb89a6becf2200d875e586dab2a142ef3ae04c54a048fb6627db94e1960f93c77acdd425cdecbf7474435f9e77f482c1083ac333d8066bf791e287d7aea00fe8a3bc25f404a5c6d63429e9f2837d9c4ed630af057b921559804fda5249dc0aec217c211d4a51f68eaa7ec3e26332c1f5584d6979396efa0c0779534d6e775718d787851e7c7206f9a1fe63dbeff9e3fbcac4952b2a20f745778ba3e8ec00ca6ebfb08d07e1b059226fdb8e3ab83d577be998fa73b587d4ecb416d48024c015e5214d0348deea6c47cf9a6ea5a48a573d8d1a5115e0b2e4bdb91d10a4aafb82858121d3209e9962ea2d6dbdafe365e62a1dc7b60d6621cd8fa59526079e3c818c9b7d0e1461c1362b2895f0c6b98cf07223d8cef40e369a5a0b721928852d95027a8331d337061117f8408916b3f7d63c8a9ef0a04e1ead5c8976776d1fb0d672e81805cf2fc13df8805aa11f8a6882cdd3b8c2ee39d382809061598549ccc6ae493e7bc0b4cb347918a2d806045f4808f729bd0f05539f1af54ab66d6c887581667fc596ce00ff110bcb4fe6b53a3f8b4b3038f7163d34f5d745278d3213b5484be26a9692438cab11f6ff556c1a0bd4cf7607f7148ff5f88cc1e488b2d4ee2cc844601603c1f3b6754b41e570235ac39c67a53b722f6e94ce57ca75a6473b25852bfa5f7c17207b2933dea06d0bafe19c57fe6ce64a0002005cac1c8a53c5a447b2a68e152bd6b21558535a0d619ab843fe77b8b891cace872cc16ea4576352b744d1555a78fb19a0e1f2e1daa5df396b084df0b1464875a309ad417f5a9ad14f36cbd4e634a9c4ffe38d9f0b104a29c1091a1fc572f08e3487074e7a26f5f0ac21e56ac73343b46cd5bff54cb9646f112637045db40e27d7d83a2bb0b3162a7a66f8c88536e9c5a7b7a33afc3fd6c6673e793a6c9bf3606dbcfc2a97831d102aa0f5349ed35983e6010aee96504026b39acdc9cb183f1075ffb7c6caa1d30552d84124e23aa15fbd5e4a1164c94d346cf9baf4838aac8a2948a6204eb1e4326f8ff5b17913c1a9ec4ba8034f990541541ceb74fc752efbdc8c6de343b04f6dd7e2cf6c3ee43843aff51494cfa21a6ecfe9b8f24a4705d91e25c14bf16ead5c6b087f155e2faceb0bd464d9a00459f80d260a315795f00ede4dddeaa48c5b13af85d57df9a6dd0f4bf3f8e6bf657fbdb197f18a1bf4c1a9a9bc20c594a147adbf6afbdb07827febd7af34f71a4468fb80b1ad1066c5088061b510fbb722d7015c4e34f324d46e2041cfd19566c00f0f513f98d42f8a7a777410433b49cc745b0c5ea6e6b56818afcb63029e8ea635a68c841ab6e77e740f48fa65b014df04089d6632f89f8999b4185729ff7a47c4f74a62523701607abf8f4d3bc16ccd1d5f71177ba21b10fd116be74445c852251ff4a2639b9030d0ecd7d93b13a50421c346d52ac4f3853d50fcf204053ba3f81c300d30452612705133fdc85504182d91a7c1308ca1b7f0f17308676615a9eab29b0d09e8ddb84275c7baf7df1260a6b750a68d59a99731a5951f5855e8b2c36b3b0f425e5f18ac813976bcc75969a5d1789723bf5bb42825868ce06070685ba18a304da142ba3819b166de8d2099f64dfd254f5fed5c939d892355a3cb3d6ac94380c9e3c3426044bd780aa27111900bb4903c8c81eb6e6e597059cad5417a8592f9e4604bcf499156d49e39edc17cc86ea22ff5e23714c8605a37115ba9d2300056a5074ca052eb8e428c8c7f6c0fce70b59e56f8e0e4c3f041065917efc23310070a4ebf5ceb9338a250e33109105d808de289f892df552673ef3c150ebf838dcbef8c7ed53783a4686e569ee9b5e6c4be1894e788c0f3fd82a53f707f738ea38057f5c2d89584681c36c18dc93320eef347beab80af5f4e53591a70bc02bfaaa4af6c6db26874a274429dbdcabb829bd76a12a404dc19346b90d3d6ed9c6d8b1300bee8afa3554d194f164bdcaa3c8e118981a411fe4cab65624f476a0525ca40ac9e29a4b26a01de69f0839d28ea154f1d1e6e2f12ff84ba0e02f8dd8467fa4bf6356b09719f04f31c80b8cb53ed5273a14f2b9b3b68c0bf01fd03374c14486d2cb74a388fdfbb97ffbe88257c70c314404b7213e363910a9910d6f6153db494bce0dc4de9a7f5bcfdeac77fdc64bb1588f5a2933823397c3d046cab9107f83b35fe3883eea71a89fcfdf7252cd4dd95a399a108bd967d280aeaf1b701a7fa4e007fe1d41e4861f170caf3d5db03df8de618d281e0d84b77798cd0c9312bb77c5befd00b813cf482e5401d5a96317a0126349b747dc092a22fd8b9f06790a5c17a4c2442a81e2c817982b142cc0fe5800ea7abd5e5beada8fa542d12622fc3e4985060e520451f5107393a9a87189035ad6183e054d7298540236222e7ae313df714dc5aee752bf81179f828c4b4e51138da7d79194beee97fcca890882ac59c3b9b40118db6fd0d0cde8d108ee1094d88c821a33452bee1af6c3c161fab626024ff82055472f92bba49b528fe22f4b432c50012012759a1994e4658b8b17f5018794aa7d0ad8cb96fa3d45bc21b9d9a40874bc84e9e4c67e3f58b734d09e50a8d8b9f93e7f0b1cd47a3b81d20e20fcd523a88188e7840a0d8d2c1136ed50c333e327ed59ba02342bd9f0d5028d33db54c2cb60b1061350d42c692553414a0f55e505461a07d727c6981c6190eef21ea313a61756005123dccb0aae9b18b504007b808b795c34d3f3a54045ba32a7e66f22a6b8c007044cae3c9982331cf2181cd5cc4ce1ae417e17755390813700fa66182d9207c03e2676ff2673003a92d0c0f3ef52dc49baa1b7d177bf576ebdb0e02892c52e11422d8ee7a8c11e3376fc428513c58f7b645f7623b118c34f107ff677ec16d353b3a051682f95f50eef10e3ffd8b2c309fc8eb478d54eb0c00c569e6203579c1227939d1b291984d50b46726c0829a3eb8528a644dbd16d25fc5635338909770660dfac51a3ed0b196102aa3ea5ba2fb1eec0cea6a671c37fa6ea837e0517e4aa23817576d8b7c66a37981e89cdb0612a463533bb4244fad0f62e770e2b33414d8f5744241d12b953c18b8341db757d27faedaa67a5efd0d2de650de692f655bc0072bf577664324d03e0c039c736019be241c04706a464801231497c943b4ac1e1f840ae8b2b65b6e212f941b6681c41a78304e55a1c35e5d5dbbb69577f491d4ca12bc9a870ff5e3152f47a5bc52e0807ecdeb4e36f6c060a715c0e421f0558ff97cb99ed85b0c37d2d7b9a0a8c0ab8cf8ccbebe2a6cc6f76b89febd84d4c3297f7b8572c337841e07ca56f4cd6f4190b9cf68229610997b63f775abb7ca10402a5b01bd6fbfd86014795b172b2f3c92fbc86c46c76ceece3de0e5089f1c09710ffe0628e0b968cdab1c27d0113b848b2a316c7490288e4ed665c4cf41b003b205eb9d1f968fe99e39d480ed58af36a4d7268b2410300d0816f72271954c4d0e729442229abc68c50b883edd56b3eedf9fd186a83b13fc2906f247f67fbb77d4b98b15dea4f9d08401ee67120e833df0d65de07a0c24eb1eeeba3187fa62372aa556263e9bd979e9c2f4cda01828c37ef02dd6932cca89be9e68d5851b775613d892326703c7632afcb36cd05ce26b9b62ff3c40ee38b22afc54967b4af69b247d43188f04f00c09ed89d93a8b0dbfb95a30368c04ac56120ae648c88383bd8019ee3c500a6cd9947e3b88f70f1a3ec752154566481e64b2ab7acbb3a9b956ee9fe5e59c5627aa05d7e24a9dc7a5034396c4196fe3610d33937276ecbdcba5ee66a1590f35adfa68e76432ccd62b3f80d57ebc2c33786441c1b083bb87c68ad3cc2331c7bafed8d5fd5d473ff9ddf68b2426d46eeadb5b2dcb5f759b7832da82339450d806f2fc0451089bdc47a77cf61d8ac1a586ecebca121201f5761146a6b75e4dfc2f6f8550671b8bb53a6f59872b65bc595cf4c287fc75a8126923a33b4b03cf36202a5663f10d972a11aed3a263ebdccfbade523aae57f37e749138b2142b2458398fc80b20ae567cb450172e6f5c75e25fb3c5de241a4e8b2e0d61487819bcfcc20983621752bbbe454e0d3b38ce8764d3e1003656b0555d956d5fbd5896269010e98e7fa8e1f918e550f487964edf63c4b5ca14395000ab5340d58ad6af503559f81972501d7f1afcf09c6fe470c51bd41e9e157a4aa0cf620b3e8956e3119e6e4433823cea2addd8f9bf9c8b9e0a79f4491690fc9e5197f29f4ff5533a744b04bbe765d75d7555c4ce4de9b2bf0339f0a6d86c0298c0dde3d9507ba22958f8a8347aae8c544726fde61751668dabcdeba9d8e2392f65e3f0162cf51fea1d5c262be4e47e68f483254f0fc00abc3bd04eb41a7cc49aa28391f114f156a8e9c96e607ba1c5bdb88c7edc4a5573c7b035728bb81e65066f39721057d05109f3d02d43ed89993a0d072e889945a51befb65fd26ad54c1ec0bdc5981ca607005aae981ea9dc9b18b3c80ba0466f2558aedf7de4b0fad0260985907e2fa9e5125ed9c71693f9126aed1ca79aea02856123f10be12b9ae9ebf01c8d0c5b199bd97898b8764d8cacb7cc48030a85f36e242dadde52bc3cc8d84f1b0ad5e1b061faf910b9cfb18928ce48b1cb95290288bccaa04d1274a767aee4f8c1ba8ab43fb02ec3320811f8719869fbaa6c9ea5bda5d9eef4dcdf05a46a28067f814acc2a41bc432fd9dcf01064700033335d337c2e23aa6436de5dfcaa7709bc9b4a490928ebb13524269654a790a6b32d4ba3c5f4bc98bfc4c9e38e40e556a80e4aee7abf23d1210d69510b21a39e2ea1922bd9b8f23002c2ea1f111d676a64df7885c9dc8d549d2d8cfa78b19a5ef820b38c304676245e09979a4f743204f742e39c783351644005855e21e7160c730de9ba562b2e8715f5b40184747e000b1490827dd990d3e8da066d6b9f71036a2e59b9f29f41610c79550f95d73335dcbe906d0195f9d9305b05c85d926a1f9d6cbb2cc5ca9d9f0ace2dee0db2f36901cc8461ba1b4369657c081a71421e8379813298feec6db65b6c19ce4174c544cf9b9ff8df6038172d76e3e0ddb3c516008bd65d861fe00b8d4166b7c0f590195c95095d631452e768636adaef73e2435ab1a4698737acd8309fb463801c3947f6950db0957b0c6ecd3e36ec11e12a998cf5b1a255c50e58c5d5ce6fa17e71d260693b5da18f004f68b9a769a0f0f2d1a747dd50f1715172cdd4e01cdcf8871a3f2f69601ce9d32b842bb1a0c2ce46c1e2e8a991309b72cc07283bfe12d659ef8e50f41e157fc4610754651edeb35817da270d22c29eea9548066d4adeadd6a26c761ba0ce07876f6d5d498b7bd955b565f436b44f54c405aef2e5dbd9c1037f30f3040201ab53df9aea1126b78c8b33569a8d478067b2935160fba50b1c1ce4eee39a6ab053d43de5eedebfa163dd4dc9518f4061f42966037d9a8a08dfdbfed9585525669f1c0214475ffb2a39328b78c4be2bc9433307c74ea87bf93917a6d38ceae4f4918a0ac6408842f1dce4b96a07ce21000e1107df9ec1c82cd4c37d77e34e32ae60cc609c79643499769a66c7007d486c53e23c09ca8c757cb525e8117c7a0a16e5456d0bee379837ae7ed02b4b53bb49dcdcad4ae4b2c506f09ffb9b554cbed158833d85e36311e747dae022398203237b53390898897556b9d5bf51bbf65200284de89beedce316a4fda77babe3434bf97e4d07d479302edb9daf09c7fca69b5a583ee3ec9bb75b42ce07e0b5ecf24d9d00430692004f67294d10eb57558f2aa1f6572f5179fa996b2575ad7fe3150eed8ea4621fe869437bc6b6a619c830035a849289ad115218884b9e04615f34fe6aac90e499cea980ef5644364dc1ec4f50d49b6bc0d89c1128c1a928688294802796af667e1ba9df1cfd3bfae0160c925f85f1371919eb3cfef9842b4231fcb788a08074b999f79de0a8ef68412dbd7bfa5afa068df7aaa22354f2820fd5d5c10e58bcf89b9a20604faeb95ad91a8ce9e36a000980f603a5b98f74f5ecbfcfa3f15842c873be8985f1f44d160581662778df4a760171f3dacc287ce91f7d701f429887ad104a8b12a3b8fc3015161e5771d76ba662a98bb27c0b6d5609ba6697bd8cf6400e4906b996d4f18b8a2a35a8100f7df790225157a1cebdd7fc40ac463d621f0c067a079a4339b4bc5e3273c6bb3885148006e2470827a17032b6f13f8c2ae728cbcc862397ff76557416be4ee1c4ea90c5b63e9cd8d00f12ae89b52d7c74bbb49d27937cb96df69e17debbc22bae2fb85ffb913bc4f88e623c98ff7cd6c599da70867e46297ee55d006d8e1e37d019aebf85a801d69693dbfb180ad5f8ca550e17914d38111e3446cd728392f4fd7d5ced9de2eacd6a52d467d747d8ecb8db96aa255133f013aea792659144fc0495ce8971a1735ae1d2837a7c5c138690d36672a38267ff50fe34cd337a5c9b04762ab3decadb652a89da178ac9ceb9151c325c25ad189c6baa43f160f610f7648e16d04baf649a36177893c4f452ee706f72d53ba426ebecfb950db3da24b925ce7e4e234f711afa8d55db7b9968074c407073aee39c38141ef029fac84f0016c5014935011d7facacbbb5d921839794f2365681601d54a1864b7549533eec3f95b5c66350484a7f89c8cc935b895ba0e08468d579c40c00fdeafd786d6e7639713cbfa89c951b02c93cc9c55f3a58a0c770032b419abd13e7d978c695d22357038f63371dc9af39d740bf4cb679754ae6099809e7a54b0b179f35b7890295ba245cdc9934338c857947691ec51793dabef2e9376b6b27d7e502fdd3029f40c2648a24b88090ea2bcfd359b70496036545834ea27bdb81c52c053957f3c1e94c2ad47615acb1cd424e60ee9fb11ade0692e22efa0664dc4df2363c02382edda1955aeead094d7b5eaed54d6625dc846b963b070bf322a703574f75f716f49b15aae1f880ede0d8bf0f1ac17d682ce45e9758500d6947227180a747192042d7f783bfc754ceb44bb073682e8d2dec3db6aa42d7a893de49e6fd2ed0c0200e3ed1f159486529ba32c48c492cd4031e8592732e2506ae679b23ecb0234fca0972b14ddc1d7e434b3af28e93129840abbba14e15319301a70b721db712900c225e57cd91c6eb5d5bc4253501a5956e441fb73237481360459baf5cd823326792d6272539c11e9104f8a3f038a83fe733c1ee832b076739bf5b7e01a2ae26bcce5f4b23fe1a344b6beda3de00f0678a08f925fc0469e9688f89f5cd34986e68c8fc85b4ec25c0721c8ff3d760c7717f700ce2b5f1041bd2200e3a1a5e38fcd8e804ae263cb7ea8bbb620b2234605f01ea89d9da820165b7c4cddb81f2f73b4918dd9363c3e70d6d62a4eed685c04beaf79798811754a4e771eb82fad3c3548097a647f491e8538645b96f675c0798e58e873ab3b78c36f3030e2f9bcefbd35d471b6e7b7d588d6d1735cf779ac57e1cae4013ec3f9d4e4dcf157a3dc16a57daeb8cfc0a6787e40c87b7596a43604c137cef586ebfcdb7cb9069570f620992cfee716b5ce8ef62cbc77faa669882257288a32d6b036cd20d62a43ba00f2dae7542e34f6c552a16e9d36882e1a49460e48f6596d1d090cbd24cf13893feafd4e42cfcd8b7d133f462b1711b28eef5d65f34b4eaa8834249d173482a35ec46d448875046a665becdcc2d207d5864cfbb811643d8d0c09e23d09ca681f48a35f566a678f0435f387bce473e122ffcfed738e5488fcd204a5f08f9c14f348d5e2e9ba784cc035068126e5a10faf704de30d6ccc22210d0240c5e3e8c3cef3932c6471165e731b8f848b0ee4cb1c9d8c5ae770e08d82ea94f1421b89bc1615cf51c39a7a8483e44a1394211c90293e234af6ee0184a73ba0a62a25554fde0e667a0beb33c0902eb9d3a75a7fbc89c053f89839dad08769388ee0188dc854bc74d493356154d823765d2375473f4a5a764b795780ffe87c06e2f59c0ba54e911e4f9bc0776d70b98336cd9e18f1d1d7871cc8f34c55e6e7fe6f2629254f50f0044fd046647ded32d27c82803df3d9961e1e8400c9c511710acbf1518b235b58c74d7eef7a8506afde067284b6aeda4d1dbb5dc4d5231425bce3f51ccb78fa439d0e5d566e8834116930bcac8ac801b8f2344f9f71a38a70917792f26ca984b6ccf3442a4da838488187250d557d4920f1149bd1b3e502fc55f607f173e16515e60908bb560afafdb71a15476159f0e86bfc55702f24e0b35f45a85313cb9df1d7b0cad2a7af531d087927bacfd220e00938a60e20eb9c66942f5a16da2566031115e0fc54d0012221cf4e23f1915411993fd6bb5830d1dd16fe9d6847da1213ec1f11411628cbaf7c35aeceebc1c09264abe427861f666b10d4d14c741a39813fef5da43c38e68b7df6b2e94cf411710c89028503f6b7b2c596d61042a00eb8f16dc9a05814847061488af822eb583d57671d58fd3f26cc9032391def119afe26aee4b7b1c5e62af9b305cee07cb96721c5239a493ca3502682fc1e300eb5c9a3fccfaf421f9b578a7022cfc0be01563663f24a3b70cb82bc786bbf26372044454a75edd6a7ea4d821660ecafcc051f4f5c726ffca5e3c795881ebcf268b17ba709c03b516284690adde47518046c86c49472f04ae599be144e4c696ffb96be633c49942d4a5cc23330ca5ccf220b74aa3982911d7dcbd920df95a80736489d77836bde5a86a4862ef1922d4c4edb5e134378866111e238b66282db3e8141e9f0871aed63f9e60ef5ae2d1204622def9c10a562492c9059a9dd5de9f77fbe9fb8fefbc7f68459b07f578f9a13c96f9d107cd33e5d1e03d89c359191a3cfe05603a399421a83529284129eaeec3411c33c3045153ef1ed6c4d6c2cbbe59d6da882adb635e531a179633987fe6a978a09dd2ae34427b3e69fc7e05df0a40a70e10ca207d3d04fd28012854858c82f4481fbdbef4813205010acc4568e4c0977ad09806deea899888a7a5cacf90ffdc2309b1e07e93c24e5aa515086adbe31ca18aa3411494b61a8c3d198713db1e7cd23d6b3c055b94aeeeb6600308e7a2c63f2a5192934d0c0d41d4785c0029b1f22095a39f77b9c5b960f0db847e05bd0ed8736dde05fe0800ed4d251e23bd74a5d02eb117d5b31547371e88f482852d1a84556c356f2bf51d73b6e888428c0c97a4c84189909e684722f39976e255f82c7bd4d02197555836741460429acbc17ca4a955f40ea13b28569bd1c9558f0eca3f390e5706f2a66af8338af9008cf1221cd260acea9c094a8653df2a9e617cdd13f81b72e9b8caa542e020ce54e41fbaad21aa583169dc0f9b33621e89567c06b44135f01107432c7b34ab78f23401530cf71ed8a63a997ca4562a5e6d49fd23ba14b6712495361b7c7438b180031eefc0e93f9164490fda703f5aaa7cbf877bc9a20b1568de266c2cb0be7cab659cc845289a7ea87c7b4c164578103305d4e93ba016b03fe3b421b6017d1f045440a274d8ed667e1ec24b437eb59cc1782a4774536292f6cf040a3b332567ff422ffcb9b8078e5da81de8fcaa4b666ab9c3c63bd7f022c75568ddf80d3dfed8bfbcf2ef275352319a8b3c94958eaf4cbd08962368ff97b3aec6d6ded9c2e03ba2b6d508fb9777a8e4f23d281ddd648fc8959a2d6cb1677ab88e572ccb55db463cf9326311f61c089baeac7d6803a74d2a57bef055f335af728f954f3445d6c8d00608a8e6a2212f5a9a003175005067b462fbe46082ba01f36b5752928888c0eef237d7058157a7d3b848938029b5af0954443a23e5e5ceb274bde4b0000ae5f654ef62b61e580c4c180ec9df9a110d083d16aefd58ebefcd8defc861e8d9850ed5fff0d78b71ee94059477c87999edee07396698b982e9d60853fa92050e50ea238b48c2534be405edd47793c6560895b8dbedc7d7266f9e2f7b818f72b7dde937b09f0250d04d49190a5976e1777fc18da0bb70ba61830d756250a98125ab919b909d7626b696a025f489c2687fe246775499153525b74827bb51de2cd89e3a01c3fcf6ad552794cc3e5ad402fbfa47b828bf1e6b1390830f7dcd01b6b3aa37a1930d38097a34314f458432e6f192663ccf5f2d4a715461ff78e058b6afd8bf2bb8c9f383adc2a3614a49fed666cc718ffb60c321c22dfcdd33795515c639fc417b6544b4b4a66b97ba93ea2e1e2563fb81c5aeb2c835adbee1bc7ce8539506d78f9c490cbadbd2dfb4e46faf47a113eb4b6f4ccd85d92de965f58f48f08bff9afaeac7094a130228a206a123b0f011fb2dcbe595fcf704b31b6dfad69fb7a0216b5ad97552df1815e7f1740f47282e5db3215a7e05919cdf3557bfa709b9176e7740f4a3ad7a58ab357ff13c9551d35d2183deb960872fcebe50fbe9c99df94208c09d68bf27a99e021f0b7bc2519e94b4d3d33cd928035af5e1690f659fac93d94b7da8d42e5ea7f207541934268ffaa977964108fb65cec7c4d9a49f7c9a2c0ab8bd0a46a157fedd101491c1da5848c41e7088ee350ae9719c7b17f5624242c09cf78258353f4b23c07d7d68b29837f10d2156d4f319dfde1069a770526aa9e1ce84eeeec4902efd38c780e8b1464ba94d207a96e57dedf67452f17330c7170e9ce00bdbda1a908bc7666b89b75db65a8419296aa4e2faffc243977bd4677fa1ae9590410ff1181a37a39416b3b1aca0babe9e5ced897849a1276e824655ba17ec33c93a197b983afc5c57beac33bcfbc6562fbb24609565ddd4cb8852241b92ebdcace5ea1cb5494181acc19a1d722cebbd1795fadf832aff0e4e7cbae0742dff825cf75b61b75a349904bfcbc31b4db1976aad811cfaf92bcfab2571f1abf1b0971199354a3bdf03a11d09cfc77c6564d0dc1a9d8c31d83d436db9491216b9d89515f3ed5128107250ab7933a62fa533480a821fbc9628c6f6165c0b2e589195e0a2e4e9759cf7bbc294ae810af40509677b8ecefb38cca1424050231ee8cf65d7b5a35aa586fe99bb634d7b5632b8f06b5f8a4711bb2c33955d1e4863390fe1e0c59578e59f25e7132d5ca5f0ebadbe1b70284fa601a6fe124e0bf85a2c8d1e445b0d589eb8cac257f8f96fb7525a49073308ce98f59d7c8459cada895b4206a767a7a69f9b3f24ac19f2c8317e6f7b1cd18a1d6301325cc13e016c3bc8755b9405bc6886c317238451bb360c762f93b5bf6d9614c02bd9f1ac66d3d2b3c5b8e713e3d294ec90b4c6361690a92b3009291e9460efabb5dbd9a28ff6dd69e1178b44268493cb2cc9da083dfdf208ac37ad52119183afa5312351df1feb16f510be98eec4c5ccb3b31becaebcded75ff6d3fe38c99a1f7c3c6060bf02eb47047dcf0189a4dcb42855ffe4af2c7bacd43f689e17339086becc8cec510108b8716bcf02604bc37bc510545177ce34354178e0175ac7ac333408759e29732f394ebbd7f2fd866566571a9a4e7ad41f0639d54f0d1703ce86772bca180a7ac033b8cca15e61cbb69d12b1533e9bfd0aea416faf328c7d0d7e8506053cdc8e5347525da1b197c55021df4150a3788cc1a23b0023a3b9d7da7f5c420a95645bc4f0150afde3cfe9183324fce563134473f4f1359c2f874c7b6fe1183430c40ea00152adefd8c81040551a939f02f9cf81c2d1186e587f463b6491401e326403d4f7fd08bc31e9c345bc5e6a6b8e899a84118f754fa7ceb5e0f9aef31c852aacfa5d72351bb911ca615f8d2f25f678fdf985e6c8f26e94dbec49ab04ac2d6532454f896bb94ec99a41484c79233258f9a75ebb326fed21028d26e39f5573e444e7acaa93d6b4863da48331c2ffd8f75bb5df682b6bed79a7819b88bb6d133e11f176c6f15f8aa6d63106b67245fc207890b24d85f2d32d87e7a46ca1fcf40fd44325cb562382714a7852813357a013af3ad9573e65a7b38277f3080441e133c14b3456e06e943591178cd5ade112db1b40edacad8fd0068c8dbbe8bea894e195cfe1770b372a6fd711b44bad0681e458c7cbe947300cbacb7b1a6b72c471178aa2aea1a2c714c42a595832576eca52af7ae8cf92fa3b129c1423601234d3ac9f6b10e49fa62c1dc2059267d5f5efb9cc9554a8fce5d1b937ec23edb51d7bfb851a49f09ecc8fda49f832d9d82d7d865fb379ca9b0ec0a36e0c35c1ed808e87ffaf282c2c91f7f0d7ab88ea92dd6f4c5d56422610356fc6c4e1c9f48fca5ab94b2843b87ebe8aa6451f781855d03d6b1fd734e72573becb870048b6937ee4708da8288ef58bc4ff6180ccb2e6d28e778caa1acd2241b7142520a6bafd698008d4df17e8bbcd3605e99ef0e020d59975b66f60c4842d63708ff29696050f95db5690d513a48c0039101b1da5c8792f75ef15b30d89e20888284a08943f853319320df5d936197c429f124011baed1e9a5f3bf7a5501d08634f8074e4fb6a7eefd5bc5a24bb38b073a4109251f344f51cbefc638fea9796c0def062c787eca06ddbce292e1b69c952222e3b4390ef42d396fbbba6c68ab0be90ea03939b5d9022315aa493e850db85603bfb66a7baec3f7c7c2177f9e32e7f69038868d4b58d0ef14ed7622619d03a7aa1357419823a2951a36de2a3395d726e172bca386dff70760acc37148be8a41f13e6c35a8a29f428c3055a5400c25b64736a613a8e419e4ed5f6e0f4bc39fde90209a07107f83b0686830b57542a879da0b81f637dcdb8a6ce0f45f6b1661140b82cea4bc8a65a5f16c6a5e552132662437fe820744ac00dc2e8a577d70c3f00504832e94508ab3dc45cc1d802fe0b8bfd2e73db987401b62a4496728d05a03f6d8809f4bd5c367c026fa5153231fa19f5e62ad7577c8b7837dcaee23b6c2c5e8ffe5d381a50a5d763d27e84cd199f16c63356e02a27047121c0426e6b8d2120de7ebc30f2e8f9563c97d4ada176e62b60275df25665ea8c7e4d7f81df730e100755b1ef050d272f9c4f2bdf1faff9560c56f23caa0028a3aa86ab1c667daed3a6907fcfa34de267a8bb28f5a145dfbaf13361da1a747efd1b75fbca982481eabbf61d00d61fb4fcf84bb463a508a04d5093c43190e038b381c020c24bdab749d2dea83434ae8804ac92de3ebd5cc2aa1e31b543c87fa882de70470e4e918758234c2a1a183b0c04933a3421a4040c41df4fb51c4039ef202b8e28643d8a10eae4b2758333a9c0481dbe277b00d29db92a707d78fd2b28ca7793385b0a702737c3b59c9801c2e42488ab9772285d947ac849d345295cf7f79dee1928eac4109d48d880dc71ee898439de2ec5b528b85b1c5b5e9216c57000b11d1b7158588a642b823d7ada0d6e2da614cf619e5061fac49f6915d7f0244a7ed0d6ad688c6eff280bde82b8efc1db10a7fa416cf3dd70410737edc39843cb2fffd6be52df28ed8d69fe83903b3eb41f3deb4350500857a3882449555f7760e30dbde964cbd2336e09b6784dc6ab84ade40e0c905978c609218368f91f2990c8164324c496cd605b3a469ea419c5de8a549909235b928b95ad47f0c3ce7c89fa3d0bca8836d22c7161139a86927e1d8c99d1bfa4dc07fc4a9816b48916403750a42af8111217d26df27f2b800d416a8258e9a98b359c86391a57f9c3637aba4fdf851a2dae9bedc8c78a5c91dd64a40a27345bcdc1c5910bcc2be74cb07f08f0ed65a48038594f623a60f48bb1a7e98f0409b2af98e9c327bb03e5d0e3172d31e17b39d51b265d70aa3a54cdc9cd74f999cd187f3e847e8347c2dead73480ad43e4652862e56673753367a294f28930bcff790aae6f75ae94eb2a768bfef70ea6620cf4fbd252676873259ae091a6a85ebab05635329b0cf9f22f8a779a4475d45c0a0013ff015541cd663c848060c163ac432c1e609e8613a17f530bdd666b1f999ac1bec27d0075b034b6c083c42952247c45ef5b1ccdff2cca4740f4ecf17fda60524152f4ba5b7707004360647edd4811afe44c958ef66f02632e05a8c29968cb2bb15fd92adcce8765019f5b07bc07444e0dde208be5824d6c3917af7f9b6d5c04d12c829ed3806321985895ee3531128dc381b1db117c671533bcada25fe064e66e06c600bd8526768e72f5cd659fcf28e16017971e035e3775bf6e10fab8b4a559e4c4841e5810a250189183d0cf183d9a3000ce4c12aaa570e08129c77ef51b6b845c83d20c7cddc18b045268152ed2267250f81fa128fbe51c7c7b070a99a17c27e688a42e43a0715ae952dd0931363cc52835168e1b506d626960d16e283902459598fd25b4520749486938d21818e280420d641e42d24a4382566bab255319f779ba465a46d6e5c8cf6cbe7e1bd883929712f0fac23e4201bb2e9235f663c2c45eab0cd517c3d06349a8c3e991e441e59f5ad2987bc6c5798974a3171c887e84d5ce755cccbac6463f5b5ed11181876726d2eacf0fd3657bdf2342f270a91a17da2327dfc89d04e6be254f1082685316cbeac1674161eb362d7423892a99b7ba075d986c618b1e40febfa2cfc1f1c06c99b3a7d26fa508e823d379fddecab31c19df74e4cf35eb93f8273ca41118ef0b92d5a32d6ad513261bdb9ef2a8fb97c14439123ea3c201a0cb69a07f105c77bcc7db4557f0cca926ea74c475905ef056bbbd68c485d8df780b07f9d6e098c37d9bbb6d1a7b123b6fc20445a7855602c494f2b648741936e89e3fb48d1494449a5a563e3d767e88299b0930c4bfca0d8aa21c280a26d326758039ac820f983c0add8d2cb7c7445dcfeb4b8ab1a69aa4e02e136d4347622ea1d82f7f5d3ff0c58c599fe8196ef2944af5b71e20cc7cf3c1836aca2b55baddc39f934f9c31d1734822c4237e63e48757af5b751345fc8c4c0a4a725c17ab65a4bca602570f1fb05e56a2744cf472cf59c4689310a17c68c0bd073d7e1b06a1a6397fd1ad5c2d7282ed57b4211cdab0cd7343109a1cef3ba61555cca9bcf365daaa8f6892e6db3776a8e187cb120bf2d79fdf9efe74d7ec592371a4da0bf37097fd9d51cec33da38d545edf892846aae68ae8e1b8f5b56b453d4cfe2ca8f1da872f70c5e2ee077c9f37ccb3daebc70c610797b211cbdfeee4e68edfa4fed791963bcaf74d074f178446daa7d59bb64188cfe09b89b9a1af3426e8fc233d0f0d6d2b6a468c7986745a2d33ffe53c6e1d98481b7ad482fa16632fca470db12dfd29a6afeceacb7892adf5c386f7c41797103e576cf82a6a5226d3016e07e7dd449947642a34f4f1f6970087689f2fab3441556f2ff2974dbe0cafd978c7e1263121f872eb829be740cf1fe75d44d663923cd2bece850bd343cf4a70bd81566243a07407c9707f304046baf607c752f577c3ab9a55f16bff8d586b705b9329956d56c3495f5fc2e75574ee5f44bbdb5e2143a77640c972d02db38d872adad16aca8745ba713895585fa3fe40228d5d6fdd040db2e7a900fa91faefbea85236117c4f6ed55f9abe030445a7da58fc727c0c81c0ee5f8eab19a0cae434a7d53178b6d904298989ecb8103d944df5776f97e1b4165795366e46a9234b956ab86069c6420e1ecc78e74e49e8dcfa46de72e38d16940a9f6c1f8e1f6446413563bd7d479b14a55fb057540e875308c4015bb797e7fcb8513a5db4581a7e7bab7a8935617324e155c7b67139daa0f30c29814ff1a23c6ba601c0c1e08dc9d594a4ca1f1782befa51577d51babfb4f8ff45c146209366034f2f5092a8bccc854d5136d35b81232bcea3408c63248b239bb90be310c7596271378285c4840a437a459e2505cc870e86e196b393f7a27f65016850bdc2f882f7d0c44c30458063780faa332b7cf735d6a764c256ea3d6bf82a29833dfc5dc4c309412f69acba53ca5f4cd38d5aaad7eeb16ea96e968d1e8eb461a7db530c945f5e61a8d284efe75924a19b88380c6843222a0601cc4fbd608e6e2595312b7c9bfc1e89f833ac74e2e5d820800ae0dbf2276aac8587bf130e3573889bce254139f465134a2ee94937cb2198135882b6a333e7d46b53296da5f27c5c2a1c4e3e0b7d18f82b70a6da659af512b9ad75083573699664319e3c0fb0d56f86ddc6ff6fad6970dd0401286da083532dfe16928c3dffe832c94ed2987d5d2a5374e6bf39b934f2f8c56f34463aecf74bb9af5dbbc086d961704e3ab2f37568bf818dfc0d80e0c9d5414c851660c6041e443b9480bbd88c5f4beafb09846dc1018bc14027e4be8e328837b51310a6749104f1f7bb5a8705ce5aa7849271f33d44fdfb5cb0701c685742f01ae2d0b3c8de50c040b9f4c6c8130d6f7728ebfc018571f46e8dace268cc4b22286d13d28e655b361b0766116b6af3d62a0ce3fd813e2dc1aa41fb18ae5a73ca7de1c2062ecb3c473c93089d9f74b158e56f5617f625989837fa05dcc11635167375cb0c0ea1ec2269a55ef87fdedcea611c4e10ba1438831033148e3efd41b19914e2c601db6207223633f335b21533102c886481fdec0724b4da0d35c2429bf503f7e975b9bd50f4a2f7a0519f828b8e7dc72edc15643432cd205a4416d8557c435260f3832a2fd6dbedce355674360d403e104f7b811e05f5a518cf1b8fa53a8d5185b7db6660058e17a5aa8c74bbfc454253b4d46fe5af833071d60f34a4ed993edd50c060e1669db6fa6e65a392aacfe2e4baedb702b5506facd7e238a9ad55e0775d0efd8bd17a3d99b1c8bfa6aa04ecc8982a355cdd823244005c2ccd358c82230c50a073fe3b67ba24e6f41706d27608eb47da8cbb3c4a6fca74d87e6e18ad7018aa96fdda5cbbffab77a296a829ca2593843e31cdc51ccd8b0730156aa50f2e168044f6009c62b43d685492c7e583c07787672351c3475e10b08aa32dd7085fb2d1234cb041625eef14d492c615abfa6dacc82437a9a0584ce4e8805622957bdcf39124be2ddf27b73020f48e45e91d924fd56f2eb33e67d6cf57c2eb12b2a185c59432552e6054467ba930154a9f3f88ac90c64c839310c28ef9a1cc70c533b6384225109348498841cd99c0274b74c4c0f02f3a14071ea24f68171485bf3969647e873853ad843374e37f99087fb9c2af26cfbdfb1a3c7613573f88b710a01d98a62d87fa9caf35bf7a01636c82e36af5fdbe981ae43f55c0e48249d588469917b9bd5520468798d44d400de21ae6388fa398428378fc85ef83c03234f5fe1c48afbb753f6c7588407719e556dbfbd6e37e3584f3ca056e3ac7a1de7a0fdd8f48f93d0a50182468ccd239f2c4f416b99bb3eca9111f5795a4e71bd70af9be0ff0330b262c3411f3017ff5fe858b44e05f42b289014f4b0a9bb8251b81321d75a86cd65c0c05b7e2cca1debad4c8a62edc1eab6003922803ee427f55034b78b31a558feccc4b11d1222163c69c703a77f1ce3d3d6655d5132f60dc7494cd34396a987821ed500da06f10cc654df571925dcda7e08a29aa50b594af2316de7c93c5d3a91153c1be3a126322deae592d734004713d7e94cab88626d995bee3634b1b99a3d75184c96b844e9ce65f0fc9dd6c6367408b60544bdf1caffa4ddd0a763b26c82f463a52d5d7e72e81f84d167fd9fa8050aea168acf9d58aef26eea9a92b1285c4ca632574044e5f8d2ca60ab680bf8bf3b66065cc4ca9a421828c6c1e464881a1fc30017e5feeddac4e3aec14238b572c55ee10e08830410a53efde90f3d228e466721ab9a346aceb63a74c8f1b78ce27cce27d706c34867a9c096659d0e9c8821abe2c80ec09ea3e6f3029a02f65392ed9a81b5701c377dc0de32504a082512d707e7b9d58186dbf952d5ad49c2e3fd83f6fe46d6df9db4a5f632b640fa467242a4044d4b0af9f96ba52df2dc8e272ef938a9be14dcd52998b4acdedcecc678c3c96a1a98f10513381ac0dce7ff9b88bc095b6c771371ad70e5f371a4d1c314cd67a3a0ca531a80603067d9ac14f8d0ef80c80631a9f9a06d0b20856fe7ca68bac442baeb3cb51e79ede3cba8dc0326bca50ceac84fe636386d510c35d9f291a82b4480bd449c408d410b4c8298859fb0cff6aa0407dd6e64aaaa6d06231ebdb175432bdabf2b47c662e90fe1da88ad1a0be172debfc8501e6cc91d6815c40c25f4b9465cf04da84494746a39d8b404baed726d51389c6a88868c85714a9e5d93b0ba0ebec380394ca38844dae47ccf65b835062ee0d76993946b90f23597bdbbfd36354c796200169c538c3ddcaaf2403c2b29d1bbe4beaee090c675af8c9985d6762914ae7ad11d0cc2ef94f51c0d7b7b3fd0828681fd65ff51e31acb12ea4ade6014969fdef286d494b79511469d59deff72285009723491e1d9d1b8fbd9c8e81f1dc13dc008ca1e31a913983456dba3020eab5a40f0f31981b44e6e5e7443f5b604c1fdb31d7893e49b3612ad02d78705c577e5b3490aeb379ee0d2a05285b12004243e7fa7512de186c1c7780f616fb14ead71b68aeacc6e23f0cd6349757264e7bdb0ed27efd59ed77bf1a782b5d5fc3ec052edaef88d92e8ae59f8948ff1addd400bbb1c43d71635b053814439fbb41a97244b5a63d31a4f02cd7a0befd52b4d15ab45405cf65ceae2d7a9b4ad93c5b1f432e6e1981de37f70c37a84bb7c85bf2e3a34b7fe2e6764b6b7921254d3b04dc6b6a4e5e9ec074c4633be261db9b72a1c5ad81e89a7b915fe48085d35ce284280f9562fb9fe95b5118645a988ef27d66f43616a7b7aaa992ed49c4fec27b020374d154732f00fc5a5e9a142df2de4c2c8895bec1e81e37d1da04a4ee6b6a7484b336b24971e1eca7e6c9b8ae711a48fe6c87e9034263203d8cc5854bf7d0a4e3db5a87ebcb0f3e1025a520c9fd075d9922105192f54750f9d0dd2ef6d8679bfcd3569249f07dcba3c6f9399896b59e779b35782091887e3f5ec0be9b96e6bc0a363732dc1bd361c944f6ec7e39eca37410b156d6bbbd6e6ed0817bc3e0c1a753d93ff14017e9e473f43ab8e831cb8ea6eb13844fc48d9d37e1a45f28a9c49031dc752e1ed9fc46856ac17c51a1b4972af2b295ffd92dd401428a7fdb232b54a9fd90f405d406c7d13ad3d37705e1f402c9af54d4391144e5b4b2db6de593d39d1db3f7564f29a47a32bb7c910c30ee0cfe90b0a7ba13cf046cef8a29318fb8e7dfc443f5400807ede71af3c132e857f3328ae8889da40e865fe0304a370517978b9e74e6726d00ab54af0fde8271c13e736e27a6cb1ae84445e693ab528828bc270941d6d4f6c3a4040ab394850a4eeae34d9eca379c37550f4920aec52ed0cfdf6aeba16b3c6a8b7efa42a3300d13594d7e3d485f95fc73f0cb325c757a22d4edeec270abde7958ce3d65ab9993677a347b8b3d916dc4ac00aadc4375e2620a965900360007db432c68b4fe1390524ffcc4b802efe31f06152252f512e92751142a2e4e551f0266f52c4bd614cae21e4f82dd831568e97fc441a0f0184cd8a45e81d18157b4523efa522091388c11fe5fc5c32bd1eb3efc611b8751b44f012487d37748a9baef918d4b3df5454b38397e4f2bae863467e9aec6f84e3972dbd06f0551a701b1f1976789747db976359baf872d8b9ae50bc79dcd2c585222574c08d9833a48cc7cdbcebb1a7fd119aca6c720b4dc7adeae523031590abe6bc02c733781b1c44a7860305cf9c012e9286fae9c2b63380b9ea95c3cc316a0086048c153afca80e2e8027eb1604d0b6a8116834348101abfcd22c4c296c4d2bace83a43cc46d51e29b4556c851634e405c299f38ca526ed43efd5a3715c07f38d577032933dc37ff0e4e13ba5006e957d884bc7ff839b05ae0547540d234884b10c761170b7d9e45ac591c11662e28a119294132f04e275712a3a3814c7c2513de855d920d903daa0512869b592641bbd1a61b479734647b61b778811c119a0597dd018d9268bade5512e66568b2a9752d102ee7f91a5d350c3fe4afb54f2ccc6193cc4ef434ab892aa1b571850d854e9430bb40da21c82e6469ccc450cec4bc81965320b8d0eb66e8a98ef1149b50ff61ab670abfbfd3b0dd2a6abbf50108466e97b5343733bb64d2ce740d1d15b163f064455dbdde0c2a13a43916a2aa75afef38b29d25f62bd01573f676d8fc158df0a8ee7a910a307a421284d1d0729d90e7977f40d78433fa900c7c158ed4cefbd682898b3a8daa0929a164d902eca6baef63c2fff01a31fb4f7b5d13d2cd1ba95f087f105da79590c1fdf849f4eaefb96e837d83da27f393ea9513a665e4d20377d6fd787904dbea435bf854486fa041ce3aa5c63b8f7c208a465a114ebe2eb69f74a34a3004f6cfd197b009a76cd89d2f4e2b5104f28c09a47295586c63cb6d7c70f546cfed3cea19368e88b7bf937a9353c8389618e4b0c393e5f46afb1b52e1de6d08a3885410c65b26a56cbd471ffc936a7a6b6546a160200f2382acf6f687eac205e1394059269e760924da7782402e8d0daa8d0b114a9d4070c11bf06e5f66838e620b963d5c11e73d1bd45c2a41116e982b7cee30e05db45d5f257ad8a50757209afe5d99b7934864fb4e15af9bfeefb2dd50769589f98c8e857031ab77b9aa50c9d9822cb06edd4e6b5354b8a0610660039bccb2f6e4593bea7862623b8ea6032bd18d6e8c7f2cc8cc0abb181a22138a92562f817c91952e89bff8de6634d98023265c181e4f2e6b25698d70b3531656e39edb43d77d56253bf41ff6019747c9346b72abe56527e88784c350c06c4745ef73241477087ff62f1987c8239953e0a0291df469eb60c5d830ac53eb33a458d2effdce6f918e069a17acc3ecac9c5a26e27ae3635b430884ef4d6cee7f0201d05dac3c73632ff4e5f23ae6327b9fec3b4b1aa404c7b4f72bb26aeb6970d57fe977ecbde2881fffc6acfcd48a43af89c4e89ecabc6a3403b17c88401054d003eb1e88a16783b614dd31ca9945128873af26ab207ce7bca8c0b8833dd3d300ee68eb0ee5ac489e65821ea566989ecc81b8f98f9febeaf673a7367f361f2bec85c44827dfff9fdb2c443161533f4ac4028314b716e6adab5a3961858d9bd67e004f2fa68627e5666d8c6095f6f754ad594bf629e9d238182c2b8b6d64af97f4819810b333f619ece79634e27f42a2f5c303cf88a5f31750482c1ad240e2ae3f4fff683739b53d19d79193538bf6cbffae8e052952e0844a8d46a1b073a9018a4ae0fd79471ab04d91cd3655608d890a9c657455bc0daf9609517c9c309c8cd039a81f42110940927b6b4401a596a0ce93ecde7043fcc976b3c381b35ea95a0b6b1a410f2198049caff3b844300088071ab41e849299878e94a18213b4aef24c1d436ecba65114be8bc0729bdb6e67190459adfa3f2d19865f30e58e16535d3fe97a48caa82e66238d370834eaa86fc704da1cae04c78f65fc6f7127d76183f149a39a8f9e4cb3335f3c57109d27ad38c752566d3b696db6ceb529eec17856e685d2bcf069a0a9437a637713287f23133f2f4dd833c1100c7795bfd5e683dcc49f9b753d71c37332f1c9d40e924c1a6fa5219959c8adac5c971993c35d4ddcb9dbd4cb8b08b4d9812061da6a43ac44560deef852e1609d3b4bf2bce97b787d7839021ef83515c8ac59979b5598d8cffb3beb666b677c40f80d7b49aeff1df3fe6a29ace8e2aede03079d7eac73670d1233d5f3f8db40072932945561155621bb41f647d3546a695bb9a2488e55b5145b83cb1d026682a1b966145b3430a33e41a359cd677154cfdcb96f58b6d69354177b7304ca70d8a81bf0e309f193dc5c37f235232f4ef5a08be1a9cd2ea85f8713d041ebda4b0fc7ca6ed8f0085b9f574139888de6ca11f131a80aad445bdd5aac0e22bf41389cb26d9714a326743bb399c9020ba2acfc27ff2ef68c1cb6e92e1c13afb9457e68ecb48eb371541749761d884476afda68abd1303660cfa27b2b355a0da68c6a04c2540cf9609b6de8c693b523aa15278d729cdc4d03a5a04a2d92fe3191770f7a38d44664156de0f81bec4dadf7df78ac5e75fc8bed327bcac2d59c7c771da838c09994e69e1ec4c8030bad5e8a10300290f5e5886116014b5fe388d2ac7a58275add4fa6bf7a744a9ef769a3b9e304a0706161221aaabde8b3293440f1fccf85e1a8f99a058304482bccc5c6db9d4cfccb304b11b5f0a4e76668563ade7125f7177405bab18d6d423ee2a6f9c733303728ffe94eca5673a24d42b2f07b83c10f7c01533afa160eb4cf163f62b54e5ea7e3d7faeacb467444fda3ca7faa4e002e0e15cf03760e78ed7d20ca8460cb91d2044b856edb1d12a2ead6fd83c11fe00a5f242675df0d2e1e5980fd66dfef528a12bd537780575e2778af0ae018a37dd610eee958025bf1cd0183712cded5ce9cf6abfd99ab484c021b51ca7f4645922221148cc1bd018d0798106c66cd0cc24d886e0686e2bb64d2d38c48d97099e8d71ca5f1b9025cfb3e83c7addb2645760f7a8e8b28b06b869dcc50ffd01b86b8687efe0dbfa8d6928a635c8f4f63a9db50ab0aaeba36de4263c149c9e860ec22c5a9f94448c5f553c31a08bc8b1e7613450a91f75ddeb0d94829743efc5cfc06d0b1ddc3b3a868f14abe96904dfdb6b470dcacec669bb518ebf4e51dca5d0b067b667f5112b34782207636911ba89bac8d8109af3e38b8146c26dc96f7b3c83bf6decb9f72835fc929ce70e5eb52a7943d671d207a419539b576ece63b8da85678f8a39c2a655628ac41caf1be3a83c1bee33851014feb85286495595300c93ea195f630907b1dfc546fd8beee11a887f83f51a039078d87083d66511f87903a7fefd52d0adf57941787adbd5de0791159146a12789daf04119cf1424c91e5842d32bad0c4c00631eb3e9f99d3a11d148aa5399c8da6b37b83193028037aed56672c245893395ab521d2e3d78c893d22424d7280490e34cb2742c3b653e833ab7f94e1de82d8922bf858ac2581e2da27da61b922145fbe4179d586c5d12a986039e2273693502d2344730160f1f9cc60ba7cb7ccbacebbc7ec710ffe0f86342cfa50ea126a6d3d3e50e03965424be44127a6c4caee84e905156e9516165b98a6bd9f1828c27cc95c8195022270cf490c511eb29b9b51b6ae4e9d92010a3678bda8301375fb1363531ade050757594c4a61bae43083b049702c428afa64e91dc880ef741f1f8d26e61f42de72bceb774ca7daf6aca7375f5ea95c39d4a38d5e4d539e4fce39aae3a66f09cbd9525555910ad400eea25d73fd632676d1a080dd0b1cdb9e3077e4e4738aedf0163b089f35c77de76a0c8bdf0ffa1f1742dae0bc7253b416c43dee2f43a2d2fd0d0c63026cb918d17eb87becfae4c9f1ec80dc5c84eaaa1e11013bc9e8c471a1977a81c83839b4239b9db0223641fb8beb800e6b3114ce2a62f57d9d4b147876a4288af9cf6181c66b62334c6ccd26696571221c01cd24d40064da7cc56d5b8027b3fb8e3ca9b3606462f7fedd2ffb6f7f634f1726213fbf34482c0d08a5cb70082c7989f2d984246a7c46677d43395689291df089d6b3ec737bce8d84bb8bcd0ce4019e4e918c46aaa3f2e1089a20ab5d56c0b12ae60ddd9fa72abc24258e72bad070d939d9003033e3009eae1e2fe4b17993180bef50b2274c12b48281cf33d896988103a486468675d7d473981ccf3ac539fca7356454dabdc30ac14a2fb87865e5a91976d6d50d15d6157c5ac0900ce639b9b2948d32688b78b58156f5738e07aec36143e90550469c284ed1ac0796f1b1abb3890fd359774004424ed4a47a9303d2970f8855a6e3898bf76c7a99baa5d8eae31a27b1ed010eabcee1ab45c9492cbf5f42a3b569a34029acc7561ab091c681a19b150fcfd229811ce809eb541db2ee22a67762f79d7b5857ce051d7c47742b91ce7e65697a64a1e7c2d69f541896b7f37f064967b1b0ec343a6b1fa1b526353dac4eb7b25601075062165b39c6f7b7dc6e24be85743a295ba03d8435ac39ff63d7a793932e135ee8fad9bed919356c5398b6e559818811cefea6368cb06ba728c054fa13adb42da7e745bd8358ff3cb6405db2d76d0ff1e13eaff998db06ed0102a6dfa62272fe2810fa99326f35cdb46655131adb04bb8ee84d61cc688d5d2a646ac83e49b50031e17cfaef4f73ee051a048d02465de0c05e2cc7d5a764016287b0a55515dfbed699e32eedcbebf5a221f9c04ed7661f1a0702d0d23c80c3a399e130d77f1f0d25050d2aef83fff01760606c6da8fbf51a9001df3f97fc71e909da9ce4490de79a75c1b2ec1cfc78e0a02b9dfaa056cef492b4644906cdeda84404d2053df45431d21d5ae12c648f4bfef28f1a76cbb27eafdc13f5137dcb0a17ec48c955c1678dd15284cbef6b18df6966c524ed2011b9cdc92133dcc151a2056ab3a4381915f79be5bde68bf57a005d65a5644d0a6cc2f054ddba783323a69e9d388ba02bc472c80901f98eddd52bf6f34c0c49253c427067dee2dbbed1f60be61aa8b2ca31cbb6260c4985a10c3ca33b917d2ee321118a1570b8246cc10a12ef030120fe14b1470f7733aab80df6cdede15825f5dc362430a9c7f695e57f38f007144f96b3be36dabf48979e198fdd88c8fe851bcdd0147d910df27f645593e78fa1ee9202bbb63ff93214456bfddf036f84cfc3bff30c7893662367ac27f2ba03bafa2205693d8c6ee40286e4cb76a1463e1cd28b98e05a8e32f2c40e5aac316b0238c9ad70ff3dffe7f504d78ec07478b13403d68b134c6eda2a6e75055d1156c157c61c0a1d9d30c57e9ff0a2db6d5bc162d0cd80e73c8ecc5bebb838fa43df921614b1c0e9e1019e4850c78d8d541c376d434856404013939eb0a0c67b0d1ac673f13f9380635a1a897b528c75e0113262a314b9b7496bb54310ce33bd123b20f46806b3acb1c9fcda8bc4a9586c5ee47e7e7e86729a45db59e98e772af49bd9240a94a94a372c1f590c09c00ecaace39d1af3f3e4616fd03ef9ea94693a40307a8cf5462f630311ae9537bae816b8a33ca4e01049a53c05294f3c965d2017dce2a96c8474beddef1946dba389eccd00e2359cb061633ec499d0a78c1094a8e590bdacbf8a98702c36e8144ba314778d30f8dfceda0aa1de1444e8bba6b982cd323f5e1c43acaa4ddd158c8f5d279354e58db540ce58fbb1ff2266c0fd2f25470018fd08189f846af23c3c40d18738c4def160d0a34da706ec11246332032896d6d396ffae1052b2ef9adcfeabf7f7f00b46992a31603ae82d681eb712e55d7e3ed5c7186060e24374f869e5d7563c7380c548dfca8dc174bb254ad62814d843f8f2ec4cf0cb075c06a19600c93ddbc87a78c8cb17131fa1dcb2ff615e001398a0776795922531a2a79ce7fe84a1dc1db0aa8ea6866aa40c9eeb8558060d01d3cfa22c77ef6a4bad18d2c6f4a8b3f6e7aa4f890534492850421eb50d2afa7925d06e23947f2b85730b30d1731a42ca9083b7c5905597c58ab3785fd2ef35a7f3692d9bc2c3a0a5690680e3fc1bb4b6f985b078cefe3be7c237f7ca607e210cc52cd0e751bad5068a881a79894cd0dcb620544c0903fb22c4ab14e64e070bbf9e4d5e3d3a510e49a30f047563c074c6a2e64d4c65f6ef749e477313e2228e143f914aebaff12da2b2c8f60338d0e588542865fec3d0e22b1d73208870a0340c6911f7e1c92ca30d888c0bfcd4217179c98f749446c91712c8dacd289d59c37972db995a322b22f5187944e139d443d0d30ac47c2d4a1f036427e4c3c0c440647cf866462daeb4eeeb55a1c3f8b282e85b0c543f2a0ec50f44c50c8339cfd014ea5b232dcc31556946f66dff94a197dcfe50510cd5f9010a2087ca24d4a5ae8347424ebf3fc5066151817e594902d3d5685658f45d2017104fccd85e32775692220b627fb7472694a4161165894521eb43bdd0cca8a00fbadee72825d1aeaa01c7f5e47e5df61296669e667e3d0e8b45726883ca3b96483111a905391e1ee3d0010092dcc867eb55fcfbbfa9b2baf6889ee62b43bce98f00846bdc8eff428312e24eba033488fb8c9d1fc2712e96af5ad880c24433bad80d40acc9e90b420ced9ce500c4b9acfe91a3475e2d879ed71f5fe7b49cf0ffebbbd49c8658e128de16424c07edf684b2b12cc3c35ea02737a6df753494efb6760dffd55635d6fdc926afa1f6c54138d6029b9d7c168f3c10e233332505b0ed33a314e25924ff1fa528b720b5f738438e263fcccca0218e082ebff147f4fe7d5398782ca0829c7420c8bba85f71447dacd3771a09bf9a683d2767989a0946f9e879490bf84ee8d64d2c0901eb3d0b8211d31e299861b963abf7ceabeb7fd9732512e0fa7f5c46956e7036045ce45d7bd8bb23666b623738c451bba4ccdbb73b932c2a9d5965e83e8c26acbf13c8d7797269906d3c4f0805aa095fdc284db2599f3c3b5f17ac9c0054f06f06600b31c20d670d6430fff525fc5b00e9ef98cfe42581f5ef6d5afc5501d155624ed00a957eee5c7407c1fbf599d0dd3c5ca39da97aa237220d8bce23a0b2bd2ec93763f0e5bc8f8847f20850152cf10afc8abe4f0e01daebb0d92dbf07b91e9ae7bf496d229c69cf247a7baa8cf572e07ca256821ef97a5e628749478b392786a0de0eb884b03e1842e1ce1728a0d2046e409b3805e99bc607553fafc7bd66ee7c1b5680efe754d126eef5c2bbe0a8dcead1c1c9db5dc2b6a1e70429e261828fbd54b28fdcdb42e3709b5bb5fdf54121506347d3a06dfd11a0e674c6cd16227aa29d7b15200c6048d96e843a15817c217d4911e45ccc8da5605a1871584596fdaf1f613c2610caf695805bd54e3eea0156698152db16629321990f6fc9d62830624f1c08f4f9e9a10fdc8d5eb3e284a3e2c4dd547eb7d2149e06a7cf2745a96f3f0aefadc0a11cf7756c8f80a902a11e27b8c48786f3964c76e910c08194bc7c2a38b6b1693eb7f183e66c96d4b6d4eaf68b68f5a6dafd8554b14d241b1bb19b08d815eae9ff1e3cd61b534576be0ddc599ad846ac762741008a42501a20dcb8f3c60cf5ee6adf5da72f63af6c3fe049f8d89c7a41d7d55b15dc1f3f20e338c9f1ea5e37dfd2d7000939ee5b08e875ba2a82154800d015e7a574489a6f583b59dd2ddd96b0a6e387862802e112c30c93c67fac8e8b07f75286348ed63304969822457796851f1a8309e52fd2e3866c7c0e567ef1135223266261bd59c070191d7abb9cc229388d17374873f06702fc5cdd71627624afc294378d00c91707c4770a489313f74e2d534fcc4ee0d4016d037c101bb82ee19441c2805b651bdb801ae17b2aa26a9c8d54d962fee4d00d5df993884ee40f6c4139ab3416053b308e10bb1aa802e88c1f8ba04e1e3d6deaa7704186b79ba20c7e80ab7788011a75b01c7b9bba80d366bf2486f8ab9be28005f00a7e2d6c576b5fe35e68d3acb4fa7dd4e14999ea5d8b009e40780e7854a2ca6217da56407445045d23f152af4adf317df15d08499aa241df72ea2c0cbdb742ae4120bcfb1a30c018e5428f22388f9dc66db3fc9102b60688712c4a5d48c2d9fcfdcd3cfacc90398d600f017b2d2640613438e036323b2309731aa2acf4c3a15b5c5dfaeb02b0d12cd7aa6894e20efa2eab177074cfeee8a872b8c5ad488067cbb055fc31400378968b457688304a058fa6796d24f97aa29d52379f1354297867f07fd71019172715c3d0168abe684dc9f9c9328918030a6ccafe5eb1765264e3e4389a8a1c9dbdaa5a66ce3097ab42e28bdc71c936c2bb17961e1932e274ae039161d37842b4fafadeeb89fbd72f906834badbe0725bb44f8bc01155f21df6c49bfe608a461251f79b37e5e390a0a5899b90d11dd5501fba17e88b857642d7f1d7ba8964559614027227d0de53828d44dbf7fc228be95bfb578dba19e9358b2ae8120d0655fd34e139a2be45b8a0e903d2301f57dc20d97db9f99c313d1c9c593f8f7ee879e75730a36f4a61cba81ba635049c7c4acb4733fd45102068c67a3e028333ed6be287d1b9bf897c115b666320e7e8e8914bfe0f3d35f8493f15b03f45280c4612dbc623950619957efe522496fd831ead0ddc792edb6d00a9fcc50f6a1c7f9cfa4b16bb0d315998d1d464d1ae969385a5ad270b2fa150169656ef24ec34b0caa0db88114c8ce0caaae142fc2964a858226c1452ecc1e5f4bda38058c6d4c9f801ec9bc4362212381b5aad8e228f8ad7073ecdaa9d331c55f433307fadc1fdb92bc42c1e34323b8147294a6b2927578a3effae53ac8da3968810d87016854377780130e1541c15c1d1eee335abac90423c38de2610982641e6d7e688d316fab6bad83088defc2a416e143cf3f6a088349a1546683c86e6854b6897d118c8238336384ea197311d45d6784b071c9387667758e26e78cedc6653a34bb2af97c3efd86e43ecb389dde64352638c1f740ffbcb1e3493fe736b944be0c97c9289b523fb0a09178bdce39265b1ccf12f31a875d5d079ea9ca31cb13158efc4ee38ece752b220a98559c7403838b1f89a067aafe34e6f4f54c4e8a5499f440c4aca56142f5ddb2db9ec00dae8d1ddc7e5674ae1e9b85fb33d8a228051079a6e2eaea80a88028e017472c0d8600958c0f4d044f2a929bf80069a5e58358ef06ce04749e1b3440ce0b37800bc277010992fd869ae1c0174da01ee9bc96039616d8baae70fcd1148b9cd932022604ed0859323ecf5693e696411ba34b007426768e4bc979bba3ba9c3eb87cb215fa4a2a1a10115258f3d095f79e8804713b9047a76369dbc7b6d7f17e92fc795515185f1c8b92434f5b44742180326f8f4311166f4bf30442507344394cbe5edabf65217f1f6bfeaf8da4c6c9e103b8af30ca73e9c6ab8d66e794a9c404f62e89c2dc40452c7878b97e5c1ad5c60bcb0d38e45374ef5259cb7ebd5bfbcd696846d2251d310bbd08146b686dacfa953f4ec7c5c6a8008b88f4e879d574f09e48cf8ad8c9afe0f5d223b672c311bf84706abe2165c2ea01ac114def0f3050b664733e38fdda26ad71bb3d6ec886451fb6ea694c9e895eb648a9d1281a2a61149312d7f82bac4be4aa7bb9185b6aa496ddf79492564c73fa239047cf3807ee008c9177e4f3673a8f07426b1ccb9ba0c6aa533cfd6da2acf56b5311086ca30d973de86852cb1d9e02532c2c721a097bc253c84b794ae29391b5291233aeecbd86b11f3667306402df3f7811b2603621f315f925eba864a5a0d14fa31de9ebca46a5013a51510232816df194b2ae08db569756b21f05b0c93087178056879bca9d973e53f1c29036a6772765c601619271db53d7b578ccc69441dd23e1fa1c87688f323ba7f099c44eb6ffe00f44e0f78fd415a4d3f41a8a92fff668e30f13665f8076ad027afa60301cc0aa0ad90162bf5a59c9b261bfc2c10f8618d6c23d208d984ec4df6de72ef51073b074007dddddddd2f6de1ec5d1683f3f668882e86f9924118a92912c486668814129f61adf5b64ec12a61eb7892c1a86d755b249cc0ee0462b66a8b9178d348a85a0892cea5dc46580fe951d7c408e8d872e46adef8240d49754904f6ea3288264554af549f2c225797953c42c4484c15e96cb621b96a29245787db1b0018dc2e2343748e36dd0059e174e4aaa55b5aac6a596badb5d65a6badb5966559d65a6badb5d65a6badb5562883615990b51600308b656e9116ca8995bdb0dddddd171bb9014990f4e28dedb677a3b7408bc177662b10eed72d2aa250d5d65aabe5ec61b4cc711e8dd822de48efe6e6c64a1a19046491419040903450b6589aae815b75968c861259023daa22845e056134c2827118661c387618018e1c3870e0c041c466adad52d2481a49432369baa66bbaa66b502e2236d8239b02bb58be62996b74e52eadb576947a4d1764a351d1a3968fbab7a4e9955aab0d65306cb5aa0cd63f4963720359aa5b1845bc8215608aea2d379bacde355db37d5dd37d5df3d1b6dddc2e6c9d77b85fde6783c8731a33830ea365d0e5af8ac871dc3fdc755dd765e851cb479d6d5244a96897fbebbab89b6430b80bbbae962c822b160057e0e851138fc8006922374e42e4105307c9446510ce0e929e4bc4f651af0583dfb778b37934d5e8efba1bd43fbf91a6026531ecfb1f54bb4820edd234a0ec857d7f1d59757777d7403cb1fc0164a9fec1b2073045f50b774d8faa21bd52d58c8edc4857a4fae5eacf4dc085ccd5933490a57ac40159aab3680ec33c22f25457b3bda657aa7f98fd6ca14ef4a12062d3ce79f6af6beaab7f33df78739d2069ba26d2d0080149b106aea8bf8949a75345d9ea26c962d857ef6b1ab077e7585fe36032342f023075c1284800c7e6a12ccd16a4ab89402a55fd7024bf9021103f04c93373a1651aa7df255ee72418fe0a7023c6f1628e1e551d654233a253f55bb1ab3a87674cedd56dd6bf47b62fded4440ba65a6bb7adebfe6f54bdf1e5c276b7b0d91ecdea56e6a2f3ed56e6a2b1c7f3b92ed0332ecb62700ef268c4fcf1bebe762c8b617fa1bcd8ea7188d97a1187d898833dc398177344140cb92f8305b205d109391c82ea5797f76da14e7414f39421890cd01c3c8d8192753ba90a6bed2ffbd9514cc75284a41b44d0a5eab69f190cdb56f70d17defcc6265f8fde8071f0a1fe6a61bbbcaf25471f623e434dddc0deeccafc9d31c6185becec847a44e70db201b127112e6cc166777f5ae0d2156cf0b05ec2f919334b09718ca7c085a2cfc2912b935f2aa44755909b7843836ce1c6c81029275d3da9fcab3f5e4ff85f0592abc72162f7d022680fc4222217fe98bda43c662db64b7a494b1eb31793939357272727b74e6e4f3e5d876541fe4a2c665d7798bd74cfdd53fec19fe89f93e08fe421a9a2422f7ae8267e3b9dec85c43bd98be8d7838570cca24d444264e20332412a711109cfc4af044990e498889fdbe2f37b0e4a6844ca49c7dcc0f1c23dd9cbca3dd9cb0bbf1c76b190087f319ff885db0b2b2f883e7b246fe407b64fa67275298518430064aa5da64dbb5c4444af4e85b40b897bffec0bffe890957f1bb5c9d5ab8f7aaa3d8cb00501885c7d3507d8bf6a835c1d7eb506b9caa25f4922492447f4ce291e0a4ccca1d398591e46cbd2c33c1a3187bceff3138f598b13efe4c989ad271eca8b13efde9d903bdac5c4ab12d79e72d22eddabc7eaaff0abbf8065901e555fc152c808cb1aeeca5a882e1fc2a25f29253e8d995554ae72182dab789fafb8ca62d0ab88ae721591c7a2e507dbee21316142f479c2c461b46cc2c4514eb318f422ef93ff7c66314237e1d188f984f7c98f380bd9c95e364fe662f3647c7e2f63c4718839f40bc2e02f09263f97879e0fae318893ca9bc0d287fcd12bd545d5496049d3a3ea1e9641f4a8ba8ebc55c7f8b85570e3a87e523d05778d1e551f81bbd4a3ea211c8ff4a83a0a8e43f4281ad161eb7ed2e1eef9276fea09b254bf6eb6ee272ce4092eb909ae3d7a54bdc3d5478faa83f0b53e1359dd05cca0c3acc4aba71e55376a2106bd9437ed328d0c01574012921300b6c4184603802b5e802cd5b7ec2c243ce5ea1e1a64c6dcaa6bf8ebaa1cb97ad622210e11a61661abbf00578ce42b59b2556be15091273dbadf937fa36c15914d7e238659f8b3a1254f20874cafc1549f800cecdd65601c9c3d8712485b0149ba81ce9ac305b29d55463b650f1db6eff99f10c38ace0681fd859b755d619b8796c698820b616c5a7dc52e6086de67c6ac53d86a3df568a86f1b6df544d203b37bb6c45c62945145c6009831efdac226a50c59760eece1fcfc14363885cd9bf69657d94b193febcdd78087dc85a25bbb6d5d07e161a628f2fca85d64c48f0e53ff55c07a344caaaaaaaaca83b1afde7b746fb6f9183d8ae2831e4cfd172f5fc321b6597a1cf060ace783a4deb15e811f7dec8454870b2529a210853e5b27800c5732b438c3cf64fb54873564ac368cfc7779f5f2fece393d1bf6b7deba321067e0002c6286189319aa570ce343e5e9306f83521b36a677812b052a90410978c8c10f6466a0b76103c24daec4dbe8bc1c62acd405370b170b1de8c0c5421370d663215934c5d5315cab4b6fddc8234ffa0b5b32d48b32d58b71470d73521c9b7a416270337cc951244201596067ed257321b12b210b7cc73884fba1580145a3d8724a39e573e818774063833ae8004dfefc19956b6ba17f2a504640225d6aabe95ab6511566e44a3d7907c6208bc414339c54167d745d27e188fb085ce188fb075f38e21ec23362ee149c0657b8d7c7209a1467e48c905cb9731f813f0f61983fe78e82423f9d6cc810426ebe6c03b9fedec6959411e513080e5de2ea91562194932bb1108e3f467cf02dc514f528ef8ae4992cfaf838a9e8a3c3bd72529c54f4117f4096fa2a02b9a51843bc014c516f7923bcaf4bf1be2844522f0790a5a27c76354f42a738a2525ee1799912c25f0482e27d94662f24a715ac24c7a45d3c1b668d48e13ea1d8587639acb1cc2798630359ea25ae384e8029ea3950802c5929abd1a4eef593354dd33e354dd3b44b4dd3346dbba6695a27354dd3b44b4dd3346dc4354dd3b4946b9aa669dc354dd3b4cf354dd3b4d0354dd3344dd3344dd3344dd3344deb5c9bd7344dd3344d7472946bda61bb94642fda9569579913dab8ca65338e86796c70ae47bb9b0dcef5681766c3b3619a65d9f06c986647d8c0ac115a4db1815923b48ab3312245e3e8c7c688148d9b211b1af709491b1af709b50dee13eae0e63ea149a3c7334334e5155a6825a724aa742639f3524f6552378b5927577523d619474339d980f44aadd783dd93941bb95ece601fcb496d5a8d198e0d9638d370563ab192a65444875c3f936b26936b2d6520a842aec76a6cdf95699792d7df1df6837160d34e3f49d3ce843e75b48bca4397479a346d8d2d943d7459d3a469531b911cba14d22e9c872e7b3469da1f1b901cba0f5de26812b5a6d0e58d76f13c44ad9190c9436f9a26511b64abc9a1ed216a79e4548f1f39843df42e75bd8d093d1e699793871e8734a9b2365b911c7aac6997eaa1471f4daa2c2af450158a3b78e4d063e83734a95a38c456caa137a049d50ad942b7a15d501efa02da6586f54e05aaa50b6d9f1c0a7dd4a48a12b5cb8c0ff7d067936ae87ae829d94b68ca485256922b95c4c45306254957460625839241e5fa9992a45b9aa999baa5992a49d2954a9552a5544946922e144a062583924149d22523839241c9a0723d4d49d2552ad1144dd1544992ac54aa942aa54a329264a150322819940c4a922c1919144a0695ebab94ad5256a94a9524c9a652a554a95a144a0625932b4a92acb5db26535392644bb3d475db96caffecb7bdbea3a265254424bcccc35e567ac8db32cebdcacd6ee86a9cec5ec52b712e96ca38a99b4ae5facc735119077551a85c8f995c97ccf55c322697cc665da5ebb94a2657e92ae5fa0bb329932d85a542271565b2a130540895eb6d55c9c8c8d4d748ad92dcaca79572adaf1a736c36b0cdfcc91b9bb25b0a57437a488f6a678b3a4155a846591dda1d44464646e6c3cd9a75fe6098adce2827d565a324c58ec96bdf644f87dbb04b53ae4fc1f523eaef078b998b92245d19b9521ff23e6b4b797a40a4c7b1e951fd95b15aa9e3a47a548f6960b33daab7d42e356e29d7672569edb6c90e05cb7a79a45d3e7b823b4b238db15c6b901fed02a45d3ac738db6f87857e3bacaae451aaaa3b4191a110ca090aca2f4a25e589a4bf2858e3f9d8a3886104922b0a3ec13368f6d1a35af9f87153b0d92e6dd299b2630ae5f44d707d876be4fa921bb99e04d78386449b5cdff51fdc75f0c7c7c436ced4471f3e6c7dd461936f4e2ad7eccae47a1258cc1a739600596a0ab2d47352138aaa2763cb40cca1237198c195da97c3295b87d9fe307d98791f8a2c23fb88bbfe59e7388ee3380fa67a7bc74a1984c92c9b595eb51e4c3fbbbd8533fc59af67212dead54849aaec6573009c81e4db3924bfdb065934098761fa9fc7e33effbcd4403d0ed05f208719e86f858945e4ec9d6b27f976ed97243b8824037987e97fdce9610dd4a3d4b371ffe15e3ad937fc95c832c38090e5efe5c598cc404fd9560c53793e504f077a1b10902b927aed15b17d100292642320495b0789d80c74cd5c70a1e86b61c9f028e08aeaf6defa9dbf167ff13af68bed1bcf53eb4189e119f4c3bcef97b5f7ca5f4cdf12cbf39a41a5a5bf3037507ada8283132402c44221db10152db0a505ee20c318a094945e0ec3c8711cc771d77a638bbbaecf256e9bcafa657dbd84af8980bc0fc330b8653494c8d9411c77db15748bbb6e8f9d93d5be3907752a355d03fad0c8cb98248e4fd2a868acc6e3ee6dde7589d84c6e6bba663bcd54f193d790d7437aa546aede1e4adbd813cffb7cb4c36859fb154120d039208ee3b8abe0388ee3388ee3380ef4930c0688cb388ef3d1b29770d7755dd7755dd7755dd7755d308bb11d0505e5a6807e53b08aaddb2b056b6c03f2be26922bee15f712726561e760ae7eafaac41561160632c3aa5e491db93a6a078f1eb20430457502538e5cddb6481cb98af9a8eb9a2c6c34dedcc85cb5e7032957aa3fc2ea557b5f35f52c64681792d71872bd0160adb556157045e7b5567bd9cad57a7d3193489ad86d9d3f49d3dddddd01f1e6a50b5b8c4147bb602d03c3e5e295bdf0603183c19df3600cb2d00cae50144094c8f43ea4e7f697bb6706e7f576d64f6b45b9c230374c6ccfbdfa7551cfddde7ad16f9eed6355cfaf4c8639870c8352166508c40b6ee43babadb073f8de7eb857b556f67adf3df6ce62787e6fafe5601c66e63c520192e44c11206ea0da860f22323d6121d35bd90bcf84d172865fa6071369c43cbdcfd4237a1ca27df976e4ec65522feaa0d93c87edec91d4228d0c365448b7451ad213e866a110600f0c00493d6af9a87bd72b14766f95f478d3fb4e5c75b334250fd0434c8a008100790083a845f4e3f92743a61e222c96b99039c3e48c9c913396853916ce2c8c59f85af8b2b065616be16ae1cab22c1b2c7b0340ab83ad079d102e44865c86b5731d6e5ad6e27a300fae3c5ee5792539873f98c4037303f7c954e26ab9cf31b802621d8e25b4075cd199ce7ffe79287b31fff91d81c50cc6fce73023c120fcc132b4e31033ca0b51b66e1dbb2dd14f1cf3b46b3abdcf06114ae642e6aefbe18913d154994ee4eadf89f9cd5b9becf13e51b64194b7dcc15a8e530764b1d772077386e0e40ece8464b983b113963bf8ca1b3777f045e4ca1d6c01b17207db96b1b983eb919a3bb8aae960daa383a7ed60690364b167d10b909b27822cb683638ed3829025c310b25cf8cb0c90fb91084d8c218329fab41b6d926a34995a2a58579f9ec01350994292a3641b27db669cfc368c23a8f70f1629f10f1251f9076d3e140818a9906185e81f44fd1f0482ff411aea62e2dfe7843549d9810c31057de88af076159c1d6b278163be30843bc79938d32e5d3cc115b04b35f043f5623a6cb06227385e159cbd04c6e48bbc55d9aae456c9af46025f14f2ac8be62fc92dc1527e4bb0100d9b45f70415673ace7c30e4afe1f6394a4643899c729961640f5142123a43868836255e7269026f0a267908bf9498747033f9851be7017d380fc9597487b010c9630a4adf88363527f2c37d8420a995f374ea27052381650ee1988265be136b1cb10645ba41ca928e33a25049e7dd705d48787146863ce943def3be880222d39212cf2b31b9278b619590c0138544280ee1b058136bbe58136b6a6a9aa669e89b66947a4d1764a381288b7d2a3a998b92ac6b6c84a027f1aff359d64537c95f34e1c376c11e5c29392df9bd9293f0be582a79c813795f1441a625259d5772182d9778efded14a4497042bb9756995dcd451214240a69759ace95108c37cc3cd9026b1902b74246bfc48d746302c66fb565e72ab46d25b13efb39bc8fbb6ee7a5ff758d342e6ed222cf335c14e70cc5e09151f99febee4762653da3cc014f424701cd23d64fad117bf58438f216439f131314a398d4e8029e8298d50c834d678606686f612e0cc264768136ab4c0806d47b6145cd1fdeb25e44dcb5e589735edd29da6b6ec855552f28804216a861829128f74a96b449b7b2c0593dc0406fd04feaccc1cc2314b114602cfce62ac5cfe76d662f495c3ccc5ca4b94b84844e25d482452f946e25a16035f142ae1a1bc187de52bf8238c6bc0b0070a70015c4163cb2c8031ccc015dba9765ad1ff108d50705cbcb050000aa25010d5a2e4d735c18eb563ccf90af67c84b99fc09f9bc0a08bf066abd3d3cb10b7cd6e1b9521d393685142e557e5d1f34222cff38e6f43358bf17bde276ff2a2e2a1bcf05ee2253c0f471f187f310691479c8930883f441e31489c9989d704bf84c49c9d37e7bccaab2c8645c2fb648c7f7a3462f63c92ec0597642eb027a3e4d765988470cc57057ffee394abd014af87744dbb989cbe95900448df43e00a92537a234b99a2909462f437d432c210e58cf0ba338a4909c907733064790da762c8f2068029e4fcac4f89b88016f03032fffc00a088135738a297f8c2117d48832828d64d298adc734e095be48ca4d7ebeb75ddc2b647f3c26f7a2dbda0f51a7f61eb73be5614093fd4c89bc462470ceb515b59c3842b3adb203b36132e147dfd42fd741fcdd23e368e3962094715ae58fbaab2d68eacb5a9cd4341a7cc2460449b69f4587434e1c05a90a52e555deafa6e8ab12cf4efacb56bb5554584cbf99ddb27fbe773da3d23c9483e399c32077f304856d2e1129c1d66502943c842e27d9947af51ed5f0ea716277dce077f945e9607f3f17cd0e1ba0d2b57e4e5dd2236f93ecc9ae7f29b24752e2f0f218aafcfb1723b5d7adff53c1faecbcbcb000c6283b97d26c7c69d8fbf1a94a40b607afdf9f6201440add77708572a842b5f0536eb36e4e76df4ed6f010af05d207f9000f516432880ea1e8402a89fc162384365f105ecadf743f5394251e23d92b7b1f50a3c6c782957e6b43db850d45563f6b4851e764b0f066c66838979bea55d602cfa0f0a01d27c4231e8124fbf5515d699c5681a2a1684d1d769812bf49f652786b905bb446cf204802ef3f424e8d2a79f55f612adea4557301f4cd12ca0b828345dc45a5d6cab0a570b5bec7a35dff5b2dd17d75a5531aabdb6ca1649858e1d3b768c74f41247f42c3a0eb1cdc3206e18e5d992a78a3c218d8d296ab8419262d705f9bbcea317b3bf7126f2c88eab2893f1a8de57613df4b0841e7a58420f4be8a1871d76c048b0030f3cf0c0030f3cf0c0030f3cf0c0c30e3bec9023478e1c3972e4c89123478e1c3becb0c30e3b943afbeeec72fe41203457d5a094526a14c30ccb98bfc230acbf617943e290397a5445100298a23ae7ee98c1ee8e194c870ae2fb2c1aeb1cbb7de775e5263dc74cde2693c9c4f91ca55e233f1993c5a868d983c70e1d316dba27ce74f2984e98e9c4319de009be2926e6c68f989898989818d3e9b4e3c4e3d4e3542f87e3228661f760a3d46bba209006a2f2bd8abe3137e6c6dc981b73efbdf7621eec76eef57038dc7997c5f0fc72b8f8792814e260f9f9ab82597cddbb2ccb9e636dbf2a58e3eb17ee736ccfe4aa55a0e3da8ebd75c8e0ad8a3326f7ea643af5f091655996657dd57abb6c01b0448d9b520b0153341272c51992abdfac85e4ea8dfd4d73d34dbf091bc129c6743ac5dc8831993e608a0171a02ccbb2cd6432994c1bc8946559b66d2693c964328150ae298bd9325366ca4c5bcc47765e92c5f0bc3d1a22ac71cb982b6fc01cbfa67befebadb06630aead7d8209c46caf8da7d309aa2e0109283365a6cc94993e3a4c3137374384c820b21889bac176a349b1b4fd933988913f667ac8f028ed28e928e5287db01a213d7c08a9393596d9ffffd5b2d65a6b2fcb5a6badb5f7d6a264302c3badbd3cf7ca5e6ecac55d92644ccc631ef398c7bc648ad1a146e9c4a45423e6c4643a9d648e5c5d56f6727971939783d5e01c2b959810632ac5c494e032994ca6ebe278ea759d4ea7d369a2c0e0561dc503b2991d356276cc947aa0c0340c2f2e95b0ca01c8523d6a00a6a8feee5bc932995aa64d9cd71a4d3218b6de5aaddb1c0e873359b00cd34b7c5dc392c6744f6fadb53131313112878c91a15d14d02ed7897669bd44de0b3a48ca8be5bd87d1f23dbd1e3feabe7576bbaeebd8258390a1472d1f75dfbaecf27a4906e3929b9418a594524a29a594524a29c59d7f2411dba7c593c4d725299e467f579d7e79639243d87f520b466e3e5cf6a2dafe642feafb1f485abb6d5d37b2f1743ac5d306b598522cc918ad5dacc5581638bf58f6c2f138b6479d7d3e9fcfe76332994c2653e75f9b7a5ccf4e2726c4984e31312530994c26d3e565a00df46dbbdb41076d9ed227ab214890204182c8cc05f7925f9971b20bc210b2dc02dc883de0625e455d80fe79cd5c7c348d83bd73b12c8687e37d57f3505e7c0e3ae8e3c9e0bc1a6e076f426cde034a9905b205d10979f51a8204091224009826db44c366ec97a4d6d1407ea07aa8e0b1e3d8bd8f727684250a600123c104e41190fb52a6a4a424204fcec6e1a85004e46e04e42ea2001ba455b476fc80caf0db0f3e327c08c24f08a3fb9be1caf19e1c4f72ec15314216495a910690f2f375040199c1b06a780004a66559f39ad6e5a1e891e5c11e35a0a228e66c989aa9be94d6abea4dd86ea5dcaafa6feb645b355675f7dbf25034a047b2cab0c7215a0b575c9fb730191b76893fccb35e59b7d6ab340737c608e7fb744e5ae78cc1116e32ccb094b51b4f7f2f8b626ceb11ac6f6c1fa78cbe842b66cc1ed17f62d9d3b63725fea0978315650d186184304219b33fe79cf331460e1c0092a2e501843e929061cc810a1960637026f2e811b5f910156da2a9692367382b7f7246f298a92fda64da39fd4cd9066222d23de8db3ae68315c41069620a6a92332f38c186304e4e9b7cc8d3a86968aafbd736b99d704172469e648f1e51ee933372067fb2c775394e662dae6ba6c7c57246ce707206669349a248d98ce28d58e3889122cf6890f9cb8075b8597aa23d3e24a922239bce8e467fb7590c041bb56931d5aea44d9002d827802ea04f1cd434031c30f0217b3c37b20704e264c54992cf7feef9ed30ccd407fd31ffd1538bcef399ca009250e6e945234efe81be0c63d6244928de0928fb6c9f6ccfc033a3f32a5fc94a96549fb8bab2aaeec1f7b53b872b5975f7922fb8c1b020c05022c311209bc11618e0c8293204e205a87c218c4dc334ed5e256cf3d4e344b1219d105a0242b750d3a3a862b00f6c16b3279a4a9d52a7d429754a9d46a9d77441522aeca9c53eb07df4447bb40b47ff4d1acc1e3da2d464ed101b5c918d24bd8534923453f42457e8bb2e95b276db3a8f37e9b4f778a4e5e3c7c9f2f1e33a9d7a447fd0ac8594f2f4439e4e99d2d3e9d483a66a658fd4b816465394082d72698a16c9f4d683adb5b216d6a7853feed62b9ca2453e9a12659ab23c9aea11e5fed1944d8ad25bb4446f638b6c921e992749923c7a85be87fdb101e9664e49b7dbd675ff6882207373ce7320e0386e72af321873da39b96892326edd479f25913d1387bc30b69ce911c521493465edb6753425496d822bb44d6db2c147478fe84d2c0259e83cb5e9519f20f3786e3dd656ebba6cb516b589194dcdf09094fed2a08b766a1353d09ff854320d4241903d56d3eed13c1e5b2dcb633d757218655e0fa579a278fec5dca23d8f45e68954173067bf70b33da26d6a1d8d821f40c800f503a5a696e91db54d3bbcaf56cfa9750ed75bd3d33b2a539b7a440f57702a0c4b43fdf4b0f96b4d2bf36062f6d48fbb35c11525802b3ca7dce7af87c3f39e798fe7d1643156010cf4777aeee1eeb9cc5e380ff7fa8af3541606c802139ef1a8846c99c97a16aa990100000000531500003814080604a3d1781447c2a8dd0114800c7a924a785ca149a42807421074c610628001000010000000080c6d020033f0be6cec7e8d5e593e3e6de333a017d089ff4eaf7c8abfbdf11328de37f5d5e801a197e93abe34816e7ac547f8aafc5d017ab71b1edd8d8e1b6b7593a75bd1f1b12e6e38f4686eb8552fcdc667c9de15d4b3bae1d2dde8b8b1b69b1cba051d17ebe686a747eb86617b01b297357b7920f1096348001ae61ad016230e08760965687a4aa6bb3ac42bfc7ba9a10670d993891b0e715f216fbcb74d1d3227eca63e5dc14779addc8e79a310d40d0e7c420844e97068272340b2830657c8d6ed3b5082e08b600022d093e0fb430e6164e590dfa5c4dfebd74693afcdea981009cbe083e2e6d7401e42398b65696328767478acfa7adcb63e6ea41722a5937bad2f9084e3003a66256c08efd591f1e0eccc80729d3f4bf1b7f9bd8c47851d404cc96b80ba26e56295bc4e2a3f28f5ad091bed06223607294b8a5098d9ab0c9fc051b7051318cc9a0c2cd9660ea2b98568839b08a0429e2b224a91654db3e8fdca3f961e204f668360514da3fad6e0f3d2fd88acffc679a87b5d6d369638cb06c4368338f4ca3f0ad39c671c565fc7fc527adfb310386368d0179710f62f1377ed07749767dd41f73f80084249816749dc5b43ac915796749f08f9558e46365854c639930b9a2c3ddc37e76420239447531685ca00e2767c25797d5e855bad4dfc471d2a8ba68a3d0097194b225f3738f52abac7ed47d800cfcd89e562d57c66d53b2958d6692a43d88005d71d4c1e6da775c7163807fd174e7b0b92f5fc2f5ecd3d266cc8aa5124b040e7f108563f668e91df3575e1ff2461d8050a4780c2a088a8bd8d89982e7488fe077c130cf50f12e3521df8ca674214b94ea1cc4d5cb245cb33ac2d1209e73270d241b161d444cfe3586c8c1ba07f5059015ecbe95da2d54f73a6d85027f00d6fe2952c186c2b0144884483d3e0794527827f809287d0855e25b15b0cd4bc5ba930706d7ccd11d20a67d54e6bf61550fa92f954203c123bd2ab51570cd1125713f8c0ea3926d272eb42e06ea53db262436ac0b751c62c1f050065c180310e606758f967a75be41a655f3ae128808aefbdd1d102bf95d9419d42b89efcadd3f392b554eaa1f4146cf81f3e32a82078e3537190e451c7f4a72127b8808496000285fcb260fbc97eb20d06b5f55e845cbb8da7b8fbf235b59f16b7c93d4ae8421bf9e9e71f8b6ac0f72e0bd2dcd8aa2afaa1180043340309be26d0d4850f3b21cff8b92e209f00567dc4d94a3f349b966ed60539c23e3997ee18a8273264b25c0a241732d5dcb5a20a04e66a2c5331723497aedcac7a70e1d8de1f51c9fa7ce2c931830cd52c33343109e642b0b20031087eb5f2a2e57061da2b4dbb08c24d9fe84fad651af23e68dac588c4d7159d9752b4622dbeab96d762a9104d270d060ccf58a82506a8dfd976eeae25647eb44179e1aa414067b0824203df9290a8cae0f7617b10c5ecc985dc50583631084557fab6a599a1bb4f7383841526ae3735befe2606c7341a6f8b704eb13407243b52a38fc4e1e62cc47246d0307863fe5f86ae4bb5df2f76f89a339bc6c929695ab3f0d524b299e7ff2a16ff8f4f7efc162e157caa6cc4156ab41422661aea118f4cb7590f98d0ca7605acd26632e63531c846f68ecac60ca526a208a5efab4f6ba060f9516521ca2afe1bbfd65d94cf740e65286046d3f5919a6a97cbed9499b7fe055a08799918e05053acb1872a55e36ef785f690b63e30291e24022ee1ec025a87501085968901183b30dbeb039bd1654c7264212219cd9e32a06f0e7dcc741895971e6a47344c2881064b931742d5ba2c2c317ce2404846830c2f341540d16c833960be7836d4008287834c79c54c84f4290dc860797c9243bb0d80ed143c2009aa57d08453e186e466b0a3ec13718b757a7922f762cdb580794c3599f1c5101878069b474689f953ec9efdd3cb6ebe1eb470a53a913a5cfc2b29ae9919756e28858bae29f1c89c04339042fb54717ccab52d43015f19b62092b450289b824cc28f718fad0c79de08da0f713c50563ecd76684c65c0204e39e41b35fb3b0f1ddb17207d920481adb9bd10c1ed7c83e897755bcec04aace44bea07921cbb2040f8075fd45417477474a4624a5c552cbd46045be0a5a1fe469ed6c45fa897ec82363b4621129d760367afdd6312b5888dd5db7cc2eb36c49485e2cdbb5c7f8365545a66f0d7eebef34b73a6bf8986904dae8c893dba59eee019657640032c2af6e470b5cd29f47db08fe1f9a368db2b0d86bd292609df0af6e7aaf2b799444e6b0d0c0823f9ba46d7795a18110a507c0e081a9aa4e0b5ceb3a272f9dd2f52cee2153f7836133a7ccc5d65618991a143217ea16b2df1dd4112746a66f6a5e6809d8a48f3152edce755c0fea4fb6ad5c3387c3d9abb1f4bd253f0e36b70e511c64ddeacc4a1504393861c3ccf031189afff7a6d88505100f03c54dee6be8d7496f8525567dbacf076e31fe275b446d45f8ae097aca2247c8625ce3fb41ed5b33c0250279d7a3e9ca6eb8ed3b74330082b10ba3b5c3810bb61fe638a52d980bb49a4740d503bd082f62f982691511c69b703faa3b3db8b3bf517f0b569cb6de9153904b15720305c32bbf20b5f46c18b08cdb4d2cf87104e75a964834aea32087414a306cf7099bae65466b173ab9932049dc04866a3fd78b296dbe6773a07a7ec948e57d021c38e016901a6155d091fafd0a3fc0d541025188eff750931d82dbc4721a1dc98355ad14354bcfec2357d44899658b1939c99684f9f76a1a0d9917e00b8dd22a1b74bf995015d4497c08c7e97c0ee6ba4683b8a6a4cf047e48a65056237aa2bb173f41fc521a48252a4d583a6e0f388ca7b1487fca2a54ff04b58e65840ae2bccf0502ad5795b9d4910d5a54144bb2cba500096bfa3b9fce905e5ed4214675e9f1c89ae2e289d16373f5a344873a564dbdf04f6c7b650b0bfb62c165a77449a6b4ce36bcc19c4a923bc92d5da8fc9cf004874ace3b8b4e7c700c2b575d70db2aa3fe7f309207522e116bf08b55b816cde23e0a23041d64ef4f7d68f3a2bf0945acd868a1c1b637e2b12a7785d731d01a2ae884a1393011120b2701029ebdb20780284d51328393d71364c43836a6c732be7b42d3a2dcbd616befd06a92840a8daafddff0508612d38faf1c09ed30f2e38b54230f360236e2ba9c019f599525cd53b82c50d1e1bb045d0181c02287104c431cef315d9bb3656f3e855863d1ce2db9ed1f1ef306b1881314afe83621ef532da884e5e1330e210e530a926df6e4928c27f377ce2ac71140be6b10ac1545cc932884aa581c665780df3a150df314ca07cf5d2ddaf9d6649d56a0330449222b2827ea85610beb2878da6dd7fe747d8a5164bebb8b8261db75522c61ee52f5d07fc08e36f73c2867976eee54a0ce306c4e6f04819a4f0f873fc1fee9d35df94decfebedf164f5827ddafe66af5e6cf2bbdda946a6ab32e01654e98bf55b99f2422ba067c998572d257e6522fc98c2e16b8cd17bd1584aa619fef82dc62d0ef8cdd9e4c84f090cd4e9bca6c891d2ae606e0d18d739b0863480ec22edbc7b3399fc544a4723326db855b261f2638ad5b7edf62290367768155f1b684b4c5a472b0019ef8e7ab783d9792c4341fc7604d1117d82124f77b2447ab4cb16688685c045a3118c523f995e0a1eb934600b9f6683a7bf1677e473d9e56e97b2c3682262cd3f8c915a47505c4f080c6c33ac8d12ce5393f6750a4576beab25ade2b1335481f58c06d2806eda4cac078dd054fd6595178ca4b3e9ecffd185fd6b9cc573b9dd2f5fbae34ce5a9af44fcbebd55fcdbfdad680c78caeac8a4604a213d14dc57e97a30c1b233397bc465099152bab8f26b12a62efdc4e911e4e3256c6a1f4e4bc6a98eb3993c85e2778febc5aec3d3da04452bafc81633850c99d8e0b819ec140cf90f51b8160869007a5a0791885e8694c455c4c98ee57614cb12a1aa04a2dbdc23182ab29eb139a33fabd60bdcac068785a9c9078d42ce495d06b4332e98982af9179300691cdc4413d311f240a4849a6fd52b16e486ac402a48305711c0d3d3ba8a8ec6095ab3b8c1084ae3eae948b2512988035d1a26d9e04b9c2c96267257e891abf5b9e54035acaca7b91250df5a0447ada4c57826f808b7ed8fa0cb1886da952cd1e4420ce279355db0560f712b29bc9378c82f4de1e4370d1b82f5aa5b6c3f3879ab36fe33554bc38ab22bc32a129e8720ead7f107a08a072a4d676635d862a014a5fcd1f2008828b34de8814b910050df757803f6247f010281e798328d8d30c00f5ed634abe3f24e82fe153eb6fa16bd9e2cf842d58704780bfed16018a883f10af589dcb290eb8e84f90af608c9e04a278ca43440efa0c7c73c33c6de6e2f30826e6d3adab4e49ac14fe988202fd410c6c0bceba0bf0da97a68468ac773da1af195c56aebde6ee4782cb6667dd297bb4fef19f138fc9c21dc8f826bd02133d70f908e3f98c7c3d48e2ea5a7fb7d50be27bee36549b3c33bca52a1ffa272949f95ae3cf6f5e9d5048c070a086c60690f086df5ab35211d81372676d306ad0ed4b1790bf04ae06f797207bb372bf8365775e244e67d142846f72db85bc1736584cd37747887ae7ac4864af60101dd81e3f211d56b101db365aecb9b16eaeba6eec906068dc732f2d6b979e9efe9a94a6bab9fe4b2d0b5d882c8cb882b276d226cc5a8cbd0c97d7d3d3abe70acf2b26e038db66f17643b0bd78e287b8df40521bdffbf1cf5e41067a858a39b6c3c5168da91168714c2bc94f62bd469699703711d968340ac4089807223299127115e74b8adb9e201a649469edb60fb9ee59201d2f509f84b2c04c0118083b6c577788e22229f748dec885bbf87584f78bc040561e00299f48a8c6b5e45976a9bb46bb3f6a2cdb94d329c2b5691c80455509e5814e8c13ff98ec36207f7d174271a2afec2e17675a1fc9dda0a56411cc8bc0929576e33e948b123bf9ea48afbf1eb33b595ed2fe959414a8bc1b26bb6a7b9810ddf60d97a034a95d13bdfbe0f864af5d0f04778cbbd1654ee34e4042684c562d925e56071608e33a77b7e203eb6900ea59c48b4ed88abd8e7c8b9a5afaf0dfc3ef6b1bf2a0ad7f76fe7a9418bb0b8e7d1286bc034328a245f47d0938d0f4aa025e9c9cc8406eb4e343b216d7ed7575a4271b123800ed2e67a1c08f74bac87736c0f2fe849a5c995a7fc6cc9d5220ec1a45504d80d81795a3870f083ea0daf51622b0293547265430665fd9e42c7a2ba115a7a858ffda26851f6f0050da7c8708f881575f1adaf7d08c835ef6a5b3562cb36d2680ae6a1721bd276548fe662d065858661786571801d1845b7882758cee4c6836d05eab3531891d00c9ecaf29aad0e543ee7ad34f80b0fc5e47029cd79e9788622fd9e1423735be1f011b49ff25fda355b314b455249259d3a12607db5b884ad79c15f91f5abfca66710f7556ecffa2cbcb7f70a9f792d5f9900cd66c7faf8776de8a017a275951a6bd05ae997b9605869c01afcd56d6e4e096e735ab5004b1225a1a739e610b2b3b2ca438e83fc1863e33fcca2c5e59398d17acf7d6a6f7ad8da0a0dc66f9b619c038616c28bf80b8603dfe05feff90e30293f96f3f6f6b40fef5df1dd93e25483ceb44fddddd553cd74d5f2604f0063fffdf992ad1a408c7d6febaad60f82ca650d6ff880506d0b0f178cb615fe25d6b168a39007b6953a68b52cdf45acdfb6ba0ef93e95897c643fbb3306fbdf56aa9f0a53e23123b8af56324ba2cd4407d6059ebd579ebf17c151183d57b7de57898ab81fd448776168b9e485528fa7319659a2e3e2f57ec507ae8605a1c85ac0d994f54d6e820856f5ded0c56fcf04b922ee4fdcb88aaaf364e574a278460b225327805f94ba17903698938846a5315be3b49359a004c0b151592d1cae564cc597e2e82e21a12a05da0def32cfaa624fe104759eae514f9e75a00ff5aad4ed1128eff6401013b119d72bfa700690575e5a327ad149b3b442ace4d30680e7b1fc2b29d3228a0146866bfe46d77677d2bbfca65748ae07b0e87fc382ef7f5b82130d1177e3a1cde1448a92d4103c3508347779fb2db36b9a4a16567327b6d8ac3fbafb166803b5926b0f040b71d2054965782254453c078480c0ad050f8e84e131b361c88ae5684b0c3a508cf097b05285641e57240b2ed0527be5eaf501935602e14aa60724d840e45b974549b7945ad8c1f017a8a2e160aa4651c41dc98ae13f1255cc52397ed4f606ac5fb5f4fdd8cec8b4900cbc092973a8e789154cdbbd9a01239ac8791ef6fcf8ed4ec44a94c686e6347911389db3417610bc1a00390ca30595b5adcce1a7d429a4a7a4164b1094d29c5a194266e3ef577887ea4a4193b100238128abd3e5d85276c24af466b52d954346d7e130013f4786bfe652d00bc0f75b53017892dd7f64a160d03ef28d8d58fe10f76f83b70fc4018e1fc5e84f3bbfd57fa803c04b334582f9ffcdd424a63885acb839086f64267d793e5746b0ea4fc538d11eff0daf8eb67db716c9c243d31b805555ee3ae3701b7e562726dc2b8f53bd8ae71d727e4e3a12f4b1ae0e85d66c172ec7d288ddc6444a02a1912c7f8f48f55958977f77fd2705edbf8a11c68f19d7f2a44bb94041a837092c30c9271b3f84f38dea81b5af45a32f0899bf1e0bd8b57121aad3cb656cd6f4ff8b65c82a35333e03fe77b1ca722d84db082eb845c327094700b2c4b4ddc6d7bc3d8eabc0918ba4c2762b9e108ae24363b76b55d02526472e683e5993a895ee637479df601ebb4c5f0bcf6ce2bbeedb81803123f9005958ab67f3b3ecb5d38202dbc4851eb92a5cdff4b4f1ed314962d4fd74d953b14ab0d3b22d7a153a005d1e9bc7729c90e251012020bdfc33536230c18e7a3eaeb727b61c562a466180551b2bad6be3eb5e29e06f3d66b9eacc2e28ab8d535319456d0ffe4ce5e82e8718d7496900d88826ad4f4c7b879ac5a0445f4917cb97fc396ca6aef355bf834945945af9d9b83cee0182672b467678213537d820fae768f0f24976f2235b100f1b52dc6ab73d60f665aac7c924395f4b177066ad4dc907a92a327ca1ee3a77bef86e68b88eb662b4617e0cc024a5435cbe689dec5204d1bfd030566f7ff903aa50cd4c649004c0b4820d964d594994d79f693f297362be7ab712c1e72576d2103d0440e808eb3e1fec8e62a427d5fb91216992447df6b6e29d230b57f897b5e86c24fb7a86f059a1a1a964d043446246f55585788e12b9ce90e94eff00a9333e52f4e83a2e7fc0aafe8dba203125bd456e48b796a4f9ab40f5679ae3884a512d1f94945a2e6a40151230abb2342d62cdc90b019c89b425a5d7c31218498e7cc97c46259e01635e5d04f7bdd248492b59bca7256bc9c0e2118e5f9ab521d636d569042097eef06b001d21117b3615313338f6ece3ec4b98f5f25d77fc9eff9dd12e078dee53d201708d092f1e5fb32e24f45856cc7a93475e3e54ad5c053a01fd326a3c18972dd7133537349105bb24652355b378e851a13a25d98b9a0251e377d6be5622569a3cb0fae855175d28951c72d5928cd1aa56dd80e9e83dc7500b6c424d2674522696881267f7253a3341408acb6515a1146bb30f4c86f16552464af0416b7f029515af4318877a0c081a5db43f5d5b408bae263d36857ca5ef1b6ef8a81847bd52ede651a232c19f630f39074d88897e4146698126e054144507a05286ce569b476dbca8d9fa9b62cb55301acdf46a31422f6fee3f77f0360063e84a8ce1549ae17024f419308977234444404380934d6edd7df6dc7ab25f7988a91d88de4c9d787f0f73a149dcf9422dde6823e2548d9ece5ac591eab29f5876299eb382cb3b0c4fbb3093246ab3bcb78c381a55c09d64fccbd37b7ef157c8a5ed44fc4e1de1c7511e84869ffc92b322838844757c7058bedb401b957bfeac8cc8c3d61e4daaaf8ad5b2f6257bec42bcb17340808600732c2972949642b407a926ece431d3c0ac3a916f534a54e03805d3420eb90e4dd242bec3408a84460215cd27249c76e4214203d1accec66762ba5e01d34f9d18c5fa0c6848b4fcb4112ba1fee436d53777376046fed9696fd8c6a513faecb49f1611dd1810d390e293df6dc7f3c6780818f9b9716e9ed1d9f50dcb5143cf41d327942a549fc4125680ce341062124b643d65fefeaf6b634fa9cc88d650cfac4c51d90e436799a1dbe48e78e3f1a0ce23d5450d2918e86919991649ca198e047347fa7e8aa3e2cfb611731450633fcd50b3acce0c242560c8c3cf16aec704f3f51486e54522a0ea05bc6583c1939f701c4bf7a4682a941210dc45d4efd3ca7c16dcd1fcb813d2f7e6b822a01a32d717b49ddf1f7d48c8bae865b51f7c5182cf907f8a8609edac45160d6f470664aa6729eeba0705ba60c3c41afdae4f43f3724f4370cfa96404830a22510208ce86981b529eb8ea34c4c6cbe37a8037aa3ea41ebebc0d90fcd71a10e08799ac01e2f827a28fddc140b4f19bb89d9c1862f32bd5481966e6c7a1df482b323164a49ad852f4a8a6b75436aba928d9f7542b0e8caa949f4ed5494b551589a6ae4ae4515975d2525b45a2a9ae3ad97ffc2afdd28fc87c765868cc8d858151f76a533b6b262d28b8d344d45b5d548d97f5f4329ac0b26e68def560b471f4b52187e433174a3802866f686cc8bb7ccbdca7ce329905968815c0850f007fc15a1b9fa78a5ee696023f128b637b6a278738cdab79de66fde0c3c0a6259fa5a2ae173c9dc9a4a89b3b656e22e600337d698ee372ed1296495883b3ab0f38d41585aea59301fd5433010346cfdcd69f6cf28d380b6b34db1d3df3e22be303742f100353d56f7cebd4771766e8b30c04f75655f739890310fc116e938b47f5871d326587600762c5f169f7c0c2c82184afd3bf43ed3ba22caca3af654cd31be1f11741a77232ca51e89ecd9fa0708ba084c01d091856977eb8c70104c56ae522fd082420b2ac0d16aa402034a68458b968abf8f60dfe2adfd5da791c1de7bd9f6665b53fbd1f8ce25c8a915b9c1c66bd8fd90ff52ad4402638a73dbd51b72006c295e3ded84d365bf7599be55b382fcb7c6f30fa4547de3bead78dc07020782866e6464e20e9a85b7c2f907cbc642a4ab431f69923bcea1d060eacc8a9c8089df8009186d5de07351c3eebe85813d0e04500ba1cf8b75f50beb858f4be567dce60072247996162fc4febe3083edc226b28c49bbbe53ecaa80260e83d5b3daecaf9679770d12992c0d3965db1aa9b2a5fa100c1d122fbd1be570d51824ae80c9be8ec0e1c967d1b84fdbefe2e2e213bfbc239fdda31c69ca597839c6a749660e584abee80762b91427dfe6d352a17deba37d16c882161b3fff27c6d3ede2cbb8fd7bea77b7d3bd7091988b7d2aa306ea51de0e59707230dfc9014d8df9d801361c0f875d1e82653a3ccb758679a7e4b8459775b100398262a329dadbb2333d89cfdfafd1ce51c7cf82ce2a3e402434fc41cf2430dc74ce4a3aa21c2d570a04283e897325c6aad6d5ce43aa7ea3700139ec22eaaf396eee37d3a0badf1ed18a020a018f9932dc6b787c3c9d247e6f81ee768ff4c98ecc9053e8224b1179f166871c404dc89702756f9836bf35251dbc7480264241517f41b744cef0fc7be9bf7c11ce782579ff344c4b148080118bfab156055d83e427b460d70bd2987c4b8d29e8efd8559494a6e02e0a0f30808fb0d8d9008ee406d656e6e9edcea5e67fb5fca831e0e0ff52cad946e842aa4a8fe7d1df8ab567eb5f73fe04ed7d7064ffa024b356123352ee96f481cf7b1069ff66e3b1c338f1c5c05b713852daeb2188d30e392375bd830321f186fc3b8b3cb28564751cdc3f0f7749cad65fc800faa8bf6198006e931a47c7aa7d007fd79f8ce21271fabb2651c2beea307373194ee25d4a4b21eec5eb993cb38308b667d7c12c4a7f9655ef4f4374bf4dba35f9e983a605e31cb42dc8e954d4e910d37c89337284302655cc2774e3d713f8d1b11cc6ba38498fa7c7865f1a965c35e16a45572876c3fe4936532f805828e3e248703ae10b6fc7986d14e4ad668f642a3d8602ae6e2a800788e3252b71ba38ea4a7f6856e10e956dfa385885c06eb77bfc7e58783bfaf9ea3abb3529189698d905b0e19bff64579943e4a942eff54ffbfb7163910bd90d10fdde124ab5d034a280599d3c9c38f523ede4c59e5da40efdc7c4c8f6e860396fc089435ca8d8d2b9d56e4e30c8173b90fd23f4a6c7a8f1ec3b7564192345c2adacdb4d9cc2f4705dc52cdf76aa073b41c25e876a66a2c2fb7db44cdb7f32ba81ae9056695aad551b07ec6fca3cec074d37f6dd6c67a8a74afb3b31dc8fe373a2f6b4fff97c5e840d73fd1a3c13ad44d28b5242077683c32e532c392851a86cb216f5710ecc3cb6df11731e6cfe1e26e40c33a1f1ed953353ddfc299f760fc8e9dd91e6ca781f382271989c4bf818d610a23b0e6aad42197ec6fea9e0a9dde6044c228cff885d3e25a0d6388ee7a67a3fd361334c240a2817f63ca7a57d039c194b8639ff10b726dee24466100f883b9231434cb63d0e0e5f16bd65fdbe92d7d5a4ba06dae49e84f779096059a8b1dd804dbe66961109a41886d9d0456bcc2cb8ec466b066288e26576ea95751389480d2ff58709dd940e401684d44e00d702c03f07869f47d684727803fb07e007bcd0f1468a3017940f1ca0c15d58fc194a1280c1f635933f67bc12b3156e5a917bcd902804d95f094a4bf2271483f3a3d61861b30f57c8ff8b9016ab9b8955244102e0cfe25d965fb938c15c113fc268a5e03d8f2d5428b2a77b96b3b8507813a25ec06803826f5f57b4b2185bb2a47fbfb418f5565b273ef6bfeb86a91cd98cc908e5d30966fab18a3146c0589477d957f42a80a5aab531ced7807362f53b8ffab79e6e7344b88c3bee6d1355233804fb55fe84ce7a1354b133b079bc44741a23fbe5a0bcc6cf7d2680cf84f7cf298cf1c86b705ffb1c5745374e61cad0c291a0c39956f20d8a06587385c9fcd754e9f6082d290a2f3f917dcb0df53bd79811980f06d729d807217ca7b8c3fc4f4e92ced99568630b8402d1c30fe8b59e0a856d476fd14eb5bcc531f9e5dfa8c1f25840c8ef387e953e096c033705e2bac6dafd17284537bcc67966e1437811d78e3ef4343a11ae576d87d5f104445dee6edeade8ab56b282cf0a1b83bb213ba06c379ebf50b8e6aa7eec556e2744ce680cb9ce705f3b16bb70e23bdca274371bc19fa65097d99dbaccf7467844b26b4291f1c589f330fee388446cd0f90c113873a08b185b4b230da97ab39788a4fa50e1839bfeaaeafd58d1d9732364b170196128dc114111247438450715a7627f27e72fbd3105348a76772ed7e906ce4bd101655eb3f272c83b8395782a88fc582e0a3141b03a78e7bf208beb79e4700f1fe2dfd2b7ac4b0d33b95d25a006ce7981e50a850625b762886cdf68842eceb1338dcfdd617d9706abe7555f3d88cccb46a72bc32a7bd4f3c310a81fa5c2c0a2d47a9ecd78073a46ef4fbca1068e27f08085bb59b427a8ca48c56c1f2f4eaecd2bc9f3a07100404e14e3824cd8292f9c93353d515ed728e3d4eff24bf454bd7a10669d93db1963a4f089c1fb59f3ff890480c6dc9a7b910526d01e410268a7ca8a61822c63a18d5d6bcffdf793b0e2206f26771565a993a3d4242883675e17390de857868e74162db0b7f1543e76f4c60fe061668368ee0d67fb8f0bd091f9bf0e91718cb7d40e3046060f778263cf061d5ba43cfd467d7ba18c0c67805614316b9b1db186712f3c2632fdc480e4d2aabf7a252ca34425c8c0902e2ff6d57abe4193a06493b69a735841b9fe05643c8c0263e3ba4112d11309396434872d289c860a069f9459a5765e193dc130eaf78108ff922cb9d2967720680caa4e5b1d5cf8ceb87d0d34f49460c33a06b80df159049ba903a13ecfe10a785c85cc935fedb5d0beea858a5c458bf7d7007c75a681e746e127dad0b976fcb46c3b2e7864a2a0e2b8d01230231633c3b59a447934cfbf0243b95d216e877ac97bc27bb6db8e3b8f61d1bf962d9c278d20d7e1bebe79a1c142e55f770c1178f3623a7a38bac9a679c62b5d305a04f688e9d87723a555349d98a053b37f7043a553c3eade9f7575d03a3e385f8755de143693f60db6c877d220c8d2205c9720b76ec88ce0459d5afa88be62e6bffaf4a0d1c2f00c197bd3dd2b97b8ab89ac145ec83455f0acf2d39809796e653da72814c51d10bf573a56b926142d5b7adbda9ca8c1345ea298398b9347f98910060450915df74b4349e2c22ecb144b18cf063f3ccff585ecfeebbbc6f60f973d5133458436a68afe2b69fd3e1c1abd71d4d997e9a124dba122be1bbbd38bf8324393d7070cee198f81bdd7653cd739b081ea436c30e92ccdf2b15776290357f1d245ca7c2be1e79b424296fa2661b5f83fc03c41fcad867ec49e10e0804941abc68586db9de05ee2fb4eef34be960548cf156e99a37ac920bbe553bda137d25ca1a9c2826c903851f115fd25c424123f1aff03fa494f949513072516e053a6005d8968aa382252c4667940b040257f3975fe714d3aa48042766f61ec13136a3340cccd68e805ca1beb8e40afd96c392f7e4b6722f6f88f048aaed2ccfca82f6b4fe0635a92c8676a5a15cb84490cbfb3305eab5db4c20d8c18515b08ce3ac34cc44de70a7e7f1a8c16153e6b225b8aeaf162a3bc57875a7e03a030e88bc8f8a24cf0028adb7e23131af694e91767d207ed6fb475e8944c69035955ede094f7eb0e3a387b10026c645b72fbb2da3bcadb9ac95f7a68ffc6b28544186d20dec6764407421fa11d75ed43e1ab1e26adfe47af946c1a1041cb8e67513e56fb01957da65b6cd300bd21a5658f9a4cb68412e48daeca9ba5c0bfcd5015c585526341e3df1701cf2b064267924c9ce624c4d95a89862b650a73c31c5ad6f7c7639bdf94fd459a21e90206f500cfc938d1fec6a25d644973223e2178bf4c9fbc5e91b7910ad659e3648c5fc964f5eaeb3c484a9d91c85b11e285529de0faf222af02ba8975f9f1cac0a6ef76c122b0c2c8cc1149a6e3ba734831eb318d47823c08673bf3b8a0474bcaf2bafcb01f1446d103d0df818665e2bd4f207da68467f011146a4d52f1f2c7df9cf3396b7fc9e1262d4babc07202de5acd297ebfaaef74da97914a3c932e2664494afb4eaac33e577d50adac2866adb0584793203b32c35be1419dfa6080d23e2c8869543b702a23c044ce4c12df156d8d688a1dba2c66b709ca18b54af11418045469d83f42da8b7d4d62a630000755ae695008746d7ffacd5069bd0cf83dc7e641a3f24f786abdcbd99dc70a4fcbf7ab38803290f2e55a241b1613775d92c5923f86e6586a2bf776c5be2321483995c1244191b11cce885b6c0dfca60d26ec1d306b3f07164ebdb11a94b110e3794307a53f9b33db115a5a502ac9dc0092b298487a4338167474f39a16338b92683cd5eafc559260273750a6b21a79f56d57ae109e956c2cf2e3729632ba71bc2cf894c6aabd729f084cd78d566ada79298b31ad23fe440577b59ba6880660574a9d990281de97a11ede0ae09024757529b22eaf873e05c444d68cb45447acbb9467507e6cf70322d7991dbbc84ea9e4b1e43bdb9d3cc4773d409e20c7f15bcbfd9f28087727bce4260f08a022f9684d73a728a5d3e771aa93a402e0fe0f4689d529eb889d1c1b687cdb745576639e5d22f6527c69d2f0549cf137b56306d7c0aa3947ec8a5aa0f332d25761a3d44a56916beeb49c7ad89b0b47e71721aed6ac89ca26bb8dd4b2f43b940e3aa7bb8ef158614216afe855b12bcfadee25146f03ca6785d7071bd191ffef7a7b8ffb41252968f900be3cd78601cf48d4c24a22352f287e733aa82074ed8852cd2e9a83883c4b31577dcbe354fa6321160e12a443aab05730f7d9e7e6820f20985fbea98c05150d61d12a46164ab9a18299db69b84771fbde0aff68bcca7c0234dbb6a4ca4c5134741362eee0115d2883161ed8ff2d9a0a7c1c16c74b3eaf6f027976d742331922f373bc6f81671ca7be58ccc8d311664de0d9b47e511a02af9b1101a0ef7582c0bc8b823f6de626afe63ac94aa49797df92cb921c50b0b9261aa4cc9111e86f1131fe71f53aec84145422298153e8da3bcfab02cb9a2f5980705e2856de0ddf78afa7ed2dc7bef7dbbdcb5bae8b04f15a6d19094d341f20f651041301790f913c30d8a063ab9d30902dc7b9e516c6e40f9123c7e3da4359214f82033b5a337b991ace889a2b1e4ca67899d0f855f878240db93bbf48845b97899185c8ba67ac6dd3edc3d312285e6fa9c349b8733b204ff14558408abe3f23ed0c7791e4521f3ffc0944c048b1216058c183a1d35692769366928540f0cc505ec022e8a7d4cb1dac7aeb95e9fa049d32c6531426b2ae36f42b461f91b55901942177a02b8c3627db32024d4819214feb7b39687354b0e0b6043082ef46655f99fe92e9e4429c2db862748da2b3acdf97f95e024eb921b125054a0290d2a004ed074cb1c70b8f8a87a4fd822586f860edb01021287782a2a8f5b80d43079eac041d55a0cd20a674be0c894558a0ecaee08bc6faa69ee30f1b6a3abbb80760538e5911b77ac808d7e5685de897c07ce9723a44e9be789242d68b7e8d5dff75b57fabf72299a8c3e679dd63ada6afd0e2ef5c7f7d266db488dc7622f0404db50e80360ea13b39f85a266c331b70041773f9d14dd2c58339822e5d00b831f3c8453f5652f92dcd09bede777e643459608ea5accf681b07e21064a92db9c44e37fb1780884b4b772dd01e43900bcb810501c6dd8e07e6cb6f0cf0474795b645a256fdac1e0fad066de1a11f9f0b052a151c0834dbe526692595b2f4c5670ba4e9b5d055a94e0958da7349d063a26c2cc6090571fdeabe754c90fa9eb6376f97bfdcfe3953a2d4cad04d203f09ab5df465c48e7185d5d3734da0a79788b157488904d0382ed8c17b95ec837ee8a335dfe3d5d137185023d9d9c04e6821e726b2abc09307b2ecdd9e03beeece7a1d9fd82aa52d5475b2daa29dd72831ee9a77ab2cdfb19f207fc82b0d52f6fb4058cc7d1c57d95c4f44406123f502ab8f359511d4abdc6ba510e571ddc7caf3dffbd9fc7219223232dcc1eec238db4b0113c76e7c2a2d78186afacec6b50dbcbca60fa3dc894bdd89ba29ec7ab99b681d39502523c11cdd77a73f29a917a10260ec5cf1e02aa12036c9e05e4bb75f16c78bd30bc7fddc370ca684dd9e7d6ccd9cfd39d524311a89cbe500309eff2669b69342087fa142c18f809e232c979ce5f09ca469d6a4c9c5e45882c4e348d65bfba1a3185c42ebdaca9dab7efeeb4001d0aca7d3de20eefe0f2ba660a83ff6d5bfe798505b7d1fa0a0be82207249fa81dfa53e7d46b8b08168b029fd6fa84640059aebb4b561d9e450ec972bad59f0323e6359af5e8283e4be69e4648e7ed2db5c6538a9b451b0498a5b14879b1c4c0ed7f76a05926f34781f2274ed503cdd6e4bb4a27445c6b0ef441122e9a69587ccc3d7584fb513ba3c170d1fad1cc33f5803e225cd6afec23c049cda33e229c6b3eec23c4b9c6831e229c6b3df622c4b9e69e47c01eee4a597c96b2fa63b2cbc60d0a340391a9e7563ee866bb8ca76ab5c0ab1ecd2ca939c5003aa05842a8b5e4c38bf0b80934339bf4787de0001233256d212948d5a9924ed2cc1ce72472d9c2c12c17883f535069075ad1ca2018dd65281fc8f853a8448758c1c22c8ed2679823cc3c53a2040758cd72288ff2c89c13c83952a03407adc87a181cfd649807c0e1774a3a90d5166714789e2dc56b668f525ba9cbc7f216cd768f92565bf71d5637ec94cd93cda65cfa0a8c5d41699e4a505436b201493ef0715f7dffca6d06b9e4dfa93373f2cc503fa36ad0f61bb6fcbaf79194e1d4ee6056b33297145eaade9bd3a1bfa1b3108011baca66e2ffc3963df427278bfb2b8bc7b3d7c1658542ee90ecddbb142b1b12c30ec2b2df3b4d87d074a645269553292c16b22dea391891993908f3b18c05b1d277036e859a6f1ab9799ef02850b92189ec8ee44a4e0976969d22b28af476448a08d369ad211508df59c6a9fd85f4e6c881c16a8b42e8612d586826f0c6e18a084d9d42f452563a751edddeee95004416917db1cf07734f58ef65f89f21e5a4b22db39b0aa173055d6a7f2a06f2ffb840da0fc3e8b0b3c5ea532432e6fec469d0a406cb63ceda7103a05ee13fd11e3af9629998b33b4e9c4666e8e24ffdc9189c8d98d8c144595dca9cde71920f840c4107e54fa6787688d10ee2ccc05716199ee8b334d6b71718819e6abffc1fe00a18e578c65997484ec20dcf94ade2e68c2f6d2fc16f467109e4195341232d22ba572f40945c9658054f2fd66c1916719ea0b5400b70517e517f5a5c8fd1a567552e33ea1d71c1173037e2cb83783ab6257652cf3d93df2e418e796317e58714bf030f9156e0c54ac440026776f62c0d40e7afbe498859d7c06485a51f2ef8f8549c8bffa839804a1ebfea3fe1e62090c352fd033e8eeee901d7ca5f007ea6be821f1320140dee7082655693ce901c9d5550c7c2f83498738d17688acff3d8b81fd13719fa996f729a0fcba9508e20669264305cba0bd2d1c22507497ad525568d3a63bca0b4f474a4a846286321c0450911498663903ab1f8de1a7630ee3ba9416de88267ebdcd64861a902ebf37aa3adcd0b5a274ad36fa8bfc42aff1b75e10a8d981a9624aa647ef3c7a048dfc8d528934edb524cc0da3294b62b4c8a0bcc7349f21d62a52eafb752b08a9fbd6e4b799bab5f92b32f4bc952ccdc6eb6550d97296cb56fd4f992b53e8f733422647c064238fa28d83574d1c818bd659f188a8ca022b086f40ccecb645b5800ac1dbd5c8996f4afd56bfc9312d4ad6334414f84097094a06839156317003df33e4da28f33a938389c12a948969a23aed8572f1efec02805973234c2eaa8c9cea4349eaacf1316caa76a748924a7ad67653aa844564c8a27838f3258b199f7ec66ab0a372d0969af59d35d3895cc3b0e7edcfbffe00dd4b9c6341f871acbd504d705a89bd2a002ca012a3457bd7a7b857745f7078e5b8c8dbc954f0c2304c41c489b1bf657e8bb376d107193c3d493596433b5862230279d06918b1bc0b037f47c0e9ad351702aa08256afaebac18cfbd350e837c466f493437238907cad05aace5d6c4f0b2c2b677c82e9f80e58a11606980ebbdd101d28dce11227b788c709dbb941f09fb8da9484b32d28f55ad738b1b54c07341cc8b8a1000e007d30c93b9c6db0df5ca4bdf4b44897c275d3c96abaebf8ae45c97f01af2914ef441afd2b5a0f80891553ec3ddcd02e72ce6cc78952eb1268713ca6b098749273c44981dae083352e4181170cf08174552b7c433159d5b6a7cebb51cc8523fddd194d5b1e334f8c6c115271a6709f7f6eb523999e6bb853348c22649ebc754c0376399186ccf0dce03e94fb55c929ca73d0f7ba4f1760f18551df08ab28b965f2eb9c0ad7bd292273d328f39c48c50d1f8f8c957817c58d2deb36077fde524b3481b31435f42c55316b89b4e74adcc99cf853eed20d972af35073b7175e5927de06f20595424367e7d1d53c9937dd7bc4e48583cf6fb9be003efe376b7b4465e6b2ef232a1c687eb8b1bc7b92c744ee6198d9477139db5e2dda0db80569bc7b31eb0d0da654f6bee7af34ba88581387fc57f5a541660705ecffa5ba1ec5d444f47ca8ea1cffe769409301491f9a3a025dc688233f28aea45e03e3c6958acef4e5190cc0a335ac4770f359c08d89aa2193bf3c04bae68eb2869a7e20b1b56ca4bb0616cd2c46479a5e2d4738298a325e5181e63f7612148229f4f97ab391ace5f90a5af6eb9bb61c0416b4676740ca119df39896599dd0d1d585f7883e5485f6817b2375773943694dc66a1c4349de93062bc82cabf5f99b9af566caaa8599af0c35fcb5257a94880f37161f8c8c26fda36d62940f01cb12402df59c2501cd26b0c1c8a8b42d96b476d408485475734dc880618a25ad7434c0344bdaf601d7d753a67e9425a50018e590b99e847151a53884040e9420e04c4380b0701cb03783709140e27bd06eb0f4726362e16a15a503ec23d0f007957523c8b8276d208ce684cf8e0c21f9e6de88b2feb346ebadbd637e9c48636fb5c092780cd58da3225ea22b2198061516d39bb5986a8ddf01a5277314f2ea291770d8a0cb9c90c8e24ccdb04794360853e1ba27649a625c73e6eff8b5b7516013390a5ca109237023e748c09b90997edd2d32329ae6d06cd3da161aa999dac4fd2ccf064566cce81b8168a9c17a44b557a8e5dc493f7a0d2721ace46c87060cf02b3169103e16b5d92a61d37e5ddf80982863ade32f475bdac1ebfc0148a814b4b4cba6281bac5a29847d80574469e833b5709761c4e495b4794bb9f7e8437b2549a49c85842e20624e59000b9432f3a75251282ea73596c2df2c08a9198a45153465de1951f4d1683e9bbec5d4995fe752b17422a1faab4919c45ea03c1cca03df09293568fa4d8bde842621d0eaac4c7548e1956afd6371903cc92e91a91569b21eb2ef17c258a32496234f069be447c0c83af662d5dcdbc6fe42e8cd8bfeb9a9460be4a73a50eb772d12b05ffad6c3a2b4218b671e76dc8b3db40bc0bd4b64821fb4a149da9e401253bdd37ea747f4a4d1bc58d8d0caeade44e9a7386b58aaeba58bae28bf57119f7febd5ddb74eee7fc76540c39bcee7aea6d854b0258daf8fb54058c2a04c8f06cb013f42f5b3fcee6ab62c553c72c8118d4bcd3eaf6d2e24091ea4bf16b4c534ff94eff2563250ca4cfa80ab54044b84307e1a8018d3523e4a47a69d1229bae30b572164e473943c10f12097d74f59fd55af6f3af180e9c4761ebde5f0a9e0523a91e3b1af69e207695c5f2ec42793d37cc97a533cc2df64af60593dbf46d24add9c2802c549289f5a97a44f2a5013749ad43f38b32606dc26ef1877e42d92ba972d7e0a11c6e7c4e3f034f4f1313df1c9f70776a30a49f758c9dbcf56ea4afb1fd17de417dab4313d6588c52ea75ab610f16ceb86418d67c81bc97bada18d3f646bd5281cb9b0e465ab84643e69ab095c946ca59b7c674a207faafe47f1e95369be9a61139b292e50931131c5587c3e72b5d32f32f1a13977885a9bbaa6f934c9a3ee35a786ae5e276b8d7bbf64c3263f807b05c6afb77bca8d96a483409d549fe92fbb4326921920fe32ec05ab376985b16019c771703d349862848ca7d2e57eefdde8c26fb21094adbf52ea115ea1abbc77cad08dd7236fdfddb9a57dee314e6acc459ffe56c387ecce4bb18171276a6ff5f1a891b2de7fb00dcb8013bab2dbc7e02bb7ca0c260570629d68e06aad9505a2926da9d882922d3846587d2da52b4392b8acf6f2ef2c64ed8d7d270eb82e8e7c13a3c300d5a2aba8f3b9b99c47861787377d5e3fe5cad3107e92796e1229a71af3f9b3876de9c9c705b13c3abbedfd514d620e4cb0b81c0218043700c2a745296d408510ea5ac0cd9bdf2d5da1f445111d938d6134cb13d11c43f326338cf91ca105eae67ab35d4716656e4f2afbe65608a148c2e650fbd40f9ddccc6926913d27fc1d8fd28a28c90f34608843b87a08468744e781ca3f34076051a3cd9abbb124f676229407e00ff3b373f2af8412757345ea8fe49e0f3d87e7701aee521d14b10048274ca74448b7f8038f2eeee90acfe2d52ba2b651d98ffcec9595a0f87453239b3bd36690885538f1d30e335663cfd79572ee9b9514371dc7cbd0dc1db0d98aec59efe7d3732e22395c143ef60ca74574f3d3bbaceb8914067a396e3323f3996b0ee3d89e5a2b5c05155f01f9ba0450ec83f308eff7647ef06c7382e149a595240d2555508f2da00ef19ea56ca2d332455b66da2c1a11b8b6e0ec15d785b78ebee75faf12f04a537a5e88e3214dc22bbc70ae9abc3854ec3027ad6a9c39c4e030458c5a48cc6ffb9d07ea6219c98ddc85ca57232450cff7c10231416b26a5e8c738195f6df2662256329855632b0a4802b50daf248809ef410332cc8de304ad30a113c6b110e30e34b3c6beaa6533bd5d8823f4ee023dd04d76e5480d9a5a8b421d66c95447dc8018a6bca55fb30e1165166dd12223be2feb263fc707bc3d1ad713a02f2f668bc600574e72b4344bacb323e58390e9a4fe0bac95525f14026be1ee566f9dca9fb28e13b397fac030f716512be2808cc320ab6abb3c849f4cfaca91276faf8c402328ce9d310d50d835ad1a14acbe05f709afa71eae54c289d98b8ef1e39c66181a81b41311464847d795138f959079ff9ef4e8d711b5f34bb16f6a97974f3b7ec62436103db81e721ea9ec775ca6803abecabb27e9d886965d9c7e6cea529038875986fb94bfd8d25395a49d9ec52412eceff955267f2e9ca96976ed05dc2e4b0db29231ea62446c7133c4c22c6ff7b48e54facc11c22530a1d7e933d22532317a3d843b14a8793a031ab8522a5ab61da36bd55aeca3f13fd33c142f641c744e50bacdc230d1a02b423703a62324173f279f76b6bb9183a9ec10407c649204be013986ae3ee69984649c52f11bce683664f7ad10f759db9985100b9d6c7bf9c2dc19c19cb7407b090dff8bc585f0072a3d7ce9342d404e3e7844830619daf3a9d153f50759c8f689552b084dbb0e0dcf81f027c80acd63ed5e1c0b7946a4ba6e529b8a497b4ec24446c1fdcc32141a39c464bec071800094e4063aa1ebec9c718a798628d0eb11abe88f0621fad6ae73a9b5ad8c62aa9273c9c53a750ada403485de5df12443c17037ff4b5dbc59eb3f90339a59a27243603d021d1cbd983bc6437afbaf3b6206d8f15967ed8e533a7bf9ed1fc2a12710327371fdc395e6d0fac7779249a232b9aafc70f4ee74c5eda3e1f5a8977d6f67b221bd3c043d622f4c78d23f4a9009f82b9828499cdadfc0dcef59a4d9390f350f257b3934f2d3a4e8062bfc638acba19ba60304f754c3c714ceee3bd011d1639dc5ab5a08d4527b1744d33b759689cd5d62e93fcb6959ef427234afbc83e3c683348d17d942fd753c117527964d735ffc609b4130b433c45019c5eb8c5e7b4a12056599d200d0863ccd889f0d29848938f584bf6e0c7fd9d04fb49a54e188227023633e8c7af0f0d76837f4d0cc5e42a043428d14dcaaa6df14fbc52736a5bd645f5f197d263df8071d37045e78c79a6c33df17e39848dc17d429812b6b6e8f468a5a4ac8eea1574c587b4eed1e437587cce43b356f670ed917e8172a56c040ded24e89c22402a544bd0e766646e2e4ac52133676b7260d2a08599b76d3016c810eae406235246f9e913363819d15f47193939a3e56efc57747334901c0b7cb24a2f47480e093c8c77520fdbd81613bc04027db8711c0d5c44f23c77919fccd6483a0179804ea36e41b9380440d52181a6e3cff4836d7c763a2226a2562eab41ccf0a7e5faa9047a63ab408269e154c600adda7d16148d03c2d02813ecf59e9b58e50cd9c1f11eae578e3931bf42892ddaa09bacd440571af18d671f6ab3e132f525992fa807651fb65e6bc6f1ff317e8207d31e1895bf5fbd92248b684963c16d3b3c8b471f936a1892ba2c7333b3e4703e572cfa610787f9c470d739aa7ce1d30fbe354f982da0f6477094a1788f9282a2eeb240b0776c9112bea7917cd313a9d64f9403e08ba575420a297aa6677cb22ebf4a0141878b70082a045266d800213d867d0b31d86c10824087607cccbf94ae42d0ba146a9f1f056c710b5f1b67839fe0aecf3f7da2aa1b37904c3300a87133366915bec0f65eff902b62b9d3d5c20542f07e78acc41248b1447dd6bca849b1992d585e7710439167b61883071a9926b6d45cbefc784541afb7383f378b4690a13035ee4286307e9b8d4bf819adf0513439148092ef0141a366107c7bb8c612a0eab184ff84c0f8108d0ca631e74439e314f437067c0d7d13d64772c369cfe028acf00ae1f1ee30993d0be710de9d05ff2b87a439844a357dcf113222fee68f0dc9ecdec4299f91567341d6ed6daab96994c7e64acd5107b018809303bcb120202ad6b400b08f33d712e7b580035041ec5e8979a21109dbb434fd7915842001b7058fa58a4255b6e4b65522cd64f4acc665945c7293c8320629e58a5f06af22a7d244f7cc453fd10c5fe2b35d2c03d0d2a8e5761f76b13b237b9b4c10255010bc577e112ef81a2ed634f234d9d1f5f0a4f8821c5b70016971b11a6c43d7636e8278a62e97b7f66170b2a08fee1ff93bc6a82edcbaca16cc92e5e4b44c67c27db725f71784e467aba283b627ce46798f2cdd4dec7ca458880aae990390454963c5db2cd6b791c8b94c33ebf26019c2e95b390e2c9067c72a1bdcf2463624c54bf3a44b041827aa583a9620248726cbcbe08068f3213bb54a0367088bfaa4ec4e01cac0ed090781fd1878b1281f35b2f3e0dc1409324acad577a6e6b70e08a393a4b07a8d2c3826a8ef17f75f681f799d7bdc8b3c8d19048a2b9f831808f0c6a158495548130221bb064e0355beccaa2f046e6e12a73ba6ad021a9ad0649949e2cdb5691c63d4ede4c44bb46221efa2a2d5aef0828a442ef88cbf8e681f68e6d8bcf1902720129157d78ec25978fc24273fa5cb365b2034cd889adc889b53a1c4e087ea9bbdf2cd864f96cc503aed38122f1b699be1e9b48b5c4c804e3f3428587a004130e820e0042c65dca5447fd2d3a812b9f5acc3a223e58edf0e1b4125abfe26e4ead6756a359622b4fff4a40f47f54b04b5caecf8fedd74fe4b9a1704b1c1c24b20577fa08bd3f9e0981a59b84c8386e4677fdd00675c00c32e007e4b61f747a32773047f59a1d06ca099c234f0c8aa768a5daedaaddcbe64ca0d347549e8d19555ba9b22b7a42d80187f1d75f22670b142c1fbf6f5dc68aa84f8129af58534f6185e7291be9280c8688c1b4ec3a1638211c93c40692059fa797fe1871e48e574033a539190dc400778bd4d85840f39053c2abbdca5edc86f390ad587e9a2e65ed9022832d04821432ac22308359b7ecaae2d4a2fb243b457be5e9eaaa8c5e94fabb9c875ef2580b858d28d00bfb92345e659f257339e5a2ab022a15e9d4ab30dc4045c63ea347814c1d6d81cd3da22ff294b3949f8c01e525bdf702ab67a1206bec293a19cfdf09e6ce2e05cf4060e9f44b5a7fc84b47688f775d61d92e5658f94c00049f50a395198bc8da5753f872fc925ea66b6a9a5cbd4c4ebf8596892121ab09b76f3fbd772a0c78b57d183bb569cb264fc7a1754a68191220d2e219272d37f91c4af2d8a7400023ac6526bb2af5115583ec862c187333083fc208a3ee655ed80379b77adb65dbcf1097569781ac461b383a76b147d289f8eb94060e6afc9698c8212833fa87037d865e1eb7568c3e707d5becfb6876c232bbc8f5571d2179e9950bb1a4ac80b15ac724186cc6ee4fec496dacf3c8a4ec6dd5349fe695463ac0dffc6b19df3c09c46b400981a1b06bc4efb7d1a288887dd001712b746b315169155b788a5970ac919dd6ac439c1110c24e9d3af9a704ad260228a522f9bd7b753f09f4ad506afcf615c5dc6a8f2ccd5ddf47aa92192538702350d93de51b081ad89b951328718b841d65989899d242254bd962ed417fa0e3dbef07e712b3000f8e182e35024c798f0064a8f93a0195182b057f093a3e64594643f53b4036201406f8d3bd8dbcd207b682c809c01b4192c2a268c025fd2f38ce07c0c8ea8f0f742d2f762e59de2a6e5b3e6f2420ebf448960f5028a185b8d823b62acbb03628158d8444f460e64363f226b2480449e1276779fbc657103f38e9e0b7270c986961912f80ad6c6b9ba3d8bf2ed741d850023a4569afde6a8119ded86f0e40745867290992456d200cef1030fe5795df1c9463e4f97b64eea6e83b23abe2eb2bc5974994e2b064864986ffa81712eb5f85223ce3c3cc1385652d36cabd5e4d437773de3a8694dab6cede4af29178291dce9d65832a2a4d3852b797ef273d5c74ddf382c32c884bb021c42cd52978275e6d7b8bf2989f30fa2bce0bd988d368563faacbef18cda9664e9a3276f439f8691a3b22590ba100d77cf7d1bc811231538db97dd0b8b9d72e8af1e75866a1cd64b05f60993d561d24d37b9283832920e921ada60486d5e5dfd85cc0a1e3c0fc4c675f893b8201b22b420263a2bfd106a8237193c44eb6fe1f3670021dc9f805d8c8a2fba8193038db6f0b692c99a986e0cde3b41dc4d4d0b5ad0f29fe0c62a3d9dafabfa751bc25bc4471743f2a5e33f84071690b9d4bb58de1e30af57dfa46189405dd4e67c4c38ee450220972536639146b11222e2ea8370c545b6619b59b0cda6e016375699676685bcb1a11a7181e55f595b2ef6c77e5ede7dc40d0d9a6fb7f3268bb3a465d939d90b9bc41dbcd1c7e80978bcbf0fc533d79ffeb9dc7a467d0f67bb7c5898b6227d72268fba21f49bce87a1b64c8a50aead7a9d537d6a0bead98e9ad7f73f8511dcd8c016d5f9fb598f7d36700a63aad6b41123cd1f2e0f5cd784804f14c5c720894ee1a6f25c70fca2a51cd8e0891795433a3affbcebac8cce06ef47c0d7d0db2c290ff84b70c2f97c8dfd5669172e0ce3d046e7c2239d0982e0d6d12eab0af946f38c682ced598b86930b6286eb2805acf7fc21b209d630eba13946b1729b254b546c9adad49d16bbc17480c80c7d1e18294be331a17811a4da18ca8917b10484fa37ff7935ce95b96392122e48b670262220058080b7f8ad28a70724b79a4a95b407101aa3a0ce22ce855d574d157deb7e0b37e927222a49a9a6155b9016a2b23bc0319903b455aa9e30efb9a12a4af853e02034410369d8f2d1e3c4b7b6099631c8cdc7949a90b56f2188c753757d2a043d1d91fb9af07b92220ba9ffd0d08c21db876fb7d76d17c28bacabc0f801b7b00a2f076205b5f3c3f1cab950028d8d1329502373110f689edf763838ca6f38bd06a8d0edf04599571d6b92138e2be192d94f6ad4adff2dfa1b611d57a10d5ad766b95c773c7cef565952c6b08e6ae936faf07d49323cae8afc7b4209935366e6115d3b606c48e302b7bc7d7ad47b793c39bb463cdb15bf0e487fabe8392ec8f350a3331dc9fd523eb7e385572e8d247df2cb663d0e209dba69f23f698cc30f15bc62631929d15f71f54efa655ba9a3fc828878a02751acc010865cdc66bdc3439b97774c6e9c7f87e85d7cb3655a80705bdd0cdcfd014c5f0798f6fa53fb54c0cbfc987efa36131371cd83a8f8476beb2d9c1e284fa2ed34281122e6e7ce1650cf046e47f984d39dd89753ce6081d5d0760bdc77ed7fbe89589d6384c6510c196148967f87701ca0181afa7f9be5197ef69278851c71687fbb0efc8340f84b77477d3cf062ff9245861be2660b1ea797a0c3f552b599d177bd3b442828adbec39e38e4a23a1098f51993af8f7c22eee7b3cc8a9d4dbcfa522bf37ddbe62825ab64d1b9daaba8172a3a395f6ec4e0364c3dcae51ed5624561fc3f6a5af3213a762e3bcc7c79a532e4f65161a15e63d5ae305a48b7e8f2fcf01a4f56c4247f9c5a00e1f56a8eb22365dbc39c83d347ada579abad3ae50daf3013d084f3871c30e5f6f75caab73dd714b2c23a3e4e205bfd13e7b9524f8f3d890e27a7d160ff62a4df846019f5d45c41f049e27c40e0e581048c98a73a311830064ef84608cc864400e0c94080181181820130a5941656ea8e6c0a4abd5a24b05fd45cb4d32c3b6ed655ba5fe7baf3564c777983abc35c4a3289a06792214e769ebfded6acde336b36e224242b64c01840eb50e4a0d6efd772cf9eddc6bbcd4a8b10309eb5ee3a5468d1d505c14772ced581245b126bef8a02adc777cf03e6a15f31e4b0b898a8959d550e30af5be90918941a554a8d515c1aff952f385663c5db10918ff113c0a8234a96adf17f37d4cb772e291354b8662087a27d32a15131363fa189b521da1de49934cd7a552a6188741824a7d2d057eefc1c4ac6aa8d4c3a852abda3689d7c51a50a4b8aa7d2bd002a38f9f5dcd7ccafeb57f53e15ffbb709d5510d7cf183206d0a7c9ba599b7813213feee48f17eef30462c09534bad64523f93fa9999d4cfd8571dc5bc93a96b63a676c9d4db2cdd97b1332b279e8d3b23634d24f85f387e38b3aac5ac6456b56dba6f13c5268a4d149b287749c6826688ef797ebb54cd92a2f716b4d73af148bbaa3d21c3276bbeaa914f7e084289ec2cd9fd0c5ea7aad934e1aa9ae7398cbddddf95f75f97b176c9dae9fd3d750255a190a36e55b326f14fab6d224dabda13f15130d944b13cc2d5d1db44a15902d1d0427a7f97ac0ded2ad402a54aa1ca186b978a15d1caa5225ab954c610adbc15f10af10a169d0f2866216ad1f9a0b264e1c206cac966c9268acd928800918a5845a4d2f9dcffaa743ee15bd42756d1e25671c5b572e5742263bc54aeb072658cd192b54be522e056b9c2ca159b282295cea776a988583a9f9a48e552b1222240b4225e71a988566ca29c5636504c364b546ca26c93b5abda365d2a3651b4a0b42c91de7b5c3a9feb95415a8bba318ee106621ea60b8c2a6625a64095e883b1e675094571ec92e241f805cc7fb1a5f309a3f301c3323a9f2e9d0f8c172f6a8830b6c64bcd971a2f1deb5b855c74ac2ca196304bc845e7f359982fd4d2f9a4defb7003305fcd178b03b302533d18c3300b0f46ebe3058a27854c91354bd66abe581cbb8242825b7cc1c2eb1266f1ba78687477290cbf0867e0855fd47cb138a06955a386c5f96e8d978f44c1eb52f3c5f2b0ab4f4c9db290dfaaa69f58ebadaee705d13d09bdd401b204a04a960024d10394bff790495521bbb00c32ec42762117bfe950afc668b3e436b5fbf94de7537bb25e5275a728a5de460a0a89d4dd2632f5f76b6295540af52655cd66898a38a563ddee8715110f65130595425d31c69a4c15b2abd2f954d1f9842f13da48219f78b52764ea51aada5d22519f5285558ca8b796349d3efc6b13c506ca13941521c0ca42d6f625bf1aea7db163a9468d1a2f355f762c5181721db5b1a683747ff18a524817eadee3d27d62e895d1b1baefc2254908c5e885617435dd97c1058d2ea11a50d4a0d244ed4ed131a6d4e84871cad75d0e5c6b7f84a2c405c3073434341f8617672421e589226220e451b1336319244d8e94bf2cd9fde82f572d7103355020c505a0c22b686081860478b085026f02433424f07d16042f288249f80b7280c5032dc882012ea27082bcf78e37c61be08d7befbdf7821f0d0fb6101143d6c61f01cafd06c887e067c3f1fadcf1860ce95ba05185ac8d4f05d501007801e34ab9523ab100f60c2b51b820d5595bc6156778c05adb75de1926f06270061a677421eda7ced8728607503a6e18862ee801014c805ac1146714403c230a11683c03cb570595a2807717144f296bad756fca01acb55df7c5bdf7fbaa28200c4351e422c5e97442a1ec152a6060606262bc2c6026358ee33833e35a9056dc488d0033a40549d3b146f8114680117203c6bedf702068113bd2b7e841034a48b90a085b6e98814aa1408803a10a109c20ed0d803085ec3ee579420c218237fc401004c1300cc3300cc3300cc310fcc2300cffde0b865f78c3300cc11b86611886f703bff086611886e0f785611886e177c12fbc61188621f87d611886e1772f188661188a61f805fc2e18f3856118862018866118a6f15d30fcc2300c43100cc3300cc3100441300cc3300cc1cf047ea319524ce0c048d6683ca313f899cc782204c1d5fd3e1104c328c2af8af04a89c2831a70c105111d0880030c70c600ccc802f4ee1951cc6801381a71041158e080cb116430a0013198b14618fe008a235e470f0850016b836e0b2740f1e47e9fb0d6765e18c5bdf703af30a38a300c459308b2389d4e2754ca8c1998d102120606062626260b71fc01148f0ac1180730dd1b8aa11886578a0f1d2c69e00515e880144a1400cb184c745154c8810f96f080174af080034d90600c2e8e10c93b9ac6f0e2148ea6ef036d00de21a484201931df37ea18a28c28e037c6105257bca277efbd5f3e32aec478f7de343e323a80ea9ca6bbf7de1b1e2166a1e28c2b43f8600935849820a3082e4220630626327210850c3268487012c3d1067943931862cc783768b8f888208e5f18dff77d9f270618630c11d2dc206b37c87b04176310a08831981063a8c801efbdf7def04615017ce303fe5e31b020ef1142ffacd7f1e20defbdf7c57b6f4b0c2e42f0b36318de7befbd21f8f7de0b45e8defb7fff5f871824206b9f039ea008bf0b86e0dfefae6e98b8d0e0b32810043f235820c11fc1900604412284c0bfd1f9dcf15bddd8428c252e420009f043951fa890d6e342a2570ad9fd9572a578e7a3f3baafdda0791f9ee7a3fbdad8e5d474f008bfd6d1f4b85f7b8f94714ff5c40be2763701a8fbaec3f3ac47a63a56978211f25d196b6304c69ae82d20d7fb04ca763238887c0fe3ad7010b96f5fc87debb6f3fc8778ef6fabf82e2787c5b24a68bc711445215d2a8df10659b3a80b63d7201de648f742fcc62fd9bdf8e11781ff892bf76a8a007108b17f947a92da40d7fd6985e3fed12a95c6388a42ee777f822172572bbb0689f2dc7631b527a4e7adba5510f789d78569a0ec1a244aa64b97fbe40ae9c4f1d62c197e3886f891bffd6f954a63b4a1e9c10f04c9efc16f05e2b0a17bef8bc4ce13bbff5656dcf7bef0ac1027bff75638c23f5aa5d218412be4759ee729f184eebd57e8537ddff729f984401004410fc3300c4325a19097d2c0962d9d952e5db06059f22c4e521a186ba309468928e43dea6485b772cfc27c2b21a01618f03f70e528194b3acc501221944dad41aebc2fbc1aef0baf46e889f56e0a0db00b2e5e745de7791f1734481a3763051552c881038513684c288184100323d8981965626052a8932904bfeb7576f5ee1a37e8ec08442a1faa8a180f08c5c0e2defb7d6270404c8561188a22171a583140107e0940d9b7d1859d11a313230c510c30c8eeaf1844f066f01d31c610244dca7e0408c5b8a038461624e95b8c8185b437c6b0d2fd1de300637041d2745de7795cc218c38beffb40308b9a98b28129258aa2082344e54eec1ade8d4146158ff42dc84000cd184388b9011796c65e32ae0871d28973417ad6230309328a20bbb7351da4e7a148df828c0ec8a46262626264646e3003326640d2742c9799c077e5e3c2daf25f64c1b224659c4243c54a8e175697e742b365fc42d422d2b87b5e48770f0814ba5d599232858a15d515b25bb4589232854a152b54c4d45575429d964e8b96ae13c5986f65c5b51e500bb4f4f89ac8e36be3eb6b34415f7ba0afb1c89fafe1901fcae76b62cfd7469e27419defaaf82b25e27c6d6c7d8da6f6365f63592efe8269e16b382e7c8df5c2d79ef5359a9a15be86439a582b1674d82b4afe92f913be86c3ca714ae1a4c209879c61cd783337666ccc7cf133f86b7cfbf6457f8d3085841e3c5e41403fab1a8e4f0fcf8e4b6755c3c9c169ddd8c0b0aae1eca861bde0420bab1a8e0e1656aac75121851c3850386155c3c1f9a719bbf7a6d8b031c5c6141b536c4cb131c5860d55cd53e2cb92e5fb1ace0dfba8b7a1faee52d7817709bc4be05d02bf86d3fd0d55ea6da8c00f432c2196104b8825c4126221bbf76ca8c2db453489b78b78bb88b78b78bb88b78b78bb90312693c9643299be86e3273ff9c94f7ebaa192791b2ad3b7858a37838373ea4eddf83654a79f79511c471a9a7f8fc5c22167be8643d6402aa6188f049589bca11a6125fa8d7d1baa99d5180393aa42da0f0c610262480103201c31c206889e17cff362619cc6f3ae07e32bd6d0d50133f45df082a0d75950b433f04221f7a854f1ae60f1b4d8c2a58b97252953ac5cc1a245162dd6cb92942954aa689145cb175bb8e45c6159b154b2885ac62f68b63c172d5e8072589ee77ddee77ddee7e5784418bb9f42854a952a56ac5c21ddba757777776f4a152b56ae5cc182450b2dba2c9dbbbb7755b068a145962c5ab47cf1c5962d5cb0b897a525299e7577ffab128580b6885cc62e340f447a523ca050e8e6fd5cef020a59fb5dc4718946ca4fb1e2d9ffac7c4276cb1612b45bae5047c5f3c2d4a75279429d96f7a4d8ef92c385b5e5bfa0d1328e22cdf834acb7561463c29515e0aae64921853c2d3e9d244c642d07eabb9ffdae48fa871766c8fb3cf0bbd71361863cd3bd9e773def345ef15ecffa093639f6dd43e5dc95e914736d680114681272f2447fd4c97e88a386f0a8fb6d9f80d662400bb2fb5a1269a76c59daa285b45d6cb085ec3ebcb2a50ad21deac44ee5a66e5f5289acd9ff503046beefbeffc4148c914f89b4ffa96a4924087e47a2bc2b83727fed6bafaa6632127ef8ddcaef77ee37208c1150652241125c81300ffea74ac118813162bf5b8d1dcbb3aa6e753dab3291fe9da7aa5ddb89362400ca5af7dcf35e0a0a4506caf350653bbbc668ad68bb21a6909ee7799ee7994ea4f57c3c2bfef5ac2551e2bd591824de6dfd48d48ad6b13abbb2b78ed5d13a5607d6ee08761d970e8dcecb0c3a2e5d193775fa32d6bc250f4af79e14d477ef2df90be6bbf78408454f14451101160bf1745a63ac89d713bb1b537b425a2a478ce20d2a64f734d63f0dcd38aa6230df83aad4b71267f0545cbc9435fd0075ad15c91bf78a37ecb3867835df1360fcfebb514b42a239a477a3f31972b378904b86ab9b73a3fbfe921f9aba19e237f7bdef525fdcd892838b8e2e363c3d86a88aa4314e09d1f81ed57d03e8c0f0debfa8a55188edaef5c42e28fb9ee78c3043a8a5b1e65c48ef08d01bc0e8bd68b1dcb71f86442ef45d317c305cb95bf1ad625e8dd7840915a3f733788e763f341e4d4b15599a0042a2b350480fe59dd218694691667c1ad6e7b09c8b4743eb589ef7a929c6dbb1eccabb21a6c6cec74bdd7baf779ea7c5e404687d65ed526705ca75e8b841a0ecdfb7d755de2ba12c0e0443e0a2064e740128c69927d269a6274c09db322ee39cc06e3613b6338ae21b4ce3509c0d57e28d81cc4e59aafe70b70c80a5b313c5b0ecc3a9374ecde122de6529e6a12df41b83f5d0bf191bba8cfd4ab0315674dd1ff79ab82a849d287ed7b3d64de85adeb9b5e1ca603de4f179e7d65aaf1b626d683b6b3dd087ce7636ec4a50622d6843ef2c4ccbeb4090757a7bbbee4eb1d7daee6481d059937ff6765eb6b6d659db893774383adb81b7b36474d6829db5c19a60add78921f8bc30c696602d09a267ab58b0b3b6f360b6bb27134f97b23e44fbe9f062b061d75d1defd475b646c6c702e0eaa09ee8fc7ab7007b3dd6fd3aebf957007b03eb9d8fe3e8d6edb59ded8115bb1dd6765fd779d6ee581c2bda54d7751df8c3bed075b7b3395e0b7582e88285b18142e784fdba13ecb59ef52e49f7277bbd3b41ff981d80e7aa10589f81049d67417b430b633d2a5d27be3c0be4d9aebbdfa54c2cfb591be65c9d15726c7702c5ce5a6b436b5fb6eb64e081d6d45d0fc9ae3a9cb5de8d35a13a2b86b69ba153a153a14bc173cfad8c05bbcec2dcd1bbdd095dd759d05e9935e9b0a8afb39f8df9b1d65a8ba3a30144993a6b24a6c2ceda60456bbdce5e3bc4a6d00575393a5417769ff56c673b54175eeb7d9eb53fd6b32c6bb2296b2d0fab4277f2422b5edb59fbb2162ca1bb616f673f94f53a15ace775ddedae0dea3a8b4277b2262bdece5afbb22974a7d0b357bcd6da9fb7343bc41e1e0c9ff5acc95e1a6b32bd503be050c1b2706dd7815d98ed48420e6a88b59dedacb5371efacd97ac61bb2c49fd7100838b161ca4b841046ec060e41081b1c595a862e03648a1826c03eec2934891451449542a122460d4ba1451a97086103072e4044941831384631ef003068c8e1fd5c9fa80618be0135b23013effc55bb13454b88959e96cb63040b5f99c1d3054b1f1c10ab14fadf026d8f02a23f0e0b14f09ff4b84bbe7eeeec3dd95b82f71afc1dd593ea64a803736612094530b27583285a2089e4ee087f2523085dee791902a12e2c84a64812711e8a664ec4d8539a4b607e38ddf174440b104c674a1e9dac0a4001481a5130e29f3dac408d1f1e0f86eb816ec0182a5188a009921a2bba75ba446084b5ba0d8ef35b3c20c42741705efc68b2518c0585a2109141264848af0840861c4d209a625a91b502c0521e126ea5310967a6c9390d8126368f260bea37b0412428877c6bbd9116207539876b8008ae8c589980ef5cd301306dd1af20e578618e1639d829c5c009bdc1d61d010199042c8102a4802070a4c592400225842e164072002c6256331b074828f10a730083c8931de0f11215e0aa720a110446088c4213886829c4c435244668f0c2c99706d7c4ee06b0418f0841a5af5c080a59338440523012c7ddef859d006f0f4f100779032a070a617c421e0293c01068849c73d6232e1460e1750286187c83aa2c405214e622bdc81d9f92192244cdd1085efe5f99852f7859f213485a78bf3d5708166b01f0e4ff5959063124b2f6888078d782ac1f423c48f23281e9175755c1da0039676c45c201f0c9f0a261d37878c8e97c2104b2d1cebc9bc9beb7d0058f5c0849a4a20025ab4b8220107541180274028e923592e633d34d181090e3710252942c39017d00ecb851658f84b8211ace183327620838f1656289c10564101175630c08621195e299090428122c8420310b0624515544851258a1b582fe0b40e00c51a6aa061a4830f7ae00198ba4412a7cc078f53684589293f26187cd1002baf201f136ea04e62980307062ed0249b488ed04024c850020870841136b6f47040021170c0932538fcf8d0dcb82ad072060e3e62f03185e004a2688002531880090100400109484012488ef8e0f142caa6d111a1f372bb7c0f3a2e77071d18df161b83ee059d0b4c5ea45ad0a9a0eba2cbc2934077746b568798c29703e684ce848e047b636684cf463763c71bd3a1be536712c52e0cbfee5acf5ad061643c1c5e0796ee00966e1170c7db1008428c0c58fabe54e8420c84b852e85c1352553c000cc0d22d622ae19483868825530e57074f05d40653621011083c793c684edf0996442c4b379a0861faf1a230236583a56f8da52f85820b96527bd58125134d4c17f2f870be26a490803ac189212e124b322a199577338323d2ccac31c407830814f6f064bc1e62154b9e111d1cf0045eb1e4a14014ae0d4ac7b337756d4e413e18c21c4014c013584bdd48dd30d1984a0873f08a300488827765882fcb520bb56b7b580b29dc574a069cb9d6bbf17edc243025805db824c4111ef94888b120cafb6ecaf3bcce0b3dd1339d725c2fbc21b42193e4341382a1f5c2cb7371ae154ff07008615ae17bc052cc1542cc8017870864886b832156b0f735beec00065fa8404b09b2e066444a4c19129221861f35f5410f705e1865c470071d901c5923052d58c10a49e450716206286cf0822eb6f000062460054ecb0503e076127a05c20fbaccc08b168cc0024f82e8a1890e4c901c11126405154c28218b0d3c91400482000296420e355d21c6063570625b5ae38b1082d06407134a9879c11624f880073070810924418023603de4b004c911225da4800428e00095213288411729d862041ee80003aa10401144fca0cb0bbcf04007b2a00094a56c12199a81e99283306c5082116c400358344089016413d643931d961019e2f1aa9981e922052588e2004a40c9660f34100932c4e31503733d0761749102139060031ac062020d5882005078a081480c3c5e3f3c3a353666aeaf9183306a6082129060041bd0c0041ab08412041800941bc0786822034e4b8d348ad4201343831c53901000932539530c400039250898d6f0be7445f8d2e888203ee03aa06b40678575753a5e8e6da16e3c18bc2f61852e87c511a2e09d6069ae09b604d308366c78e3958189196150489d80ca719a318522187620f87d9e757714dcbd051f4396bbebb5955123bcd373bde164532dcf14f704f4111cc3dd451fc11bb8bb0b3e8259d4bcce3b67c4facfe6a9d3f3f5f9fb7c1eb915af98563e3edfdd6fdc1d0815ac8da0ccdd637c0499b8c77e969e9996f4351f438f67c5d0e3d373968ddcdde4ee475f19a009ee8ef2114cb97bec65eaebf3f3ce19f1d06ab57620e2e090ef8a74cd7be31bceba61f0f13bdd9d041fbfa2f4dc3a9b4f2b37b6fd56d3d75935bf8695cb15a736193f17bed1cd346ffcfa898c3ede2d669a9dc7dd57f0f15e71bdb6707ce5e30de2a24fdbb334a32f533f9727aa7f55657bc55b7f9ea57875b70b70b755b85b2a6c0edc1d878fde0ff7209df7f1eb8a2b7704050105fd04f904f504f104ed04b98274827282828080807e807c807a80788076805c403a403940413f403f3f3f3e3f3d3f3c3f3b3fae1f9d9f9c9f201f209f1f1f1f9f1e1f1e9f1d1f978f8e4f8e4f500f50cf4f8f4f4f4f0f4fcf4e8fab47a727a727880788e787c787a78787876787c7c5a3c393c313b403b4f3b3e3b3d3b3c3b3b3b3e3dad1d9c9d9097201b97e5c3eae1e178f6bc7e572e9b8725c413a403a3f3a3e3a3d3a3c3a3b3a2e1d1d9d1c9da01ca09c9f1c9f9c9e1c9e9c9d1c578e4e4e4e8e5e5b365c8ab36db2bcaa250f271bd68905c403f100f8b739d99c00f0760a772b85bbade2eed7ed134f6e42553ee06e012adcfd041fbb00fc2b16fbd7c92616fbd79665f4ff14abd9b4d9b9fe6f594659b17f99193db14ce3186270b70ae88adc79dc5f9f1b67f4afcf4cdbffd2668a538d5ea6fec6a9eeeef9d8a9ba7f9b175ef88ddfcc47e599e29bbb4d801563a6084ddc5f1b676455d77528495d5755c8dd3b1fad08dc5bad127cb4a3bbdbf0d152714731926acbabbbc3b87fa47561d4c0e7ee26f8687170f71b3e5a21778f41299be9b9669d9e7a6d99aa0da7cc48af4fd6a719fd1e9f8dde44712a4d7f8d7737b83b8d8fbe03d76b6bdb64abbaaef953fc664e57dcceeba7eab9f14eb32da337dbf9fbc4ebfe597aee8d6dab2a7becee9f7b07ba7b0e1f5d8a5e5b65468225e115a75c354ea9a228c6c9ad78353a51771b85bb5bb74fb85b04b8db03b85b28fcbadb276480e285052c20c464821657d460a0043f24a141078a645df088914287582a1d00691921a945042a651c418fa8c204b4aa51808e96114e0840cbbb69203a64a84929820a9105a201b440b9164b4ba47b22952da81f82e8defb20ecdfff010245e183ff0314292ff41599fefb20c407573f4479a16ff54310e09f56525ec87bd32a087125e5856c10e0ea5b79ef1f04685394eb10c794aa134a011144f7e06aa97bfba0ca8550a8174df74d1d94fba8b72a20c4b79d98523d5952459141c87b930a8a142be47d141984ee3b0c0e1beea7bec843a5526f3abd142b647afba00a0aea4faba50e8a0a08d35b710504048a4c6f1f88d377ef42a6932a85237c19c823efadc875ef5a8c2930a572a1930acae9411514d3dbd46ac983024410de9b564bde9bdeb48222e58552efc1e8e07d4a054410de9f564b1e8c0d3045de776f5249b142a6175552ac90f8271594283208995e8a153a3daa53a5deaa50efc10ce1b0e17eea75f01ef5a00a8ab8e489506a0504048a4e6f1f08d377409cde822a1732a9dcab09df0aa586303af135c870756445ae7b2b72f7efe3b0e17ef7455e92ee41d5fd279d8520be0b5a00950282e82ed4a9a2d828178a14fb5144efa77b17b22a299d940b45ca5d41c0890c5120e04406f2c87b275d0bd2b34b50293452661c7d7f3d4b03cabf77e27da808650821ba95931fc8bbfadc5fd602287ff2e4c87ef8f7defb9d156f68ba5e189ac255cd7b6b125747debdf77a5e0d32dd0f35fba6b7e00f48dd7fdbfb1f48f067f03eeffb41fc56dba3e109198aab5a785547dfea28fceec16f06afd6bd3d0a574e4850e5e407f25e7fd17e57505e13dff4e1a35044bc6fdf0791ba07ff5339a1218fc077f2d4a99cd090e06a7ba4e92dcc104b8aa655edbeb872f20319ae8eee83aada5d39f13e80721df6ddf36abe4fa931deff7aa05267749ee77932e1f7c17c0f9302616060be460d9818181893aac68bcc0e285e4c0a464646e663626460625ee6674619d3c780df7b30a954cd979a2f355fbc2ea60babb8a38c8cccd7a821b303895146261c65762cd57ca9f922338e325fe365fc1a354619556d07123233a34c8d0d99b7b103ca2833dab061ddfb19e1675ef47e6efc8c98850c479955cddaf81b2af76a6cac6afbd658a8f745f8e12853f3a5e64bcd176f8b4c1782115e2163bc25abaa8da2f7be020379c5199debde78df72596218cc4661c20155dccdec8487998d3e871ae18db3d9ce7d7e2ed3539fb2d3546d258fdcbed9f2e735273d8acf75bfecbcbd4cfd9bbaf7a9944d95b6b30d08d779a346a7d6ea2dd3b6b6adf833926aa4ea3733916caa478480e4732d5acbf47cbd8c6cb8f587bbe3b85b27eecec44721a35e5babbaf19af7b9e36ae5dc189937f95c770088d0192d531c6c679d53d7adb3b9d3d396ae38a38c74a21876cbf9089684693bfb90f32a4bc2b47d3b697acd69920ab3e1bc613beb9df58a33aa612886e5725565266ccd325a8953b799e26479ed21061f8798b89ea5a789336ae28cbeba5fef5326c3e937f3969d34ed7689bb631f6530c3dd7d7c04a2867bce4e0fae5c8a5f67db8a354e3d91f29a64673d3bb50e2c23a9ebed86cf8de26c308d61682e535ce215877f30717735fd221070033f677870c36da5d20d8ead547abd6ca5d2cd283484bb933e0a91ee1efa28f472f758ecffcbd7481f8bdda448be559337aecc4af977ec785a79d29258af6d8fe2f4755e315a66f33f092c3ea802c50d32d2b931d2b96613a6318a62238d6161e0800866361a0289c4770efd9b0d6f9d6d6751ce0d6f6d3b772e1fe5f2112ccf56dcadcc3827678af32464c861d338e9a6aee6a7eaa7f908ef9c69e29c12927a2aa9eb4de3545b2e5553bcd36cdb65aee5d5cc658a53d314c3724aea7ad36bcbe844350e8a9e329d67f806bbe14c83edac356ce354da3e9376d63b6ba55396d71b0c45cfa39d66a40ca3ed330976b4625b5ecb8c833e6fa43e6f78969eab4adb388cde6ca70da7b03223c16e3a49fd2153d5f506d33a9b6a0acbe7baddfd867be9332ce0c0ce44b0574a2467e2bca264be21518fa0382ccb408458fac155e0e1843bde3a3d6925b6dd444165969e6bde69164014abf36aa227adb439774ff2991f626676f23c6e79eba35245b3ceb314d3ca97c9d43753fc37b5c8dd81dc6d91d6ce3aaf38978fcc9c4353b54c71327dd28abe65e6ac77aa96aff7f9366646526d2693c9744af1e7559565a1cfe5a3cfedf534b3b9aa655e5f9f9f7128c6c1cc398cae1909c9a7f8d5fd2cb87b1133405471b727104d50027700b8bb0e77570288037a6d9930574ba7b5737393dbe78a6f37a86bd62127a41eb1e16c677a1a4952d12cf46367adc9f406779b650b5a89b3927ddace226bcee122ea111e867420420403320404c98f2343302548942819820d15b9010812233026a491d70b6bb31c221a223a378a33e2d3e352938af21146858a2849a21ed1b9141b514990e623b5c8dd8e8074b72230e263a6a23f328a3355dbcfd2333db12dafff43af369c4ed53225575c59aa2979229d40326a84d11323e17c9a1a67cb46db4ccdbc715ecbcf4624eef5a933cec9a7e717a5d90775957d5e71909db5c639a337b399d3247cd39fe66ca47329b6bdaa16ad3987d1473199d5fd665e4f9c93f4fc1bee4855d14cdbabbab199d3d9a9535cfa234d52d3a3f4869a241535fa127f6bd6caacd739cb3edb54fd397c7b757f6e9fe86984532279c56d9c2c3d51f44cca2b6e636cf4b4bd9e468f3fc5af312dc9a66e8d2b5b9fe24fcf3733ce46186de99c91302d876daf79d85e9f5fa4755e4d13ff2c3dd3d9a9518c7392691a0f51dfc4422170b720f0d1a503afb9a7a7a7a7a7a78787878787878787878767676767676767676767c7e572b95c2e97cbe5d2d1d1d1d1d1d1d1d1d1c971e5b8725c39ae1c578e2bc795e3ca71e5b882828282828282828282808080808080808080807e7e7e7e7e7e7e7e7e7e7c7c7c7c7c7c7c7c7c7c7a7a7a7a7a7a7a7a7a7a78787878787878787878767676767676767676765c2e97cbe572b95c2e1d1d1d1d1d1d1d9d9c9c9c9c9c9c9c9c9c1c9da0a0a0a0a0a0a0a0a020202020202020202020a09f9f9f9f9f9f9f9f9f1f1f1f1f1f1f1f1f1f1f9f9e9e9e9e9e9e9e9e9e1e1e1e1e1e1e1e1e1e1e9e9d9d9d9d9d9d9d9d9d1d97cbe572b95c2e974b474747474747474727472708e8c7a78767c7a56304c57b556d3622ee6ee3ee398cac35d68c4324a7e72c1d32f3c6e6ed8635d336121467a21f6b12f3f52acf35a77966cb9bc8d679760271b71fd0e28a07dc6d07dc2d07ee5e5523f27198a6943fb7aab66c7b77375a62dd7368ce381423592b2fb45cafad9c114c6b7c2bb16ccd3b3d6f768ad3d376aea53ecdb7e1d2acb37922a9ebed6d1a27697588defa541ac21b03c962034166e969aa65069295a078e320eef60a8fc9438fcff300c2ed80b559669348bee58a72b90675df726bf97ae575aba8de2a4a549ea8112e09ec76c3af57904e4f8f6bd5af175e7118a6713acd3a554bd84deb597ad2366ccd372097ce0d66563a83803270f79a8f2d80eeaf17eca65bb8b9aade6066563a65ea4e4f0ce4d2c17d7afe3e65bfd514c5e9bca6ee6ef351870e333b791ee5a798b65feb8cbecee12414bf3ebffc9cd123add94c4f5b5ef5dadaa711904b07a6d77c43334ddbb5664f0b80278c407218998f2cd8ecf4c4cd4ea3f2dcd946dbe78a71b4151a50d7ecc3e78c3ebfba7fdf6c796feccec3dd7bf07165e6ad730a5bf33e61367595f98ccf94c1041292dc3e4b7cc33fdc6d06d0751d2a55142535d12c3db53e8d106161f59c4a04ee3377cfc1471513dac6379cdcd669e9b45c37aa2c3d6f328a4b8db3e3022a7390911914e4f229cbac736353cb96118eb6cf596eddfa9ce535cde6f95be394bcde69b6cdb27edac6b74751f2f572b75844957f54dc55ee1f12ee8ec4c76fc2dd62c0bdf7bad7f996dbb067b92be5ac4952f554e283a6f19099ce61349b69926aa2aa5ac2702b2d6f6c9e668a61365c6aae38e98653c236532d614ad886db5af51f772ff251059b99e6ad946165be699c3223e1f4943b393e3a5966ca82766419fbe4f4f0648c7b7e4a1f574e4f8e69649a3c463d3c3f19a7dc1ab7e21019a9a890994db54c876c251333e3346f5ca6ea8fd7cbdd79dc75f0318504e8b575de30cca67112cecf8f0be7e4c87080b20b679edc63feb864403b393c375b35f111aadef0c6e66fdc2d3d7d49994df5477acece15890f1f40b81e65c6c144919829a9779eadb868a7795d713f727acda7ecdcea916c66a29c677813cd4e23a97aea35e3e0ee4d2e90c38ac6498fa2b814e2630e2698f6f8d3d396f7f9199da5a77ed2dd5d3ee6a07177575313071aee7e838f3814e0de42d19ca4f1dba419e99cfd2c3d5fa6feb772288a937d699ee6ebfc32f53569665bde44ccbc337ab3a93fccbc6fb875cd3b25422b3716da693ecb94d4c161a7d996c33798ce1a67342b71f7177c44810c773fe2230a51b8b7b6ceb3194effa6cd4edbe75b6ee34f3fd3b64da6ed34db70b3157fa6ed6ce634df6e98f61ad35e7f523e92aaa7d69928291fc981e5c05c38e4c072603a3894fa34927310776b01778b85bbad808f2830f1597aae9be8f582ddf42ef1cda6fe78bdca6caaa52a4b896c8d8b9cfb4c89f870a2383d830ce5d0db8df4a1315ac2d67c53c2b6a352458d50bcd50d53c2361f3d94b0ad3c757aae5b29c3b2c6466b4ea27db876703dd69ce4f5b20ea051da655e57b5fcada6fad7979d6fe65de69b527e7d7ea6153d8f186c5561267ae28c6266a6e9333d65bf66133d71427a6de97dda4ed4dd52c0e67dae4926ceeb122320d976ee14a72467194ce7f02db7aa1b9b293682e235df90a0d8b6aa47b4c6e80f9dc349dced04725e8394fab4bd5e3acd47ea7ebdb4c66dbc89729962140be99c837a44af2d1c14bff458020cdcbdd56abdb0336ab3715e67bfd523dfd28f628ce24a14974fdb67d2cfd2334945656b3653dce7157f5ef242335246612fbdb6681ad3707072cfce0fcf8f0e8e8e0be7fcec943ce6ce0e0f504efeb9c91baf5b1be1348ede38f5a8ccb412679f331c75b6e21207c5a58ae2ac1a8743d398f67aed55bddd701a966d789595c072dfab4ad3afaa9ba631ed5f59af1929af9f1271b757681a0f494f4cfbe1c3478f1b3692f35a2484e29daa3e9cab4af3013367785537d1eb95cf75c36e3a6fbccd13c5483bcd6ba6a5a7ce48e73e6de73ad33673c54969920a6463d84eb35e87a0282e887a0476b3954a18856dbd9eb2ad4fa50cd3284e67a78f9a20f9662b99bccd9a8d6cb82347a58a0ae18d4dbcb30d966d1a3df1ce40360e89995322395c6613b6cb73dd3aaf3058b6e1745e6fea6a9aa84ad379a56d9899e69bc6e924b3f4448d4e2299aaae49b2a99619c84eb33622f56964abaa89b392dcbad32114a7eab96f484c9c959838d348554836f13abbdd60e23ca47462c4890d48f6e124cab88cb301480ea359494ae4665b870cdd6ceb10772b8108641f353f6eb675889967e6b91a916f6312c12b4ec2ea51661c349ad314d34a98d6799da5678d6b07f736ae1d1c2bfb706a18addcf8a64fd3c499062b9dd8604e6ca686e58db786e5309ad7d7cb96b7ce69587a625a89577cdb2a4ddf704a9437de44b3f49c61adb39122b8b7ccbcf769b3a9e5c9ddbd1c95d8e8cd8ca2eafad9e8535cfec6b45d629de2757f9a6feaab47dcfdc67dc8672a806aedaccf7da2385df356ca8fa6ea7a22a5433c58c00833f0428629c4c84109acc0a0c70e24804f440b9c662cd08512bf011fbaf48c0be4280207585a9029a2c813aa2930ae02448105163766d0188026055e340048102b280a400c3500dd2d04dced15ee55dced03dcad03dc6d03ac152b768a534bd8a6cdce9cb46624d54cf39a778a537fe4194e62668d83e18d812865332592673849fbcd9a588ca5d773e31a9355c500aa98558164ace244c5172aac508184bbb792fc4deb45fecd2b5d713b87e6326dab465af8a758c11409982288bbfff0710a4f0a2f528c408a03489184143ddcbd55938495752b1bddb4cc14ef122b65a27fc5627fd392a92f43312d1b7daa6214e735f6372fbde69d6d78c5495a3022983e354b492b16d33886a2b88cb98d40b6a944af61b3b396d7e791f33e9e8799691a77fbad713400f9c4681a0f89bd4dac55e3a3c37a33c71ea32aedd3bfc9b6732751c246f0c6ac34a3ad1a566e3d0cefda89c556759738888dc6d18abe7593d7dbe358ec65ead6e989436fefda314d13ff9a6f59632120ad580d4ba6661f4e1df3e1d48f4d137faacf5773f988f5d94433cd26aff835a6e5dfea91ad1ec9a8114e6f0072dad69c443d62a637c8d04ca41ea1c14715ee30180c96bba1a66acb1bcf329acd56bee58a52559681e494d435098ae212a591eaba669ac634f3f52a526529112caf181452a088b93b09c50c4e4241e3ee9e22796208de32f30de7f5354e22cdac0445cf1a92f211f3866caa3f889e90d27a62881b51e192694554444065a9cc376dc32915d66cc5ad3775cd3edca432f8e8c4166f9537a99abec634f32c4f1c91bb0bf9e80411a31343dcbd158b7d6c557fc4505c9e43ad1cc489159c68289b6ae923978f7ce4720d3dca8c038a9e466b4e92cb3518c0010698e21eabd13180e905f05200131420a900b5029ce0ee457c6c02054d60d1caad19e9f55993914e9dc65e2ff584dd74ec358ae292f5b11a221692d8bfd40d4b7119dba7528c2846f4307cab89254d745e98e0c2c4164c54c104144c14b9bb8f1ecfc2b7f499d79d9798696ee9fc4daba6647ddee79aa4f3373235f62396f4b19a1f2c24b1bff1d1e35968c5b2a99631ad9a9f9497b8c1124d2c91c4dd5b79e315579646388d7b75bfaa2a593f2ff91d3b76ec68e97c84a2670de312a27beb8633edf50b46b6ac3569949710298165cb482596f669cbf9081b51a287962def33132501ea21223a7f1f615b3657f5d35335c21a6725df2af34d7f6eaff9a6aeb75f01f568bd2a317acbebf7001111bd995b2fa4e7ce42be958f54a4f4fc1497786353a5693cc4cc296ebdfdd6d94455d6df723eb2bd912fd2d266aab1d1bfb40bff2d5a2cafb4fd7aabe9cbceaf617dd6280ef22d7d7eecf32db763b8b5686b1c8bc5f2aa6ea26f6dada299b667b373ddaa524eb55ac6925e76c66a6c5eaf22568cb6755e65ead6274a2b7796695c7e7adaf499625a996d255e773ed7195e33d28996379b363bd1d7e5b9f589a2648f8c691a0f79bd8a6e7965fde34f734edad9e867e979bb6123dfdafa443fe6a3a847cc3c33ee73e83ecb13b5e5fdad6f6914bfcdb7be158b7dcee87726fa56a9aeb71afd82be611bebf5b774a6694cbb61233375ffc6dd505cf3e9a9d5a26f012182a238d90d67da2bdbf09132df88b2c6792d53226a9136733eb24bbc6ea521b5c8a6fe48d523660e82a2f847f77d3e6836ac1f57aa477c60040c8c308111594623b030c20a23aa8c463861c4008c40c2dd6f2aebfff5385fd3c2dbb4f0af9bfa362d7ccafa7ff1b083fb070220488c456881c468840e46cc50c3da388a1aee9e85fb18e5071367330a0f77c79979fdf4bce15fe74c2df2ca1ad392648d69371f45e57953f74e339212bcb129cb4a34de18882a5bf39a7d80a56aaab4f13a649bbd5e45b94cd594062589bb79e25b7a43928aa2421071f7117c84b202941bee4474518514e0ee311f7d10f2e1c68727a209b7a96b109da4a2283904114d74466f6fa63835883b41c40e22c67ffd018608c3dda7b8abdc0530fe7082ab1ec5599b19768473122c87e6e30f3be4720db395aca115cb272c55632aaa3756822335fe6caabbcb0f01b8e31587613bc35413a7cdecc309db254e33cc1352e3e3132ceefe1b7f2e1fc1b6524edd3d1c82e0c1f8048afbf80489fbbf7ee3afc9b85c3e62c160a592774bdc1d061f01d085d7d213aff8f6b3b3a373ea9c7ebd80d8fe2f130be9b57573b399b97c84a3b4614af906af38bc95320caf387ca3336a84d79ca238a4f4cc1bb6b33653d508962b3586edf48465249cd1543d6138582e4fa4356bbdb6d60cb3954a7acde7ba62a331d783dc96dc16feafb7f9d73ecdbce6235c94940be2bed3d269e9dca0382bed9b9b543d71344d631aecb671379ac643b6aaae304dd378086dcd26ce43922815e5d98acb7c233a2ab352d19acd3413a96bd62197a97a24b7cf25fad439cd428eca4cfb91e372ed2461252611a56ca6f8f522d775e808c990121c6a40f27af9f4b88698446c25131f23d214484620b966e0ce43139b54bde18cd46db362dc12b81ead1c9a35a66d21ec2976116f6d9cfa66b69d7b55dfc67cbccfb75933524e73789ba085a0abb89ac2f211deb1239c33f1a8d3968f7a061e9abcb6d9a1492bc5446bac5b9c8726366b14eb106fa1282ef17acaf1d1490c9c20e1ee3c34b13dfe552dcf8d6deac6e134888f4e5208f2f116c6ad895b0fe7a1c92b61dbdb6cdaecc4ed12bfcd46713acf4cdc9af57933a95aa4a4aad523a997b40ab7b189d5bc8d492486846938f3b3d1f388a128fe117b9ce2728a6d4883488b9c87269f6d6ab9713849a60ed9ceb095613380ed077a065a052d6263a4aeb73423a56b4652678f625c8a8d7c2b97695be3d435cf526cd6a8fb4d9c57d6e38a5afa4c4f6ccb6689d1db0fa1231ce9e0688af3d0e48110b1d9a1492b29a7b37455d735ab2b7e13d3c8a3f4a8873b0f4dde3c7f872638af9f3333d299cbace4a8ab91c14393ff1d9ab4364e22d11307f951a4f3112eca5a493e73265692deb0d34c449e38777793c974cabfc3675a91c9643aed34230d9d4bc6d3dd5da67e0e27bd3eb78dc6493d7ca461f13316a3f19136c5dd93f8489ba155a3755e6fe7678dc3653632e2e38c8bbbb7d47d93d7d9154f4fdb9a7736f50b3a3ece6eeefeab2a9bcde02dd9101f6565b8e7f516fb5c24bb2263e22e93e18c4a7cd32f53ffa8c4e8637dc3b43527f9567a7ecd2c3d374e5d55f3d5ddcaad93f519a7f5a9e635d38a64392d9db7b8bbb7340ee3315bf15636ca659ad72ccb4bee2d9d536e32994ead9d5154a69a4ca6538dbe31537ca371769070d4b3d5d2a56ae2e0bcf46d6f1a8b07bdc30f93c974eaa1a40af9f081a2f8c7ebe543e7885ee32feae1c3470dab87ad64e2c35632d93a9b3e7ce0d04349152a99287918cb23466a784b1bf9c124f637ad9c8d5e9f3275a5ed1467b3a928aa6ea521230fbb002fb9bb9ea567ec6f5a35a791911f4c326db3643813b9fb8e8f3133624ec48688d9b8fb0e3ec25430c2b680ed113683bbb764eaefc83655efe091aaa7ba73686ec756d31dfa447132ad7359e2f493ff1a2a4272a4954d6c5353bc6d38d3f6a9a6674c09db62ea91560e45f1aa7e0e3567da16fb35d376a625fd2c35f5f99f922d1b33dba0f8f3500f26e8e187d6f9eafe1c3e336dab1bff9126dd7d878f3c40e1ee487ce4a1061e5c3cacdc5d898f4db4b4f27aea6cea5595e5d09d93d4fdaaaac4c80f269f4bcd15cff2fa1af7b935cf52157d35c528ae3cf78a6f8f95340172f7231f7740c1b843951d8600f17187db3232f2b972678ca2d8c6cc1a47dbad2277b7c1471d5e87137220410e58725892838f91c90c98441999d0e0e312182c5181bbe3e0e312002c6101872e707080bb13f988c312776f658d69e58abb7dceb237f28389cddfe4addaf27ad3a2ddb472ce260e2dd3f37cddb462ae1d9348ec53fc6b4ef34ca63ef9af586ec56779ca729a8d627fd362e93089fdaabe8dba3f5653d36ab1de66a779c549582e26b1cf46e579cbed47d173c9b7b6527ec5b6ce66ec6f66e969a6f865ea0d9746fe158bfd4deb489feb6f9c8d3e876d1a3db14c4db19973fafa5c559b4cfd186cc77e5565b4194ebde1de2666cbfbccb2d8cbd45fd55d66a48fe95836b1cd3cf5abff39076919f9c1e4df5c71528af1cbd47476e63523a9fa8b6066366da59246f336d3acc71b7cbc95c3256a84d77cfb9de29caaaf7fa028feb1716ab69d7bcda68f1a20dcdb00e158395836ca615b7ace4e552d314c9f59a7ea4de73567e2ac64969e669a93e4d68cb3c1fde208c5a0080977b7954a3033cdba282da2bdcdbfb6ce262c6f355532e4eeff5a55592b97e2979d6f936778ebd72fec7355cff5f658e35e9f6f636633cdfaf16fbce68fb97670b1cfb46d63e6241545f1c6e589de7040be95a4a64747279a93be2553df9669fbcd9c935ea7b9cceb6fadda5ee3b75971eaabfbf5e7156f9bbaca5233e71545c96f6974c5489fa4a6479f8be0deccab5a6a9596f43ad3f6dbc472aa1e89bd8cc8b764aa911f4c5eddffad1a14c5e7cbced7f9ad71b5cfa128c6691cebcd7cbbe175eb93b6ff656aa6ed6fad27be7d4d2cf666b661bd4cf5e971bd2b1f61d428976bf896bee175ffce5aeb7cced2539da56a2bb7669c93ffadf3c628adb4954a38b95b89f39ade90571c7ae220669a89ccbce68d9e1935c2e90d19353af79a9152225b3d0224b76fb6a155a59529ce4a34162ad5222616528f98d9e85c4b6d8423ca3e9cda86b39d4ad8a6eecf463e9cdadd65dc3d0ca13254dad6a53e6d3058115a91581121f77fa9fb6dfe655357d9dbc06af88127e1d5a4ed3309564306dc3d051f6b40c0bf545ad2dbb83b10630de3484319230d5cdcd84aa55585d94aa5f484a5b87cbd66d46882862afc5f1bd392fe65a6385596d1ac6f56756314554b186c678da218b6669dd714a7b52a4b4fd8c69d5abd65339fd4a8e4cdb265494d32c6d0ccc88c20000001a3140030401c148a86e31189a4c628c7f614000879a2607a54180ab4288c41ca2063885184000088012000233233b30100870c9771c4d9b9be941a434f685cf0ca7ac45bc35241f2b7651f01d4257b69c5fe74eb15945d89a1a71d105d63e74f3e8f333436695e9ea6b25b8b3f3cc6c6cbc7a955dde34899139fde3f9854012ad40a07bcacb176192a227440bea0f646564f2802d44525ae7f24c0b449ca238db50d56b3aff93d59c9c926dca13afd790bd040cf3f4be05fb3bdef6bfe474038cd707b8f318ce78e035360ad859a9fae9f318a78297412ebb976efb7100eba64ff94d940571941147c6f108288a8c124925de521644b05b30efd83e90cd757521497dd0052531f7ad94e3497ef22979b59620e2bff8470686f4ba4546c0fed69992bf5e73b0a8c5a80216d69fc56e423a7bd35e851ccf76c7ec4597517bcf39047aec257cf947ef1befbca74b3b1261f5c4a3ed0c37c900865b3843dbc28b62387a4f2fb69b0188bbddcde2f02cd6bde2a1b992ee1a639146036a445ada95236628603d307b7c6155aae4d34874b45b47d904d61528396647e43a8d431df40f058382e3d2efa1a6aa14051122e1e93babab0fb937a9222ff6c7ecd4a0a5e7277f1f3708ccbaf16b5972bd693799884814cd7edec2492749410dc35f1904d41137616efd29495874b0657ef35626548ceda0e118403e4c62d54123dcbd43ed193e101e13a6e57124610d9705f746f2f33a952728fd5c07ee0f388474058211fa7a122fa036d053b5527e18194a825c6d08e5e5b347eda3e0118816001aaf2592651318e86d2d15305238143e1a563e4f65768fb2b23cede819486a9a7f5f1bf49ef399c45ba1b9d8dd6e3b69448901691c606d16705ae32c08a27a7a5126f6f49e296f5a933efc11182fa69614b0a3710821f829d94140ff03f9538c5a88db1bbb107abbfcd08885302ef1bd2f9fc6842f25b5001bbca8eb02ad4c2293aba0b6e52cc8906cef233bd05dfbc27bc9ee4ac3b6993b38b712307e22bc3721e8df32e37da4d485a7236c751ee6a8a7e755ee8625e009596b537710ef140207339a03a80e01cf70fb46a3504a9a862da42610b119a1ab13b85ca3bf91ebfa4ef4b7de539b1fb8c37438e6b205e40f2732caec2d229c82d64e65f6e4c52d244a289633db145be359d12fbb6d7c176b50de461b01b1612d5638cbc45be4ac8c101668de7286fb143724148d9acbede41839e6e613d0a40542adb4c0401ae23daf6b1b94e8f3cd27d3e7cb0dbe352471a50169be57907b34077e865d3796cec183a390db3b1f42182cf865a67ca8fae496833c4564b078ce29a1e87a02209df5cf25ae2879a14b185f32aee7efbc598945be01ded3e1d47fd1777fa19d85ec75c6dd43877370c0ad81764d1401dfa1d3893da7dfbea8fa3c29f0d691230bb9b02128bf300c8ec1e7f2e334cb9e49f2fbd1fb26e06a76eaef710dd94d407623210ca34a286a25b177cbc262678d2e79c7f5131b277401e2d8438cb763f91803fcf446f6759c9292281a188786556e8f00236c6e3db67a1fd081ad957e1d930b16d65db6d93fe034ee5cebc0fb2509dbcd99036565847a6db0aa2e8553c42ada772da1099006e13b11e81a997bedd3f0f56578578b5eb42beab221668cd6b8f2961d258ac0a637aaec5f39ffbfda8cfb2bdc206d41b88a20f92eab14bdaba30d363a9092534b33c1b294deb5079d0ffc4de4ef523a4d46a385e5f4e793fde7cfc09ad4c05f5e0b0b382377bbf37dcfcb19a7c3da1b64e89330fa312b20b0137d7848cd932aa2bd900c1b634f42772d62ad91f61346da84e5e9594492b816ed1c4c1c10be092095f7222912738b0c6233d5bc55b2337acc408ec7d0322ce93a174631d3f213a5d162c6d087ca13ad14c4fcbfbc2ca5bb4711a15fa189b656d122bba2f8589b6082fdc2183538a04f14b46b95b3b5e3d92531c949ec19a84ae6a214d33037aa7bf5ccebf2fcbe542e8e0392817549df2ee242ce6863a58f108a3c90ad386ca7114fa21efc3b2bd683ec9c84933314ee63de971273961efd201797814dc618a741d83a38059a7670d9a99c08b03c6b04d004b42383330424e2bfcbd55150cd950c7beeb822e26f14f88d0d082e0555d8137175edde78d7f073684c4904bc4c8914dbac1fd582bbd6687688c3060fd27a6747229108fdd8017aa7e1fe8c439f8a3c0ea9c5d773ca90fe6cd563a94a6c7b6f216de3e6dad87515f9da7470bdcc46a5b7474e50250781ab802c4c6f2d1236657ac5bad1927e773d83555b345d0821c8beaef31b63ae7dc64b9a3808d2015810a2228f82ce8bca1e0b3e8693422316af800d7a15ed544048000a30405b2d558c4c265a2265949e243ed63a844ed214c7ba192fa4fb45ac40c93a41b1af163f272517a35ecc092a2b54a2defd3604e8e7c32a8c8454b39b0f4803dea7081bdc802482d5bdf17a053abf7b0f654e98f56853045994c6efc284b64affbcdef8bc08a3924ad83d0bf9e409bdd693a69a51d2fd3cd0250cb5e05bdd520c1094d1013d83e6a165306bbc70b0e5f68f636ed76fae616fd7ad23a869457a148cdedbb25934adda015b567ad34501a4c3a66e06e2bf413303be00af48f5fd7525a2b14c09c3b438ae4031c3ea050e29c8aab6f1b28b98e3228805a060d4c1f59f02157396723877da112d28eff03f78aa6115d98a770461ced27288410e107277692af29d9920f70513b5f25cf3670d35b3e04808f5c1dc575a4bf69653ac68b1dc28779a7b8e2d2c6d7a18e1467dd3a55822a5b0043146134c55d2c36fe5d6765c7cb60c3ba4a37dee4f0956d9f8239f68d3b1227c0d05c8bec02a97c9329711de047c4160f3a7e57ca8774850c4c88a17ba89cbfe58ffcf10c046d1898a350e5bc2e6e823ed0c40d34d129ce262dc5e6e51e9d92aeef53d362f1566bd9126c9e2357e5cd2afc33b93c3704aea793a05ba46cbf2692760a3367f0aead1055e3989b6a5e5ecc8e52478dd6e9ed25d652c5a81f4be67f4600f81ea17b372579c2a673f9588ea9f16334d58acd710118e5a91b2e3f1824057a1702e30fcd1b6236cfc635c82fdcb24d02ee9490308968f913a3fad57cfecfc7ff399450396a42a3b286d52211beb912d7239dc55861f200f43d12f23d26a6514bff07988c822a6d9f291ce998ffd42a09e0e55436838826afb147bbc4fbabd6e252f16b5568140d2aac8aec316681dfd6c767c38f1e4879833f3e05f3f8553cafc15008f7b8db5df5f1f7a3bf4f9b5fdab9f2bd06713cb448577bf144fa27c2ec14f0719b3a3c8231641dbecdb1be1c08dc7ed8a597076701c152f20f764f5cf8b3eec023faf428a6713cc00232e6243960377f487c4f808fe3f790c61b24761f36d0ee53d0c0447bd3ac7d2d71febb721f0a6c229db8ba1fcefb4b659b58b8aa03f0f96577991d27ca812474416470e5e384116278231ab28b6cb0133fdfacd1517949cc6d10df53383e701190d6ce99e24521238ed5267973f1bb20fc7eff3ecba9d51c24ddc67376d421cc44759369d3c6a54d98c5bb635b9c0545913245f0f2a63621a0f0d8275704e2bd459a5ec8c45249db54cfd109c5abbc62a0c66a267f82228d2a434cc5511bea614bcf3ad1e9be381970098dfe0586c84977dffc3829e4f6cb98b9a75a38e9996e8e3f0b2f7a4271003155624b40d08da36e29bf5aa9ab1eb954407aba47971a69906309fc6f00b5716299c4326a987d20c5bbaa81596067837b01b94fcd591784b54d83a4502670406c4c5597f37778477a72530263938c24c12f6b5d3d4decffa0820b1b277433450f382cf544a7798fbe1e7a6497749aaa8a257f73bc05f3346cca4466361ff72a12904a9a2fd18eae34e7e0daa20bf7e0aa9930dae7e1886e70d02aaae50b15306e25a451b6f2cdbe097b31fa6ef3311f34dcf7501e97138e7583bca8d3753b1e3654560dde0200a9dc79328605d39947fdc9698e064ea648b7ff9e3c539b2420a667f8d23b7424d0b79c9a02fd02adeb5acf9ae713317224781bc1bcf22be29a52f5f2b28765dc3d5337d94543eaa79e4875a5ac36efdd388824443eb2dec150939d847f80300860b43885123039928988564ea47e4327973899ce013b5d7ac4e06513242a6f093abb2aa2ffb92e2fcad681934674dc80adf80952721709e9f3bf08a4666239126569bd63bda334eff87baa2880b584cbc9851ac57c4c7fb43a1dd584a7ee3a547d8bd4da09e78eafeff1d223e1e54647340edb363998f06c3fb068a21e56ed92f19d5a98025bb01dce85a7c0dd8562e77e6d36e59ce3944121c2c1065dc7284cfd9e8d0b7e3f6293b67bae47165bc78e207e810d19638541c035204896b04e1327bc703f4a97582e14c327c78a7beea57cb78ad9d39ecce6bfe2e8ce0cbc5acb44a93452d290fef6138b89c128e0bf7f8fc6a6caf8bf3cdff6dcdcba1c349f33e1beccffef926fdf79850d4623fe60a3f0812bafb30bdcc3cd0bf8e952987c6c3fa4cc659db9f605901013f754c7fe6c63581a7f9faf8d8ebeb287dccfdbf667b51caceb6ff48b6e91350959a858fe5644492c3d4b06e43b27e6c982f9348694785d20c1adc60fad81300023c3a18e0810640fcff3af0d3e39c10e9b8d7ddd0b3543c9bb678f6794266a092d3e5160648f53129a884e762d0261ce7bef877b6206fbb5662dcb2615ee507f50dee51af4f543b4b7effc0a6cf5031787ca6b88e62865a7647a735b65ef30db6fff12716bf2c2e2005f3f24eb5e8fb852760e73295a5bd4e27fb5ad044746d2c3de0a378730782499e246646e2a49942ea484fea1d32fe8be076982cd1201c25969b71b370b9574f4d01f10962ed54af61358b13e6d13dc53ad832055f42712284521440d740cc26b120933d01d83e00e8ad58eef75489ff6527fde4ef6915f0446df6944414d0b706b8b2290d9f3e0f619ea01073ba0bcda73e86eaf442833a8e510cf95da0e58f6decfc07ed4b88bce4c3df3ae733215d84ba97f67bf97a2c2809e3ea18e5627766406cf3e678ebbb230c1f1b1f66daebc2f18f092e02ff44fa46feee4d3c021d318f1fcf4b470e488ac9887afc0573152e9348e1a77cbe682c6b57ad48f8a86b7cbc3bd85d3f5f841b11f8a50e1af4849ed257f14103ada16fc28755a1d7d18fab5545710b087747b12a796b08a6f7efdcc55a1fd4f9839b8f2b508acc5ad5a94c5a4a4d82b568deb49a11694caff76fa859a146990a83ed0a88c13678d26525dbee8f1da8e75de51fd5c6aeb62dfe329627b62f68205ab1c7db38e90b48aa7f8707172c7139cb0297495b963ac621a291455b0e760f8c2cdaf3c9f51f18aed538c7deb2ab3d2d3c6953e9acc1ccdb535a0d16a982130c8d6d79cce58c0968e55bef1f00bfac3c9754d1025bcc0baa6cd968e19f83e9398d1d8cb6f20f978ba1add50e514d312e6671cc8572dac36fe8ffc9eb764b6cb505671d64cb6cecc016d978c6a0dfef4661847f3c9c87486b84dab9246cd217b31defe82073503b5ef64256fc1a9a5b2b665941705a3b941cb34d6bf4f1ec7974d1a24bae25aa8686813eaffae82ff66659d8b8f934eb7eb35c57afc3d58cb9fa19d8e03d7b7a2037a19b5c2813211b4d300e46264ca4440f95b704bb371dda474cec62c1718d93cb8a7594e695ae1b0604d64113481e00e1e0cc0ec00ec58fc58e2f8514d921edd5983a8874f0c6237966b61cde949ad8d9c2f74792c6021d5f151676f9b087315726412f24d6f3fa678c2cbe7aefaf13e623b44edad16c6b7be0a83cf98a114a99fcd8064764cce17a395699134532362b7bf99cf0cd704f6a483e60f67853c4cdc6ec393d0e3047c6cec9f53852902b8d73ca2c946ecb0e3ac17ee14b63f6f1e3293ef96e13329ddeb2ccb7ab7a61ba99d0cfc124c96494f54bba2e9dce7289d6138ce8561be297fe158c2d134734b91cb0ab1c044fc02876d02afc65d131621fafc413dcea769ef6b2703bec65a875a503116ffa4b83388b85328c353805476f3602fc71ea3c61d533e2ee4ad9ad74f5d3048d47c0862352a7e2aef513d3eda2c7900262aa07022e8590e7b1aa14971fff89b525c981a14c3cd75b38b477c00ff80bec8a516e0fbaa924912d47938d7df98b0d1867d0928896bc6ae6ac66c1a80b5286e1283861beac540f5a55eb720e91c990da269d29fc505d0ead722a6c33edf912ee12566c05420887831d0e5be0c64646fbe15c123c45962fe8cff4fa22fa05e57062c02682745b33e6341736608ee0a109a3ff972cde11604cb477247d9c53123fd7eaf3f6991a02a3c7ee77d6dc4ce579f746bd80c0ab0a94475b9f1d0512ddd9424516e537341220a48de5f1de1cb05cc70f4ca214c8f2058d04fb6d59c81709da7dedfde3183a8fe9426bdd381bfb99aa14a274cfe3d847810b50169651faf425f33cee5c4f5fa2080b8dce31d1472f5a00762f3e601a71ec97b69f0c0934350507de832a9011307b88622014a3140859fe641b517ac20f9d47fa1d29505eca14b5a4e32880584ebfcf215be7cd2ba335895247bb8512ef32a695ad18dc003c11582c80b758d16eb325854ab4bdea551d79078548136a337766297fb5ae5a3ca6985a0c4771cedf68d10ea61311dba06b91ea085e5e3cd004d02d05000f9983c613126080f20a72c97dd479b4b1c101b2c4a235f08d41c5e3a45bd539c43af9233a2ecef28a09439a4267c6ae8216011bdf68ae8b733d97db44655f33d129ebff2bb2c11b858dff1caa0b338732f167a3e665bde25a3b8e09b2f9370578e15b01309d153aae086326c528298cfce88cf5867e8616df6e94ed9980cd5293d5f5b5d879128a1358498a768bb971e3cb48531e7578c1842d8139e8e5deb0f1aea28c2fca5b48a4ad99b51bb3d8d2990fe56d4800af236068235e66b81f3354d136f515d4398b9a53080cea0582ae8a1f93e00e63f73255f8288f586456324fc0e0a8f0b46a75be92b80a65a95d4e38d2e67389e9239d199c290de8571497e4dca9ef1901a1f4a7f89c18fdeb2e85a5012fdb63c57e047b4e429e111a6703072d678c51f4fde4a30c649fc6e4ce532a1c8d827796e513b24c4cd4ffcf6a50723e6b006ade3c1f2c715628b6114df5ec91a203e0480849aeed7c8770bd484050851d80f93e0736ae4532c00a621aff8becb599c3f10dad04c3d993cab5b4f98a561fec7252804c4886e77f3e10ebfdd38fd833011b79125c5ff7c7390df511d13e41381e1662f90b3c718e740a27ae22ef071942604b290abefbd85410142c9388f7d78d597f83f32f6782f50f6ca41e5ae61782086e15314ee7d7b5caaf79d0a15e019dbf4b7d6fc4df856204c60dc90b184fd79f9b3813e6f930bba6dc0d686f175f47932e26437207722d8e10350b93558cf2adcb39b432df4d937c8da12bfb4e1e5e79c32312d1de99775a7f6867c56cbe8ce9db5a68c3a4c670105cf8a29b7448b7ee55c93007647f3e4f4e900b710aba5c287d94e5a699c2c17961a156e6f7baa82174cd1c289e97b5ac92a0df713568efa4a7781c7ffb25aed2329030453485ecc2fecdb5522666a7f110f43d9b8d814cf171693ee4627fd3b74d6f72cb30d5eeacb2dc1917a862eef7f245d159a9fce1b6b42dfd039360e866318e1b9c68d17c9769f549d25ca6fda3abf0ff4f0fb397ce4aa51639723d6c5356adbe3e23446433a8b1500fdcdf4081d8bead9317f2734fa908615df5cf34940baabd7dcbe56413e43d0efdb2ed17b51edea1be6e2e03bc454936df84ad2d2ad0dbb44b03d2df10c4092c2b364ed259920e84c81d69e0f2a4d243ba882f68a5758c62d6938e8a68c24de463ce1cb575c9d322d30fe8501340f5e6d4f223e4069c4fe9f2836fbfbd3b37967eabdfd1e8ffdf57331bc4efd77795c87586fff04e38a48439e492249d33acf3e9b02a910d441545a2d291134c5fda08ce3e2294789702eb5506422c0da60a5f4bedc628f52f099eac63db1f6ceb064766af4eac354871d9585fa21cd5ad818a76d52552c17eb0f395fb3d7e005502b45b5d3c392f42734201c36fe8a4b4514f37f0f4be16b0203a1075340b2f3a2b16db15b25a1479d6cb75f4973fa40ac8799fcd6819217df06ef2e8c49956af6fae01a45aee0c82c5d12a9a5efbd7b2fa694e8d4f942839589e278ece1f922d053de16679c9e20c8e4c7136ec3975129209459459f7d0437bc0bd51ad0bf185a507050b8f873cbaf10724e642f6edcf8a7ca89eb34f4f13f11f0845de4662ad8fe3b5f4ac526e8ea1b07eeedaa4471b7ce1050d4d975c6de083a015cc6a1e4977e05010402683ce5b07ea4cd7332eb74f00f3d26e7532b9340a8ae4af379a8ae10c0e81e3e96fe20d7c5f00365ba1c981a1227a6770d41f91d83ef06cc38d133b0f1be6045f425d0ea6669ad99a1241da3621343c3c4085c6eb7858b51a27fcaa991c6a12332f5d82c2807fcee3f95349e1d2c624910f37742619e7eeadce051e5cda07c99a016b65fc73c7ec9b4fb0b2622e279dd4cd15e3dae50ac25a2a3b30ac2e47ec96d768c135a315a2e6bfd464e57f3b106dd1436c641c9b599d53589f432ea8ed17567ce1eba340a161c092bc94e87a9390522f71c5305aed7fcbe6dce8b5b09836f8b4440fdcc3572b7e4a1f24192e2307c67703e2b3bca87664d5df7bdfa88abeb7cdb622d0929f177238d245521bc1a80eec5c2a68f86a59366eb8e73dbd5061d3adb72fea64c5b6bf048da731811712c38d0e4957507645e113023c84c85b16f556926a7e1a84efc355440b744c31bb91cbc5a6cb66308416fba4f2af3b36a382d974461c59de5a12abd2e871f8ae3c86c8f231c7b0951cbf1661dce415bffe2aab18e528c4bc9259493e234e0a39ae9951f8ab041237f740126c47f26ea96812142c5ca66f0d8d89d9576c3d61ed3df8c9d8b9a575a1e121c07abcb9b299b2f765033482d16f59e03a958cd6ab1cd8d5d6089ad289c5d5b455298359af79c864ae0b01be191c484db308a41bc59e953a3d028b9a8ae9bb0b835a82130ca3bb809847b6731772d07d7634814da96ec0c2f16fa3dda7c67a87faf07e744533161bfcf7b3bd1f676530bdacdc4e027b15fe8ec19f62cc2b7564a61f287db6b1de978ff359c8244cda70c1aae3e0774c49076a09581f3bafa1c4f4296dc56302c0e06a460d1c89806603dfd0fcc829113c2fe9b4b32d3844b1c2bc9b09d8e2de2ae569e0caf6ed820ecf3cf8a8d2be86e3aabb5a410efaa677219997d842b086e0862bdbc88f197c2201efbdd2baef219eb28ac12bcf7fb476fed052ffc769b22f7c4e8cdc29536159b9ec54fd15516947753a567226500f22b30fe10ace41ecae056d40ac614f7f1e63a63f2f26312144e4f775546fb3dfb71b21d2f3a5139e24b062031a046f48d3330d498ae99f0e535b44ce0349a0189b83e795500e533c2c5792be580e57f3320ac444d4ee1e3ed70008b42d8aa323db347780dddf49f301eaefb7a1fb6b5249e0ccb48762ce57ddab5d684d0662315424592c1270e0433140d54866606a1677168ed42e335e3dfc81f59725e5cccb93c7c42226cece8b8c5f91e9b823924e8621ec389b73522eebe6ed20f7e079b5eaf9749414667f84e461ced369ddd9e1affac13977f3ef6d89dd88aea0be00240f8145c5eb95f4128f4bc3689ed1d4d06c339b4ea67d521359d9351f09e2536c73c190c87606b22962db576f0e8217042e93e0fb1f8e97f6cfaac7639c360e8696d32bb332b0c667370d7499766669a8ea3b0b5892daeec3018cca17a27599fa9d13894c2966eb2b8e563793204ae9d6c7b4667c3700ad8ba41dd752e815bf6cc4da06dd8b415cb26041b966b6559135a0d536ae5713273d658752fb1d3b0557a3e8383c87e793904cfe156edf5048ea27beae9143f023bc5b7153808ee95b76b680c6d959f43e43cd4151eeef128b65b3a4e9173b4557a3f8199260d24da23a720703c381c0d1a3a198716d01bb4c5d0e3d9eb1f953c908c7bb3ef3f1e9f8aa5a723369e50ff60b9ecc64e696732d76d0570f08e896a13cb3cfb9418aad423d94c53f9bb6162cd5df61aad3c74dc1d0f6ab1c5ae7bc8d837dcfaca12b5075b7ca6a79d58dbd2d01ce9371d1a88fcfdb4dde80a80e9389df447f1a51a904f86fd3098d380b87a249fc490e3b0a1ddccc4981706fd1c10e04a6f83127866921db22e7c2dfa417a482fe9d45f09e0708f2de24f801d71bc256e739aba36e7f4e019934049b86ecaf296024620a85b77512e62f8e0eaf938fbc3c712e0fe7d90b793f99944b3c784fe7b33e6ad566c91e5e841ecfc6a38326d306ace6e8d93dff62cb5e4568f4fc55a7041523aad274a3e72c2eaa3180023dc047414fdead07cda5e6637addd5545a3e3c98a166b3c0e13d8071513ff0c474ef0c5fe9bbd1f092eec5338b43fee3cad09526ecfd8fcf7965c8341164bfbeaf847b93cd194e4f1cf5a0ef16d2ccf0b663a5a1585e36bb187cbd5fd79c45dce63b43bd35ebb1fd686e63e737d6decf10302c1f4356ea572d87e465812cf52039d27382af4ced5defeecd43efea18a6ea42195ffbcfa74aa059e8695ad11e9faaece6e266dc62b002357509acd446a48c455c68ff19316b276186c897efa36311d8661b83504e09d5dbf37dc894ba0c86149a6816c6e5832c66d77d6847673b1a42301a2c4efc69f1293cfa6cd49d4f9331c1617274d8621d75441d1e56ea17e805ea1726707adc52ff8de8e1a7e3978d112abfaa5a132fdd41dd8ade3e1286a9a886bd6fcc0d7aaa5c6a275169e283c7704213b16844079f56a52f28ec7d88dc55070a9aca96b12d755f53b8aab8413fa4c371c5f1c57a96840538fc94c8cd76a30e296b93cf9d9b9f6e50b9105bec55afe30ec639d335d7c29f1de7bc797ab943de5062df31da463faca27cb6746a867ccc16689c0584bd535657bee7c35636a5962ea044149a5628df1f9f1990ac5708325595c3364d9ff6d30a15a51537b72e3b6ce1cca9689edab3ed0b199cfc72c189f3fc53945545a5ea4bf5a492c1c46f67d8892e64c26a029d9acee2d95bce81b07e563720bd7153c1f541c353536988d9b6910f1bfa456680f6477f812c9dda6bf5f576171fed62fe85103bf3647a7370a12f4d96232bc43cb1955686b290d508ad6344dea9ec2228b7d5770f8369edccdd312a2858afe9e1241e8003b5375dc024af6accc816abfb3dc70fb8706d88cca0206d70d96588b43cc4d24e8db6319290695f9307a5bdc5883f50764382a368f24339ee75b4607ac992c883416eebb46d1a803e23d476ce449ede8d3bddd21eee16074f28f2d560762c34889680a9028f0e085ef4df21d8627ead2ccc19218f5ec56fbe3c3877185fe5eb1d696bbbe58753fa3d73de8f55eb5cd5ce182fed10536ff457bc53037fe11b85299f7fa46d3f506708a297f4e88e05f25b4fca5eafd013abd2fc8bd6c591ffc0ec64bf852203dc84cfd6b0fbc5bd377820f6cc54f7bcf9ac7a0e8411acb7d418db4f73b81c51fb9376fc84faf02dbffb51fb29c6cacf92cd3f514b793cacf4abe34f89950f71658cf6d5af1e3fc809ca3286c079c9297cae782202323fbfbf069a601a4613c0cff12afebe9a8b317324b12972fce892b3bb4db6b6907a31ca8856acbad574a126c9be597e9ded6489d36da07eb366bb4121c4f6905366833749b0049b1cd3d08f8fd2069b471f6927e66b817e87110bd7ac98ddaac01ded1a78df96c07f6c3f2cd12678850e5f239b9214ef09794dfa05fc73ca4fe4621f68f4c8db3d6af65d7b10c7eb4cc767b5fe99d1545b0f2bd45efcfc8eda2fa6c1676c03d85f213779d82d39c866213dcbd9c00aef71411cee71fb1fd8f85bf87cdfd54a5fce97f97acb98f09dce1442d70835805023a6dfcd98dce5f3d12050c8ca0846be3ae8c735cef8c0b98cdbbc07ae03fd26123abeff74bc71a3a5e402a7acda2b7260d8f5c736dc8f8f263daa77ce99e58befac55df570dc56f0dc6cba92c14d2d70052e926e72482a1ffd7f015cc3a5f014ecba2b37b51479834b935d2037d27d0f89f9fa3dec409a19829a1697e175585f1aa3a0883649814133a6febe1809bdb28eb4f53b13543e2197438a8900f18757618a6a072b87282a323c1824db2cf6e1a3434e80dabbf370ab318e583abd6fc6516cc753eaec6d599ef0170824fd88fdfa24a591714fa1c242f1595be193b1dec2fd4ff576d55369c4a8bdb37f847c0d0ef82387cfd7a4f7b8326203a29680ab106e5db8bbb881430b68fbde1d96a7705aeef59541d77166f105e3f70df5d2932e2a1efdcf885002b38abcbdc838cf2028eb5bee381df6424cf3cd4735e85050e2ed6c4bb236a721b870ed70b55ad87b3c9925301e97a16288668d46cb4f7bca0c0318a4d02d877ffb973435b2833c050c4bd1a5b7fd1e030d61ed5a6f9141cc97f6a0e64f816fe4bee54367544e71b0c88750b48cae80f79559a5f4d4dbd8233a1b19e160ab886079e353a5f2bd14a033ea362111ce184499570c15bd230af7e9c98797430f2940cdca23c077e9428aca16aa816e0a7c9bd31d9a8cf5f66366224587ac1ef0906c93cebd96b1aa366d44ecde706e89ead486813f7e77acd0eea56fbb64f1e828f21ad0d1c50f3788ad17a95c6f06006e170706f7835ec1874656ae1fe8653d61997d7cb0d6aca926a318ea96d55811fe1dbae0611774f1319ca2c19db71e19839a4a9899b601b5c18a72c810ca3086758bde69308bb6ffa40a8b9e9efe9d354d0422686528703be0d94982ac29a24af7ad940d68cd6bbb14928cc4032a27f4213e97f984c0e5f6f063158b8804f95aa2578ed2ed85b50711d81eac61d5dd0c81e0ef94ecc3f06146ff1bd11176a604fa6aff46ac2d71ccdf0b0c31184b13002ff4553cba7e9be215366093c089e2e0071fef2c7d20d1a9293f92e85a5226daf40726d1a5f7b0f8646eeef5d2055c212718f38a2eea2dc664054e059135894e7c792fd1a57f2e4f0b0a6264dbc562588babcb7bf87a563687c8e6ca06288660f923baf8a4af44e307fd687499c48c3b9e988c7e4f32edcd0a7f4113fc9a756cbf98c150d7ac7ae6154fa9280d1320713c1c2fc1a6af6a9eaaaf75284a3fcc32f7652b864f0475ca3c92cc6e4cbdc31079b0f2f4926ad72bb6ac140312c06ad0af98a6ca11dca780ef2bfaa12f4b6b3d1266e65417f5ac840a27c4808568662aff68bb1851e6b393831025e9e4966667b66eee1ac3f4b67eedc831a0f9aa08b59313f4d2bfa112d82b71cf252da3bdfe6690780ad9d8238ad111988baabb34c629ac8cea698d87e500d5329dda17167b848cc6bf5aab2fd424c6360ac7c758bd13bdf9b3586011ba232c9aace4508925d4ea9b400a4de1e84a2cf421c67550bb8e58c13b66559707616257c33107402c5a4b7a5f0c4162c9623d6ecbeacf478232c77a2a67ae7a2b29d565051cd0810b3a43a00f87bceeaa2acd4f11ab0b4f8adb100a07abde2e909f0dd21762cdb61831e54aac86079fd33ddec930ec5582a81ed5f050d4dc41b09e72fe707cd16c1a302be98cb4d7c3469f168ee720a8588058de21bb8012a436815fbf47d4ae781755e5f2f11d35aa7a09c79748924c40190ae1f8181afaefacb2b420c0e1e91d146e0b33ee4445fe555cd799e7f88a4c988ff16ee8db97461c4a31cd63f09835eee54bd1e6c0896799b9f2cce3f79ea7d19b10643fbe5d84280baa9a6875304cbdc4ef0298762092f7cd7884d1ee901af21781c59a141542b0149c9243320c66dfd56f4ef55abaaba7838b4e38b73eaf56ca1da7fb6f9cc213163dd24cd86f4e793582a44c6c272fe0128f1584f9bc85789120800e0b0161bf1dac1b23946334621016cc086b789c58c0efc237b14b8037e112d515bd4204ebc1147e379634ef070c719487a47897e50b65afcc8dfde2061e2185312300bab271985452266ee4392544108d869b253e55e86e4489f40a3b3099512c8f1d0547c95a18732f742c9534ae0e2c1cf59d76ae227a245e70d29403a4ff281215c12ea312b0757063f9d28dcf45b5a842dfa4b1d741d24e2a8050392e03e04a305efdff0b3244e840f78dc29274188e0d802c7f933858883a16f2d0486baddd7f17f27193a1a750136ae3db4c95052b1c6ceb0f1a5dc3f1805c8775251ba15442e6b2182da96e04daa9d0b73dff79dc1c6017b91267f05dfcc78922bd7724c78c4d993fa0ffdd85a070b14bdee371d8f0dd840f8617c7f5c1d8b77ef69516ba0b8550eef4835522c750b08b69d6764b2408112f8a31cca335c5b0d333545f64740bbb1d47e150b966c9ac1d4a63452a2c283d34c11ee73067146f1b50e607e03c0a3dc57dd5ec0e87bd6c40e89be3f759e28bc28fe099ad2359a6d1723022d77db5b75d727e193d0b7ad51faaa35343fb6e516237d03642dfb0b9a61ea55c1889ec228ca4ef2d235cbe43f51f91aac8b3f1c3bee5a9534f3a9660beeda5150a78782ff9ebff8e660ca82dc744d7624a0f45b8242f43a55e786671372e9775d6d939de160f2b5128d721578fec0a3c872707ef152fea513f1016608febeb59a39170bbaf406519483342f83044c80be9c7aa88f09dc802d9f05ee4e2d7ee4ea5d166020dab03f76c2237714bc247db9998313d383a3ca257acaeaa9a149af101e5867a7e32765562f2849d81e4da7176d20de8290ff43201ef3cc96e881dbd34b6c7d1af96ec2d8ad7368e62284258582fc37b4278aa5001910eed19b6e035f2a3bf8f0ad65f1326dea6403f91a5e6e83de61e42edef9897bcd65ef9445fbbaf9fc350183d3ffa8fd33e6684f947c226f7d16b51cdb5862420d8d03b00b9e2e2d118eaa333663686d0c386dd5ab5e4f25bad426db909da944e152d7918a099825ef8bb61755c696c7024bbd045ad01c379636dbed3fb17245f9e2050d123fe447fc61131ce6dc19ce52f38364a502981dc38645ffa9e114dbe144ef749746e7442a29fa7fddcaba1466b289dbc5888633a9569d4dca74fc43bbe71026eeb1871ebc99fcb8a252d57632598e58585608454c807707cd873eb79e63c7405a677b49f99f9db3de66ec1dfc825cb3e9ea9302c5483d664842da9a5a226a9777b71c59e75371a146ac1b62cf6ad0504b1a0e4138806df5ed7b325b8b7318ef447b1ce23ab393ac580ecd782ff44df88bdbd849f9eab5d11a8ece8b5e748ce7745405e14082f9eec62bcc6259041f115c68b7b0f34b01bd5fb1c43bdec870cd1b09654fa2eb47444ab8dcba6fe549ffba09b57fa70286e46ec558ca4df855f5e2b20953e05e81a222de5df747ce799c96878788a8cca997c7ce1d596dec9fbff7e4e00064558e4bbfcbeaedd0b40752c4a8a3dd1b7ad36544b97266f11233da94e6a428a98696b28ef6a8f5463c3aa8be553d430a0625ebe40a6f13183fe6d2e9189d6e58e34a91e8d9ace9fa861e80defdc2a785ff94ccc0ca383dd25bbda6abed14dc81dce0b1b8e527351b6511601d62c68a8e78c916936e7c211a3327e51b2c6bb17575913834e69d9751d29816c67ad8d92762a1d817b85e56b2379a708e04d05af318b5090c473bbd81a62b5a9ab87f5bdcbb865b13276c86fa8389fd8a2c0e8bbfb5ad99caf009d02dc5debcd70f45de898c3be1190935024a6aa337e893817607ae6b2d32c628816f28ec06132d78cdbb1c6b67ee08e48a9f1f290732e188e092da01cf176b7165292f131b687208513507ed21418bbc67e066c88f40462fc3ac3e3ffff496e7aa71d4e38bf4bba333839e0628d4281b1341d397ba9b7fb51c2afd08a7a460646a47c2360f5d149c6a92cdcf1b7df4732634aeedede2719ad6cf541638709e033329eee344dc8b668bb085c0e8aed0e17112f40baadb9e7e9ac35e0ba2625862b21d0f2fb13da7303e9582897bbd4546efecbb510d07b6d6ce863a3b1e29e6691e6f51487fb3b1845c6ec80e00452c66180dfd17305682f2c73ac47a81ae4cbf2dba610b5640d1132d305b7c2a0cb2a9f534f23c099a92ccd5a80731c38b0f82b0c1627d96ffaeb31382e6818f29f4ae63faff5cd10eb98f4b7bae0acd7c864ae40a78abdb0c322e83c3695807da1d33bf0776eba931332e56a31839a16388b92587bd4527c8cba63ebd8f665f616976066fef2c70424a623374e639b3dfd662c09ade0615645af1faec35c7fb6d943ac8d4fb222b4d29bc8707f71a50ed12f6d0098ea10f4802b1f736deb1968e5737f61334250d4c09c8885c30a51fa105b08aa1af1198735f8262f8c08dafe63408f2f26b4b37325629d1c83033b0f8e371a03ee900e18d8f37983e30bc82b623a627a05faa13419e3958d7af22f0ef06c44fce716545eb22422f8a5be6b3e149c210a783a9ba7be4a7dd1ccf0c4e12f03cbbed1d9c719299ee03a9e21beb6317e4eb09088e8bc2502ba29af76ec775d45e684013c4468b3b77b95db197944b71791a3ed62ef2822741e36d4ee1045c4d5b0457378149a4dc7597b4705c8b1959d0110e73183c87a101da8d209afd9432ded98342790df39eb45af8a932e9a8c6128371e6ed9d7ef12287c42ee66494ad5e7ca011dff4fdf2a069b9d582c93959f818d83cc3611e248fdf2bb2a9ca653ab7795fcd7647bba0e927886dd7cb3aa4e0436dff438d4c8cbc556cb98baef5e54205ae9b76d4030a1dc917a943f2b0395dd32f2b436fccfba488c63967fc7e807ef95401e912be4a61de00acce0a12e4c97a49947a0295d15c4a31fdbf12105663277cc8c0598b5a66183bd1c0fea918ad239501e0cd03bad634bdce5535ff343e0bc643d97981e7817a253d2e79268f793939208f8a718e3bc3333c2148e9a145732f21f4fc64b441c52795c0657f655313e67496e38d2d9e2b61b9b000bb037538b12a3d09b5b4b33621eb87def115708362c22c910b6e265ac7009ce76bae69361f7df1ac9d4cd798bc22ff7026ede05c1354945bb3abae5577eb03520ab6e36cc139343268ecf04fec64c456466638affa2b75912320068a1d256580893682baa80f6fd53116782d4496cf361aa3796117802c1e1977481e49a981dab689b94c6be5dde3e275e490f7a1e873ab6f84ed0a804acacb6ba15092f7f7a08ccfeee162aac0384bf2db0856ab0e600b6d8ffc075494613e8daab9e53b7f24df1dda4ffc0732ec0b36d71df171e59b8877ab79bb5ec9ff14c02a0d9d4f02dd19efa47e619e6c0f0d3575fef48c99f9efa72345cd243700fd8520d6092e737e249657dfe68d0b1c7ce67ce4d42dec82ca62099246e90295ad98a416c3b96e12b655a31097ecfba812eb0424312b1e0510459a5d90b19d67800615373b4ebb452ddd63397dd5d2ad913bc34d5e988501f8b223a4073e8077d680b7d0d7d971304a3e553d218a99aba9e5cff80ff324ff3d7e4310b1405ba9d0320de1aed41dc29ca87d4566ebaf6d66e8fa88f0b89d28d3a42ce845ceadfaa12281ab34a5ee30eec84eabc4aeb9b985de26e4714463304778afe29a5a5df8e6d248ba745c7496fde1f38700b04ec0c950324e08b7254be0935ed9ddb3d10ddbd5246cccb84a932319d06fb83de80dd9afb278aa999396f21fc041f038cf1b4d5739e3d03b975761cc2947103e0d67aa02fa7240cbcf534d8abc6f5e8ec8b4121911f55fb7f638ea9a7800077767a5791bb3fa8623462f755e70a655f3a39d358206ef413b02721cb5d0397a9777e675db3c721b6f4274d5954fb2a5795307b99de59d4db871e3c86f56d0f5b16e5b9a5d9d395d3e6c1f5f4cc7962b3b6f71a024eb38a35001e305b25c13946e98a48d77a560ffcec587f764e9aab37d6b4137e07ba2769e03827dad453f79172bba1b8d60d34c1f5a08fd5799cd9a97ffc6553e7ec5e9da7cc6c42454b3ea83fd8cb7f8a1bcf7bb7db21c39f51335eba4076f61e6fd596333f98f05665b3a140dfba9f46ea23656d318a1ed555b3fc4eafc3656d2a20514dbfa9ff51b175198cc97f8aa55acd98da96f514f67a4a91af2fc66c84c577a750a2da8f7d95b3896d4c45eb77e9d1cdb2967c4ad4d756dc3753a44d147c6ff4b79398c0a16fb11cee83d5c57e0acf02ca043523f614ba6d66f106234cd9ecc5a36b19e9fef9c8a7f516a5debc36adbb862baf429bf331094fb88223a17504fbd5c41706a7739a668ed1e6d6bd4d1902b6bb827656c38496f5d32f0e393ac9eec00c59dadcd49ac7db427a5d1318fafa62ee7f301ec325b29dd218b758c12a41a7550259c979b846138074f15ca10753ee6762055077995b6179b33961e670eca9f9e8565ff558cb0c9321adaaa558c80e80edfaa5b49d5b6894a29f6772511482af7b021186d7210dc8737b8af502937ee8080e8a0fe8f4b92d9e907f7cbef9936311b44277a057009089138008b5d40385671639023d73d59f90a07c88e37d82b0460486ceb357b26cf5a262b3571c7f7a91b9c61a3a62cd73513d7ac10ceca41a39cd88e3efee71c21237ffc50a1e9f0f9d085823977fee0d6207ad7b9e936ae4b411ebffcc2fe3b65d619141935587cd74a29a21dd93ea1637d3643b18603b19695c2c96cadd5bcbfbf7a1bb0ea7b302bd8928b47d1e43cf5fe23b4e4173286bf660073cea733a3d6eaf595077e484a2878ab611f151241ef980a6ee157a23f782cd33f58274e0c91c8cbb325e42ced53cb36caa7ec567a48327a81da7f3214505d1f39f32fd8863205281527b1eecf51c2623e6ca1bf476434226ceec2d14aa6c77a60806107f2bf71e601458ac719dd0a6ea358f4bed81803cc5accae63fd642bfe64c280c050b658ac240a00b42725145924a7ea7fb2b29cb2395d9eee1a8a697e536791baa914cbe87511919ccc4ae5f536e51e484448125103d21cf29bd5ebb9894621cb7ada6f75e48331a037519badc6d61266d4a909ac07c726c4a24086c6c7c3205a53be3883c8018042d3232e5936997bd37d6d8ba10ee04dc788ba48786d4b6c42f28af377b4c2709a9b17bdcd92add267b02066af2bb077c2649b8ffe6ceee10e32d4fdb521af3b4bfa39e3ab572ad76fa1672f64e53e752b343a7933af6d8b17429265ed811cfe49444819f303ef93016e044344a6f88981af1ea9a71cc6b0b20520e2decfc489a8f5605509359c130081d545ef2341d16fc3132e63bf144fe19cc9f7c64d8920b16040f972c9c5aae9b110a172dc4b60ca90815c70338927b6e381321ba5f2ca90430693819684fd58cc6f0bd84500a5aebf28daac1b5bdfa485d248baf63c62819a7353d0bc4be51f3ce9dd76b52713892b2e3fc0f38fba7072bf80ff0b7c1600bf5d2feb99863b04f672c7ed23b1697fd16358e0d64224a85631ac5cab8e02243d0c092fed89f34709c0fee5e598c0f7cd4430a9db87620c36ebea1d9a901c422a06a89b0acb14de64fea38d130f17d90a5e3e94242fbc0bf2b3e8852a9f427696d5197b18462e13e388b9f8dae7dc0a76e1c1dfa6222cd68524473362089ea60e3c8c936a57e9a829f7a3a5d7cd3d46cbd479f423d64077d190e2cbb6db9d4bdb60fefce801b6687dd747c26df663db879065a71045c1581ad863508d5fbf2b26aff6b26e78d0b3e8fc285930a759653d65b0950f59ce24aa0cb273f8e77a4c6cf0accd5d7dacf98f427099e54f5f31e0c4207422262a7bf039aa9f19f18688ccfb647370b6b7dae23d0a171503f06efe62366c9759cee59c0cf8fb159d2afa65b3747f565383d83a4784b21c0f9b7893f82cceb90d52adef2ccce1b56fc00f15645f4e3e3ecc05196754fa3a043b977549e81a261be2dc2b255ff59737f1ef8cc9d5dae3b2fb959324000dc69e10a8a2fe565ad4049de8c93a5d6c50f25dfac8ea37a2f91e54a9dbab14f39d0cc74f70ca148ba5fa21b387c7053d69b4da642a4450268e79c2182916776c174b5d488fd7f88f60a1db06668b6d4d76feefe4932379b6126a7f9aa02eb348a6f0955be7ab692d8aebb399291fe5788f533037eb95e9ce92d9adbf2a3498f15d50783e53223a082e7e61dbd524bb9f867dd9f98c99ed8be0f450f534e8dc7b3e070f8ca4240b31bb57753e025774a4e9a171bcf6031af877f2714fac8eeeaf6ff0f8971f097cb66213341d9341af67b7dc180b1fc48bc880f4f0520dd723b9502571e8a83827ab88d64b21f5f350e9f4bef21347f2f070da39f7f23081bd85e271e1aea3429b33695cf48a333c3ff9f96895228a901d681bcca3bccd238b8b86a19661d79b999d8cfd44f6870e9bd5eed1e7b1d137d343bac8539470b5021996d679c8cb1c580b92ba627b059aadd3850de173b15e29c6e13f30412082d4e7a17a4a2171b04b758bd11e8a20ac2b60d4b284f9f9a8bf1ba0ce40ee68e0ae70d3582b34713cd28dd37cb20716bef28fbbebd6b5f0630342c0c4fc094e5a108fa80797c06ddce727c67d17b713b8835d8b75f13609e84caa333942e268016e7e1f1f599b86c6e413adff37e83c0817b1df5881d6f2f625f77f7469190b52efeb25c3a2dca776ffe1189898dd5e124d2468e7a3b9124f8579d1f5f202e28ef3f97756fc71568bbd75a2e9d9fe137cc3eab5586dff0e9778f518cfaf71cb4954e3ff20efe74f02df0ab6a86bdbd3e883280ba3e0af5cb4cb71bb00164da441ddf06de29ab7403c8691ac4c9e7508c77af9ba6cdb9e828f7354ef3c8b98de0b572e277f79541c6900bb2caf94829e8eab66ddd18190bb5b99fd4298fe3ad71df74986df161aa7ee88235cef89b684c1eb5e00199a529b0701c4dd8c468983aa4f410085d0cd5b41368bc266d729394d19b87070a4455c915b4263b049c6772c8d7c67fac13f4d2a7c520232dc5a4c4838dece517db9de3bfa28e09b9d1ed8e7339af8ae9a3a9b0955d92e80a1d671a7442e10d5eba6c845641374141df5b52ed72ae50fc8a378f096c0ac7dc6fa2dd186033b282fe163701af17a3f2f5aeafd986c819341bd4c0f928078cb0c42244035330e62eba117333815ca6827070d7eb5961e392ba08316906aa87cdf3b6cc376030668708de70bbe3f5d6b3ce75d6b1de7ad7afded49183dcbaf257484208dc83e01a71cfc13ad6bdde7aeb59f7bad55f671de53bebac6f9deb56374ac7afba6c652f8de1a1a4205d1696b1d52b6098ab946f4757004e8524a2f76f50b98b09a51d3d967cddaee58d057da671149bfa4896baeb883fbc9a074524dc4da88da5754032b7a91ea944723ca17fad62eda009292aae4a9932ca855ceec842165541f4eb44fde0c2fd3083854dc7adbf25a6ab4665e80d11bf6ef5150d455542d77db547a098465e9443f5fadedc57bdf8d0383b1de75a81a10248caa54146aee27fa66d5010b0bd66bdfe8dfb01137be890de3892cf10458c28c481cdceef9312cb7731680ea67afa8f643af95bd239b5a28f14bb7ccdef40c8f972a58d8433611e64aee3a064fefce538b8f1b49124f6a41835387228171d6f4761344d3167fa70bfb0a7bde6e4e86bc4de142beb80c743096baf2f8c64b8aa4dd582f536a07682593f660d44f702821b58f66ef98c4c6a5cc0bb25cff7f1390270021538e3c466c42bb500f8e4487e2e748de388df27036ac6c637cb27ea068e8c301ee38c1f029e259dec7f681ed1cce412d4d465eff1110893196ef28cbb5ee94fd2c9cbc8ffbc2b8283830d3c37938ced91a4d6ed638a26c2848b3d304618ae3daf6ae1e64d579f3d8ca36cd2d02d5b3c949ad621fd1ef88a438de3a99d24f515e6b4dfafeb15c9c49351a46bd30fea491a4a2091a119accf60c2c7ebd99d68d6455dc209b9c99e744edf23d1afcc7eaedb3267752735376dc5bc426708412d8554876e9e2f73c89ce6c43141a348d63a60aa1c4eb3452ee25afd5c8f6867a1ad079810cd91fba455e529cea99be1a8081bb4649a64303e4a386df86716a3f3c87919c87f4c6ed46de2e7f45b03f04e6f607a9af8faf4e400d4c367504f9db87397d80149a53bb9b932501b6229748c52b3b112b2685a05ea34e3bd30cde7be4a53492ea4f9b2d69e996528f4c2e93ef8cd9391c60096300e72ff91828afffe783d94bf6668bf3c46fd96d33bc11bbff3c84b934cfcb57d76182b82858fbc53d6544df675772ee04585eb5590f822d55a3cd2b06846d79214be2e0aaf3b25e226a3de19f4f2aab08f82e70e617048d894672831bdb925964a4ad9497ca82852c3423b5a2622a3b567028880548452d3a29ec82eee28359aa8328c927da1ba715185b0dcb2d89d0eae0af204fa69d1b838e1c495412dd05686382fadccf1dbcfd3aa5cc11c5bcd97a724e890d3f7a056694ba98356b50169fd4d5ff190306dbe18ce51792c10c9ac04d85b09ca01e166fbc0f6d03bae1bf126807a4977781dea7f5218e768f98fb31fdfec90c7f3c424244934b7f28900bc04dde06fac9bf72db68b6f9da963f38c7f98ba692148f32dc44d7dc1f5103e6ea74a770a9ed8809f161567c8807c3ab9da81b1c862e4c832027ed35a98d520d94bd0f530b65eb7261e8961ca1ff75815d2fc6a7839ed0c1c417522a1d86b824e80ac0b1183955aadebee4ffa1c21c62e845424f025a120667a092a7647fd8e36838f09a14e0526a054d3cfb0dc7fdffd4eef3dcfa78abc2e949555963217b9549240cff113775c718a0ea48b4ef78b635c71c50c560e9d7bc42dce71c72a58adb2af34a6d4d8179738c611d426f948783e608263131232ab0b6862ceabcd4c76226a0e76f349232158b7caad745a37535ac5c332a284439a87992e39f7a1d8b3ba8b746df22d1ab79d03cb984d9ed7323041c358e98876226fafc8b22f5d327784f94a6b04b3e504f7bc5023f4184ae9a730277b24ff149912e0a5eb9d5173ded9c29b74ad4e74aa93e2b4f7a2d9c76fc8516f34cbc286ac916f65fc7a6052e99e0c92decb15100a7b31c00b9e84beacdff92550420c1d9a20335aa343b09b2656011e051edc1366739ad3211a4570df2a039970d4cbd9f6a7e8a45bfec981d14b7793df28004b805aaed9cb47405137338d6c3dde60457578471645bd0c96a83108436305cfd23ca4fb20ed679a6fe682aae109e34b70e65d4b00f419113d60622227ccf54f25cc7824288723a48c76ff2125454dbcf38f629285c5c95fc87883a7983a1cc1c356f0c215cecad34b7099cb08f7736a0fa93ea5fcaf77e307976a89a18b139ca10fb9124122e4b6a021f407a47742f2590188ab8a4702b5818159c785bd8dcd25d0ff49601fc5352e412b07b0144eb976062331b426708fdd6797a2c1c4d19cc57c6710fc2bbcd895b6a3c6d7f0f0a1c5f500f34db2251b429456490bffcb68312fba1e4fbeb58692ef2a282d84dbe9a1284f9695b0dfd5431f996260c0c2c04398386c6ed67d07074487e74e08284f7ea1ffe06e74ba55ab1db42d3537d664c72d29625f4a600045b04cab0ad1290451db001872b0fce2b3c19040b4f8cc6b3c4775ee61222fba87abdfef06e87c3aceb1121cecdc0a1bf689a1cd63fd5658c8aa7b83f2cb2dcc53e004e9b2447c2911417ec8972cd29168b9965ad5c94622301456825aaaa0e17ad1ab4e540d5e6ac1b49cde24368db15e3a49613ca9b0c2a206b56ecb57bb2d7327cca9c16d858a70157b308ace2dd81a958c067e02c3b60c538bf571b70c063b02ebf938a450092b514932d71cb313aff604ea3915c1492dfa326a7de2e450107a0a3370dd8a3b179a00ee9562cecb259cd8cbcb45e4cb69adf8e5f183c77675f993d5b89fc84b0205f5eab25ebfad73d6cfa43800c1f2f4e5689e3cf43eb6b243e4e40fd93e49b7b7642d168b707227f9f492c4315a5e8000f8ecba13aedd1a09aa0eb8c8144f3261eb447019b56e2377e1130aeedd05be20e41aabe0fb17bc36a3b010436a57d961e4edf73bda76ff2f56101a0902bb948743939a77dcb00cdd1a6829f12a4c3ccd4cb6b1255467a65d5d4587a0a191e32b8fd14ce6f195c434d34e8f87a5a63e3641c831a43abe31595bb94ca1b75e67efe5b40e7a3747ca9f08a173063c5c51f9aab83bf47592d4cc522b066341c3be6c9397cfd93742775e0d521dac9b9745c23edccd4119da54bcbf0b2cbd4b6fc5aac4e8bdb50b836a6ccc1cb1312ba31b59c96e530fbc41b37b704e6faef9901de29baf666919bf399d421bfdf78b8cd4de3842a53ad61d1a3a78bd2e37be52e6a316bb0e712da2be6db952d748685173502582852af6ee1ae2cdcb14b4f7fe1fbde1c063e202cc8db920a9ba925aa09a43483b9a7ae27934964cf9322b3678e8921bca246e0e8045d5ada02703624c4414e48e2fce239ee2d5423c58ea61c96142652ce051c000bcefd2ee4b450447f1a8338f5132cfe4a2770c2d2e1f4d0b73b8500733c2768e36e3a28c6505c9317c88f87a95ec7a19b7af0d1384410d7055bd1a3693c58344590e22890040b8548db9f68a4febbca7ca4f4c991e7e4f2a9179463c92056212055e590594ab94e85b4593aad7b5328c97fd5562a6929fd70c407b17474e52f6a73f61263328c2da9772516e6878ff752bb1feca67b2c944cd296c07ca20f61a7d9406ec8cca1485b421f8a0ff3202b116af87246d530605d625bd0f58494a2f9721e0d710820f62803999257c16ac60ddcff386f88a0deb3da40c771b74f9eb2ce31fea800fa85ef05179709f170968baab63767bd0e35c77c1a098bafc317d4e41b600c789b4c3ec55afe859e963469d3b81ece8fd59d7fa113f1736fafde58e69c8c3edc8021f68a47441c19e37ad97a4c2e10e4107fdfbb08b81964c6b7ef33eccb70c15bdc8866f183695144dc2b02329d91b0755e3b6b12fad38d1b1926dc738242498e825126e042b8e31c3d462bc34312f5d0ede9cb41e65ab2f49500e9e763cd50221fdd2236b61d0a97448d4726b028f937b0c40ceec5fbff91c81c57ce95c7f1122bea9087001e5a59afee0f22e23ef460392a608a02a6590f7549023a4902453bbab424ac73916f676173bd4be6df0920eb813c147d21eb05558576cb2d93598b605c4453a8f9ee87f499e02a4ec76d00235169e2e97869ae75bc8c54084ee65a9319d0bea218e6ef31baf4303164c19701650ea9ddf3a5e0910d02dd0ae5ac1920b5960236ff0fb25b095391d990a9b3b8b7339868511e8a1c921a9f227226ac05a6ec5729e37c996ae31647f8079fe80506640b4a7ab3bee823794bf98a69b3174f0cd59f1f0b8e2f619bbb409989430aadbb5185ccda568c250d3a90b52317afcd741c3b56fe85c3b9f0bc928ca680b857aa18b459bf399a031a0f41204d8e1b542004481708cbe905d22ebfad7afad1fa7ce8ab3e15f824611dffaff4e8944b588b1f54424ee134f119488edbece0425d5cf092a41926b11375896d95225b473bebd2fcd49d4aaaf4e4038e621ea02ce54f4bce4f165ecbf7a08c361481ad93276ea01b02504f3fc257b01fff0d0f9a0f5a5c8cbfc0ac96cc0f9001aec43d0d281ff3dc08a5f5f4648bcb88b999c97f428d042b42506f43923eed214410ae53f087a31787bbcbb6dcd8ca0869c11ba4b9873cd190f32367ab5593950dd4d60e3c4b65fc2ead2792029fe244755c442bac27a7ad75aa60ef6dc0e7b9e7d574f14ab74cb027eba908958039c8584af18d404ce7259af82c503bd32feb43a73488ae1ca2490d86158d52fc48231b8650c6eaad162a77ba1c1793df8becd8bcf9f36d9f059937c133976e67e9347fc346863d548fa9360192324e07cd91344b90a90f00e1d1fa2c50a2c4841526bd9efc722b717016dc2515dd83183214464a8e971adbe4a83286db70f4112df93a96b7989054980a014d3c3db8c02b38210243def567940e4c189dab50138585a2d13bd37d6d1e2a176e2577d8e010bbc4ec1cd49018f0f821e8896922e00f49cccefa9fa4f8af615239fdcae30c6ac301d021978e8a0a84d377cd5f56747075fbb0c28e35603a21fa9ebf0c2037c881915cdd2f0163b89b05bfc68aa70f013b73247a25ae8673525403d593a8f22db2614252d741245591ece5b444c9e9d848d39af369d9de47ee01a22234d80cd3044bfc51cb42745f4983f3e6835bfb9eaf09a9094e81204ef587967c89151774330c4c0bb0e13b3b4685d9297e63e8ff2ab0410a721f45f4f9a91c238eb9bdf109c6738a3784821138c7bba672ee68bde9419324a9a7bafa4c79658a14c64bae5f68d58b8d72d2b57520472590a48e704ebf0112faa98534365f47e3df040ec76b81f36af1872b463b56f423c9ee632e9e9b66f2549f5602cb95ece6b05723bd16c1a639b8ade8e757d6cb5bb804c6051c8482606ff2b3330a9ce4a48ba4efafba0a7958cf4eb25e5bf47ce7eba5cb40721af6be55eaa3297b880176622492be85ed029f060eb19ae0af5db79574428b93ce442dade1f8d2b4bc5e77a21624f57b0f99218bf135ed764b6a1faac25ef677568c1af3ee730af90ff491e5655eb4790919cefac82f1771cfd20315c5ee5f154e122181d3f958b964097c315939b762f9bfcbe8d2c1cd8003b1c35354daf29925ef4dd84c0d928d2f4b0b7326c72c18e8959193e5b9a4e2067eea66f20b4a530c8544ea31c7087244df3e610aaf27d0bf150f1e60a6fe280191473e8c9b102db9b09157e65e8e5243d9a72467d806a1807f3fdc4584e1482b90f17775e2531308d5f5b1b506e4acc67abce3f6bdd3c773252b8f00fd918396e8e2eb616eb909c6b61dfe84234f4dceb1b32eb3a3cd858d6f9ca71dd6ef8fc2004422ad6fb4371a2740b403cd54e3ac3a5590b7a3e8e56a15b6eddea81d4e5506a1910e6303f0af217b6da2e6d37df1307344eb0de69403ec1fa9f7121e9ff5fa7d8a70c343a479639c1c92be3f3fc6babbb8a095e41485c2fb8bdc989b61a20318c542ae64d62ca9bb811c145fd4ca527546be41e34470a758255fa8f562e9bc9284e07a3273069c8c245f66fa279a52cda802dc3f9ab5bc91c55b53f58863c702955efcdec799fbb44f7f3f1a9991bc895d38bdad836297097b72dee01afbc730b420bf6a9dbfced12c7ac5709783e28f305866633925d597132bb7b20a3660ffabe1b044c08d14794f1ebf01490a60af4c3b8107f57b82aa02f219e2f889e78a0d36fa6322060451d9e78d0b67a20d91a2ad82792c7291ebc416464f1d41a262b5b5385b652c6ce02798e4e335d73928fe405accf2997391a1a343798fa02a9e4dea761510cc8b89e7896cd650620f4b4ce2b4f0803ce8d19c80f838317160e2a10a419fa3e2ba29092c5e72a0edeb0cb3ea3860a3771f04497964a2ccb1676602942a703a8132bc50ff499fb06b1ea803501a8611f27743ae260a45ed9c78612c41f057ecf448e0f5010686aa86d24f481d299e056ac808b38011301b2ea401e39103c116b7600140ce8ad236ba48dbedadf5cd99ded088c4e831ef0c755c35b04fc627088849696d665bf0ab97216f8cc015dc271eb9bdd01a3106e10db0e1d4de8d5f07847bc9e8c24c660660131c6cf7b7109bbcd2b3d69cbe97ec4f3ffe1889ca478de0703c51bd4cae76d3b79f41adc48506441ad70286e62a4a0b091e2ffc41d4f74513a85e087e0b7859ed079e287182305821e274393c722799c88c30b5524c70939c1851341628cb91b8199c36112e6d227e1e187a07724044d33fc793cde0d69e28c6dd4c428869a984dc418d3248e249a701141b923619a8c628c4d8ee0f2ffd7453cdf719eef424c7698a82c21c312319620515206254850728290922d94bce47021678b1c2c84c3471c424a2a04bf0dc8f7a094d4ca9bbe50454a2f94a7ef777ee5412e7715b93d6101f348725c7ecef35aa8d2b6ffa3a81dbe640175f2a9cb275dfaaf64f24e2cf9d32c2b9a8a0459f87739cca310143da73398c48e247024f94092200fc8c20366f0009d07f4f000d0cd1e3764dc5ce006099b2dd8e4c066276463d9c4182952cc8cf4ba6eb3912de0138d77262e87a06946c4f39da8f3b2acb391e0275ba4a4f6e8c469a22e6f91265ba4cc925026d9d3f1cf2dd4e3c8ef4b1e0b97f7166e1f38235ba8cf63e15d8d18a19a2f54b36b52a821385238a2289999bc53111846fde8890cbd2e3b7942fe08890a42483892061c59c2910d1c19454a0b3defd324b8692a52fec7f292e7bbed2bad68349a8a0904b7cc711bc5ff3f22da117be447a4726c6c92c893d65d96a17e6b998ddc801b71c2080e31521ec904825986383a64d1249873cf909e8ca43bd2939150a42d045f7ec97bf2793ce17792e7bb494daaee48af4652bc63793dc201394ed364d6be1ce60dd4c067017bf79ee7ef49de8ed14c5e1352d3341901295f5e5c729867248b647971e9dce3b890b6114e2923799d2c444a29a990f2b9ad44f2b6d7699a36440e2129af44ca3d1f6e9d4982a770e39b498a8d660bbbff9d8d8329fd1b79cec47fb4717496f0fc33e01396c0894fb67704049fec0d6ea4fffefff51ce6192ba298a123c69897cc90417dc29952fc7e47da3163a9ed0b65e76d75c8ecf1b9820c1a331f2884648aecc8e81023c549604d8c1187622610f3444c91f8313f320982b90483468c320ba2f3b68f815981cc42305a08c609cc8c947c912f413059a20e9905f12931b4841a325b0204fb97bc803d5e0c98953881123c529ae3bc8f44f2c2fcd28317315e8e08d943880a8484421ae05207a5691328e29f35964a8f9037f943506703b515b0cb5ca994a517cab0cb3c1e9726efb433ffd726efe48db26e317927d93bea3f8a74ea3c6e7ab024f9bbb804e9429010042992e991d520ab40760446077605a683158994a6498efbe799e471dad665c9922349a6fd6d5b725c7e62a3c9c81519159b07734c9665992673e9a4411549e974db973bef93e0d669a8956e53919a26b3b0cbe1a9cb6096bcc332c05d600a84f00917c10688915a5101b38826cb7224121a13d942adc4ccc8ef6c640b05f2fc5f0bb542556c640b250a3d2f09df765e24a240fe20c7e5e8058d29c698b509e4f90e145d4bdc3c2e1b31c69b45bcb93f5021ab8e182d33628cd12a92e5496b96ccc3aa41fdee6c16d1368931da1fa1aa0a31566a54239eafa994a87550272dc1cc53d7081f877f92f0716acae785281b31d31ed30c0d9d21fa2346aacb993ee0e91b7f7971d9bfe4e5e5e525cb72384d96e5709a2488a0ba40e580da289748b5a0116ae909b1a081258d100b172c36c4a203124538420da12374708402568c105ab9620526a4c2478c544805472503b2851090378080408030e208469c4246185144198a88236a2be016865be7b610a4a17e776f92e2b930dc38d93d16d28f4230cbff24e86d4c488affe7753a5bfe3c49859fd7fbb784e06bfe81262eeffc270915212444c41d440021cacfeb1b119d88192274f0463c32878608121aa20721a810820a020a417811849350103884e418a41821594508e630f3eeb95003cad08037420de869c04c6ef9240c5883011060000e2dc08bd002741630240404198020230444144008800031a4803e1450044db650ffe49f1c016e9f2715d04448013109104302bc0825008b50026c080179501a87b1e1b2f43ac937b097fef35464f83821041841c08f1f9010fac10c8affef6d92fcf4a103f0113a0019a1039c4207181d201432401d1104f27dc76300cc072d847c28810f38211f52423dc411ea618d500f2c08f5a0c518a9ee75cf65d06b0912e24109211ebc08f1a0f1c0c28310a11d8810daa1053b6060079a1d7e8891d25a60a89510cc5b450669c942a12b424d422ba19430a4a8e08aa1142ec62b840a60835001465080985001061022c0144204e0224480d28aca933c50046e94fc5168929a46f27034d9694403f02234802e34801923d5d2795d488730423a50a175a009e90013ca218f500e3508e5d0450e301a48d2648bd6912412b27b0dd2c84c3bbd11eaf44fa8cf13420816982e73f96db9dbfe7b92a97b700b72d254691b814ff236da9b4ee77d4c66bc1afe6149c9c788125d44fe342f92059b5c405108004528190280fc27fc6fa8e3bf0c24866e5023523334b22674c328468ab4491048b8490f942cbfb371464237846c40810d271b5e4236fc1042912384224608a589108a6491dd0349de7e1d3e4869e0e99f848f1302551163548921504e088480d0278fd0a78bd0070c7d1a108a6fc41895c45004435126a4653c033fdc3e267a46b6682c1a787a2361cfd7689245eb3619c8f327d133b2855a5101f9263afd932c034f6f24cb7242d0db124652e0974edd2665640b35027308ced04879e2c2fddfb6c2e52e3f4905043243235f6f616792e1fedeff7b8ecb7b055439fd93d33f41426a5ad6449da781e1ebc8904652a3fde507e5e9cbdda679783e0f9461e99ffc0eb837f0f44f4020ffa064e26da3cfdb1bc9ebbcfd52a7db4edcf75c5260f7bcef8666098c57737a231c3cbd1124966023c634f810a3fcd0fbc08feabc2deac3491f32bcdb9ee080303711c7c4bf531263c4020d258860c7e37546bc90e47dfdf34e5ca9848622110d3f9c218e18f919c0883c5f7386f00c2a14ff5308c29ce1478c5530c3193146be89cc9045fcccd0a4c50c33463ee6588151e1838bb861f818c5c8070c1f92e26f0279cac0478c3192f287a4321c21461e1c22fcffe364a8235264502393410a3230600c6f802d9d7bb0a5f3bafc75f27b256328c5530ec14df69d6de7338132f4ba31c81823f5797b54816f32678f3390ec518a3186403af03dbe874a947af001c61123a5071931ced0483d281066aec7125e8d1e3ee064d9cbdec21c66598e0ba7c9b29c2ccb09031e61088391307cf278421e5ee4d1f3400018de8894e68d785a7ed324cf0919825e491a21ffbb9141346fc413a33f4627771989fc51f8a36d224950f3463c49c080040c40c448855f287d41c9178af8c20f3ce8c0430378607884f0c8c10b6a78410c2f18f1824a8c51cb9a6cd1844850932dda0a48b5484a450a915b932d599648c8924442ee3c92e176ca3ca5adcb24d0c4bbcc23bbbc4dde29dca44eb7997a89fb11cd4cf764963377b4710704eeb8b943665af799b448932dd48a8a9449ec90811d243b4476fc98a30b64c4d136793939c83fc93014f879bd0e3662a47e6763a9e30717b0c0051a70c1e3c2dcc215b6c0468c9102bb8d1476db16445b08b2851f3c79d49974b2e4f1384e0b56fcd7b500cac2199f271f0b76602108588800168060215ec1095770c115b8a869523b65d2f7251328c13cf2bc4eb268afc97fb2719d124af3b6159260850858a1a60a65a8c209aa60a40a4450218f18294db6506153418838a6e0c61476a64004c7650e2aa1b4eec948c10252a0a460041d48a083c78a2974c444010c2588824c141800053ea08006143628b8c4182919440b41ef4606f91b9981cf3d24e126ff49feef490ea9d0a4b71307caff4edcc6bb7cd21c0c37fd5cbefe4c9e1776deef78489ea00635871e73ac31c736871173f8e004203841064e70e2841f4db041134ed0841cfe60b8b304b7cf236d5ec7e375ff4ff2c2cf9325930c9fe479a5cf5422799f167e1e8fd434196613d80da1f8494b2b30010d2680c1842af84b2f945f7e8e093ec8c1871c2490c32487ca12f28891d2bc118f265b7867fa4c5d82dbcc12ae250880064ab880129048821a924046125090049b2fc038fa8891f2a4967d9a0cc1fc9c0c33cfdff75d7e5bd83d0df57da7b3819becf27fa7f0cba5161e070694c441448c14297f8ee65d66f9902042c210241c71843e2275e27e677b52c6a9a9f9cee3b20cfba983a148de115c8ee0430f8c0003233031820a158a308222401123a591f2872090278d767ed93d994f5ed86d21683ae9ffaf4b5e9299d39b0e11dc20c21444003204398630c6102e308424e03083919802470ce0e022c64869e1e3845b673269f2a42575e278f7dbd749b9d3640be585f2d4652fec366da57b8e424276cf514fca9d8a3c02092dcb9c89f4799d7fdedef9cb44288d6fda8fc23794f046176f68f186cb1bd60a42d88010b0206821082308824c107e08831b6fb881023722e086e646a6add050d324186ea4211468fa42b0db92e0ff79bde765f7536c528e421eefd369f91e3449cefbc2cedb20f79f276786c82eab689acc323479a62fd43cd96964983d4ecb0f7328474c64a669b2e5c152e6388fc7e35e4bfedbc44120bf9347a78ef411e93612873181204dc7632379bed3640bdf7e7f1e118d82a1a1b8fca8f014f3fd4d085226ef24bd5052fcb74ceadedec0ac25f56da310942c3334f249086aa79d65391aefbcfd3872232229504a1eef8857d3fd14de47e441251d0d087e176e4c788ef1be77a2db90f01cd329f96d06f46abacf14c33993c7e4f303214888317edd46e2f93b71a59209ec369208dc402ebfb87c22707b52ee384f934e20c865d2b69f238149c2b92f829365bfbb0f3d2f094f4ef2ffe93cdff9ebdfebf4feded6f9ee3d997f225e0e132e833146207850450f527a10798005e9c9801fc53b130f9ae08115c1ffe497bc2df393fc4c70b26cff12fe9948546343839364c812d110266092d8e4e08844598cf18718a3ca1031881db0c428e2f2f662e462ec40063e4a88f19384183f71c4f841428c9f23c4141da891a203338c10e3a708427450e486fb9d3f52f27282ace1853590b0860e22f8512da088b47bb2acf348246f8bc0efb72feb16d2ee59a38a18bd1909ca246b5c6bdc358058a38728fa9ee35d1e89929019ff24401357fa4c9225c6c8851cb0e17ddf4b2107447290e540c6f879dd2622ed9e2c23ed1e1c88010746887145c4659979239e177d1e0e4a110733839907072931c6a8861c306a9820c698c51435788c5478d29cc3700ec37f0e1048b7dde08c1b64117b64e71e949c677903fc79927f9893061f11270d325ee7b96d67fb4a1f662e6ff065d2e8d2788931ec3c2f64e1b81e2f86e3f2bed4f4f292e3d26d46602ec2715926cb726cb000349e80461694570333e214343002153458990114628c4bc4941978310326ced8e38c219c119ea173860f32a823c6186a9b14853dafc9164db6dc482a97bcf0d3648bd76da70e464a19c4c4008f18b071c41130471c2129fe9dc765df78bc9164d13479d25ec6440d4d4d1218261c178303c0e008305841a49ed3b9f340edfb4e89193330e389192b2fd0c20bc078c19017d81023e575608ed132d5796106b5d23602b9ffb6ed816096524bb00574019032be50c61b658437c49432bc3280284307326c40462643a60579b4008c1654a0053163ec1123953add86446636333639ddf6955858c00ddc348ddb3211cafb7e0aee6ddf974e599b9a7cd01482260898bc93044df23f2026efd42991d48aa63d29832cd9a4b369529699a6c9164a6f3dcf752ffc9dd26b2eff8ed7e3b5689acc12a4b4d2737acbdd261fdc783eecf2974d3a23f0bf2eb3ec787209678c98316e60810e58c05980638cd47799479e7e142700401a21c8a51021727f2091295f6ce8c11a7e88cfbd4e0d598851666f0505a86c112247d4ebf007812135a870af6b22874606e6064646bac81efe803474017ed4e90bbb4fa2944949fc7fa106e1c4187f24e9a30231caeca5d22c9b3b7509cdb2b933648f18e712baa453c2ff65c505f480fa7925efeb9490b652fe72b26ce6bf2f1223e84682361f6eddd67f2646500db73141d26d380e86731b93184147c01841463a538f11e4004e132388c6c9a5d8898d1154c43211718c202297d6ea94bf0f467b5c0cd86d4648bbc9e77ddf10feddd69f774a783cae7f61a784e34c44788ef929369c9e8c041c12e3a70df09f884eb7d57835cfe91c7a359cf38a0c7971d9bf84b47b38ce54439bd4265513dbc46a729b5c4d70131084810937cc10229d57f3e17fbbf36470a5266c7232abbd2627b5720068a656dc5e90cce99fc4088a99f5f4a737c2b96d24038209bf5c8a11b4c4760a372e7f26ee26fcf2cd897b31bf376f0988e4231282f98f843024af7b4ef2ba9b2e8f72fef390d4cac4694edc8b09b74ec9ef70796fdd687fceef6c3a7f84cbdbdeb8c9019ca6e6d4c1c40852229332683282536343932353a3c401a2263048443be8514341d3144261d840e42fc5141b18e61168fa0d8480ac912d4f7a1e993bf7a0269a2f202137708931fe00058931ea0ce73baf266707795400fca87c13636c8012316261444c944016038813a0014358130618212fc0018c8ec084be501363ee3619a4ca2264f7dc94428290dd73572841080f2e9ed37aeb70e001071e4c24cda978e1f9ee06323e1353b465ff0ec76512e80519a3c80b36c41845fffd8e3c62f47a77c71c31461ddc01468c113cfd139115f1fb279fc723ba637413c13b6c04ef0022c63b6c8876ec61071d40b0030d3bc4883d76f4c418b928f438d08e23517a618e01258bcbe711e1741600dfbc25599665a2ee39df46a2ad94452510e49bb7c4241265d9e77d5feef24106884a94cc90761319d26ed233247f2698fc9960704adb08ecbccdeb1d4d8c20ecc26204e11841d78d1164816c1523a882a88c4c07002ad818a31531c60f1556f426c40b03164060478cf143460acab8e1618d3794f8c013365c64200c1dc4183f5adcd18095ef069717c41841478628a1052d8068518618238a0f5bc4f1051274a10325c41801e08508f8f8c891a9618918e3270b63f040157d90000b578cd1862f341c4a30220204a81063fcc8a1ab1b5070400a29c4f8b24b25182f27fb307f9b080966993f138c0b787a23282d53f082f4051344a4508518e345a9d9127adeb786186394c228c638a94aa9d9d2f1789f1e81792485192947602e32041d44e889213a66c02446fb43197eb224837ca6fe5ce60d6ea4d2bf918f498c3b7801688c1330f122823ee0715bf6846fd291b2e4794c0220004aca3013098000a8dc75c9e5535e899ff8b9891f2c7eccf0e121463b6274c2139af4bc170e61821461443ae62842a4b6f46a2c27c411c30ddcc20c8261f7deb7331249f5641211d245aef46412114948a1c26dbf6512528af881f1c212116443196e90827683ce0d5b503a9df7f1c8b07b1e4981da048e7697bf981b84b0953a7fd06443cb8a8a08dc8228411342d06d5ce77530f163448c18d8f21706f1a42699be2db304bdb0db44fc896542179f9af8794288af24e5497fba00d91092e38d1841334650123182a818412d31825862480e2b4272f4808e40126391253411638c598ca09518412a31c61f2020e047ede75e47caff85e0f685f9e351021f5166a5fcf1482f7c90114580888835430811846c00880151441bd0026e40408014f0c38d5012e411b294b788739e142244aea894f23649f15cb47f270990f3760862911899d80134f3b9417c8208df3744935d5e5129e58fa73365598c1f3886f0039400100202a004f4438ca003b4808c1c5880049ebd719d7b500a71917c23c50832c019201f6250630cffc9de42d29639999e124cf838451e078777bfc19fc9cfc9bc803d9954f2bc1afa795b4f26754af8ef6c3aff3dd4df79a290cba39329a6c8873443b26cee7ce9148a443d99f479e18b4b8f179365fc7b3c9d6521e891446116f14df4f2b2a2b249de47843fe8713249ba2fd9c8f07c4d89f415f9bed7b9e342da4db28cee9076132eca32d2ee9909c17c441322447ea68d12c48aca134f046ed40a28ab5811491650c5882a248be8a445220a050073c051871c709811634c028a030e2a463bcc249e1f8e9437e8786305313a8142869c09343d0105f546166f14894ea0904f404109a18e9e238433628c516729040cc408c3bfbcc16d06864810d8c809020a8270133bd3076e3a5fe6a4f6381d84941829bed5b8a146c88d518c91db463c12c68d1f110cc1923c71405023c6cef4fd9603042d22e5d53cf76e7e40861fc4e00753fca0c90f7ef8a08e483dc9db2c1c86d29c745b93cf90368010613c2640afe613233d9d4f1095366e8c7186ca32ed094de34cf9358ca4bef366a47c8f87e209ffc4715ba8848792e09620ff9d0c4ade659e3d4e7bf279a404330fe88df22775bacd0b75961ec8e59085e51bedfcf949dc870ffef63de947a5a736d2163ad1b42740fe791d8da438d0931d8c544276def66d5fe844d39e90df72eabc4dca4cbeb779c0df4e86ccd8c8649988e39ee709274fb0703fca2d9e0ef83b9b0e8ca43c9073bf75169e69246873738ad946de77a3b3c5785e0e4ce8d5845e8d57f302500fa01d6204856204a5c4082a408c2002c4081a408c201d6204e5102348003182021023e8478c201c6204010064438c20941841a018419fcf1a62fca821c64f1a62fcf411e3070d317ece10e3c70c317ef888f15386cf1862fcec11e3478f183f6288f11386186d889f12d8000734b210b50fa05103992ccb322cba37014d8bb1480d8a10a92e530331e208cc2ed8974412fb035b68c082188350421385af43fd13a176b68fcb1bc9eb4e9c57a240b0b46d5c8994354d9648262d753c1c4995b6d00337ae54ca4156909041e41172a5b47d176d2a52882c6da1287c2ec84a690b553697b748883c85cf259184640941d3a7699aa458564a5ba8225b4edc97b98dd499be96b0cb5bd364969da753dac21c6aefbf8b34f95c6947d33c214a5bf86d3b42c80f4d32db68e1c699483032c60824469005248045ecc924de793a064bf0ced372c3400d1898602023a581dd86442b791f18769e9c3143086650c08c1923a569d20b358dd32b5ae577f26825ab502fd823c6cf5391a1177c3146510cbd8007172021c648e9ef75f8cb30c350ff9974b62ec14d671b75a60fdc54bcded1700e53c3f33520cfd7b8a0880b64945d76414e197594a1468c657411412565f494a17d193646fea1d77d88901147ecc92432cc88f20344029d0c97083ef93269b4bbd7b2337d3208d8939164598e7c91e0264f9a04bb2c29275a4f46a23df19c02f31149812b2ca75085650343af26f46a501c20cab2100bb4a03bd20b4d5c923eaf7f5fe2f98e0540c448016159810b5650b3021b62a4347eca244f87ea543003156815d81865429397c4a6389209fc24296842280556c49217822878020ab2400115e30b62e0408c2e22a5c9168eb49b943249669a265b90c83401c5a84ec0478c91c7d00942a06d2492b7ff339dc00813ecc0041c4861bcaf94fbf73c1e2761a8d1ce25d0043f4261882114c60662d4bc5072ce0b79182b61e81002430c31c68f213038a05139cc339ae9db78bed3644b92ff3eec59eae4d20b182a31c62fe24022d324f4c519f18b1e4a82322729223b982fb42f96004d540c7df123464acace8b2cc418a9279e0cbbc709bbc7c931dc968978c1458c91e7182f7a628c5ecc1b2f7ec831250003157a1d129926dd064a70939f47811ec8c1484ad3404d9379db91fc4fa50cf2df1b297727ee815a865be6919ce769aa25ff280c2225055a95655daf933cdea723c137914c4c24a5695de6b2490a8f27941eefba770a4ba41f25c1693a6f833761d6f94f47274b49491c2f87b49bf01c93631420821e624409825204ca0e2100021299262d37a025c800810f92778c36ec20019810e0182308cc10299d6ee3365052537859b67f27cb78088a4ae07fdea6018115203812637402050884f8001df10332f800e8040ac959ba21433c50478c37881e28c2030ce0e2095cc4808b1670a17161c41664d842093632d338059a349969d42993341c0a7c9d5cda91a20a2cc4185f384d690ba96e5be2dd7821e7bce719ed70e301e5f384e1f6f17cb9db641eedbc7fe77b1cf9fdd66d4029382024c620f89723daf14aa29e4ce2f96b8ad49d2c0bc10dfcfee6c90ec17ca4db84dd93403073320fc8014bf9cb799d7c93c33ca3c51c320b4d9e1668c418b5a822ca4c8b9ca805057e544803270df0c8a2012234f0c9401c313a814266208c18238544a6091110fca8efc352e6590486b2a040dc220b95204edff65944eab1a88302b1602384c58685b661016e20b861911263943cdf6160093794c6e3759a4625125acb287c2e396edbf979e4939d2528c3079918e96c453c2f8773ce068e18a39398824426c6f852a4f336d0c4ed8e86f421cd736e84ac50811517b0a21493b06226c6a892d287197d74a08f9e0be8118fe46d094ef747408e83e1f16a606cc0d31be1e00d4dad94807974e37138bbc9f76197779efb24327ce6b927f3dc93e1f99a12693701c3ee778670bcf3624e5be6fb8d2b3d91b0e76b9e2b6d5f8e97c39f6fdff73b364c4aa419ae93c33c53227d45be679c1ce6199ebfc892d3f73bde06b7199a11988b3cf932e9fb3033796e774ac2c7e1db0c58520286603e02cec084603e42012062d4e3538034443e3e02084d60831fe575317ee688f1e3041d9a10e3870972701192c00a62043f107c11effec9ce5af4db17c6334840a3c02d7f335da4208c1835b0e50008a0f33c508299779d0703e24103794011ffee491e922ccbe1f13a2ac0a0620354d829eaa8c1142a9802670a069ce038a11163a4b4f04191fc7f92c32ce3db8c26bba72269e76d2bafb5f0713a1b4d764f456a9aa69db43ce51f957a891be1742446f0c5e5a489704239713714283b0fdc4c1e4bfe4c30f2f38848ea495bc8e90dec1e9419dc9e7cde83de68cbcfe43521a92f974ad9c4bdaf248f3822f37c8ca44025c2d709f13c8f4b8c43c8304b9d6ecb32d8e123eebc1177ccd8c922ca8c45662793ce3230ecbed3e93650c94e4ead62d4a0d8f921468fc331dd5103c2e8749b4eb799b2e8bc2779a0a9894925c2847d44aa33e9f07c4dd8e37530218e14f7bb03eb88310601b98836a0162970e53f8fa4224f5d0665e8ab23f27cffba384916afe6d3be9418b50c817432478a3a22f579b24a7146e4a468927960a450a172985f725c4c52e492cdcb8b8b67c45b40170745ba01e923dd902c89871049009c13381c709aa34fe88831b6b468b285b7741e0456362b3061db6273d982d87c183961948211384242070a3a5ae834d199d1194057a3eb5007e299f062fc114e061e05ae05bf21beb2a1b0b7d87b17a1e3887145d364df5424c8e20446e609c9228fd8c2ef1bf7792ca40fb7ac85d25a281349d2cc26099a151c8984c4d1f138151b4d45e23cd7d2e384132a365af78c905cf64a9a264f7a5372147a5ab2b080602eb5749e12d942692b1c972512124763f9bc0ddc6c24a5514d9eb88f4553c2bbac22b72edcd9ee3ca9811acba6c98ca2a86cd164f772dfb20ea28fd03964373209b2295bda16b40fc4182568e26e64cb775e8d8c99912d948ce45d764222219d50b1a1feb9bcb399a4a04a9b37e2912b2a12147d3f0a5b327f1289a62723a140196ea51516158984b49aa4be0f339765f7252fa706f46a789e88e7e57ccf3f9b6e139a6cc0df3e2f11f84c016bacaa30fed9ba17563795c0470a56bf305eb16abfddfb273de51bd3870e8db165fd55a9b6f69d1875f28902c5d6735b5d9c35e7b6da50b02cbe70d5d755e9acf6d2a029cce1a78bcf132ccbb16adf5a3bc63e735c3a39eed95af5c2f4bdd309f6ff2b9da9bd305eddcb1a6519976d3e4db0f4c5185b18bfb0b678dea3974f545dfa8709badecab1d617d5dc5ad67ee4a86ed5ef578aaf6e696df528cbb22ce6b3044e67b5dee257b5ebd3c79ab810f928a1d65ca7b53496af0b671d8aba21fd9348f149c2be16c6b9ae184fcb697f172fec68b21b97ee1347ce7d57754ecbda17d77ec5f82001db17b374edb8dafbbaea3c82c56bfd8b62da5ebaf6498dd035ce78de8ed57ae5b9ab107c8aa02d8bdb6a7bc5dfca773f11a66531bcb59e94df5d596b08bcf6c7aecab230bc2d6be6519681db169af0078e59f5abcf7a2fac5bba6eac8bcf1b955e5eddea6e8bf3dc79cdc047086fb5d67af73aeb4535c796b01871c932097c8260dd0aff65e1aaf563d3c2dcc016affb6d652dfc98531c810f101e4f8bede4dca2f3ba98d6b01471d9e2f3030c57d8b4b0eaaae6534daf157c7cd0e7ad16d57cff6fcc72ab8dba71a6d5d5f1dcd7d5f31a6559f7ec878d4d3756ed85359637cf5863e0d383bbbf627cceab5ad56fda2fe501d77a3eaff2c4f8a97e8bf33cade4b3838d613c6ba5ad6571be3be5c04707d45aba7fe597f5d85ab68799f479443ef05983575c556c625b6b8ecd8be500a396ee96656d6b614ab7c541dd9363acf6af9aef6eed0d7cd4c814ab6ac62e6acd7d5dbab2e273038cb3757db73c5bd8d63b5fe093c655cd3a6fd6745f7e73bd36d0d6ce1ce3986f5a654ef9078d5e5dfd74e7cba9c62e667d6ad0ad8c696c6acc66dc279e2e10f8d0e0ba2e5d37bdb85f98a6f839cd053e33989c5af5edcdd6566cd1ba93651f0c7cceb02afd135ff7e669eddbb70caa0aabd8b52e7de94531c62f39fb1383bcad5d656ab14a6f8beaba12c302a3b2e403039d27ed7beacf4fb1655dab1601753e66fcadbeffa5d79ebc5bfb386e7c5e80edca5e73da0bdbd59a177681852fafd6a517bbb0bcef8fb2ecc9a70c4cf3c9f3be15c572dd93e743c6bc2e8b5edd5af435c5166f41e7afa7de96f5ff7862d518da62b74f6bf1c5f0d5abcc82a9b17a39b555ad575f93e3b627547c56d02f4c71b53a866dafb069c38f0ab6be97575ca7ed95eed38229b8a845359ed49a3a77ace228c856adf5b23e4f6cce8b5e6258b75f393f369f5bce3f27e0955713eb7ad1ff7d656c9465a68f09aefd0adb9a72abb27d7f9f30a89d7f2de53d775ae7f60163d35e5df4f77531a6d662a32cfb6262135f9bee9a1f7bec923e5e5c6a4d5d39bdf879a7b88eb22cf4bc12f079b3be2ecd98d698e6d728cbfaa78bb9339d97a5ff9b5b98d6a32cd3f9902063acbab06e5db4d79f5ceb8cc0f64cb3adf3e7b5f5760ce41f11504ef17d9eb9e6f4fe858db28ce7ff406f9465ff0941b56d9f5d579d71a5f5e3519669f10101c5d5ea0a9bb4f37bf5ccfb27c1c0e703fa3bc6dfad8a697bf5aa1a65d9cb0b0be88a8f077435ab8bb1bf2cafdbaaf3c345efd6f5f4eff7ead279dd2db2d6d3cecf57d5b199abee40a7b75afbba9e6baa2db63e1ca015cfb9ba1c57545bdab19ccf06b6cd7c5717b69c3eb6d91a6599149f652fbf370ea726cba41872936525d2ce32293e5aec4e2ba63663b3dad7ccf3012c475cae8f06f435ada517b3b3eec7d81a655997b99be75e4d963df7ba2cd39c7e324031e6995e19b3feca58afa32ccbb2972d7279f2c9824e4df5e7ac314c53cce6222e313323301719817934e473810f16d5ca385fb3db5967c7398fb2ece5a548961561c17189f9edcbc9b22c137d985d783e18e8fbbaac7aedacb6cfab7a9697d31b1981b9088b4bcc0c922cd35c74fa3cd2933e657cae98f9568c5bd65bacf26adf519685af83c3b284c5884b2923296512fe5861e7ddf4d2f75e15debadfd17fa2e774cee1c949b26c89cf05a8c618c35cffd531abf22acbf6c70297ad73d6ead699efb5d87e2a60617ff5bc2d8c678bd6aa7e2cf0a1c0c496f75cabcf18bf2896ed357125d29633019b2bf657c5f7d4fa5ad694005639b52e2c633ae7f5d5df64d928ac11d06fd9ab69cdd8fcb96d35f27a976522d104aaa8ae6be9bfe8febbf5d5546cddaf6a621bb3f9efb4d6cb14f9ea58ae745fdb3946ed75b2ae5e314af59cd7ac1d7f9765dfe35c3dfcb238b5fee68b5d4aaf8a84e7da586575aa31dd316c5a1549d43d772a793bcb5e9ce43c51b3f33ae76cebebdabfe2550e41176aba976b7e7fdeea2febd63dca327b4da207bf5ca2a1bdb3772b4f8b6137efd971a50e00bbb66cff5c71adb762bd8fb22ccbc2c7b9be5bcd7a5dfb56fbdad575ed7325530e26c56bec5acebbded3a2d9ea92555913c3a6c69c5eb8cad8b37d636ceaaf32fd79693eeae8ae3056f599f9fc2a639422f5a9f3b61553fcd762fd238e626d6d3edfdabc7aaaad519665194ef684daaae3afcf2d4a757e6b9465150256a5b08ce1b739db6d5dd79cfca7d8409349ff910d5fd556565f6fab6b5f161ee998f473d197f2063fcb5ebe3c02878cb00babb2cef36279775db94bd5b930adbaa5ad8c2b4673555f7a388dcbeb74394996bd4e973f07748bbee67c62d5ea69ede5f471aefa779e7cce8b716a39d68f2fa516bf7a85f35537d6d7c2f2ffdb7b557a62bd6dff895d17b62e6e59eb6178bec93210275fd9b26aa7fb71e6b49a5aabacaf365b75de5eab3be928cb4e99a3a2892ddd16c7b02b3f9db5b64451b1c9af9f1856d9dcad5ded2ff53ce5e4d67adfdea9bbced7da58112830bebe764c2dae70b75895651cf77bc813d8faeba293ff57d6c4acbd8413bcaa9fbfda17bd98f6aa6ae25e98e2cb2d9b1f738ef5261776f5fbdd527da9d6940a617255fcb2f6451fa317d519bbcc2ca970752f9fd54577c71aab5589aeee674caf5e29e6b9d23a26fd3346b8cc9ccf14f36a57beafde579ea32c135d3817cb7d5a55c5b1a6bd627694652b49789efd3baf58578eab4d4759c6f2803eedb6da569eb16bd78c636eaafedc2faaaffdb6775e6daadebd7a3ae7b6b4452f5a4377b6fbea15ade6bfb59d77af04920ad376773a79656f75ed279a3982595a553d31cb9a9bdffd46aaacf1a4fcb2d5ce9677ed802a3fc7bab236c659e7ee3951cff30e8686d77dd989617b61d5356b1e65994c91cb73def94e7b359ff4ce519671f9d3f95cb298c8756a6a75c518ff6dcd6a94657c13bd9c3a982c3b759912b9fe6217c518a3d55b6bd65196bdbcbc6093cbf7218d8b4c96f1df4a59f67db819e122eab62cfbc2923784771b4f67128566eca5af69f1e695d3fe161f6599bd265148ea49c85cb85677bfd5ebb679df3aca32f0c65c159bd4ba7b5a1afbbb1f83d11bb3ee7531deab8dddbe84cdd8a5fcd257678c56b38f5e6a6592992b81db0c57226d2e59463275354a54ba71c6bd5e169673c75796bdbc4cccda93f7abb16ee56df19190a9e9bcba5fbabaa6e5b51a65d9083495449fd7454bb8eccb318b4f8a2dae56e36b94655f1eed2041f4c4e67e7eed8befbcf48eb2ec0b41d10b13c944862692112e5956afb5fffbda6b5b34cf1f6599e8a330abf67a2fe7f5a2336f0c8fb2ecc3ede319025b7aa985655e5d7cafaacaa32c2be29a96dfebb5dd96add3ca9f0e751fab35df6d3b9ed5c43a1d6599887759e4f12ccbb21718169e9ca4c62279de0f7b757afdc5e6457565d5fca32c0b3f2195a516b6a97d5dd5ebd25d8fbc2cfbddd97444b22ccbc09287d56e2bb639ce56adfc52db4759c6e59d176559b75d6a7db6eae67f6dc5cfad6a9465d5b418d5bae216565d77f77e8db22c2475d1d67dde6e4902d33b7f7d4e6b655915a3a32c13655996596ad3ffc739eb59619545eb28cbbeef5a2ceca2b8facb7b95abaf7e946520ff0745a2f075b2ec2549963dc9e35dfe46d9056421799e48e713897e20214ac011db1385a0e9138908b052840ae53f04903a841195e46dd17f22117d72ad5ada7f15c19f082afa111043f4d0245a80102a418880c8065091c7218001720142005189a60280244005012a3fb01c0088018ef061f6b0c243f8e51004b203888050f5bc2f0129471420ff970002306000e1eb20400710881ca88a00aa100150c00f0e040e3d99a4a3e3710d0080bd0bb8a1c7e309196003ae14e55a5524d2e9b6119847124462c0878a3e2fcca2b0e781883aa8210078a4f17952ee6c08001e3d20a20017dc4a5987cf153ae410dfe8420d982580e10b7878e10e3bba500717b6a0852c60e10a56a80215a620053a3e51f840e1099f25c49404f0184a03141f3e72886f8c800d98941b180b1353ac16532c0a9234c0887800acf6c494ba454ca9568829151031a50a1253aa8f29951631a572414ca9da8829551d31c506a1430f368823866c40470cd9008f18b2811962280d0384d2b831948603760889008a1812c19318124104628ca11c0670c30e392041434ca9d121a6d42420a6d41411536a928829352e31a58626a6d43089293550c4949a30a6d46020a6d47420a6d49420a5873a624a0f6188292a71c4501a33c6380002840a1072c2460c3931420c39a123869c8021869ca42186a2f8118a222586a2182286a2c03114850362288a2762280a2e86a2a022871c7ea47c81464cf9a2075f3421a67c418598f2851d31e50b31c4942fce10801f3910e0061c02d0c61231a50d9a943644296d481153daa822a6b4818198d246085490f2c510dac0418c318700f03084083134a4093134048f181a42861822f22386882820c628801b04a0030e38a6b4a1134338c4c4100e47624a1b2a88296d9820a6b4118218c2a18998d2469218c261c7942f86008036ce882969d0624a1afa017488028831650c2da6a4018ca1317662688c0cc4d0182288a131581053da282386c690410c8dd1831ea20e2957502086aec82286ae002386ae202386ae402386ae682386ae48428c51071e1290851831250b33624a166bc4942c8e1053b2b823a664e0861f3655a8c1646611001bf24d0a1f7088f12304567411800a34418102c42c8152478a45464cb1da8829161f170131c56222a6585d4cb1b28831222088e843022214318284883e37f0a2e05f2a6d5f08662430f3b8946c301263d4e9c20c8a38f0a3c01c18194e13f9d80185023664c0862c6c98800d12d801b4871840628c6a8010f05943042911669d6d277f4436e8c1f3dd0d58043a2858585e84c8951ebea984fd8f64493e9bb0ff1129a5eca0a042f6f04df43afc454f76fe9cd082316e20c148c84b7fee061d212e5224e29c871225709b099f091908a01461ce6ce55a75ce98638eeb08078508f6d238db3c2bded76bd1448232047be13bebb4545bcb31dc9da0c0612bb6d9525de96a6f8c62a32c7b4357ac631ae76bad7f016b5084c0f3c538de7bdfce6755e15196bd749420f4ef15679c3f77ec6a5e474350dca8d9ba6aaf179bd3d26b95508090f955f5ebfb55bd5c4ffe82f2838ebf669bf7d5fff2cbe987e2833d7fdf7b59135f9ce7a76d58aeb7bef69d3573aa731114362c7ebbf3ac985ed8aa3c06a50715b3bbaab6befab47b6f7e42e1416555de2bac5e6a228938ce84e442d901ce5655b1adf535f9bdbd92b61148ed50414511141de0399f735be5893dff8a8fc070cb5f0e87b2c66571c6269f97b555b7d6cc41aff7ab8b694a2b8c62f7c201adaecf16ab32cf8f59538d8d2f562fddf5b25d5b1a63941bdcdf97d2ead297ed96c67d94652f61cf101d9434f4ce1d6397d65fafcd671dbdb87c2e8062037d61abe36a635badaa2d4aa1a0d16fae6faf8ad19a3186554c506aa07f5a97c6f0d4b457b86e141a58979efa7a7bebbcf2d533b826b6faddf76e9b799dcfe3c97c1de50cacaf3db18a678ef385e12983cca9dd9ce34c37c52e6e516290ad3d31ac1fef5e050a0cb6b6d9c2d69a169d957559e1166306e717d3cfd6724c57ae31ca0b32debdfe85f55a2f4c2bebf2282ec02e8c29c6e6d5d3ba302e67d9452923e3cf17b69756ac2f2cd751969dfe89e8b3ec05858cfc1c57b69a99f78dd9aa1f41694195af8b2fbeae79edb7b87628634cdbe7ed15b5d79cf8376541b530d5b35efb5ed5b57caec076dc297ffed657d676aa025e6bb71dd78ecdae2b5ca540ff63cbe9732c5b3977cb434181bdb8f2ebafbdabe65fcd5196692862d09a316ad57aafd795ad7c9439817282fdd4e2587fb626d5ddf25196e97c4fe22826a8f0b42cae6cbf93726daf519671f94350f48433e92c93d1e93694302cbd6db6987ef576d77bc1b8f6dcd5625a57d6dabff617dbea58f7cb3e9df4c215c6a17831abdd5835b19c7bbdf87e9b2c23014a09b05ad55e3db673653b86e55196ed3c11f5fc9cc848cf7f243421c9b2ef9f7c990472014a179cd3eab2f0ad34d5b85a15096675e1e715866bc6befa1f65d9cb8ad73b1a1615365046902d8d77e693f39eeb5f2d022c5bdeb15bbd9db6639e4759a6831282cbab0ab3df2d9d1c5b7da340010186ed89ab5b5dd7ead6f71a9a907c1fd24881f201ab63fc5aebdbadbd2d4e4759a6d36d27ee851dcd11140f600cef6a65cafbeb9f181db9ec5fc27199844351b8b02e6bad5bef55f3c573e66197775e9204650b8b799e35db9bbfdacef928cb3a9e5cca281db8fc66be3536ab75dfc2f809140ecca797de16e5735beb9fbb6c205fec67d6755f9ebf62598b69599765d1de6fcdd7be540355e7f4afbfb3bec6f3ef28cb94a064a0df2a5bb7e2dc56cb77af461913942ce84fbb37fd3b31fcff00142c28ae13ebfb1dabb456d41ae51041c1c0c4d5c61a6315d5f35ab77a59c262a409942bf645315af78561f7caf5c5c9cb0a8bca131640b1e2ed755937673ef35f9dd652c974015a55b55617cfd67579fd3eca3211efb62f9d725896b01861f9d229c7a57f92cf07502cd037df6feb9dd7f63b2b3dca32d1cb0bcb0b36652459f60903a5029c7ebdaafcf65618d5da42a180f5765618bdb0dab1c66c5f83ae5665d58d5997ce56bf9909901aaecfbbf36d596f33bd2ce7721ab0d9ad9bf9acdb3e56efe6a03eeecc98ad2a7afb95f9ae580784066a5999ea5e69be2cafaa7a86f97df2a9edd33ab3de55083243afb0af2e86f5cf77e75e47203ebe578e5dd6fe6b5b7ccd5e067be7d37bfbecf9aaf8a664e0bcf28cdfbab7b25ae33a067bafba2bc7b65f5d7335f7d8d8a69ce66927a697adf4a819db5a2f8b5fbbaa13e32031e0d93bdff8abebdab452fea900280c18d5bcfa0a7fe5f6f68a4759f685a01124ef23b24179586b4d9cedc558b658453718aaebb2a845b1abce51967db76992b7b32ce70b1ddf3db3c5ae4aebbc6f4702c2c3d65d5d15dbb8cf7aeba59f80bcd03be61cd3daeaf7baf6859d00dd61ad4b6dd7f9baae6b29c64776ccfab6eabf70eef8ead382bab0affe957e6be9dd2d8bdd11a80e8e51cd2fc6f5ee745f6cd980b890ef85fbd49aebaa624e2f0e680bd885b3d567b52d5dabead6215996bf5702d2c2b4ac6af3cc1bd369d1fe49385016faa5af852b4c6fadbfee0d84857a619b62aaff5af8e2bd6799087485be2f0c5b0ce3d8b4c26b3cabad7abfd5da97f751962501aa42ad6aa5fb9e6f5db8534ca980af959f5e16adea85ab074de1f65a2bc757b72e6e7fd2151597099202b7aa4ce9bc6675e18e7ba6c3aab3fa8af57bfb6b3d3b0d280a57a774e3ab676b61b5d2161432b630ec2b7cf1b716d3f50917c656bfd33ecfbb3fa6c139f4acb07961d3668b5713db4eb8d6ee1cf76aababc2aa4e9bf0385b186b4b7bb62ecc2b252026bcdd9dea5b556bdd6b6d95a3dfcace8e5fe73ca7c5eb126abfaeeadad6b5ed754d4b37015282d65665b18e51caf1bc7a4e024ac27ddce9cd9635b16b6a5cdd80e2b83466557e27c7f0bdd7c22012ac8bd97955acc22e8b6db68e70f7a518d6ad8575955f631c9011ba75af4eb1e5f96e6e3b56844e2dffabde8be29d5fcb8088c0315bddb9f735abaf7533011a02c766c5f6ba55b6aec774c3816985d58c59f5766d4dfb46de3cd3fb6fadded55afd009010b0ed964e4cafe595f77a839027fe8d2dad565f3ab3e585dde6851d8d1b7df7aaaae6a5f3a26f61d6080808fa5eceed85655eefc5f57f60ab8ad29d2b56edaeaeadf79c2534448890bc8f489665221e900fbe3eb759f75d515d4dcb12898680dac02c6a6dc758c7d6b5f1c66c7caf979531aeb3eabce31ee82bd7fdd8b2f9d6ac39074ba00b0c8807d3561cf3ae298673cd131b659928cb8ec0c4d81c6122cbb2ac04c6807640f59c175bf8da76dbdf73f3963001e9605657f36abdfd7dcdd9f71ab656d6ea16e7553fedd3e600b35a63ace297c6c195a9cd56df16fe795d3dabb1ab8b62d6d5f9da17df4d2100ba41be7def2b3fbdfab18cad346eae70cf33bfe6f75e1ae34036d817b716d7aa2d6c5fd3de81d0b8f0bdf7769c37363be57794653da01ae82be7593f63565579ce9cc3218168505d6a59b357f5efb6747e029a81ee15a6af6b695d61f94eeb5302d019dbf2ef14ab6f73ad8f611200c9e09a18fe3eeddc76667be98f054031c0d6c5b0fc18af16cf6a6918e4797fdeab2fdd2dc61d9b71ebaed8b5349eb7eb8bef5196894e5a74e24a44402fe896feccbffebc2cddd81d65590422f09f09f4b84d051559b6b3f119900becd417463bc6f7376659265219f362d8dcbda2d5ad70e73c5f2032acfdcaba9ae789b3dd778fb28ccbb2b0db94e86c315996815ac0efbdd66b7ee55bb5ee7694659c28dcba2dcb28d01878638d5915d5fcbab2beb24c96b93800c482eafab7f8cedb9a9faf6b5770d5af18be1c5f9f2db6ec8a8a0a2aaedee2d5578edd6ad50b94827b59d5e6ebd2566f7df18a02ece2fcc238ad77cfaa766cf4f29dc7c964d9771eb761588880c4d0945e3e7545afe7d45696080b8d4b29237119814e402fed966379d77b7ff64bfa3c229f779365a4cfeba730834c60e9bcaea52dd667b7b3ff28cbb2ece5858625c7a5e6fb9086e47d44f69770b2ac040a83e7cbe9bedb5e96cefada60e4d718b6f2ec56eb7e693bcab2ef4f5f962d01fac2d2bfddbad5ae6a95e7c5bc9895752d7be189f54a637b5d90804ac07165e16b2fab57eb35868db22cec3965261e4f4e10501795ae7b765c6fbd7aa5f9740244020b6b0b5bb86f5e599cee091a01bd9a4f8eaf6b2b9f15a72011e4ad75b6b2beaeadfeadaacbb2971b9770e34a385f1805280455bf5a67fd8f613cff678d0c92f3041310087aa5d7aa7a956fe757cef503b9e2d3766a71cbf2da2feff922dff378472a90073addd3aaf8a6f8e67be7be02c485a5efe7bfd8635ad56ad62deae557d757c595e2ab2fdd00a8036f652cdb5a379e7a6b5d8db2acee3800c481f9b6a2175fecc2b8ee3d411bc0bd669befb413db7bd52a03d2e2b236b57475a9beb8b5b1cfd1c0755d1cbb2a5661fa93ea5a03ca40afe8ecb9e67cefc66ea56f405964abe2eadad7b5315aaf6d4759169a4aa1c926078485a516ef1bf7a92dabb17d490084015d59ca31cbb3a657a65c7ba02b7635b18b62bb2ba7b6ea8e03b2a253abaaeea5d6c6aebf7d8f4017c8bd5bcc62ebbeadaecbc2120059e0b298625e55179b1cd74c4115783b2d7ead5bafc5796e0c44810a5b5c3de5bdfaaebbe6a32ca39f35d0f9d59c18ad2edc2debeb8cc0470df6e7a51657abea98ddd555c5270df4c2747555fdfb63d6aa681f3b5fb672ac6b45abcaba2c45c3be72c5b0752b0bc36cd57394652f5956e47306aaebfe6d2fcaa9d5ad8a7db4f898215ff756955ef479b6b2cbf7e1a3ef3dad89f1e5d763dc564358725c20f02903c6d7eeb7169e17fbc96bff90215fabe2f5627a5f578bad31ccac73b71846a79dff9447e0b387e6f56f9fd85fddea4aad4f053e7ad8ea2fbf9552ab9afcc2d5ce470cb5c2f4d26977affdb9bd9e7cc2f0d3a236bf75f1b6f655e12c83c0270f5b31adb4b2b4defc62ab53f10183ae57eef75695555d189ed5e84b22d1cae70bd6aeac6bd6795feb0bd395ebf78347edf7eafd566c2d7a59bc8fecc70bfaba6ae71a536d73fe7a8db28c7f96bde878472498bd2325af26cb743cce057feed818dff42bc6b55559bb2f983f765456b76c35f99c15c5b7d79e4f172acb35b6f25ffbf2ff7d3f7568acf3bf796216c574be34984737fac3858a6faef7cc955f98d6cbb7d067d5f639dfb9563baf7bfa68c1aaf63fadfbe2176397f3d1270bb65f975bd4726be58a4e5cc5070b15efdcdabd6bffef16b63f567cae607bbeaabb27362f4d279e3d1f2bdc5959ccfff2f9766a8b83dee692f3a9c2f598a567b698fe7b510ca3c0870ab366fe76578a59d845fbe5f58e26a691a8e4b2e6c68196c40c3206000066d50400a310002030241a8d078442d178525b1f14800159a8589e563c1689f33088511032c828630020041042666668689c005c149ede1230b7b67190eae794153e2967e036c437e4678548c68698720183c58ce5c710431d6140446665d70633986a49d4b09a06ad7e125265a14301dfb9cf353bb2b541006552f6f1cc393764785024d212b8a05380846179da13e5fec0164ff7d8b9bd86a82d943ba5965088ed7df9340ccad92dbe0d904427871ca08a2178545c7b09d3526aa24d9a7fe8ca8ef687e5cf76ea33a423dd1aed8fe6fa960718d388b510842d46e1154d7be434c8b96e0d338cbc47635431df99af2c71ad770f65c220e0fa9996da553a02e9548b51c17e0e1b46d522244abc62ffa6a08c21d2aa6aa7efdf8d187896a189b88d957956a97d9d43ce559d3255d655120df26f66e512c85a7b6261e02cf78c105d1998cbca201ea7a6157379adefa27248536a8b6ec223dfde6da27d9075029d248e5445a18bcd387eb22292946cb0df98e8778091856f3b9770ad14c9e1d8404237b5908b35a88da0aed53de312093c9040df08481ccce41ec12925c5fbbe0921f6903cbf375c0f73c6b778a0f862f77f11ce5037dcd7f9d76b55a6b0e859cb873775548c677bcad2344de88bf71a4a0f3a6d753c60a007194ec2188718bf686b2236d56f0a532699689b2fa2f2290dd2a22e6d33afd116f351a99a8b928389b25f5366e60f377156fae3fc4d59f547ff680b1c10527ed7d2d2481a96126936e0c5e1f588e5a705d7ff9ea41fe4a28f547dda145f067471039f928f490a57da31defc0d61ca6a9f9fbc5d8f26f671daad2e68d5e21f5d43d1ee130fb7a02740a09cb63c1534ced3ab795b3cb3ce3635c7d215b60a6560ada38a5ddb3eacfac51c17569409355e7066d9cb488342140419907426b0f7f07f237680583b1f8a04b780d1b91ef212c8ffb135406afd463ccee9feb2850806cda5b5b4aebf7276d9e3198bcc7a0bf827a6158c149c5547dee7e1b543c9085f7a9b727f2d2c49e56b4810a0feccb9cc5ba5e0d4cd9ae10162f8ae24e4a86c40f20fd9d09d8e0a988408b630810745c5f4fbaa3434d0579ab2887ddd77604b8e15780bdc77de293213042e3b05caa31f5b1f257445ae0146a08cf4d531bbfe926f348df27ab264cd831fbac0c9bc0b766050fa98674cf7a54ccd236b2cb0aa343f82364f9eabeb0a01c34db4da2ebc40f8dfe2846ddcac029ecb507debac0f57bece0b687c07d80759bf2cdeef86e587540b4f9c1f9115037e7574326ec398491dd558f255167ab4eca4b17bc049b640795e20568a2e83d34e5b9789fe4b75e82a69782d1a036b336b9232c07e6b96fd5163e40b4a5fc5d1f6356843559eb4bc7c0c28c54d6eab1e5607e7b328cfd59d1f61f881ebb00439d122f8a98a3669bbbc493b8c0a501304d8a1cceaf84d1d258b3a3f51f0be221691b82100be1274211e94681107f34162cc5d5dd7cc2ee5894c9bf49bd4589d612aa44b68b22a2ab3d4e603d216e396c56899354397a3da00399a0bcec1766a0029f4b5b9c0df5a8d517ab102636e937e832e27d693d6ede00bac1c285ad9fe016350a88638715bdbc03e7c67d11da65811b471d5bd52592eeecc1f7a29f45375adab5de6b21a6fa04338978117b50b489b2064109417a4e9a9841eca10efe96f7c9ddcfd9bcd7d95992b611544129c2a8f287a76e88fc44079229172be03e54126abdb717309d1b93f5a0c2e617e87b8ad04cc526c2aa9b0e0caa1ea032bcfb88ad094116841fd5aa135dd3601a9b0b5bb1a8acd163dff5371ac76f5868e5d17eded87850d2b961afcd45d02d67dfc79739991559576b56b6c22f8e0f4e8a18ef1bd62e6f4e25c6ed1bd66a50426ed9b6709166cc6c680767cef1edc017cde9e0c71b310c8c10e269618f78b79601eab067399df731f420c0f6a1e149944f650a26f03ec8b7222399833a4053d230acc845edd49603a15264894ea0a9bc5aeb2686c92af884de50ac4f9e99bc82a3034756ff85cb8f59e1485687cb8b20c0ea64c74ad54266ad51ed5828238d59365f7446a109df912236635e072a577542c319cd41d7dcbe614a650b66a037b752f767c7b82c66f2aadb4e2cc84fb3554aab8710d83ac03290dd69eba59467a6c30d12574eeaa6295545d2feb771204d41ccdd8bb1d31f16699a3619b807e06dac79478b11b472770697d785e536671ac363d8f7ba1a0809b07d0ab1406587bc4590c76f6d84fd4368f97bfd6a1fc143c9ad7720d38a03c8ff7d4aafd307d8f2bc58709f91125d29c1ce67b90903409fd11358b97dc7909dc31049b2a3674d249367a40b157c7edddf0117d4a75526012268e77a46b3a7c8e7442f02ab2261f58183844fe52bedc2b13d0d1aaed46f44081fca7678bfd1ad1565b7439d01bf1ba83d2f35c8ddee60f7d2b8371a4f72f2b1da5ae57f3a1516ab2def13207604c01ac1bade555318e74572fc444ba7653713184c51536a0077a5b8731a1fd239a06c48035cd7e4dba8de21a6c294da3de6392152c6f2039570c52e306270a19fe291a2e2232547d19b2bf09e309ea3432e662337833ac209595201ce4aa82bc46dcb741eff1382edf824ec13311e5755942d70aa183d5a7a4bd18e7a7a6ad0eeac3c9e2175242e32f54b91270af9167fe1ae6e46edcbb0325bed11e627843a7bf02cb6481a24771cc2360661bcf3c4b384c6e0871f29b9283e974f2706acbcbd0b61f8e02174b1e5c14e68a78eec8c75626ba4c1037004833f56bc3f7070ded104d2615ff6ebe17875eb01f5dfee50533d3caf02e60dd5a1455b39fae27935f6f214a783e15dbe185b005cb330d00594eb4dfe01115b6848fdb80b3e2d9ff372bbcab4fefb97e35ba42a4e25ae7900ee20036e6f64dfe4e780bbcd39330002dfaf197b5b3fdf35c9a6e070df3e26ed89b1a55410483fe5a91fde41f9ae1d95bd181b9805cff94a68417ea3bb5f2d93109bb20ba14154483e5b680f9d8302a81e98748110f6f56030a68999fd7154420b0f393fa08a6f3d768ae37c224d8d208452834cc9eb0a0085fe74444abb4633a6ded10c455605457e7723e28928a9b3ef252e58703d00e28ba7dc14941eade1401fc3ab02f440ab4d557815380ccb0ae32d3bad96fbc2fc797a7fc9502fd93a10dc9bd58f4dd11eec51910aa285f2ee6d4119fccf7c1d0230b81f39ade312d0472ba6c2a266997e5035f2a979b8673d1356e97d6e1e96916d01ec41d82edec5fa01ad9d1602fbf9a74504f1a037ccdfa28cb26feee0ebaa863b5ec4dfe38cc8567a98cc88f55a015fc1adc917a2b2c8b60c7d6d1b6226fc8885992fd011d6dd99d551914624734b48a1df8b4fb9f0624257c60dfdce85f4540a5233c1cc8f1a95c729c0d9f49bf26ea4a4aefc4177a1d12ec6062e9bb467b348f898a687eba88d29b38b32adbd2860ed9d0631e2464b47828f84b498c6357b33b10e0a6f1d3ab9f6c470dbabc83de3e8b2a16799e59c73b8803643261b1842e1c3a18385761d5216b85bce9961dc6d89b26b9cc90f5245089cc6faa286a0693bc219eed6bb371a6b8fa9577689441e99f13fd6dbad1f38292433883c0d19cef833264cfbfea0d7490aef5114ef7d8cf17928e2e7cb8fd1d63c221b37fe24920bb7e596ed5e6f08d40213775df1c177d24ad1899bfee963a4c3d8d69daf3ff8e329f175d6dc11a8ac7aeea0390e8f024bda3997819c588347af87db522bb33ee056477df6411501fc71490a655296c1451c7dd4c4e186c74790aca81420b9cacb6bff81f877702099834f43cb3b77ae33b2b04bad922d0371389baa38479b1306ad88493034073a3ac2c40fba31430a7346024e16109e6162de3e3d2135d513c3c2831e721ec0f0c79e2e7789cdc04d9abd146341a6bdf75f8bda5124bb7636535e9999c0f5213837d2f9156f31db9cf8d6f5e7a204e7646253f8bf463228fec84e47d4653a7b7a994313ac207a1dfb9d4df9e64262c86b07f4704ce6d66f70662531db15f50542d04ef4c32ea3251c22f1d9d557c74f51f6e74598a2e8b088a45a0ff7a6be8f2c39d2621d0c2e6e4bafb17e7e026dc1ec990c3cf50df39f92f36397f1f533c0d7a886d0b10f3be8d9f74cce05e0540ab2174b48358a6df2fa8ca51b76b5a1de052da10d2ddf5ad28b597b345397dba64295561a88542481dced53fac2e9e69562bec7d3351bf0017fa438b17e8fd72cdba261b94b22bfaef6ea85bc4b0445dd2bc29566f8697621555652c7183946f03f63c4d4c32714f1ec9950838050a03b782297ec9bba68ac9cdf8a6cb2abe9389f8b6ee6b0bcc81ee321541535001536456a687aa849f6934f061660321e5a05bbe2939c7f74e2818c0a6aceb6a0925765aa2fbe0847999655c443720f3a4f659e9b76060bfe296bc0bd790579ac9a2099623ffdb001c2298db8199126ed07884c9e815f2895114f7e3104d55d58f553fc4db3570a12da12a709cbbcde89be66cd61db6d69237bf2ba9b304a458564619fd010a6ba465551c8ff03a332d4d7362cd7fdda140b347bc206ecb3d73a1be0a48170595d990b4522f8c907b4a4f425027c5bc5b6002289d135d1cf2222fa2102bddee8bb46edfb4483241db86b3848e3ded0a14176e544545bf45778f3330510d4e055aea3911e2b1bf95fc9460ab4e5edda9b1ee6aeaa50358929d674fac51c4c6ee099e650a9a41f55d63bd78097dff4a20317aab90f7ef4241d78664701593f467e3d9a769662c68dadc71bf759919381d712328db498926ef72d954b07caf917bfcac77da59652b60f6c22aedec39e54e11eeddc6407f8cb3edffc3aafd88fbab1bfd2df5c5ded527c0251bda107a2204c06fc9df57081dc0b829842671ab7c218e2b564081ff1a33556a28810bd1a02ead7eb8befe5a53ac65d1558a546676c70022f6a35bf54cd0aa8a80b7478db82bab14805510a14c48763e5d36ade3898a462d6f5afcf9d26bfb5f0c907a89f7163f585386e54ec59d5d31ea36fadbf30ace1b7de64455c1d7491f5f41c793294d31ea8cfe62fa8e002838044c9f55d3dd25318a14aed858b4313e93c3cf982fab3644801cda4a157e846b496c5626dd34f0709d80304e45c294d0357d26c20bbef77fc1f00e5b4df4e8d16fa8d16f283c8d635d7508c3cc4ff23745bc10285f4884d7e7b8b59b571d17711f54bfdc4cdc101ee791de2e231a9b2e88df4e227403b024dc07e8d5a756726b8061dc201a3d12a7855f4f709870ca41adb2a4d7e4fd68e6925dde52f22452ada22a338666c1651833de02bd5e68d6b1658ae886e170aaa8b8380caf118e01fe911e09cae04e5735cbf9270763671575817d106928aa1a74791ea0bb540d7abe916a8d469d6ced70a9339f1d0e287d07412b8d9d649c0106f6a63997208fcc8130d549431b3ffcc15ea10f22c926167af84d692628503a351ecd28c593aab9ebb1fb07f7f8f89bdc8491c6262a1ce6c467482432a3f49e63061abd5d1eb39c3d988154010aa88d7a82179206111568038e2f87861e9486e3ba25106766410e2d4e0f580d60afc941054cd0cb46627cccbc93d95f2eec94438e92c10e22f68afa04a262cd11f7d5a1ef57aa14956699b32d774effe0c609758eb6ece4d13d7817732c0bba3dc67b7add14d9014d26a746bf71d0fe9295272715bd8edeb967d5d81a0fe00cb351d05f6135a788006839f24d32b313952b07181eacb9960e8e4b0dde2fe48435d78bcbcab91ba893d2167c4807b317d92dbecd1565d80b72e3fec3769166b53b44564ada646e38e8b2d7be413e660528a80d1bb210d221a56f99c359417b95a83441db30ac87bb1cf853421d1973e9bc30d2a13435bbb38bd33b2b39584007fc316eba477c19182fe7ada1a0845efd0dbbce6f4a8c2d6f7a12d8aeb087b70bfb4011cc9447bb00e554de2447ff147a746c811bcc4e80db886ccf1eb1be210d5a3aba45b2f8f05ddce1f0eefc5558f44a90398f97751fd5ec8ed0f39290580b63c504109f461ab65c58e7b46f3d54437a26f7f3dc02c6d2b528ac8744c339a10dcd0077befed425a2d6c0bd8778b21af1ffabed98708f20d72215772a6e5f13d4a2e66bbae0f92bf1e2c89d463b5dbd6699bf0e4de362cca410fc0656ba0268ed834cf399941254df5646d4108fda9d1f66e50fffdc698b90d2e4517afb94f4b6cd789a988ce691e7689e584147efc05a01da3b20bfa903c064290ca63d6bbe1f19b9f5f9f69fbf4a70e586600e9534a832ea79b0fc1b1b76b39e167f032ce6e887495a2af320ac097c95f6c1d682657c990a24a2888a981feead850d3a00c0cc391553206978919f32290a09fa4ac413c4c8c15b3156a58812b0580671e26f39e8ab31339d4ecea5d5ff21657425a65474c46bc681810f09d264ebb927516c1c58bf1a9190c7233302f753870141dd7b4902204d33c3e0d5f8117c234fefeeaea88c0f604520df64c0013d37196f00304c1de48527f7adf60100240c1971007c873449e22c50265f816daaf99aac13181333ce7968a9e7f8dba8f181bad0569ab14e7b60e9d149951b907254af205262691a6b16ee50beaf4fc18a091ec68a7f54782507bbcd124d5330da157a04704b1ebb983d1a5372b4ebd06daebeeff5ea46fd7c6a92ceebfae40ed5ff93217c77fdbbedeacc346eacacd07478934317fe8b0af2712f1739a1579a174657144b68f3d8fb185a9d59b5adf922faa4ee7c64fe17dda9f59205e5fcc0979c3c6ea7a33700bf2edde88fbfa907f5bd2d4b7cccc71f989f68c8c8725e9d1d6fbc95f75e692ed7f5f9df8e09ef0e9730d0d0574e47e751c56f4e3074070bfe2d269fc5d73c6a7821b4f713fc10b69c94ae9f2840b8b97f7cf179007c29e54abbd0164696bb2d6db7d6437617a6f62b8d4c469b586c4a515a54805ec9dbdbd1f663c4c675897377d996fac9f0010b58eca12befb57300a01280318061846d7c3d078fee011cee3fafcd45997438cdc2f5bbb56d09ef2870263ebfb639ba3ec00788d4c32f78abd939252e87063bc68cb3a4dbead100c41ce24715527f81e92d2daff994f465db72b1afe703b788a4543665f5ff4813dbc6b0526b167a44a5b791328a6bd33092820778bcf99d5db2f3fb507aecba31a16dd643f989ac00dfc5f135f84adb068d3f3abe264ef2cba2048e95b99e0a6fda661cb43012270a7b91c02833ffe56ec58131c245ca077a32ea596eddee3af477e1fd21543556a274ce3a1714fcdf43016e220f0ff6d1a8d2aafcc389c32cf125d17d100cc97c2fff198ec57d523c4c55e35f155bda67a3f51ffa541ce1c0c94901b1453b2033a86f0e315a633cb461c0f8b31eb235535c924ccd471cec23a1ee92818f98f3f57c81d9a21930fa01d1709f65ffcd8914d59f785d1b3276be4717ac79172828a0ef2fa88c7135ec8a3c7a5cdc2bdebe362b16b0217a758755c581a517dd0cece667c3c4734b09254c2eca98e0e62a5cfdf0b487832fc9ed1f667700e163fab3794ad267da3a63954d663d940d017cde822257dee163cbe7fff9e05c92e114e2beede7b161692bb24412cd1ed8e87fbdd14055885d56dd724cdf4397e3015098d32bcd17bc6f445ebfce7dea4f291a2069355c78edc8fdf835321d94eff2eba4a4fa6e2b585521fda2b3aa624d4458ac3dd795286af32ab2763ceb50378ab2a1bd56ff3d5daec33aae3be7314aeed18b547ef7efe2c56bf039c350e8cdc1e006ed88aaa532d8b2082f75eb95f21f5dcd1fce3fd3f101bee7d99b7b6f5f69b42748ba02ea3adfd9105358724bf54e8aef8d0713b9cd422991702067f4b5207cc1b364413c7c9a449578cfc160e96aa7bd36da58a482b5246cf5cb23c8b44351ab5241bc4babe9711a3641be8ac7c07e4cb7d7a041fe3dff0e1a53573e703e2c48469bfc5e2ab75a28970b13254fe615379d026d4f861abd51e5b014f794161ebaaf47d815b34b31cc1550a26ed75f61da2352e32ef80c45a752d63600dced862a9634bcd66d609591fe07becd6b0a0de3e4b6d554e3c6df4e4437f250dc6e295caf94a73fb3af6570b82f4bde8e49449a18931149fb5cb326e4d15eb38b4267b00f1625096c6ea1e21f3f60c6a97e34c81f01b4becfdcafd5f99d10fdea9dfd5ed2e24ada98c4ffe2a79b667ac789f2767fb92dedbd9b542f71b5f7b955a84ffa1d75b294e8bb5f7a38697e039a95b7fe1c7f1c97c99ef026539403f0e239c28f97b129d2872cdc1ebbefde518a82378747cc1fb06a4fc5f8bef6b14a3ea11222d60dd31a7d05177f24eba81b6f202cd15cd1b519cc2808f99bebb34e18628e8b5aa0e6e211cb819e23a9ecb9d8a01eb97a0a2526c94032f37c65a7ed82641240b1763411f4b7af87264bb22ed508613e6480b21ab6e7ecc91e280ac4671de80395f671789302cc4725d36bd5e098cba46ad0bcaf9687904fac7b13ee16858fc9a7d790f25ff557bf575e597676add47d911bfc9992d4bb4b133328d731eb5ca82fa2fe81befd994bc8cfd83ae0ec3f20fe9d70379e4cfd607490c2795db13a2b18bce7008ce579f887c0b48136187a1d1905ce20444267fa42600c402add28e90070259355abf16b4d81ced516596f2e290021fc9e17423da6e3ecfcab460a0ed222f0bb63947d409ce070cada24ea1f2d676b83b98d2ff41a4d9c53af611fb49e6852b51adc8dc882a18f85c1df6c3cb468b86d05c88c39d7353dbc1ba27f5c5d8729d1caa4037ce66260d0a2dd9465147def6eacff9b7eb62e707696fd0965e9570b7f04c039f2737de48f2ddd5fc5c92649695b2f750bddcf4b7357e56e8d90eee89141c32c663f66eedf1b54aaa8508f8250a1ea650f53cea3b15097c71176ce7eb63f369c381385f0755e483e844969e7db17749110ba5eeb424c5e712036c4ed63aa09381655a73de0e5f0f91d794dbeb5f75e89f78ec009b4c697c43b4445eeae1565919dd77de00d90396672829d43137bd66bc9118541b984148560769b100ad7b8e488a652b8930044f56ee1c997821b00e0305bfdfc32ab7c670869ea2f5c55213b3fd1467090f9091855da9007f17a33bb0514b03560e241ccd4993a3314f13ac865a178d5ced302883c7a825d854286d691d52be02a36c483285707645a88eef500cb22ba9a249dfd705aab88d917d39f1975afc5a5475c34e968f45c36f6cadedab04d2af522c7acf67407e47e4b25e85d6dea49006713d7851094ab2e857ce19177a808d8d92b09879f21270d85174eac20237cb49ed314cc4b9871594e525a9f313c4dc3b8f104b47f78f31e0a017e27d37a61b2f85d46ca094812c31bd8ac870c01924611a5416283c03b65b294c93d68a4cd80e53b00934b3080d472e77247580134c60ce8c7977c0240c629e3f4f462da59be8c4136436a3bb14145723ca65e6334476cfa9d480d6b0a06ce06144b6fe5d6c290a8c5f4e679eeee4089833012e89f3a326bdadf347e72f39f04f3bb823b774e56da60584fa6b45c61ff11b4a0ed541f433bfc3ff1da74bfca9ca3edf7e5db83effc321fbc1792f6857788dcaac8a0b9adfea2deec8434e7e23846ffbb0e7773afd42827615c1f2dca07b88dc48aac25575447bdc87fe4758559250f6ee89a51fedc6a314fcb1fe207358ee723dc8115683c952958b16b36b2d5df632a713d99b5e7371aed60ca02d21d019f7ec2b01ba571facb2970d26985e29d5de7bdd03e2d731558800246c9cdaf5908e1689eca7225c625ada37f23bbd132cc6d2c83ab41493d840b8c584cf07ea353519509dd21d4d26da490ce1840e54aa585f512c8b8ae96e5dec598e4e355cf4c4c72b6c0bb8e4e31a5588e13df27771d45a45637c9dcf3e90b16f715d5be79e4c7ccb3e87c643500024fa7805462fa0d9ea12158f38edd2e430d5e6529c0cee96b6cf2e071e811dd8ff027743eee51fca80b0fa86b8d53a0772ad3e77c48b39fa16e1dda8149e4d8b6531a913f4e95e80ab2d73b07e5b01fd730f237fd5843efaabfd88989cfab1de3b76b94fa49c6726c5d9703dc40bc0df83bf4c53e33ee0938bd18ffc5c533ba15b2fbdccc812e1e1e727f59490390309ea1c76d39337b8ae10676e79d8003efcf38d7fc529212b22c0a2ad05e985d7f29e7b75349009c16c66445e7098a7158a1be32d2766d5df1cb30ac86dc39a147acbb1f3a9df133d149d594ac1bfa5f67a3a8fa6395831cc0ce9ef1f904323999ca5b6f3eb742190f06ac7b6cf4b96b7b4224db2e475ebbec0bac41a32b8e585cc262eb28764ec0fdcdf6e1ad65c42f2a38cc48ac47f0ed3fb9202d6e6427cce153b073d5f5b169d93a323e87bea7d92f930d7ee192cfd94e4db00760b12962e318d2d280635f428eda363556b197e99701bc3dc898ff3412673af3eab3ba20cc0ff3496d3a3d75095c9f1c06b783729874bbcb17ae901be22f0755d210ba10408863a83d4296f3e5365e4195360f771bddc2e7451a744eac026e8fe6127faef3cc459fdc1d99306eb77b6eba3e7ff828fcc2b66935295f867fbb3bfc42cbfe3b3d0796b6c9ea95c29602222e7f7a061410d887cc3586b3b4e2183006fdcadaa43818692ad694ec0c28007770ef74fec8599f5e0d109425b2cc8613a3a647c6af62787a79d057998fa59d9d987df2ead9a72a4131b24b035c9a5f1395c3c4fbae745874142f374db8b84ef4677c0fbcf0960ae001301df6fdc082a11985cd7bca40757f36cf9febe7cc3ba6fcc35025d39e2e8ab81eddbd7632022f5eb4d4ea73a3d6ebb02cbfb7e1df9b98819f7e0c792da0f25cc89bd1a465409ff10e7f00c383f2317795ae5ab44e040d27eff88843ca86c44d2e6b98988302447f2dc3dc39af417d5a9e3f9131f5a406bbce95e821dc338a90d3c670c4d03afe9868a6d93ffa69da6033ea9da88b94b00b332198880141c3aecfcb4e6bf98fd2741935e0ead83797c9f36f73c95101efbd09aa076c322c55adfc34b2315e1deb9a95b74eced0ed768d4be776b05a65a19d8dafd7fb74bd437470ab2761e38cc3f29cf631e93e50bc749f908aae1f7928f5d9cec83ccace9a915b62c0c928dc39bf35ab85dc7918b15196d264aede92d8aabf9773d1a9ad58e6c4fd6553f969521021c3e61e40e8c12fafe8fdfc7653935eb2b42f81b8dde3098b480352ecab98117283a68fbd7d558954ec75b3f808881d3b8bb63a1135b22f8d3a922b3f994fc70517c6827f4ce27b9f5f52c4db63040957d290d96d035974ab6586a21735c6e148d63217129c1509e9fdff233f721c4625af83867056189ba00ca79195feee7304b5cab0a1aeabb73e5061ace047b93a419035b44726fc2d00b21f0821260d905fc3f75a2def94e925f75976ffa138b66dcb647169dd59131ec02efa7254c0bc097667f6e4b3d82f447230e2564c240b443f598aba763b1d00ea5a9dd13fdbdc543429270f8cb38cd3f0aaf831ff564cc1948811aa751cbea38a79010e41cc0b91e271934de25106b6174e91137f9da568b25db4ac7fdde0a596d3af5cc1380a2a20c1e541fcc3a92469c14e4ee455f26d24b87917f96b458b740570c7f99853161343f8677559b832890160a0976b3187e906bd891d407d98bd1ba5d0a781141777b8ac191d3241c87df30311094316566600b822927cf721467ae88ccf1ea5982eb2a0f8d41a8d394766300ef82c0d376497b6d2d0ff229431ac09e93c4c91018eb42bf0ab0c58e35d6f1da01c21f32c41f39bfdedc4eb876756373363ee2c1345e2fc733a293903e3f3a2aa53712a4e25f927c4efda12f2e8b627b1271bbec7b1d585359635c763887f3de6331e18401acad026166bb3a4045cd8c3a10fac5696070a1cb506629bcfe68e49b385a0fe479cf879555f90a0fa263bb272efb42e68334ad1484ac8bb3d32d6bea13177205709140ee16ece90afd9309a89919294111733d1fe21ce4248e765615b4f92d4a9bbd0df17bb65dc2a091fe800501172a123d57483d1718885b0187b6260c97bce09928dd43377a226dcfea73e86f5c39beb32e362a67dcc34c3bccc6161f41717107c2a5beb694d2fccfedd4f8742b7b0fc31842c1b4e395cbef8dbdb01bc1705e326bf834cc157b2747f068265ea9e8f6a57480073d71005c0136851b7c65614ba48360b0d0eb113c7cea2da30052399631fb31fbfbc95d3c1fb1ac799a3940d411b026a4f03e39803f326887893bd891199b5e75a97fdc46d3e84a01e22d4324edb7b7352985020916f8299b5d82080d3b49f759c803872796d1ff1e6160b108ed284253c1e521027b740d50cb5dbbd16b0a1db91683016d979117d069f6fa4ed54b55b299184babeadccdc814f7150c380779e8c17f96409255e2035239a2c1d5458845d3759fc95761b6507370c691a6a03f542b9444e3b256fca807a7decb90018ca6d94d92f893646aa0aca2638c507075b40bc89dd57cf8e871e8a9800da1c30473d899a1db28c91421ffe3e439313e12717242cf7388c79f4d2e9b12b53cd39584dbd9080d39e8bb104dc2934c22e46f1ba9a4d04d1f1730eb1b70953216f671cffcfb9ee80bb750df36006f06eeda6560c8d33d38fbbb961adce26a1d9e3438828c027ae425e3061d34690181ee3839b44a97444155e72e8eefe84078e9c9665e1fd4e355370e598aa6ab29285d21d7fb85029436871e282ed0045282662e327cb94923277268ff1c91e1cf1501fdbd85f19d9ad1149f8c40858f300bd2487d1d0b66609bab010a15057e977a01738ff5ef0a2f0a086eb5c1684f74dccf3b4f9f41841ca3d38fdaaf01cfbb123ecf7b61b6cfcdc55f0bfbb1cf7b00a6881a4135b990813517bfbb3ea8fd7a82e92675b9adf29349cadf49ed60a7b696f4f7b48ea36601bf15d8c86fcb09323ea5ace023973916f6fffcdb11d0215ddb87f2e7f52d6d94a8f23be40fafc154b4fa30f4bf12aa46e93513c6596c14922cdd6d43c515003a9000e4b5d3cd993a43de9edae22b77adcd50ab5ed7dd045ce9d0a22c0208f5b2a39c2435260e5c7749c3f12ba629c01302637d060db440e0e1b6889b5bd1aab9734e51cad898a48d0d0b307fc7f8b7b836a7c2f705b0c061d470ff0bad22634bb3588a6af6271bcb144c5226b0cc22f871a844a07c9128392ab9a11a85cb704c8ccb8ac7cd2d26fa150473c47b57fcc046ba93b7f193c811d3d13aae0ffa96d8ad2d79d484546b5364ec944fe263020977d1c60ca1d5226e6eb33c84f6cba163bd5065df9c43cfceb2caebf302add7a9be08a1b59be95166625819e1bef76ea589683b0f6511fd288b70e6374fc395be93431c87e6de9af99166fd06cedc5d23ba57c559322bcce805392bc722c6689c342f8451d7c5fdd5ec588bcbdd637b7bde644aa32b71c0ebfaf25f833f39791d6a829e09e28ed8fd4d390297ba1348e28249cd147dd04ec467a93a182eb480fac02bd77529e84b9e302f569a64411e034bfb93d3d3264e7de43cc1eecea134f8eb07bdbea4111265a9683b9ac1740213d369688b98dfd22915ce80c3e51d77f940754f1b28088c492a7c93d810d65b1a67abc3c53a9bd86905e1791df14987732076677bc04097fd125da162f46fbc010362cbd2477ee8d5ab1fe899b6ff14046f5a42ed458563967a9173ce33adba3ca378178761200e66fe2f526a476ea42f4dd9a23118e25937c59a69aa3427f48f54ed041db8e6dc8f5cd1aa4b5f5b2b3333b4decfdb078d1617108774dc57744eab8732a4608df311a226144771686c9233300d3f249568cf8b06ba420bca4aa8dfa8519655d66e6b5ef26f35b873977817d39a9383dca421767b2c206065cde3a8a80d431fb8062ffdb332773ba38e6e6e00a9a5ac9fe987ea11f9ceeae1bc84001ab3e5c667aeb9dac380db8691eac52b56b1f330e196fd6c4663d44840a243349b468b8040dfc383ac1a027fb2308b0a119f4f7e8ed455af944b57195a60bbfa394c4897fb1452002551e93e86960061a564073d52585c03fa16fd88e2d2082b7e354a47ba24d1cc75ed02e3d5bc5b16674053c0e3f07419cb103b1c9ed44f1d85dc7909e84bf882cf01fdf83c67fbcce2ab778a39bce29f918d85359b604ddcf51a526e74460df7d9cf2ae435234b97b48af806a980162810f0b0ae17e28e8f0fb6b1148dc3364995556cf15e802f06ccbc8bdc63bfcc5352aa26521060ba00f0ccc08d92965207629e0a3f86dccae80125060bca79412bd16efec7008cbbcd9a9358d5b87aee773f64e41788325b658f688b61b63133b293bd47f592b46022f9fca7042a9de10e3a8ec4415b45c96eea71edc9343b279b950ff3e27617272e950c40d36f78b8b3987d39ccb0b50bb075213a7a684d10d4546c80da4d091b6f1ed7b078966f0f15c744d066a0f181a72017d99cc88609fbd716edad4b05a4f5c335e28dd7606638e7aa7a39046122f8d72efda3115a3b753767326a6d4605beeba285ba5b6b98801a06e32e999c2de562d3d6649e9a017cd516c0af1f845f24a49922503d31047f242191c7dd4560e518591b2e7f35425487bff407bfb9f1ff59aa3e3e0aa8398d43bf52c2cb2a3a324029cb43298377923a0611dbb0a8da2e2fdb0ccc75592cb00bc48a14b11fc0e059f2ccf510f19d29d1bfa2e4e93a29a3b22f07e9cca355eeff0150d017fd0b59f8084ba8d08cfb09136201b7f0e8582e3de83b8bed7c343c1a9254a7e9249b1852647ed77fc9444244781c827d2ca2cd814f482ec4fe762144b36e9d0876a3f89bde7191534fd3140b6a5a869084ee2781e32dabef8c14d4df9afee78bf7f1f241b8c9dc495306f659ef5d00987ebafd27ea22ff450b1a97ae4dc55c682ecdc41b56dd18d44983e65d92d46f202337d0364b8f69d95d25c451d1de08808275dab5505391a52b4d459a3733899649bd3a99358517b0a8adbe187a76884510d4f5fa28274bed8a4b8d8b7664c5a0ca8b6e548d01c323fcdf0dddbfa2aaae16c3a9f96478be3b32107cb90244e6256b3d1f8b4535b453b2d6c435107d9460baeea77021153fa31fd1bfcd7c66d685ef00b9ab986d17b5de08f98bc6b583c5de73b50f403080a62ad831a645ebdfe9fe41a1a60d010cb703f500f71674e13a28ba34fb4ff7e11af8191a3f4135f541bb49ed352da68300fde085f840a4db248c021094b4a0ff4f8cc0514dc4737f8af9e015d199a61ec717be9e6c0d07cef8b5325915088f69a84d87ae63f6a13b2cb6cdb7542505e9a4fb5f5d80fe1b616eb9e4cc4e188aa6227ab105ce1e85b9a02f9d70a5d71b9e8d69baf6081b29b6392e591d4af213133e9c32e2835f67c028bed43ac45f7b7f9eac0442fd625a58e684dbc36823361e31223552894d113310625f25119bebb6227203ce8fe586f9d146573568fee4620d722915562b10dc76eeb272c4cc3eadb9ebd751d6c3f782310f5b39bb5aa03d0ec1a78fc32222ec9d51d903cf1dd25b1108ac2ba1e4ac86829a81d43a361a0ea910fbcf4d72fccd65fd8d9f4c07f4b004275d39da2baf3d6999ef168e441922295f41310157d10edcea5f3ef0e31a395ae001db5c6a2e904c4fe7449ab5c74219ad8873c9fb62b0cb067542c2afb93f38bb9d5293d45fa3d0efb2131f126b21a758b87975b52ff2933ce5b8e1b18559d5c6e187ee717238404a6a061c66a1c794fa52a6f0766e9943ebcb3caf2a10051f1668a73fa005cffdcbf2981cfbe1fc31f97c6e3df5df61ec0cda34300102c1047eb7e789e5a16727c44b4017db664ce0089e20595226ff766d37e8f2bd76a6bbf8ef3d9a98c1702c71aa4ecb7ac290d8e3a9247e7cd53bcaf70918175dfb6f42738a57d15dcfc5af81454e9de42d731121b3e888bf388b00c970427d0a979ef23868cb2518c000519d1f2975c22ba76622285261f0be90fcf459d84997e978061ffc8168504a5768a5cd6404c5bff21e2029de2a217acad7e1211b03df3216a0c5be3f0ce8e847a18e7bb4f98247d4a4b0cb6108531f865e94ae8a2e829e6eff54343de48f268450b922c06f1b83d91da0fd39bd9f15328470d9847a2b35734cee16202a52d28960f8ff5e3fb545f3be13bdceafa952a1194f93454fa8e2ba18ba86493f3bc455f4e7ec1add3a6fe096b1b7f50b5ff3c3f73cf6e99deedc4cc3dd606a7b9c42cc779286c314358dbb24008e5a944a485020a9269afdab74818435c63cffced0abbb40928fa22cbaa842ed1ec587fd31083f747aa5b8c697714038ebcda58c7fed2add589d9925f1f884f7a44b467fc0735bbf46c99c0f2abeaec0bee2a6aebb4d3e5b99fcb0e64e311712571f607d4138eb924fa0e936596a78017300c6e153c118699f20c0a05d3edaece791abb2ca6db0252cbb8b80548012e933fb99d4e78b00d8be07a8031826dc3db2e3c8ab54e51e051c69c8fc9012c57a1047ca79f57d25de60fe1d7dfdf1e78596dcf1adb56b28fbc092456e55d3d961d1bcc31fc98209fefe79fe17fe4f872409a9c2461223e264d4647ac7036059da1621ddd5d787fd2da1b270d6ae153c2757ad3239682b3af341a840362e105596ecab65e89cefff30179da29afc6d254f1d5452d2e7c273d98ed5d2bfa31e749e3f54e69bce47b24c2dd66bb312d2eb1941856793520e8ad055c7f0d7a2a671e133b9076b1690e01b4e289bef4f81666ebb5b9e129fb748282d81bd49ef69ec218f485653d763cb7c3d454d35cfee9070a8c6dfab212da2e4cc539aa2441ae3b2a212fecb5d516a9509c884e77640551a6cff3555b7e63e21cb251e556d41fad3a4522f42403f8bb495995ae083062d0a7dfe47f7c49902310a483a83315e426022e2ae04a2c4fa2b0c85eeb068adcd7b399af2c774f03af2b2fff435ccbe46b396fd645623edfbaecad4ff5b3f0121bc8e71421c789ea586238bebe08d16e0cf513cfc6471b372ff3ddba2f87e2829e6318da3404f947f96e2180c5b4cd7ab3d82af337b593a80d2010a0973b545a290dd509218885c20fbf152c278ee1c3096ccb0bd39cc9727e1d0ac7713c08c739c8fec9741be102b3e485eb3bfccaf81e2caca75b628b30ab8b53e74381fb26e13413a434d04bb97ce09e97759135dec9945024d7032b1a1098e9ab4b37e4698b7a4b469bf6e2efb157527c44ef6234e0916f883d88890be667556e8d436ca40b084dd45cc81ccf8722ee3aefa5b40d68beda65037b2249666b29279b40fc046a2306de9961d03f0b835c24205a5194415b394e05c28c5ccef7026bb53ebc23d7f4caec893c0de4f3cb4f787cb0e0a342f4dfe0f5cdda85ceee0cb1bdf901d4fee7887fcca69fd250d32ddded0ee660eff25d91f98703a097f23337b2a3bc0e7f8c9798a7d39091b915c30c30792cc3b9223f3b3c3bc1a512fa738ca9bd0d1a7b46cc02e5491cc6f2863c88e351848847e6c61944b77d208bad642349530e5104870c07a0c12a693a985742939c90968a52efe1986488e1dfed6d056778bce63d7e29063d128a11dd631fc5724cc169f3c5dee2003a4a350b91339e51dca7e4736b1804f041682c0c70576f5c34d95c406d1f39f6a12fd621b39900657602d5ddfcbe1021271cea0d3a0e412819a2086863bb58e73b32f7ca174d1f63d896b161d2e170db0fa030d34b26b886c106e083f2f169b6d0fb9138b1eb65c277605f59352f01525c6eb03481972069ab17236592821a0b65d44415111701c0729d39c43888406bd03f0c61a839707ab456c6d87bceee6a5fdcdafe70ca9d8882821d2f778444ef21d59a1fe9e167cfcc253447ba880df17d890ac167f8c00f05d4556a167f07995fd715800688578fc57326896bb0355687387c62a08e28496d504e93be3df7865a9b629eae71456e1209bf7d15354180584636fb6050454f0ab1604aa5aa7fb046866a8f8138e88a50292152aa6845e0932d37e0119c04032c45bf51a23790c615f9073696dbefdab783abe044450dde6ae9805b8b12b247896ca5274c71c0a204425b93e948645a41b5f63ac2b4720866b11a7b59008bc72dda8bdb8462bc593b99688c661e2e07fb033b88f95d334a8ff0835cac04598b2bd5a4cf036e2b65c800f091d24202b36d8829dd29d7d17eb5db89f79f8bffd6265f930d3ac16ce05a64d7e268405b7e24e45eb284d5429d8c4f141314e956870bd412acc36a9318b8ba8893a25b2cd304820db3c84120572ece7a18f60daa38a7762c6c3691bd2a17a36cae92cae333da8196d1d682dadc854d782bd9e6371b07513773b324c0c0fa0611a8b8d2576600bca090cc14aea60d6f33fc8e6b1e539b7c75555ba2f9fa1c05d2e9d4774662d3aea9d57e43f8af0c0a4dd0e69633b8abb10ce5042ec7063d96d81cc2d534c6ff0ee41fe461ef79dd844b8b0b9f73b22fe8ca4eef841973e056062b61cfbedb0aaf6aaecae248d2feb503bad197073607c883ca6c0319dce6b3f22c29c7f83fc1f87ea4dcd8f7b743c4cc0e3a1caaef8712d71ffad0fa052a83afd3dbefee85377946ec9654e94e1b449a614fd14186cb521d6f6f891e7168c84bbaf13428827dbb157a3ea08090c320a76694d9824d3ee618cc145b5fec671198e0d1c39762065aef07abee58e0ee670eefdfcde45df42689728a1e13f40dd645a748f095a0c15ff4cc7957a0dbee9ee80913da27d00be9e8ac06344614856bbdc15a07bf4942c07558c300b41f7a15471b9e6d61a25353f03e8b873be7db28aa1c5086401d922d875395e703064f107961fe943bf1586905d6ae2f4af1553308f4660a8543a18c184d06a56ce16e53881961502c531a2aa0c7d79fceb27f483a4ee2aca9e3fc170e301341144d1146800c06ccd91edcf2d6bad16439d3e87aeb41c37eb459dbc2f2d4380dbb02db681073f340d0fd3502395aa35afe3dee3711320ef430ddb9fae65c98304cd0161c48ef4ba39f26fb1e8be0601cf406f78d1c64be9ddd5f2d6bff04f0f7a53928ac48e6d5d2c977b7747c526c3b271f458aaabd1443a02677ed8206d14552eef26847f060c4d5d849983af31053418ebde252a79d20b76b701793c50a8c53b4c9233ce9d100c6662362ce844cbe296fa7726ef63213ca573eac840c0d6bc62697efc1282051232bca60bed0b73b35f1ba64ea5c176ac2943ad5ef44c67f6a8c1fa5b7512eb298f4f0729c06621d9dbdf787726f3671d66ec8cb6dcd500fea7accd1a85d1e018f77fef7a98cceaed97afbc7c4395719042d20a3798c3b8d3a3e1f3dd9d2d4bf3a827ff95517ad0206808260c77dd6339e2f12a1d47fe6f8338c6f8ab5f714cef21012327a7cf577412a2becaef06ddda4f9d44e59f5a7916cdb9a5f9e61769bed58f45679a8c8363449dc05893859ff93c0a1612f801744cad8ed610ffe8d5301b7a3f0503ecfd09e283d508c0d41e5de165dd03defd8d7b3cc8e61a08283fa41287e72411629841a1f18a8cdf90ee12a10962629e1eeeb3378335606c53fc8ac39c0fd3215adf22c3cef45ae4f4d419d73ded20914b63cc5dc3004aed3004edbc7f376dabc9ec48fad6964457fbf6eeac0667ed02173f6f69a12944f6c0fd21a2a36b72120c5c82e921abb5ee01db7060f332d3fac17b42e186b7991e85f3fb61e830e0b7822a1d3e6ac837810d8a97175a27a12b3a703f18288b63503ec8d96f32c672eaaa623e66adb8c535fc2764060f77fb9a6881b393d3742b709a8b5286cc3cf323b7c3698629743ab6d48c1eeae1c0228c64875003c6e62ea019000d543dd5a1f4bfa0ff1bd503886c4307eb70c46bd1d9ee6918d6694a79eb0f7213d0bf9f8cbdc4bbae4ef2a938e9441d80e1e11471f0b986834404e1f03bbb5c37ff5bce6f79d767695ebe0fb8b06fa5881cb441c6741de1084b32b787dda6efbb5470395bfaf71241243220747230841a6ee40d8ac545c94e10aa475f9a694ecb72dc246fe4046875d41e47f686496fdff2eb13836d8f45ea18fd407fecf7bc9fbfa82ae8c4b6d07997b6cdac016322841a35713cfece7401209f85658fcb1937066a504554f3c7896d86e03b587fc1b0ba298ae623dda3fe0ec5d06bb048be374a18117a9c6d8c6df1abe3b54ee62ba3c4fd73e7f8abed9611a8c830e686cd57ae021a8ff0719c7b7cd27a2ef8be49f5fb32521b1b5f70b1fbd78bbe706df1b1252fa39103d72ffacad8a04a6d03e1db4d01bb2d5666cd6f45cf418ed02e4d18b85cd670f015cd87518776accb8868086bca9fd16f68048f435ea5ed53f2124143fbcfa0446a007ccc54b4c50088262682041f8a1810347d6bc77652ca1738841ad3ae5e90d4f43c4da88282f9ddee9db344e9ce64528bbc3b0b4d437fdc10c35ac43f591456837357d4791265ea641f1bda365943766d92965570be1531baf0542efeb7e18e7369308ef006c5830d052e3d9d64e36b5cd6c0d978d2d3241aa38f66e966f1c613fbe743b709507aac4ee882546e984f2d65c4fe195dee94008290c9ca651c03cef3668bd603cfba080213c61e20ffe52d2cce5ddbceaae7620af0d2f28aa28f61075e9a8a615452e166e675a75c08876c120fb3c8bfe0fdbda999a07751e70151472849eead80cdddf01663190f2ab7a5256f033203378789baa144bbe4cafe0830533ed2a2689970ca22616bee14b3fa047bf581ce79b27050006585eaa978ab1f5abc15ef32fe4d587a70f8b1b1f8d948722449543c9671818867951dbdeabe019430ef7d9cc2fed9ef82625c7b8127c327456100cf0d60b0fbddd275171a8535b36a4e08b1e4a42d39ef32291ad5285aecd8b86d87302509cc68fbfe86c62dc3f0b3984044a2b5cffbeca7fe9ed013b38c1a0a4f445b355a49d9ae84f600ad28b402acb7a6d2b8ffa40b05cd15acd91e725018365d52786832b23681e486639cf6d271ff9fc977278d7b8de72f5ccc7c5eacce7bc3735d7e975576a072318137ffc18f67a68723b577bffcea64ca14b338aa5c1ccb73a3bcf312272d55e1c2c9c90cdacc776185eda59b3acbaa64fce5854cfb47d1a512f67fad25458ae82aa65501f6218468146fc21f26315d3b849efc6fa2378460b17608ecf25c9e1760297c4f343c18ddf9374efc28de671f45c3cbf11bca47205c7b2d281e9518325fb6290bb023194c3e064d6215220dc512254b40b8d5b988cd7719ab079c96872cdf042cf6cbf47095a08ab8d40584f160961f3c0cbff0f72db16a82bc06273e308df2eccca83dfb438e225436f68e1d79d89dad9f47535e0ba0767c18100d30ab6e3940a45016ea37066fc039cd355d8dcf0ca69dde005d95c2e4c5ef8d0c61f467df5ca5653d93821b34a99e5de6f5c720e6071476322ff3bf274568c16f2439b4871803103c1eb8fb3646e3f4bc1f39e57f7c74410d7d3bbe2e03fe8a21f6545b316f52d40f4f816ce11e948e408ea7a333506fa0547fdb4e4dfc19f23bcd5fcc30d28cea5492a8addd8ba59305fc510daf68da3f1515a766064ed3f58818ee4ee678d86d8e06c6dac1f3e2905dc7600e625285a1fb4abbd2e92f9b92a60ce9a035df561290568d71fa275b286c4bdb3d8cf9b8d2521442d652f6ebbd818568257010e7f9c8186ecc7e1bff3e9172b121cc05a6ac184fcaac66bb5804a87f2530fe43853824de78b4fc1709c533e5d170bf4552674b788cbca387a849a9c7809e44056bd9141a2fee0b37be5a4cbc389af5d48089f4990850278e924702d55859208350b882c3c7a7654318aa1100aa8afd6456d0c0e47aba8a8f8b43a6d37f5a7f79a58c80e18c7d12a535b4cdde0959f6eefc5367b4fcce453372cc3aa3bfb2a562ac1368cec4d7fa2b2cfe747456362e70401dc3694ba1259512bd520eb224fbc70fc852b2bdeca3d569644021df0ff0b5a245134923d35f7a5bd1966a1bcaf7ff5c4fdf06818831fa670583d20818f505a878be496b8653cdff0a8e56b77bac685eefef57cf2452ce83a4227cc6f53b1daa28a0a2418d453aa62841f7c97e9c8112244240331251b3a5e922d92f51adfc3a19a2b845f85b158e99ce6bb7e9d77fbfd3879a1ee8be451884a112c3677dad330d6956360e587f733d042c6bd967688297d1056236ccdbd0a2c59a87b2c2d4f84d3caa5372f540dd52b080ff9b9a35f91730884f1986a2279d2ea06911db6dce741f0c260b47a9cc5284d56fa7a407ce71a3d76c27a7649846c586f5ea5af3a0a1710925e5b83da7ce272e28061ea4ce9b9920e0caef7d5cf55d061a3e5ac3452daca240e174daddab736a4e6d5b06d80cc96a44d6459e91491467f647f8d0ef8e34aa66080f73ad27073f8078cf500f37417084aa23d9c90ca12d442b2cdafcd48ed74dbf89b16d0d6183ae5b3b573bb96689c6bdd43e22fd77a473b5e851a7aa2c5e23039611e32b08ea160d02584a4f2a3809b296e5aecbd8bcd5ef82a1a92be5ba1c22c002f5260a82aae9085c4ba6a0dfa7556db0bb3856b8c4ca13b360510eefba52e68344c91a68946d7d11bf7e7e1e6f0870851f7aec2f8de84c8acde4ca008c74c11201968484986654bf092fc76e3d98c2f244cdbd198c626c21bcfb499db8b147fff4abbc2cd88c58fb7c504e6584596e030258873791acd224b9afffc7a261b4ab2c6fc056a92a9dc3454f29a100a261d6247d1ab457770a689878e6ed4b98378dd46458acd7fdacf4938cbf730949d65364b9acb14949836fbf964bb93eec5456e48a90d8f57037479e04d7a00832ac5befb614d556fa4d5ae491aa5b3079fcda72042269c9ca466c4097fe28088978dee7b7bf7accad9a1196d819695f63cfe2a8bde28fc9c2fe2e1eeb6f5a6f56155b6e93ddca3635be8d8571b7c9f81925a421b240be54b12c3150e73f2ef25072e080cb41af66a6ac81dd24ef825886e03f574caf9df9474f1193a09d7650364fbaec3e0ad70d9ad02a7a38d51a0ec48305ba5b8617e56777cf80a66ba3a3899c5f54b96ea11719d85f447a3d0c1bd46e7bb1eaf67a1713af7e450b22de89953209d61c42c5ee86a851efac38b5b436b9c8aacb84293315111083d64e3aa931f859ef48bd4f26e369546fd3d98852c5dc1cca2e427ccda7288daaab84ab2c6501fec642de72f6be8568963d8576a1e7d2724c50435317aa73d4e5dae5fb2c4de2e5de850ade5c0457b919002170a8d923aa94b0863ac676963f2f26801bf0b7335ede78e689b9dde0312f81e2d2b8fbf7fa8ab97ab67b55774bbbd23b3029c3c9d5e8a93087e8a370a99fd5cd8ead0f87b2c001739844f740f0b3ddcf591ebb10292a4981207c345a7dacc8228accd36057861750df28cb877381aef0d3ff625ba745dd2cdc04199ff9890b89d71afbb7fdf632363e4c51402140910d1f02f8ae85851ef333cfc3f4807fbe6a6633e9a4062f4c57986835120aa8d7f4f7fa9654aea9f8662031ee05410478d644607a61c2a7f42633746aede0788cf7c3dd2c1b5b1d8d7cc1ef982cdd21ede222463be9e31ac3c81d46aaecfa745ed2962b246b4edf92efd01257328d3c2c15d77c6c180754d1f963675d45be85ad43ee134808975ab4277c2db56fb2bfe8fca8669504938efae0c57647e67858778d6f7fa747997c9436b9d3e621fa04c0e981f003112d92dacef4f4225f02ffd60995c9023fa7111f41f26a04ff3b58778d0463e0c2dc299937ff9df9f96f9ff2510aa89f303023dbaf3f2f365922cab0a4695eff46f04bd9f1fc8e04d62d5f1fa0813fae4ea1538a35f5b500c28c10196b90de6fc44535841fb5df8f2433fcf171993b5e8601626e426d83a0f28ee785d090d60cf3dfb3452844e232d97236d22314c08873837cd1f142ed01cd341192c21d7af05e9aea56e2c2fbdf556b8ef15d75bdc79c3327116cda468c8a1a7208cfdef1a0d551e107ea5ad832816c817efd81010c278c09ccdf22e3d100ce5dd1ed712d6438ec4d80190919215c3a4b70d1b419e5d7e511dff88d5b1c990418d663eb31c51701b657ae5592b57608f05facaf6b15201d0f282695fc1edb93b4c4bf6feeb0818ea1abf5af5392b7737401204e5ecaef6ff7eba78f64fad68f066a416814755723d6d3df73baf46e4755817c2745e593a913c0a73c1f559e6a3ddf4bb4518f84117c8ad708159366687d871f22e67afaa14cd73199b38d0d8f09b8398e5e1d0e1c30bd929398b527305bd45d8ba57c8573f6d36520e9e780f67ba5d539a4976841ea6b0d8673e0b62ba5bf14bb14b982151d6e8b43e6fd5bb679029cfe80fae589b832918682436feacb9fade32641d705a3796580d0a77bee6cc5f0c25ffd03c9f903ef1dd39feceef660a2f8e403ff218ae63ff1f5c88e62e54b8825396aa05b762254194d1367a122a22e70995759c8c3f5da8f76fd41775155d8591ff278ef560fcf05936bb404819a9f8baec42dee62852949576af6c719dc8b9292b105ea36aea9744bf40942de630ffae4ae55ab1b3e8cea045e742df2a8ed63a20cf1cadf5e80f73d96e83ba8f494ce78a9e4e9221b58c3b1b6a675c13dac1824cffc1c7e1ea33b04f8d894242c38b111587fb4dde8f3616368208779257c1ed64298bcc3a5a423f4f410d2671c310b479d1515973c31f83d9c545bb99913767f627ce46f0bc3967cb05d33bc79018172447cdb27146a0a0c830a4236dc877de8f5593366b256307c0bde1f676c7b17e9444d4c68f7477e8a40418106723e1ff0a10902a93b3a72ba30f5a9f07816e9e609aa9b7ea573b62449797c41ea71973e591cd90c9309b9b1d70eb243b19d9ee6b2931a83657e6911b67132c4f9099664720e3332da0d03048e3c1e96cfab911fa0b6db711dc292b062146406d97ae3e36e585714e890191d7aad654b7d01324c4b60b6b2ea693621bff411e97c46fc76e9bef73c940441ae391263c7acd80ba25612020e2134c034ab23fefd98e8c76795ab1ee4e3dc95fcf2ccbc2ce95b8191b8991f292f1448b825c2fc35b587228f1a624db0a8f93f692a46c1088cbc53a9a040cd3785d035b020d2db5e52eb5abb47fbd4b98e49035f94913a95268f9cb59eed65f845bfb86e0b1e2609d41254012d74545fbe3146c8cdca226e4663f081076739e83b9b0a38bfd467738488bc4758ad4f5c5aca0cc092cdedcc25f6729a841e843807a55380db9f88c18dffb2431237a7e02e3d35b42a0903a0eecd6e1db4dd2b11514d05a99d6851ec9bb2f608c25c6433f2fc1fc9e6961aaf7c02a3ec7fc7848beefbd3bd41a5938764fc5d07306b2eded698ccd2fe73e4d00fe0ad85b7b6da2dc3903efce6da493abe560b6a541041f3253d8ddaafc031ad16a0107013524af422986e069b591ba4319af2efcc4bd5d25401727ea361479674db76fcd128ea398ee7cfea85cc99ea776a852367e432a215d6aae41c9392ad649caa3fb5572b63fcee93c639335f8fd567eaea6e0836de040ef96ee7c2aa8adbc5b68679ed81d91b4fb35f244b75d65747e1de3117a928670d605330a57511b8757e1de8d60b946b2437124b2e84669185ffeb6cff6825b2b53b51424cbd3d0846171e2159d23922f8f83452803481d5db775947204021df81f86feb6bb111f7f9b7ad0408e53dbe9f125f7e5b7c0a08f59a7b9715726f5f79a910bd95f8b6c58ff1cae7655f2229bf9f5707c9ef485102a33a59845511542349ac1b92e8bd2a5071d6bf0a13288d7790401bab7d4bbfaa82804fabcfd287feba30b666c0f378aab34f76f28f6bad1ec29a0e71c4ffad982d03df17f5b0ffcac23ed13becafbcb929518a2a317d05c64b8ba5e7d871050ef71b7e2c1af9483c04efe8e0606a8e93cdcd25fae39cdb8fdc97756d6d2eaf51f9fb0f5e314f875f2c6859923a9f8ba8970641938146bbe12ac1f99bb418c6382d5a03847357d67c8f6d5e77cac96bff7f995fdd905f9e0c1a9e4b718a5973f6fc203bd28038dfe5b1efb5d4884fa38ecf97c39583cd0a46e8e713e026a7658333eeb9ca6c76557c86cf6b1e53e8842d7e75d2ef27f3b7526efac7d43c6e39bc02c34f2575eee74fd8b3d185b283f8968df61cd53333dd5fdcd2d8dbe6d6845ae06e4792ddb89b0ce2dd3e16d502ac5a448eaddaee7ea59a85aa7525dafe9c79cf7fbcf22f5ce616f139cb4e86cf3812572a8fbea08a0d836c079076a6c07219d1327fc10e318a44917401617646165f061c3debe9f8f1b4c365fb08f938a6e3aa671c61b7cef8fea282486fa02d5d290638566755b2d4cf04901a48d3b8a567b324f03585b918dec646817dcc02e176cb38c878a061223bbf8e27d4b10c3e0fa9f5fa1e4223815f47663f150c7c1c1048b942bc60558a0e132889a8256a4d97ad9ff7408b309e2b72f58f06bc883eb101314703e1b00557eab1f1e402c7aa6a78b20416c5c7b9dc53b52b67295bdc494486e49225932d0d5108776bc5078f0797e8258e3fc931c4e1fcdc4cba19a1e15c89d2563b23a5a2de747ca3fa88271d9d2817606593498157b64894730ffe04bb92fe9012e1f4a761a88b07c20f892a3ea5d6819b1662fd4dc3b3055397ffb1cefbafbcc72145e9f594cc82a3dbad0b834ddb8c37a160a40d345e424603d74f98a7b3967c6b351bbf2ec8367ed839f7dfe4fbc47e2d0a1e0bb63f38c669743ea1cf4630e5a0e8b5d2c1bc2677d26226f2d8917ce1dc688c15e298771c205a8cc10997a78a2c6e5b405b89b10a88b321e40c466809da64c4b34e0cc433f924cc37f860d002ef2dd7afa162e5a7bc2bf290d3c8d416169c162cbf41b1fdc1aedf0cc4c2db0d4bdbe47b1ff1ca950770e1758f3b086fa43d27c2f56bc88134c4ad1938870c3b7374294c44637b2c87e67abc65bbb3895041045d1a9dfd7dd0ac3bc93bdd6c75c07911f4024a6e8e63b0a6ef9a37ce44f73fa5b14f38d2b3ba2b3393222cd4f584287de60157d7eebaab2dc382db84a49fd56a1d32537fe414df215c011a30283242cf4062a1d8a94ca499c227d28ff995507d62a237d1e4f2a8e5d0da60b1abf9d773ca14c1168165ae60ea3849c9490fa06f1930e8217d16012567da6cbb7983bc8cead8b3a3f92aeb2848853265b9a05be638a7f87d76a8ccf528c3160c8ca4c7e1742418ed1dfc462098d719ec033cb85ac9c59e785058bee5297df209f94aa566a479a386ab144dc91c24db44f1936bede4fc464ceb3f706d24aba698295492714870c3c09b2d3857ff77a14b879bc23ac65a2f86e26f57b72d6f81cc38f0dbec41097828043b64db7d137440362e50c8a2baee6187282058a03deb642519b405b960da73ff18f986eb22844099f82bffbf4be9a7ab970a9212c634b30d54de6cfeb1702cec640f5deab77843b78a03c6582a65912b29052b911dc22daa09562a43404b79535634798595ef8e30f9d8cafe147e6e0810420145f258c2c3574348f7829cc640d0e6dbf6fb8d827aeb780fd7dfb978dc2d7a1ff5f0234f6a17dd0ff123affcc29be8cc0bf42447497d5ad6bf15ea26f74dc740dbe1020043a7d720fb35e49583a6ecca029737d2d77dcbc3add11925546187b723c410c0fd636fbf7b336032c5bbb6bb78af77e91bd1f6080268cd994b2ff880807a9496daae284238e5c14c0e1e1850b4b4fd9fd90f09d214e5991c730cb6e0748f09bfca2bc6df58efefd2b795f03e851ff207bdf9e6163f5ee7e8733ac288a525fc795bf722c1d64ffc3b974fbca8a2b953efa66918e4281ca589618a760f88c199eeff957a9d1fdaa543c74c2d6d1d842e53b5f3efd69a785768bc938f3379c5c9a8458b2ede1206c57694e1d9ac7efb598347b8f4b43c966476ca53b3e82463a25fef659cbefca93852cb845e2beb54287056e29071aa7daa2cb398cc00545b22597387c2d663964a1e3e9b28d72b762bdb32f1640cfd6a02560325779dc05e206490b2e3a99fdbf3125e1fba422cec746fce94d9d1de734405df1bb686cf37520074db7ab9a5435e28135432a107983b15f9a18dfde45ec2ae41e45aac9de69361bdc781273c93fcec071e30eb80e4189465fc16b2e87b854a83a030881fc7369b2247878f7a9ede5c5e16fbcb60172fc7a428bc7aff7db4ed3fa04bcd314c0d12501791775b2da29167b756cd2bf1400ea36f023e22d3122d4d2b1e27918d8be87b0b8dc9ad3d67ee336e649d6c3e2b4fe0389c1f315ae01cdc82fbef3816418772c1ea939388a84447ddbd7807c21915fdc9a3c2ffdf9e8333d047b83c81bcfd38c6ad12cdf6bb6ee7709d14ee1c946495189c7c0ca8e2f0f66a58fed7b285b74f15a867d7caef94e8029b62fc87a251cdab29be7ed24b8b41f5807e4a917a5640bc6ce91ced9dfa96bd5b18006f3f320d73effc97c05396e269acfca17c8caf6c5d1a9d4e93a96402c4b78cc172a7c59142eee9a37f01fe7ed2c48ea1f4d67ebc0e02fb1242ee9a83f3e0b8378e1629794fdb55565cc595a66c7fea8f842080138e3193e389acfe176a76bd95535bb583229301a8506264140bd33d7a0445fbcadbc9598f904f3a27a2189132f570ce702006f1dd02e1e8f7c3b25105e4e96d4a2269daa3a3f6709782df44c21bd454c990c77704e81289202f81f48b6d3d0d2b834c8d4d383c8bf8621d8e3c933ef546ac4e670908ad6c49e496b8f0d6a1ae333c6a2ef8936eb839761ae64ae3c6a685809293d3b961398638a61afde34f65918b4e91cba2902db8cee8e540c84e3a2e545250a1d1f699c5e4f2baa538ce39ec527e72f9445beac101131f0eaf492a30319fb56fb0b5dce971d68750680b61149dc10a31b3ee4012e1cfe33b710e40fcabdc45b748a72c10e86fd7b62e411f29753938a7bc26d91471d9ef02544d1d4a9c37b083c7b4d5ca330683ffa4836c33438479ce0a4cf89a558ae46ae962b231b68f4b86c78e378a40e0f9be00a3d5eef8eb4abe10e1bb43f2f1ccd3cfa4f13d4339374ef40ca7e05d7eef26df8ca057de997a46d1aa3cca67a32d952825bfcc0ddab0733b2e2905d3fe98d0b25adb2c7cf87ca64eb6a4b806f9b89d5a74530b3a7f7f027b6f38c0908944d039a0b7d437e6c8f11bf049e77b9e83d88e8369ad693133a6d918b464210cf183a7d9487a7b6f055bf54a514d5df77baebd3ce45c1fc461c41f288f700a7110fc922da83bfb5a1f8fa5dc69fe2897c3c4a3ae98e34e33779bec8d9365667c0b77ff4f99b9ee72946796a9b269f6d56ccd033b98b05207133356aae51a4cfc4b589a923c23adbeb6f7d4673defe73e92a505b1555bbd240208259df931a04770099e220f8179c70f26adeee7fdfd8adaaafb434701cd816d7256796631658618ca854e74d8a6ec9d1a4b5edd283c2eef85a2a6e6791e60a4dcf41b02c3cdef21eb8226deda47e9b38d92100a8e84b7039bd62ae0c951c60f8888e7c0bd204aab16d9b00a13b1d61306f870abb17c3a43c8adb06874cb2020d47422c332fcfa4dc832471698e99a64f1cbd862e9fa2c0fa469b77be190fe9e1f18154c838950e9cb4b7360161a7096b74c6df7e982c87d700e4f8b1ba8580cb3b1f1f9585da8128b09139fe371fccd3cf1075126c3dc534a704333fd83791c8543f5411dfd2cd9a02fe1a62002392606d01646134dd32a0eef75baba56626f41370c1127e4ca5f47d3f41739f664dca4eb8deb75b371184be7f4b0dc22a69dd98aec1ce80694e72b1eaada24587489408d707d66136775fc63b0b746e3b5423677485603975a78c29f956b2f944517bb2d66fde31a877842cde163c094e2eb0bd9298b6280bef17a46d80b59b25155df3deb9ec2f395ea177c4cab596e7b055f69ee0cbfd06b83b28cd7f32f62e2ff2cad698f36d1f46f5c4e2b74c22975e032a29969b8146b480211371bf95aef87642395847614e4eb190f2261938b82c089537394dd02fa6ebfc2749ea027925e3ce45f24b8cb80a1764c435105da672ef1d1a27dc776c1ae256069ea71beeec0774855f1cba35a978ad67adac1549e811c833f4e5618218a4b141916f17221165786913b724865a74f38e48b8a950b8d68d445a1b46304455384d19efcab4700e2877182bb2df0b34ca98f6935e8bdf12649d2562051baf1f6484eea18b4cc303f71fbfd852bd91fb9f08052768c22eaec7f28c75a77917176a010572c1cbf3e098e0b33236a8d73803e061be5da3918c5eda3c4c93424dc0763ab07e417158b77255efdba0fbc1eaac4ae8806a2eeeffc78d2ab1189881f1b6d1e969750916f67c3212a4c87000bed3206b84e6c50bf4a49da93683bccf1f5d441879da72373e7be91ce9d323e393983498a649509c932d976e9f6d062a093b72367c1a0f73e31d62592507a6510a0f9cae5c3106daee23e195f248228c4dbe77c15a252586a556e4bd38a16cbbd7632b64792c0cbae0b5e260728566b844b0d798b824429b6100aa61af3707c7c8607a414fe90bf21be37aa4de51b02dd4f68781d92c3b568f21f60d0207bd58259f3c6b286779d6038af61641c4dce9ee079b68bfb10e63bb1c6f25c580d57f9b4e6765bd1b9aee1d8c4feb59af48fc59b4e3c1d51dfcfc0f52355cf3f0bc10e260c162782ac1d1f3bcb0d61c4c9c58f08dc93a638755f97d4c8cbb233593d5228690a62803df1e7a71cb805f5f112c47d3e40a82d0eb1841855470e77f84974b87ca876bc5ebe975f6c0e8f84f9374121204f3c814bb28af37fad69593f05e7a53d682601b485619a4002efaa20d2f3c13e4a0160eb96228a5e76785538a64e642c65de509d3445a1bf31244910802537d45b2719574be08f2df6ed140deff11e2e9bcf61e12663475fdd586d66952d2e95521c78d9e760d9d3d8f401d14aacd064fdc8f98fa939f1368274157699a6a11c642ca0666750109e27073b670dc4d460cbc16b0ad16c3e6b6a282cd6a03a3dcf171855b6096a9b5c26aad1c557cf9dd6bfe41a0da9ea3a306a330b4d71023bf70f00aaaa89e21749de20e2fabef0788521fd21aee5f716a090f4e33c223384eb74506372692b778ef2e18f57f6bfe728d07b76ea5a5db672d94b731312053c75af884bc5a241897a0c211095d25928da8256a5a4c70db4dd234fcba339cfe71d00fd1e9b8a17bdf61dc384cd9ff09a1f0cf212c588e6d270525cfface497566a26963c70f1af08e685ec557ceb0e3f5f7ac06dcf70ecead6ca81740de11af46c419a13a2bd323c9646d7150699b6cc672690bda7f154a80774352fcd11487cc8399ba29f96b2395fd67f7c8ad4c2828aa028f3ec00046964f4c83db7bb7869611f1fb7b7be1501fb1de4c25606a93c32aacf80185c9f448fe0da912f718473f2835a381fdf8fbbb05857555a9896e95cc27a4fe9c5d76646a4d9d063ba6e208f48f5ce8346d4ee5d64d123a7a20580ee480ebe605c90e0d18262df2d53ae4aeefd3bf1c9e3d87130fa2faf160d2b94be5e4f89b628d35131082076e1fed36871f8203bdbd6d949db4f73969342164cfd1cbb86aac8c627c73d9a10a2990984bcf4c32618e8c9ac65c339cc283eb50706adde5a7d901d92c57dedea6ebb6eed8c5d37fb95d80d76a867b7bb9b81bd8feb47b0fded31155695b22012b192c2ab293f08a0ade9a6ebb92ae752f0690383e59f1af91436ba5b1d236e18d01f37bdf3336f815db8ec8eec46368fcb4567d839541fec30d14b960faa539f0f8e7dea1ee3635db48a3fd02562f8c6d059be7ae61386137c6348c40f925f46072f241bec28efba39965638ac31d2329d9f3c5fd3c22857e4224507123af02a4c02e84f4182b2197c5c16fe9b485b48d7ea6cee6e3cb84fe64b30667acfa421a9fd546dfb43044c5f102781bc4372867e01e3dcbeb251596d5e8e31f70deb1157fb0ca69a1b4a338cca966d5efa47c324132ad1f7e186ebd6723055874ec9959cc503fde976347c3994594abd212081c94f628f9e224a941e2e1f6252bfa397be9ad4853ff53c4f7dbf0c5e15d2aee3aacf44772783eb6f7c981b55d6ff4f9768834ed432b68c90f31e88e7dfc8b00a05fae91de021fedf36ccac7c1b0d0b7d504793132d91519776b49aaeaa5a0c268aa83830e85efb43cd166d2ee870224eb0413f1e41527b7fcaa757b1c6d28a6b2dc1f5d3fec1150f4be3432acd38070ed5190f50859e696c3507f2cec74ae964aed4139344d3c6d61d9cf91d5a0d2734c030105b9c942156320baad8c15ac74d0341d3a506dba491b6b03b74fa60c26ca8ef06737e941fe60c9d77eda52010ccc51abaff963967407aa3f2d5c221822d5326ad52e90c0ea99bb4dc2a7be40599a1b7f2618bab2fd030de49b3fc84721dfd0f994e9cd1902e481810139cd972d477d76ebd92b04eb6874c8fb62292f3c0cbf739699337fa4bcf733ddf6fd1bb89de543ce8dbf81bc219b37902680b36ef002cda1643879920b05e0fe697a68b9bd37289807951acb3226b55e848ccd3daa50b1eea492b29fe9d757d6ef6f719f24d2b1256bb12e0cb4f5ed3bdebd7a509b50c61eeabce60c497652202bec5c32dc9da86449f2a53d315b7da16ef574cb15bbc9432f961a484924ebe8868ec28d236f3973d89a3c3d1d20b11f639209b0ae4f3b684609055fbb85081fe9f88acf0dd80819ad156787767d4789751113a227338bde2be5062991d707bd91c63bcde0d4a2c39177d348fa33ae596f55414b7eb11c0e31a2c39bf021772b81d16570041dd823fb8a57cb339141b51d0c3fa0717d124fd43d9d5a8cffb0b149c8700890fdc310907a886b600bd83510976041a43fd0709218e2f414d386d6d35fb24ac13d56dfb13fa5470ed7c193fbd422b7f0975d73519434f7f935419276f2b4534daecbeff91c747d91263c79cfdc3c09eea909af0a138fa043e75c7454ce3f80073ec6edf6927e1508a4134287465a17930f38774ac50fc6602f66a7ad7bd9801c587bd17801d96ac689f7c62a9261d9f74dee6b0ca8452758a87880c0cd693f7a85a27edce50881dc337e5f9a99267437991b19d83f8490266a0f46a95d98d516995e968a2981eae28526e81dd8dd7f299d799301fa5bf5747ebb9b9a419ee4d627e140e4e11bda80283e6e2e1c015aa57a868c1de7074d9c844632aa4e703b4a69ffebedff34d4186671b912eed1a5a9ef6fb200c0e69496adbf7378fd42e3b411c37a3047d0f7a30d96bacb2332928df558796fbf7025482111032ac964675e108536ef017d5d99bba973eb21e5705ef78f821ce60ce72f9e79a806b50d7b5c8f39f83161a38ae8c093492d9ea6f3b7a931ef860099bd9d5652c2b70ffb6642b91228cb7720eece733193a7b469045b273d5c9a8621210ebaaaae28056ef222c17d070cff0595c9676d70f7de9b2f347aab8fe32efbbdca06135b2c508d046fd7afc46d9f3de6dc7d66bbef3f70fcad1804432633a02111e691f15fe11461b893de8cd1a068a5f2185cd9dc68b36dcc36d9e54a2b816e2eb69c44ef2700a933f1c4c266389994550a0d1841d97e50db67ec37fac7d8c8cb00de62ce5d58aecda6bc8940e459ed25702c8682f4cc91742bf47ece1626f9f9c6cf3fbf6ab863e4226b8722c72c1181f5d0d65a19812e6262bfc30fcd1f712df45bc3e1ef093e48fdd1aa4ce71bd58ef826a5f003ffe8b2a80cb0fb67e953dfc2c6f2af25abbe2c3dd5f2e273d50fb815198951b59505397c80374a1c0ebc9baa9f5b9e3d34fb4c18c3e01c41e237090d21679d33350afdd4a4dac8f84d79f71ef945825b309a231bf94c5cf00633de9359c06bfacf8b7dae4197f37e62f1ef6873ecfa6c72924b757affe544ff870fa8b3901478c3b675c3d4265483e162df05eaf3bdb3557d31fce0afe49c288d9440b3d23f5e87f8af664ad2aa4f769ee431e3e0036f5761fa6be19dea838df59f7a5dc56b82a37f68dc4d2936a6956f0f7905ea90d41b8a09dde4dea84f7bf3edbcfb6689f7047150923b2af98771f7ff1b923a19b508a9f9e185076e9e9eadaa4a97489b8fd28e7c457adbdeef36b0193dbb179807435e816557cb4b387d308ecab665deb4cbd4529e596f8c14d3a04c2e2b84c436c38dc95295a9852657acfb839ec145e80890127469b55928cd9ab5cca7dc5299bbc81fed686505156cccc684a1a89e91c2341f2933260e0e6ac9a0a97268b1936d0ac17f086e4e5f8a44a3c95cc4dab0922f4152f23a329e6861ee5eae378a7c4df8767659fbf4b3aac06dbf067010b30e193ce489c60cb7dbebf05067f9f7a5ad1ec51914c860ab5999345106a97c3d921c8efcf8ef7a0c9e91a8c6555213b7429e35cd06ddc967a81e5ce33926138c366ca0475b1004b0debce77098182a9229aa32da4943db892c0b54d1a01130180e1428150f97a80fb69df7aa5fcfea6debcce2ce9585a9628133808d6759f0a904013a20602efc5058fb932f1222e80fa316d7c5313d1d35a3b23d82d1d59931edbc552f33444acc4920adee4000d4412528e7b0f398ce9e139f805e68da1693b8b7ba8b470a2e1c8617758f4d088154b4e6809820747f1fc5cb5e4d1c615dfa7c535c81901ab699a6f336f475ca4916e1c5390630f298d0fa2df68df0569ad2977d3cc270d44eb1d8fc0dac71de2d7617d8940599e36d5d07c08ad337b448b5a5173529951fabde116562c34d9219e0f23285bccf41263f34ac04f159be7d994a03e8a1e70fe1fbbfde13fe27316631434226f4b5a97af75fde227a75ea292e16963686062afdee4897443d610f275ffeeda8ee67028caf576874f5bb1196318594fcfacc71ffa850b7782a86efb8391a20240801d6ee257ce107723dbbe407aa29176fc844ab2d3aee0c235afe235376ee96d87fdd1c428e31594b39536540049f3e1c7aba4847511ce0663a87517eff45b3f81a48d66b4bb606661d0d586136a335fddf700bd56d180370e5fee56f56d35e760b47137f56a773c70304640622f1a881acbf197eb4d5fef14c35e3c73a4c41b839868bb893049dc105300ebd1422881d65742accc01e5a4a69dcef901878c5d95e1344cafdd527c26c4a46833daebbda3267dbed7f5bddebaec1cb59df98b4c338e4ef02e5044cfaf8b59c772f06c8572a21dcaeda871908d83ac4f7d8c4055cd7a01d533eadb2cdb4552926ff82262c6e0e5dbda2675228745a68f56892441d84fea41f5a3d2efc261dba2bedda38ee7f2be94c2c1d3aa155d0236199eff6e15fa7bdcf6d74fdb33d49ca8ef8a42d723f48e4a767200acd40806e1f6e031e21bdbe9b015a6239a937abbd1823e3005d06b6f44e4a103c24687687d4470589f6c757aefeeac95995f2a86869526cd7894da96ec4d6604a427a8f030aaf4fc8c65bc15a2696bd253215134c2506ed34fc4da690b734154a8197a003a11df3e2068d6c58115062e12ae9ab1f2588cab0e31e41d69ec6f99476c6ab28ed415a0098b1f61e26aada11cd6a6e390541aa97eed5710e259aa6454a26ec1b00f34435c7be86a50ffed53fef342e8663c9ab1023904714cb0fe2a3fabfb95c9d14065457454724ac2851c4daf0a3621d9d7be029744547dfd9696e40ca79b93a2a74c7108c600ec7f16fe371e7f90a2af96db67e7d77c297521f2f3098fa87c3adbc9126e673144b33c5206bea2e3ebba5f4cd856e69394eb914f8d453c7c63bfcde87883901f7771aded2a3e249e760317d129437004fda7aa67102d7d8719735de3e273e7a7217772b38068acdf235a6f729899693a761250c0b65202c979a880f53b1289c427b015b660a4951c1875cfba0ab58c3a13cf1bf2a5746a7f89c88ca5379dd53099bd72b25744812faa8fd035dd831ed6e1b4d1e7a0304c81a88344442e6036a5eb9f688d25c6caf2302f203e9e87930d201cb77673de8c50031c99533ead74978fa9b4313fc1badd4782625dd1bebc4603d16f3d4a2eebd2c6e0f36195ada944d44721e8143e417550bb3121fb2c0b31358c7cc822c28db4c2bf1ee0be48bfdea21d6f3a7016c86190bd42c5876906345283499f460003a7cc2e728859454a7ee1db413b53e6d89585848ca8b105be8d91ab6d9b44ec4ddd828c3f9301fc3739cff33ef5879715458f7672db81a10fcfcccbb3082a5b0eee706497edaf17ac58031d2f1c8c928724e51e6cf1bc142b3966b355efd8b34942683cc2ee13ea75dfa06fb261486ece04c639eafe2f2f94ccc45efb3a7bbc39bff9a19afc8968163629278977da7dae99c89eb82122bfdc6f8f4c9aeed19f0264547c7d5db13378117e01cac7ad68cc7ef607425c7b5ac9a7474c1e0e9946722369d52b53c434408227afe91b7da5b74bbd30dadc08a75d0811af98ce7294e3007e1791adb2b6db350ab7ce8d74de9875759ba7a0733b16decfda99c4e2f61c59e61776ecb06d7319629b3efa7b564828c5e3b75695fb0e809c5bab7e59cf0b5b6e16fbdeac339b839ebb62cdf799c0c641757203d8a7780381ac4ddb35496a1a9e216d0439cd4c68ffa85dca73ecfe355e502150b67852c555b498f12b099e01094347390a7b95d024e696bc3fabf5d370de41940a94093ac272a08e901cb5bec786dd1180633b10d95dd0e1221a92a5b8c6048cd636a9f981efe0514772a3ad6688f2953c4534ee848a2652805fb46684e5f706b333e9a90f9f4ae3652ffa60388e90c2442145d0d1633531951529429c8e8bd6d1e36b2ae2357ec5d995c8c64a06c5f0e77dfc80c34fe2717ce5c0a56ae202b14343fb44a8683f9ccc73a388de9d3140ab9e2b5d0cd4e0eb7978b60a436adc204beeec300475cea3ecb81e6e7511eb8bf71cbc73960fa119adb2f2eaf599956dedf15cee1a397ec28bec054910c3f01d34d5bde3c524aa0e522972f6cafc2b41d6e37d01316a5a53f037e6a055d0e3430ae26e93cc3333cc3333cc333460f9abfb75f5de2524a298933f452ff0f22774a49ca44b10e06fe6f38085fe181d66dadfd56c36d0e080e020e38d820f20a43ba9ea68b869a2cb9c2973d6fcbebceb62485482b9e6f31e4957e1733e3ac3807799945bee72c08fd2a92212394de5fcf2a8f2a1ab1f65e1a3a8fb89754ac5e32a8d3d93325362adc607e59655aeeacebe88ac82990ef8278b15d8ebec91f66ac2996adc4d397cec718df4a19273dba14685952665e3aa6b66e376e440002387e7825880e0f502859102185da9d59f4df536414e9317fe1532b644bda193e821b421011c5a65327a5bec3760c5528dc11b73e5d3a08b53950a8e1e2a5d1ebf0f4fa27dccc31f6ed2e3e87d2136c50da1ffbdf7374e90a851203914e1c5a2ea5267e1d4dc739818a298d67efb209ae6aebb66531cb4b214dd831df9db89e87d07299d8b2d23b5e6e8508cd12443091a79bbb1da532d5f3dd2a72896549d8c83235ad40c4126649c8d9dafd789ac4150ae587fa0e868148258eb983c9f867fa99cb0a259ad3f13fba284bffe0164426d15e7ff4587f512ab640441276688e70378f26d38b8248248e598ed6c955b329798b4082d568675ad0922fa5cc81e306228f40af86c8709ba2746950c411d8aaa61aadcd27e61c81482352265ad4984e743c7de1c8800823d21d05de3f753977c8ef8d9aca08441681b8fc0f9d29633ebd83f4e8a1821e8828c2d68cf1f8f9584ae44a0e1f3d7e748042f1d1e347874024117df956e6fc219be52422ba0c17edffbf72c9f323042287d04ce828175e4d78529df8103184b6698428d982ce389e1e2285a863492df74f97cd26810821f6d20f59f15c6a4fae502838cae017388e1f3dcae017804164108530e5a2a9caf4f5311141a0aca48b99ac644e5f2b39727000c70f44029132d9bdb6bc73298480e8425e34c375ff5d50854231227f48ba34f3161244fce0cc7e974acfd69ce20f0a2587481f18af519da46688953305227c38ba649a6ead3e299d17d9035a963f64d4cf3b1d9d4a19fc82e6e12ba81bc603bec38719644000c70b44f4b0f42684c9d9380fa68b51b44769571b79a840040fe913194f5887173b4b574e7a780b82fcf01de480b59201913b6442bb4dbf725b3ec9021c3d82f018e302227638b72ce2c5c5a5bb501f41a40ece6a4adb574da3ad8bd0a196427510fd79fbe322328735e6a4d4c8dbd6949b1688c8815751a6deae5516571ccca1d46485e9382f6b2270c8a53d7922d5dca5d6de70e79616734e671d565576ecd0131fde2ce206a44bf7ddf3f29796a60df77aa7d12f2d226cf88517dc6c4b46e6b50431e304385470830438fe04ce2300541059c3729d1e9d3658e528c7b8310511359c74949e91a93f53399c20928605b59745d31141c32fbededba989ad8f2267c84b966b30352d85ce2b22665812a37cf396cbbaa02e034acd566e6739cb221132eca3c4837677c54b3f901e68096e98d5193e821be5434be0059131d47d2e69d2527cb6f80e6d1e3c44c490b664d24af63b2853876111e962c8884cd7eb80c1f9785ae637f505617fa1ce52cb76f3af88179032b71b32c38f7291481796ca36ea9cff8e92db41840b79cbba2de82ccb6cd22d9ce1059939a77259934e440ba78cf7a52caf5e38d9c9c98d1b226a10c9c2f295d01f77170b82e88e0f50283c3c4810ddf13f44b0801af96f49f75693b55ca1bc763f93a94454da225630af6cce66f163cca811a9825ded92a7ba58523faca040840ae9cc19f1c9b494712432855b6a39c4e9cebab59b881416aff47d8d089935b5225140b4b71ccee482423a9fb83b552d2e652cf28435bd29111ea369f5a888131a3b3d97776ec272124a5d8990d172dd8a19404e44988076532f0b3a63d04166cf1059c252e79ed116e6d26e501c449470b5f0f132cecc0bae8924412fef9c3ee6643e1241029a62b37d38b1217367032247c075a3cb26611f34781633322062045c9eadede8fff14fc4437d0707820031a3032245480b1fe6762d3427d18a102119e62a73fb330c731aff6c6f2d66f81046dba73c95daa942a1840463dda0d26c4fd88b8bc038938d09e59aa977c42684fce2b1d5bcb194daa77f728c7123004c08f1451f364be32aa362f7e21359ed635accfde1059ef142eea47ccef25da1507651f5e5bd24d3d3b821ba28e6bdc636e6c9acf90a85920b749039c76ec6aeaab642a1e0c28e9d4995a696975e5cc706426eb1d678aae9dd1ba16e8542c940882db40fa66aee65391708a90572c24c6d5b834ea75768f1ef6ae61332fd8f882b14ca074266910ce3b25a8e0c6e8320441667ecd1b3594e2d66aa2a144a2c0c5af334e7caa453b0e833e9746f532e0d444f3410f20afef64c74fcd798a5909e6020c41589b6db2c888f659d7a854269c52a1ec7ecbcd47452aa5028160861c5e2b7582ffbf267b6708542f97192c303377cc7ead8b1439fc718405c052767fc088223005a0859c5d7eda1d533baacf20ae5e48c1f415a158c9c1af51df3b40733157577c778e9341da4a8d8cd65b9aa5445f48887192a083905f6b3615a96335010628a839c8ea6d582fee408424a715cf1bd76cf973e0e8490a2cc3b9b2d78262dcca642a1780a1945262d35aaf57d74fb2a140a10128488a2dc53255f96ca3d5758a1507a74074242b1776c676893a5f3862a144af3c0105020ef547d18d3b2982b53a15036e41368e1b37f963e8be1d120c413b76c9ffccef83176b272d289e5acfff2c9f88f2d27329fcf1e2de87e6f1387cd2033f34b2f4a6e2a14ca090c4234f1a9d99596e5fc0cad5528141684640269b1214c9e3c358f1e3a4e5a1082894f5378d0f112e69eac50282b08b9c4732e2f8b0ea5bde2c5db1266613baa7d88b2d7e013422aa1650efadef3827439cb308379e8a044aa64d46ed0593ae73a892c932719fb33325baa42a1b0204412c87b6530994eeef78b8990489872f49b8be7667c411090b1831048785f371e9312a72bc48ff045f1524d7e6de55e19421c7116f561469614d1fa3682f37441cd09cf9269ac4239410823726f29bc948713c26517610eff2c9b8bb525b45404fb3a4af8c775ceefab109208af25399dc535e5cb398840cde871973c97b56a789ce046f3d031821b3770e020e41089ce589eedecb33c9621da6b49cfc99a3e0d7e2112cf79fdb34943354b8542d9c10fd744082198199d46f7878a593708538dc7e0d26f9016626f41a01e4eb36f6bd0252027cc43470b420281fcb3f7dc2054e6d84200714713e71b5bacfb13fad0324e7ef408a23308f9c32764ee39ad4906d9f97390810307853288103f702f2f8a0a7bc9943e5578f4414fa3367c14b742a1f0212d878a7859ee7bf57e41c81ef4bfb67531442635ab42a19c84e861cd5992593f5a2a148a06d18e41481e967a8476f9534a78c6d420040f957ecf1cf4ddb6e0598542a140c81d147b51b3309649144a8e103b18c4e9db6f6b49e5572175e8ae93f430bf6e9fca41081dde90193f64fc74b555c81c1671a7c326917b5e2223440e7d8e793da585cc5b323742e280a80665d52fea7dc873e42003c78f1e3f7e2c21040e97bb9d18f115bf8d3969e7c1020aa58710f2065e64cca7f7ecf217aaec588d41881bf2cef27d7bb7a7ca741bb00eb52e679a4684101bfefbb76a7de95f6a7105216ba825295e1bffa5abcaa881f71e21ba4f9e86acafc673aaf5dc820e1ad22c5599d6b57c32e533b819ce3357c6ef1fb119ecabded3d59957ec5406fd252de6e1af3dfb4b064d940ee9bfc9e5e01903c2f3d4c8f65d0c7a99e6ce146a4365160646747f734bfc788b826113328cb72427d6844ec817103b1bf37ba64c695c5e38ce89ccd351c34b2e5e5dd8c5d15afae5ea03215cd8b427f99f4b8bf392bb055f479aca871bcf3395163e99e37e4bfbf2b6fc1915846461b1429c7ac93f6589bab0f08a8f52fbf94ff2722a14ca0542aeb0a03ec698c73563fc4f8fb187102b98692efaadaa82632e8bd75f7e6f32b4d33108a1422646bf26b1f4327d0a6c5dfc67fc5442ceec8210295c32f7c7a510d2838a4f42a2d0affad69ae65132760f8102429379901f932e5b1507214f58984f1a43944c2f67614188138ca34555a78ee98369406010d204469d751213e529c592410813be538f9fbe9e39e9173b66c88007214b30e588d3418cf6ea8fa9e80851c21fb37d16b46cbbad9f9024743a5989107af2b91e104290b0a60e6e1ffe2683161f841ce11837599d50da345e6e4688111a61e237731ab9d22e4908298259b3a485cd9c5edd414308214297f9e9731a21b4bf2013c418c6316851a525ed50e223f340450c617ca52e49d913a24fdfc1705e1637798899cef0aa80d17bf6192d798c6739f88b5eb0de109ad39b8b396788e18b4ffc9dec673da57df5a273793d4b76c9e9e7ab788176ec32f521afc5cf316617e6946d1fdde541865e47104317da4817638b1ea35fff200e040812c4c8c582d906a54d84150a8587ef38e9c1e3c43520062e6cb16cb3b43eeba77dd52d1ca5b3c6e4f227399fd121862d0ebac74a8a07b1fde255b5d85b7a0fa75fbf4f472088410b566d647b98fe182ecea2f620464b8acb7a7c1143169ab628a3aff12b4c7c03c717c488053fdaa3ac7c85ce73118a010bf4b5a4bb3e5ac55acb2bda582b51a231d34703b2430c57e0bb1b636a51a328737120462b4e6abbf5548d878fdf12c460c5b2b84b2a74d69cc3b20044418c5558ea2597641615115da962b93f6dfb75122e42940a43369d88e7d15bf6a204315061cea4a54ca9f9e4e5ce0ec43845a6e4bb42bdf23dd3a630d79672ff30d6492f314a714e2f7856cd3106c4208541495119b3a42088318ae3d8956eb7a4b307e1988118a2488fb8bfc90b77d51f8e7715fc102314a5c76ca1646a49e756397ae0cde3060e3588010ad66c94bd1cef197ae421c627966f7cdd25dd22f4596278c2d09d37e5976b1ebd83418c4e2c3e1a4c5b0aaf8aaf076270e212254e94581d9977408c4de0b6ad7183145923b54a0cc4d0c472d499cd2c9f4c5a6a8542f911a404373870830c1c301023135e888deb1ffef26407138976f1d2e45c7661cd0a85c2831e0f04312e7126cb5d4f2ed899f5150ae5063c7400314304625882794b4d4d31a1413f2c46257e6f31886d265342f84a10831288f5d499be475cbe5402312651c892356ae454a1507e98337e90110028882189c326ad0f1eadfbce1d81189158cc92fc9c1fcde355554e82f80d02f68ba9710583cb62f6bbde8be9d9ac61853c8b2b5fa365ab21548900046ee4c8110108e488000442b050a30a898a8e3e76265ab6ae0615b6507ac254977c713d534896b44f919dbfa4c7526874566ffb912b14cac9193f82a01a51406490ef22a4dce878310585e5dab64d1963b32c7c42f2d14cb52c5cf356359cc07fcd968e597e41fc2b53a309bddc2d0b2e4bd660c292e75a353f556142b684368b6954afba1c3c7b3594a0da994cdaa5f2f0c9ae910494dccefb7c4266c6540d247042275955219a1a47e8840a69ea5932d929ab618446aa8e6e39c45efca703480f14dcc831860928142010c8458d22f0fb1947f59fd272546b10e1ef60e5269f848b291f19c6eb19d745d3f1b1f11b11c6c1f47f505a16939c938130128c5d8c752a1f6fc3ee69041807a5e4c7ac9117e7ffc82f8cedb77749a4c8d2e7882f9013b627aa4764b0da985ef8c2a68fff2594fab9ce18e1c5a7bb444367f6977637db05da47f46cb8f8315e5ca58bc5d7911b5dd0d059bb31b9587e5d7339f63f820bd3c72b73fa95c878476ec15ba816fb0e7f29a423b6703ff58747b37413f3482d4e7a4bc6f4ccb897f6115a74dea7c50fa3444bef23b3d8edb466398986cc261e9145271e2f4b6a535f4a6f2416b54b42e43ff49c7a0b2c9697c3b8585264ed3423afc045b1fe90416b64d923aeb065a95c4e1bf7cfd31e6985599019afe9235fb3b861459bdef3870f17d377c4c82af0cf82d06423736b6554b1bde792f1d28f8e58a9e8b36be96817dbe7f40a8532828af48cd07d9df162dda63a5a00641223a7d0bd6396b4c8dc280032c61f464c8138f5b3412869735a2c057a64e60ce6212c5f122976f58fa9f194282d6623a330cf934e72b4934e1f34220a5ed6e4296329251f4e23a1a8d64ce858393a48cf8d80821d2deb4bfa6e45eb69e41328e1c2df7a5d9eea6ec41387b510e9fa629c91d9914e582ea86b17c4adbc293981fa31996ce388d2edd944da427fd249a61734843461ec58e73d7ab6c5d14826909d4c6892e3726c494c285e2ea59e698a98e912c9b02f8636174cde258d5842ff0e6db5efd2c80e8e5422f131caa5deb01abd28b18b619f53af558dd08d4cc25cbb2ece6ef87ac78c4862e1ad84a93c7d2e9d3912093dbbf47315d293957c0412aaf6f5bce8a157ff8d3c42973f27cfb4d1d07133e208c373b8ecc14db778a5914624da622c6b8f51fbdc248c3002f9693769b599ebd88f2c62c12b3b8615d1fc4e8e2842eb6b0db22ac4349f238948a74db29aa984e90c1a41c4a7c73d5bb3a43cb65ea150de7f9c0c61e4108aa97097a5158d4d194334ea633dcef345c8af1009afbbcf7b2d66933521509f3fe6f82c6899d1574606b1e82d6dd68c5271312808e49d898bfe2d8cece84820f4b89e5328a9215dcc3163041058063521662eabb71af9c369a63aae36e5076c43fcc855b52cdbf561f394f9ad5cfed28267840fdadfbfbb6e902fa1c7c1c81eced00b55916f595e3db4f2beb99debd5e5063c748ce4019d7a7b3379deb4bd2a140a19237838ecf76588b8acea5065112377f03aa7067dfd2c667848306207834781b41ce46ef4df12fad7481d728da2fa3e5b16f3cb1d18a1832f88972c733f46e95800a0303287eac3ac347f4b85053c4e40a194a1e3062372304893a13a524cea9e1eb841060846e290cbe7a2872ea1f326e1081cae12cbd1b76ab9e496819137bc6fdf3da276a45918821137d4f9773b7c4bbce4c991369ca51ccfca121b69a31136e461b354a621b5c5d9d7708c23469f8b65965d55c3969d4dbd4f655a8b8da4e1be0c3af3313bdf722a4146d070c9d2e1fe9378a8924d307286eaccabb4898b5b403a30628635b664a6119b9f91572894e6e12be89132203b9f3d4bf2a3fff365840cfabd68799569bf9ee363640c09df2d93a6c546096b440cb9741f73b720e2e91e41788c81829130f89ea4caebc9b858a7ca090646c0b09cad2511dac33bd836f285c6348b071dd2b3f758f14275dab42c586e7c535b2547ff380185e2a30c0ec14817ccd94b899abafa9e55a15018051f18e1c21e5c64fae039c7515904235b487810d7ac9ad6bfaaca881652cda09a99a46631fc0a855219c9c2416bc63971e2b4dec4d186112c30a3cb53c89930dd625d18b9c29723da622247df5f1c7418b1421b6bc2b4436612dd52a15070e4b881430d235530c76d70d70eaba1ca613f18a1c2d154898c575b42c85dc6c814d099d244c3efe9f18c112930737ebe797ff73bd4c04814f8fa2cdce89831960c14be103bd36a42c5f365980164cd0042a12c234f58b435fa4b62ed1c38809480423901e2150ea265b48762c409974cb55956dc329ecc4813f497a5509742e4087da930804209c018469880f6dc39669da64f0f8d2cc14c11af9625296a771b51c2a38329b939d4dd637c878f3274004942dd41658338a5464817ffe1e30323482863ca12fb2fda210a65032347a8f487df9d4ed9718c11231c76344306253de6735b305204b4b78f6bd2db0811b857fb2ccb39bc985a960a8572022403348661e6955ab628da317fa5073484d1c6115bab6dde884043e00b3482b1984b27253cd8ed7849021ac02873ec781ad75edc74033734808342e1a1432bfc0beb85df1c3266fb19990a8502e402347c817c9733a14c9632158d5e945b5a1a3d59dd624a150ed0e0c559ba455c94139f2d3fa0b10b8476de94af994ae3d685d5a9748b7ee9b8bdd0c805aa6469507f49decb9a131ab8b0f72c84ff9a7661ad5b2ceb27773527f1bb8d862dd092095f1775ae057bb9018d5aa03ac89ad1dea2dfc54a408316dd0b2edf235e7ccbf42c8cfd2993556ff8cf96862c12e229bf418516fdce310c1ab140c7ccbcb3d3a0b3486181944dee418b1e7fe4f40abd4d633ebd6ee45fae584c3c69416aae5ddb5b81d0533a9febb22699648a4083159f96e473563cdacfabc893740d197b448b46a0a18a656d4fd1c15bcc92bb0081462a922e5bd56596ad7af44e010d547423f775ad72fe3d758a64d2a66d62ff832e8d31a6a8e3a5cfc8a8b5765d29d0d4f21593691f5dce193448717251db2e6877f09a4771fa0ce6bf213baacea230ea4b7ee95953d1008d5028426b524266d7bdce4061d0f9a2cae519255f92c6279ef92aab3b75399f47c313ecc907d3f28acc3a71da933a5a1942df7e4ef0653293c7ecd28b3dda446f5df69dcbe5b691390d4de49a2d4f8b593613b8a89e3e587a66d1843ab0343071e7ad781ecd12193697b0eb67f53cbbe89965093d6fca935d518542c951031a95d0e52a939d74da268b7da0a30c1d417cf4e06106fb0e4e58408312ea8f6f499379bd564ec2b3718d51ed354ea02109dcf47cd2a5f44fa0118934e7b7e9708d9b2fd67142031a90785e4f7cdb7594cd1904c840e311b694df9afda47e727147984187929e333e068e203ccca8ac8075eca0d108c53f3f4b324c748edd0e1f27dfe3644f7a30c68f13b4f3e0c1097aa0e363418311cdc7ce26c33f34f5408ac6221e99db6577bdff19a3085b54df5f7439bab59508f7a377d41c73429616442c7bf61f5c4c17dcd615dc20030785c621dedd9c4fed85a813cb1066e1b5a5d4d1d5527a85d8e25fde7c5a3a3a7b08d18b69b6ef2ca696dc93406310a5cba55c107fd321a60f6808c28b919a694ba671d50291860811f19b7f26361a8038e750da624c67bbcbe0f8008d3f18e7cffe5bceb5253d30a0e107be3aef69bdfe7926f5211d3f7e8e2fbfb7f462f8609efb3d359b64aa8df7c0a596c9ca133ac9ef2a148a5985861e9279bff4af7fccd89ea2910733b420a74e88b9f8bf191ed0e23126eb129e4bc45577306ad02ceee19d3d78c6d8c1fc3442c7b511d6b97180461d10725a2beea5abfa91191d14514ac5facd42a94ed51c1859774a7f731cddd39083e1c50d1bfdb6c7bbcb018d386827649306192ad4f370e875d5376b925e1bb45ca0f10644fe05b5eb7bb7eaefa0e106e374d0a6b3ff33d068c37deafd5e368d364299031a6c5892cb1dabfee031a672a0b1063c567d6869bfd36ca3a10635c3cb29d6acca534b8322f633e7e6cda08186a58c62ba5f92d1826f950ad038c3415a8bafa7bfd2bf6898e1d68d359b64e9a0b72dc35eca476ed0159f64eb021a64408b12f2b29c39a32991c618cad60ca5573fe9d86f854279010d312c9f902feac9e8bcff398d30acf5a759965c16b58201edb2195e8c395cb37c61d30e531dcfca4fdd5e38b6346e3e4b85ddde05a3bafc21e47c964c2e34b8b02ca8e6be7b4e26b644630bc93519d44cd5bb280f6868c18c2eb65c3ab9ac27721a59e04c6d38eb927f9777a547ef82061614ef9cec83cc30a76aef2b2cd67b85725153f5bd154c5255548bb40fa3131ffec3c7d2a8421d2f1b2ebf4bceb8542814a641056392f7d95ec487eca942a128d398829ab9cde3bf549d9a8586148c317d5016a3c39eb6547ef4c08196710244078562011a513099e66fb8cfe9d32a85b2d08082effef2b81c4f89c613d0ffaf22f6a6c5182e1a4e30f799b90b2f9fe1c126ec1ed6944c3dfe1a634c48e6eb50e2a348ff522e8117b6c4ee6ecd86ea42a0a18453d966fda42ead8c9d04c342b628a663df61a781845f5f94fffc1f814df51ea5fe41da65348c70e60b8d9ed521e45d68142193b1edb53a982e397dd0200232c6f7ab6f49262d7c86d16b7a51da5ad4db2b61fc9b4ae77c3ef7cd4b3056edca8f3983a826cb0c22c0d805a1ce5eb24e17dffd22a52e79e8d2d95a2ebf036910f1457aebcc5c1e8f72f2d38bbf5e74bcdf85c98ec789082ff49739f973e9e5726617bea42ff5eda9adcc175da494d8243b8fae486f73b17caa733c8a0bf27cad5028273a4470b18dc7983f735f5a8fb730b620539416d47ffbdaeadd22b638d353580bab5de2712d922e8d8a0e95a62595836004374280e30c1f01114468b18c3e4bf56e592e6ba950284964160b7e1dd38c5499f1fa061a446481f8ccb9fe451b6d33071ac4043c7820120b6b4d5ff47bc7cc921658dc1ea684eac7ec51a61b01d5d8bc5cc6bad4ce14a17bc8f70795ff31074d409208d3261dbfe5d53c768904114bdd82cec7d86f9b2692431c3acb1b836e3a21375ba1505640628844675efef417dc84ae107cc8d492b6702faec92a94931f3d4e82f80d38404288b36c3a2fa64e4ebbaf50283948068186795a8fc6e872273b34488f931d3ecad0610a1241f459963f994e89673169478f6e0a05c80b480261d2322ee72cb91cf7c501a16779f4cd6d4a6a8e567ae4c831060e2037720461f7f1011c384c70020edc20e3c60770f410c02b48fef0281dffb2e3f74ae92b140a0ff4870731c347194148fcb0a037eb6ac5b969cdc381a40fcf28fb173f6b478f27024605374c0a6e1814dc3027b8614c70c394e08621c10d3302089c04a00a247cf0ca337e3f0b7b624f7b40fb35c7ded1b93bb87a6843cb6250766b1e10f3f40a5d756a9a3390e0a191253c883615b1dedc813bd5f0e2978d4b266407bb5fea702d8775f8f577375e8ecf92d2a281840e9d59b86cf5f91c0e97317df46c519492c961d99169c428f91e84290e6e9c6e4d3feea5410e87e5d272d87069d46416f3066cc6f45b54c5cb597683d9473c8d701591696f033f2f46178432fba41d1b70598e2f670acfb3c95dc3b2dcf2a7cfa206d4a750f39c5d5b2c330d5dc6a073f66c61d40b4203da4aaf3fcf08559e3f03a36573eae81a89194e37ca6cdc5b8cef7c1910ba15a754ad78960f939041ff9735884d578f231a8341fc7590a6e34b61321231282ba2b7497398719b240c76ae8edca90b18facfe8c267b9c4769099e40b7dec399dbd4f67e33b5a478e1cbea3c7e071020a05480e7af4a844c00789173ad1d91d3bc4e47523e9429db46abc9fd1a2acc3010917daea8cb3cecaa8e7926ca1976ce55d3e5521bcad50283976f820d102a629e496a68e571efb0149161297c5f377d9c7d2bf20407af828020916fa182ea6da502d2621572814f73f4901c91596e5cd2e59e57676fec3470c48ac80d0f6ce8f2103071448aa9052393b1fb72f5ea62454484dc5e5a0c465fae852a15072e0f01dab6320998231e95376ba5eae01038914b030791a54f56578903160401205364b563a7e98b2fb0a2450e04c4dc38b964b8f9f60fd688dd59e1ced9138414f3a35943cfbfaf1489a807ec5bf389b322605244cd0fd5d1ccff5bd5b0e7af4a8ec681d582059c2d1948ce5ae6175835fa150729028c1f0ac5b2da66145752a144a144892907e8892f16bdf22299020a19b6dd5d2386f93b5c2e3041ca804d1e102203b7668e0460b6edcf01de87802c911cca5f45f85d233551f8911b8935f77e9b26c9e42c9415204d3292f99d3b75e50222142b722f5ec336b0cb1c05b100023d81806627378fe12d986307a4993b23b611e4693c148df0ba6225a4c3a64dd6103182915328beac8bf58147d49e7f72cfe27f545a74267b91151fd1b29d8e8c562aab555e2563c79bc389febba878be9abfd5d545a397aadfdf477d445da056f3f19c3dc5e938be5aa7671d43685b8122e9699fdd292e9da5765cc2decd80e9397353cb0618b25fdd1dbac7b4a645c0be4987849c429dd59ec68d1a7c87771b37bdf58b338ed35c4b7ea6cf62c8bc7ffce3f6d7a878d5820fa774a9fe794d67260b15c6f2d6e791efdfc15e9794edfa0c7da36e80a736bd7867f8e0c226ec5b27c5a3fbf389e36bb2a56e0a55236bd9fa68fcc2a4ea7ee77ecaff74c5385a1948a67d02672839d0ab3270daab35c22c425820d54a4e77268c9eec3858b8c39851e646368d1944e6d5a4c71fcbcb81a722f4e7c4ab1249e7e5f6e621ea466a448b77b68b69c446b5855a370bcfc93ceb29ca9836c8c28b2150b799ef4af6859150a5d8eadd3d276d0a7696340a18bbb5eef797674e66c7cc2f7ddd91a39df61f4045abc4ed92cae8f9664a3138595cb62b8fcdaa6554ea47347eb545a92f5b9dfc4b9c45c882d8faa9f99614313e7cefff9b266e8ce582610a7ebd64d9a86b0920f6c60e252327cf8282d98e6ce0f6c5c027d79fb53a8b899b978e81881a1810d4ba8b35e5ac3a87b8cbf031b95487d6fcb39e797bf346a1b94b0ad55e49508a134b54ca2d51cf3364c7f48af5c6043128ee9d7df50323d739648147b1b1f646dd5b7aa1cc8810d481c33b818fedb739b2f21b801821b1fb8e1811b1db8c1811b1bb8a10108ac8d479cd3a6b19fef24a37b62c3117b78e944a85d074dea4620c3f38b714f574c6765608311e5c586d6a912f7595b041f7d3ec8d71db1f071604311c6cdee60a6dfddd46723118d7041cb9ec7175e5b1081db9b7cb4df92bee721aa9031897c399698b7865896b3df9cc6d754db62a31049975d5272b3df7687108bd9a5bb538e7e8fd2201e11a625ddcdf2498d0d41eca2c7a0c1c5b9cfbe0502cf82de1611d263d85d870d409c3774892f6537dee71ff2ce295fe255f66cf68359ea33f792b90fac8c92239f5f3c3f8b0f6f163c7ba82e95a1e61ad8d8037a4ad7eecbbf614e480f6839c3dd4c937e31bb79584ee5d5878b3419e12125e4a4cd8dacd0d9bac3624ba11bd3b36c96393bb461ea62badc2519536ea30ede5aa62b17e3c97e990ee7e0b126fa322fd39e8359def74e4296f8e8cf0c6cc86197adf934f511fdb662230e98ce7d69597639a56cd4061cda345da1f5d3cd73ae0536dee069b67dee74a7bb25d760c30d7516a576c30b4a948bb5c1b3f6a81b6b2193ccdfa800d110d860c3b993347d2563dca7890a36d6f078e6915f2542e62d3558ea2dd9cd8b9ef262ba60230d95187f1dd5b30fba4403d7f28976b08ea7561a0347136c9c21977ef352c54ffc8bcca0e87c96c4b635452773c03d6c9441cfb0d95bdeb20736c8603c93695d8c1d323c09878d3134762d9ffcb81c83ed64d81043d91a7b5f96c7555ddc46180ee1971e464e4debbde1011c65d8008363263ebecb69af367e63c70ee5c00d1c144a00ac60e30b7a0b9fed54a80f3b9f870d2ff8bdfd928e51838f6b6c74e1e4e9b14f4e435ecc63b0c185f7bf575393eecc030c36b6b07690eda632c4644336d8d0424a88fc984eb434731a33d8c802ff395e90a1378e9b32881b6c60a1f76419a3e90f1d6c5c6179f6ddcdb50575f1b26185c65cd239d7cc68398a40f860a30a779d7a7d0af92f1ba58249796a99c2696246a9c7bef29897c2e2fb9fd498ff418b1f05931674fe8de9ae393528bc2d77be1863f804345cfd975f8a9f2905b1e1044b7ea8f5fd531390b9edb7b741dcedc60c1b4c58f8b45f13fa65c1a3ed031b4b30a89349dec688d49645099b0975a3b3951c3d4a1b49e005ffd40612509dfdc473929943ee368e601099fb93cb2553be201b465077f48a7bf28a800b5237c9a0762acc638308b85ff5b77ab6cd2f358c2599958d29efa349a908358471eff5c9974a264ff17dd40806da74631419a15c8e31c0384beeb6b749891bad7550e317fd9d8b95a245b7923152a8e10bab74ea8b994bc7ce632ffc1d3d0f99d76ba43a851abcd873866e8e396e12ab7a506317c87bbc0aa52d67d4d0053a97b8929926acfb450a3572c19db664d91bc2e37eb8d0df651195f733fd596adca28d1fe6b5ab85fda411420d5b988410727764fe52e60da1462d0e769fc51279b1af846871bceaa03b7eb2d4b0676197ced2498eb671b10c420d59a044c5cfb36c5a9c5d81502316c6edca1f9bb97377f1420d5828328b4198b9a4af427d85b2793cae851fdb2ce80b355cf16b85cc73cacae4c782d46845f6fb59dadfa89a6a07e1e13b60454a669a5cc89c2b64acb18a3b89ff2c97a58a339d879b1beda06b948a3ef4c73e9ddb9ba48c0ac537c660274ca7785396d6e8f3f70f962938d7f8cdf1176f4d2974419a703995f6b82226c5729f32a6ec8dd76dc9428d51a4a39b9dbaf95fe7cd0a6e94800b3544e189be205553febda40e455f6ae1ef2954774c51a8018a3ba6cb10d6d5ba2d9fd82d43a4ca6e8b7eef166a7862b96643c67575e5ab5fa8d18937bc6f4ea3ee3f0b3e27ccf14f6fe8d9b4ceed269e97c42775317f7c999ac05a3bef996699f0ed5a63bfba9c9fc776420d4ce4ef9fba496a56cffb12dda746bf52adf13ec612b92c4277a8ccb92f8495d864e7142536a579a7fd774dc6971a93488b275496f28ec9b45f43127f7adbd14126b12f1d0edc78418d48283a4f799e0e241899314ba671d3ce8d8f703cbba4be45db7c458e38e9d2eaa9aa94ab961a812a9541eacbd9d3271323d096c6c7b23f6996c48bf032dfa596f918a3cd16d450849e31c59e9664929f6a2250b5ed2183672c31118158ba2cc5cb9d4de43ec4796bd5762f0b362f1a822fd77331b305d99c1762537a64d66a8a10b9c7eb71b12c33b6981a836865637ca991417da88620d021163247efd8502310880e9db22563d261571ed400849d7a4bf5acaad35e7fb0d484de3d19cecb647ea8e3538a67d1a742ea35fa90bbf4233a9f566af0c1387ba525bbf3a464660f87d679e1624dc8bba90935f450fa8a882f5d99e5d6f370b0ce6278616cbf465f030fbaa42a77b73d2fcebb8319354b2b5bf4a839af6187fdd32eeea33d068e1ecfa3461d907bf97cd7b5715b920e2633b12a42fda75fbfa282ac31870593ede7a1abcd052d0f6ac8a1165476d25d1d488d3870b126febd1f5e2c1727d48083b9dd7434312fa897336f388fd493b57946b7996ab8219d79c35fa7d1221bd66803b7255db48b2f6c58ce7ecab3082da617946aac0121c665414e065d50430d67b23b39fbb7fba053230dc89041d4734799744d0d34a4ccfc5565ccf38b9d3378aa4cff252f25f357c1a86186db5c6367416e9ed296322cde684187d1efd17532f88286b54e973ac6ab31a4c5eeb896c5ab5f8c961143993a8e55facc9a108561f13e6b9e4cede9db89430d309c65339d74ccc152bbfb0262b48f1a752d67da1d3dbc70657a419476decda31a5d386c67f9fc056d8e1a5cb05f2ed90e532a53630bc896cc4bb6fed58a26071036d4d0422e06b5222c8492f9c52b148a0f6a64c116e672b46c9f4a54851a5878776637c860a211483301642660668c0110e031014301430a9403380810337e8804e08c9d80090082003143052101f01ba81937e0a13b6a0800c80f1b2c00c03939a961128cafac5daedd531e634c65b132834229c37f9cec4047ef501dec3e8090c004183ecae05f1c1d4176a0a37d717404d95101a22727364c7a717404f95101b2e3e4c486092f8238905dd030d105abdfa3c16549fa28592e104a7769f5e72ab83894de7b17c34659d34c6e9185ae972a37a6e80c1f5c86eb08f2a34c6c717404e91e6598717262c3a416be831e6594e1658c98d0e29321fabab59d45a3346338917959985fe3a3843a5527a658ac2b9f37dbc91ad1ab0d4c60a16779392bd14ee99abce2ae1b17e4bd28031357207faf4588eae48238b5c2931e3ca835b1516613569caafe25993e63c77857b1689eef5a647c2abd573c074a068502c444154993e95caacd2de6fb26a948dd6e6bc631abab978a092ab6dd51da3a96dd6a6b720a94a74c72c47b67c71488188430314599227e27fc72cc2e9352e8d2bb2ce8a83906395a0b4c48e1c7b7be2c5746cbcc9a8c022f59ad49eaa7461b8942974e47a130e78f7b0b9eb41c3e061495ded3ed24f4bd9c743e61c634f178a1f1444a676ddb319983afa877e8708149273acd39cc9bbd9ff896138e0efbb131c7549a69934d1c53ac846c97e5376f269ae0fa3e87ec127b618399c8844e32e69fd3976bc3c452b9b659dd7709e36f10afd6ee62fa688945cd6877d5ecd28d5562d9d484a8be1c25f6edc08412aba8516fcd3e2663e987c924d6382d8de5c7a70b49222573d67745d4cfed139844620ffa922af9d5db2d0812478d33e155429ccbda23ec3125539d3eab2b9d2a4798c3a5d34c19c7e44f9346e4d2bba869212e5fbb3d306144ca63ec630b5eaa6ab388f4e80d1142668e0e2f8a68e47967aa54d9f73411cbe9ddcfd6a3b59c44c4f9740baa2e9c964a8b39c4297490a1736e8bb0d20f45410f13437096da234779ea8c9f324c0ab1fc2f3266bc326fedc384106aa7e6d4d06e3ae88b062683b0f4d7a5de34994f4c82b0f4be6acb49be7f8e4920ea3cff98711e3d7870c004104b75a3ebffb946a9e60f8ccaf8599c72133a0781891f72d1e1638b5d324a464760d287349e7e39cba77498aff860a8153fffbc1b8df11eacf7fbbccb5ab90ff5c067972d3dc5377a6ac903665ba3a32354a97ff160eb4bede13f6edab14dee60d2f417ea2e968bcc182676e0cafd4bbd860e657b101e3d7e3c084cea7016e4febc649feec080091dd2490a98cc81d1b39fae43662207aca47dc96aecc8389ac461c92c84eb6db24ce0d08c58c717d36bf877fd03266f30e73b1d9a94d471394ddc909b272d6831c86cd2062ce48327f9e229f57554809c241336d4a94787ef5297c4b32e305903f39e8426b9d18289d1440d9c8be9ea4c4b7daa799334745d21cfe49eef2a3041c3f9b4c68b8cb1bec50e0e4cced0a78fcb765912a1eb53a1504ecef0119898c154f7ebcc49e9fc7965b06af3c5b1edcff01c04312143163245de9a6bfcdc8ea1747b4fe2fdacd7544230110362ff221a645c8f3a082661b0ff3ea9b91b532647433001c31e5e8c252fffbe457d60f20537f4acc98c1f2e4b5d828917b4fd513245f494e991074cba50ba6ccc5a9fc385b38fee705bfb313e5b4847dd3fc579fee8f25ad86ce3b966c5f5bb5950942a2d89cd4f63a38485b4e849fbd2be4232dbb26eac8cf9bc2a384caca0e87d6c757984fbac265538abd8881325fa46df265430d4cf7cedbd204f3799c272e88e6b30751aee3591c2f2729c8fa5dd5b963b5148da887497e54e2e8916139840617341f7777bbefb78750f133cc11bd9710fa6d1d54b3371021bbf3e631219e271323e306942f6f287109f656360c2845774b0cc2ddefc96bc073a7e09a9b479b9c547b8d5233051822dc9d8f082fecaf44d128eed8e9ee7d7f2db5aa1507c9051011324e8b2658e08e4a0019e1b10c0d1234800b86072844c8f79502d8b0c5a0a9918e1d0fe39b8e6a7b3d0f2a3c7490e932298e7f43577632ae9711322a4f3d2058f4964a455950a100d41c9302cff512a446c88bdb172e225c2a8f32817f34b2ded6cd723c84949301acbdca139433bcb75efe871f281126070ef69bec46465384f094a7ee1b998d752b3eb66ecd016a0125ff0d2cc8d78f3284aab4a492f0a11d594e12c327004f1155480680852092f2ca534e76cbe6f616a1e3ce8b10bd45c28f92a63faeaa542a1fce8a1e3c40325baf86be54ab5d4e5cb2bac4c29c945e26b74f9a67753092e2e9dac738c85c9d261c92dd2f7ded2824e295a4725b6c84a333ff3464ebe4d86034a6ae1874f9d3c476d644e1928a1c571a53ee8e052cf6631b3583e47e878723654cbaea04416c5dc8db211a5f582a68292581c5f4e66b926c92881c5d5fd22a21b3a41c92bf0dbadd22e6f8ad14f50e28ae363ceff57eb2e6fbe72328392565419ac6cbcd3950b6be5048802d1c0063ad0ceea630567f8085e50c28a545466416fcef10e130325ab686f4375b55c4afc73941255a4fe397ae9134a05ae22b54d2b46c531e7c5529e94ba8c9e2269ba39b598e4ca6a5330674209bf19254b3527394a4a719dff570791175d3ea44069faac677de68c9251fc2f0b2f9ab4c51846480325a2d0c2e2f3280d02120a77c784d2d09e5d83a672d23c74879ef0f851020a46ac4ddb537ecb2e6a860ebc031e28f9844964c7923b3e9e63ec09a49516ab1f353de9e9444ab8f05ff676d2d6aa40a08413c9d120e43e8d8ef89ba8e73bc5ddc8ceadaa26cc2c87d951520572868f201397bdaa6f5e13a64609138b6cd269f4c44b2c23f69329f32a144a0f203c7a70e08c124b70a2712142e75d9bab12977ebbb5ec9272972d4ab02f78744b11eaefd39360f7c5ec176d2f9104baeb4dcb62c529bd5349243aa534746e8d293d95150fc2436f008993ec79f6e072c8acfd7bf4f8e1e311e7857baa0fb1ee33027144420b1f4cbf1c47c94f10203a7678101d151e9c04f11b34e29c644398f8182f3488116b7bb99d9c3f7d939f78101d3f7870d2ea3f16b194a15b164bffb39c931245ec572d8bb11f4da19c9424e2f01b64d347c6b3f3a183073428414442863b131ac3686f9107cec37b5072086416ddcce752ddda6a88aee2d3ffeda82cb3819414e2f05e99371ada7b44669410e2df164d9fda381e37e647c920504a8c1a31ba3b5bd682f8654166c6af3e2d7fc604422f217d732cf3f61f1068b78ce789aabdd2ff80c6559139ea47f78f8550e2073fc9b8cddaf6e12cfa2f9996470b27d7f1830c324af860a611d3ce2ca8640f59a9fcfd1832e62c881925d840891eeeb917b7ef5fecf34c95e4417f9df7d09f8fc9a378409e16ad0daa1a734befd861c66f2004257748aeee998d75763033cab98e76320da31d257548775969cd2fb8597874b0257159ce27efbe2e3e0773d0d18ca39a5b3455e5a404257240ddf5c70c32cb26e360906b27e2eec3bb076b500207f4345588fdcae85f97bca19774d4e5a71647f9a9c40d293bd7d2f8c29fbe9747491b6ee1655912f3f2e754550f9c878e12362c9ea6c50bdb593465d6d0464fcb90395f3c976f50a2063faabe954c19c37612084ad26008557f6e2784a91469a0040d694b5977ff7b2d2ee8819233b0b5769a25ad4cf26486e3cb891a71b24e6f30505286b3a548f92c6f922fbb42a17c0919aed32dabd6b8974c104ac6707053f1265fee848d72502206a386cc3c95db5cfa5339290943bbfd92a9bccb198352086eaca0040c6f12a6d40665e231ab151b947ca11342fb6676963c08b752468917140f2dc98df36d1793ba0b4ba5f46977dfd0fc599250c20535bc68d23eaae3644f7ef408b28210e008d2030ff8a0640b8b0ae5a3af614b4b262d9cde2f73fda3667cb9240be775988b4f622a4d4b0916ee1893c79a53a5f4c886922bec726648efd64aacc0e6982c112236c6ec2b144a0588193e78b4a0a40a87ec9693b6fc2ec81c522839566002203c64504285636f9e8ffb5225c70a4cf0e3044078fca0640ac5dcf9090df12c9a540a8fce0bd141eba8d560e5e4478f131ee88f93207e836dd7f123484914f86a932f6d6cc1cb254f7ef408a21d288182e79f4deec83248e5063a7e98a0e4099f165f2e1962ba83582b5ce2844473dca4e46c8ed261dde1a30c5f414913ee7d13e671e53a562b61c26de575f2b446f5ee031da864095ec7b62c49996fedbe44099ece776ad6e72f6a9504d3a591b1296ff43404b22548307c72396f5c1415a333f4c70f0541c91116de94b0d262cc7aaa122364da65bbdd2a13524b2545d8b39c35d9a9998da36a4110337a9ca12450420911fab8f9e8b2bfa27bcd91e386ebf8414604ba87095805140aff606f81092020803a900c030f23444c89064f4f6c40220c437e165c6c7b97e38b709441128c46c58876ad5af918cd813b90109000e3ec17a358a96641ec9e8304383240f28b74743ab9c9738ee7487cc1fe9752ea5d0c3229bf42a1e420e985e6f2c6b7945ea39a0444779880c70c4878d19c5a8b5f551ea33d925d78e2db591661ea42ad8fe934b7b38b1feb11e4a402c40c1f2420c9453ae8bbb7a61a6d211e6390e0a2d19ccbcc1a46678de528c10d326e7c60043742a002925b98aebb6452cdeb61671eba83560a25070770e48035c80a7ea480c41606a5e37d66693f5a65f80e27a9c559b657b5ba5bf7dc567c9ce060ef1e1cf0ee6102125ae43562c4ded2cc4eace4f0201ae40524b3a85eb0cf5da1c329fd55964416032089458fe73106072440028b0790bc22ddb2d8bfbc2c7a103a24ae38d1e143030c2069850e1f1a70e6d1430124ac5800c92a1a40a28a131d3e34e0820690a4e2063750322440828a53a4e50d3e7fbd16a341a648c74c9b2fc7ab3431030142520a069090020124a3d0a51be1e259ece829cf08a283470f1d6e2011c549024842410012509c1c80e413f8e9de9c5cd49e3037bcf6877197e35e72dcf00249270a40c20913924d18804413273a7c68407f98a181039064c2fa60326a3db49e3081c9b0a5327fda77482e715215f1928fd612dc6d88cfe8a712811b102841042070c3ce482e482a91ce26b447d5faf5dd29a1cb9eb7d363a6f47a2199c4396ee6643c659e650d8924586f4f996352d55754790149248ebf1a4cfc857f97aa3c4e70830c1c2490e8c2d3bbd822f437ac8f5876a93e6a65a742a178101d2db86123b85123c0e13b360b248e603fb4949983c76b85481a615a912e85ea7b06256384ea49bb707bed77d752a1508040b288905ba8145264d150180c05426130180c0004581c0b00631100001820220f8924f2a0602a4f7314800143322e66522c20281c1a0e07239138141287c3e130200c04838141811445722c8f22d135a965f4f41bd49e87bd5d7d2e6f32014811b9f526bed06b1ba0917b8e1e992d1d800728288ca9e9f3790cfc04fc4cf75b3b413e7a16e1b19f8531679bdc385f03035d3ffc2715aad12c7f236a84e4bb73c7aff3ffc87fc50ebb64891e7c58570c7a51d72345ba4f25ba5827b918c8a86ee45cd4c7c0bd185dd188f1ffd2285f977f7898468806a0112f363427d683a581971eda95d3d76377dcae9f863367af8c084ce31ef918ce0d5d0296aa683fbfceaea845e76ed97963b64cf3e1d8b0ab120fc494d222004b530fdc74e04169850983ca25d4f90c68c3f77011aaed56123ae39b61a4e14407534a3533bd89ae85387d78acbcfd2c1aa3e285157f9c027c2515f96819a8a60f499b581e3547f170fa8c7fb508439413ef5aaf734b95e1fedf8c8491fcf186ff9f993417e0b2419f5d470f698eb808998a1c81701e1b53bb7cabef910be31f463e46e50a3b1e565c76ab5ee9d2cb2caa67b3f6705c7bb634e7dcca81fe511cd52002dcda81e9c490023e405e86ed0ca0da41bb3af073ce122f946f61400af9612025a98424a4123cf81260c666b9b0ff1b7070ee89e331e66a60f66afd72cddfb6796656cd96cd4236de1284ba96231395d05dd8d5a0fa39459e6ea2e1daacb2e73a1027d501e977c7f9c4f88a09aeaa22519d000386fb26379975c59c04db17d8a435407ea6c90b5eaf1fe266b81a0a5d7f2ebdd1ecf5093994b18c167ed840165fff2cb82257a2a0ddb956aaeb71a9403f6375dcb81ea65bfa0fe949181516dc7b686f490edd9bc374ab63372a67a5225900a9435c811b112ac0edb0f04a8ce6228c5c634ba44998ad7ec5c8945cfca968c4388eca23e980459019e8cdb02bb541312c15d1c696825b99aa78aeb036a67489fbc486b1359a25f505b11fb8e208519bd21b440612cae07a535c4e64ad6215a42575fc65c3ad16d49af81511db13b29ee00003fe28130c4c774c7f98ca79f248d47f3df07c27d730f82b76472fcdfd88bb4e276f0a44f0eba2da997ae8c61b48d989aec95a3cb49ecd2cb87818cbee60e9e860ff07826943703908287e05fd7b2075104008e6b44072330059c04a80118a48bfd99cb2255c6243372c94e600036c3354811f495185669eb614a029d77dbe00ddfb37caaffe667caa840a44706c0d8ba10ba054a57def2391f221e611950416384c8e11d496abd9845fd0c256e5c177e8b8846eb0617c100b798a2f63456b29b02507209c3c811178440bb10ac77a508ea3255749f9cb13250ed7f6f74ae40e23849e8ab14150aeb755ff137314bd19fb0119055282bf8a9bf397715fc30313d4801c63fd968b4e807862205944e710fea6d686fa6659a84ce013c21a1d4c492544876b8edd9d2b3c45daa5031c081cab04c3271453d95f7c310e211d9e1247610564a4b35641869572698f10cf43ad589ee8ab74201d8b12227de3190c4b6548bbd3f20c93e5f5b18b4517fcd5220f387d5a3bf4b339166296a8b0e39e5775648d62dbf928d64633ab91a75c91193301a5a51657a4c8d49bc245361e5ffe4d61b0eefb746fcfbde64f6b33e55a182b7736d813e9ad019e9aa4d1876b95e0409aaf362614c57b97040a6d6f2be2abc41a95fbf222aa6d510b6821b7011886fda389a1c2aa64f44d14ae9fce33d14871e58a47d7dd0f419005ebd477415c382d5c3baa0bfc53f2677e1ba03e606d8d98273afc911045ea53ab2919c75772dcc980313818ccb8e9dd01bf84f8f867916b112fc9ee95936b931ea0c819839e3fe85a9d8c231fba6e945a1f76a61442340f975e8010794f354a482a16d219a1a41af48476d4da504e82a5228c9a20023bc8d1b86c0201f417f7482d6f838f16698d01aabda65a09cc40cf73e58446ee9faf40834ba26349e896a54239cd882f92fac242f888cb717f3eb9362d31371f32de9fba9f6dd61b4f38fd6d3eb5845f1c07d57d09f6549758e47c8ce33ff6739188ad01d1854b560db58143c70c09aaa2582494bfa990fabe92fba1ba5dedd4cb878301baed0314ea43e2a70f03a8a262a7e58daf8d86fef030b3337c12332fbb1bbf8fd4ba28ff8a0b598fc0f72bcec9391853a58e93d3a1ed297cc77d24c9db424c7c5543570bad0baccefd814e9b27eb352a56945304bd7ace7feda1dce90a5a634393f24a6fc5ca88335190f44658059ba262b8976f65288b69b216cb2dd00847f28bbc124cddc43172ef9e79e70ddea923ae812cc6a7cec9d736ebee0a0446de3d3f7eb4f170712bb02a17cf6dc9b39e3580b0d1f513a3fc0361cc64444869bfddf02a575b9fcf5a684cd51bd524eb319b59fcdcb23a4ae2569aae184334e10a3b2eb578ac66e328438d9611a0712c30a4d527d45c61696934c3d1500c24e7021abc4f152b20b0c97e04c783c3b5d5b2381005fa008c18de79b638da64a0373ab66d68ec9e2a34fe2e4201e08356ea8ae7c639c22f5948c430c19a209dd69ed8436b31afd2f54a859582cbfc02a7a9fa05a236a131b31fc5177f2605129a620edd0bbcf6b3eeaeb1c2f9ba8e47a4a535b0762616d681c1ac0b055bd1639e7442eb587191d660ac531853d6f0e0b9ff56cf5c4675e17340ad628336645fc6eeca4289f827e4bea3982e672d8d2c6fb2dc86775041fb4768ca4828d4f106ff00f9652b685fff8bdf23bd4382de54b9902d36df19933d67a3f0e2cc433cce308b54844a546db0fca441c838b0fa7daca13135cf6d58485754e8220a96865d454c103d90235a0cc8c31481facf8bbacae5a76d0fcde9a91e6b0f326b81fc6e5c84f42477af18d811a5054468ec54c300f490879d88b5cd226f0085ae910af8a8d92f59d64b8ed5c25f042c5d4a1afbeb93762b4f143b04cfc47eb3819dd46a17d39c190f1b75e22d6a892d0fa6e24dab60d154334554a8119500d2b4b690659b4944be108dd345f45025a14e09f6ecfbdbccdbcf8a9067558012460b20e361edb692857bd7c0a0aecb9e8900ed4c49ae450fcd2ed710d60633c407aff72a48ac5d023edd0632e946ccba396f33d2820519d66d655be7006e335bf4e114bb5aa05b810e8880fb59766b37ff56b0d51ccacf08352bce428d0cb21a375e4c9d7ceeeeb5942c96b0b851b0c3d04d000471dc1b8e8a12ebeb2f0a0604346154136581f2eb26440535f409601f7be00407c5a580be235835c4dd31073b37845354d04b6faf1056491ee4cd69799699bdaf895151a07162482b7fc364d4ebbb1c26136af850531b0f3a21a1ed7626eb03360e778c73d71b5d56133c813fa5053fa6de81c007bb123687004e86acd8f71c0abae475edbf2573fa0ac140ea14412241d91e69de41945b1415c0ffc0419a4f24b79c056c08ab3100ea6e8657b977ab12ca388e05008c81efc35928610414f80c961aaaa6e02415b8f956719700824a0d34e161fc929e44c3c12eb3b82c1d5cfc8a8c49d0add3129eccb1d3efd2c8c787850b7a1c3f13bc3b7e9e4d356950af900ff9c3d4cc89a05238111277fb9ffac95b8d8bb2a03032f0766b2fc26844de3c2af9fa9b40d184b00da4accdd13f8df1e01fdeb20fed65172b3c4c5010a3b63410bb890718224198444d12ac36d0a8ac0f46ddbc47cbb04e7603b5b147e173c171b8985a244eca38ac14685d24d338620019d54130a82866bc70c8c3155593daca248faa654380c3b3c20a4638783b8e8f108ec89943f885cd02e3f0e0506263904b4ac1512b47909821055015be3df002a955eb5dd5ae03c01063339b7523f6292d89853038339dcd38efda926daf5d828f42ac37fd70402a4064358028d437b741c4660525df4804d769aaa9509a7d07424baabb4d4550e156c798ea6d4e09e845a0a71e2adf9da2e5dbc7820367f8be5cb395d532f2e69362965a530da2ceee80fd272575684db530228d68e98388b0b626018fbaa736754213515600d0c6244e04a235c45d250f32743f2f0dac8654ff8d9f219c9f863cd3d99e70ebfbebe7c7ab73cade94a8975883297cb23be22268c1540dd34d362e584423eebf75330d78dc2624eabcefd49b64a082a050944a30336ac7681d52976a5a3c08195121e38eaac1eae5eec776abdec2eba1b50f1099e17846fab8c96d32dc6640eae6ac9fcf1069cb2a027357b656e63eea29d3615c2171edf1840b29ea624d98ccf7774eb2cdbc0d3f1e292181c0a4af113f4b9e5e08a58e185821905d335c6b8244ca2e40638b12ce6ab42aa148a4366cfb175a77646ecea79a5307467072a38202a54a605dee1147e07c1150a9d10701e6629ed66ae85e2ae3b7cccacbaffee4edcb579a9644bb43fc952d86e92b96017a3c68694a6977c0c0b25e6a048d1791cc8646f14bcbb586fe1c75b5c51adfa0227a95fcd15b1331af6303251d2a10d367dcadbe7d04efa3af48ec65eb3bf82faa6f2904b43258a076c4890f76ac176c083fbe708693a6a8655ebba68e597423e405dc7e140455509fa1829d91949db8bfbe84b0745330f483b260401fa325983232c1351f53496a16a5346e0e17b500114a35330b843e18180aeaa3495b152a02449ba6fc7c00c45251e5a4d082bb3170e018f47718dc4a4f4c19db202c88148f623eafc27bec7dec62232f2c40fd5c25229277514567d3eb717b6dca95b81290c82923badc0d4bc9761950b2c33836a8a426d9578fe7011bee7fc69a2fc4d9ca545bf3605ee20fbdfea9c71f00c6f56f4ee4ff700350d278a62101baf91f27bdad201a7029f86d69b9230d5390ca6df20c083e3ae684be2624147f382a7f2e26e13fde7dc6fb09ff49f163e20ba7ef4d1facf3e9fd8fef0286c0847f5ba43ee1df51f9b1721ee232441622527fcab19e990d3f10812b370021302bef3c33e742c083beddea31f8ef816b0a40277033e6ed73fbbfaa1ea40b6a9b95c94125e026b294fa832e55b28ed13d9dc64320f115e63e69472d8e4f638f7538d72f1999464e2c5f531a89cdc98415e0821f007dd7f6d2b582ac9d2c920b651af5d970b42ad13e5dc4e77ae9ffd5702a1ff80bcd2bf6c9cf2a3535f0d353d46d88542c581d3d0c6a21e75d52e4c6bf9f75f1ac76a9cabb563d83eef06a44356f44a63a31dd71acbf684198bf8eb31cd37bd7a9156e59e15fecd18f6dcf1e6c294024df80d1bb71f75ae4d6c7466011346f22a132e00832c20e9173ad8df92322999ab6ba1707a520c391f664e8b90fc5b981ae6588565c11489fc0d1aeb8abfeefd17bdd34a15b5c4482e0205acb036e4978244a3e30ae1e9eb97050cb8919674429780c0decb855578f620f0caca922f0493f81ef20098024f1e5983c62d7eeb057f9666635ae707c9e6522195f3d0b06f391d598667190a72f85024fbb1954ad9028b127492ce672c2c43d7c7003c3557d9369af8dc0ca3d28ac73ad83d4d3c875957b8bb5d13e22e24d33dc7ef7074e810c9f3078ca75134476853411e5975c7ed9dae8eeb833bc1d27abfcb465e85f12bb09066dc77ea4e0f386020db76a94ce2f0e51941b230087491744a0407d8b6c8cd0bd41927347737c6499b1483257cae7e79290c4aacaa39aba3270208eca1a00d1ac67b56ee08df879223d8573744fb4ffc951bc2ac143e10327576614111269c758769d48980d398d5ae67353e165c3d0afad0e3ca44a7f2a47e150a15d631454329c288d8d352767e97ab898a3904e4f27cb4f2b650ced68a24c95bc0bc7dd4aeaa7629ca07774f3d6e2a4f8ab204ca5b2032ccf7354c3b2387158f459de9334bd11824201534a1af705a59fbe7d7f41b8f8d73c9e943919fa4cb8ec89baf564999e89725164798a9511282448e0eaa60f20b5c88d6b686a09ab1c69becd933e19f5a171dd6ec70e5655be49a59c8a09087d6e2a1a16b6f80364d9387f7f77bd82fc451275422059f108cf32626d71841dcac622cb68cfe62179980056af46bcc70052077220442f543bccc633d8d6f138eb5ae6cc0ab77aa835bc6cb4b768818c8a765ab319e58a8ed4905734ceee07174f4ca88c8c3a75c314866dab3d666a1974b63554e8f044afc011e7e185fa9c48f8d0de00b4624d6cb306f14357e925d05664f0fac20406457be012ae66b8311627061ff8d9f04c51aa0ff63b6035d2cade07e0d39f70575109ba42a18a8a615273b4af9645691231fd7f58136d076fdc292f86a89a565184ba078a933e5aafddc98da0f1148b0eaf58bb22212e78bab2cdb3f66e564c31596c5bf7b1eb5cd2d64881a967eaa0d05bf7c4fb4a4f229629209a3ecc02bd2f44797a437c94fd8de46539b60441691de5f4e91e2e16a3d3042e8bfefca548ab29e1257158257de0f8d817be4bb4441b8f1630042c951de6e8c8e725fcf348f87e7de3769857aea6e62e5b82ee90e85b60bc231e45cd602e6d9faa8a99d97d4f562cc735a1485c6a497f5b8c0a374d3cc23e1c4a5cb65378387b57e159a9873839227b3dc23dee140d8aadea48aad947c4915201cc9086342cfb296a2c83b377a7a0190266258a7d7f092b728dbd86f28978aa8acfc7c252245a78ea891d030589a2ec0531b6cab01b4596192b145de7170df6fefcc6b8044e4751ff1ef57076e2fd12ad3533b163b6f9b92eced378247449b336daebe97c01cdabadf39c9932736e0d99f82cf65040ebc3dc812612ffcf1cba2028072022f04e8c921a82747c6405c24a33ab15d9da3575e1031e91e2c37a1178b3d3ac991b0635edb33275b5c1f924ac3872f235a304f42a464635fac2a694f9f157df7b4c3bf872e8e50ceda89e213563a5d382e81e9c9b94624751f73af8c285ba1f035f7330b15679417534d21435d1f8d606047c6bae97874340a054d527b1c28c1350d1c0e624e7961282de50869baa9b1e33d7a9312c3ac9caf06b4af8035a31d50924a2f61689d54ce6bf954f137af5eded5e4485ace00fe93d682f6239eb59bb12180ecf4f3bd2bc230e2b12628f75672f0247ab31460a85d98a834adbfcc1ffe57c281d416b2b9b23c4709656c94ced5152bbbeefee34ad17d91f5c5ff59d263bacda7195673fe096f60cf005ca1128d710ec4a016ef2d5debbc48f9faedb1bce9674daa0c5c7d54323666c34dd692917c4634e667794e9d673af2ad9bafe62804a761c197f1e27ea6573c9edf2502a9e81d8e17353d60285ae3a127cd403d29d8b90cf1bd740b23d7cbbe10df3c294773bb84fb4ebfd519c84818ac977d2debdb180f8634e964597656f6479e270f953bc78a1208cf28ffa9ceab55ab14008d89c60882f3f5ec8e1a54f7e7fe00533eb6eb8d8588a46263b982c237ee138843d0f8887148e4e940fe8858c6a15840bbcb27ae2b709e80e41fcf751d97869f100d40c355a4142e579d8e834e8c69b50ebdddef09118903cd8a43e838242f1317ea629f1fd16077113b7b0fd2dd74b91d17141e75554b148c4e1580f0d3af1bb7f3b64c4250dd0c8e3ad303fe79e27d8b8ef67aa993830f96f11440516da8c685b7fdf9af730b65b348538f18e2f5933cc84486e299bf01d127d3484af1ba261c2ae87fc514111092811a841f83036e58f7019390dd5fa85736147a4866dfb1f984997dd47828fbbc5c7920293a37e5e23640c3e573c78594838d7c9bdf0d1a931ce361f4db3b64aa8918bda753c41846ff58836cb5d3c10af5719e343c40f21904e00f25802badde411af8ffa16ef7f737195dabab5ab270a4c7c20a1c01265d77f29a8db1f912a7f217de4be92b2a561122fba1529ce62f47c5e5cbbb0d0a30651205fedecd753de60c4fd7862109de58e0be82aa15a59c6a29f0faf03bc2933c566253b10d838f7b917301b760997aba090f7456d5f21f8c5e06432068a3a56326c9d849afec524714e052e502934ab929ab804b9011559da8c7fb4a2a250f2d08bb7679b0a6c57850677d613bdc67e8ec88cf0c437e3045f081c239f7cbf64d1f79b36b1d9e247d346348950701991454a5d03cf11dd41b850418bfd974ec6e3943f5542c8f7322a2bd66b42f6d48d8754cf1afbf88d6f7a60065a2389482a09d481b02344d4a51aa9a40f0072499521962c44a9efd426ea198024666972576df205329bc834971690b92dca894a3412b1c601bb8698e7284dc6a6375e17727ba37d90ef93b68150fca599d86c02b89bad89edc8cf96da25b88e3dc61092d975d4c466092c160231328b2a075ea7ff70ff5090521afb35746d19e233595388f48faf56eb9303fe28ec4faab5cd316c9e8abc1bc1a4b5d0d3ae602a0d64cf37cf2a5a1833a1e5bdb831d12ee9392f66d7cb0e3873c58ccfb208700f994e0c4005fd1b48da894d147f209338eee5b23339d536f89744049ca3ee3e0544bf820a1168f9013460854af3d647eb342c784b006e9abf2be89ae6824059164c01a90fc65299625f8af8f2541d31db5c424e7a6e305434cc2e783003c56b917e363007243693f1ba24abb7b29351b578452b0bed4a4ef37888de3dfba71d8e496b8dfe1cc2e71c6bf48ee1ea34f4f88030cc1968653f78997b4919041305f23083ae1176455845b6588ca9af250fd8f948a95045c04bcde86684913fb469b181b241804b74b74993d0dd64d296c32ae211afc09f159cc39b065538f007540d96603fc86e8a4ade97f1ef1c70823d3e7e03d643096be273317add1cce3c9ab96b50ed4768fa1adc6bf9cccfd13cf19e2be0eb56525f9540829479fe60d8d97dfc275d93458e6c106491c2403dd51280390a0e10130eb2de7342cc1bfe8f0ae29663e41e07d313a7cb55b31a094bd0ae0024277105d5930d2175c4a53502c8683ec3bf32caa193df0e5d6a0264df05f15ff630394b2268100341f0a906fe3001e5f0bf70e73ef4a03deb417dc65c41634a1d26542a6a3346d01572f0ecca8903b6e12858f5ba7f40cd750d5b8baf7381499926c11118c21b9348c66937569f05728844e9860c1296af6431bbd3856dfc64a013477267ed24ff940238bed12308ef617a89216ca0f4679d116f66eaf2bb117b82267c1ad3472d605242ca8000c1909a811830e2c077644e69aa9bc0840ccea754a4a3ceb26cd70abe84b9e8259e60b5157516b96c6fde1a2bed6c419b8c384fdd6b56db737ec6c8c0a2f20a86387d52060a57b4edfc45a2b669091ccb2485a616556563e20fd003a8136614d646c4a26e673580a29bc6e9b2c6d3f56980bdb9632aecfaa32ad44df38550f53ee6043afc18d6c150c31c0a84427c81520ed51ef2139cac92c55c57ee617a105167f7aed39cf2e7f59a8394734b65cc2778ccc102f41130276444228e1e0257c78524c68e9c39b51ca29be66f5208475168b459b5b331d3fab124439d37879ddedca1fe7437a9efcc21cf6891a210cd56186e08e5bd957388ccf5a8efe6c339aaf13f6c2d4fbbe422570d5da5cfd2df0f29519f385e8742c9aa53aa4af1af990c6827078f337e7fd9956a3e55bcc40986873a31c3351ac022cfccc490418c0c2e134083337079ce33d342cd92453b6aa757586d56d8b480a48b0c80145a7ba95661303400977f8f95a54b37ac502f0fd38ad6b032f1d53f10cceb9956950d73e25115e8620c6a9c7c1594ea50b6713b2152efa3eabd18f48b4553f4df8d2c1659bfab6b65643207060af756bb8154cb050414cf4807570e3ae05beb395fd9842417de57e51ff7101b1f367a5ffdcf2e00f3949497129a5f34183dd1154ec436f9157144aae4121522cc3017508e2d1599b4611eb3f9394471a91a997ed37bb2b62c7b7c4a11c102df96fde2c2520c476fcea241cdae311c02f53bb1e04205743a02c5cb0f10a8adb763c071bffb7bf5ea58b4610dbc539810d227c91a7a450b27868b15f4f8e22be1ed91e17af2fa42b2d24e29836f47db6c41a4d69c043734ee8aa0e093e6312d39257d06154c8aa4a3d1545cd463e229d0d7c803fdbb39543baa43d06454021db966dc1ece30527bd9f0111ee5882e7aee74cc6d0a9f1556976f37352c22a3725400fb16e7559e42cb4f9696b4552cbadb8142378df128868deb6966580a103da1fa99f885c7fb31662a77065ec86b79b9a3f4d61f64b59d32eb0b272d67c6d16382f94598f3f09e577650e7e467f8756cd7da6a1ce95a5618c6d228397d77712434ff09c563800e7dd051278d6759293eab2cf1e41a877b440d4bb9817fae323fd47d2f1f223eea267c4a9e9c25e213610e90694946d9d25e3b71ccd2d8d8c8abdb4cdc43d64bf9b6502d8b37556a8c48a8621b3d597283a650a34d56e03d9b0e4236f8544c04ab226158c04f15865cf42f2f848f15b146f9c549d6c0b3b7d03ba193c0209f04151c200cf50ff6d59cca72aa54c84c05483105d5a224119e09655c48976f224f2545dcaf6f6a90ccd63387741e0f1d69e89c97c1a9e78e5ddc67448cf47622ee67ef85301c1f3e5dc875628dd363c1ebef814ac27f87bb34a3693caaddaec93a86ac944952918039ff0637360305d181a9d94365dc30acb4c7f3545d7e1f534a44409516f8808b186f537b7b1ab15a46b58476986701884b54e2fde0f2f9d2830e7792f3811d430519ecb0872eebb8df7a8606baec0f20a9170375633a7a7227004f21a7a0053e0117b800294c7efafa9ca7e882d7979702b310341f41d06a480e26e98f0f00d9d6a21156d43d7287649f1f11cacdd1487c76f70ff2e54bf52ae79afbe5d7c45bd6efbc89683fc312dd2cdcf5aa4b0defa0080915291e086aec7ad99ee7fe0d83442cc99b57d111e8bc80fac7f9a41dd113a230cbdd09a56bd87f62dde76e08aa3b78e1545eb69ceda3d301c9c232a78e714464668b581f8704a16844403c385e9db751235091c13f12b8249b82cfc213ed959351fe82862f959063cb737032c1a25ecb8d0da630fb8e3fa473220c0b083e6bf9c0b646d833ae0e0966c7d12612b0f7cc626778bd19320dfb8b79fb5b015b64895c01cf3e61e3901ef1c0073242a28478b5f053623e230447454c691ddc27abc2c31176dd3104ed670265833b4f42e1532c7904756893b8a037bfce97be453468265eb92c603e6003a8a536296dbe5bac8f999c624714261b52f15c41e62320c6a2d637427a6ef0343941e17d6a3d6302d598fe597c0271555311b4a00b6e6d1dcfb692e1ec9e63c3999d1ca92c0817c7aea3d6396b55ca526553adc2a7f4ee8b1d7fd2df467590fa184ed9d690d6d28bfa8c2f8e93edd656d1337fa1a31d7caa80fa35227701d606dc2024a66abcf4579dcd0023274816c0aaffdf10297eb8fa268741f181d357069c40da48f14bcaf24ae915b07e22670451dcc7b87a4a175278fab22e2ffcd1e88ed9f13f58095e794c7569f1cadfd6a182cfed1f342ada56cf816e2bb1cce9efb7180b2971ddd6f6081d21904f0f337456895cd450071b16e7716e2ec269c1f1e573705b57240437b0e70e2c2b38b368cb5806466ad21ec208a7e9e1ea217b093b5809a72b67f224c33845d22f89cd3084d3d753bc094589a02bb8eb99df3e91b7d796af83a66145b0ae4a8b6142369996c48c6077c35bd16ee4ee2f5bf22ba6ba3e882724c959fbbbdc364ad3aaa5f71be59c35697a2368b04eedcb8225396845ef18f06f931c60c0b171f02d42c71326b2e58767746b091085150c72127fc384514245f5987e1460cadcc777730496b13ffe38e70f487cdef0f48aaf67392463e6c315a1c26c1b72e6ce4d7292b3189a638eb6dffc667f74ac311053438d88589200b10082dbd353a20af3a0de89e838eb01e6c8817d5cc00fc2d97dfb21cbd931b14f56abb32dbbd0040ed3b34acb0c7215904a28569088e8a09c6dcda1097154dc5177a0eb4ec002ab61d9d8cbc2dcc9cce21f339b20292d19c370741cd082646ca517fdf523e133c6830d85644e615eb4094645789a7a6b9a11dbdef7ec79be8aec90c235f1855299f11251a1081f2bbab29174edc708f926a9035de8dd6d723f40bffeb1aaf3d9620339285e03dc4ddf4700f0cdd8af473dc464806b604c2b3cf281fa563895f9e0263a783fe327a204ed58cc16df0e93123be5f62881891e06622a3642bad30ff37b7c9802e4f6cfd868d9ccc20920ae3cbda914ad7c5dc8240b13a60a6fac277d93418121a5784077c541761949542a9a0cdf11f14497cf7b8f78df07f218bd1c86c526bad76da1f2b743253c7ee816884a540da0f90928602b9149f9a86146b94a4213e3782483e5e6311ba857bf938d7bd35de90b38e3f76c7b5df42721735e1fe017aeab87d82ec2e1d51d46b6bf25136688e0b55468ec320c5b5b94f7dfb34617be35afd1b985bdf19ea911d08467c874e19f8e7402ba33987e04a9e8484bf835556b71321b894164d02f63bc9991bccc18f90ab0f7b0368f78753baeda1aa70628b0b52088bdb4d192702c85532431eb01d03b2248d489a86e7e117783738715c1d4f22b84fa6364dc108262dbbddabc76d44969778a7247c8df8e8dd74f6bc8772783a54cdd31c72114b07852265471fb95aec4468ad29deeef7277a72250f9c02744bf24370df2d6aa0989361f2d6222088b434dd413bd72b9379adc891372cfb23bfa2db82e5653e47cee701a81806ab5cf0f8b74fce277c5a8831915f019bcdcfef639a86497be55acd20a9c05c5f9ed213d7eeac525d5b93316a10bb31760cc37db63fbb3f1e923422b9885b628a38802f8a251d34e4928f19f9515aedb8647629b207102672e07802e2829e1fe6c81916c7ac1cfc36ba994f2ba8b0a03c643cdd724d95f99672350759b7cccd84b2138001524620f3930ebc4b928eec573dd34b209f40072fd6cdb95aa5dc6b7461b6ac10c92a840e1d985f848ae07980f1d016522d99de3df1b6d3e2cb601561c7ee974e868039f8d0ce62f7e6e4ac3a1e9122500d3d0843b2c5379e04397d7904881c5ac7acc8def09478787929cf9340f754b86a1981c44fd441d6c0f4a375000c91aa5002bfb7ba44407cb4bc8c2e952e3147d92f31d4f08578da17db65ec95e8548ae4a57851522bcaee9eeed80d40b53512985d6ea95cf6cb0df3afd5364c09ca02121255fc07c0115bda509b13c217929ef423e7241cbba6429cdb45903124c09321f5b0479f9fa5a54aba1c2a4b3162b2cdaea56e6dd961f182aad90ac6694624a4470be8bb2869934e1fae858111666f639008b1d41f17ada99d0aa3bdb4695af65e358252db957ebcf0bfebec7f0062900adc86e3b95dd2330ac1bdc9690af796032efd025d3a969c3f20d84aa436735623c4dd0042d09c81a1c5f852f9b2c08013fddae3807101c5298cc5ee9392eb75940dd453ecdd421a5781b66bad5f9fd3a9a5a447aac2a0a0af44496a5fb4889744f4a88fdfb2b54764738311524369f7eca94c21d905d9f99f8a8f2ccf93f80eb4eb497c82ee199eaf5dbbb39d748219a5382231e5ab1e26d636a3139021812e3ea4cc24c56823dd02ae41d898789a0733a8bf0b536447c3f19a2ce88b32937bcd6cb5310dd7a7f68d9748309a5ff14811cae038fd19c345d7dc86da9a23244b03048acd528e8ce2d8a7b4d39bbeb36bb83059cb80539179280ae8b31a4cde90c4db6c843d77e1b0d644f983f33218ce7dbab0084e0b6fdf19cf1fea1c2d1133425ce50f226f61095f806f58e01689251795747e89d4821be50242d2af6c488d948274476f050d50b0ddeb33ec020670aac250de712217a54083efd3472717d9ba86ce177fd922e229fa5920c0c01a81cca481250e7a61a54e69dff3de125de5bac90b3d1c1ed4ad4520a8b2b8c1059a013e916d1e1d93fcfd596a9ad57a85a08984f966800049273bbb061e0e7df621b4639199730469084bf0e68085d86d07a3d877d6f8d976fd75a571409a6e60817c50698c67e9032c2e1a2219496c481a263dd55f2c080a92930d8defd85c6e33e161c35bd2cad453882720d8ed39c653624624e3bddcfd1a6e0584471b95fcfc4a9c1f0e0cf719d5d17280a1173673e3efe530e49b9721f82b549915279e54152905b77ef5c3ceb9ead5b7b0438ea2e30441d6b860485c9ca83d2bce2f4c72ec221d1b259b2a49f6c10dccc0813eb7482aca1a67572de2d887395928d7bfc690280fea7a3e28ba58f80a6683b5b113748d2496a4322a3c5e4c8aa9077813a4b8a7fdef3e7fb213918b061c45466ce2c11289ad10bc0236677cbd519b502516c6a5cf3e3b1b82ea8090e9fdd06739e46c3cea4a3a341fe010a688647910e027939259a4bcbc589e519389fb52974cd34559367ea3c020be5057ccbe18b5a81928c49d73ab1f70f0d83cbf4601f04e8e60ac4c225fdba05c2e59521d34e8ae8ed43789b349e0641e5713f862d9f0b48d477729d2515c1b4a7dee126311a7b9cf8065ca3880b119ce79a2738180035ba8596c3b508bc7d91a506a4b1ff81719db9db2b66a6528a1f9cb991d482b9a72309d8128ff019cfc1de1fdb1c922dff5c4b371e2ac1becdf9bad1d05e1b3c4be9abf0f19551db4f35f82d31257141967e0bb7add1c4a78e33b28c5764e7be027c4bd692d8f7362c1cbfdcfd09f6a8ca86223bc06c708860398a74e174aece3c6185c632a404e5d373c406118d1bfe651fd9566b97fa31a75a3cbed87314553db6213efd00eecfca3a2bc8f5f8fddea0ab1af1c9b754e33cbb7ef2e2012b931632f6a167c449d6203b3d73daf0d71e0b7f8a811538bae7f677662f8825e89b4259f28c338c0199e1cd283ebe98c0e6a8c5172ed62eab06a280b02a2143c60a54ec7efc13b40836fbe2b966b23dbfeb972a95d295742129ee0a08c8756b05f7bc7aabd375bf9e97d8eb1a493beae209edfa90a3be18aa2b2f7402fee529d086078a13e8c9c409bf179020fe3e977561ab8c52cf20f12fe6f6b9bb83928c2bc8ae087d8675a07b8e85ff9a5bf6af98fd0d970afb183ef5df261688bf91c05a0a59e96ca8e7c3fd00c6d604d2b15fc2f2214c44948e56c050250798f8971824a3ca5d94094981c4a0e20611ab4364383d11368d5c755b109d477c0df787f3c458d097f90b8c51a9d6f624db101fabd2e26e72700edf9ba48496f3c1d1dcf4bcda3ffc6b44b220ae61fec885b0c5945e96475f85504294f51df65a5044db4de586f814158cc9f5b1141b0cd747050e1c0210995c6ce3d217cc6ad4c034b8904ee4d6135fbc22ba8d0f084c04849c5050090e0068bf5612880a9c27182804eed2b44ea2af03167cc5fe3ce8669252b19c9b30ae1098d1c571377c197ecc00c2471c34c7a0f10dfb1ec49ba3466f84a0546917f71605c5182504931bcb8a0c47d26d53c9240f2152e92f0d58af85da8432a9b51e8d7716307842f5623089f553660ddddac9a8717c526f403951bdc3b545fd4d1227b628ebf4b5f1af9e093f3bdc0306e0bf34a79230f7ba68b10b0520f6ee76fb33c3868b21fc9cb709f1295eea301d0f627aac219125c4eda5417d68ee639fb85bf85ed7204d1e49f990c5338000a7c9025a3d934543d138559895227c244613c2b3dba2f28ccc43ac87b9c4f0181aed1dce5f6bf9844a9a3bda94df38ac9226a03f076f1e39daa5ea18368b002fc39cb13306a445a152738d273c41103a444ec7679bea0d8834ecb8b5d0df7f8961b88b7beaccd77b3ce306826ca83f35f79b27580bb48e20192f928dfdae3100f4f94ecf5016d227d6b97be94d01cbf5aa80a323dd89a146169628bc23d89364b0049c7785dc2afdb3536ffeef791f520cc9aea30147e3464b3b1baf161be92d74ab91eaa682624cd93eb010c61c5d2fd79a9e6efa752461f206f9376f050321835e13ab3b19913db5fc61cc77ab05d5d987ff68786633846318b245eede4df4d325a7840419b057270956f448dc8a3ca5cf5e0ff4d63cf0f5889199a52c800f3c3e585ba562c854f64d501bff55481e6378c0e2b3de4307f97ab80d8543736cfbc824a8377f982200051eed0b50fdf473ce92f8baf471de9e4588355a3f1c142ed1efd4a61c93b65dc2919f98986dccf94360860b1e12ab91eaafad8055299dc2b028a20c9744571ea3d0dcf4bda99b30965372fe0fbcb68c211e2a457f08fca10ab78ed0a43467f368a71e44724238f16e4ffc7efebef4b23d17d0d028185a2d78b47b851cfce56bbe1057334ad845a1e82c50073d2dbc900f87dd5ccb14f5496423f325bbeb949ed25f5fce1a98d53cc6095acae6f76dcaa77196751ef6f3deab3a96b9be6ca3e050ab725c2d426b0c6e1beb3e6c0fb6c9e765734e0c056989e45d46c7d6d50951f8ec9927b57da21ba2b39c453927aa529745bacedc8873a5685e4cc57b6758fcab63d9ceca84dee5deb62e0823c6059ce39457ac68c402652d6426e430d55697e7e244799b8d4f2725ea2e7470e55c399ec987b0392c297f951fc79747334261416e54f9fa2978ede7a9512546e015bcdb4c831fa511549232d683d49be7443608b3d3d91ef32825f8af6c4f8cd7938a1a01c02ab3188490835a580de91c885e1b855db98a8dcd9905233a0cb50c798cdb0e23cbfa069038d9a4e4641c37c5aecd23b9dd151e808d918b742f550a9cf6a944f9480ec2ae36c158417449c9363f395c3da731a2f9385cd4aee3c0ffcae53e3a480c75c1b690fbab3b474f73ba2b03a858036e9703921e1d35f17314c4eea7059fee53eb4083b671ccd553d78bdccb7618bb9fdfe33e62fc4a4cc5e3e1d74a7d50d445407aa209629e8b5fd16b363218bf113e3b4357e756f7f56273d5a24444996dd95c7319c7442550a7387f45bc1060", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x3c311d57d4daf52904616cf69648081e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d": "0x1058c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1facf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x45323df7cc47150b3930e2666b0aa3134e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x57f8dc2f5ab09467896f47300f0424384e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d": "0x1058c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1facf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0x5e8a19e3cd1b7c148b33880c479c02814e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x682a59d51ab9e48a8c8cc418ff9708d24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x79e2fe5d327165001f8232643023ed8b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7b3237373ffdfeb1cab4222e3b520d6b4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00000000000000000000000000000000", + "0xcd5c1f6df63bc97f4a8ce37f14a50ca74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb373285fbd4c6fce71acf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69": "0xacf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39fec29fe06b54a1c58c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1f": "0x58c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1f", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3a8f65c4e14b8c350e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066": "0xe803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3fb08f1ab6e14e0d4fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123": "0xfcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195037606837a8a4a9086175726180e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066": "0xe803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19506f21f0983582bc906175726180fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123": "0xfcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195096f8eb862d21fed0617572618058c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1f": "0x58c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7b1f8ade68c95ad6175726180acf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69": "0xacf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x1058c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1facf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x1058c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1f58c18106775d912da3fbb93ffb0b68a9734f009a231fe47fcb6164939b828a1facf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69acf59a303f7444c1c494331500b5448d714b361db59bc08218e343eb0810ae69e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066e803b1d97726c36cf938a374bb5b0f0a6da528cb63ac2d4b76c669a861430066fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123fcde6b948191260c67521879d9ab2b4576abf3321655c3d754a75e7781207123", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xe38f185207498abb5c213d0fb059b3d84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xe38f185207498abb5c213d0fb059b3d86323ae84c43568be0d1394d5d0d522c4": "0x02000000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000" + }, + "childrenDefault": {} + } + } +} \ No newline at end of file From 1ea523dde74ef5da20f17abe147d218bf3d1f3fc Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Tue, 31 May 2022 18:50:02 +0100 Subject: [PATCH 083/238] Companion for #11124 (#1316) * Fixes * Bump * Formatting * Bump * Bump --- Cargo.lock | 518 +++++++++--------- .../runtimes/assets/statemine/src/lib.rs | 12 +- .../runtimes/assets/statemint/src/lib.rs | 12 +- .../contracts-rococo/src/xcm_config.rs | 10 +- .../testing/rococo-parachain/src/lib.rs | 4 +- 5 files changed, 281 insertions(+), 275 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc163eb1f2..2ef7ab97ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2799,7 +2799,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", ] @@ -2817,7 +2817,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -2839,7 +2839,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "Inflector", "chrono", @@ -2889,7 +2889,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2916,7 +2916,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -2944,7 +2944,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "bitflags", "frame-metadata", @@ -2974,7 +2974,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2986,7 +2986,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2998,7 +2998,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro2", "quote", @@ -3008,7 +3008,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "log", @@ -3025,7 +3025,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3040,7 +3040,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "sp-api", @@ -3049,7 +3049,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "sp-api", @@ -3906,7 +3906,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-primitives", "bitvec", @@ -3998,7 +3998,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "polkadot-primitives", @@ -5334,7 +5334,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "dyn-clonable", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "expander 0.0.6", "petgraph", @@ -5387,7 +5387,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -5404,7 +5404,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5418,7 +5418,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -5434,7 +5434,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -5450,7 +5450,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -5465,7 +5465,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5489,7 +5489,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5509,7 +5509,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5524,7 +5524,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "beefy-primitives", "frame-support", @@ -5540,7 +5540,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5563,7 +5563,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5581,7 +5581,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5598,7 +5598,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5620,7 +5620,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5641,7 +5641,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5686,7 +5686,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5703,7 +5703,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "bitflags", "frame-benchmarking", @@ -5730,7 +5730,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "bitflags", "parity-scale-codec", @@ -5745,7 +5745,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro2", "quote", @@ -5755,7 +5755,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5785,7 +5785,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5801,7 +5801,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5824,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5837,7 +5837,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5870,7 +5870,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5893,7 +5893,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5909,7 +5909,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5929,7 +5929,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5946,7 +5946,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5963,7 +5963,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5981,7 +5981,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5996,7 +5996,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6011,7 +6011,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6027,7 +6027,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6046,7 +6046,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6063,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6086,7 +6086,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6102,7 +6102,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6117,7 +6117,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6131,7 +6131,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6146,7 +6146,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6162,7 +6162,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6183,7 +6183,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6199,7 +6199,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6213,7 +6213,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6236,7 +6236,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6247,7 +6247,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "sp-arithmetic", @@ -6256,7 +6256,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6285,7 +6285,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6303,7 +6303,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6322,7 +6322,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-support", "frame-system", @@ -6338,7 +6338,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6353,7 +6353,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6364,7 +6364,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6381,7 +6381,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6396,7 +6396,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6412,7 +6412,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-benchmarking", "frame-support", @@ -6427,7 +6427,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "frame-system", @@ -6445,7 +6445,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-benchmarking", "frame-support", @@ -6958,7 +6958,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6973,7 +6973,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6987,7 +6987,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "derive_more", "fatality", @@ -7010,7 +7010,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "fatality", "futures 0.3.21", @@ -7031,7 +7031,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7056,7 +7056,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7096,7 +7096,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "always-assert", "fatality", @@ -7117,7 +7117,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7130,7 +7130,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "derive_more", "fatality", @@ -7153,7 +7153,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7167,7 +7167,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7187,7 +7187,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "always-assert", "async-trait", @@ -7208,7 +7208,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7226,7 +7226,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "derive_more", @@ -7255,7 +7255,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "futures 0.3.21", @@ -7275,7 +7275,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "fatality", @@ -7294,7 +7294,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7309,7 +7309,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "futures 0.3.21", @@ -7327,7 +7327,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7342,7 +7342,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7359,7 +7359,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "fatality", "futures 0.3.21", @@ -7378,7 +7378,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "futures 0.3.21", @@ -7395,7 +7395,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "fatality", @@ -7413,7 +7413,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "always-assert", "assert_matches", @@ -7444,7 +7444,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7460,7 +7460,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7477,7 +7477,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-std", "lazy_static", @@ -7495,7 +7495,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bs58", "futures 0.3.21", @@ -7514,7 +7514,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "derive_more", @@ -7535,7 +7535,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7557,7 +7557,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7567,7 +7567,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "futures 0.3.21", @@ -7585,7 +7585,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "derive_more", "futures 0.3.21", @@ -7604,7 +7604,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "derive_more", @@ -7637,7 +7637,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7659,7 +7659,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "derive_more", "frame-support", @@ -7753,7 +7753,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7768,7 +7768,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitvec", "frame-system", @@ -7798,7 +7798,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7830,7 +7830,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-primitives", "bitvec", @@ -7915,7 +7915,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-primitives", "bitvec", @@ -7962,7 +7962,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "polkadot-primitives", @@ -7974,7 +7974,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bs58", "parity-scale-codec", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "bitflags", "bitvec", @@ -8029,7 +8029,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "async-trait", "beefy-gadget", @@ -8132,7 +8132,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8153,7 +8153,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8163,7 +8163,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8188,7 +8188,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-primitives", "bitvec", @@ -8249,7 +8249,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-benchmarking", "frame-system", @@ -8394,7 +8394,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8844,7 +8844,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8972,7 +8972,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9049,7 +9049,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "polkadot-primitives", @@ -9219,7 +9219,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "sp-core", @@ -9230,7 +9230,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9257,7 +9257,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9280,7 +9280,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9296,7 +9296,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9313,7 +9313,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9324,7 +9324,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "chrono", "clap 3.1.18", @@ -9363,7 +9363,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "fnv", "futures 0.3.21", @@ -9391,7 +9391,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "hash-db", "kvdb", @@ -9416,7 +9416,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9440,7 +9440,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9469,7 +9469,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "fork-tree", @@ -9512,7 +9512,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9534,7 +9534,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9547,7 +9547,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -9572,7 +9572,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "sc-client-api", "sp-authorship", @@ -9583,7 +9583,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9610,7 +9610,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "environmental", "parity-scale-codec", @@ -9627,7 +9627,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "parity-scale-codec", @@ -9642,7 +9642,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9660,7 +9660,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "ahash", "async-trait", @@ -9700,7 +9700,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9721,7 +9721,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "hex", @@ -9753,7 +9753,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "asynchronous-codec", @@ -9805,7 +9805,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "libp2p", @@ -9818,7 +9818,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "ahash", "futures 0.3.21", @@ -9835,7 +9835,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "libp2p", @@ -9855,7 +9855,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "bitflags", "either", @@ -9884,7 +9884,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "bytes", "fnv", @@ -9912,7 +9912,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "libp2p", @@ -9925,7 +9925,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9934,7 +9934,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "hash-db", @@ -9964,7 +9964,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9987,7 +9987,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10000,7 +10000,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "directories", @@ -10065,7 +10065,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "parity-scale-codec", @@ -10079,7 +10079,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10098,7 +10098,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "libc", @@ -10117,7 +10117,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "chrono", "futures 0.3.21", @@ -10135,7 +10135,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "ansi_term", "atty", @@ -10166,7 +10166,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10177,7 +10177,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10204,7 +10204,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "log", @@ -10217,7 +10217,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10656,7 +10656,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "enumn", "parity-scale-codec", @@ -10732,7 +10732,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "hash-db", "log", @@ -10749,7 +10749,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "blake2", "proc-macro-crate", @@ -10761,7 +10761,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -10774,7 +10774,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "integer-sqrt", "num-traits", @@ -10789,7 +10789,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -10802,7 +10802,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "parity-scale-codec", @@ -10814,7 +10814,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "sp-api", @@ -10826,7 +10826,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "log", @@ -10844,7 +10844,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -10863,7 +10863,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "parity-scale-codec", @@ -10881,7 +10881,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "merlin", @@ -10904,7 +10904,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -10918,7 +10918,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -10931,7 +10931,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "base58", "bitflags", @@ -10977,7 +10977,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "blake2", "byteorder", @@ -10991,7 +10991,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro2", "quote", @@ -11002,7 +11002,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "kvdb", "parking_lot 0.12.0", @@ -11011,7 +11011,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro2", "quote", @@ -11021,7 +11021,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "environmental", "parity-scale-codec", @@ -11032,7 +11032,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "finality-grandpa", "log", @@ -11050,7 +11050,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11064,7 +11064,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "hash-db", @@ -11089,7 +11089,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "lazy_static", "sp-core", @@ -11100,7 +11100,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -11117,7 +11117,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "thiserror", "zstd", @@ -11126,7 +11126,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "parity-scale-codec", @@ -11141,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11155,7 +11155,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "sp-api", "sp-core", @@ -11165,7 +11165,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "backtrace", "lazy_static", @@ -11175,7 +11175,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "rustc-hash", "serde", @@ -11185,7 +11185,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "either", "hash256-std-hasher", @@ -11207,7 +11207,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11224,7 +11224,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "Inflector", "proc-macro-crate", @@ -11236,7 +11236,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "parity-scale-codec", @@ -11250,7 +11250,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "serde", "serde_json", @@ -11259,7 +11259,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11273,7 +11273,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "scale-info", @@ -11284,7 +11284,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "hash-db", "log", @@ -11306,12 +11306,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11324,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "log", "sp-core", @@ -11337,7 +11337,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures-timer", @@ -11353,7 +11353,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "sp-std", @@ -11365,7 +11365,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "sp-api", "sp-runtime", @@ -11374,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "log", @@ -11390,7 +11390,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "hash-db", "memory-db", @@ -11406,7 +11406,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11423,7 +11423,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11434,7 +11434,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "impl-trait-for-tuples", "log", @@ -11713,7 +11713,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "platforms", ] @@ -11721,7 +11721,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11742,7 +11742,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures-util", "hyper", @@ -11755,7 +11755,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "jsonrpsee", "log", @@ -11776,7 +11776,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "async-trait", "futures 0.3.21", @@ -11802,7 +11802,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11812,7 +11812,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11823,7 +11823,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "ansi_term", "build-helper", @@ -11930,7 +11930,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "polkadot-primitives", @@ -12208,7 +12208,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12219,7 +12219,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12348,7 +12348,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c8653447fc8ef8d95a92fe164c96dffb37919e85" +source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12929,7 +12929,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "beefy-primitives", "bitvec", @@ -13017,7 +13017,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "polkadot-primitives", @@ -13258,7 +13258,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13271,7 +13271,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-support", "frame-system", @@ -13291,7 +13291,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "frame-benchmarking", "frame-support", @@ -13309,7 +13309,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#8dbb67cba404abe8d6d69d1275c6bde90caf3033" +source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index b1789b214a..e9a279a960 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -46,7 +46,7 @@ use codec::{Decode, Encode, MaxEncodedLen}; use constants::{currency::*, fee::WeightToFee}; use frame_support::{ construct_runtime, parameter_types, - traits::{AsEnsureOriginWithArg, EnsureOneOf, InstanceFilter}, + traits::{AsEnsureOriginWithArg, EitherOfDiverse, InstanceFilter}, weights::{ConstantMultiplier, DispatchClass, Weight}, PalletId, RuntimeDebug, }; @@ -222,7 +222,7 @@ parameter_types! { /// We allow root and the Relay Chain council to execute privileged asset operations. pub type AssetsForceOrigin = - EnsureOneOf, EnsureXcm>>; + EitherOfDiverse, EnsureXcm>>; impl pallet_assets::Config for Runtime { type Event = Event; @@ -428,8 +428,10 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type ChannelInfo = ParachainSystem; type VersionWrapper = PolkadotXcm; type ExecuteOverweightOrigin = EnsureRoot; - type ControllerOrigin = - EnsureOneOf, EnsureXcm>>; + type ControllerOrigin = EitherOfDiverse< + EnsureRoot, + EnsureXcm>, + >; type ControllerOriginConverter = xcm_config::XcmOriginToTransactDispatchOrigin; type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo; } @@ -476,7 +478,7 @@ parameter_types! { /// We allow root and the Relay Chain council to execute privileged collator selection operations. pub type CollatorSelectionUpdateOrigin = - EnsureOneOf, EnsureXcm>>; + EitherOfDiverse, EnsureXcm>>; impl pallet_collator_selection::Config for Runtime { type Event = Event; diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 68cd94a202..2f229aa560 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -75,7 +75,7 @@ use codec::{Decode, Encode, MaxEncodedLen}; use constants::{currency::*, fee::WeightToFee}; use frame_support::{ construct_runtime, parameter_types, - traits::{AsEnsureOriginWithArg, EnsureOneOf, InstanceFilter}, + traits::{AsEnsureOriginWithArg, EitherOfDiverse, InstanceFilter}, weights::{ConstantMultiplier, DispatchClass, Weight}, PalletId, RuntimeDebug, }; @@ -252,7 +252,7 @@ parameter_types! { /// We allow root and the Relay Chain council to execute privileged asset operations. pub type AssetsForceOrigin = - EnsureOneOf, EnsureXcm>>; + EitherOfDiverse, EnsureXcm>>; impl pallet_assets::Config for Runtime { type Event = Event; @@ -458,8 +458,10 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type ChannelInfo = ParachainSystem; type VersionWrapper = PolkadotXcm; type ExecuteOverweightOrigin = EnsureRoot; - type ControllerOrigin = - EnsureOneOf, EnsureXcm>>; + type ControllerOrigin = EitherOfDiverse< + EnsureRoot, + EnsureXcm>, + >; type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin; type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo; } @@ -506,7 +508,7 @@ parameter_types! { /// We allow root and the Relay Chain council to execute privileged collator selection operations. pub type CollatorSelectionUpdateOrigin = - EnsureOneOf, EnsureXcm>>; + EitherOfDiverse, EnsureXcm>>; impl pallet_collator_selection::Config for Runtime { type Event = Event; diff --git a/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs b/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs index 6a33909332..7f9e808f54 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/xcm_config.rs @@ -19,7 +19,7 @@ use super::{ }; use frame_support::{ match_types, parameter_types, - traits::{EnsureOneOf, Everything, Nothing}, + traits::{EitherOfDiverse, Everything, Nothing}, weights::Weight, }; use frame_system::EnsureRoot; @@ -48,8 +48,10 @@ parameter_types! { } /// We allow root and the Relay Chain council to execute privileged collator selection operations. -pub type CollatorSelectionUpdateOrigin = - EnsureOneOf, EnsureXcm>>; +pub type CollatorSelectionUpdateOrigin = EitherOfDiverse< + EnsureRoot, + EnsureXcm>, +>; /// 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 @@ -194,7 +196,7 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type ChannelInfo = ParachainSystem; type VersionWrapper = PolkadotXcm; type ExecuteOverweightOrigin = EnsureRoot; - type ControllerOrigin = EnsureOneOf< + type ControllerOrigin = EitherOfDiverse< EnsureRoot, EnsureXcm>, >; diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 7ebdfb3793..837632b67f 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -38,7 +38,7 @@ use sp_version::RuntimeVersion; // A few exports that help ease life for downstream crates. pub use frame_support::{ construct_runtime, match_types, parameter_types, - traits::{EnsureOneOf, Everything, IsInVec, Randomness}, + traits::{EitherOfDiverse, Everything, IsInVec, Randomness}, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND}, ConstantMultiplier, DispatchClass, IdentityFee, Weight, @@ -483,7 +483,7 @@ parameter_types! { /// A majority of the Unit body from Rococo over XCM is our required administration origin. pub type AdminOrigin = - EnsureOneOf, EnsureXcm>>; + EitherOfDiverse, EnsureXcm>>; impl pallet_assets::Config for Runtime { type Event = Event; From 6a7add66e71062cd63375a26c43f51e8253bbf6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 May 2022 23:16:54 +0200 Subject: [PATCH 084/238] Bump parking_lot from 0.12.0 to 0.12.1 (#1322) Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.12.0 to 0.12.1. - [Release notes](https://github.com/Amanieu/parking_lot/releases) - [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md) - [Commits](https://github.com/Amanieu/parking_lot/compare/0.12.0...0.12.1) --- updated-dependencies: - dependency-name: parking_lot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 100 +++++++++--------- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- .../Cargo.toml | 2 +- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- client/service/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 8 files changed, 57 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2ef7ab97ef..956474ce51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -450,7 +450,7 @@ dependencies = [ "hex", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-chain-spec", "sc-client-api", "sc-finality-grandpa", @@ -483,7 +483,7 @@ dependencies = [ "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-rpc", "sc-utils", "serde", @@ -1593,7 +1593,7 @@ dependencies = [ "cumulus-test-runtime", "futures 0.3.21", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-test-helpers", @@ -1670,7 +1670,7 @@ dependencies = [ "cumulus-primitives-core", "cumulus-relay-chain-interface", "futures 0.3.21", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", "sc-consensus", "sp-api", @@ -1697,7 +1697,7 @@ dependencies = [ "futures 0.3.21", "futures-timer", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-client", "polkadot-node-primitives", "polkadot-parachain 0.9.23", @@ -1761,7 +1761,7 @@ dependencies = [ "cumulus-primitives-core", "cumulus-relay-chain-interface", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-overseer", "polkadot-primitives", "sc-chain-spec", @@ -2026,7 +2026,7 @@ dependencies = [ "cumulus-test-service", "futures 0.3.21", "futures-timer", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-cli", "polkadot-client", "polkadot-primitives", @@ -2060,7 +2060,7 @@ dependencies = [ "futures 0.3.21", "jsonrpsee-core", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-overseer", "polkadot-service", "sc-client-api", @@ -2085,7 +2085,7 @@ dependencies = [ "futures-timer", "jsonrpsee", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-service", "sc-client-api", "sc-rpc-api", @@ -2206,7 +2206,7 @@ dependencies = [ "pallet-transaction-payment", "parachains-common", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-cli", "polkadot-primitives", "polkadot-service", @@ -3801,7 +3801,7 @@ dependencies = [ "futures-util", "hyper", "jsonrpsee-types", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.8.5", "rustc-hash", "serde", @@ -4034,7 +4034,7 @@ checksum = "ece7e668abd21387aeb6628130a6f4c802787f014fa46bc83221448322250357" dependencies = [ "kvdb", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", ] [[package]] @@ -4049,7 +4049,7 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "regex", "rocksdb", "smallvec", @@ -4138,7 +4138,7 @@ dependencies = [ "libp2p-websocket", "libp2p-yamux", "multiaddr", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project 1.0.10", "rand 0.7.3", "smallvec", @@ -4183,7 +4183,7 @@ dependencies = [ "multiaddr", "multihash", "multistream-select", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project 1.0.10", "prost 0.9.0", "prost-build", @@ -4363,7 +4363,7 @@ dependencies = [ "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", "smallvec", "unsigned-varint", @@ -4604,7 +4604,7 @@ checksum = "be902ebd89193cd020e89e89107726a38cfc0d16d18f613f4a37d046e92c7517" dependencies = [ "futures 0.3.21", "libp2p-core", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "thiserror", "yamux", ] @@ -6682,7 +6682,7 @@ dependencies = [ "hashbrown 0.12.0", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "primitive-types", "smallvec", "winapi", @@ -6733,9 +6733,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", "parking_lot_core 0.9.1", @@ -7194,7 +7194,7 @@ dependencies = [ "bytes", "futures 0.3.21", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7484,7 +7484,7 @@ dependencies = [ "log", "mick-jaeger", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-node-primitives", "polkadot-primitives", "sc-network", @@ -7571,7 +7571,7 @@ source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab2 dependencies = [ "async-trait", "futures 0.3.21", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -7644,7 +7644,7 @@ dependencies = [ "lru 0.7.5", "orchestra", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -9370,7 +9370,7 @@ dependencies = [ "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-executor", "sc-transaction-pool-api", "sc-utils", @@ -9401,7 +9401,7 @@ dependencies = [ "log", "parity-db", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", "sc-state-db", "sp-arithmetic", @@ -9423,7 +9423,7 @@ dependencies = [ "futures-timer", "libp2p", "log", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", "sc-utils", "serde", @@ -9480,7 +9480,7 @@ dependencies = [ "num-rational 0.2.4", "num-traits", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", "retain_mut", "sc-client-api", @@ -9588,7 +9588,7 @@ dependencies = [ "lazy_static", "lru 0.7.5", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", @@ -9672,7 +9672,7 @@ dependencies = [ "hex", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.8.5", "sc-block-builder", "sc-chain-spec", @@ -9742,7 +9742,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12 dependencies = [ "async-trait", "hex", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "serde_json", "sp-application-crypto", "sp-core", @@ -9773,7 +9773,7 @@ dependencies = [ "log", "lru 0.7.5", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project 1.0.10", "prost 0.10.3", "prost-build", @@ -9896,7 +9896,7 @@ dependencies = [ "num_cpus", "once_cell", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", "sc-client-api", "sc-network", @@ -9941,7 +9941,7 @@ dependencies = [ "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -9970,7 +9970,7 @@ dependencies = [ "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-chain-spec", "sc-transaction-pool-api", "scale-info", @@ -10012,7 +10012,7 @@ dependencies = [ "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project 1.0.10", "rand 0.7.3", "sc-block-builder", @@ -10071,7 +10071,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "parity-util-mem-derive", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", "sp-core", ] @@ -10123,7 +10123,7 @@ dependencies = [ "futures 0.3.21", "libp2p", "log", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project 1.0.10", "rand 0.7.3", "serde", @@ -10144,7 +10144,7 @@ dependencies = [ "libc", "log", "once_cell", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "regex", "rustc-hash", "sc-client-api", @@ -10185,7 +10185,7 @@ dependencies = [ "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "retain_mut", "sc-client-api", "sc-transaction-pool-api", @@ -10223,7 +10223,7 @@ dependencies = [ "futures-timer", "lazy_static", "log", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "prometheus", ] @@ -10832,7 +10832,7 @@ dependencies = [ "log", "lru 0.7.5", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sp-api", "sp-consensus", "sp-database", @@ -10951,7 +10951,7 @@ dependencies = [ "num-traits", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "primitive-types", "rand 0.7.3", "regex", @@ -11005,7 +11005,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" dependencies = [ "kvdb", - "parking_lot 0.12.0", + "parking_lot 0.12.1", ] [[package]] @@ -11071,7 +11071,7 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "secp256k1", "sp-core", "sp-externalities", @@ -11106,7 +11106,7 @@ dependencies = [ "futures 0.3.21", "merlin", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "schnorrkel", "serde", "sp-core", @@ -11290,7 +11290,7 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", "smallvec", "sp-core", @@ -12089,7 +12089,7 @@ dependencies = [ "mio", "num_cpus", "once_cell", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project-lite 0.2.7", "signal-hook-registry", "socket2", @@ -12332,7 +12332,7 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "resolv-conf", "smallvec", "thiserror", @@ -13326,7 +13326,7 @@ dependencies = [ "futures 0.3.21", "log", "nohash-hasher", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.8.5", "static_assertions", ] diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index 0682b2cab8..85d9fd807a 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] async-trait = "0.1.53" futures = { version = "0.3.8", features = ["compat"] } -parking_lot = "0.12.0" +parking_lot = "0.12.1" tracing = "0.1.34" # Substrate diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index ef2d77e6fd..38679292aa 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -11,7 +11,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "deriv derive_more = "0.99.2" futures = { version = "0.3.1", features = ["compat"] } futures-timer = "3.0.2" -parking_lot = "0.12.0" +parking_lot = "0.12.1" tracing = "0.1.34" # Substrate diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 37f3255345..b1c5e4f0ef 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" async-trait = "0.1.53" futures = "0.3.21" futures-timer = "3.0.2" -parking_lot = "0.12.0" +parking_lot = "0.12.1" tracing = "0.1.34" # Substrate diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 81d510b3c3..deffe763b7 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -19,7 +19,7 @@ sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "mas sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } futures = "0.3.21" -parking_lot = "0.12.0" +parking_lot = "0.12.1" derive_more = "0.99.2" async-trait = "0.1.53" thiserror = "1.0.31" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index cbb364c50b..18b47377a1 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -22,7 +22,7 @@ sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.2" -parking_lot = "0.12.0" +parking_lot = "0.12.1" jsonrpsee = { version = "0.13.1", features = ["ws-client"] } tracing = "0.1.34" async-trait = "0.1.53" diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index c68d0bb79e..2d7eba613e 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0" } -parking_lot = "0.12.0" +parking_lot = "0.12.1" tracing = "0.1.34" # Substrate diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 0f01f81755..fd596a8dc8 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -13,7 +13,7 @@ async-trait = "0.1.53" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.13.1", features = ["server"] } -parking_lot = "0.12.0" +parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } tokio = { version = "1.18.2", features = ["macros"] } From e403b268d451a76203cb7ff0feb13fc0057192c3 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Wed, 1 Jun 2022 08:40:03 +0100 Subject: [PATCH 085/238] Fixup benches after dir re-org (#1300) * Fixup after dir re-org * Update scripts/benchmarks-ci.sh Co-authored-by: Chevdor * Update scripts/benchmarks-ci.sh Co-authored-by: Chevdor * Update scripts/benchmarks-ci.sh Co-authored-by: Chevdor * fix typo Co-authored-by: Chevdor --- .gitlab-ci.yml | 6 +++--- scripts/benchmarks-ci.sh | 11 ++++++----- scripts/benchmarks.sh | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 60e07f918d..9b5b5df4f0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -211,9 +211,9 @@ benchmarks: <<: *collect-artifacts <<: *benchmarks-refs script: - - ./scripts/benchmarks-ci.sh statemine > ./artifacts/bench-statemine.log - - ./scripts/benchmarks-ci.sh statemint > ./artifacts/bench-statemint.log - - ./scripts/benchmarks-ci.sh westmint > ./artifacts/bench-westmint.log + - ./scripts/benchmarks-ci.sh assets statemine > ./artifacts/bench-statemine.log + - ./scripts/benchmarks-ci.sh assets statemint > ./artifacts/bench-statemint.log + - ./scripts/benchmarks-ci.sh assets westmint > ./artifacts/bench-westmint.log - git status - export BRANCHNAME="weights-${CI_COMMIT_BRANCH}" # Set git config diff --git a/scripts/benchmarks-ci.sh b/scripts/benchmarks-ci.sh index e74842868e..8b6afbebd1 100755 --- a/scripts/benchmarks-ci.sh +++ b/scripts/benchmarks-ci.sh @@ -2,10 +2,11 @@ steps=50 repeat=20 -chainName=$1 +category=$1 +runtimeName=$2 -benhcmarkOutput=./parachains/runtimes/$chainName/src/weights -benhcmarkChainName="$chainName-dev" +benchmarkOutput=./parachains/runtimes/$category/$runtimeName/src/weights +benchmarkRuntimeName="$runtimeName-dev" pallets=( pallet_assets @@ -24,7 +25,7 @@ pallets=( for p in ${pallets[@]} do ./artifacts/polkadot-parachain benchmark pallet \ - --chain=$benhcmarkChainName \ + --chain=$benchmarkRuntimeName \ --execution=wasm \ --wasm-execution=compiled \ --pallet=$p \ @@ -33,5 +34,5 @@ do --repeat=$repeat \ --json \ --header=./file_header.txt \ - --output=$benhcmarkOutput + --output=$benchmarkOutput done diff --git a/scripts/benchmarks.sh b/scripts/benchmarks.sh index eddd1e9215..a83b8cbcbb 100755 --- a/scripts/benchmarks.sh +++ b/scripts/benchmarks.sh @@ -3,9 +3,9 @@ steps=50 repeat=20 -statemineOutput=./parachains/runtimes/statemine/src/weights -statemintOutput=./parachains/runtimes/statemint/src/weights -westmintOutput=./parachains/runtimes/westmint/src/weights +statemineOutput=./parachains/runtimes/assets/statemine/src/weights +statemintOutput=./parachains/runtimes/assets/statemint/src/weights +westmintOutput=./parachains/runtimes/assets/westmint/src/weights statemineChain=statemine-dev statemintChain=statemint-dev From 0c4a9f08016d4b9a01caa9e0eec3f2bb09884e68 Mon Sep 17 00:00:00 2001 From: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Date: Wed, 1 Jun 2022 13:11:31 +0200 Subject: [PATCH 086/238] Statemint Should Not Recognise DOT Reserves (#1318) * recognise no reserves * adjust should_execute * docs and pass should_execute * typo --- parachain-template/runtime/src/xcm_config.rs | 5 +++-- parachains/common/src/xcm_config.rs | 5 +++-- parachains/runtimes/assets/statemine/src/xcm_config.rs | 5 ++++- parachains/runtimes/assets/statemint/src/xcm_config.rs | 5 ++++- parachains/runtimes/assets/westmint/src/xcm_config.rs | 5 ++++- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/parachain-template/runtime/src/xcm_config.rs b/parachain-template/runtime/src/xcm_config.rs index 3c77efba37..2ec84d1887 100644 --- a/parachain-template/runtime/src/xcm_config.rs +++ b/parachain-template/runtime/src/xcm_config.rs @@ -137,13 +137,14 @@ impl ShouldExecute for DenyReserveTransferToRelayChain { return Err(()) // Deny } - // allow reserve transfers to arrive from relay chain + // An unexpected reserve transfer has arrived from the Relay Chain. Generally, `IsReserve` + // should not allow this, but we just log it here. if matches!(origin, MultiLocation { parents: 1, interior: Here }) && message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. })) { log::warn!( target: "xcm::barriers", - "Unexpected ReserveAssetDeposited from the relay chain", + "Unexpected ReserveAssetDeposited from the Relay Chain", ); } // Permit everything else diff --git a/parachains/common/src/xcm_config.rs b/parachains/common/src/xcm_config.rs index f5004c9c67..d244428217 100644 --- a/parachains/common/src/xcm_config.rs +++ b/parachains/common/src/xcm_config.rs @@ -52,13 +52,14 @@ impl ShouldExecute for DenyReserveTransferToRelayChain { return Err(()) // Deny } - // allow reserve transfers to arrive from relay chain + // An unexpected reserve transfer has arrived from the Relay Chain. Generally, `IsReserve` + // should not allow this, but we just log it here. if matches!(origin, MultiLocation { parents: 1, interior: Here }) && message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. })) { log::warn!( target: "xcm::barrier", - "Unexpected ReserveAssetDeposited from the relay chain", + "Unexpected ReserveAssetDeposited from the Relay Chain", ); } // Permit everything else diff --git a/parachains/runtimes/assets/statemine/src/xcm_config.rs b/parachains/runtimes/assets/statemine/src/xcm_config.rs index 7ace1bf2b3..ce6fd18f91 100644 --- a/parachains/runtimes/assets/statemine/src/xcm_config.rs +++ b/parachains/runtimes/assets/statemine/src/xcm_config.rs @@ -162,7 +162,10 @@ impl xcm_executor::Config for XcmConfig { type XcmSender = XcmRouter; type AssetTransactor = AssetTransactors; type OriginConverter = XcmOriginToTransactDispatchOrigin; - type IsReserve = NativeAsset; + // Statemine does not recognize a reserve location for any asset. This does not prevent + // Statemine acting _as_ a reserve location for KSM and assets created under `pallet-assets`. + // For KSM, users must use teleport where allowed (e.g. with the Relay Chain). + type IsReserve = (); type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of KSM type LocationInverter = LocationInverter; type Barrier = Barrier; diff --git a/parachains/runtimes/assets/statemint/src/xcm_config.rs b/parachains/runtimes/assets/statemint/src/xcm_config.rs index f7f7206593..a8c652588c 100644 --- a/parachains/runtimes/assets/statemint/src/xcm_config.rs +++ b/parachains/runtimes/assets/statemint/src/xcm_config.rs @@ -162,7 +162,10 @@ impl xcm_executor::Config for XcmConfig { type XcmSender = XcmRouter; type AssetTransactor = AssetTransactors; type OriginConverter = XcmOriginToTransactDispatchOrigin; - type IsReserve = NativeAsset; + // Statemint does not recognize a reserve location for any asset. This does not prevent + // Statemint acting _as_ a reserve location for DOT and assets created under `pallet-assets`. + // For DOT, users must use teleport where allowed (e.g. with the Relay Chain). + type IsReserve = (); type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of DOT type LocationInverter = LocationInverter; type Barrier = Barrier; diff --git a/parachains/runtimes/assets/westmint/src/xcm_config.rs b/parachains/runtimes/assets/westmint/src/xcm_config.rs index c0dd1da1fd..06a75423b5 100644 --- a/parachains/runtimes/assets/westmint/src/xcm_config.rs +++ b/parachains/runtimes/assets/westmint/src/xcm_config.rs @@ -158,7 +158,10 @@ impl xcm_executor::Config for XcmConfig { type XcmSender = XcmRouter; type AssetTransactor = AssetTransactors; type OriginConverter = XcmOriginToTransactDispatchOrigin; - type IsReserve = NativeAsset; + // Westmint does not recognize a reserve location for any asset. This does not prevent + // Westmint acting _as_ a reserve location for WND and assets created under `pallet-assets`. + // For WND, users must use teleport where allowed (e.g. with the Relay Chain). + type IsReserve = (); type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of WND type LocationInverter = LocationInverter; type Barrier = Barrier; From faf3563c61f84c80ea0b7c32c4f461576eca5f0a Mon Sep 17 00:00:00 2001 From: Chevdor Date: Wed, 1 Jun 2022 14:23:00 +0200 Subject: [PATCH 087/238] Add release branch checks (#1319) --- .github/workflows/release-01_branch-check.yml | 21 +++ scripts/ci/github/check-rel-br | 127 ++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 .github/workflows/release-01_branch-check.yml create mode 100755 scripts/ci/github/check-rel-br diff --git a/.github/workflows/release-01_branch-check.yml b/.github/workflows/release-01_branch-check.yml new file mode 100644 index 0000000000..1e91c196f2 --- /dev/null +++ b/.github/workflows/release-01_branch-check.yml @@ -0,0 +1,21 @@ +name: Release branch check +on: + push: + branches: + - release-**v[0-9]+.[0-9]+.[0-9]+ # client + - release-**v[0-9]+ # runtimes + + workflow_dispatch: + +jobs: + tag_rc: + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run check + shell: bash + run: ./scripts/ci/github/check-rel-br diff --git a/scripts/ci/github/check-rel-br b/scripts/ci/github/check-rel-br new file mode 100755 index 0000000000..12e3a02774 --- /dev/null +++ b/scripts/ci/github/check-rel-br @@ -0,0 +1,127 @@ +#!/usr/bin/env bash + +# This script helps running sanity checks on a release branch +# It is intended to be ran from the repo and from the release branch + +# NOTE: The diener runs do take time and are not really required because +# if we missed the diener runs, the Cargo.lock that we check won't pass +# the tests. See https://github.com/bkchr/diener/issues/17 + +grv=$(git remote --verbose | grep push) +export RUST_LOG=none +REPO=$(echo "$grv" | cut -d ' ' -f1 | cut -d$'\t' -f2 | cut -d '/' -f2 | cut -d '.' -f1 | sort | uniq) +echo "[+] Detected repo: $REPO" + +BRANCH=$(git branch --show-current) +if ! [[ "$BRANCH" =~ ^release.*$ ]]; then + echo "This script is meant to run only on a RELEASE branch." + echo "Try one of the following branch:" + git branch -r --format "%(refname:short)" --sort=-committerdate | grep -Ei '/?release' | head + exit 1 +fi +echo "[+] Working on $BRANCH" + +# Tried to get the version of the release from the branch +# input: release-foo-v0.9.22 or release-bar-v9220 or release-foo-v0.9.220 +# output: 0.9.22 +get_version() { + branch=$1 + [[ $branch =~ -v(.*) ]] + version=${BASH_REMATCH[1]} + if [[ $version =~ \. ]]; then + MAJOR=$(($(echo $version | cut -d '.' -f1))) + MINOR=$(($(echo $version | cut -d '.' -f2))) + PATCH=$(($(echo $version | cut -d '.' -f3))) + echo $MAJOR.$MINOR.${PATCH:0:2} + else + MAJOR=$(echo $(($version / 100000))) + remainer=$(($version - $MAJOR * 100000)) + MINOR=$(echo $(($remainer / 1000))) + remainer=$(($remainer - $MINOR * 1000)) + PATCH=$(echo $(($remainer / 10))) + echo $MAJOR.$MINOR.$PATCH + fi +} + +# return the name of the release branch for a given repo and version +get_release_branch() { + repo=$1 + version=$2 + case $repo in + polkadot) + echo "release-v$version" + ;; + + substrate) + echo "polkadot-v$version" + ;; + + *) + echo "Repo $repo is not supported, exiting" + exit 1 + ;; + esac +} + +# repo = substrate / polkadot +check_release_branch_repo() { + repo=$1 + branch=$2 + + echo "[+] Checking deps for $repo=$branch" + + POSTIVE=$(cat Cargo.lock | grep "$repo?branch=$branch" | sort | uniq | wc -l) + NEGATIVE=$(cat Cargo.lock | grep "$repo?branch=" | grep -v $branch | sort | uniq | wc -l) + + if [[ $POSTIVE -eq 1 && $NEGATIVE -eq 0 ]]; then + echo -e "[+] ✅ Looking good" + cat Cargo.lock | grep "$repo?branch=" | sort | uniq | sed 's/^/\t - /' + return 0 + else + echo -e "[+] ❌ Something seems to be wrong, we want 1 unique match and 0 non match (1, 0) and we got ($(($POSTIVE)), $(($NEGATIVE)))" + cat Cargo.lock | grep "$repo?branch=" | sort | uniq | sed 's/^/\t - /' + return 1 + fi +} + +# Check a release branch +check_release_branches() { + SUBSTRATE_BRANCH=$1 + POLKADOT_BRANCH=$2 + + check_release_branch_repo substrate $SUBSTRATE_BRANCH + ret_a1=$? + + ret_b1=0 + if [ $POLKADOT_BRANCH ]; then + check_release_branch_repo polkadot $POLKADOT_BRANCH + ret_b1=$? + fi + + STATUS=$(($ret_a1 + $ret_b1)) + + return $STATUS +} + +VERSION=$(get_version $BRANCH) +echo "[+] Target version: v$VERSION" + +case $REPO in + polkadot) + substrate=$(get_release_branch substrate $VERSION) + + check_release_branches $substrate + ;; + + cumulus) + polkadot=$(get_release_branch polkadot $VERSION) + substrate=$(get_release_branch substrate $VERSION) + + check_release_branches $substrate $polkadot + ;; + + *) + echo "REPO $REPO is not supported, exiting" + exit 1 + ;; +esac From 474a3c93ee123047b8862117f897ef2c5aea0ee2 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:07:19 +0200 Subject: [PATCH 088/238] Publish polkadot-parachain docker images on PRs (#1311) * [WIP] Dockerize polkadot-parachain * fix build job * disable test job for debug * disable all tests for debug * add publish docker * fix docker publish * uncomment tests; add dag * fix docker naming * add DAG to build job * small fixes * combine test and build * fix typo * divide test and build back * Update .gitlab-ci.yml Co-authored-by: Denis Pisarev * rename docker image * add needs publish-s3 * remove collect artifacts from test Co-authored-by: Denis Pisarev --- .gitlab-ci.yml | 154 ++++++++++++------ ...rachain-debug_unsigned_injected.Dockerfile | 49 ++++++ 2 files changed, 152 insertions(+), 51 deletions(-) create mode 100644 docker/polkadot-parachain-debug_unsigned_injected.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9b5b5df4f0..69ec1387c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,6 +7,7 @@ stages: - test + - build - publish - benchmarks-build - benchmarks-run @@ -43,6 +44,15 @@ variables: - cargo +nightly --version - bash --version +.common-refs: &common-refs + # these jobs run always* + rules: + - 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 + .publish-refs: &publish-refs rules: - if: $CI_PIPELINE_SOURCE == "web" && @@ -80,107 +90,130 @@ variables: tags: - kubernetes-parity-build -.collect-artifacts: &collect-artifacts - artifacts: - name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" - when: on_success - expire_in: 28 days - paths: - - ./artifacts/ - #### stage: test test-linux-stable: stage: test <<: *docker-env - rules: - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME == "tags" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - # It doesn't make sense to build on every commit, so we build on tags - - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - variables: - ARE_WE_RELEASING_YET: maybe! - # web and schedule triggers can be provided with the non-empty variable ARE_WE_RELEASING_YET - # to run building and publishing the binary. - - if: $CI_PIPELINE_SOURCE == "web" - - if: $CI_PIPELINE_SOURCE == "schedule" - <<: *collect-artifacts + <<: *common-refs variables: # Enable debug assertions since we are running optimized builds for testing # but still want to have debug assertions. RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings" script: - time cargo test --all --release --locked -- --include-ignored - # It's almost free to produce a binary here, please refrain from using it in production since - # it goes with the debug assertions. - - if [ "${ARE_WE_RELEASING_YET}" ]; then - echo "___Building a binary___"; - time cargo build --release --locked --bin polkadot-parachain; - echo "___Packing the artifacts___"; - mkdir -p ./artifacts; - mv ${CARGO_TARGET_DIR}/release/polkadot-parachain ./artifacts/.; - echo "___The VERSION is either a tag name or the curent branch if triggered not by a tag___"; - echo ${CI_COMMIT_REF_NAME} | tee ./artifacts/VERSION; - else - exit 0; - fi - - sccache -s check-runtime-benchmarks: stage: test <<: *docker-env + <<: *common-refs script: # Check that the node will compile with `runtime-benchmarks` feature flag. - time cargo check --all --features runtime-benchmarks # Check that parachain-template will compile with `runtime-benchmarks` feature flag. - time cargo check -p parachain-template-node --features runtime-benchmarks - - sccache -s cargo-check-try-runtime: stage: test <<: *docker-env + <<: *common-refs + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: check-runtime-benchmarks + artifacts: false script: # Check that the node will compile with `try-runtime` feature flag. - time cargo check --all --features try-runtime # Check that parachain-template will compile with `try-runtime` feature flag. - time cargo check -p parachain-template-node --features try-runtime - - sccache -s - -cargo-check-benches: - stage: test - <<: *docker-env - script: - - time cargo check --all --benches - - sccache -s check-rustdoc: stage: test <<: *docker-env + <<: *common-refs variables: SKIP_WASM_BUILD: 1 RUSTDOCFLAGS: "-Dwarnings" script: - time cargo +nightly doc --workspace --all-features --verbose --no-deps - - sccache -s + +cargo-check-benches: + stage: test + <<: *docker-env + <<: *common-refs + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: check-rustdoc + artifacts: false + script: + - time cargo check --all --benches + +#### stage: build + +build-linux-stable: + stage: build + <<: *docker-env + <<: *collect-artifacts + variables: + # Enable debug assertions since we are running optimized builds for testing + # but still want to have debug assertions. + RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings" + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: check-rustdoc + artifacts: false + script: + - echo "___Building a binary, please refrain from using it in production since it goes with the debug assertions.___" + - time cargo build --release --locked --bin polkadot-parachain + - echo "___Packing the artifacts___" + - mkdir -p ./artifacts + - mv ./target/release/polkadot-parachain ./artifacts/. + - echo "___The VERSION is either a tag name or the curent branch if triggered not by a tag___" + - echo ${CI_COMMIT_REF_NAME} | tee ./artifacts/VERSION #### stage: publish +build-push-image: + stage: publish + <<: *kubernetes-env + <<: *common-refs + image: quay.io/buildah/stable + needs: + - job: build-linux-stable + artifacts: true + variables: + DOCKERFILE: "docker/polkadot-parachain-debug_unsigned_injected.Dockerfile" + IMAGE_NAME: docker.io/paritypr/polkadot-parachain-debug + VERSION: "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" + script: + - test "$PARITYPR_USER" -a "$PARITYPR_PASS" || + ( echo "no docker credentials provided"; exit 1 ) + - 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" + --file ${DOCKERFILE} . + - echo "$PARITYPR_PASS" | + buildah login --username "$PARITYPR_USER" --password-stdin docker.io + - buildah info + - buildah push --format=v2s2 "$IMAGE_NAME:$VERSION" + after_script: + - buildah logout --all + publish-s3: stage: publish <<: *kubernetes-env image: paritytech/awscli:latest <<: *publish-refs + needs: + - job: build-linux-stable + artifacts: true variables: GIT_STRATEGY: none BUCKET: "releases.parity.io" PREFIX: "cumulus/${ARCH}-${DOCKER_OS}" - before_script: - # Job will fail if no artifacts were provided by test-linux-stable job. It's only possible for - # this test to fail if the pipeline was triggered by web or schedule trigger without supplying - # a nono-empty ARE_WE_RELEASING_YET variable. - - test -e ./artifacts/polkadot-parachain || - ( echo "___No artifacts were provided by the previous job, please check the build there___"; exit 1 ) script: - echo "___Publishing a binary with debug assertions!___" - echo "___VERSION = $(cat ./artifacts/VERSION) ___" @@ -235,3 +268,22 @@ benchmarks: - rm -rf .git/config tags: - weights + + +#### stage: .post + +# This job cancels the whole pipeline if any of provided jobs fail. +# In a DAG, every jobs chain is executed independently of others. The `fail_fast` principle suggests +# to fail the pipeline as soon as possible to shorten the feedback loop. +cancel-pipeline: + stage: .post + needs: + - job: test-linux-stable + artifacts: false + rules: + - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs + when: on_failure + variables: + PROJECT_ID: "${CI_PROJECT_ID}" + PIPELINE_ID: "${CI_PIPELINE_ID}" + trigger: "parity/infrastructure/ci_cd/pipeline-stopper" diff --git a/docker/polkadot-parachain-debug_unsigned_injected.Dockerfile b/docker/polkadot-parachain-debug_unsigned_injected.Dockerfile new file mode 100644 index 0000000000..a2e32049f5 --- /dev/null +++ b/docker/polkadot-parachain-debug_unsigned_injected.Dockerfile @@ -0,0 +1,49 @@ +FROM docker.io/library/ubuntu:20.04 + +# 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="Cumulus, the Polkadot collator." \ + io.parity.image.source="https://github.com/paritytech/cumulus/blob/${VCS_REF}/scripts/docker/polkadot-parachain-debug_unsigned_injected.Dockerfile" \ + io.parity.image.revision="${VCS_REF}" \ + io.parity.image.created="${BUILD_DATE}" \ + io.parity.image.documentation="https://github.com/paritytech/cumulus/" + +# 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-parachain to /data + useradd -m -u 10000 -U -s /bin/sh -d /polkadot-parachain polkadot-parachain && \ + mkdir -p /data /polkadot-parachain/.local/share && \ + chown -R polkadot-parachain:polkadot-parachain /data && \ + ln -s /data /polkadot-parachain/.local/share/polkadot-parachain && \ + mkdir -p /specs + +# add polkadot-parachain binary to the docker image +COPY ./artifacts/polkadot-parachain /usr/local/bin +COPY ./parachains/chain-specs/*.json /specs/ + +USER polkadot-parachain + +# check if executable works in this container +RUN /usr/local/bin/polkadot-parachain --version + +EXPOSE 30333 9933 9944 +VOLUME ["/polkadot-parachain"] + +ENTRYPOINT ["/usr/local/bin/polkadot-parachain"] From 1ee585ce5823efbd0ccaba627ff82ab186580b32 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Wed, 1 Jun 2022 22:49:12 +0200 Subject: [PATCH 089/238] Fix problematic char (#1323) --- scripts/ci/changelog/templates/runtime.md.tera | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/changelog/templates/runtime.md.tera b/scripts/ci/changelog/templates/runtime.md.tera index 782d782bbe..2027ca78c1 100644 --- a/scripts/ci/changelog/templates/runtime.md.tera +++ b/scripts/ci/changelog/templates/runtime.md.tera @@ -22,7 +22,7 @@ 🔥 Core Version: {{ runtime.data.runtimes.compressed.subwasm.core_version }} 🗜 Compressed: {{ compressed }}: {{ comp_ratio | round(method="ceil", precision=2) }}% 🎁 Metadata version: V{{ runtime.data.runtimes.compressed.subwasm.metadata_version }} -#️⃣ Blake2-256 hash: {{ runtime.data.runtimes.compressed.subwasm.blake2_256 }} +🗳️ Blake2-256 hash: {{ runtime.data.runtimes.compressed.subwasm.blake2_256 }} 📦 IPFS: {{ runtime.data.runtimes.compressed.subwasm.ipfs_hash }} ``` {%- endmacro runtime %} From 7f2e6a157b649dd2486aea4953b750acc4a61f60 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Thu, 2 Jun 2022 13:53:38 +0200 Subject: [PATCH 090/238] Run the release branch check on the cumulus code releases as well (#1326) --- .github/workflows/release-01_branch-check.yml | 3 ++- scripts/ci/github/check-rel-br | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-01_branch-check.yml b/.github/workflows/release-01_branch-check.yml index 1e91c196f2..ad35e9623b 100644 --- a/.github/workflows/release-01_branch-check.yml +++ b/.github/workflows/release-01_branch-check.yml @@ -4,6 +4,7 @@ on: branches: - release-**v[0-9]+.[0-9]+.[0-9]+ # client - release-**v[0-9]+ # runtimes + - polkadot-v[0-9]+.[0-9]+.[0-9]+ # cumulus code workflow_dispatch: @@ -15,7 +16,7 @@ jobs: uses: actions/checkout@v3 with: fetch-depth: 0 - + - name: Run check shell: bash run: ./scripts/ci/github/check-rel-br diff --git a/scripts/ci/github/check-rel-br b/scripts/ci/github/check-rel-br index 12e3a02774..5efebeea31 100755 --- a/scripts/ci/github/check-rel-br +++ b/scripts/ci/github/check-rel-br @@ -13,7 +13,7 @@ REPO=$(echo "$grv" | cut -d ' ' -f1 | cut -d$'\t' -f2 | cut -d '/' -f2 | cut -d echo "[+] Detected repo: $REPO" BRANCH=$(git branch --show-current) -if ! [[ "$BRANCH" =~ ^release.*$ ]]; then +if ! [[ "$BRANCH" =~ ^release.*$ || "$BRANCH" =~ ^polkadot.*$ ]]; then echo "This script is meant to run only on a RELEASE branch." echo "Try one of the following branch:" git branch -r --format "%(refname:short)" --sort=-committerdate | grep -Ei '/?release' | head From 3e8a5465cf88450ea5eddd4b34d82fb27fdda4cb Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Thu, 2 Jun 2022 19:20:22 +0200 Subject: [PATCH 091/238] [ci] Add build docker test-parachain for zombienet (#1327) * [ci] Add build docker test-parachain for zombienet * debug ci * disable cancel pipeline * fix wrong rename * enable jobs * uncomment needs * fixes --- .gitlab-ci.yml | 57 +++++++++++++++++++---- docker/test-parachain_injected.Dockerfile | 49 +++++++++++++++++++ 2 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 docker/test-parachain_injected.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 69ec1387c8..d539ada270 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -171,19 +171,32 @@ build-linux-stable: - echo "___The VERSION is either a tag name or the curent branch if triggered not by a tag___" - echo ${CI_COMMIT_REF_NAME} | tee ./artifacts/VERSION +build-test-parachain: + stage: build + <<: *docker-env + <<: *collect-artifacts + variables: + # Enable debug assertions since we are running optimized builds for testing + # but still want to have debug assertions. + RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings" + # this is an artificial job dependency, for pipeline optimization using GitLab's DAGs + needs: + - job: check-rustdoc + artifacts: false + script: + - echo "___Building a binary, please refrain from using it in production since it goes with the debug assertions.___" + - time cargo +nightly build --release --locked --bin test-parachain + - echo "___Packing the artifacts___" + - mkdir -p ./artifacts + - mv ./target/release/test-parachain ./artifacts/. + #### stage: publish -build-push-image: - stage: publish - <<: *kubernetes-env - <<: *common-refs +.build-push-image: &build-push-image image: quay.io/buildah/stable - needs: - - job: build-linux-stable - artifacts: true variables: - DOCKERFILE: "docker/polkadot-parachain-debug_unsigned_injected.Dockerfile" - IMAGE_NAME: docker.io/paritypr/polkadot-parachain-debug + DOCKERFILE: "" # docker/path-to.Dockerfile + IMAGE_NAME: "" # docker.io/paritypr/image_name VERSION: "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" script: - test "$PARITYPR_USER" -a "$PARITYPR_PASS" || @@ -202,6 +215,32 @@ build-push-image: after_script: - buildah logout --all +build-push-image-polkadot-parachain-debug: + stage: publish + <<: *kubernetes-env + <<: *common-refs + <<: *build-push-image + needs: + - job: build-linux-stable + artifacts: true + variables: + DOCKERFILE: "docker/polkadot-parachain-debug_unsigned_injected.Dockerfile" + IMAGE_NAME: "docker.io/paritypr/polkadot-parachain-debug" + VERSION: "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" + +build-push-image-test-parachain: + stage: publish + <<: *kubernetes-env + <<: *common-refs + <<: *build-push-image + needs: + - job: build-test-parachain + artifacts: true + variables: + DOCKERFILE: "docker/test-parachain_injected.Dockerfile" + IMAGE_NAME: "docker.io/paritypr/test-parachain" + VERSION: "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" + publish-s3: stage: publish <<: *kubernetes-env diff --git a/docker/test-parachain_injected.Dockerfile b/docker/test-parachain_injected.Dockerfile new file mode 100644 index 0000000000..6056c50460 --- /dev/null +++ b/docker/test-parachain_injected.Dockerfile @@ -0,0 +1,49 @@ +FROM docker.io/library/ubuntu:20.04 + +# 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="Test parachain for Zombienet" \ + io.parity.image.source="https://github.com/paritytech/cumulus/blob/${VCS_REF}/docker/test-parachain_injected.Dockerfile" \ + io.parity.image.revision="${VCS_REF}" \ + io.parity.image.created="${BUILD_DATE}" \ + io.parity.image.documentation="https://github.com/paritytech/cumulus/" + +# 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/test-parachain to /data + useradd -m -u 10000 -U -s /bin/sh -d /test-parachain test-parachain && \ + mkdir -p /data /test-parachain/.local/share && \ + chown -R test-parachain:test-parachain /data && \ + ln -s /data /test-parachain/.local/share/test-parachain && \ + mkdir -p /specs + +# add test-parachain binary to the docker image +COPY ./artifacts/test-parachain /usr/local/bin +COPY ./parachains/chain-specs/*.json /specs/ + +USER test-parachain + +# check if executable works in this container +RUN /usr/local/bin/test-parachain --version + +EXPOSE 30333 9933 9944 +VOLUME ["/test-parachain"] + +ENTRYPOINT ["/usr/local/bin/test-parachain"] From 88058639432ba7fd5c6d1d60f29583791533080c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Jun 2022 10:15:21 +0000 Subject: [PATCH 092/238] Bump syn from 1.0.95 to 1.0.96 (#1329) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.95 to 1.0.96. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.95...1.0.96) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 956474ce51..9a55052437 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11844,9 +11844,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.95" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" +checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 7ac06a1b6e..d27ca0d9b9 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -9,7 +9,7 @@ description = "Proc macros provided by the parachain-system pallet" proc-macro = true [dependencies] -syn = "1.0.94" +syn = "1.0.96" proc-macro2 = "1.0.39" quote = "1.0.18" proc-macro-crate = "1.1.3" From dba5a11f010838ab9b6debdd68b8543c14e79382 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Jun 2022 13:00:38 +0200 Subject: [PATCH 093/238] Bump async-trait from 0.1.53 to 0.1.54 (#1328) Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.53 to 0.1.54. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.53...0.1.54) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/consensus/aura/Cargo.toml | 2 +- client/consensus/common/Cargo.toml | 2 +- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/relay-chain-inprocess-interface/Cargo.toml | 2 +- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- primitives/parachain-inherent/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9a55052437..c5c3389f1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -322,9 +322,9 @@ checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" [[package]] name = "async-trait" -version = "0.1.53" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" +checksum = "159c7edec63db93c5eb1e5e6928f6dec9aea1174cf983a8e5fc4caa179792814" dependencies = [ "proc-macro2", "quote", diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 0f55f9b299..cea8195a8d 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.53" +async-trait = "0.1.54" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } futures = { version = "0.3.8", features = ["compat"] } tracing = "0.1.34" diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index 91ab208079..78956709c6 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" futures = { version = "0.3.8", features = ["compat"] } codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } tracing = "0.1.34" -async-trait = "0.1.53" +async-trait = "0.1.54" dyn-clone = "1.0.5" # Substrate diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index 85d9fd807a..9de3c805b9 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.53" +async-trait = "0.1.54" futures = { version = "0.3.8", features = ["compat"] } parking_lot = "0.12.1" tracing = "0.1.34" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 38679292aa..5295db2364 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -6,7 +6,7 @@ description = "Cumulus-specific networking protocol" edition = "2021" [dependencies] -async-trait = "0.1.53" +async-trait = "0.1.54" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } derive_more = "0.99.2" futures = { version = "0.3.1", features = ["compat"] } diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index b1c5e4f0ef..5b61adc26c 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -5,7 +5,7 @@ version = "0.1.0" edition = "2021" [dependencies] -async-trait = "0.1.53" +async-trait = "0.1.54" futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.1" diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index deffe763b7..99e4e4b0d0 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -21,7 +21,7 @@ sc-service = { git = "https://github.com/paritytech/substrate", branch = "master futures = "0.3.21" parking_lot = "0.12.1" derive_more = "0.99.2" -async-trait = "0.1.53" +async-trait = "0.1.54" thiserror = "1.0.31" jsonrpsee-core = "0.13.1" parity-scale-codec = "3.1.2" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 18b47377a1..bf941eab2d 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -25,6 +25,6 @@ parity-scale-codec = "3.1.2" parking_lot = "0.12.1" jsonrpsee = { version = "0.13.1", features = ["ws-client"] } tracing = "0.1.34" -async-trait = "0.1.53" +async-trait = "0.1.54" url = "2.2.2" backoff = { version = "0.4.0", features = ["tokio"] } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 7743694d84..4b28815d5b 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -11,7 +11,7 @@ name = "polkadot-parachain" path = "src/main.rs" [dependencies] -async-trait = "0.1.53" +async-trait = "0.1.54" clap = { version = "3.1", features = ["derive"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = { version = "0.3.1", features = ["compat"] } diff --git a/primitives/parachain-inherent/Cargo.toml b/primitives/parachain-inherent/Cargo.toml index 486b763e9a..6a5663de2f 100644 --- a/primitives/parachain-inherent/Cargo.toml +++ b/primitives/parachain-inherent/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = { version = "0.1.53", optional = true } +async-trait = { version = "0.1.54", optional = true } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } tracing = { version = "0.1.34", optional = true } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index fd596a8dc8..e8cdc95cb4 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -9,7 +9,7 @@ name = "test-parachain" path = "src/main.rs" [dependencies] -async-trait = "0.1.53" +async-trait = "0.1.54" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.13.1", features = ["server"] } From 8befd605b6a29210cb47c74ed484e90f90ebaaac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Sun, 5 Jun 2022 16:21:03 +0200 Subject: [PATCH 094/238] Ensure relay chain block number strictly increases (#1280) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Ensure relay chain block number strictly increases This is a safeguard for when async backing is enabled on the relay chain and multiple parachain blocks per relay chain block are legal. We will need to later change this to support then multiple parachain blocks per relay chain block. * Make the check configurable * Fix compilation * Update pallets/parachain-system/src/lib.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> * Update pallets/parachain-system/src/lib.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> * Fix test Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> --- pallets/parachain-system/src/lib.rs | 62 ++++++++++++++++++- pallets/parachain-system/src/tests.rs | 20 ++++-- .../src/validate_block/implementation.rs | 4 +- pallets/xcmp-queue/src/mock.rs | 2 + parachain-template/runtime/src/lib.rs | 4 +- .../runtimes/assets/statemine/src/lib.rs | 2 + .../runtimes/assets/statemint/src/lib.rs | 2 + .../runtimes/assets/westmint/src/lib.rs | 4 +- .../contracts/contracts-rococo/src/lib.rs | 2 + .../runtimes/starters/seedling/src/lib.rs | 2 + parachains/runtimes/starters/shell/src/lib.rs | 2 + .../testing/rococo-parachain/src/lib.rs | 2 + test/runtime/src/lib.rs | 1 + 13 files changed, 99 insertions(+), 10 deletions(-) diff --git a/pallets/parachain-system/src/lib.rs b/pallets/parachain-system/src/lib.rs index abb78adbf7..b42453401a 100644 --- a/pallets/parachain-system/src/lib.rs +++ b/pallets/parachain-system/src/lib.rs @@ -88,6 +88,51 @@ pub use relay_state_snapshot::{MessagingStateSnapshot, RelayChainStateProof}; pub use pallet::*; +/// Something that can check the associated relay block number. +/// +/// Each Parachain block is built in the context of a relay chain block, this trait allows us +/// to validate the given relay chain block number. With async backing it is legal to build +/// multiple Parachain blocks per relay chain parent. With this trait it is possible for the +/// Parachain to ensure that still only one Parachain block is build per relay chain parent. +/// +/// By default [`RelayNumberStrictlyIncreases`] and [`AnyRelayNumber`] are provided. +pub trait CheckAssociatedRelayNumber { + /// Check the current relay number versus the previous relay number. + /// + /// The implementation should panic when there is something wrong. + fn check_associated_relay_number( + current: RelayChainBlockNumber, + previous: RelayChainBlockNumber, + ); +} + +/// Provides an implementation of [`CheckAssociatedRelayNumber`]. +/// +/// It will ensure that the associated relay block number strictly increases between Parachain +/// blocks. This should be used by production Parachains when in doubt. +pub struct RelayNumberStrictlyIncreases; + +impl CheckAssociatedRelayNumber for RelayNumberStrictlyIncreases { + fn check_associated_relay_number( + current: RelayChainBlockNumber, + previous: RelayChainBlockNumber, + ) { + if current <= previous { + panic!("Relay chain block number needs to strictly increase between Parachain blocks!") + } + } +} + +/// Provides an implementation of [`CheckAssociatedRelayNumber`]. +/// +/// This will accept any relay chain block number combination. This is mainly useful for +/// test parachains. +pub struct AnyRelayNumber; + +impl CheckAssociatedRelayNumber for AnyRelayNumber { + fn check_associated_relay_number(_: RelayChainBlockNumber, _: RelayChainBlockNumber) {} +} + #[frame_support::pallet] pub mod pallet { use super::*; @@ -128,6 +173,9 @@ pub mod pallet { /// The weight we reserve at the beginning of the block for processing XCMP messages. type ReservedXcmpWeight: Get; + + /// Something that can check the associated relay parent block number. + type CheckAssociatedRelayNumber: CheckAssociatedRelayNumber; } #[pallet::hooks] @@ -232,7 +280,7 @@ pub mod pallet { } // Remove the validation from the old block. - >::kill(); + ValidationData::::kill(); ProcessedDownwardMessages::::kill(); HrmpWatermark::::kill(); UpwardMessages::::kill(); @@ -307,6 +355,13 @@ pub mod pallet { Self::validate_validation_data(&vfp); + // Check that the associated relay chain block number is as expected. + T::CheckAssociatedRelayNumber::check_associated_relay_number( + vfp.relay_parent_number, + LastRelayChainBlockNumber::::get(), + ); + LastRelayChainBlockNumber::::put(vfp.relay_parent_number); + let relay_state_proof = RelayChainStateProof::new( T::SelfParaId::get(), vfp.relay_parent_storage_root, @@ -474,6 +529,11 @@ pub mod pallet { #[pallet::storage] pub(super) type DidSetValidationCode = StorageValue<_, bool, ValueQuery>; + /// The relay chain block number associated with the last parachain block. + #[pallet::storage] + pub(super) type LastRelayChainBlockNumber = + StorageValue<_, RelayChainBlockNumber, ValueQuery>; + /// An option which indicates if the relay-chain restricts signalling a validation code upgrade. /// In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced /// candidate will be invalid. diff --git a/pallets/parachain-system/src/tests.rs b/pallets/parachain-system/src/tests.rs index 0f7ac4b198..65896fa9b2 100755 --- a/pallets/parachain-system/src/tests.rs +++ b/pallets/parachain-system/src/tests.rs @@ -107,6 +107,7 @@ impl Config for Test { type ReservedDmpWeight = ReservedDmpWeight; type XcmpMessageHandler = SaveIntoThreadLocal; type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } pub struct FromThreadLocal; @@ -226,8 +227,7 @@ struct BlockTests { ran: bool, relay_sproof_builder_hook: Option>, - persisted_validation_data_hook: - Option>, + persisted_validation_data_hook: Option>, inherent_data_hook: Option>, } @@ -274,10 +274,9 @@ impl BlockTests { self } - #[allow(dead_code)] // might come in handy in future. If now is future and it still hasn't - feel free. fn with_validation_data(mut self, f: F) -> Self where - F: 'static + Fn(&BlockTests, RelayChainBlockNumber, &mut PersistedValidationData), + F: 'static + Fn(&BlockTests, &mut PersistedValidationData), { self.persisted_validation_data_hook = Some(Box::new(f)); self @@ -319,7 +318,7 @@ impl BlockTests { ..Default::default() }; if let Some(ref hook) = self.persisted_validation_data_hook { - hook(self, *n as RelayChainBlockNumber, &mut vfp); + hook(self, &mut vfp); } >::put(&vfp); @@ -964,3 +963,14 @@ fn receive_hrmp_after_pause() { }); }); } + +#[test] +#[should_panic = "Relay chain block number needs to strictly increase between Parachain blocks!"] +fn test() { + BlockTests::new() + .with_validation_data(|_, data| { + data.relay_parent_number = 1; + }) + .add(1, || {}) + .add(2, || {}); +} diff --git a/pallets/parachain-system/src/validate_block/implementation.rs b/pallets/parachain-system/src/validate_block/implementation.rs index 7ef3d81a54..ae361d8481 100644 --- a/pallets/parachain-system/src/validate_block/implementation.rs +++ b/pallets/parachain-system/src/validate_block/implementation.rs @@ -67,8 +67,8 @@ where assert!(parent_head.hash() == *block.header().parent_hash(), "Invalid parent hash",); // Create the db - let (db, root) = match storage_proof.to_memory_db(Some(parent_head.state_root())) { - Ok((db, root)) => (db, root), + let db = match storage_proof.to_memory_db(Some(parent_head.state_root())) { + Ok((db, _)) => db, Err(_) => panic!("Compact proof decoding failure."), }; diff --git a/pallets/xcmp-queue/src/mock.rs b/pallets/xcmp-queue/src/mock.rs index 1a3b5616db..60aff179b8 100644 --- a/pallets/xcmp-queue/src/mock.rs +++ b/pallets/xcmp-queue/src/mock.rs @@ -16,6 +16,7 @@ use super::*; use crate as xcmp_queue; use core::marker::PhantomData; +use cumulus_pallet_parachain_system::AnyRelayNumber; use cumulus_primitives_core::{IsSystem, ParaId}; use frame_support::{parameter_types, traits::OriginTrait}; use frame_system::EnsureRoot; @@ -109,6 +110,7 @@ impl cumulus_pallet_parachain_system::Config for Test { type ReservedDmpWeight = (); type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = (); + type CheckAssociatedRelayNumber = AnyRelayNumber; } parameter_types! { diff --git a/parachain-template/runtime/src/lib.rs b/parachain-template/runtime/src/lib.rs index 887de0b010..7429b832c9 100644 --- a/parachain-template/runtime/src/lib.rs +++ b/parachain-template/runtime/src/lib.rs @@ -9,6 +9,7 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); mod weights; pub mod xcm_config; +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use smallvec::smallvec; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; @@ -369,11 +370,12 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type Event = Event; type OnSystemEvent = (); type SelfParaId = parachain_info::Pallet; + type OutboundXcmpMessageSource = XcmpQueue; type DmpMessageHandler = DmpQueue; type ReservedDmpWeight = ReservedDmpWeight; - type OutboundXcmpMessageSource = XcmpQueue; type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index e9a279a960..b9e739934c 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -28,6 +28,7 @@ pub mod constants; mod weights; pub mod xcm_config; +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ @@ -416,6 +417,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type OutboundXcmpMessageSource = XcmpQueue; type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 2f229aa560..cebdce8701 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -57,6 +57,7 @@ pub mod constants; mod weights; pub mod xcm_config; +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ @@ -446,6 +447,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type OutboundXcmpMessageSource = XcmpQueue; type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index 14f5bead6c..44293376f0 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -28,6 +28,7 @@ pub mod constants; mod weights; pub mod xcm_config; +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ @@ -406,11 +407,12 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type Event = Event; type OnSystemEvent = (); type SelfParaId = parachain_info::Pallet; + type OutboundXcmpMessageSource = XcmpQueue; type DmpMessageHandler = DmpQueue; type ReservedDmpWeight = ReservedDmpWeight; - type OutboundXcmpMessageSource = XcmpQueue; type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index eb0813a75e..b6d28cf81b 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -30,6 +30,7 @@ mod contracts; mod weights; mod xcm_config; +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ @@ -252,6 +253,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type OutboundXcmpMessageSource = XcmpQueue; type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = ConstU64<{ MAXIMUM_BLOCK_WEIGHT / 4 }>; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl pallet_randomness_collective_flip::Config for Runtime {} diff --git a/parachains/runtimes/starters/seedling/src/lib.rs b/parachains/runtimes/starters/seedling/src/lib.rs index 58071e1acb..146a769fd5 100644 --- a/parachains/runtimes/starters/seedling/src/lib.rs +++ b/parachains/runtimes/starters/seedling/src/lib.rs @@ -27,6 +27,7 @@ #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; use sp_core::OpaqueMetadata; use sp_runtime::{ @@ -166,6 +167,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type ReservedDmpWeight = (); type XcmpMessageHandler = (); type ReservedXcmpWeight = (); + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/parachains/runtimes/starters/shell/src/lib.rs b/parachains/runtimes/starters/shell/src/lib.rs index 787d72816a..d08cebe47e 100644 --- a/parachains/runtimes/starters/shell/src/lib.rs +++ b/parachains/runtimes/starters/shell/src/lib.rs @@ -32,6 +32,7 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); pub mod xcm_config; use codec::{Decode, Encode}; +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use frame_support::unsigned::TransactionValidityError; use scale_info::TypeInfo; use sp_api::impl_runtime_apis; @@ -170,6 +171,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type ReservedDmpWeight = ReservedDmpWeight; type XcmpMessageHandler = (); type ReservedXcmpWeight = (); + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 837632b67f..6fd21f98ce 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -22,6 +22,7 @@ #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; use sp_core::OpaqueMetadata; use sp_runtime::{ @@ -265,6 +266,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type ReservedDmpWeight = ReservedDmpWeight; type XcmpMessageHandler = XcmpQueue; type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; } impl parachain_info::Config for Runtime {} diff --git a/test/runtime/src/lib.rs b/test/runtime/src/lib.rs index bfa8db3289..a28855bace 100644 --- a/test/runtime/src/lib.rs +++ b/test/runtime/src/lib.rs @@ -265,6 +265,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type ReservedDmpWeight = (); type XcmpMessageHandler = (); type ReservedXcmpWeight = (); + type CheckAssociatedRelayNumber = cumulus_pallet_parachain_system::AnyRelayNumber; } parameter_types! { From b68f8acda08361047cd8e6e5a2fe138035179892 Mon Sep 17 00:00:00 2001 From: yjh Date: Tue, 7 Jun 2022 20:25:43 +0800 Subject: [PATCH 095/238] chore: rm unused sc-service (#1331) * chore: rm unused sc-service * fmt --- Cargo.lock | 4 ---- client/network/Cargo.toml | 1 - client/pov-recovery/Cargo.toml | 1 - client/relay-chain-inprocess-interface/Cargo.toml | 1 - client/relay-chain-inprocess-interface/src/lib.rs | 2 +- client/relay-chain-interface/Cargo.toml | 1 - 6 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c5c3389f1f..527c40e16f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1707,7 +1707,6 @@ dependencies = [ "portpicker", "sc-cli", "sc-client-api", - "sc-service", "sp-api", "sp-blockchain", "sp-consensus", @@ -1740,7 +1739,6 @@ dependencies = [ "sc-cli", "sc-client-api", "sc-consensus", - "sc-service", "sp-api", "sp-consensus", "sp-maybe-compressed-blob", @@ -2036,7 +2034,6 @@ dependencies = [ "sc-client-api", "sc-consensus-babe", "sc-network", - "sc-service", "sc-sysinfo", "sc-telemetry", "sc-tracing", @@ -2064,7 +2061,6 @@ dependencies = [ "polkadot-overseer", "polkadot-service", "sc-client-api", - "sc-service", "sp-api", "sp-blockchain", "sp-core", diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 5295db2364..5abac614b1 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -39,7 +39,6 @@ url = "2.2.2" # Substrate sc-cli = { 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" } sp-consensus = { 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" } diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index 9360fba4b6..4f0f06a970 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -39,5 +39,4 @@ cumulus-test-service = { path = "../../test/service" } # Substrate sc-cli = { 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" } substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 5b61adc26c..15c2245301 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -16,7 +16,6 @@ sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { 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-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index 3e7af9ed60..e499c5fd18 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -404,9 +404,9 @@ mod tests { DefaultTestClientBuilderExt, ExecutionStrategy, InitPolkadotBlockBuilder, TestClientBuilder, TestClientBuilderExt, }; - use sc_service::Arc; use sp_consensus::{BlockOrigin, SyncOracle}; use sp_runtime::traits::Block as BlockT; + use std::sync::Arc; use futures::{executor::block_on, poll, task::Poll}; diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 99e4e4b0d0..ef3cce4cc1 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -16,7 +16,6 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-state-machine = { 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" } futures = "0.3.21" parking_lot = "0.12.1" From 03857393e6d6b1b40eda08595963da3cd95432f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jun 2022 14:47:25 +0200 Subject: [PATCH 096/238] Bump crossbeam-utils from 0.8.5 to 0.8.8 (#1334) Bumps [crossbeam-utils](https://github.com/crossbeam-rs/crossbeam) from 0.8.5 to 0.8.8. - [Release notes](https://github.com/crossbeam-rs/crossbeam/releases) - [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md) - [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-utils-0.8.5...crossbeam-utils-0.8.8) --- updated-dependencies: - dependency-name: crossbeam-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 527c40e16f..3fd6207140 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1462,9 +1462,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -12378,7 +12378,7 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "digest 0.10.3", "rand 0.8.5", "static_assertions", From 71f1e1a71818b6969bd2dd40c6bde9ba597b7806 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jun 2022 14:50:30 +0200 Subject: [PATCH 097/238] Bump tokio from 1.18.2 to 1.19.0 (#1330) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.18.2 to 1.19.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.18.2...tokio-1.19.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3fd6207140..f078ade752 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12075,9 +12075,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.18.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395" +checksum = "0f392c8f16bda3456c0b00c6de39cb100449b98de55ac41c6cdd2bfcf53a1245" dependencies = [ "bytes", "libc", diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 5abac614b1..19f7519b34 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -33,7 +33,7 @@ cumulus-relay-chain-interface = { path = "../relay-chain-interface" } [dev-dependencies] portpicker = "0.1.1" -tokio = { version = "1.18.2", features = ["macros"] } +tokio = { version = "1.19.0", features = ["macros"] } url = "2.2.2" # Substrate diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index 4f0f06a970..39f2f9080c 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -31,7 +31,7 @@ cumulus-primitives-core = { path = "../../primitives/core" } cumulus-relay-chain-interface = {path = "../relay-chain-interface"} [dev-dependencies] -tokio = { version = "1.18.2", features = ["macros"] } +tokio = { version = "1.19.0", features = ["macros"] } # Cumulus cumulus-test-service = { path = "../../test/service" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index e8cdc95cb4..9703c34826 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -16,7 +16,7 @@ jsonrpsee = { version = "0.13.1", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } -tokio = { version = "1.18.2", features = ["macros"] } +tokio = { version = "1.19.0", features = ["macros"] } url = "2.2.2" # Substrate From c9639a61a8ec148357e591c4ea48ab5f85a91442 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jun 2022 10:52:34 +0200 Subject: [PATCH 098/238] Bump async-trait from 0.1.54 to 0.1.56 (#1338) Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.54 to 0.1.56. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.54...0.1.56) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 6 +++--- client/consensus/aura/Cargo.toml | 2 +- client/consensus/common/Cargo.toml | 2 +- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/relay-chain-inprocess-interface/Cargo.toml | 2 +- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- primitives/parachain-inherent/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f078ade752..556cf0a25c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -322,9 +322,9 @@ checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" [[package]] name = "async-trait" -version = "0.1.54" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "159c7edec63db93c5eb1e5e6928f6dec9aea1174cf983a8e5fc4caa179792814" +checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" dependencies = [ "proc-macro2", "quote", @@ -12378,7 +12378,7 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "digest 0.10.3", "rand 0.8.5", "static_assertions", diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index cea8195a8d..0af751fd54 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.54" +async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } futures = { version = "0.3.8", features = ["compat"] } tracing = "0.1.34" diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index 78956709c6..3efaa4a524 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" futures = { version = "0.3.8", features = ["compat"] } codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } tracing = "0.1.34" -async-trait = "0.1.54" +async-trait = "0.1.56" dyn-clone = "1.0.5" # Substrate diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index 9de3c805b9..fae8a2a31c 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.54" +async-trait = "0.1.56" futures = { version = "0.3.8", features = ["compat"] } parking_lot = "0.12.1" tracing = "0.1.34" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 19f7519b34..1a66e9b45d 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -6,7 +6,7 @@ description = "Cumulus-specific networking protocol" edition = "2021" [dependencies] -async-trait = "0.1.54" +async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } derive_more = "0.99.2" futures = { version = "0.3.1", features = ["compat"] } diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 15c2245301..e0479c3fc0 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -5,7 +5,7 @@ version = "0.1.0" edition = "2021" [dependencies] -async-trait = "0.1.54" +async-trait = "0.1.56" futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.1" diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index ef3cce4cc1..c0d4b352fc 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -20,7 +20,7 @@ sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "mas futures = "0.3.21" parking_lot = "0.12.1" derive_more = "0.99.2" -async-trait = "0.1.54" +async-trait = "0.1.56" thiserror = "1.0.31" jsonrpsee-core = "0.13.1" parity-scale-codec = "3.1.2" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index bf941eab2d..7c9c85bf2b 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -25,6 +25,6 @@ parity-scale-codec = "3.1.2" parking_lot = "0.12.1" jsonrpsee = { version = "0.13.1", features = ["ws-client"] } tracing = "0.1.34" -async-trait = "0.1.54" +async-trait = "0.1.56" url = "2.2.2" backoff = { version = "0.4.0", features = ["tokio"] } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 4b28815d5b..f000b70978 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -11,7 +11,7 @@ name = "polkadot-parachain" path = "src/main.rs" [dependencies] -async-trait = "0.1.54" +async-trait = "0.1.56" clap = { version = "3.1", features = ["derive"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = { version = "0.3.1", features = ["compat"] } diff --git a/primitives/parachain-inherent/Cargo.toml b/primitives/parachain-inherent/Cargo.toml index 6a5663de2f..e033ff664f 100644 --- a/primitives/parachain-inherent/Cargo.toml +++ b/primitives/parachain-inherent/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = { version = "0.1.54", optional = true } +async-trait = { version = "0.1.56", optional = true } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } tracing = { version = "0.1.34", optional = true } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 9703c34826..552329b241 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -9,7 +9,7 @@ name = "test-parachain" path = "src/main.rs" [dependencies] -async-trait = "0.1.54" +async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.13.1", features = ["server"] } From 3f6e45694527d556d2526e0b126d32244ef37e92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jun 2022 11:58:03 +0000 Subject: [PATCH 099/238] Bump tokio from 1.19.0 to 1.19.2 (#1339) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.19.0 to 1.19.2. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.19.0...tokio-1.19.2) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 556cf0a25c..876c2f4ae2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12075,9 +12075,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.19.0" +version = "1.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f392c8f16bda3456c0b00c6de39cb100449b98de55ac41c6cdd2bfcf53a1245" +checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439" dependencies = [ "bytes", "libc", diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 1a66e9b45d..9152e553d3 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -33,7 +33,7 @@ cumulus-relay-chain-interface = { path = "../relay-chain-interface" } [dev-dependencies] portpicker = "0.1.1" -tokio = { version = "1.19.0", features = ["macros"] } +tokio = { version = "1.19.2", features = ["macros"] } url = "2.2.2" # Substrate diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index 39f2f9080c..b2b55124b8 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -31,7 +31,7 @@ cumulus-primitives-core = { path = "../../primitives/core" } cumulus-relay-chain-interface = {path = "../relay-chain-interface"} [dev-dependencies] -tokio = { version = "1.19.0", features = ["macros"] } +tokio = { version = "1.19.2", features = ["macros"] } # Cumulus cumulus-test-service = { path = "../../test/service" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 552329b241..e2c59224d2 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -16,7 +16,7 @@ jsonrpsee = { version = "0.13.1", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } -tokio = { version = "1.19.0", features = ["macros"] } +tokio = { version = "1.19.2", features = ["macros"] } url = "2.2.2" # Substrate From 3b6fb167a8fb0de46a9516101831f0d456809cba Mon Sep 17 00:00:00 2001 From: Chevdor Date: Thu, 9 Jun 2022 14:17:32 +0200 Subject: [PATCH 100/238] Add client checklist + doc (#1297) * Add client checklist + doc * Add versionning doc * Update release.md * Update release.md * Update .github/ISSUE_TEMPLATE/release-client.md Co-authored-by: Denis Pisarev * Fix grumbles Co-authored-by: Denis Pisarev --- .github/ISSUE_TEMPLATE/release-client.md | 20 +++ .github/ISSUE_TEMPLATE/release-runtime.md | 46 ++++++ .github/ISSUE_TEMPLATE/release.md | 156 ------------------ .../workflows/release-01_rc-automation.yml | 31 +++- docs/release.md | 109 ++++++++++++ 5 files changed, 199 insertions(+), 163 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/release-client.md create mode 100644 .github/ISSUE_TEMPLATE/release-runtime.md delete mode 100644 .github/ISSUE_TEMPLATE/release.md create mode 100644 docs/release.md diff --git a/.github/ISSUE_TEMPLATE/release-client.md b/.github/ISSUE_TEMPLATE/release-client.md new file mode 100644 index 0000000000..016f0a4c0b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/release-client.md @@ -0,0 +1,20 @@ +--- +name: Release Checklist for Client - issue template +about: Release Checklist for Client +title: Release Checklist - Client {{ env.VERSION }} +--- + +# Release Checklist - Client + +### Client Release + +- [ ] build a new `polkadot-parachain` binary and publish it to S3 +- [ ] new `polkadot-parachain` version has [run on the network](../../docs/release.md#burnin) + without issue for at least 12h +- [ ] a draft release has been created in the [Github Releases page](https://github.com/paritytech/cumulus/releases) with the relevant release-notes +- [ ] the [build artifacts](../../docs/release.md#build-artifacts) have been added to the + draft-release. + +--- + +Read more about the [release documentation](../../docs/release.md). diff --git a/.github/ISSUE_TEMPLATE/release-runtime.md b/.github/ISSUE_TEMPLATE/release-runtime.md new file mode 100644 index 0000000000..25157a8280 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/release-runtime.md @@ -0,0 +1,46 @@ +--- +name: Release issue template +about: Tracking issue for new releases +title: Cumulus {{ env.VERSION }} Release checklist +--- + +# Release Checklist - Runtimes + +## Runtimes Release + +### Codebase +These checks should be performed on the codebase. + +- [ ] the [`spec_version`](../../docs/release.md#spec-version) has been incremented since the + last release for any native runtimes from any existing use on public (non-private/test) networks +- [ ] previously [completed migrations](../../docs/release.md#old-migrations-removed) are + removed for any public (non-private/test) networks +- [ ] No migrations added in the last release that would need to be removed +- [ ] pallet and [extrinsic ordering](../../docs/release.md#extrinsic-ordering) as well as `SignedExtension`s have stayed + the same. Bump `transaction_version` otherwise +- [ ] the [benchmarks](../../docs/release.md#benchmarks) ran +- [ ] the weights have been updated for any modified runtime logic +- [ ] the various pieces of XCM config are sane + +### On the release branch + +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](../../docs/release.md#new-migrations) complete successfully, and the + runtime state is correctly updated for any public (non-private/test) + networks +- [ ] Run integration tests +- [ ] Push runtime upgrade to Westmint and verify network stability + + +### Github + +- [ ] Check that a draft release has been created at the [Github Releases page](https://github.com/paritytech/cumulus/releases) with relevant [release + notes](../../docs/release.md#release-notes) +- [ ] Check that [build artifacts](../../docs/release.md#build-artifacts) have been added to the + draft-release. + +--- + +Read more about the [release documentation](../../docs/release.md). diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md deleted file mode 100644 index 702fec940c..0000000000 --- a/.github/ISSUE_TEMPLATE/release.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -name: Release issue template -about: Tracking issue for new releases -title: Cumulus {{ env.VERSION }} Release checklist ---- -# Release Checklist - -### Runtime Releases - -These checks should be performed on the codebase. - -- [ ] 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. - - No migrations added in the last release that would need to be removed. -- [ ] Verify pallet and [extrinsic ordering](#extrinsic-ordering) as well as `SignedExtension`s have stayed - the same. Bump `transaction_version` if not. -- [ ] Verify new extrinsics have been correctly whitelisted/blacklisted for - [proxy filters](#proxy-filtering). - - No new extrinsics. -- [ ] Verify [benchmarks](#benchmarks) have been updated for any modified - runtime logic. - - [ ] Verify the weights are up-to-date. -- [ ] Verify that the various pieces of XCM config are sane. - -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. -- [ ] Run integration tests. - - [ ] Teleport Relay -> Statemin* and back. - - [ ] Create asset (if applicable), mint and transfer -- [ ] Push runtime upgrade to Westmint and verify network stability. - - -### All Releases - -- [ ] Check that the new polkadot-parachain versions have [run on the network](#burn-in) - without issue. -- [ ] Check that a draft release has been created at - https://github.com/paritytech/cumulus/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 Westmint and Statemine collators for 12h 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://github.com/paritytech/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 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). - -### Runtime version bump between RCs - -The clients need to be aware of runtime changes. However, we do not want to bump the -`spec_version` for every single release candidate. Instead, we can bump the `impl` field of the version -to signal the change to the client. - -### Old Migrations Removed - -Previous `on_runtime_upgrade` functions from old upgrades should be removed. - -### 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 & Storage - -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. It also checks if there have been any changes in `storage`. In case of a breaking change, increase `transaction_version`. - -To verify the order has not changed, manually start the following [Github Action](https://github.com/paritytech/cumulus/actions/workflows/extrinsic-ordering-check-from-bin.yml). It takes around a minute to run and will produce the report as artifact you need to manually check. - -To run it, in the _Run Workflow_ dropdown: -1. **Use workflow from**: to ignore, leave `master` as default -2. **The WebSocket url of the reference node**: - - Statemine: `wss://kusama-statemine-rpc.paritytech.net` - - Westmint: `wss://westmint-rpc.polkadot.io` -3. **A url to a Linux binary for the node containing the runtime to test**: Paste the URL of the latest release-candidate binary from the draft-release on Github. The binary has to previously be uploaded to S3 (Github url link to the binary is constantly changing) - - https://releases.parity.io/cumulus/statemine-v6.0.0-rc1/polkadot-collator -4. **The name of the chain under test. Usually, you would pass a local chain**: - - Statemine: `statemine-local` - - Westmint: `westmint-local` -5. Click **Run workflow** - -When the workflow is done, click on it and download the zip artifact, inside you'll find an `output.txt` file. The 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 the indexes did not change. - -**Note**: Extrinsic function signatures changes (adding/removing & ordering arguments) are not caught by the job, so those changes should be reviewed "manually" - -### 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 - -Until #631 is done, running the benchmarks is a manual process: -1. Connect to the bechmarking machine -2. Make sure no one else is using the machine with `htop check` -3. Pull in the branch of Cumulus that has the version of Statemine you want to release -4. Recompile `cargo build --profile production --locked --features runtime-benchmarks` -5. From the root directory run `nohup ./scripts/benchmarks.sh &` (it will take quite a few hours) -6. Checkout in your local machine to the branch of cumulus that has the version of Statemine you want to release -7. `scp` from the host to your local machine the weights for Statemine, Westmint and Statemint you'll find in: - - `/parachains/runtimes/assets/statemine/src/weights` - - `/parachains/runtimes/assets/statemint/src/weights` - - `/parachains/runtimes/assets/westmint/src/weights` -8. Commit the changes in your local and create a PR diff --git a/.github/workflows/release-01_rc-automation.yml b/.github/workflows/release-01_rc-automation.yml index 439e4bd3fb..3d6b607e1e 100644 --- a/.github/workflows/release-01_rc-automation.yml +++ b/.github/workflows/release-01_rc-automation.yml @@ -1,4 +1,4 @@ -name: Release-candidate automation +name: RC automation on: push: branches: @@ -34,6 +34,7 @@ jobs: 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: @@ -42,22 +43,38 @@ jobs: # 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 + + - id: create-issue-checklist-client + uses: JasonEtco/create-an-issue@v9e6213aec58987fa7d2f4deb8b256b99e63107a2 # v2.6.0 # 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 + assignees: release-engineering + filename: .github/ISSUE_TEMPLATE/release-client.md + + - id: create-issue-checklist-runtime + uses: JasonEtco/create-an-issue@v9e6213aec58987fa7d2f4deb8b256b99e63107a2 # v2.6.0 + # 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: + assignees: release-engineering + filename: .github/ISSUE_TEMPLATE/release-runtime.md + - name: Send Matrix message uses: s3krit/matrix-message-action@v0.0.3 - if: steps.create-issue.outputs.url != '' + if: steps.create-issue-checklist-client.outputs.url != '' && steps.create-issue-checklist-runtime.outputs.url != '' with: room_id: ${{ secrets.INTERNAL_CUMULUS_MATRIX_ROOM_ID }} access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} server: "matrix.parity.io" message: | - Release process for Cumulus ${{ steps.compute_tag.outputs.version }} has been started. - Tracking issue: ${{ steps.create-issue.outputs.url }}" + The Release Process for Cumulus ${{ steps.compute_tag.outputs.version }} has been started. + Tracking issues: + - client: ${{ steps.create-issue-checklist-client.outputs.url }}" + - runtime: ${{ steps.create-issue-checklist-runtime.outputs.url }}" diff --git a/docs/release.md b/docs/release.md new file mode 100644 index 0000000000..a5adc21b38 --- /dev/null +++ b/docs/release.md @@ -0,0 +1,109 @@ +# Releases + +## Versionning + +### Example #1 + +``` +| Polkadot | v 0. 9.22 | +| Client | v 0. 9.22 0 | +| Runtime | v 9 22 0 | => 9220 +| senmver | 0. 9.22 0 | +``` + +### Example #2 + +``` +| Polkadot | v 0.10.42 | +| Client | v 0.10.42 0 | +| Runtime | v 10.42 0 | => 10420 +| senmver | 0.10.42 0 | +``` + +### Example #3 + +``` +| Polkadot | v 1. 2.18 | +| Client | v 1. 2.18 0 | +| Runtime | v 1 2 18 0 | => 102180 +| senmver | 1. 2.18 0 | +``` + + +This document contains information related to the releasing process and describes a few of the steps and checks that are +performed during the release process. + +## Client + +### Burn In + +Ensure that Parity DevOps has run the new release on Westmint and Statemine collators for 12h prior to publishing the +release. + +### Build Artifacts + +Add any necessary assets to the release. They should include: + +- Linux binaries + - GPG signature + - SHA256 checksum +- WASM binaries of the runtimes +- Source code + + +## Runtimes + +### Spec Version + +A new runtime release must bump the `spec_version`. This may follow a pattern with the client release (e.g. runtime +v9220 corresponds to v0.9.22). + +### Runtime version bump between RCs + +The clients need to be aware of runtime changes. However, we do not want to bump the `spec_version` for every single +release candidate. Instead, we can bump the `impl` field of the version to signal the change to the client. This applies +only to runtimes that have been deployed. + +### Old Migrations Removed + +Previous `on_runtime_upgrade` functions from old upgrades should be removed. + +### 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 & Storage + +Offline signing libraries depend on a consistent API of call indices and functions. Nowadays, we are no longer using +indices but the task of checking whether the API remains compatible remained and the name "Extrinsic Ordering" remained +as well although we no longer check the ordering itself. + +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. It also checks if there have been any changes in `storage`. In case of a breaking change, +increase `transaction_version`. + +To verify that the API did not break, manually start the following [Github +Action](https://github.com/paritytech/cumulus/actions/workflows/extrinsic-ordering-check-from-bin.yml). It takes around +a minute to run and will produce the report as artifact you need to manually check. + +When the workflow is done, click on it and download the zip artifact, inside you'll find an `output.txt` file. The +output should be appended as comment to the "Checklist issue". + +The 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 the indexes did not +change. + +**Note**: Extrinsic function signatures changes (adding/removing & ordering arguments) are not caught by the job, so +those changes should be reviewed "manually" + +### Benchmarks + +The Benchmarks can now be started from the CI. First find the CI pipeline from +[here](https://gitlab.parity.io/parity/mirrors/cumulus/-/pipelines?page=1&scope=all&ref=release-parachains-v9220) and +pick the latest. From 61c626f3c28914f2e181d8650afd5a124d48770b Mon Sep 17 00:00:00 2001 From: Chevdor Date: Thu, 9 Jun 2022 14:18:07 +0200 Subject: [PATCH 101/238] Fix client workflow (#1292) --- .github/workflows/release-02_create-draft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index fe1c9979c8..82f7102dc5 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -157,7 +157,7 @@ jobs: run: | find ${{env.GITHUB_WORKSPACE}} -type f -name "*-srtool-digest.json" - if [ "$RELEASE_TYPE" == "client" ]; then + if [ "$RELEASE_TYPE" != "client" ]; then ls -al $SHELL_DIGEST || true ls -al $WESTMINT_DIGEST || true ls -al $STATEMINE_DIGEST || true From 2aa5d96f7a9aa113b0f57e44870550b0d5dbd8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 13 Jun 2022 09:57:56 +0200 Subject: [PATCH 102/238] Validation-worker: Add support for patches and rerun on Cargo.lock (#1344) * Validation-worker: Add support for patches and rerun on Cargo.lock * Update Cargo.lock --- Cargo.lock | 1 + .../Cargo.toml | 3 + .../relay-validation-worker-provider/build.rs | 84 +++++++++++++++---- 3 files changed, 72 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 876c2f4ae2..e2f84277aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2142,6 +2142,7 @@ name = "cumulus-test-relay-validation-worker-provider" version = "0.1.0" dependencies = [ "polkadot-node-core-pvf", + "toml", ] [[package]] diff --git a/test/relay-validation-worker-provider/Cargo.toml b/test/relay-validation-worker-provider/Cargo.toml index a80f3a718c..b07112a1a7 100644 --- a/test/relay-validation-worker-provider/Cargo.toml +++ b/test/relay-validation-worker-provider/Cargo.toml @@ -9,3 +9,6 @@ build = "build.rs" # Polkadot polkadot-node-core-pvf = { git = "https://github.com/paritytech/polkadot", branch = "master" } + +[build-dependencies] +toml = "0.5.4" diff --git a/test/relay-validation-worker-provider/build.rs b/test/relay-validation-worker-provider/build.rs index 1b7a5dd098..6b2f482a7d 100644 --- a/test/relay-validation-worker-provider/build.rs +++ b/test/relay-validation-worker-provider/build.rs @@ -19,6 +19,7 @@ use std::{ path::{Path, PathBuf}, process::{self, Command}, }; +use toml::value::Table; /// The name of the project we will building. const PROJECT_NAME: &str = "validation-worker"; @@ -59,25 +60,39 @@ fn create_project(out_dir: &Path) -> PathBuf { let project_dir = out_dir.join(format!("{}-project", PROJECT_NAME)); fs::create_dir_all(project_dir.join("src")).expect("Creates project dir and project src dir"); - let cargo_toml = format!( - r#" - [package] - name = "{project_name}" - version = "0.1.0" - authors = ["Parity Technologies "] - edition = "2021" + let mut project_toml = Table::new(); - [dependencies] - cumulus-test-relay-validation-worker-provider = {{ path = "{provider_path}" }} + let mut package = Table::new(); + package.insert("name".into(), PROJECT_NAME.into()); + package.insert("version".into(), "1.0.0".into()); + package.insert("edition".into(), "2021".into()); - [workspace] - "#, - project_name = PROJECT_NAME, - provider_path = - env::var("CARGO_MANIFEST_DIR").expect("`CARGO_MANIFEST_DIR` is set by cargo"), + project_toml.insert("package".into(), package.into()); + + project_toml.insert("workspace".into(), Table::new().into()); + + let mut dependencies = Table::new(); + + let mut dependency_project = Table::new(); + dependency_project.insert( + "path".into(), + env::var("CARGO_MANIFEST_DIR") + .expect("`CARGO_MANIFEST_DIR` is set by cargo") + .into(), ); - fs::write(project_dir.join("Cargo.toml"), cargo_toml).expect("Writes project `Cargo.toml`"); + dependencies + .insert("cumulus-test-relay-validation-worker-provider".into(), dependency_project.into()); + + project_toml.insert("dependencies".into(), dependencies.into()); + + add_patches(&mut project_toml); + + fs::write( + project_dir.join("Cargo.toml"), + toml::to_string_pretty(&project_toml).expect("Wasm workspace toml is valid; qed"), + ) + .expect("Writes project `Cargo.toml`"); fs::write( project_dir.join("src").join("main.rs"), @@ -87,11 +102,48 @@ fn create_project(out_dir: &Path) -> PathBuf { ) .expect("Writes `main.rs`"); - fs::copy(find_cargo_lock(), project_dir.join("Cargo.lock")).expect("Copies `Cargo.lock`"); + let cargo_lock = find_cargo_lock(); + fs::copy(&cargo_lock, project_dir.join("Cargo.lock")).expect("Copies `Cargo.lock`"); + println!("cargo:rerun-if-changed={}", cargo_lock.display()); project_dir } +fn add_patches(project_toml: &mut Table) { + let workspace_toml_path = PathBuf::from( + env::var("CARGO_MANIFEST_DIR").expect("`CARGO_MANIFEST_DIR` is set by cargo"), + ) + .join("../../Cargo.toml"); + + let mut workspace_toml: Table = toml::from_str( + &fs::read_to_string(&workspace_toml_path).expect("Workspace root `Cargo.toml` exists; qed"), + ) + .expect("Workspace root `Cargo.toml` is a valid toml file; qed"); + + while let Some(mut patch) = + workspace_toml.remove("patch").and_then(|p| p.try_into::().ok()) + { + // Iterate over all patches and make the patch path absolute from the workspace root path. + patch + .iter_mut() + .filter_map(|p| { + p.1.as_table_mut().map(|t| t.iter_mut().filter_map(|t| t.1.as_table_mut())) + }) + .flatten() + .for_each(|p| { + p.iter_mut().filter(|(k, _)| k == &"path").for_each(|(_, v)| { + if let Some(path) = v.as_str().map(PathBuf::from) { + if path.is_relative() { + *v = workspace_toml_path.join(path).display().to_string().into(); + } + } + }) + }); + + project_toml.insert("patch".into(), patch.into()); + } +} + fn build_project(cargo_toml: &Path) { let cargo = env::var("CARGO").expect("`CARGO` env variable is always set by cargo"); From 635821bdd211bc563fb06d0aba366ace5d536ae3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 10:50:19 +0200 Subject: [PATCH 103/238] Bump parity-scale-codec from 3.1.2 to 3.1.3 (#1343) Bumps [parity-scale-codec](https://github.com/paritytech/parity-scale-codec) from 3.1.2 to 3.1.3. - [Release notes](https://github.com/paritytech/parity-scale-codec/releases) - [Changelog](https://github.com/paritytech/parity-scale-codec/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/parity-scale-codec/compare/parity-scale-codec-3.1.2...parity-scale-codec-3.1.3) --- updated-dependencies: - dependency-name: parity-scale-codec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- pallets/session-benchmarking/Cargo.toml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2f84277aa..d868f14b87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6639,9 +6639,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.1.2" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066" +checksum = "04bc9583b5e01cc8c70d89acc9af14ef9b1c29ee3a0074b2a9eea8c0fa396690" dependencies = [ "arrayvec 0.7.2", "bitvec", @@ -6653,9 +6653,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.2" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8" +checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index c0d4b352fc..90f0d562bc 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -23,4 +23,4 @@ derive_more = "0.99.2" async-trait = "0.1.56" thiserror = "1.0.31" jsonrpsee-core = "0.13.1" -parity-scale-codec = "3.1.2" +parity-scale-codec = "3.1.3" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 7c9c85bf2b..9cc287256e 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -21,7 +21,7 @@ sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master futures = "0.3.21" futures-timer = "3.0.2" -parity-scale-codec = "3.1.2" +parity-scale-codec = "3.1.3" parking_lot = "0.12.1" jsonrpsee = { version = "0.13.1", features = ["ws-client"] } tracing = "0.1.34" diff --git a/pallets/session-benchmarking/Cargo.toml b/pallets/session-benchmarking/Cargo.toml index ba0f8cf441..e4d8319e28 100644 --- a/pallets/session-benchmarking/Cargo.toml +++ b/pallets/session-benchmarking/Cargo.toml @@ -13,7 +13,7 @@ readme = "README.md" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -parity-scale-codec = { version = "3.1.2", default-features = false } +parity-scale-codec = { version = "3.1.3", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } From 7b87e86562119d76b5d1db6663bd9052ece7edb7 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Tue, 14 Jun 2022 03:26:31 +0200 Subject: [PATCH 104/238] Derive MaxEncodedLen on cumulus_pallet_xcm::Origin (#1360) --- pallets/xcm/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pallets/xcm/src/lib.rs b/pallets/xcm/src/lib.rs index 649bb5ad69..9659e65b7f 100644 --- a/pallets/xcm/src/lib.rs +++ b/pallets/xcm/src/lib.rs @@ -77,7 +77,7 @@ pub mod pallet { } /// Origin for the parachains module. - #[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] + #[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug, MaxEncodedLen)] #[pallet::origin] pub enum Origin { /// It comes from the (parent) relay chain. From 567cb0ed977b347f15141ba377fe6b0fc91406a6 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Tue, 14 Jun 2022 04:38:50 +0200 Subject: [PATCH 105/238] Bounded aura ext pallet (#1359) * Bounded aura ext pallet * bump deps Co-authored-by: parity-processbot <> Co-authored-by: Shawn Tabrizi --- Cargo.lock | 530 ++++++++++++++++++------------------ pallets/aura-ext/src/lib.rs | 15 +- 2 files changed, 278 insertions(+), 267 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d868f14b87..a07f3c23c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2796,7 +2796,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", ] @@ -2814,7 +2814,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -2836,7 +2836,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "Inflector", "chrono", @@ -2845,6 +2845,7 @@ dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "gethostname", "handlebars", "hash-db", "hex", @@ -2886,7 +2887,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2897,7 +2898,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2913,7 +2914,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -2941,7 +2942,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "bitflags", "frame-metadata", @@ -2971,7 +2972,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2983,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2995,7 +2996,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro2", "quote", @@ -3005,7 +3006,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "log", @@ -3022,7 +3023,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -3037,7 +3038,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "sp-api", @@ -3046,7 +3047,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "sp-api", @@ -3242,6 +3243,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -3903,7 +3914,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-primitives", "bitvec", @@ -3995,7 +4006,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -5331,7 +5342,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "dyn-clonable", @@ -5347,7 +5358,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "expander 0.0.6", "petgraph", @@ -5384,7 +5395,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -5401,7 +5412,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5415,7 +5426,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -5431,7 +5442,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -5447,7 +5458,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -5462,7 +5473,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5486,7 +5497,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5506,7 +5517,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5521,7 +5532,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "beefy-primitives", "frame-support", @@ -5537,7 +5548,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5560,7 +5571,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5578,7 +5589,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5595,7 +5606,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5617,7 +5628,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5638,7 +5649,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5683,7 +5694,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5700,7 +5711,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "bitflags", "frame-benchmarking", @@ -5727,7 +5738,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "bitflags", "parity-scale-codec", @@ -5742,7 +5753,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro2", "quote", @@ -5752,7 +5763,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5769,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5782,7 +5793,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5798,7 +5809,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5821,7 +5832,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5834,7 +5845,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5852,7 +5863,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5867,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5890,7 +5901,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5906,7 +5917,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5926,7 +5937,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5943,7 +5954,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5960,7 +5971,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5978,7 +5989,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5993,7 +6004,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6008,7 +6019,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6016,6 +6027,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core", + "sp-io", "sp-runtime", "sp-staking", "sp-std", @@ -6024,7 +6036,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6043,7 +6055,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6060,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6083,7 +6095,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6099,7 +6111,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6114,7 +6126,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6128,7 +6140,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6143,7 +6155,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6159,7 +6171,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6180,7 +6192,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6196,7 +6208,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6210,7 +6222,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6233,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6244,7 +6256,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "sp-arithmetic", @@ -6253,7 +6265,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6282,7 +6294,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6300,7 +6312,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6319,7 +6331,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-support", "frame-system", @@ -6335,7 +6347,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6350,7 +6362,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6361,7 +6373,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6378,7 +6390,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6393,7 +6405,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6409,7 +6421,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6424,7 +6436,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "frame-system", @@ -6442,7 +6454,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6955,7 +6967,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6970,7 +6982,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6984,7 +6996,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "derive_more", "fatality", @@ -7007,7 +7019,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "fatality", "futures 0.3.21", @@ -7028,7 +7040,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7053,7 +7065,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7093,7 +7105,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "always-assert", "fatality", @@ -7114,7 +7126,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7127,7 +7139,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "derive_more", "fatality", @@ -7150,7 +7162,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7164,7 +7176,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7184,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "always-assert", "async-trait", @@ -7205,7 +7217,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7223,7 +7235,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "derive_more", @@ -7252,7 +7264,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "futures 0.3.21", @@ -7272,7 +7284,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "fatality", @@ -7291,7 +7303,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7306,7 +7318,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -7324,7 +7336,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7339,7 +7351,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7356,7 +7368,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "fatality", "futures 0.3.21", @@ -7375,7 +7387,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -7392,7 +7404,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "fatality", @@ -7410,7 +7422,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "always-assert", "assert_matches", @@ -7441,7 +7453,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7457,7 +7469,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7474,7 +7486,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-std", "lazy_static", @@ -7492,7 +7504,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bs58", "futures 0.3.21", @@ -7511,7 +7523,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "derive_more", @@ -7532,7 +7544,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7554,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7564,7 +7576,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "futures 0.3.21", @@ -7582,7 +7594,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "derive_more", "futures 0.3.21", @@ -7601,7 +7613,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "derive_more", @@ -7634,7 +7646,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7656,7 +7668,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "derive_more", "frame-support", @@ -7750,7 +7762,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7765,7 +7777,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitvec", "frame-system", @@ -7795,7 +7807,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7827,7 +7839,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-primitives", "bitvec", @@ -7912,7 +7924,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-primitives", "bitvec", @@ -7959,7 +7971,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -7971,7 +7983,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bs58", "parity-scale-codec", @@ -7983,7 +7995,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "bitflags", "bitvec", @@ -8026,7 +8038,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "async-trait", "beefy-gadget", @@ -8129,7 +8141,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8150,7 +8162,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8160,7 +8172,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8185,7 +8197,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-primitives", "bitvec", @@ -8246,7 +8258,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-benchmarking", "frame-system", @@ -8391,7 +8403,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8841,7 +8853,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8969,7 +8981,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9046,7 +9058,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -9216,7 +9228,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "sp-core", @@ -9227,7 +9239,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9254,7 +9266,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9277,7 +9289,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9293,7 +9305,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9310,7 +9322,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9321,7 +9333,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "chrono", "clap 3.1.18", @@ -9360,7 +9372,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "fnv", "futures 0.3.21", @@ -9388,7 +9400,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "hash-db", "kvdb", @@ -9413,7 +9425,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9437,7 +9449,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9466,7 +9478,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "fork-tree", @@ -9509,7 +9521,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9531,7 +9543,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9544,7 +9556,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -9569,7 +9581,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "sc-client-api", "sp-authorship", @@ -9580,7 +9592,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "lazy_static", "lru 0.7.5", @@ -9607,7 +9619,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "environmental", "parity-scale-codec", @@ -9624,7 +9636,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "parity-scale-codec", @@ -9639,7 +9651,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9657,7 +9669,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "ahash", "async-trait", @@ -9697,7 +9709,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9718,7 +9730,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9735,7 +9747,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "hex", @@ -9750,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "asynchronous-codec", @@ -9802,7 +9814,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "libp2p", @@ -9815,7 +9827,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "ahash", "futures 0.3.21", @@ -9832,7 +9844,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "libp2p", @@ -9852,7 +9864,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "bitflags", "either", @@ -9881,7 +9893,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "bytes", "fnv", @@ -9909,7 +9921,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "libp2p", @@ -9922,7 +9934,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9931,7 +9943,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "hash-db", @@ -9961,7 +9973,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9984,7 +9996,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9997,7 +10009,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "directories", @@ -10062,7 +10074,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "parity-scale-codec", @@ -10076,7 +10088,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10095,7 +10107,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "libc", @@ -10114,7 +10126,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "chrono", "futures 0.3.21", @@ -10132,7 +10144,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "ansi_term", "atty", @@ -10163,7 +10175,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10174,7 +10186,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10201,7 +10213,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "log", @@ -10214,7 +10226,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10653,7 +10665,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "enumn", "parity-scale-codec", @@ -10729,7 +10741,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "hash-db", "log", @@ -10746,7 +10758,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "blake2", "proc-macro-crate", @@ -10758,7 +10770,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -10771,7 +10783,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "integer-sqrt", "num-traits", @@ -10786,7 +10798,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -10799,7 +10811,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "parity-scale-codec", @@ -10811,7 +10823,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "sp-api", @@ -10823,7 +10835,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "log", @@ -10841,7 +10853,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -10860,7 +10872,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "parity-scale-codec", @@ -10878,7 +10890,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "merlin", @@ -10901,7 +10913,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -10915,7 +10927,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -10928,7 +10940,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "base58", "bitflags", @@ -10974,7 +10986,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "blake2", "byteorder", @@ -10988,7 +11000,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro2", "quote", @@ -10999,7 +11011,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11008,7 +11020,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro2", "quote", @@ -11018,7 +11030,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "environmental", "parity-scale-codec", @@ -11029,7 +11041,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "finality-grandpa", "log", @@ -11047,7 +11059,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11061,7 +11073,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "hash-db", @@ -11086,7 +11098,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "lazy_static", "sp-core", @@ -11097,7 +11109,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -11114,7 +11126,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "thiserror", "zstd", @@ -11123,7 +11135,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "parity-scale-codec", @@ -11138,7 +11150,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11152,7 +11164,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "sp-api", "sp-core", @@ -11162,7 +11174,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "backtrace", "lazy_static", @@ -11172,7 +11184,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "rustc-hash", "serde", @@ -11182,7 +11194,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "either", "hash256-std-hasher", @@ -11204,7 +11216,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11221,7 +11233,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "Inflector", "proc-macro-crate", @@ -11233,7 +11245,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "parity-scale-codec", @@ -11247,7 +11259,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "serde", "serde_json", @@ -11256,7 +11268,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11270,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "scale-info", @@ -11281,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "hash-db", "log", @@ -11303,12 +11315,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11321,7 +11333,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "log", "sp-core", @@ -11334,7 +11346,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures-timer", @@ -11350,7 +11362,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "sp-std", @@ -11362,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "sp-api", "sp-runtime", @@ -11371,7 +11383,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "log", @@ -11387,7 +11399,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "hash-db", "memory-db", @@ -11403,7 +11415,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11420,7 +11432,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11431,7 +11443,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "impl-trait-for-tuples", "log", @@ -11710,7 +11722,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "platforms", ] @@ -11718,7 +11730,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11739,7 +11751,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures-util", "hyper", @@ -11752,7 +11764,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "jsonrpsee", "log", @@ -11773,7 +11785,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "async-trait", "futures 0.3.21", @@ -11799,7 +11811,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11809,7 +11821,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11820,7 +11832,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "ansi_term", "build-helper", @@ -11927,7 +11939,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -12205,7 +12217,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12216,7 +12228,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12345,7 +12357,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#54d6f2cbae12fa314f2bcaf6d57fba585162438f" +source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12926,7 +12938,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "beefy-primitives", "bitvec", @@ -13014,7 +13026,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -13255,7 +13267,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13268,7 +13280,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-support", "frame-system", @@ -13288,7 +13300,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -13306,7 +13318,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#555c30314cab26779c6b594a518e99b8614c23be" +source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" dependencies = [ "Inflector", "proc-macro2", diff --git a/pallets/aura-ext/src/lib.rs b/pallets/aura-ext/src/lib.rs index 6af6c4b1c1..15e82edeef 100644 --- a/pallets/aura-ext/src/lib.rs +++ b/pallets/aura-ext/src/lib.rs @@ -49,21 +49,19 @@ pub mod pallet { use super::*; use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; - use sp_std::vec::Vec; /// The configuration trait. #[pallet::config] pub trait Config: pallet_aura::Config + frame_system::Config {} #[pallet::pallet] - #[pallet::without_storage_info] pub struct Pallet(_); #[pallet::hooks] impl Hooks> for Pallet { fn on_finalize(_: BlockNumberFor) { // Update to the latest AuRa authorities. - Authorities::::put(Aura::::authorities().into_inner()); + Authorities::::put(Aura::::authorities()); } fn on_initialize(_: BlockNumberFor) -> Weight { @@ -74,16 +72,17 @@ pub mod pallet { } } - #[pallet::call] - impl Pallet {} - /// Serves as cache for the authorities. /// /// The authorities in AuRa are overwritten in `on_initialize` when we switch to a new session, /// but we require the old authorities to verify the seal when validating a PoV. This will always /// be updated to the latest AuRa authorities in `on_finalize`. #[pallet::storage] - pub(crate) type Authorities = StorageValue<_, Vec, ValueQuery>; + pub(crate) type Authorities = StorageValue< + _, + BoundedVec::MaxAuthorities>, + ValueQuery, + >; #[pallet::genesis_config] #[derive(Default)] @@ -99,7 +98,7 @@ pub mod pallet { "AuRa authorities empty, maybe wrong order in `construct_runtime!`?", ); - Authorities::::put(authorities.into_inner()); + Authorities::::put(authorities); } } } From 7004130d8ee6fbdd80808423f2fc7181c174a56a Mon Sep 17 00:00:00 2001 From: Vlad Date: Tue, 14 Jun 2022 13:24:47 +0300 Subject: [PATCH 106/238] Fix `release-parachains-v*` pipelines (#1355) * Fix `release-parachains-v*` pipelines * Formatting --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d539ada270..aea3b58a56 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,6 +52,7 @@ variables: - 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 + - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000 .publish-refs: &publish-refs rules: From ba5ce4a61591e86216bbf38804004b4a7153c24a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jun 2022 12:45:28 +0200 Subject: [PATCH 107/238] Bump parity-scale-codec from 3.1.3 to 3.1.5 (#1356) Bumps [parity-scale-codec](https://github.com/paritytech/parity-scale-codec) from 3.1.3 to 3.1.5. - [Release notes](https://github.com/paritytech/parity-scale-codec/releases) - [Changelog](https://github.com/paritytech/parity-scale-codec/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/parity-scale-codec/compare/parity-scale-codec-3.1.3...parity-scale-codec-3.1.5) --- updated-dependencies: - dependency-name: parity-scale-codec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- pallets/session-benchmarking/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a07f3c23c8..251d1849b4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6651,9 +6651,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.1.3" +version = "3.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04bc9583b5e01cc8c70d89acc9af14ef9b1c29ee3a0074b2a9eea8c0fa396690" +checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0" dependencies = [ "arrayvec 0.7.2", "bitvec", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 90f0d562bc..994ca86f91 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -23,4 +23,4 @@ derive_more = "0.99.2" async-trait = "0.1.56" thiserror = "1.0.31" jsonrpsee-core = "0.13.1" -parity-scale-codec = "3.1.3" +parity-scale-codec = "3.1.5" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 9cc287256e..3a4f57db70 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -21,7 +21,7 @@ sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master futures = "0.3.21" futures-timer = "3.0.2" -parity-scale-codec = "3.1.3" +parity-scale-codec = "3.1.5" parking_lot = "0.12.1" jsonrpsee = { version = "0.13.1", features = ["ws-client"] } tracing = "0.1.34" diff --git a/pallets/session-benchmarking/Cargo.toml b/pallets/session-benchmarking/Cargo.toml index e4d8319e28..a9e8724714 100644 --- a/pallets/session-benchmarking/Cargo.toml +++ b/pallets/session-benchmarking/Cargo.toml @@ -13,7 +13,7 @@ readme = "README.md" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -parity-scale-codec = { version = "3.1.3", default-features = false } +parity-scale-codec = { version = "3.1.5", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } From 5fc7d4be9636679ae7cf1c2d50c8a04a65386091 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Tue, 14 Jun 2022 14:36:14 +0200 Subject: [PATCH 108/238] Bounded collator selection pallet (#1337) * Bounded collator selection pallet * Update pallets/collator-selection/src/lib.rs Co-authored-by: Squirrel Co-authored-by: Squirrel --- pallets/collator-selection/src/lib.rs | 67 ++++++++++++++------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/pallets/collator-selection/src/lib.rs b/pallets/collator-selection/src/lib.rs index 0aeb44dc68..918ec95a3d 100644 --- a/pallets/collator-selection/src/lib.rs +++ b/pallets/collator-selection/src/lib.rs @@ -89,7 +89,7 @@ pub mod pallet { ValidatorRegistration, }, weights::DispatchClass, - PalletId, + BoundedVec, PalletId, }; use frame_system::{pallet_prelude::*, Config as SystemConfig}; use pallet_session::SessionManager; @@ -123,8 +123,7 @@ pub mod pallet { /// Account Identifier from which the internal Pot is generated. type PotId: Get; - /// Maximum number of candidates that we should have. This is used for benchmarking and is not - /// enforced. + /// Maximum number of candidates that we should have. This is enforced in code. /// /// This does not take into account the invulnerables. type MaxCandidates: Get; @@ -134,9 +133,7 @@ pub mod pallet { /// This does not take into account the invulnerables. type MinCandidates: Get; - /// Maximum number of invulnerables. - /// - /// Used only for benchmarking. + /// Maximum number of invulnerables. This is enforced in code. type MaxInvulnerables: Get; // Will be kicked if block is not produced in threshold. @@ -158,7 +155,9 @@ pub mod pallet { } /// Basic information about a collation candidate. - #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, scale_info::TypeInfo)] + #[derive( + PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, scale_info::TypeInfo, MaxEncodedLen, + )] pub struct CandidateInfo { /// Account identifier. pub who: AccountId, @@ -168,19 +167,22 @@ pub mod pallet { #[pallet::pallet] #[pallet::generate_store(pub(super) trait Store)] - #[pallet::without_storage_info] pub struct Pallet(_); /// The invulnerable, fixed collators. #[pallet::storage] #[pallet::getter(fn invulnerables)] - pub type Invulnerables = StorageValue<_, Vec, ValueQuery>; + pub type Invulnerables = + StorageValue<_, BoundedVec, ValueQuery>; /// The (community, limited) collation candidates. #[pallet::storage] #[pallet::getter(fn candidates)] - pub type Candidates = - StorageValue<_, Vec>>, ValueQuery>; + pub type Candidates = StorageValue< + _, + BoundedVec>, T::MaxCandidates>, + ValueQuery, + >; /// Last block authored by collator. #[pallet::storage] @@ -230,10 +232,9 @@ pub mod pallet { "duplicate invulnerables in genesis." ); - assert!( - T::MaxInvulnerables::get() >= (self.invulnerables.len() as u32), - "genesis invulnerables are more than T::MaxInvulnerables", - ); + let bounded_invulnerables = + BoundedVec::<_, T::MaxInvulnerables>::try_from(self.invulnerables.clone()) + .expect("genesis invulnerables are more than T::MaxInvulnerables"); assert!( T::MaxCandidates::get() >= self.desired_candidates, "genesis desired_candidates are more than T::MaxCandidates", @@ -241,7 +242,7 @@ pub mod pallet { >::put(&self.desired_candidates); >::put(&self.candidacy_bond); - >::put(&self.invulnerables); + >::put(bounded_invulnerables); } } @@ -270,6 +271,8 @@ pub mod pallet { AlreadyCandidate, /// User is not a candidate NotCandidate, + /// Too many invulnerables + TooManyInvulnerables, /// User is already an Invulnerable AlreadyInvulnerable, /// Account has no associated validator ID @@ -290,15 +293,11 @@ pub mod pallet { new: Vec, ) -> DispatchResultWithPostInfo { T::UpdateOrigin::ensure_origin(origin)?; - // we trust origin calls, this is just a for more accurate benchmarking - if (new.len() as u32) > T::MaxInvulnerables::get() { - log::warn!( - "invulnerables > T::MaxInvulnerables; you might need to run benchmarks again" - ); - } + let bounded_invulnerables = BoundedVec::<_, T::MaxInvulnerables>::try_from(new) + .map_err(|_| Error::::TooManyInvulnerables)?; // check if the invulnerables have associated validator keys before they are set - for account_id in &new { + for account_id in bounded_invulnerables.iter() { let validator_key = T::ValidatorIdOf::convert(account_id.clone()) .ok_or(Error::::NoAssociatedValidatorId)?; ensure!( @@ -307,8 +306,10 @@ pub mod pallet { ); } - >::put(&new); - Self::deposit_event(Event::NewInvulnerables { invulnerables: new }); + >::put(&bounded_invulnerables); + Self::deposit_event(Event::NewInvulnerables { + invulnerables: bounded_invulnerables.to_vec(), + }); Ok(().into()) } @@ -372,7 +373,7 @@ pub mod pallet { Err(Error::::AlreadyCandidate)? } else { T::Currency::reserve(&who, deposit)?; - candidates.push(incoming); + candidates.try_push(incoming).map_err(|_| Error::::TooManyCandidates)?; >::insert( who.clone(), frame_system::Pallet::::block_number() + T::KickThreshold::get(), @@ -430,8 +431,10 @@ pub mod pallet { /// Assemble the current set of candidates and invulnerables into the next collator set. /// /// This is done on the fly, as frequent as we are told to do so, as the session manager. - pub fn assemble_collators(candidates: Vec) -> Vec { - let mut collators = Self::invulnerables(); + pub fn assemble_collators( + candidates: BoundedVec, + ) -> Vec { + let mut collators = Self::invulnerables().to_vec(); collators.extend(candidates); collators } @@ -439,8 +442,8 @@ pub mod pallet { /// Kicks out candidates that did not produce a block in the kick threshold /// and refund their deposits. pub fn kick_stale_candidates( - candidates: Vec>>, - ) -> Vec { + candidates: BoundedVec>, T::MaxCandidates>, + ) -> BoundedVec { let now = frame_system::Pallet::::block_number(); let kick_threshold = T::KickThreshold::get(); candidates @@ -461,7 +464,9 @@ pub mod pallet { None } }) - .collect() + .collect::>() + .try_into() + .expect("filter_map operation can't result in a bounded vec larger than its original; qed") } } From 11201950d236053157b1cad7087e2fa8062a19bf Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 14 Jun 2022 13:13:11 -0400 Subject: [PATCH 109/238] Lower all Assets / NFT deposits by 10x (#1332) * lower all deposits by 10x * undo rococo stuff * Apply suggestions from code review * update asset deposits * align statemint deposit ratios Co-authored-by: joepetrowski --- parachains/runtimes/assets/statemine/src/constants.rs | 4 ++-- parachains/runtimes/assets/statemine/src/lib.rs | 6 +++--- parachains/runtimes/assets/statemint/src/constants.rs | 4 ++-- parachains/runtimes/assets/statemint/src/lib.rs | 6 +++--- parachains/runtimes/assets/westmint/src/constants.rs | 4 ++-- parachains/runtimes/assets/westmint/src/lib.rs | 8 ++++---- .../runtimes/contracts/contracts-rococo/src/constants.rs | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/parachains/runtimes/assets/statemine/src/constants.rs b/parachains/runtimes/assets/statemine/src/constants.rs index 8661ec78a3..fabc09d017 100644 --- a/parachains/runtimes/assets/statemine/src/constants.rs +++ b/parachains/runtimes/assets/statemine/src/constants.rs @@ -26,8 +26,8 @@ pub mod currency { pub const MILLICENTS: Balance = constants::currency::MILLICENTS; pub const fn deposit(items: u32, bytes: u32) -> Balance { - // map to 1/10 of what the kusama relay chain charges (v9020) - constants::currency::deposit(items, bytes) / 10 + // map to 1/100 of what the kusama relay chain charges (v9020) + constants::currency::deposit(items, bytes) / 100 } } diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index b9e739934c..49834bcd98 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -210,7 +210,7 @@ impl pallet_transaction_payment::Config for Runtime { } parameter_types! { - pub const AssetDeposit: Balance = UNITS; // 1 UNIT deposit to create asset + pub const AssetDeposit: Balance = UNITS / 10; // 1 / 10 UNITS deposit to create asset pub const AssetAccountDeposit: Balance = deposit(1, 16); pub const ApprovalDeposit: Balance = EXISTENTIAL_DEPOSIT; pub const AssetsStringLimit: u32 = 50; @@ -507,8 +507,8 @@ impl pallet_asset_tx_payment::Config for Runtime { } parameter_types! { - pub const CollectionDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class - pub const ItemDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance + pub const CollectionDeposit: Balance = UNITS / 10; // 1 / 10 UNIT deposit to create asset class + pub const ItemDeposit: Balance = UNITS / 1_000; // 1 / 1000 UNIT deposit to create asset instance pub const KeyLimit: u32 = 32; // Max 32 bytes per key pub const ValueLimit: u32 = 64; // Max 64 bytes per value pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); diff --git a/parachains/runtimes/assets/statemint/src/constants.rs b/parachains/runtimes/assets/statemint/src/constants.rs index e6886fcb75..17624fded9 100644 --- a/parachains/runtimes/assets/statemint/src/constants.rs +++ b/parachains/runtimes/assets/statemint/src/constants.rs @@ -26,8 +26,8 @@ pub mod currency { pub const MILLICENTS: Balance = constants::currency::MILLICENTS; pub const fn deposit(items: u32, bytes: u32) -> Balance { - // 1/10 of Polkadot v9010 - constants::currency::deposit(items, bytes) / 10 + // 1/100 of Polkadot v9010 + constants::currency::deposit(items, bytes) / 100 } } diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index cebdce8701..e7100dfb88 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -240,7 +240,7 @@ impl pallet_transaction_payment::Config for Runtime { } parameter_types! { - pub const AssetDeposit: Balance = 100 * DOLLARS; // 100 DOLLARS deposit to create asset + pub const AssetDeposit: Balance = 10 * UNITS; // 10 UNITS deposit to create fungible asset class pub const AssetAccountDeposit: Balance = deposit(1, 16); pub const ApprovalDeposit: Balance = EXISTENTIAL_DEPOSIT; pub const AssetsStringLimit: u32 = 50; @@ -537,8 +537,8 @@ impl pallet_asset_tx_payment::Config for Runtime { } parameter_types! { - pub const CollectionDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class - pub const ItemDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance + pub const CollectionDeposit: Balance = 10 * UNITS; // 10 UNIT deposit to create uniques class + pub const ItemDeposit: Balance = UNITS / 100; // 1 / 100 UNIT deposit to create uniques instance pub const KeyLimit: u32 = 32; // Max 32 bytes per key pub const ValueLimit: u32 = 64; // Max 64 bytes per value pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); diff --git a/parachains/runtimes/assets/westmint/src/constants.rs b/parachains/runtimes/assets/westmint/src/constants.rs index f4f5054ce4..032ed5c1f4 100644 --- a/parachains/runtimes/assets/westmint/src/constants.rs +++ b/parachains/runtimes/assets/westmint/src/constants.rs @@ -26,8 +26,8 @@ pub mod currency { pub const GRAND: Balance = constants::currency::GRAND; pub const fn deposit(items: u32, bytes: u32) -> Balance { - // 1/10 of Westend testnet - constants::currency::deposit(items, bytes) / 10 + // 1/100 of Westend testnet + constants::currency::deposit(items, bytes) / 100 } } diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index 44293376f0..c8946668e6 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -208,8 +208,8 @@ impl pallet_transaction_payment::Config for Runtime { } parameter_types! { - pub const AssetDeposit: Balance = 1 * UNITS; // 1 WND deposit to create asset - pub const AssetAccountDeposit: Balance = 1 * UNITS; // 1 WND for an asset account + pub const AssetDeposit: Balance = UNITS / 10; // 1 / 10 WND deposit to create asset + pub const AssetAccountDeposit: Balance = deposit(1, 16); pub const ApprovalDeposit: Balance = EXISTENTIAL_DEPOSIT; pub const AssetsStringLimit: u32 = 50; /// Key = 32 bytes, Value = 36 bytes (32+1+1+1+1) @@ -497,8 +497,8 @@ impl pallet_asset_tx_payment::Config for Runtime { } parameter_types! { - pub const CollectionDeposit: Balance = UNITS; // 1 UNIT deposit to create asset class - pub const ItemDeposit: Balance = UNITS / 100; // 1/100 UNIT deposit to create asset instance + pub const CollectionDeposit: Balance = UNITS / 10; // 1 / 10 UNIT deposit to create asset class + pub const ItemDeposit: Balance = UNITS / 1_000; // 1 / 1000 UNIT deposit to create asset instance pub const KeyLimit: u32 = 32; // Max 32 bytes per key pub const ValueLimit: u32 = 64; // Max 64 bytes per value pub const UniquesMetadataDepositBase: Balance = deposit(1, 129); diff --git a/parachains/runtimes/contracts/contracts-rococo/src/constants.rs b/parachains/runtimes/contracts/contracts-rococo/src/constants.rs index 8661ec78a3..fabc09d017 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/constants.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/constants.rs @@ -26,8 +26,8 @@ pub mod currency { pub const MILLICENTS: Balance = constants::currency::MILLICENTS; pub const fn deposit(items: u32, bytes: u32) -> Balance { - // map to 1/10 of what the kusama relay chain charges (v9020) - constants::currency::deposit(items, bytes) / 10 + // map to 1/100 of what the kusama relay chain charges (v9020) + constants::currency::deposit(items, bytes) / 100 } } From 735dd4d48dc6387a09fcdb28c39fc505b76c5384 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jun 2022 23:21:28 +0200 Subject: [PATCH 110/238] Bump toml from 0.5.8 to 0.5.9 (#1357) Bumps [toml](https://github.com/alexcrichton/toml-rs) from 0.5.8 to 0.5.9. - [Release notes](https://github.com/alexcrichton/toml-rs/releases) - [Commits](https://github.com/alexcrichton/toml-rs/compare/0.5.8...0.5.9) --- updated-dependencies: - dependency-name: toml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- test/relay-validation-worker-provider/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 251d1849b4..854389809f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12158,9 +12158,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] diff --git a/test/relay-validation-worker-provider/Cargo.toml b/test/relay-validation-worker-provider/Cargo.toml index b07112a1a7..8d1be98155 100644 --- a/test/relay-validation-worker-provider/Cargo.toml +++ b/test/relay-validation-worker-provider/Cargo.toml @@ -11,4 +11,4 @@ build = "build.rs" polkadot-node-core-pvf = { git = "https://github.com/paritytech/polkadot", branch = "master" } [build-dependencies] -toml = "0.5.4" +toml = "0.5.9" From 26717de64dfaec26f41d0594a6b25124942c17f5 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Wed, 15 Jun 2022 00:33:42 +0200 Subject: [PATCH 111/238] companion #11661 (#1364) * bump jsonrpsee v0.14.0 * update Cargo.lock --- Cargo.lock | 653 ++++++++++---------- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 6 files changed, 345 insertions(+), 318 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 854389809f..2b0bc9b1ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2741,10 +2741,22 @@ dependencies = [ ] [[package]] -name = "finality-grandpa" -version = "0.15.0" +name = "filetime" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9def033d8505edf199f6a5d07aa7e6d2d6185b164293b77f0efd108f4f3e11d" +checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi", +] + +[[package]] +name = "finality-grandpa" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5" dependencies = [ "either", "futures 0.3.21", @@ -2752,7 +2764,7 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "scale-info", ] @@ -2796,7 +2808,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", ] @@ -2814,7 +2826,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -2836,7 +2848,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "Inflector", "chrono", @@ -2887,7 +2899,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2898,7 +2910,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2914,7 +2926,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -2942,7 +2954,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "bitflags", "frame-metadata", @@ -2972,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2984,7 +2996,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2996,7 +3008,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro2", "quote", @@ -3006,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "log", @@ -3023,7 +3035,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -3038,7 +3050,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "sp-api", @@ -3047,7 +3059,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "sp-api", @@ -3759,9 +3771,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f2ab5a60e558e74ea93bcf5164ebc47939a7fff8938fa9b5233bbc63e16061" +checksum = "11e017217fcd18da0a25296d3693153dd19c8a6aadab330b3595285d075385d1" dependencies = [ "jsonrpsee-core", "jsonrpsee-http-server", @@ -3774,9 +3786,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d682f4a55081a2be3e639280c640523070e4aeb8ee2fd8dd9168fdae57a9db" +checksum = "ce395539a14d3ad4ec1256fde105abd36a2da25d578a291cabe98f45adfdb111" dependencies = [ "futures-util", "http", @@ -3795,9 +3807,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e27462b21279edf9a6a91f46ffbe125e9cdc58b901d2e08bf59b31a47d7d0ab" +checksum = "16efcd4477de857d4a2195a45769b2fe9ebb54f3ef5a4221d3b014a4fe33ec0b" dependencies = [ "anyhow", "arrayvec 0.7.2", @@ -3807,8 +3819,10 @@ dependencies = [ "futures-channel", "futures-timer", "futures-util", + "globset", "hyper", "jsonrpsee-types", + "lazy_static", "parking_lot 0.12.1", "rand 0.8.5", "rustc-hash", @@ -3818,32 +3832,31 @@ dependencies = [ "thiserror", "tokio", "tracing", -] - -[[package]] -name = "jsonrpsee-http-server" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7178f16eabd7154c094e24d295b9ee355ec1e5f24c328759c56255ff7bbd4548" -dependencies = [ - "futures-channel", - "futures-util", - "globset", - "hyper", - "jsonrpsee-core", - "jsonrpsee-types", - "lazy_static", - "serde_json", - "tokio", - "tracing", "unicase", ] [[package]] -name = "jsonrpsee-proc-macros" -version = "0.13.1" +name = "jsonrpsee-http-server" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8d7f449cab3b747f12c3efc27f5cad537f3b597c6a3838b0fac628f4bf730a" +checksum = "bdd69efeb3ce2cba767f126872f4eeb4624038a29098e75d77608b2b4345ad03" +dependencies = [ + "futures-channel", + "futures-util", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874cf3f6a027cebf36cae767feca9aa2e8a8f799880e49eb5540819fcbd8eada" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3853,9 +3866,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd11763134104122ddeb0f97e4bbe393058017dfb077db63fbf44b4dd0dd86e" +checksum = "3bcf76cd316f5d3ad48138085af1f45e2c58c98e02f0779783dbb034d43f7c86" dependencies = [ "anyhow", "beef", @@ -3867,9 +3880,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f15180afb3761c7a3a32c0a8b680788176dcfdfe725b24c1758c90b1d1595b" +checksum = "ee043cb5dd0d51d3eb93432e998d5bae797691a7b10ec4a325e036bcdb48c48a" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -3878,9 +3891,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-server" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb6c21556c551582b56e4e8e6e6249b0bbdb69bb7fa39efe9b9a6b54af9f206" +checksum = "2bd2e4d266774a671f8def3794255b28eddd09b18d76e0b913fa439f34588c0a" dependencies = [ "futures-channel", "futures-util", @@ -3889,6 +3902,7 @@ dependencies = [ "serde_json", "soketto", "tokio", + "tokio-stream", "tokio-util 0.7.1", "tracing", ] @@ -3914,7 +3928,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-primitives", "bitvec", @@ -4006,7 +4020,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "polkadot-primitives", @@ -4288,7 +4302,7 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "lru 0.7.5", + "lru 0.7.7", "prost 0.9.0", "prost-build", "smallvec", @@ -4752,9 +4766,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32613e41de4c47ab04970c348ca7ae7382cf116625755af070b008a15516a889" +checksum = "c84e6fe5655adc6ce00787cf7dcaf8dc4f998a0565d23eafc207a8b08ca3349a" dependencies = [ "hashbrown 0.11.2", ] @@ -5342,7 +5356,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "dyn-clonable", @@ -5358,9 +5372,10 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "expander 0.0.6", + "itertools", "petgraph", "proc-macro-crate", "proc-macro2", @@ -5395,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -5412,7 +5427,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5426,7 +5441,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -5442,7 +5457,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -5458,7 +5473,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -5473,7 +5488,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5497,7 +5512,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5517,7 +5532,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5532,7 +5547,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "beefy-primitives", "frame-support", @@ -5548,7 +5563,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5571,7 +5586,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5589,7 +5604,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5606,7 +5621,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5628,7 +5643,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5649,7 +5664,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5694,7 +5709,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5711,7 +5726,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "bitflags", "frame-benchmarking", @@ -5738,7 +5753,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "bitflags", "parity-scale-codec", @@ -5753,7 +5768,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro2", "quote", @@ -5763,7 +5778,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5780,7 +5795,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5793,7 +5808,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5809,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5832,7 +5847,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5845,7 +5860,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5863,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5878,7 +5893,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5901,7 +5916,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5917,7 +5932,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5937,7 +5952,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5954,7 +5969,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5971,7 +5986,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5989,7 +6004,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6004,7 +6019,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6019,7 +6034,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6036,7 +6051,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6055,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6072,7 +6087,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6095,7 +6110,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6111,7 +6126,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6126,7 +6141,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6140,7 +6155,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6155,7 +6170,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6171,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6192,7 +6207,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6208,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6222,7 +6237,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6245,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6256,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "sp-arithmetic", @@ -6265,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6294,7 +6309,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6312,7 +6327,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6331,7 +6346,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-support", "frame-system", @@ -6347,7 +6362,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6362,7 +6377,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6373,7 +6388,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6390,7 +6405,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6405,7 +6420,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6421,7 +6436,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6436,7 +6451,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "frame-system", @@ -6454,7 +6469,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6967,7 +6982,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6982,7 +6997,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6996,12 +7011,12 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "derive_more", "fatality", "futures 0.3.21", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -7019,11 +7034,11 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "fatality", "futures 0.3.21", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -7040,7 +7055,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7065,7 +7080,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7105,7 +7120,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "always-assert", "fatality", @@ -7126,7 +7141,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7139,12 +7154,12 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "derive_more", "fatality", "futures 0.3.21", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -7162,7 +7177,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7176,7 +7191,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7196,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "always-assert", "async-trait", @@ -7217,7 +7232,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7235,14 +7250,14 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "derive_more", "futures 0.3.21", "futures-timer", "kvdb", - "lru 0.7.5", + "lru 0.7.7", "merlin", "parity-scale-codec", "polkadot-node-jaeger", @@ -7264,7 +7279,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "futures 0.3.21", @@ -7284,7 +7299,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "fatality", @@ -7303,7 +7318,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7318,7 +7333,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7336,7 +7351,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7351,7 +7366,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7368,12 +7383,12 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "fatality", "futures 0.3.21", "kvdb", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7387,7 +7402,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7404,7 +7419,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "fatality", @@ -7422,7 +7437,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "always-assert", "assert_matches", @@ -7453,7 +7468,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7469,7 +7484,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7486,7 +7501,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-std", "lazy_static", @@ -7504,7 +7519,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bs58", "futures 0.3.21", @@ -7523,7 +7538,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "derive_more", @@ -7544,7 +7559,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7566,7 +7581,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7576,7 +7591,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "futures 0.3.21", @@ -7594,7 +7609,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "derive_more", "futures 0.3.21", @@ -7613,7 +7628,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "derive_more", @@ -7621,7 +7636,7 @@ dependencies = [ "futures 0.3.21", "itertools", "kvdb", - "lru 0.7.5", + "lru 0.7.7", "parity-db", "parity-scale-codec", "parity-util-mem", @@ -7646,11 +7661,11 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "futures 0.3.21", "futures-timer", - "lru 0.7.5", + "lru 0.7.7", "orchestra", "parity-util-mem", "parking_lot 0.12.1", @@ -7668,7 +7683,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "derive_more", "frame-support", @@ -7762,7 +7777,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7777,7 +7792,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitvec", "frame-system", @@ -7807,7 +7822,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7839,7 +7854,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-primitives", "bitvec", @@ -7924,7 +7939,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-primitives", "bitvec", @@ -7971,7 +7986,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "polkadot-primitives", @@ -7983,7 +7998,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bs58", "parity-scale-codec", @@ -7995,7 +8010,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "bitflags", "bitvec", @@ -8038,7 +8053,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "async-trait", "beefy-gadget", @@ -8049,7 +8064,7 @@ dependencies = [ "kusama-runtime", "kvdb", "kvdb-rocksdb", - "lru 0.7.5", + "lru 0.7.7", "pallet-babe", "pallet-im-online", "pallet-staking", @@ -8141,7 +8156,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8162,7 +8177,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8172,7 +8187,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8197,7 +8212,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-primitives", "bitvec", @@ -8258,7 +8273,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-benchmarking", "frame-system", @@ -8403,7 +8418,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8853,7 +8868,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8981,7 +8996,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9058,7 +9073,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "polkadot-primitives", @@ -9228,7 +9243,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "sp-core", @@ -9239,7 +9254,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9266,7 +9281,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9289,7 +9304,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9305,7 +9320,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9322,7 +9337,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9333,7 +9348,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "chrono", "clap 3.1.18", @@ -9372,7 +9387,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "fnv", "futures 0.3.21", @@ -9400,7 +9415,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "hash-db", "kvdb", @@ -9425,7 +9440,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9449,7 +9464,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9478,7 +9493,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "fork-tree", @@ -9521,7 +9536,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9543,7 +9558,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9556,7 +9571,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -9581,7 +9596,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "sc-client-api", "sp-authorship", @@ -9592,10 +9607,10 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "lazy_static", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "parking_lot 0.12.1", "sc-executor-common", @@ -9619,7 +9634,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "environmental", "parity-scale-codec", @@ -9636,7 +9651,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "parity-scale-codec", @@ -9651,7 +9666,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9669,7 +9684,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "ahash", "async-trait", @@ -9709,7 +9724,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9730,7 +9745,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9747,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "hex", @@ -9762,7 +9777,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "asynchronous-codec", @@ -9780,7 +9795,7 @@ dependencies = [ "linked-hash-map", "linked_hash_set", "log", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "parking_lot 0.12.1", "pin-project 1.0.10", @@ -9814,7 +9829,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "libp2p", @@ -9827,14 +9842,14 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "ahash", "futures 0.3.21", "futures-timer", "libp2p", "log", - "lru 0.7.5", + "lru 0.7.7", "sc-network", "sp-runtime", "substrate-prometheus-endpoint", @@ -9844,7 +9859,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "libp2p", @@ -9864,7 +9879,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "bitflags", "either", @@ -9872,7 +9887,7 @@ dependencies = [ "futures 0.3.21", "libp2p", "log", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "prost 0.10.3", "prost-build", @@ -9893,7 +9908,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "bytes", "fnv", @@ -9921,7 +9936,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "libp2p", @@ -9934,7 +9949,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9943,7 +9958,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "hash-db", @@ -9973,7 +9988,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9996,7 +10011,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10009,7 +10024,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "directories", @@ -10074,7 +10089,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "parity-scale-codec", @@ -10088,7 +10103,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10107,7 +10122,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "libc", @@ -10126,7 +10141,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "chrono", "futures 0.3.21", @@ -10144,7 +10159,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "ansi_term", "atty", @@ -10175,7 +10190,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10186,7 +10201,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10213,7 +10228,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "log", @@ -10226,7 +10241,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10665,7 +10680,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "enumn", "parity-scale-codec", @@ -10741,7 +10756,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "hash-db", "log", @@ -10758,7 +10773,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "blake2", "proc-macro-crate", @@ -10770,7 +10785,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10783,7 +10798,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "integer-sqrt", "num-traits", @@ -10798,7 +10813,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10811,7 +10826,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "parity-scale-codec", @@ -10823,7 +10838,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "sp-api", @@ -10835,11 +10850,11 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "log", - "lru 0.7.5", + "lru 0.7.7", "parity-scale-codec", "parking_lot 0.12.1", "sp-api", @@ -10853,7 +10868,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -10872,7 +10887,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "parity-scale-codec", @@ -10890,7 +10905,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "merlin", @@ -10913,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10927,7 +10942,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10940,7 +10955,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "base58", "bitflags", @@ -10986,7 +11001,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "blake2", "byteorder", @@ -11000,7 +11015,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro2", "quote", @@ -11011,7 +11026,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11020,7 +11035,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro2", "quote", @@ -11030,7 +11045,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "environmental", "parity-scale-codec", @@ -11041,7 +11056,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "finality-grandpa", "log", @@ -11059,7 +11074,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11073,7 +11088,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "hash-db", @@ -11098,7 +11113,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "lazy_static", "sp-core", @@ -11109,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -11126,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "thiserror", "zstd", @@ -11135,7 +11150,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "parity-scale-codec", @@ -11150,7 +11165,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11164,7 +11179,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "sp-api", "sp-core", @@ -11174,7 +11189,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "backtrace", "lazy_static", @@ -11184,7 +11199,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "rustc-hash", "serde", @@ -11194,7 +11209,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "either", "hash256-std-hasher", @@ -11216,7 +11231,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11233,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "Inflector", "proc-macro-crate", @@ -11245,7 +11260,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "parity-scale-codec", @@ -11259,7 +11274,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "serde", "serde_json", @@ -11268,7 +11283,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11282,7 +11297,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11293,7 +11308,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "hash-db", "log", @@ -11315,12 +11330,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11333,7 +11348,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "log", "sp-core", @@ -11346,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures-timer", @@ -11362,7 +11377,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "sp-std", @@ -11374,7 +11389,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "sp-api", "sp-runtime", @@ -11383,7 +11398,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "log", @@ -11399,7 +11414,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "hash-db", "memory-db", @@ -11415,7 +11430,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11432,7 +11447,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11443,7 +11458,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "impl-trait-for-tuples", "log", @@ -11722,7 +11737,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "platforms", ] @@ -11730,7 +11745,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11751,7 +11766,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures-util", "hyper", @@ -11764,7 +11779,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "jsonrpsee", "log", @@ -11785,7 +11800,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "async-trait", "futures 0.3.21", @@ -11811,7 +11826,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11821,7 +11836,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11832,11 +11847,12 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", + "filetime", "sp-maybe-compressed-blob", "strum 0.23.0", "tempfile", @@ -11939,7 +11955,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "polkadot-primitives", @@ -12128,6 +12144,17 @@ dependencies = [ "webpki", ] +[[package]] +name = "tokio-stream" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +dependencies = [ + "futures-core", + "pin-project-lite 0.2.7", + "tokio", +] + [[package]] name = "tokio-util" version = "0.6.9" @@ -12217,7 +12244,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12228,7 +12255,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12246,7 +12273,7 @@ dependencies = [ "ahash", "lazy_static", "log", - "lru 0.7.5", + "lru 0.7.7", "tracing-core", ] @@ -12357,7 +12384,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#323eecd2de38b9631d9c162997261e43c886828c" +source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12938,7 +12965,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "beefy-primitives", "bitvec", @@ -13026,7 +13053,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "polkadot-primitives", @@ -13267,7 +13294,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13280,7 +13307,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-support", "frame-system", @@ -13300,7 +13327,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "frame-benchmarking", "frame-support", @@ -13318,7 +13345,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#3946b81a237992445ac566cbd7c6291bda7321a7" +source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 994ca86f91..efa5472ebc 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -22,5 +22,5 @@ parking_lot = "0.12.1" derive_more = "0.99.2" async-trait = "0.1.56" thiserror = "1.0.31" -jsonrpsee-core = "0.13.1" +jsonrpsee-core = "0.14.0" parity-scale-codec = "3.1.5" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 3a4f57db70..d7b6009dc9 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -23,7 +23,7 @@ futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.5" parking_lot = "0.12.1" -jsonrpsee = { version = "0.13.1", features = ["ws-client"] } +jsonrpsee = { version = "0.14.0", features = ["ws-client"] } tracing = "0.1.34" async-trait = "0.1.56" url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index f4ccbe786f..6ee398d132 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -20,7 +20,7 @@ log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.137", features = ["derive"] } hex-literal = "0.3.4" -jsonrpsee = { version = "0.13.1", features = ["server"] } +jsonrpsee = { version = "0.14.0", features = ["server"] } # Local parachain-template-runtime = { path = "../runtime" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index f000b70978..4c2224821c 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -27,7 +27,7 @@ statemint-runtime = { path = "../parachains/runtimes/assets/statemint" } statemine-runtime = { path = "../parachains/runtimes/assets/statemine" } westmint-runtime = { path = "../parachains/runtimes/assets/westmint" } contracts-rococo-runtime = { path = "../parachains/runtimes/contracts/contracts-rococo" } -jsonrpsee = { version = "0.13", features = ["server"] } +jsonrpsee = { version = "0.14.0", features = ["server"] } parachains-common = { path = "../parachains/common" } # Substrate diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index e2c59224d2..a51df91b2d 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -12,7 +12,7 @@ path = "src/main.rs" async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } -jsonrpsee = { version = "0.13.1", features = ["server"] } +jsonrpsee = { version = "0.14.0", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } From ae5e6d4c4d8163e231cab5b41bf0516a687efbd5 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Wed, 15 Jun 2022 22:58:52 +0200 Subject: [PATCH 112/238] Bounded ping pallet (#1333) * Bounded ping pallet * cargo fmt --- parachains/pallets/ping/src/lib.rs | 44 ++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/parachains/pallets/ping/src/lib.rs b/parachains/pallets/ping/src/lib.rs index 52a300b329..9d325d9145 100644 --- a/parachains/pallets/ping/src/lib.rs +++ b/parachains/pallets/ping/src/lib.rs @@ -20,6 +20,7 @@ use cumulus_pallet_xcm::{ensure_sibling_para, Origin as CumulusOrigin}; use cumulus_primitives_core::ParaId; +use frame_support::{parameter_types, BoundedVec}; use frame_system::Config as SystemConfig; use sp_runtime::traits::Saturating; use sp_std::prelude::*; @@ -27,6 +28,11 @@ use xcm::latest::prelude::*; pub use pallet::*; +parameter_types! { + const MaxParachains: u32 = 100; + const MaxPayloadSize: u32 = 1024; +} + #[frame_support::pallet] pub mod pallet { use super::*; @@ -35,7 +41,6 @@ pub mod pallet { #[pallet::pallet] #[pallet::generate_store(pub(super) trait Store)] - #[pallet::without_storage_info] pub struct Pallet(_); /// The module configuration trait. @@ -55,7 +60,11 @@ pub mod pallet { /// The target parachains to ping. #[pallet::storage] - pub(super) type Targets = StorageValue<_, Vec<(ParaId, Vec)>, ValueQuery>; + pub(super) type Targets = StorageValue< + _, + BoundedVec<(ParaId, BoundedVec), MaxParachains>, + ValueQuery, + >; /// The total number of pings sent. #[pallet::storage] @@ -79,7 +88,12 @@ pub mod pallet { } #[pallet::error] - pub enum Error {} + pub enum Error { + /// Too many parachains have been added as a target. + TooManyTargets, + /// The payload provided is too large, limit is 1024 bytes. + PayloadTooLarge, + } #[pallet::hooks] impl Hooks> for Pallet { @@ -96,7 +110,7 @@ pub mod pallet { require_weight_at_most: 1_000, call: ::Call::from(Call::::ping { seq, - payload: payload.clone(), + payload: payload.clone().to_vec(), }) .encode() .into(), @@ -104,10 +118,15 @@ pub mod pallet { ) { Ok(()) => { Pings::::insert(seq, n); - Self::deposit_event(Event::PingSent(para, seq, payload)); + Self::deposit_event(Event::PingSent(para, seq, payload.to_vec())); }, Err(e) => { - Self::deposit_event(Event::ErrorSendingPing(e, para, seq, payload)); + Self::deposit_event(Event::ErrorSendingPing( + e, + para, + seq, + payload.to_vec(), + )); }, } } @@ -119,7 +138,11 @@ pub mod pallet { #[pallet::weight(0)] pub fn start(origin: OriginFor, para: ParaId, payload: Vec) -> DispatchResult { ensure_root(origin)?; - Targets::::mutate(|t| t.push((para, payload))); + let payload = BoundedVec::::try_from(payload) + .map_err(|_| Error::::PayloadTooLarge)?; + Targets::::try_mutate(|t| { + t.try_push((para, payload)).map_err(|_| Error::::TooManyTargets) + })?; Ok(()) } @@ -131,8 +154,13 @@ pub mod pallet { payload: Vec, ) -> DispatchResult { ensure_root(origin)?; + let bounded_payload = BoundedVec::::try_from(payload) + .map_err(|_| Error::::PayloadTooLarge)?; for _ in 0..count { - Targets::::mutate(|t| t.push((para, payload.clone()))); + Targets::::try_mutate(|t| { + t.try_push((para, bounded_payload.clone())) + .map_err(|_| Error::::TooManyTargets) + })?; } Ok(()) } From e857bc957f8363389bd8a1617a708cd1a87ac7cc Mon Sep 17 00:00:00 2001 From: ZhiYong Date: Thu, 16 Jun 2022 10:43:16 +0800 Subject: [PATCH 113/238] Companion for substrate#11618 (#1367) * Companion for substrate#11618 * update lockfile for {"polkadot", "substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 518 +++++++++--------- parachain-template/runtime/src/lib.rs | 3 +- .../runtimes/assets/statemine/src/lib.rs | 3 +- .../runtimes/assets/statemint/src/lib.rs | 3 +- .../runtimes/assets/westmint/src/lib.rs | 3 +- .../contracts/contracts-rococo/src/lib.rs | 3 +- .../testing/rococo-parachain/src/lib.rs | 3 +- test/runtime/src/lib.rs | 1 + 8 files changed, 272 insertions(+), 265 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2b0bc9b1ad..f5238838f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "beefy-primitives", "fnv", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -495,12 +495,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +754,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +771,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "hash-db", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +804,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2808,7 +2808,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", ] @@ -2826,7 +2826,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -2848,7 +2848,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "Inflector", "chrono", @@ -2899,7 +2899,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2910,7 +2910,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -2954,7 +2954,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "bitflags", "frame-metadata", @@ -2984,7 +2984,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2996,7 +2996,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3008,7 +3008,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro2", "quote", @@ -3018,7 +3018,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "log", @@ -3035,7 +3035,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -3050,7 +3050,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "sp-api", @@ -3059,7 +3059,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "sp-api", @@ -3928,7 +3928,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-primitives", "bitvec", @@ -4020,7 +4020,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "polkadot-primitives", @@ -5356,7 +5356,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "dyn-clonable", @@ -5372,7 +5372,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "expander 0.0.6", "itertools", @@ -5410,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -5427,7 +5427,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5441,7 +5441,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -5457,7 +5457,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -5473,7 +5473,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -5488,7 +5488,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5512,7 +5512,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5532,7 +5532,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5547,7 +5547,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "beefy-primitives", "frame-support", @@ -5563,7 +5563,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5586,7 +5586,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5604,7 +5604,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5621,7 +5621,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5643,7 +5643,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5664,7 +5664,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5709,7 +5709,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5726,7 +5726,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "bitflags", "frame-benchmarking", @@ -5753,7 +5753,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "bitflags", "parity-scale-codec", @@ -5768,7 +5768,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro2", "quote", @@ -5778,7 +5778,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5795,7 +5795,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5808,7 +5808,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5824,7 +5824,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5847,7 +5847,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5860,7 +5860,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5893,7 +5893,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5916,7 +5916,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5932,7 +5932,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5952,7 +5952,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5969,7 +5969,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -5986,7 +5986,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6004,7 +6004,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6019,7 +6019,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6034,7 +6034,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6051,7 +6051,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6070,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6087,7 +6087,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6110,7 +6110,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6126,7 +6126,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6141,7 +6141,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6155,7 +6155,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6170,7 +6170,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6186,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6207,7 +6207,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6223,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6237,7 +6237,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6260,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6271,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "sp-arithmetic", @@ -6280,7 +6280,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6309,7 +6309,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6327,7 +6327,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6346,7 +6346,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-support", "frame-system", @@ -6362,7 +6362,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6377,7 +6377,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6388,7 +6388,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6405,7 +6405,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6420,7 +6420,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6436,7 +6436,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-benchmarking", "frame-support", @@ -6451,7 +6451,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "frame-system", @@ -6469,7 +6469,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-benchmarking", "frame-support", @@ -6982,7 +6982,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -6997,7 +6997,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "polkadot-node-network-protocol", @@ -7011,7 +7011,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "derive_more", "fatality", @@ -7034,7 +7034,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "fatality", "futures 0.3.21", @@ -7055,7 +7055,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "clap 3.1.18", "frame-benchmarking-cli", @@ -7080,7 +7080,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7120,7 +7120,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "always-assert", "fatality", @@ -7141,7 +7141,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7154,7 +7154,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "derive_more", "fatality", @@ -7177,7 +7177,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7191,7 +7191,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7211,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "always-assert", "async-trait", @@ -7232,7 +7232,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "parity-scale-codec", @@ -7250,7 +7250,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "derive_more", @@ -7279,7 +7279,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "futures 0.3.21", @@ -7299,7 +7299,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "fatality", @@ -7318,7 +7318,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7333,7 +7333,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "futures 0.3.21", @@ -7351,7 +7351,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "polkadot-node-subsystem", @@ -7366,7 +7366,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7383,7 +7383,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "fatality", "futures 0.3.21", @@ -7402,7 +7402,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "futures 0.3.21", @@ -7419,7 +7419,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "fatality", @@ -7437,7 +7437,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "always-assert", "assert_matches", @@ -7468,7 +7468,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "polkadot-node-primitives", @@ -7484,7 +7484,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "memory-lru", @@ -7501,7 +7501,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-std", "lazy_static", @@ -7519,7 +7519,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bs58", "futures 0.3.21", @@ -7538,7 +7538,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "derive_more", @@ -7559,7 +7559,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bounded-vec", "futures 0.3.21", @@ -7581,7 +7581,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7591,7 +7591,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "futures 0.3.21", @@ -7609,7 +7609,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "derive_more", "futures 0.3.21", @@ -7628,7 +7628,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "derive_more", @@ -7661,7 +7661,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "futures 0.3.21", "futures-timer", @@ -7683,7 +7683,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "derive_more", "frame-support", @@ -7777,7 +7777,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7792,7 +7792,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitvec", "frame-system", @@ -7822,7 +7822,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7854,7 +7854,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-primitives", "bitvec", @@ -7939,7 +7939,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-primitives", "bitvec", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "polkadot-primitives", @@ -7998,7 +7998,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bs58", "parity-scale-codec", @@ -8010,7 +8010,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "bitflags", "bitvec", @@ -8053,7 +8053,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "async-trait", "beefy-gadget", @@ -8156,7 +8156,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8177,7 +8177,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8187,7 +8187,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8212,7 +8212,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-primitives", "bitvec", @@ -8273,7 +8273,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-benchmarking", "frame-system", @@ -8418,7 +8418,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8868,7 +8868,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8996,7 +8996,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9073,7 +9073,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "polkadot-primitives", @@ -9243,7 +9243,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "sp-core", @@ -9254,7 +9254,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -9281,7 +9281,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "futures-timer", @@ -9304,7 +9304,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9320,7 +9320,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9337,7 +9337,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9348,7 +9348,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "chrono", "clap 3.1.18", @@ -9387,7 +9387,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "fnv", "futures 0.3.21", @@ -9415,7 +9415,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "hash-db", "kvdb", @@ -9440,7 +9440,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -9464,7 +9464,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -9493,7 +9493,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "fork-tree", @@ -9536,7 +9536,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -9558,7 +9558,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9571,7 +9571,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -9596,7 +9596,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "sc-client-api", "sp-authorship", @@ -9607,7 +9607,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9634,7 +9634,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "environmental", "parity-scale-codec", @@ -9651,7 +9651,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "parity-scale-codec", @@ -9666,7 +9666,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9684,7 +9684,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "ahash", "async-trait", @@ -9724,7 +9724,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "finality-grandpa", "futures 0.3.21", @@ -9745,7 +9745,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "ansi_term", "futures 0.3.21", @@ -9762,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "hex", @@ -9777,7 +9777,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "asynchronous-codec", @@ -9829,7 +9829,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "libp2p", @@ -9842,7 +9842,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "ahash", "futures 0.3.21", @@ -9859,7 +9859,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "libp2p", @@ -9879,7 +9879,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "bitflags", "either", @@ -9908,7 +9908,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "bytes", "fnv", @@ -9936,7 +9936,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "libp2p", @@ -9949,7 +9949,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9958,7 +9958,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "hash-db", @@ -9988,7 +9988,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10011,7 +10011,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "jsonrpsee", @@ -10024,7 +10024,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "directories", @@ -10089,7 +10089,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "parity-scale-codec", @@ -10103,7 +10103,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10122,7 +10122,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "libc", @@ -10141,7 +10141,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "chrono", "futures 0.3.21", @@ -10159,7 +10159,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "ansi_term", "atty", @@ -10190,7 +10190,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10201,7 +10201,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10228,7 +10228,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "log", @@ -10241,7 +10241,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "futures-timer", @@ -10680,7 +10680,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "enumn", "parity-scale-codec", @@ -10756,7 +10756,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "hash-db", "log", @@ -10773,7 +10773,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "blake2", "proc-macro-crate", @@ -10785,7 +10785,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -10798,7 +10798,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "integer-sqrt", "num-traits", @@ -10813,7 +10813,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -10826,7 +10826,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "parity-scale-codec", @@ -10838,7 +10838,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "sp-api", @@ -10850,7 +10850,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "log", @@ -10868,7 +10868,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -10887,7 +10887,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "parity-scale-codec", @@ -10905,7 +10905,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "merlin", @@ -10928,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -10942,7 +10942,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -10955,7 +10955,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "base58", "bitflags", @@ -11001,7 +11001,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "blake2", "byteorder", @@ -11015,7 +11015,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro2", "quote", @@ -11026,7 +11026,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11035,7 +11035,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro2", "quote", @@ -11045,7 +11045,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "environmental", "parity-scale-codec", @@ -11056,7 +11056,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "finality-grandpa", "log", @@ -11074,7 +11074,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11088,7 +11088,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "hash-db", @@ -11113,7 +11113,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "lazy_static", "sp-core", @@ -11124,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -11141,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "thiserror", "zstd", @@ -11150,7 +11150,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "parity-scale-codec", @@ -11165,7 +11165,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -11179,7 +11179,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "sp-api", "sp-core", @@ -11189,7 +11189,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "backtrace", "lazy_static", @@ -11199,7 +11199,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "rustc-hash", "serde", @@ -11209,7 +11209,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "either", "hash256-std-hasher", @@ -11231,7 +11231,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11248,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "Inflector", "proc-macro-crate", @@ -11260,7 +11260,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "parity-scale-codec", @@ -11274,7 +11274,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "serde", "serde_json", @@ -11283,7 +11283,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -11297,7 +11297,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "scale-info", @@ -11308,7 +11308,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "hash-db", "log", @@ -11330,12 +11330,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11348,7 +11348,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "log", "sp-core", @@ -11361,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures-timer", @@ -11377,7 +11377,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "sp-std", @@ -11389,7 +11389,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "sp-api", "sp-runtime", @@ -11398,7 +11398,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "log", @@ -11414,7 +11414,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "hash-db", "memory-db", @@ -11430,7 +11430,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11447,7 +11447,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11458,7 +11458,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "impl-trait-for-tuples", "log", @@ -11737,7 +11737,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "platforms", ] @@ -11745,7 +11745,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.21", @@ -11766,7 +11766,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures-util", "hyper", @@ -11779,7 +11779,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "jsonrpsee", "log", @@ -11800,7 +11800,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "async-trait", "futures 0.3.21", @@ -11826,7 +11826,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "futures 0.3.21", "substrate-test-utils-derive", @@ -11836,7 +11836,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11847,7 +11847,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "ansi_term", "build-helper", @@ -11955,7 +11955,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "polkadot-primitives", @@ -12244,7 +12244,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12255,7 +12255,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12384,7 +12384,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9d055d55b310373b17076b9ed079a5a9b878bdb" +source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "clap 3.1.18", "jsonrpsee", @@ -12965,7 +12965,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "beefy-primitives", "bitvec", @@ -13053,7 +13053,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "polkadot-primitives", @@ -13294,7 +13294,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13307,7 +13307,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-support", "frame-system", @@ -13327,7 +13327,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "frame-benchmarking", "frame-support", @@ -13345,7 +13345,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#537145e51d5f2ec2bdd12c12ee564eb4d9224fb5" +source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachain-template/runtime/src/lib.rs b/parachain-template/runtime/src/lib.rs index 7429b832c9..a4aecb880c 100644 --- a/parachain-template/runtime/src/lib.rs +++ b/parachain-template/runtime/src/lib.rs @@ -354,6 +354,7 @@ parameter_types! { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; type WeightToFee = WeightToFee; type LengthToFee = ConstantMultiplier; @@ -475,7 +476,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 11, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, // Collator support. The order of these 4 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index 49834bcd98..4bdb45601c 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -201,6 +201,7 @@ parameter_types! { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter>; type WeightToFee = WeightToFee; @@ -556,7 +557,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 11, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, // Collator support. the order of these 5 are important and shall not change. diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index e7100dfb88..f58a6821cf 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -231,6 +231,7 @@ parameter_types! { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter>; type WeightToFee = WeightToFee; @@ -586,7 +587,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 11, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, // Collator support. the order of these 5 are important and shall not change. diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index c8946668e6..234357c634 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -199,6 +199,7 @@ parameter_types! { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter>; type WeightToFee = WeightToFee; @@ -546,7 +547,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 11, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, // Collator support. the order of these 5 are important and shall not change. diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index b6d28cf81b..e8639269fe 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -211,6 +211,7 @@ impl pallet_balances::Config for Runtime { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter>; type WeightToFee = WeightToFee; @@ -330,7 +331,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 11, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, // Collator support. The order of these 5 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 6fd21f98ce..ec86567217 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -240,6 +240,7 @@ parameter_types! { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; type WeightToFee = IdentityFee; type LengthToFee = ConstantMultiplier; @@ -519,7 +520,7 @@ construct_runtime! { System: frame_system::{Pallet, Call, Storage, Config, Event}, Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, Sudo: pallet_sudo::{Pallet, Call, Storage, Config, Event}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event}, ParachainSystem: cumulus_pallet_parachain_system::{ Pallet, Call, Config, Storage, Inherent, Event, ValidateUnsigned, diff --git a/test/runtime/src/lib.rs b/test/runtime/src/lib.rs index a28855bace..73246dd317 100644 --- a/test/runtime/src/lib.rs +++ b/test/runtime/src/lib.rs @@ -244,6 +244,7 @@ parameter_types! { } impl pallet_transaction_payment::Config for Runtime { + type Event = Event; type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; type WeightToFee = IdentityFee; type LengthToFee = ConstantMultiplier; From 49fc743a7e61944f539dd9d4495d17f8cbe17c0c Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Thu, 16 Jun 2022 19:36:19 +0200 Subject: [PATCH 114/238] Companion for paritytech/substrate#11631 (#1363) --- parachains/runtimes/assets/westmint/src/xcm_config.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/parachains/runtimes/assets/westmint/src/xcm_config.rs b/parachains/runtimes/assets/westmint/src/xcm_config.rs index 06a75423b5..6aec071de0 100644 --- a/parachains/runtimes/assets/westmint/src/xcm_config.rs +++ b/parachains/runtimes/assets/westmint/src/xcm_config.rs @@ -42,7 +42,8 @@ use xcm_executor::{traits::JustTry, XcmExecutor}; parameter_types! { pub const WestendLocation: MultiLocation = MultiLocation::parent(); - pub RelayNetwork: NetworkId = NetworkId::Named(b"Westend".to_vec()); + pub RelayNetwork: NetworkId = + NetworkId::Named(b"Westend".to_vec().try_into().expect("less than length limit; qed")); pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); pub const Local: MultiLocation = Here.into(); From 89da27601296d3a69dce97e89a1b23660bcc2996 Mon Sep 17 00:00:00 2001 From: Jun Jiang Date: Fri, 17 Jun 2022 19:40:23 +0800 Subject: [PATCH 115/238] Add upstream new args (#1379) --- client/cli/src/lib.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index a30ef306c1..3e541f98bd 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -270,6 +270,18 @@ impl sc_cli::CliConfiguration for NormalizedRunCmd { self.base.rpc_max_payload() } + fn rpc_max_request_size(&self) -> sc_cli::Result> { + Ok(self.base.rpc_max_request_size) + } + + fn rpc_max_response_size(&self) -> sc_cli::Result> { + Ok(self.base.rpc_max_response_size) + } + + fn rpc_max_subscriptions_per_connection(&self) -> sc_cli::Result> { + Ok(self.base.rpc_max_subscriptions_per_connection) + } + fn ws_max_out_buffer_capacity(&self) -> sc_cli::Result> { self.base.ws_max_out_buffer_capacity() } From 1cd2831840e9b7e8baeb8b9693532ac9e95f6084 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:28:18 +0200 Subject: [PATCH 116/238] Bump thread_local from 1.1.3 to 1.1.4 (#1380) Bumps [thread_local](https://github.com/Amanieu/thread_local-rs) from 1.1.3 to 1.1.4. - [Release notes](https://github.com/Amanieu/thread_local-rs/releases) - [Commits](https://github.com/Amanieu/thread_local-rs/compare/v1.1.3...1.1.4) --- updated-dependencies: - dependency-name: thread_local dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f5238838f9..a07c38972a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12007,9 +12007,9 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" [[package]] name = "thread_local" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" dependencies = [ "once_cell", ] From da3ae6193918990bfe432e8ef0c95eeefdbcc69a Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Fri, 17 Jun 2022 16:27:01 +0200 Subject: [PATCH 117/238] Disable beefy for inprocess relay chain node (#1382) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Disable beefy for inprocess relay chain node * Update client/relay-chain-inprocess-interface/src/lib.rs Co-authored-by: Bastian Köcher --- client/relay-chain-inprocess-interface/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index e499c5fd18..cc6f88f239 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -345,7 +345,8 @@ fn build_polkadot_full_node( config, is_collator, None, - true, + // Disable BEEFY. It should not be required by the internal relay chain node. + false, None, telemetry_worker_handle, true, From ebfa19af31b34088b125f5fa5c1b5b0291fd3d22 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 17 Jun 2022 15:47:21 +0100 Subject: [PATCH 118/238] Split chain_spec to individual chain families (#1347) * Split chain_spec to individual chain families. * cargo fmt * Replace ifs with match * Runtime::Generic variant avoiding Option --- .../src/chain_spec/contracts.rs | 279 ++++++++++ polkadot-parachain/src/chain_spec/mod.rs | 176 +++++++ polkadot-parachain/src/chain_spec/seedling.rs | 61 +++ polkadot-parachain/src/chain_spec/shell.rs | 49 ++ .../statemint.rs} | 485 +----------------- polkadot-parachain/src/command.rs | 479 +++++++++-------- 6 files changed, 803 insertions(+), 726 deletions(-) create mode 100644 polkadot-parachain/src/chain_spec/contracts.rs create mode 100644 polkadot-parachain/src/chain_spec/mod.rs create mode 100644 polkadot-parachain/src/chain_spec/seedling.rs create mode 100644 polkadot-parachain/src/chain_spec/shell.rs rename polkadot-parachain/src/{chain_spec.rs => chain_spec/statemint.rs} (54%) diff --git a/polkadot-parachain/src/chain_spec/contracts.rs b/polkadot-parachain/src/chain_spec/contracts.rs new file mode 100644 index 0000000000..de42636382 --- /dev/null +++ b/polkadot-parachain/src/chain_spec/contracts.rs @@ -0,0 +1,279 @@ +// Copyright 2019-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 . + +use crate::chain_spec::{ + get_account_id_from_seed, get_collator_keys_from_seed, Extensions, SAFE_XCM_VERSION, +}; +use cumulus_primitives_core::ParaId; +use hex_literal::hex; +use rococo_parachain_runtime::{AccountId, AuraId}; +use sc_service::ChainType; +use sp_core::{crypto::UncheckedInto, sr25519}; + +pub type ContractsRococoChainSpec = + sc_service::GenericChainSpec; + +/// No relay chain suffix because the id is the same over all relay chains. +const CONTRACTS_PARACHAIN_ID: u32 = 1002; + +/// The existential deposit is determined by the runtime "contracts-rococo". +const CONTRACTS_ROCOCO_ED: contracts_rococo_runtime::Balance = + contracts_rococo_runtime::constants::currency::EXISTENTIAL_DEPOSIT; + +pub fn contracts_rococo_development_config() -> ContractsRococoChainSpec { + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "ROC".into()); + properties.insert("tokenDecimals".into(), 12.into()); + + ContractsRococoChainSpec::from_genesis( + // Name + "Contracts on Rococo Development", + // ID + "contracts-rococo-dev", + ChainType::Development, + move || { + contracts_rococo_genesis( + // initial collators. + vec![ + ( + get_account_id_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), + ), + ( + get_account_id_from_seed::("Bob"), + get_collator_keys_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"), + ], + CONTRACTS_PARACHAIN_ID.into(), + ) + }, + Vec::new(), + None, + None, + None, + None, + Extensions { + relay_chain: "rococo-local".into(), // You MUST set this to the correct network! + para_id: CONTRACTS_PARACHAIN_ID, + }, + ) +} + +pub fn contracts_rococo_local_config() -> ContractsRococoChainSpec { + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "ROC".into()); + properties.insert("tokenDecimals".into(), 12.into()); + + ContractsRococoChainSpec::from_genesis( + // Name + "Contracts on Rococo", + // ID + "contracts-rococo-local", + ChainType::Local, + move || { + contracts_rococo_genesis( + // initial collators. + vec![ + ( + get_account_id_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), + ), + ( + get_account_id_from_seed::("Bob"), + get_collator_keys_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"), + ], + CONTRACTS_PARACHAIN_ID.into(), + ) + }, + // Bootnodes + Vec::new(), + // Telemetry + None, + // Protocol ID + None, + // Fork ID + None, + // Properties + Some(properties), + // Extensions + Extensions { + relay_chain: "rococo-local".into(), // You MUST set this to the correct network! + para_id: CONTRACTS_PARACHAIN_ID, + }, + ) +} + +pub fn contracts_rococo_config() -> ContractsRococoChainSpec { + // Give your base currency a unit name and decimal places + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("tokenSymbol".into(), "ROC".into()); + properties.insert("tokenDecimals".into(), 12.into()); + + ContractsRococoChainSpec::from_genesis( + // Name + "Contracts on Rococo", + // ID + "contracts-rococo", + ChainType::Live, + move || { + contracts_rococo_genesis( + vec![ + // 5GKFbTTgrVS4Vz1UWWHPqMZQNFWZtqo7H2KpCDyYhEL3aS26 + ( + hex!["bc09354c12c054c8f6b3da208485eacec4ac648bad348895273b37bab5a0937c"] + .into(), + hex!["bc09354c12c054c8f6b3da208485eacec4ac648bad348895273b37bab5a0937c"] + .unchecked_into(), + ), + // 5EPRJHm2GpABVWcwnAujcrhnrjFZyDGd5TwKFzkBoGgdRyv2 + ( + hex!["66be63b7bcbfb91040e5248e2d1ceb822cf219c57848c5924ffa3a1f8e67ba72"] + .into(), + hex!["66be63b7bcbfb91040e5248e2d1ceb822cf219c57848c5924ffa3a1f8e67ba72"] + .unchecked_into(), + ), + // 5GH62vrJrVZxLREcHzm2PR5uTLAT5RQMJitoztCGyaP4o3uM + ( + hex!["ba62886472a0a9f66b5e39f1469ce1c5b3d8cad6be39078daf16f111e89d1e44"] + .into(), + hex!["ba62886472a0a9f66b5e39f1469ce1c5b3d8cad6be39078daf16f111e89d1e44"] + .unchecked_into(), + ), + // 5FHfoJDLdjRYX5KXLRqMDYBbWrwHLMtti21uK4QByUoUAbJF + ( + hex!["8e97f65cda001976311df9bed39e8d0c956089093e94a75ef76fe9347a0eda7b"] + .into(), + hex!["8e97f65cda001976311df9bed39e8d0c956089093e94a75ef76fe9347a0eda7b"] + .unchecked_into(), + ), + ], + // Warning: The configuration for a production chain should not contain + // any endowed accounts here, otherwise it'll be minting extra native tokens + // from the relay chain on the parachain. + vec![ + // NOTE: Remove endowed accounts if deployed on other relay chains. + // Endowed accounts + hex!["baa78c7154c7f82d6d377177e20bcab65d327eca0086513f9964f5a0f6bdad56"].into(), + // AccountId of an account which `ink-waterfall` uses for automated testing + hex!["0e47e2344d523c3cc5c34394b0d58b9a4200e813a038e6c5a6163cc07d70b069"].into(), + ], + CONTRACTS_PARACHAIN_ID.into(), + ) + }, + // Bootnodes + vec![ + "/dns/contracts-collator-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj" + .parse() + .expect("MultiaddrWithPeerId"), + "/dns/contracts-collator-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWPEXYrz8tHU3nDtPoPw4V7ou5dzMEWSTuUj7vaWiYVAVh" + .parse() + .expect("MultiaddrWithPeerId"), + "/dns/contracts-collator-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWEVU8AFNary4nP4qEnEcwJaRuy59Wefekzdu9pKbnVEhk" + .parse() + .expect("MultiaddrWithPeerId"), + "/dns/contracts-collator-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWP6pV3ZmcXzGDjv8ZMgA6nZxfAKDxSz4VNiLx6vVCQgJX" + .parse() + .expect("MultiaddrWithPeerId"), + ], + // Telemetry + None, + // Protocol ID + None, + // Fork ID + None, + // Properties + Some(properties), + // Extensions + Extensions { relay_chain: "rococo".into(), para_id: CONTRACTS_PARACHAIN_ID }, + ) +} + +fn contracts_rococo_genesis( + invulnerables: Vec<(AccountId, AuraId)>, + endowed_accounts: Vec, + id: ParaId, +) -> contracts_rococo_runtime::GenesisConfig { + contracts_rococo_runtime::GenesisConfig { + system: contracts_rococo_runtime::SystemConfig { + code: contracts_rococo_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + balances: contracts_rococo_runtime::BalancesConfig { + balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), + }, + parachain_info: contracts_rococo_runtime::ParachainInfoConfig { parachain_id: id }, + collator_selection: contracts_rococo_runtime::CollatorSelectionConfig { + invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: CONTRACTS_ROCOCO_ED * 16, + ..Default::default() + }, + session: contracts_rococo_runtime::SessionConfig { + keys: invulnerables + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + contracts_rococo_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + // no need to pass anything to aura, in fact it will panic if we do. Session will take care + // of this. + aura: Default::default(), + aura_ext: Default::default(), + parachain_system: Default::default(), + polkadot_xcm: contracts_rococo_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + }, + sudo: contracts_rococo_runtime::SudoConfig { + key: Some( + hex!["2681a28014e7d3a5bfb32a003b3571f53c408acbc28d351d6bf58f5028c4ef14"].into(), + ), + }, + } +} diff --git a/polkadot-parachain/src/chain_spec/mod.rs b/polkadot-parachain/src/chain_spec/mod.rs new file mode 100644 index 0000000000..f5e442f5e2 --- /dev/null +++ b/polkadot-parachain/src/chain_spec/mod.rs @@ -0,0 +1,176 @@ +// Copyright 2019-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 . + +use cumulus_primitives_core::ParaId; +use hex_literal::hex; +use rococo_parachain_runtime::{AccountId, AuraId, Signature}; +use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; +use sc_service::ChainType; +use serde::{Deserialize, Serialize}; +use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public}; +use sp_runtime::traits::{IdentifyAccount, Verify}; + +pub mod contracts; +pub mod seedling; +pub mod shell; +pub mod statemint; + +/// Specialized `ChainSpec` for the normal parachain runtime. +pub type ChainSpec = + sc_service::GenericChainSpec; + +/// The default XCM version to set in genesis config. +const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; + +/// 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 get_chain_spec() -> ChainSpec { + ChainSpec::from_genesis( + "Local Testnet", + "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"), + ], + 1000.into(), + ) + }, + Vec::new(), + None, + None, + None, + None, + Extensions { relay_chain: "westend".into(), para_id: 1000 }, + ) +} + +pub fn staging_test_net() -> ChainSpec { + ChainSpec::from_genesis( + "Staging Testnet", + "staging_testnet", + ChainType::Live, + move || { + testnet_genesis( + hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into(), + vec![ + // $secret//one + hex!["aad9fa2249f87a210a0f93400b7f90e47b810c6d65caa0ca3f5af982904c2a33"] + .unchecked_into(), + // $secret//two + hex!["d47753f0cca9dd8da00c70e82ec4fc5501a69c49a5952a643d18802837c88212"] + .unchecked_into(), + ], + vec![ + hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into() + ], + 1000.into(), + ) + }, + Vec::new(), + None, + None, + None, + None, + Extensions { relay_chain: "westend".into(), para_id: 1000 }, + ) +} + +fn testnet_genesis( + root_key: AccountId, + initial_authorities: Vec, + endowed_accounts: Vec, + id: ParaId, +) -> rococo_parachain_runtime::GenesisConfig { + rococo_parachain_runtime::GenesisConfig { + system: rococo_parachain_runtime::SystemConfig { + code: rococo_parachain_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + balances: rococo_parachain_runtime::BalancesConfig { + balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), + }, + sudo: rococo_parachain_runtime::SudoConfig { key: Some(root_key) }, + parachain_info: rococo_parachain_runtime::ParachainInfoConfig { parachain_id: id }, + aura: rococo_parachain_runtime::AuraConfig { authorities: initial_authorities }, + aura_ext: Default::default(), + parachain_system: Default::default(), + polkadot_xcm: rococo_parachain_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + }, + } +} + +/// Helper function to generate a crypto pair from seed +pub fn get_public_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +/// Generate collator keys from seed. +/// +/// This function's return type must always match the session keys of the chain in tuple format. +pub fn get_collator_keys_from_seed(seed: &str) -> ::Public { + get_public_from_seed::(seed) +} diff --git a/polkadot-parachain/src/chain_spec/seedling.rs b/polkadot-parachain/src/chain_spec/seedling.rs new file mode 100644 index 0000000000..75166a1b8f --- /dev/null +++ b/polkadot-parachain/src/chain_spec/seedling.rs @@ -0,0 +1,61 @@ +// Copyright 2019-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 . + +use crate::chain_spec::{get_account_id_from_seed, Extensions}; +use cumulus_primitives_core::ParaId; +use rococo_parachain_runtime::AccountId; +use sc_service::ChainType; +use sp_core::sr25519; + +/// Specialized `ChainSpec` for the seedling parachain runtime. +pub type SeedlingChainSpec = + sc_service::GenericChainSpec; + +pub fn get_seedling_chain_spec() -> SeedlingChainSpec { + SeedlingChainSpec::from_genesis( + "Seedling Local Testnet", + "seedling_local_testnet", + ChainType::Local, + move || { + seedling_testnet_genesis( + get_account_id_from_seed::("Alice"), + 2000.into(), + ) + }, + Vec::new(), + None, + None, + None, + None, + Extensions { relay_chain: "westend".into(), para_id: 2000 }, + ) +} + +fn seedling_testnet_genesis( + root_key: AccountId, + parachain_id: ParaId, +) -> seedling_runtime::GenesisConfig { + seedling_runtime::GenesisConfig { + system: seedling_runtime::SystemConfig { + code: seedling_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + sudo: seedling_runtime::SudoConfig { key: Some(root_key) }, + parachain_info: seedling_runtime::ParachainInfoConfig { parachain_id }, + parachain_system: Default::default(), + } +} diff --git a/polkadot-parachain/src/chain_spec/shell.rs b/polkadot-parachain/src/chain_spec/shell.rs new file mode 100644 index 0000000000..bab4ee73fd --- /dev/null +++ b/polkadot-parachain/src/chain_spec/shell.rs @@ -0,0 +1,49 @@ +// Copyright 2019-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 . + +use crate::chain_spec::Extensions; +use cumulus_primitives_core::ParaId; +use sc_service::ChainType; + +/// Specialized `ChainSpec` for the shell parachain runtime. +pub type ShellChainSpec = sc_service::GenericChainSpec; + +pub fn get_shell_chain_spec() -> ShellChainSpec { + ShellChainSpec::from_genesis( + "Shell Local Testnet", + "shell_local_testnet", + ChainType::Local, + move || shell_testnet_genesis(1000.into()), + Vec::new(), + None, + None, + None, + None, + Extensions { relay_chain: "westend".into(), para_id: 1000 }, + ) +} + +fn shell_testnet_genesis(parachain_id: ParaId) -> shell_runtime::GenesisConfig { + shell_runtime::GenesisConfig { + system: shell_runtime::SystemConfig { + code: shell_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + parachain_info: shell_runtime::ParachainInfoConfig { parachain_id }, + parachain_system: Default::default(), + } +} diff --git a/polkadot-parachain/src/chain_spec.rs b/polkadot-parachain/src/chain_spec/statemint.rs similarity index 54% rename from polkadot-parachain/src/chain_spec.rs rename to polkadot-parachain/src/chain_spec/statemint.rs index 421e571a02..c8978b23a8 100644 --- a/polkadot-parachain/src/chain_spec.rs +++ b/polkadot-parachain/src/chain_spec/statemint.rs @@ -14,219 +14,15 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . +use crate::chain_spec::{ + get_account_id_from_seed, get_collator_keys_from_seed, Extensions, SAFE_XCM_VERSION, +}; use cumulus_primitives_core::ParaId; use hex_literal::hex; -use rococo_parachain_runtime::{AccountId, AuraId, Signature}; -use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; -use sc_service::ChainType; -use serde::{Deserialize, Serialize}; -use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public}; -use sp_runtime::traits::{IdentifyAccount, Verify}; - -/// Specialized `ChainSpec` for the normal parachain runtime. -pub type ChainSpec = - sc_service::GenericChainSpec; - -/// Specialized `ChainSpec` for the shell parachain runtime. -pub type ShellChainSpec = sc_service::GenericChainSpec; - -/// Specialized `ChainSpec` for the seedling parachain runtime. -pub type SeedlingChainSpec = - sc_service::GenericChainSpec; - -/// The default XCM version to set in genesis config. -const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; - -/// 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 get_chain_spec() -> ChainSpec { - ChainSpec::from_genesis( - "Local Testnet", - "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"), - ], - 1000.into(), - ) - }, - Vec::new(), - None, - None, - None, - None, - Extensions { relay_chain: "westend".into(), para_id: 1000 }, - ) -} - -pub fn get_shell_chain_spec() -> ShellChainSpec { - ShellChainSpec::from_genesis( - "Shell Local Testnet", - "shell_local_testnet", - ChainType::Local, - move || shell_testnet_genesis(1000.into()), - Vec::new(), - None, - None, - None, - None, - Extensions { relay_chain: "westend".into(), para_id: 1000 }, - ) -} - -pub fn get_seedling_chain_spec() -> SeedlingChainSpec { - SeedlingChainSpec::from_genesis( - "Seedling Local Testnet", - "seedling_local_testnet", - ChainType::Local, - move || { - seedling_testnet_genesis( - get_account_id_from_seed::("Alice"), - 2000.into(), - ) - }, - Vec::new(), - None, - None, - None, - None, - Extensions { relay_chain: "westend".into(), para_id: 2000 }, - ) -} - -pub fn staging_test_net() -> ChainSpec { - ChainSpec::from_genesis( - "Staging Testnet", - "staging_testnet", - ChainType::Live, - move || { - testnet_genesis( - hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into(), - vec![ - // $secret//one - hex!["aad9fa2249f87a210a0f93400b7f90e47b810c6d65caa0ca3f5af982904c2a33"] - .unchecked_into(), - // $secret//two - hex!["d47753f0cca9dd8da00c70e82ec4fc5501a69c49a5952a643d18802837c88212"] - .unchecked_into(), - ], - vec![ - hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into() - ], - 1000.into(), - ) - }, - Vec::new(), - None, - None, - None, - None, - Extensions { relay_chain: "westend".into(), para_id: 1000 }, - ) -} - -fn testnet_genesis( - root_key: AccountId, - initial_authorities: Vec, - endowed_accounts: Vec, - id: ParaId, -) -> rococo_parachain_runtime::GenesisConfig { - rococo_parachain_runtime::GenesisConfig { - system: rococo_parachain_runtime::SystemConfig { - code: rococo_parachain_runtime::WASM_BINARY - .expect("WASM binary was not build, please build it!") - .to_vec(), - }, - balances: rococo_parachain_runtime::BalancesConfig { - balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), - }, - sudo: rococo_parachain_runtime::SudoConfig { key: Some(root_key) }, - parachain_info: rococo_parachain_runtime::ParachainInfoConfig { parachain_id: id }, - aura: rococo_parachain_runtime::AuraConfig { authorities: initial_authorities }, - aura_ext: Default::default(), - parachain_system: Default::default(), - polkadot_xcm: rococo_parachain_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - }, - } -} - -fn shell_testnet_genesis(parachain_id: ParaId) -> shell_runtime::GenesisConfig { - shell_runtime::GenesisConfig { - system: shell_runtime::SystemConfig { - code: shell_runtime::WASM_BINARY - .expect("WASM binary was not build, please build it!") - .to_vec(), - }, - parachain_info: shell_runtime::ParachainInfoConfig { parachain_id }, - parachain_system: Default::default(), - } -} - -fn seedling_testnet_genesis( - root_key: AccountId, - parachain_id: ParaId, -) -> seedling_runtime::GenesisConfig { - seedling_runtime::GenesisConfig { - system: seedling_runtime::SystemConfig { - code: seedling_runtime::WASM_BINARY - .expect("WASM binary was not build, please build it!") - .to_vec(), - }, - sudo: seedling_runtime::SudoConfig { key: Some(root_key) }, - parachain_info: seedling_runtime::ParachainInfoConfig { parachain_id }, - parachain_system: Default::default(), - } -} - use parachains_common::{Balance as StatemintBalance, StatemintAuraId}; +use rococo_parachain_runtime::{AccountId, AuraId}; +use sc_service::ChainType; +use sp_core::{crypto::UncheckedInto, sr25519}; /// Specialized `ChainSpec` for the normal parachain runtime. pub type StatemintChainSpec = @@ -240,20 +36,6 @@ const STATEMINT_ED: StatemintBalance = statemint_runtime::constants::currency::E const STATEMINE_ED: StatemintBalance = statemine_runtime::constants::currency::EXISTENTIAL_DEPOSIT; const WESTMINT_ED: StatemintBalance = westmint_runtime::constants::currency::EXISTENTIAL_DEPOSIT; -/// Helper function to generate a crypto pair from seed -pub fn get_public_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Generate collator keys from seed. -/// -/// This function's return type must always match the session keys of the chain in tuple format. -pub fn get_collator_keys_from_seed(seed: &str) -> ::Public { - get_public_from_seed::(seed) -} - /// Generate the session keys from individual elements. /// /// The input must be a tuple of individual keys (a single arg for now since we have just one key). @@ -834,258 +616,3 @@ fn westmint_genesis( }, } } - -pub type ContractsRococoChainSpec = - sc_service::GenericChainSpec; - -/// No relay chain suffix because the id is the same over all relay chains. -const CONTRACTS_PARACHAIN_ID: u32 = 1002; - -/// The existential deposit is determined by the runtime "contracts-rococo". -const CONTRACTS_ROCOCO_ED: contracts_rococo_runtime::Balance = - contracts_rococo_runtime::constants::currency::EXISTENTIAL_DEPOSIT; - -pub fn contracts_rococo_development_config() -> ContractsRococoChainSpec { - let mut properties = sc_chain_spec::Properties::new(); - properties.insert("tokenSymbol".into(), "ROC".into()); - properties.insert("tokenDecimals".into(), 12.into()); - - ContractsRococoChainSpec::from_genesis( - // Name - "Contracts on Rococo Development", - // ID - "contracts-rococo-dev", - ChainType::Development, - move || { - contracts_rococo_genesis( - // initial collators. - vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_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"), - ], - CONTRACTS_PARACHAIN_ID.into(), - ) - }, - Vec::new(), - None, - None, - None, - None, - Extensions { - relay_chain: "rococo-local".into(), // You MUST set this to the correct network! - para_id: CONTRACTS_PARACHAIN_ID, - }, - ) -} - -pub fn contracts_rococo_local_config() -> ContractsRococoChainSpec { - let mut properties = sc_chain_spec::Properties::new(); - properties.insert("tokenSymbol".into(), "ROC".into()); - properties.insert("tokenDecimals".into(), 12.into()); - - ContractsRococoChainSpec::from_genesis( - // Name - "Contracts on Rococo", - // ID - "contracts-rococo-local", - ChainType::Local, - move || { - contracts_rococo_genesis( - // initial collators. - vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_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"), - ], - CONTRACTS_PARACHAIN_ID.into(), - ) - }, - // Bootnodes - Vec::new(), - // Telemetry - None, - // Protocol ID - None, - // Fork ID - None, - // Properties - Some(properties), - // Extensions - Extensions { - relay_chain: "rococo-local".into(), // You MUST set this to the correct network! - para_id: CONTRACTS_PARACHAIN_ID, - }, - ) -} - -pub fn contracts_rococo_config() -> ContractsRococoChainSpec { - // Give your base currency a unit name and decimal places - let mut properties = sc_chain_spec::Properties::new(); - properties.insert("tokenSymbol".into(), "ROC".into()); - properties.insert("tokenDecimals".into(), 12.into()); - - ContractsRococoChainSpec::from_genesis( - // Name - "Contracts on Rococo", - // ID - "contracts-rococo", - ChainType::Live, - move || { - contracts_rococo_genesis( - vec![ - // 5GKFbTTgrVS4Vz1UWWHPqMZQNFWZtqo7H2KpCDyYhEL3aS26 - ( - hex!["bc09354c12c054c8f6b3da208485eacec4ac648bad348895273b37bab5a0937c"] - .into(), - hex!["bc09354c12c054c8f6b3da208485eacec4ac648bad348895273b37bab5a0937c"] - .unchecked_into(), - ), - // 5EPRJHm2GpABVWcwnAujcrhnrjFZyDGd5TwKFzkBoGgdRyv2 - ( - hex!["66be63b7bcbfb91040e5248e2d1ceb822cf219c57848c5924ffa3a1f8e67ba72"] - .into(), - hex!["66be63b7bcbfb91040e5248e2d1ceb822cf219c57848c5924ffa3a1f8e67ba72"] - .unchecked_into(), - ), - // 5GH62vrJrVZxLREcHzm2PR5uTLAT5RQMJitoztCGyaP4o3uM - ( - hex!["ba62886472a0a9f66b5e39f1469ce1c5b3d8cad6be39078daf16f111e89d1e44"] - .into(), - hex!["ba62886472a0a9f66b5e39f1469ce1c5b3d8cad6be39078daf16f111e89d1e44"] - .unchecked_into(), - ), - // 5FHfoJDLdjRYX5KXLRqMDYBbWrwHLMtti21uK4QByUoUAbJF - ( - hex!["8e97f65cda001976311df9bed39e8d0c956089093e94a75ef76fe9347a0eda7b"] - .into(), - hex!["8e97f65cda001976311df9bed39e8d0c956089093e94a75ef76fe9347a0eda7b"] - .unchecked_into(), - ), - ], - // Warning: The configuration for a production chain should not contain - // any endowed accounts here, otherwise it'll be minting extra native tokens - // from the relay chain on the parachain. - vec![ - // NOTE: Remove endowed accounts if deployed on other relay chains. - // Endowed accounts - hex!["baa78c7154c7f82d6d377177e20bcab65d327eca0086513f9964f5a0f6bdad56"].into(), - // AccountId of an account which `ink-waterfall` uses for automated testing - hex!["0e47e2344d523c3cc5c34394b0d58b9a4200e813a038e6c5a6163cc07d70b069"].into(), - ], - CONTRACTS_PARACHAIN_ID.into(), - ) - }, - // Bootnodes - vec![ - "/dns/contracts-collator-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj" - .parse() - .expect("MultiaddrWithPeerId"), - "/dns/contracts-collator-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWPEXYrz8tHU3nDtPoPw4V7ou5dzMEWSTuUj7vaWiYVAVh" - .parse() - .expect("MultiaddrWithPeerId"), - "/dns/contracts-collator-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWEVU8AFNary4nP4qEnEcwJaRuy59Wefekzdu9pKbnVEhk" - .parse() - .expect("MultiaddrWithPeerId"), - "/dns/contracts-collator-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWP6pV3ZmcXzGDjv8ZMgA6nZxfAKDxSz4VNiLx6vVCQgJX" - .parse() - .expect("MultiaddrWithPeerId"), - ], - // Telemetry - None, - // Protocol ID - None, - // Fork ID - None, - // Properties - Some(properties), - // Extensions - Extensions { relay_chain: "rococo".into(), para_id: CONTRACTS_PARACHAIN_ID }, - ) -} - -fn contracts_rococo_genesis( - invulnerables: Vec<(AccountId, AuraId)>, - endowed_accounts: Vec, - id: ParaId, -) -> contracts_rococo_runtime::GenesisConfig { - contracts_rococo_runtime::GenesisConfig { - system: contracts_rococo_runtime::SystemConfig { - code: contracts_rococo_runtime::WASM_BINARY - .expect("WASM binary was not build, please build it!") - .to_vec(), - }, - balances: contracts_rococo_runtime::BalancesConfig { - balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), - }, - parachain_info: contracts_rococo_runtime::ParachainInfoConfig { parachain_id: id }, - collator_selection: contracts_rococo_runtime::CollatorSelectionConfig { - invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), - candidacy_bond: CONTRACTS_ROCOCO_ED * 16, - ..Default::default() - }, - session: contracts_rococo_runtime::SessionConfig { - keys: invulnerables - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - contracts_rococo_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - // no need to pass anything to aura, in fact it will panic if we do. Session will take care - // of this. - aura: Default::default(), - aura_ext: Default::default(), - parachain_system: Default::default(), - polkadot_xcm: contracts_rococo_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - }, - sudo: contracts_rococo_runtime::SudoConfig { - key: Some( - hex!["2681a28014e7d3a5bfb32a003b3571f53c408acbc28d351d6bf58f5028c4ef14"].into(), - ), - }, - } -} diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index daf24797b5..37dd42b0eb 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -40,54 +40,51 @@ use sp_core::hexdisplay::HexDisplay; use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; use std::{io::Write, net::SocketAddr}; -trait IdentifyChain { - fn is_shell(&self) -> bool; - fn is_seedling(&self) -> bool; - fn is_statemint(&self) -> bool; - fn is_statemine(&self) -> bool; - fn is_westmint(&self) -> bool; - fn is_contracts_rococo(&self) -> bool; +enum Runtime { + /// This is the default runtime (based on rococo) + Generic, + Shell, + Seedling, + Statemint, + Statemine, + Westmint, + ContractsRococo, } -impl IdentifyChain for dyn sc_service::ChainSpec { - fn is_shell(&self) -> bool { - self.id().starts_with("shell") - } - fn is_seedling(&self) -> bool { - self.id().starts_with("seedling") - } - fn is_statemint(&self) -> bool { - self.id().starts_with("statemint") - } - fn is_statemine(&self) -> bool { - self.id().starts_with("statemine") - } - fn is_westmint(&self) -> bool { - self.id().starts_with("westmint") - } - fn is_contracts_rococo(&self) -> bool { - self.id().starts_with("contracts-rococo") +trait ChainType { + fn runtime(&self) -> Runtime; +} + +impl ChainType for dyn ChainSpec { + fn runtime(&self) -> Runtime { + runtime(self.id()) } } -impl IdentifyChain for T { - fn is_shell(&self) -> bool { - ::is_shell(self) +use sc_chain_spec::GenericChainSpec; +impl ChainType + for GenericChainSpec +{ + fn runtime(&self) -> Runtime { + runtime(self.id()) } - fn is_seedling(&self) -> bool { - ::is_seedling(self) - } - fn is_statemint(&self) -> bool { - ::is_statemint(self) - } - fn is_statemine(&self) -> bool { - ::is_statemine(self) - } - fn is_westmint(&self) -> bool { - ::is_westmint(self) - } - fn is_contracts_rococo(&self) -> bool { - ::is_contracts_rococo(self) +} + +fn runtime(id: &str) -> Runtime { + if id.starts_with("shell") { + Runtime::Shell + } else if id.starts_with("seedling") { + Runtime::Seedling + } else if id.starts_with("statemint") { + Runtime::Statemint + } else if id.starts_with("statemine") { + Runtime::Statemine + } else if id.starts_with("westmint") { + Runtime::Westmint + } else if id.starts_with("contracts-rococo") { + Runtime::ContractsRococo + } else { + Runtime::Generic } } @@ -103,39 +100,41 @@ fn load_spec(id: &str) -> std::result::Result, St "track" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/track.json")[..], )?), - "shell" => Box::new(chain_spec::get_shell_chain_spec()), + "shell" => Box::new(chain_spec::shell::get_shell_chain_spec()), // -- Statemint - "seedling" => Box::new(chain_spec::get_seedling_chain_spec()), - "statemint-dev" => Box::new(chain_spec::statemint_development_config()), - "statemint-local" => Box::new(chain_spec::statemint_local_config()), + "seedling" => Box::new(chain_spec::seedling::get_seedling_chain_spec()), + "statemint-dev" => Box::new(chain_spec::statemint::statemint_development_config()), + "statemint-local" => Box::new(chain_spec::statemint::statemint_local_config()), // the chain spec as used for generating the upgrade genesis values - "statemint-genesis" => Box::new(chain_spec::statemint_config()), + "statemint-genesis" => Box::new(chain_spec::statemint::statemint_config()), // the shell-based chain spec as used for syncing "statemint" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/statemint.json")[..], )?), // -- Statemine - "statemine-dev" => Box::new(chain_spec::statemine_development_config()), - "statemine-local" => Box::new(chain_spec::statemine_local_config()), + "statemine-dev" => Box::new(chain_spec::statemint::statemine_development_config()), + "statemine-local" => Box::new(chain_spec::statemint::statemine_local_config()), // the chain spec as used for generating the upgrade genesis values - "statemine-genesis" => Box::new(chain_spec::statemine_config()), + "statemine-genesis" => Box::new(chain_spec::statemint::statemine_config()), // the shell-based chain spec as used for syncing "statemine" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/statemine.json")[..], )?), // -- Westmint - "westmint-dev" => Box::new(chain_spec::westmint_development_config()), - "westmint-local" => Box::new(chain_spec::westmint_local_config()), + "westmint-dev" => Box::new(chain_spec::statemint::westmint_development_config()), + "westmint-local" => Box::new(chain_spec::statemint::westmint_local_config()), // the chain spec as used for generating the upgrade genesis values - "westmint-genesis" => Box::new(chain_spec::westmint_config()), + "westmint-genesis" => Box::new(chain_spec::statemint::westmint_config()), // the shell-based chain spec as used for syncing "westmint" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/westmint.json")[..], )?), // -- Contracts on Rococo - "contracts-rococo-dev" => Box::new(chain_spec::contracts_rococo_development_config()), - "contracts-rococo-local" => Box::new(chain_spec::contracts_rococo_local_config()), - "contracts-rococo-genesis" => Box::new(chain_spec::contracts_rococo_config()), + "contracts-rococo-dev" => + Box::new(chain_spec::contracts::contracts_rococo_development_config()), + "contracts-rococo-local" => + Box::new(chain_spec::contracts::contracts_rococo_local_config()), + "contracts-rococo-genesis" => Box::new(chain_spec::contracts::contracts_rococo_config()), "contracts-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/contracts-rococo.json")[..], )?), @@ -144,20 +143,23 @@ fn load_spec(id: &str) -> std::result::Result, St // -- Loading a specific spec from disk path => { let chain_spec = chain_spec::ChainSpec::from_json_file(path.into())?; - if chain_spec.is_statemint() { - Box::new(chain_spec::StatemintChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_statemine() { - Box::new(chain_spec::StatemineChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_westmint() { - Box::new(chain_spec::WestmintChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_shell() { - Box::new(chain_spec::ShellChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_seedling() { - Box::new(chain_spec::SeedlingChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_contracts_rococo() { - Box::new(chain_spec::ContractsRococoChainSpec::from_json_file(path.into())?) - } else { - Box::new(chain_spec) + match chain_spec.runtime() { + Runtime::Statemint => Box::new( + chain_spec::statemint::StatemintChainSpec::from_json_file(path.into())?, + ), + Runtime::Statemine => Box::new( + chain_spec::statemint::StatemineChainSpec::from_json_file(path.into())?, + ), + Runtime::Westmint => + Box::new(chain_spec::statemint::WestmintChainSpec::from_json_file(path.into())?), + Runtime::Shell => + Box::new(chain_spec::shell::ShellChainSpec::from_json_file(path.into())?), + Runtime::Seedling => + Box::new(chain_spec::seedling::SeedlingChainSpec::from_json_file(path.into())?), + Runtime::ContractsRococo => Box::new( + chain_spec::contracts::ContractsRococoChainSpec::from_json_file(path.into())?, + ), + Runtime::Generic => Box::new(chain_spec), } }, }) @@ -199,20 +201,14 @@ impl SubstrateCli for Cli { } fn native_runtime_version(chain_spec: &Box) -> &'static RuntimeVersion { - if chain_spec.is_statemint() { - &statemint_runtime::VERSION - } else if chain_spec.is_statemine() { - &statemine_runtime::VERSION - } else if chain_spec.is_westmint() { - &westmint_runtime::VERSION - } else if chain_spec.is_shell() { - &shell_runtime::VERSION - } else if chain_spec.is_seedling() { - &seedling_runtime::VERSION - } else if chain_spec.is_contracts_rococo() { - &contracts_rococo_runtime::VERSION - } else { - &rococo_parachain_runtime::VERSION + match chain_spec.runtime() { + Runtime::Statemint => &statemint_runtime::VERSION, + Runtime::Statemine => &statemine_runtime::VERSION, + Runtime::Westmint => &westmint_runtime::VERSION, + Runtime::Shell => &shell_runtime::VERSION, + Runtime::Seedling => &seedling_runtime::VERSION, + Runtime::ContractsRococo => &contracts_rococo_runtime::VERSION, + Runtime::Generic => &rococo_parachain_runtime::VERSION, } } } @@ -270,26 +266,29 @@ fn extract_genesis_wasm(chain_spec: &Box) -> Result { - if $config.chain_spec.is_statemine() { - let $partials = new_partial::( - &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, - )?; - $code - } else if $config.chain_spec.is_westmint() { - let $partials = new_partial::( - &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, - )?; - $code - } else if $config.chain_spec.is_statemint() { - let $partials = new_partial::( - &$config, - crate::service::statemint_build_import_queue::<_, StatemintAuraId>, - )?; - $code - } else { - Err("The chain is not supported".into()) + match $config.chain_spec.runtime() { + Runtime::Statemine => { + let $partials = new_partial::( + &$config, + crate::service::statemint_build_import_queue::<_, AuraId>, + )?; + $code + }, + Runtime::Westmint => { + let $partials = new_partial::( + &$config, + crate::service::statemint_build_import_queue::<_, AuraId>, + )?; + $code + }, + Runtime::Statemint => { + let $partials = new_partial::( + &$config, + crate::service::statemint_build_import_queue::<_, StatemintAuraId>, + )?; + $code + }, + _ => Err("The chain is not supported".into()), } }; } @@ -297,72 +296,80 @@ macro_rules! construct_benchmark_partials { macro_rules! construct_async_run { (|$components:ident, $cli:ident, $cmd:ident, $config:ident| $( $code:tt )* ) => {{ let runner = $cli.create_runner($cmd)?; - if runner.config().chain_spec.is_westmint() { - runner.async_run(|$config| { - let $components = new_partial::( - &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) - } else if runner.config().chain_spec.is_statemine() { - runner.async_run(|$config| { - let $components = new_partial::( - &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) - } else if runner.config().chain_spec.is_statemint() { - runner.async_run(|$config| { - let $components = new_partial::( - &$config, - crate::service::statemint_build_import_queue::<_, StatemintAuraId>, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) - } else if runner.config().chain_spec.is_shell() { - runner.async_run(|$config| { - let $components = new_partial::( - &$config, - crate::service::shell_build_import_queue, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) - } else if runner.config().chain_spec.is_seedling() { - runner.async_run(|$config| { - let $components = new_partial::( - &$config, - crate::service::shell_build_import_queue, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) - } else if runner.config().chain_spec.is_contracts_rococo() { - runner.async_run(|$config| { - let $components = new_partial::( - &$config, - crate::service::contracts_rococo_build_import_queue, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) - } else { - runner.async_run(|$config| { - let $components = new_partial::< - rococo_parachain_runtime::RuntimeApi, - _ - >( - &$config, - crate::service::rococo_parachain_build_import_queue, - )?; - let task_manager = $components.task_manager; - { $( $code )* }.map(|v| (v, task_manager)) - }) + match runner.config().chain_spec.runtime() { + Runtime::Westmint => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::statemint_build_import_queue::<_, AuraId>, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, + Runtime::Statemine => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::statemint_build_import_queue::<_, AuraId>, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, + Runtime::Statemint => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::statemint_build_import_queue::<_, StatemintAuraId>, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, + Runtime::Shell => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::shell_build_import_queue, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, + Runtime::Seedling => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::shell_build_import_queue, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, + Runtime::ContractsRococo => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::contracts_rococo_build_import_queue, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, + Runtime::Generic => { + runner.async_run(|$config| { + let $components = new_partial::< + rococo_parachain_runtime::RuntimeApi, + _ + >( + &$config, + crate::service::rococo_parachain_build_import_queue, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + } } }} } @@ -472,16 +479,13 @@ pub fn run() -> Result<()> { match cmd { BenchmarkCmd::Pallet(cmd) => if cfg!(feature = "runtime-benchmarks") { - runner.sync_run(|config| { - if config.chain_spec.is_statemine() { - cmd.run::(config) - } else if config.chain_spec.is_westmint() { - cmd.run::(config) - } else if config.chain_spec.is_statemint() { - cmd.run::(config) - } else { - Err("Chain doesn't support benchmarking".into()) - } + runner.sync_run(|config| match config.chain_spec.runtime() { + Runtime::Statemine => + cmd.run::(config), + Runtime::Westmint => cmd.run::(config), + Runtime::Statemint => + cmd.run::(config), + _ => Err("Chain doesn't support benchmarking".into()), }) } else { Err("Benchmarking wasn't enabled when building the node. \ @@ -513,24 +517,20 @@ pub fn run() -> Result<()> { TaskManager::new(runner.config().tokio_handle.clone(), *registry) .map_err(|e| format!("Error: {:?}", e))?; - if runner.config().chain_spec.is_statemine() { - runner.async_run(|config| { + match runner.config().chain_spec.runtime() { + Runtime::Statemine => runner.async_run(|config| { Ok((cmd.run::(config), task_manager)) - }) - } else if runner.config().chain_spec.is_westmint() { - runner.async_run(|config| { + }), + Runtime::Westmint => runner.async_run(|config| { Ok((cmd.run::(config), task_manager)) - }) - } else if runner.config().chain_spec.is_statemint() { - runner.async_run(|config| { + }), + Runtime::Statemint => runner.async_run(|config| { Ok((cmd.run::(config), task_manager)) - }) - } else if runner.config().chain_spec.is_shell() { - runner.async_run(|config| { + }), + Runtime::Shell => runner.async_run(|config| { Ok((cmd.run::(config), task_manager)) - }) - } else { - Err("Chain doesn't support try-runtime".into()) + }), + _ => Err("Chain doesn't support try-runtime".into()), } } else { Err("Try-runtime must be enabled by `--features try-runtime`.".into()) @@ -584,16 +584,46 @@ pub fn run() -> Result<()> { info!("Parachain genesis state: {}", genesis_state); info!("Is collating: {}", if config.role.is_authority() { "yes" } else { "no" }); - if config.chain_spec.is_statemint() { - crate::service::start_statemint_node::< + match config.chain_spec.runtime() { + Runtime::Statemint => crate::service::start_statemint_node::< statemint_runtime::RuntimeApi, StatemintAuraId, >(config, polkadot_config, collator_options, id, hwbench) .await .map(|r| r.0) - .map_err(Into::into) - } else if config.chain_spec.is_statemine() { - crate::service::start_statemint_node::( + .map_err(Into::into), + Runtime::Statemine => crate::service::start_statemint_node::< + statemine_runtime::RuntimeApi, + AuraId, + >(config, polkadot_config, collator_options, id, hwbench) + .await + .map(|r| r.0) + .map_err(Into::into), + Runtime::Westmint => crate::service::start_statemint_node::< + westmint_runtime::RuntimeApi, + AuraId, + >(config, polkadot_config, collator_options, id, hwbench) + .await + .map(|r| r.0) + .map_err(Into::into), + Runtime::Shell => + crate::service::start_shell_node::( + config, + polkadot_config, + collator_options, + id, + hwbench, + ) + .await + .map(|r| r.0) + .map_err(Into::into), + Runtime::Seedling => crate::service::start_shell_node::< + seedling_runtime::RuntimeApi, + >(config, polkadot_config, collator_options, id, hwbench) + .await + .map(|r| r.0) + .map_err(Into::into), + Runtime::ContractsRococo => crate::service::start_contracts_rococo_node( config, polkadot_config, collator_options, @@ -602,9 +632,8 @@ pub fn run() -> Result<()> { ) .await .map(|r| r.0) - .map_err(Into::into) - } else if config.chain_spec.is_westmint() { - crate::service::start_statemint_node::( + .map_err(Into::into), + Runtime::Generic => crate::service::start_rococo_parachain_node( config, polkadot_config, collator_options, @@ -613,51 +642,7 @@ pub fn run() -> Result<()> { ) .await .map(|r| r.0) - .map_err(Into::into) - } else if config.chain_spec.is_shell() { - crate::service::start_shell_node::( - config, - polkadot_config, - collator_options, - id, - hwbench, - ) - .await - .map(|r| r.0) - .map_err(Into::into) - } else if config.chain_spec.is_seedling() { - crate::service::start_shell_node::( - config, - polkadot_config, - collator_options, - id, - hwbench, - ) - .await - .map(|r| r.0) - .map_err(Into::into) - } else if config.chain_spec.is_contracts_rococo() { - crate::service::start_contracts_rococo_node( - config, - polkadot_config, - collator_options, - id, - hwbench, - ) - .await - .map(|r| r.0) - .map_err(Into::into) - } else { - crate::service::start_rococo_parachain_node( - config, - polkadot_config, - collator_options, - id, - hwbench, - ) - .await - .map(|r| r.0) - .map_err(Into::into) + .map_err(Into::into), } }) }, From 2e52ce29e91bcf34b3003810846c576bd4396575 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jun 2022 15:05:44 +0000 Subject: [PATCH 119/238] Bump clap from 3.1.18 to 3.2.2 (#1370) * Bump clap from 3.1.18 to 3.2.2 Bumps [clap](https://github.com/clap-rs/clap) from 3.1.18 to 3.2.2. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.1.18...v3.2.2) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump clap to 3.2.5 and fix warnings Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastian Kunert --- Cargo.lock | 36 +++++++++++++++--------------- client/cli/Cargo.toml | 2 +- client/cli/src/lib.rs | 7 +++--- parachain-template/node/Cargo.toml | 2 +- parachain-template/node/src/cli.rs | 8 +++---- polkadot-parachain/Cargo.toml | 2 +- polkadot-parachain/src/cli.rs | 4 ++-- test/service/Cargo.toml | 2 +- test/service/src/cli.rs | 14 ++++++------ 9 files changed, 38 insertions(+), 39 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a07c38972a..31cf0fe764 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1084,16 +1084,16 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.18" +version = "3.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" +checksum = "d53da17d37dba964b9b3ecb5c5a1f193a2762c700e6829201e645b9381c99dc7" dependencies = [ "atty", "bitflags", "clap_derive", "clap_lex", "indexmap", - "lazy_static", + "once_cell", "strsim", "termcolor", "textwrap 0.15.0", @@ -1101,9 +1101,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.1.18" +version = "3.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" +checksum = "c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -1114,9 +1114,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613" dependencies = [ "os_str_bytes", ] @@ -1574,7 +1574,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.1.18", + "clap 3.2.5", "sc-cli", "sc-service", "url", @@ -2182,7 +2182,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.1.18", + "clap 3.2.5", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2852,7 +2852,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2 dependencies = [ "Inflector", "chrono", - "clap 3.1.18", + "clap 3.2.5", "comfy-table", "frame-benchmarking", "frame-support", @@ -5325,9 +5325,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" [[package]] name = "oorandom" @@ -6499,7 +6499,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.1.18", + "clap 3.2.5", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7057,7 +7057,7 @@ name = "polkadot-cli" version = "0.9.23" source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" dependencies = [ - "clap 3.1.18", + "clap 3.2.5", "frame-benchmarking-cli", "futures 0.3.21", "log", @@ -7703,7 +7703,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.1.18", + "clap 3.2.5", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9351,7 +9351,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ "chrono", - "clap 3.1.18", + "clap 3.2.5", "fdlimit", "futures 0.3.21", "hex", @@ -12386,7 +12386,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" dependencies = [ - "clap 3.1.18", + "clap 3.2.5", "jsonrpsee", "log", "parity-scale-codec", @@ -12418,7 +12418,7 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "digest 0.10.3", "rand 0.8.5", "static_assertions", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index f9ea950d17..4a95429e16 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.1", features = ["derive"] } +clap = { version = "3.2.5", features = ["derive", "deprecated"] } # Substrate sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index 3e541f98bd..dae8b52593 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -119,11 +119,11 @@ impl sc_cli::CliConfiguration for PurgeChainCmd { } } -fn validate_relay_chain_url(arg: &str) -> Result<(), String> { +fn validate_relay_chain_url(arg: &str) -> Result { let url = Url::parse(arg).map_err(|e| e.to_string())?; if url.scheme() == "ws" { - Ok(()) + Ok(url) } else { Err(format!( "'{}' URL scheme not supported. Only websocket RPC is currently supported", @@ -148,8 +148,7 @@ pub struct RunCmd { /// EXPERIMENTAL: Specify an URL to a relay chain full node to communicate with. #[clap( long, - parse(try_from_str), - validator = validate_relay_chain_url, + value_parser = validate_relay_chain_url, conflicts_with_all = &["alice", "bob", "charlie", "dave", "eve", "ferdie", "one", "two"] ) ] pub relay_chain_rpc_url: Option, diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 6ee398d132..a389328994 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -14,7 +14,7 @@ name = "parachain-collator" path = "src/main.rs" [dependencies] -clap = { version = "3.1", features = ["derive"] } +clap = { version = "3.2.5", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/parachain-template/node/src/cli.rs b/parachain-template/node/src/cli.rs index 0d36120a47..2b28e4ce80 100644 --- a/parachain-template/node/src/cli.rs +++ b/parachain-template/node/src/cli.rs @@ -47,7 +47,7 @@ pub enum Subcommand { #[derive(Debug, Parser)] pub struct ExportGenesisStateCommand { /// Output file name or stdout if unspecified. - #[clap(parse(from_os_str))] + #[clap(action)] pub output: Option, /// Write output in binary. Default is to write in hex. @@ -63,15 +63,15 @@ pub struct ExportGenesisStateCommand { #[derive(Debug, Parser)] pub struct ExportGenesisWasmCommand { /// Output file name or stdout if unspecified. - #[clap(parse(from_os_str))] + #[clap(action)] pub output: Option, /// Write output in binary. Default is to write in hex. - #[clap(short, long)] + #[clap(short, long, action)] pub raw: bool, /// The name of the chain for that the genesis wasm file should be exported. - #[clap(long)] + #[clap(long, action)] pub chain: Option, } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 4c2224821c..8b461ba6ce 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -12,7 +12,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.1", features = ["derive"] } +clap = { version = "3.2.5", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = { version = "0.3.1", features = ["compat"] } hex-literal = "0.3.4" diff --git a/polkadot-parachain/src/cli.rs b/polkadot-parachain/src/cli.rs index 31ecb8a5aa..b215a27a83 100644 --- a/polkadot-parachain/src/cli.rs +++ b/polkadot-parachain/src/cli.rs @@ -68,7 +68,7 @@ pub enum Subcommand { #[derive(Debug, Parser)] pub struct ExportGenesisStateCommand { /// Output file name or stdout if unspecified. - #[clap(parse(from_os_str))] + #[clap(action)] pub output: Option, /// Write output in binary. Default is to write in hex. @@ -84,7 +84,7 @@ pub struct ExportGenesisStateCommand { #[derive(Debug, Parser)] pub struct ExportGenesisWasmCommand { /// Output file name or stdout if unspecified. - #[clap(parse(from_os_str))] + #[clap(action)] pub output: Option, /// Write output in binary. Default is to write in hex. diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index a51df91b2d..d83f6b8a36 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -47,7 +47,7 @@ sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "mast sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } -clap = { version = "3.1", features = ["derive"] } +clap = { version = "3.2.5", features = ["derive", "deprecated"] } tracing = "0.1.25" # Polkadot diff --git a/test/service/src/cli.rs b/test/service/src/cli.rs index 13995d6ed3..14c7a3a8af 100644 --- a/test/service/src/cli.rs +++ b/test/service/src/cli.rs @@ -29,34 +29,34 @@ pub struct ExportGenesisStateCommand { pub parachain_id: u32, /// Output file name or stdout if unspecified. - #[clap(parse(from_os_str))] + #[clap(action)] pub output: Option, /// Write output in binary. Default is to write in hex. - #[clap(short, long)] + #[clap(short, long, action)] pub raw: bool, /// The name of the chain for that the genesis state should be exported. - #[clap(long)] + #[clap(long, action)] pub chain: Option, } /// Command for exporting the genesis wasm file. #[derive(Debug, Parser)] pub struct ExportGenesisWasmCommand { - #[clap(default_value_t = 2000u32)] + #[clap(default_value_t = 2000u32, action)] pub parachain_id: u32, /// Output file name or stdout if unspecified. - #[clap(parse(from_os_str))] + #[clap(action)] pub output: Option, /// Write output in binary. Default is to write in hex. - #[clap(short, long)] + #[clap(short, long, action)] pub raw: bool, /// The name of the chain for that the genesis wasm file should be exported. - #[clap(long)] + #[clap(long, action)] pub chain: Option, } #[derive(Subcommand, Debug)] From e5810bb5fd72447122ad564ea30e53bfb4c32c21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Thei=C3=9Fen?= Date: Fri, 17 Jun 2022 21:32:39 +0200 Subject: [PATCH 120/238] Remove redundant binary specification (#1303) * Remove redundant binary specification * Update polkadot-launch config Co-authored-by: joepetrowski --- parachain-template/node/Cargo.toml | 4 ---- parachain-template/polkadot-launch/config.json | 2 +- polkadot-parachain/Cargo.toml | 4 ---- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index a389328994..a4f4fab47f 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -9,10 +9,6 @@ repository = "https://github.com/paritytech/cumulus/" edition = "2021" build = "build.rs" -[[bin]] -name = "parachain-collator" -path = "src/main.rs" - [dependencies] clap = { version = "3.2.5", features = ["derive"] } derive_more = "0.99.2" diff --git a/parachain-template/polkadot-launch/config.json b/parachain-template/polkadot-launch/config.json index 4dd6ebf7cf..f03f983a49 100644 --- a/parachain-template/polkadot-launch/config.json +++ b/parachain-template/polkadot-launch/config.json @@ -17,7 +17,7 @@ }, "parachains": [ { - "bin": "../target/release/parachain-collator", + "bin": "../target/release/polkadot-parachain", "id": "200", "balance": "1000000000000000000000", "nodes": [ diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 8b461ba6ce..6549d4968f 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -6,10 +6,6 @@ build = "build.rs" edition = "2021" description = "Runs a polkadot parachain node which could be a collator." -[[bin]] -name = "polkadot-parachain" -path = "src/main.rs" - [dependencies] async-trait = "0.1.56" clap = { version = "3.2.5", features = ["derive", "deprecated"] } From 7d0ae5ea3a93b63620eba8cf6d970233735a87fd Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Sat, 18 Jun 2022 21:33:52 +0800 Subject: [PATCH 121/238] Move `ExportGenesisStateCommand` and `ExportGenesisWasmCommand` to cumulus-client-cli (#1325) * Move ExportGenesisStateCommand and ExportGenesisWasmCommand to cumulus-client-cli Signed-off-by: koushiro * Remove useless Signed-off-by: koushiro * Use shared_params.chain Signed-off-by: koushiro --- Cargo.lock | 6 +- client/cli/Cargo.toml | 6 +- client/cli/src/lib.rs | 186 ++++++++++++++++++++++--- client/service/Cargo.toml | 2 - client/service/src/genesis.rs | 55 -------- client/service/src/lib.rs | 2 - parachain-template/node/src/cli.rs | 58 ++------ parachain-template/node/src/command.rs | 93 ++++--------- polkadot-parachain/src/cli.rs | 65 ++------- polkadot-parachain/src/command.rs | 97 ++++--------- test/service/Cargo.toml | 4 +- test/service/src/cli.rs | 101 +++++++------- test/service/src/genesis.rs | 7 +- test/service/src/main.rs | 84 +++-------- 14 files changed, 332 insertions(+), 434 deletions(-) delete mode 100644 client/service/src/genesis.rs diff --git a/Cargo.lock b/Cargo.lock index 31cf0fe764..ebc3e148fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1575,8 +1575,12 @@ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ "clap 3.2.5", + "parity-scale-codec", + "sc-chain-spec", "sc-cli", "sc-service", + "sp-core", + "sp-runtime", "url", ] @@ -1758,11 +1762,9 @@ dependencies = [ "cumulus-client-pov-recovery", "cumulus-primitives-core", "cumulus-relay-chain-interface", - "parity-scale-codec", "parking_lot 0.12.1", "polkadot-overseer", "polkadot-primitives", - "sc-chain-spec", "sc-client-api", "sc-consensus", "sc-consensus-babe", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 4a95429e16..0c1c909db1 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -6,8 +6,12 @@ edition = "2021" [dependencies] clap = { version = "3.2.5", features = ["derive", "deprecated"] } +codec = { package = "parity-scale-codec", version = "3.0.0" } +url = "2.2.2" # Substrate sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } -url = "2.2.2" +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index dae8b52593..cab0723ad0 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -18,20 +18,28 @@ #![warn(missing_docs)] -use clap::Parser; -use sc_service::{ - config::{PrometheusConfig, TelemetryEndpoints}, - BasePath, TransactionPoolOptions, -}; use std::{ fs, io::{self, Write}, net::SocketAddr, + path::PathBuf, +}; + +use codec::Encode; +use sc_chain_spec::ChainSpec; +use sc_service::{ + config::{PrometheusConfig, TelemetryEndpoints}, + BasePath, TransactionPoolOptions, +}; +use sp_core::hexdisplay::HexDisplay; +use sp_runtime::{ + traits::{Block as BlockT, Hash as HashT, Header as HeaderT, Zero}, + StateVersion, }; use url::Url; /// The `purge-chain` command used to remove the whole chain: the parachain and the relay chain. -#[derive(Debug, Parser)] +#[derive(Debug, clap::Parser)] pub struct PurgeChainCmd { /// The base struct of the purge-chain command. #[clap(flatten)] @@ -119,6 +127,140 @@ impl sc_cli::CliConfiguration for PurgeChainCmd { } } +/// Command for exporting the genesis state of the parachain +#[derive(Debug, clap::Parser)] +pub struct ExportGenesisStateCommand { + /// Output file name or stdout if unspecified. + #[clap(action)] + pub output: Option, + + /// Write output in binary. Default is to write in hex. + #[clap(short, long)] + pub raw: bool, + + #[allow(missing_docs)] + #[clap(flatten)] + pub shared_params: sc_cli::SharedParams, +} + +impl ExportGenesisStateCommand { + /// Run the export-genesis-state command + pub fn run( + &self, + chain_spec: &dyn ChainSpec, + genesis_state_version: StateVersion, + ) -> sc_cli::Result<()> { + let block: Block = generate_genesis_block(chain_spec, genesis_state_version)?; + let raw_header = block.header().encode(); + let output_buf = if self.raw { + raw_header + } else { + format!("0x{:?}", HexDisplay::from(&block.header().encode())).into_bytes() + }; + + if let Some(output) = &self.output { + fs::write(output, output_buf)?; + } else { + io::stdout().write_all(&output_buf)?; + } + + Ok(()) + } +} + +/// Generate the genesis block from a given ChainSpec. +pub fn generate_genesis_block( + chain_spec: &dyn ChainSpec, + genesis_state_version: StateVersion, +) -> Result { + let storage = chain_spec.build_storage()?; + + let child_roots = storage.children_default.iter().map(|(sk, child_content)| { + let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( + child_content.data.clone().into_iter().collect(), + genesis_state_version, + ); + (sk.clone(), state_root.encode()) + }); + let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( + storage.top.clone().into_iter().chain(child_roots).collect(), + genesis_state_version, + ); + + let extrinsics_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( + Vec::new(), + sp_runtime::StateVersion::V0, + ); + + Ok(Block::new( + <::Header as HeaderT>::new( + Zero::zero(), + extrinsics_root, + state_root, + Default::default(), + Default::default(), + ), + Default::default(), + )) +} + +impl sc_cli::CliConfiguration for ExportGenesisStateCommand { + fn shared_params(&self) -> &sc_cli::SharedParams { + &self.shared_params + } +} + +/// Command for exporting the genesis wasm file. +#[derive(Debug, clap::Parser)] +pub struct ExportGenesisWasmCommand { + /// Output file name or stdout if unspecified. + #[clap(action)] + pub output: Option, + + /// Write output in binary. Default is to write in hex. + #[clap(short, long)] + pub raw: bool, + + #[allow(missing_docs)] + #[clap(flatten)] + pub shared_params: sc_cli::SharedParams, +} + +impl ExportGenesisWasmCommand { + /// Run the export-genesis-state command + pub fn run(&self, chain_spec: &dyn ChainSpec) -> sc_cli::Result<()> { + let raw_wasm_blob = extract_genesis_wasm(chain_spec)?; + let output_buf = if self.raw { + raw_wasm_blob + } else { + format!("0x{:?}", HexDisplay::from(&raw_wasm_blob)).into_bytes() + }; + + if let Some(output) = &self.output { + fs::write(output, output_buf)?; + } else { + io::stdout().write_all(&output_buf)?; + } + + Ok(()) + } +} + +/// Extract the genesis code from a given ChainSpec. +pub fn extract_genesis_wasm(chain_spec: &dyn ChainSpec) -> sc_cli::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()) +} + +impl sc_cli::CliConfiguration for ExportGenesisWasmCommand { + fn shared_params(&self) -> &sc_cli::SharedParams { + &self.shared_params + } +} + fn validate_relay_chain_url(arg: &str) -> Result { let url = Url::parse(arg).map_err(|e| e.to_string())?; @@ -133,7 +275,7 @@ fn validate_relay_chain_url(arg: &str) -> Result { } /// The `run` command used to run a node. -#[derive(Debug, Parser)] +#[derive(Debug, clap::Parser)] pub struct RunCmd { /// The cumulus RunCmd inherents from sc_cli's #[clap(flatten)] @@ -154,21 +296,6 @@ pub struct RunCmd { pub relay_chain_rpc_url: Option, } -/// Options only relevant for collator nodes -#[derive(Clone, Debug)] -pub struct CollatorOptions { - /// Location of relay chain full node - pub relay_chain_rpc_url: Option, -} - -/// A non-redundant version of the `RunCmd` that sets the `validator` field when the -/// original `RunCmd` had the `collator` field. -/// This is how we make `--collator` imply `--validator`. -pub struct NormalizedRunCmd { - /// The cumulus RunCmd inherents from sc_cli's - pub base: sc_cli::RunCmd, -} - impl RunCmd { /// Create a [`NormalizedRunCmd`] which merges the `collator` cli argument into `validator` to have only one. pub fn normalize(&self) -> NormalizedRunCmd { @@ -185,6 +312,21 @@ impl RunCmd { } } +/// Options only relevant for collator nodes +#[derive(Clone, Debug)] +pub struct CollatorOptions { + /// Location of relay chain full node + pub relay_chain_rpc_url: Option, +} + +/// A non-redundant version of the `RunCmd` that sets the `validator` field when the +/// original `RunCmd` had the `collator` field. +/// This is how we make `--collator` imply `--validator`. +pub struct NormalizedRunCmd { + /// The cumulus RunCmd inherents from sc_cli's + pub base: sc_cli::RunCmd, +} + impl sc_cli::CliConfiguration for NormalizedRunCmd { fn shared_params(&self) -> &sc_cli::SharedParams { self.base.shared_params() diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 2d7eba613e..687aa0f95a 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -5,12 +5,10 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -codec = { package = "parity-scale-codec", version = "3.0.0" } parking_lot = "0.12.1" tracing = "0.1.34" # Substrate -sc-chain-spec = { 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-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/service/src/genesis.rs b/client/service/src/genesis.rs deleted file mode 100644 index b2d1686f51..0000000000 --- a/client/service/src/genesis.rs +++ /dev/null @@ -1,55 +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 . - -use codec::Encode; -use sc_chain_spec::ChainSpec; -use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, Zero}; - -/// Generate the genesis block from a given ChainSpec. -pub fn generate_genesis_block( - chain_spec: &Box, - genesis_state_version: sp_runtime::StateVersion, -) -> Result { - let storage = chain_spec.build_storage()?; - - let child_roots = storage.children_default.iter().map(|(sk, child_content)| { - let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( - child_content.data.clone().into_iter().collect(), - genesis_state_version, - ); - (sk.clone(), state_root.encode()) - }); - let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( - storage.top.clone().into_iter().chain(child_roots).collect(), - genesis_state_version, - ); - - let extrinsics_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( - Vec::new(), - sp_runtime::StateVersion::V0, - ); - - Ok(Block::new( - <::Header as HeaderT>::new( - Zero::zero(), - extrinsics_root, - state_root, - Default::default(), - Default::default(), - ), - Default::default(), - )) -} diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index 63ac689429..77adcb5c41 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -41,8 +41,6 @@ use sp_runtime::{ }; use std::{sync::Arc, time::Duration}; -pub mod genesis; - /// Parameters given to [`start_collator`]. pub struct StartCollatorParams<'a, Block: BlockT, BS, Client, RCInterface, Spawner, IQ> { pub block_status: Arc, diff --git a/parachain-template/node/src/cli.rs b/parachain-template/node/src/cli.rs index 2b28e4ce80..949ce489d6 100644 --- a/parachain-template/node/src/cli.rs +++ b/parachain-template/node/src/cli.rs @@ -1,18 +1,8 @@ -use crate::chain_spec; -use clap::Parser; use std::path::PathBuf; /// Sub-commands supported by the collator. #[derive(Debug, clap::Subcommand)] pub enum Subcommand { - /// Export the genesis state of the parachain. - #[clap(name = "export-genesis-state")] - ExportGenesisState(ExportGenesisStateCommand), - - /// Export the genesis wasm of the parachain. - #[clap(name = "export-genesis-wasm")] - ExportGenesisWasm(ExportGenesisWasmCommand), - /// Build a chain specification. BuildSpec(sc_cli::BuildSpecCmd), @@ -28,11 +18,17 @@ pub enum Subcommand { /// Import blocks. ImportBlocks(sc_cli::ImportBlocksCmd), + /// Revert the chain to a previous state. + Revert(sc_cli::RevertCmd), + /// Remove the whole chain. PurgeChain(cumulus_client_cli::PurgeChainCmd), - /// Revert the chain to a previous state. - Revert(sc_cli::RevertCmd), + /// Export the genesis state of the parachain. + ExportGenesisState(cumulus_client_cli::ExportGenesisStateCommand), + + /// Export the genesis wasm of the parachain. + ExportGenesisWasm(cumulus_client_cli::ExportGenesisWasmCommand), /// Sub-commands concerned with benchmarking. /// The pallet benchmarking moved to the `pallet` sub-command. @@ -43,39 +39,7 @@ pub enum Subcommand { TryRuntime(try_runtime_cli::TryRuntimeCmd), } -/// Command for exporting the genesis state of the parachain -#[derive(Debug, Parser)] -pub struct ExportGenesisStateCommand { - /// Output file name or stdout if unspecified. - #[clap(action)] - pub output: Option, - - /// Write output in binary. Default is to write in hex. - #[clap(short, long)] - pub raw: bool, - - /// The name of the chain for that the genesis state should be exported. - #[clap(long)] - pub chain: Option, -} - -/// Command for exporting the genesis wasm file. -#[derive(Debug, Parser)] -pub struct ExportGenesisWasmCommand { - /// Output file name or stdout if unspecified. - #[clap(action)] - pub output: Option, - - /// Write output in binary. Default is to write in hex. - #[clap(short, long, action)] - pub raw: bool, - - /// The name of the chain for that the genesis wasm file should be exported. - #[clap(long, action)] - pub chain: Option, -} - -#[derive(Debug, Parser)] +#[derive(Debug, clap::Parser)] #[clap( propagate_version = true, args_conflicts_with_subcommands = true, @@ -121,9 +85,9 @@ impl RelayChainCli { para_config: &sc_service::Configuration, relay_chain_args: impl Iterator, ) -> Self { - let extension = chain_spec::Extensions::try_get(&*para_config.chain_spec); + let extension = crate::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("polkadot")); - Self { base_path, chain_id, base: polkadot_cli::RunCmd::parse_from(relay_chain_args) } + Self { base_path, chain_id, base: clap::Parser::parse_from(relay_chain_args) } } } diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index 47691d41e0..eedc6e952f 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -1,10 +1,7 @@ -use crate::{ - chain_spec, - cli::{Cli, RelayChainCli, Subcommand}, - service::{new_partial, TemplateRuntimeExecutor}, -}; +use std::net::SocketAddr; + use codec::Encode; -use cumulus_client_service::genesis::generate_genesis_block; +use cumulus_client_cli::generate_genesis_block; use cumulus_primitives_core::ParaId; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; @@ -19,9 +16,14 @@ use sc_service::{ }; use sp_core::hexdisplay::HexDisplay; use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; -use std::{io::Write, net::SocketAddr}; -fn load_spec(id: &str) -> std::result::Result, String> { +use crate::{ + chain_spec, + cli::{Cli, RelayChainCli, Subcommand}, + service::{new_partial, TemplateRuntimeExecutor}, +}; + +fn load_spec(id: &str) -> std::result::Result, String> { Ok(match id { "dev" => Box::new(chain_spec::development_config()), "template-rococo" => Box::new(chain_spec::local_testnet_config()), @@ -106,16 +108,6 @@ impl SubstrateCli for RelayChainCli { } } -#[allow(clippy::borrowed_box)] -fn extract_genesis_wasm(chain_spec: &Box) -> 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)?; @@ -163,6 +155,11 @@ pub fn run() -> Result<()> { Ok(cmd.run(components.client, components.import_queue)) }) }, + Some(Subcommand::Revert(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.backend, None)) + }) + }, Some(Subcommand::PurgeChain(cmd)) => { let runner = cli.create_runner(cmd)?; @@ -182,54 +179,20 @@ pub fn run() -> Result<()> { cmd.run(config, polkadot_config) }) }, - Some(Subcommand::Revert(cmd)) => { - construct_async_run!(|components, cli, cmd, config| { - Ok(cmd.run(components.client, components.backend, None)) + Some(Subcommand::ExportGenesisState(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?; + let state_version = Cli::native_runtime_version(&spec).state_version(); + cmd.run::(&*spec, state_version) }) }, - Some(Subcommand::ExportGenesisState(params)) => { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); - let _ = builder.init(); - - let spec = load_spec(¶ms.chain.clone().unwrap_or_default())?; - let state_version = Cli::native_runtime_version(&spec).state_version(); - let block: Block = generate_genesis_block(&spec, state_version)?; - 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::ExportGenesisWasm(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?; + cmd.run(&*spec) + }) }, Some(Subcommand::Benchmark(cmd)) => { let runner = cli.create_runner(cmd)?; @@ -311,7 +274,7 @@ pub fn run() -> Result<()> { AccountIdConversion::::into_account_truncating(&id); let state_version = Cli::native_runtime_version(&config.chain_spec).state_version(); - let block: Block = generate_genesis_block(&config.chain_spec, state_version) + let block: Block = generate_genesis_block(&*config.chain_spec, state_version) .map_err(|e| format!("{:?}", e))?; let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); diff --git a/polkadot-parachain/src/cli.rs b/polkadot-parachain/src/cli.rs index b215a27a83..c99e545983 100644 --- a/polkadot-parachain/src/cli.rs +++ b/polkadot-parachain/src/cli.rs @@ -14,21 +14,14 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use crate::chain_spec; -use clap::Parser; -use sc_cli; use std::path::PathBuf; /// Sub-commands supported by the collator. #[derive(Debug, clap::Subcommand)] pub enum Subcommand { - /// Export the genesis state of the parachain. - #[clap(name = "export-genesis-state")] - ExportGenesisState(ExportGenesisStateCommand), - - /// Export the genesis wasm of the parachain. - #[clap(name = "export-genesis-wasm")] - ExportGenesisWasm(ExportGenesisWasmCommand), + /// Key management CLI utilities + #[clap(subcommand)] + Key(sc_cli::KeySubcommand), /// Build a chain specification. BuildSpec(sc_cli::BuildSpecCmd), @@ -45,11 +38,17 @@ pub enum Subcommand { /// Import blocks. ImportBlocks(sc_cli::ImportBlocksCmd), + /// Revert the chain to a previous state. + Revert(sc_cli::RevertCmd), + /// Remove the whole chain. PurgeChain(cumulus_client_cli::PurgeChainCmd), - /// Revert the chain to a previous state. - Revert(sc_cli::RevertCmd), + /// Export the genesis state of the parachain. + ExportGenesisState(cumulus_client_cli::ExportGenesisStateCommand), + + /// Export the genesis wasm of the parachain. + ExportGenesisWasm(cumulus_client_cli::ExportGenesisWasmCommand), /// Sub-commands concerned with benchmarking. /// The pallet benchmarking moved to the `pallet` sub-command. @@ -58,45 +57,9 @@ pub enum Subcommand { /// Try some testing command against a specified runtime state. TryRuntime(try_runtime_cli::TryRuntimeCmd), - - /// Key management CLI utilities - #[clap(subcommand)] - Key(sc_cli::KeySubcommand), } -/// Command for exporting the genesis state of the parachain -#[derive(Debug, Parser)] -pub struct ExportGenesisStateCommand { - /// Output file name or stdout if unspecified. - #[clap(action)] - pub output: Option, - - /// Write output in binary. Default is to write in hex. - #[clap(short, long)] - pub raw: bool, - - /// The name of the chain for that the genesis state should be exported. - #[clap(long)] - pub chain: Option, -} - -/// Command for exporting the genesis wasm file. -#[derive(Debug, Parser)] -pub struct ExportGenesisWasmCommand { - /// Output file name or stdout if unspecified. - #[clap(action)] - pub output: Option, - - /// Write output in binary. Default is to write in hex. - #[clap(short, long)] - pub raw: bool, - - /// The name of the chain for that the genesis wasm file should be exported. - #[clap(long)] - pub chain: Option, -} - -#[derive(Debug, Parser)] +#[derive(Debug, clap::Parser)] #[clap( propagate_version = true, args_conflicts_with_subcommands = true, @@ -142,9 +105,9 @@ impl RelayChainCli { para_config: &sc_service::Configuration, relay_chain_args: impl Iterator, ) -> Self { - let extension = chain_spec::Extensions::try_get(&*para_config.chain_spec); + let extension = crate::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("polkadot")); - Self { base_path, chain_id, base: polkadot_cli::RunCmd::parse_from(relay_chain_args) } + Self { base_path, chain_id, base: clap::Parser::parse_from(relay_chain_args) } } } diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index 37dd42b0eb..5e46b6c706 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -14,16 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use crate::{ - chain_spec, - cli::{Cli, RelayChainCli, Subcommand}, - service::{ - new_partial, Block, ShellRuntimeExecutor, StatemineRuntimeExecutor, - StatemintRuntimeExecutor, WestmintRuntimeExecutor, - }, -}; +use std::net::SocketAddr; + use codec::Encode; -use cumulus_client_service::genesis::generate_genesis_block; +use cumulus_client_cli::generate_genesis_block; use cumulus_primitives_core::ParaId; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; @@ -38,7 +32,15 @@ use sc_service::{ }; use sp_core::hexdisplay::HexDisplay; use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; -use std::{io::Write, net::SocketAddr}; + +use crate::{ + chain_spec, + cli::{Cli, RelayChainCli, Subcommand}, + service::{ + new_partial, Block, ShellRuntimeExecutor, StatemineRuntimeExecutor, + StatemintRuntimeExecutor, WestmintRuntimeExecutor, + }, +}; enum Runtime { /// This is the default runtime (based on rococo) @@ -88,7 +90,7 @@ fn runtime(id: &str) -> Runtime { } } -fn load_spec(id: &str) -> std::result::Result, String> { +fn load_spec(id: &str) -> std::result::Result, String> { Ok(match id { "staging" => Box::new(chain_spec::staging_test_net()), "tick" => Box::new(chain_spec::ChainSpec::from_json_bytes( @@ -254,15 +256,6 @@ impl SubstrateCli for RelayChainCli { } } -fn extract_genesis_wasm(chain_spec: &Box) -> 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()) -} - /// Creates partial components for the runtimes that are supported by the benchmarks. macro_rules! construct_benchmark_partials { ($config:expr, |$partials:ident| $code:expr) => { @@ -403,6 +396,9 @@ pub fn run() -> Result<()> { Ok(cmd.run(components.client, components.import_queue)) }) }, + Some(Subcommand::Revert(cmd)) => construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.backend, None)) + }), Some(Subcommand::PurgeChain(cmd)) => { let runner = cli.create_runner(cmd)?; @@ -424,53 +420,20 @@ pub fn run() -> Result<()> { cmd.run(config, polkadot_config) }) }, - Some(Subcommand::Revert(cmd)) => construct_async_run!(|components, cli, cmd, config| { - Ok(cmd.run(components.client, components.backend, None)) - }), - Some(Subcommand::ExportGenesisState(params)) => { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); - let _ = builder.init(); - - let spec = load_spec(¶ms.chain.clone().unwrap_or_default())?; - let state_version = Cli::native_runtime_version(&spec).state_version(); - - let block: crate::service::Block = generate_genesis_block(&spec, state_version)?; - 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::ExportGenesisState(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?; + let state_version = Cli::native_runtime_version(&spec).state_version(); + cmd.run::(&*spec, state_version) + }) }, - 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::ExportGenesisWasm(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?; + cmd.run(&*spec) + }) }, Some(Subcommand::Benchmark(cmd)) => { let runner = cli.create_runner(cmd)?; @@ -570,7 +533,7 @@ pub fn run() -> Result<()> { let state_version = Cli::native_runtime_version(&config.chain_spec).state_version(); let block: crate::service::Block = - generate_genesis_block(&config.chain_spec, state_version) + generate_genesis_block(&*config.chain_spec, state_version) .map_err(|e| format!("{:?}", e))?; let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index d83f6b8a36..7b851aa317 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,6 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" +clap = { version = "3.2.5", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } @@ -17,6 +18,7 @@ parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.137", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } +tracing = "0.1.25" url = "2.2.2" # Substrate @@ -47,8 +49,6 @@ sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "mast sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } -clap = { version = "3.2.5", features = ["derive", "deprecated"] } -tracing = "0.1.25" # Polkadot polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master" } diff --git a/test/service/src/cli.rs b/test/service/src/cli.rs index 14c7a3a8af..b6bd256851 100644 --- a/test/service/src/cli.rs +++ b/test/service/src/cli.rs @@ -14,64 +14,16 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use clap::{Parser, Subcommand}; +use std::{net::SocketAddr, path::PathBuf}; + use polkadot_service::{ChainSpec, ParaId, PrometheusConfig}; use sc_cli::{ CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result as CliResult, RuntimeVersion, SharedParams, SubstrateCli, }; use sc_service::BasePath; -use std::{net::SocketAddr, path::PathBuf}; -#[derive(Debug, Parser)] -pub struct ExportGenesisStateCommand { - #[clap(default_value_t = 2000u32)] - pub parachain_id: u32, - - /// Output file name or stdout if unspecified. - #[clap(action)] - pub output: Option, - - /// Write output in binary. Default is to write in hex. - #[clap(short, long, action)] - pub raw: bool, - - /// The name of the chain for that the genesis state should be exported. - #[clap(long, action)] - pub chain: Option, -} - -/// Command for exporting the genesis wasm file. -#[derive(Debug, Parser)] -pub struct ExportGenesisWasmCommand { - #[clap(default_value_t = 2000u32, action)] - pub parachain_id: u32, - - /// Output file name or stdout if unspecified. - #[clap(action)] - pub output: Option, - - /// Write output in binary. Default is to write in hex. - #[clap(short, long, action)] - pub raw: bool, - - /// The name of the chain for that the genesis wasm file should be exported. - #[clap(long, action)] - pub chain: Option, -} -#[derive(Subcommand, Debug)] -pub enum Commands { - #[clap(name = "export-genesis-wasm")] - ExportGenesisWasm(ExportGenesisWasmCommand), - - #[clap(name = "export-genesis-state")] - ExportGenesisState(ExportGenesisStateCommand), - - /// Build a chain specification. - BuildSpec(sc_cli::BuildSpecCmd), -} - -#[derive(Debug, Parser)] +#[derive(Debug, clap::Parser)] #[clap( version, propagate_version = true, @@ -80,7 +32,7 @@ pub enum Commands { )] pub struct TestCollatorCli { #[clap(subcommand)] - pub subcommand: Option, + pub subcommand: Option, #[clap(flatten)] pub run: cumulus_client_cli::RunCmd, @@ -99,6 +51,49 @@ pub struct TestCollatorCli { pub disable_block_announcements: bool, } +#[derive(Debug, clap::Subcommand)] +pub enum Subcommand { + /// Build a chain specification. + BuildSpec(sc_cli::BuildSpecCmd), + + /// Export the genesis state of the parachain. + ExportGenesisState(ExportGenesisStateCommand), + + /// Export the genesis wasm of the parachain. + ExportGenesisWasm(ExportGenesisWasmCommand), +} + +#[derive(Debug, clap::Parser)] +pub struct ExportGenesisStateCommand { + #[clap(default_value_t = 2000u32)] + pub parachain_id: u32, + + #[clap(flatten)] + pub base: cumulus_client_cli::ExportGenesisStateCommand, +} + +impl CliConfiguration for ExportGenesisStateCommand { + fn shared_params(&self) -> &SharedParams { + &self.base.shared_params + } +} + +/// Command for exporting the genesis wasm file. +#[derive(Debug, clap::Parser)] +pub struct ExportGenesisWasmCommand { + #[clap(default_value_t = 2000u32)] + pub parachain_id: u32, + + #[clap(flatten)] + pub base: cumulus_client_cli::ExportGenesisWasmCommand, +} + +impl CliConfiguration for ExportGenesisWasmCommand { + fn shared_params(&self) -> &SharedParams { + &self.base.shared_params + } +} + #[derive(Debug)] pub struct RelayChainCli { /// The actual relay chain cli object. @@ -118,7 +113,7 @@ impl RelayChainCli { relay_chain_args: impl Iterator, ) -> Self { let base_path = para_config.base_path.as_ref().map(|x| x.path().join("polkadot")); - Self { base_path, chain_id: None, base: polkadot_cli::RunCmd::parse_from(relay_chain_args) } + Self { base_path, chain_id: None, base: clap::Parser::parse_from(relay_chain_args) } } } diff --git a/test/service/src/genesis.rs b/test/service/src/genesis.rs index c3e0147882..b472c98a7a 100644 --- a/test/service/src/genesis.rs +++ b/test/service/src/genesis.rs @@ -15,7 +15,7 @@ // along with Cumulus. If not, see . use codec::Encode; -use cumulus_client_service::genesis::generate_genesis_block; +use cumulus_client_cli::generate_genesis_block; use cumulus_primitives_core::ParaId; use cumulus_test_runtime::Block; use polkadot_primitives::v2::HeadData; @@ -23,9 +23,8 @@ use sp_runtime::traits::Block as BlockT; /// Returns the initial head data for a parachain ID. pub fn initial_head_data(para_id: ParaId) -> HeadData { - let spec = Box::new(crate::chain_spec::get_chain_spec(para_id)); - let block: Block = - generate_genesis_block(&(spec as Box<_>), sp_runtime::StateVersion::V1).unwrap(); + let spec = crate::chain_spec::get_chain_spec(para_id); + let block: Block = generate_genesis_block(&spec, sp_runtime::StateVersion::V1).unwrap(); let genesis_state = block.header().encode(); genesis_state.into() } diff --git a/test/service/src/main.rs b/test/service/src/main.rs index 6bb0a3dc9b..2b9ad48f9f 100644 --- a/test/service/src/main.rs +++ b/test/service/src/main.rs @@ -13,27 +13,19 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . + mod cli; -use clap::Parser; -use cli::{Commands, RelayChainCli, TestCollatorCli}; -use cumulus_client_service::genesis::generate_genesis_block; +use std::sync::Arc; + +use cli::{RelayChainCli, Subcommand, TestCollatorCli}; +use cumulus_client_cli::generate_genesis_block; use cumulus_primitives_core::{relay_chain::v2::CollatorPair, ParaId}; use cumulus_test_service::AnnounceBlockFn; use polkadot_service::runtime_traits::AccountIdConversion; use sc_cli::{CliConfiguration, SubstrateCli}; use sp_core::{hexdisplay::HexDisplay, Encode, Pair}; use sp_runtime::traits::Block; -use std::{io::Write, sync::Arc}; - -fn extract_genesis_wasm(chain_spec: &Box) -> Result, String> { - 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()) -} pub fn wrap_announce_block() -> Box AnnounceBlockFn> { tracing::info!("Block announcements disabled."); @@ -44,59 +36,29 @@ pub fn wrap_announce_block() -> Box AnnounceBlock } fn main() -> Result<(), sc_cli::Error> { - let cli = TestCollatorCli::parse(); + let cli = TestCollatorCli::from_args(); match &cli.subcommand { - Some(Commands::BuildSpec(cmd)) => { + Some(Subcommand::BuildSpec(cmd)) => { let runner = cli.create_runner(cmd)?; runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) }, - Some(Commands::ExportGenesisState(params)) => { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); - let _ = builder.init(); - - let parachain_id = ParaId::from(params.parachain_id); - let spec = Box::new(cumulus_test_service::get_chain_spec(parachain_id)) as Box<_>; - let state_version = cumulus_test_service::runtime::VERSION.state_version(); - - let block: parachains_common::Block = generate_genesis_block(&spec, state_version)?; - 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::ExportGenesisState(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let parachain_id = ParaId::from(cmd.parachain_id); + let spec = cumulus_test_service::get_chain_spec(parachain_id); + let state_version = cumulus_test_service::runtime::VERSION.state_version(); + cmd.base.run::(&spec, state_version) + }) }, - Some(Commands::ExportGenesisWasm(params)) => { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_profiling(sc_tracing::TracingReceiver::Log, ""); - let _ = builder.init(); - - let parachain_id = ParaId::from(params.parachain_id); - let spec = Box::new(cumulus_test_service::get_chain_spec(parachain_id)) as Box<_>; - let raw_wasm_blob = extract_genesis_wasm(&spec)?; - 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::ExportGenesisWasm(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|_config| { + let parachain_id = ParaId::from(cmd.parachain_id); + let spec = cumulus_test_service::get_chain_spec(parachain_id); + cmd.base.run(&spec) + }) }, None => { let mut builder = sc_cli::LoggerBuilder::new(""); @@ -129,7 +91,7 @@ fn main() -> Result<(), sc_cli::Error> { RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); let block: parachains_common::Block = - generate_genesis_block(&config.chain_spec, state_version) + generate_genesis_block(&*config.chain_spec, state_version) .map_err(|e| format!("{:?}", e))?; let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); From 818a19873a18146cfb45ab7c1551f7a721d3c34d Mon Sep 17 00:00:00 2001 From: Squirrel Date: Sat, 18 Jun 2022 15:06:52 +0100 Subject: [PATCH 122/238] NonTransfer should be a superset of collator selection (#1385) * This should ideally be set. * Not convinced guard order is always guarenteed. * assets / uniques should not be included. * correction --- parachains/runtimes/assets/statemine/src/lib.rs | 2 ++ parachains/runtimes/assets/statemint/src/lib.rs | 2 ++ parachains/runtimes/assets/westmint/src/lib.rs | 2 ++ 3 files changed, 6 insertions(+) diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index 4bdb45601c..a7e3f0ef0d 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -377,6 +377,7 @@ impl InstanceFilter for ProxyType { ), } } + fn is_superset(&self, o: &Self) -> bool { match (self, o) { (x, y) if x == y => true, @@ -384,6 +385,7 @@ impl InstanceFilter for ProxyType { (_, ProxyType::Any) => false, (ProxyType::Assets, ProxyType::AssetOwner) => true, (ProxyType::Assets, ProxyType::AssetManager) => true, + (ProxyType::NonTransfer, ProxyType::Collator) => true, _ => false, } } diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index f58a6821cf..54acdc6435 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -407,6 +407,7 @@ impl InstanceFilter for ProxyType { ), } } + fn is_superset(&self, o: &Self) -> bool { match (self, o) { (x, y) if x == y => true, @@ -414,6 +415,7 @@ impl InstanceFilter for ProxyType { (_, ProxyType::Any) => false, (ProxyType::Assets, ProxyType::AssetOwner) => true, (ProxyType::Assets, ProxyType::AssetManager) => true, + (ProxyType::NonTransfer, ProxyType::Collator) => true, _ => false, } } diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index 234357c634..9d1c7b9eee 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -372,6 +372,7 @@ impl InstanceFilter for ProxyType { ), } } + fn is_superset(&self, o: &Self) -> bool { match (self, o) { (x, y) if x == y => true, @@ -379,6 +380,7 @@ impl InstanceFilter for ProxyType { (_, ProxyType::Any) => false, (ProxyType::Assets, ProxyType::AssetOwner) => true, (ProxyType::Assets, ProxyType::AssetManager) => true, + (ProxyType::NonTransfer, ProxyType::Collator) => true, _ => false, } } From 094dbe1521ffbb649b4b8442e5be65d779bbf6d9 Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Sun, 19 Jun 2022 05:30:07 +0800 Subject: [PATCH 123/238] Remove futures compat feature (#1386) Signed-off-by: koushiro --- Cargo.lock | 1 - client/collator/Cargo.toml | 2 +- client/consensus/aura/Cargo.toml | 2 +- client/consensus/common/Cargo.toml | 6 +++--- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- primitives/timestamp/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 10 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ebc3e148fe..7d28f36d5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3225,7 +3225,6 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "futures 0.1.31", "futures-channel", "futures-core", "futures-io", diff --git a/client/collator/Cargo.toml b/client/collator/Cargo.toml index b6c0c4eb90..7041a4234f 100644 --- a/client/collator/Cargo.toml +++ b/client/collator/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -futures = { version = "0.3.1", features = ["compat"] } +futures = "0.3.21" parking_lot = "0.12.0" tracing = "0.1.25" diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 0af751fd54..c493595e5d 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -futures = { version = "0.3.8", features = ["compat"] } +futures = "0.3.21" tracing = "0.1.34" # Substrate diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index 3efaa4a524..e6752db095 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -6,11 +6,11 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -futures = { version = "0.3.8", features = ["compat"] } -codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -tracing = "0.1.34" async-trait = "0.1.56" +codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } dyn-clone = "1.0.5" +futures = "0.3.21" +tracing = "0.1.34" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index fae8a2a31c..6fc1e8aa79 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] async-trait = "0.1.56" -futures = { version = "0.3.8", features = ["compat"] } +futures = "0.3.21" parking_lot = "0.12.1" tracing = "0.1.34" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 9152e553d3..4f82906d4f 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } derive_more = "0.99.2" -futures = { version = "0.3.1", features = ["compat"] } +futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.1" tracing = "0.1.34" diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index b2b55124b8..ea937ef5b1 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -futures = { version = "0.3.1", features = ["compat"] } +futures = "0.3.21" futures-timer = "3.0.2" rand = "0.8.5" tracing = "0.1.34" diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 6549d4968f..67635d5fc9 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -10,7 +10,7 @@ description = "Runs a polkadot parachain node which could be a collator." async-trait = "0.1.56" clap = { version = "3.2.5", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } -futures = { version = "0.3.1", features = ["compat"] } +futures = "0.3.21" hex-literal = "0.3.4" log = "0.4.17" serde = { version = "1.0.137", features = ["derive"] } diff --git a/primitives/timestamp/Cargo.toml b/primitives/timestamp/Cargo.toml index 47ae6b6758..3b64f1bbfe 100644 --- a/primitives/timestamp/Cargo.toml +++ b/primitives/timestamp/Cargo.toml @@ -7,7 +7,7 @@ description = "Provides timestamp related functionality for parachains." [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } -futures = "0.3.5" +futures = "0.3.21" # Substrate sp-inherents = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 7b851aa317..935d4ab771 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -72,7 +72,7 @@ cumulus-test-relay-validation-worker-provider = { path = "../relay-validation-wo cumulus-test-runtime = { path = "../runtime" } [dev-dependencies] -futures = "0.3.5" +futures = "0.3.21" portpicker = "0.1.1" # Polkadot dependencies From 9bb1a50e89a60bf6e8f66a9159261c9e87805d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 20 Jun 2022 13:55:31 +0200 Subject: [PATCH 124/238] Companion: Bump syn (#1388) * Companion: Bump syn * Update Substrate & Polkadot --- Cargo.lock | 1099 ++++++++++++++++++++++++++++------------------------ 1 file changed, 594 insertions(+), 505 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7d28f36d5b..90ade69221 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -344,15 +344,6 @@ dependencies = [ "pin-project-lite 0.2.7", ] -[[package]] -name = "atomic" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" -dependencies = [ - "autocfg", -] - [[package]] name = "atomic-waker" version = "1.0.0" @@ -441,11 +432,11 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "beefy-primitives", "fnv", - "futures 0.3.21", + "futures", "futures-timer", "hex", "log", @@ -475,11 +466,11 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "beefy-gadget", "beefy-primitives", - "futures 0.3.21", + "futures", "jsonrpsee", "log", "parity-scale-codec", @@ -495,12 +486,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -690,7 +681,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-runtime", "finality-grandpa", @@ -707,7 +698,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-runtime", "frame-support", @@ -719,7 +710,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", "bp-runtime", @@ -736,7 +727,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-messages", "bp-runtime", @@ -754,7 +745,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -771,7 +762,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "hash-db", @@ -789,7 +780,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -804,7 +795,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -819,7 +810,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1121,6 +1112,15 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "cmake" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" +dependencies = [ + "cc", +] + [[package]] name = "coarsetime" version = "0.1.22" @@ -1389,7 +1389,7 @@ dependencies = [ "clap 2.34.0", "criterion-plot", "csv", - "futures 0.3.21", + "futures", "itertools", "lazy_static", "num-traits", @@ -1595,7 +1595,7 @@ dependencies = [ "cumulus-relay-chain-interface", "cumulus-test-client", "cumulus-test-runtime", - "futures 0.3.21", + "futures", "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-primitives", @@ -1621,7 +1621,7 @@ dependencies = [ "async-trait", "cumulus-client-consensus-common", "cumulus-primitives-core", - "futures 0.3.21", + "futures", "parity-scale-codec", "sc-client-api", "sc-consensus", @@ -1650,7 +1650,7 @@ dependencies = [ "cumulus-relay-chain-interface", "cumulus-test-client", "dyn-clone", - "futures 0.3.21", + "futures", "futures-timer", "parity-scale-codec", "polkadot-primitives", @@ -1673,7 +1673,7 @@ dependencies = [ "cumulus-client-consensus-common", "cumulus-primitives-core", "cumulus-relay-chain-interface", - "futures 0.3.21", + "futures", "parking_lot 0.12.1", "sc-client-api", "sc-consensus", @@ -1698,7 +1698,7 @@ dependencies = [ "cumulus-relay-chain-interface", "cumulus-test-service", "derive_more", - "futures 0.3.21", + "futures", "futures-timer", "parity-scale-codec", "parking_lot 0.12.1", @@ -1732,7 +1732,7 @@ dependencies = [ "cumulus-primitives-core", "cumulus-relay-chain-interface", "cumulus-test-service", - "futures 0.3.21", + "futures", "futures-timer", "parity-scale-codec", "polkadot-node-primitives", @@ -1990,7 +1990,7 @@ dependencies = [ "cumulus-primitives-core", "cumulus-test-client", "cumulus-test-relay-sproof-builder", - "futures 0.3.21", + "futures", "parity-scale-codec", "sp-consensus", "sp-inherents", @@ -2024,7 +2024,7 @@ dependencies = [ "cumulus-primitives-core", "cumulus-relay-chain-interface", "cumulus-test-service", - "futures 0.3.21", + "futures", "futures-timer", "parking_lot 0.12.1", "polkadot-cli", @@ -2056,7 +2056,7 @@ dependencies = [ "async-trait", "cumulus-primitives-core", "derive_more", - "futures 0.3.21", + "futures", "jsonrpsee-core", "parity-scale-codec", "parking_lot 0.12.1", @@ -2079,7 +2079,7 @@ dependencies = [ "backoff", "cumulus-primitives-core", "cumulus-relay-chain-interface", - "futures 0.3.21", + "futures", "futures-timer", "jsonrpsee", "parity-scale-codec", @@ -2200,7 +2200,7 @@ dependencies = [ "cumulus-test-runtime", "frame-system", "frame-system-rpc-runtime-api", - "futures 0.3.21", + "futures", "jsonrpsee", "pallet-transaction-payment", "parachains-common", @@ -2639,7 +2639,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.21", + "futures", ] [[package]] @@ -2761,7 +2761,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5" dependencies = [ "either", - "futures 0.3.21", + "futures", "futures-timer", "log", "num-traits", @@ -2810,7 +2810,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", ] @@ -2828,7 +2828,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -2850,7 +2850,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "Inflector", "chrono", @@ -2901,7 +2901,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2912,7 +2912,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2928,7 +2928,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -2956,7 +2956,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "bitflags", "frame-metadata", @@ -2986,7 +2986,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2998,7 +2998,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3010,7 +3010,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro2", "quote", @@ -3020,7 +3020,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "log", @@ -3037,7 +3037,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -3052,7 +3052,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "sp-api", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "sp-api", @@ -3109,12 +3109,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[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.21" @@ -3628,7 +3622,7 @@ dependencies = [ "async-io", "core-foundation", "fnv", - "futures 0.3.21", + "futures", "if-addrs", "ipnet", "log", @@ -3668,12 +3662,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" +checksum = "6c6392766afd7964e2531940894cffe4bd8d7d17dbc3c1c4857040fd4b33bdb3" dependencies = [ "autocfg", - "hashbrown 0.11.2", + "hashbrown 0.12.0", "serde", ] @@ -3929,7 +3923,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-primitives", "bitvec", @@ -4021,7 +4015,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "polkadot-primitives", @@ -4124,19 +4118,18 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.44.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475ce2ac4a9727e53a519f6ee05b38abfcba8f0d39c4d24f103d184e36fd5b0f" +checksum = "41726ee8f662563fafba2d2d484b14037cc8ecb8c953fbfc8439d4ce3a0a9029" dependencies = [ - "atomic", "bytes", - "futures 0.3.21", + "futures", "futures-timer", "getrandom 0.2.3", "instant", "lazy_static", "libp2p-autonat", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-deflate", "libp2p-dns", "libp2p-floodsub", @@ -4169,20 +4162,20 @@ dependencies = [ [[package]] name = "libp2p-autonat" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13b690e65046af6a09c0b27bd9508fa1cab0efce889de74b0b643b9d2a98f9a" +checksum = "50de7c1d5c3f040fccb469e8a2d189e068b7627d760dd74ef914071c16bbe905" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-request-response", "libp2p-swarm", "log", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.8.5", ] @@ -4197,7 +4190,41 @@ dependencies = [ "ed25519-dalek", "either", "fnv", - "futures 0.3.21", + "futures", + "futures-timer", + "instant", + "lazy_static", + "log", + "multiaddr", + "multihash", + "multistream-select", + "parking_lot 0.12.1", + "pin-project 1.0.10", + "prost 0.9.0", + "prost-build 0.9.0", + "rand 0.8.5", + "ring", + "rw-stream-sink 0.2.1", + "sha2 0.10.2", + "smallvec", + "thiserror", + "unsigned-varint", + "void", + "zeroize", +] + +[[package]] +name = "libp2p-core" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d46fca305dee6757022e2f5a4f6c023315084d0ed7441c3ab244e76666d979" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "either", + "fnv", + "futures", "futures-timer", "instant", "lazy_static", @@ -4208,11 +4235,11 @@ dependencies = [ "multistream-select", "parking_lot 0.12.1", "pin-project 1.0.10", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.8.5", "ring", - "rw-stream-sink", + "rw-stream-sink 0.3.0", "sha2 0.10.2", "smallvec", "thiserror", @@ -4223,67 +4250,68 @@ dependencies = [ [[package]] name = "libp2p-deflate" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1d37f042f748e224f04785d0e987ae09a2aa518d6401d82d412dad83e360ed" +checksum = "86adefc55ea4ed8201149f052fb441210727481dff1fb0b8318460206a79f5fb" dependencies = [ "flate2", - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.33.0", ] [[package]] name = "libp2p-dns" -version = "0.32.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066e33e854e10b5c93fc650458bf2179c7e0d143db260b0963e44a94859817f1" +checksum = "fbb462ec3a51fab457b4b44ac295e8b0a4b04dc175127e615cf996b1f0f1a268" dependencies = [ "async-std-resolver", - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.33.0", "log", + "parking_lot 0.12.1", "smallvec", "trust-dns-resolver", ] [[package]] name = "libp2p-floodsub" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733d3ea6ebe7a7a85df2bc86678b93f24b015fae5fe3b3acc4c400e795a55d2d" +checksum = "a505d0c6f851cbf2919535150198e530825def8bd3757477f13dc3a57f46cbcc" dependencies = [ "cuckoofilter", "fnv", - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.33.0", "libp2p-swarm", "log", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.7.3", "smallvec", ] [[package]] name = "libp2p-gossipsub" -version = "0.37.0" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90c989a7c0969c2ab63e898da9bc735e3be53fb4f376e9c045ce516bcc9f928" +checksum = "43e064ba4d7832e01c738626c6b274ae100baba05f5ffcc7b265c2a3ed398108" dependencies = [ "asynchronous-codec", "base64", "byteorder", "bytes", "fnv", - "futures 0.3.21", + "futures", "hex_fmt", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", "prometheus-client", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.7.3", "regex", "sha2 0.10.2", @@ -4294,40 +4322,44 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.35.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ef5a5b57904c7c33d6713ef918d239dc6b7553458f3475d87f8a18e9c651c8" +checksum = "b84b53490442d086db1fa5375670c9666e79143dccadef3f7c74a4346899a984" dependencies = [ - "futures 0.3.21", + "asynchronous-codec", + "futures", "futures-timer", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", "lru 0.7.7", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", + "prost-codec", "smallvec", + "thiserror", + "void", ] [[package]] name = "libp2p-kad" -version = "0.36.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "564e6bd64d177446399ed835b9451a8825b07929d6daa6a94e6405592974725e" +checksum = "5f6b5d4de90fcd35feb65ea6223fd78f3b747a64ca4b65e0813fbe66a27d56aa" dependencies = [ - "arrayvec 0.5.2", + "arrayvec 0.7.2", "asynchronous-codec", "bytes", "either", "fnv", - "futures 0.3.21", + "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.7.3", "sha2 0.10.2", "smallvec", @@ -4339,17 +4371,17 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611ae873c8e280ccfab0d57c7a13cac5644f364529e233114ff07863946058b0" +checksum = "4783f8cf00c7b6c1ff0f1870b4fcf50b042b45533d2e13b6fb464caf447a6951" dependencies = [ "async-io", "data-encoding", "dns-parser", - "futures 0.3.21", + "futures", "if-watch", "lazy_static", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", "rand 0.8.5", @@ -4360,11 +4392,11 @@ dependencies = [ [[package]] name = "libp2p-metrics" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985be799bb3796e0c136c768208c3c06604a38430571906a13dcfeda225a3b9d" +checksum = "adc4357140141ba9739eee71b20aa735351c0fc642635b2bffc7f57a6b5c1090" dependencies = [ - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-gossipsub", "libp2p-identify", "libp2p-kad", @@ -4376,14 +4408,14 @@ dependencies = [ [[package]] name = "libp2p-mplex" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "442eb0c9fff0bf22a34f015724b4143ce01877e079ed0963c722d94c07c72160" +checksum = "5ff9c893f2367631a711301d703c47432af898c9bb8253bea0e2c051a13f7640" dependencies = [ "asynchronous-codec", "bytes", - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.33.0", "log", "nohash-hasher", "parking_lot 0.12.1", @@ -4394,18 +4426,18 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd7e0c94051cda67123be68cf6b65211ba3dde7277be9068412de3e7ffd63ef" +checksum = "cf2cee1dad1c83325bbd182a8e94555778699cec8a9da00086efb7522c4c15ad" dependencies = [ "bytes", "curve25519-dalek 3.2.0", - "futures 0.3.21", + "futures", "lazy_static", - "libp2p-core", + "libp2p-core 0.33.0", "log", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.8.5", "sha2 0.10.2", "snow", @@ -4416,14 +4448,14 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf57a3c2e821331dda9fe612d4654d676ab6e33d18d9434a18cced72630df6ad" +checksum = "d41516c82fe8dd148ec925eead0c5ec08a0628f7913597e93e126e4dfb4e0787" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", "rand 0.7.3", @@ -4432,17 +4464,17 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "962c0fb0e7212fb96a69b87f2d09bcefd317935239bdc79cda900e7a8897a3fe" +checksum = "db007e737adc5d28b2e03223b0210164928ad742591127130796a72aa8eaf54f" dependencies = [ "asynchronous-codec", "bytes", - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.33.0", "log", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "unsigned-varint", "void", ] @@ -4453,7 +4485,7 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" dependencies = [ - "futures 0.3.21", + "futures", "log", "pin-project 1.0.10", "rand 0.7.3", @@ -4463,46 +4495,46 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3aa754cb7bccef51ebc3c458c6bbcef89d83b578a9925438389be841527d408f" +checksum = "624ead3406f64437a0d4567c31bd128a9a0b8226d5f16c074038f5d0fc32f650" dependencies = [ "asynchronous-codec", "bytes", "either", - "futures 0.3.21", + "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", "pin-project 1.0.10", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", + "prost-codec", "rand 0.8.5", "smallvec", "static_assertions", "thiserror", - "unsigned-varint", "void", ] [[package]] name = "libp2p-rendezvous" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd0baab894c5b84da510b915d53264d566c3c35889f09931fe9edbd2a773bee" +checksum = "c59967ea2db2c7560f641aa58ac05982d42131863fcd3dd6dcf0dd1daf81c60c" dependencies = [ "asynchronous-codec", "bimap", - "futures 0.3.21", + "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", - "prost 0.9.0", - "prost-build", + "prost 0.10.3", + "prost-build 0.10.4", "rand 0.8.5", "sha2 0.10.2", "thiserror", @@ -4512,15 +4544,15 @@ dependencies = [ [[package]] name = "libp2p-request-response" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6a6fc6c9ad95661f46989473b34bd2993d14a4de497ff3b2668a910d4b869" +checksum = "b02e0acb725e5a757d77c96b95298fd73a7394fe82ba7b8bbeea510719cbe441" dependencies = [ "async-trait", "bytes", - "futures 0.3.21", + "futures", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "libp2p-swarm", "log", "rand 0.7.3", @@ -4530,16 +4562,16 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.35.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0c69ad9e8f7c5fc50ad5ad9c7c8b57f33716532a2b623197f69f93e374d14c" +checksum = "8f4bb21c5abadbf00360c734f16bf87f1712ed4f23cd46148f625d2ddb867346" dependencies = [ "either", "fnv", - "futures 0.3.21", + "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.33.0", "log", "pin-project 1.0.10", "rand 0.7.3", @@ -4560,17 +4592,17 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193447aa729c85aac2376828df76d171c1a589c9e6b58fcc7f9d9a020734122c" +checksum = "4f4933e38ef21b50698aefc87799c24f2a365c9d3f6cf50471f3f6a0bc410892" dependencies = [ "async-io", - "futures 0.3.21", + "futures", "futures-timer", "if-watch", "ipnet", "libc", - "libp2p-core", + "libp2p-core 0.33.0", "log", "socket2", ] @@ -4582,20 +4614,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24bdab114f7f2701757d6541266e1131b429bbae382008f207f2114ee4222dcb" dependencies = [ "async-std", - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.32.1", "log", ] [[package]] name = "libp2p-wasm-ext" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6ea0f84a967ef59a16083f222c18115ae2e91db69809dce275df62e101b279" +checksum = "f066f2b8b1a1d64793f05da2256e6842ecd0293d6735ca2e9bda89831a1bdc06" dependencies = [ - "futures 0.3.21", + "futures", "js-sys", - "libp2p-core", + "libp2p-core 0.33.0", "parity-send-wrapper", "wasm-bindgen", "wasm-bindgen-futures", @@ -4603,17 +4635,18 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c932834c3754501c368d1bf3d0fb458487a642b90fc25df082a3a2f3d3b32e37" +checksum = "39d398fbb29f432c4128fabdaac2ed155c3bcaf1b9bd40eeeb10a471eefacbf5" dependencies = [ "either", - "futures 0.3.21", + "futures", "futures-rustls", - "libp2p-core", + "libp2p-core 0.33.0", "log", + "parking_lot 0.12.1", "quicksink", - "rw-stream-sink", + "rw-stream-sink 0.3.0", "soketto", "url", "webpki-roots", @@ -4621,12 +4654,12 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be902ebd89193cd020e89e89107726a38cfc0d16d18f613f4a37d046e92c7517" +checksum = "8fe653639ad74877c759720febb0cbcbf4caa221adde4eed2d3126ce5c6f381f" dependencies = [ - "futures 0.3.21", - "libp2p-core", + "futures", + "libp2p-core 0.33.0", "parking_lot 0.12.1", "thiserror", "yamux", @@ -4934,7 +4967,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532" dependencies = [ - "futures 0.3.21", + "futures", "rand 0.8.5", "thrift", ] @@ -5057,7 +5090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b" dependencies = [ "bytes", - "futures 0.3.21", + "futures", "log", "pin-project 1.0.10", "smallvec", @@ -5153,7 +5186,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef8785b8141e8432aa45fceb922a7e876d7da3fad37fa7e7ec702ace3aa0826b" dependencies = [ "bytes", - "futures 0.3.21", + "futures", "log", "netlink-packet-core", "netlink-sys", @@ -5168,7 +5201,7 @@ checksum = "3e4c9f9547a08241bee7b6558b9b98e1f290d187de8b7cfca2bbb4937bcaa8f8" dependencies = [ "async-io", "bytes", - "futures 0.3.21", + "futures", "libc", "log", ] @@ -5357,11 +5390,11 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", "dyn-clonable", - "futures 0.3.21", + "futures", "futures-timer", "orchestra-proc-macro", "pin-project 1.0.10", @@ -5373,7 +5406,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "expander 0.0.6", "itertools", @@ -5411,7 +5444,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -5428,7 +5461,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5442,7 +5475,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -5458,7 +5491,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -5474,7 +5507,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -5489,7 +5522,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5513,7 +5546,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5533,7 +5566,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5548,7 +5581,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "beefy-primitives", "frame-support", @@ -5564,7 +5597,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5587,7 +5620,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5605,7 +5638,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5622,7 +5655,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5644,7 +5677,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5665,7 +5698,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5710,7 +5743,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5727,7 +5760,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "bitflags", "frame-benchmarking", @@ -5754,7 +5787,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "bitflags", "parity-scale-codec", @@ -5769,7 +5802,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro2", "quote", @@ -5779,7 +5812,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5796,7 +5829,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5809,7 +5842,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5825,7 +5858,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5848,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5861,7 +5894,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5879,7 +5912,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5894,7 +5927,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5917,7 +5950,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5933,7 +5966,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5953,7 +5986,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5970,7 +6003,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5987,7 +6020,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6005,7 +6038,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6020,7 +6053,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6035,7 +6068,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6052,7 +6085,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6071,7 +6104,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6088,7 +6121,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6111,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6127,7 +6160,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6142,7 +6175,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6156,7 +6189,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6171,7 +6204,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6187,7 +6220,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6208,7 +6241,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6224,7 +6257,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6238,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6261,7 +6294,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6272,7 +6305,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "sp-arithmetic", @@ -6281,7 +6314,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6310,7 +6343,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6328,7 +6361,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6347,7 +6380,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-support", "frame-system", @@ -6363,7 +6396,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6378,7 +6411,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6389,7 +6422,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6406,7 +6439,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6421,7 +6454,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6437,7 +6470,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6452,7 +6485,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "frame-system", @@ -6470,7 +6503,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6983,9 +7016,9 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -6998,9 +7031,9 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7012,11 +7045,11 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "derive_more", "fatality", - "futures 0.3.21", + "futures", "lru 0.7.7", "parity-scale-codec", "polkadot-erasure-coding", @@ -7035,10 +7068,10 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "fatality", - "futures 0.3.21", + "futures", "lru 0.7.7", "parity-scale-codec", "polkadot-erasure-coding", @@ -7056,11 +7089,11 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "clap 3.2.5", "frame-benchmarking-cli", - "futures 0.3.21", + "futures", "log", "polkadot-client", "polkadot-node-core-pvf", @@ -7081,7 +7114,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7121,11 +7154,11 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "always-assert", "fatality", - "futures 0.3.21", + "futures", "futures-timer", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -7142,7 +7175,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7155,11 +7188,11 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "derive_more", "fatality", - "futures 0.3.21", + "futures", "lru 0.7.7", "parity-scale-codec", "polkadot-erasure-coding", @@ -7178,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7192,9 +7225,9 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "polkadot-node-network-protocol", "polkadot-node-subsystem", @@ -7212,12 +7245,12 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "always-assert", "async-trait", "bytes", - "futures 0.3.21", + "futures", "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-network-protocol", @@ -7233,9 +7266,9 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-primitives", @@ -7251,11 +7284,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", "derive_more", - "futures 0.3.21", + "futures", "futures-timer", "kvdb", "lru 0.7.7", @@ -7280,10 +7313,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", - "futures 0.3.21", + "futures", "futures-timer", "kvdb", "parity-scale-codec", @@ -7300,11 +7333,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", "fatality", - "futures 0.3.21", + "futures", "polkadot-erasure-coding", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7319,9 +7352,9 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -7334,10 +7367,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "parity-scale-codec", "polkadot-node-core-pvf", "polkadot-node-primitives", @@ -7352,9 +7385,9 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", @@ -7367,9 +7400,9 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "kvdb", "parity-scale-codec", @@ -7384,10 +7417,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "fatality", - "futures 0.3.21", + "futures", "kvdb", "lru 0.7.7", "parity-scale-codec", @@ -7403,10 +7436,10 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "polkadot-node-subsystem", "polkadot-primitives", @@ -7420,11 +7453,11 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", "fatality", - "futures 0.3.21", + "futures", "futures-timer", "polkadot-node-primitives", "polkadot-node-subsystem", @@ -7438,13 +7471,13 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "always-assert", "assert_matches", "async-process", "async-std", - "futures 0.3.21", + "futures", "futures-timer", "parity-scale-codec", "pin-project 1.0.10", @@ -7469,9 +7502,9 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7485,9 +7518,9 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "memory-lru", "parity-util-mem", "polkadot-node-subsystem", @@ -7502,7 +7535,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-std", "lazy_static", @@ -7520,10 +7553,10 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bs58", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", @@ -7539,12 +7572,12 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", "derive_more", "fatality", - "futures 0.3.21", + "futures", "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", @@ -7560,10 +7593,10 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bounded-vec", - "futures 0.3.21", + "futures", "parity-scale-codec", "polkadot-parachain 0.9.23", "polkadot-primitives", @@ -7582,7 +7615,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7592,10 +7625,10 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "parking_lot 0.12.1", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -7610,10 +7643,10 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "derive_more", - "futures 0.3.21", + "futures", "orchestra", "polkadot-node-jaeger", "polkadot-node-network-protocol", @@ -7629,12 +7662,12 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", "derive_more", "fatality", - "futures 0.3.21", + "futures", "itertools", "kvdb", "lru 0.7.7", @@ -7662,9 +7695,9 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "lru 0.7.7", "orchestra", @@ -7684,7 +7717,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "derive_more", "frame-support", @@ -7719,7 +7752,7 @@ dependencies = [ "cumulus-relay-chain-rpc-interface", "frame-benchmarking", "frame-benchmarking-cli", - "futures 0.3.21", + "futures", "hex-literal", "jsonrpsee", "log", @@ -7778,7 +7811,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7793,7 +7826,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitvec", "frame-system", @@ -7823,7 +7856,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7855,7 +7888,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-primitives", "bitvec", @@ -7940,7 +7973,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-primitives", "bitvec", @@ -7987,7 +8020,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "polkadot-primitives", @@ -7999,7 +8032,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bs58", "parity-scale-codec", @@ -8011,7 +8044,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "bitflags", "bitvec", @@ -8054,13 +8087,13 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "async-trait", "beefy-gadget", "beefy-primitives", "frame-system-rpc-runtime-api", - "futures 0.3.21", + "futures", "hex-literal", "kusama-runtime", "kvdb", @@ -8157,11 +8190,11 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "arrayvec 0.5.2", "fatality", - "futures 0.3.21", + "futures", "indexmap", "parity-scale-codec", "polkadot-node-network-protocol", @@ -8178,7 +8211,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8188,7 +8221,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8213,7 +8246,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-primitives", "bitvec", @@ -8274,12 +8307,11 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-benchmarking", "frame-system", - "futures 0.1.31", - "futures 0.3.21", + "futures", "hex", "pallet-balances", "pallet-staking", @@ -8419,12 +8451,12 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "coarsetime", "crossbeam-queue", "derive_more", - "futures 0.3.21", + "futures", "futures-timer", "nanorand", "thiserror", @@ -8490,9 +8522,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a896938cc6018c64f279888b8c7559d3725210d5db9a3a1ee6bc7188d51d34" +checksum = "ac1abe0255c04d15f571427a2d1e00099016506cf3297b53853acd2b7eb87825" dependencies = [ "dtoa", "itoa 1.0.1", @@ -8545,12 +8577,47 @@ dependencies = [ "multimap", "petgraph", "prost 0.9.0", - "prost-types", + "prost-types 0.9.0", "regex", "tempfile", "which", ] +[[package]] +name = "prost-build" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab" +dependencies = [ + "bytes", + "cfg-if 1.0.0", + "cmake", + "heck 0.4.0", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.10.3", + "prost-types 0.10.1", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-codec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00af1e92c33b4813cc79fda3f2dbf56af5169709be0202df730e9ebc3e4cd007" +dependencies = [ + "asynchronous-codec", + "bytes", + "prost 0.10.3", + "thiserror", + "unsigned-varint", +] + [[package]] name = "prost-derive" version = "0.9.0" @@ -8587,6 +8654,16 @@ dependencies = [ "prost 0.9.0", ] +[[package]] +name = "prost-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" +dependencies = [ + "bytes", + "prost 0.10.3", +] + [[package]] name = "psm" version = "0.1.16" @@ -8869,7 +8946,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8997,7 +9074,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9074,7 +9151,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "polkadot-primitives", @@ -9100,7 +9177,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f54290e54521dac3de4149d83ddf9f62a359b3cc93bcb494a794a41e6f4744b" dependencies = [ "async-global-executor", - "futures 0.3.21", + "futures", "log", "netlink-packet-route", "netlink-proto", @@ -9203,11 +9280,22 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.21", + "futures", "pin-project 0.4.29", "static_assertions", ] +[[package]] +name = "rw-stream-sink" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" +dependencies = [ + "futures", + "pin-project 1.0.10", + "static_assertions", +] + [[package]] name = "ryu" version = "1.0.6" @@ -9244,7 +9332,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "sp-core", @@ -9255,17 +9343,17 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "ip_network", "libp2p", "log", "parity-scale-codec", "prost 0.10.3", - "prost-build", + "prost-build 0.10.4", "rand 0.7.3", "sc-client-api", "sc-network", @@ -9282,9 +9370,9 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", @@ -9305,7 +9393,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9321,7 +9409,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9338,7 +9426,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9349,12 +9437,12 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "chrono", "clap 3.2.5", "fdlimit", - "futures 0.3.21", + "futures", "hex", "libp2p", "log", @@ -9388,10 +9476,10 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "fnv", - "futures 0.3.21", + "futures", "hash-db", "log", "parity-scale-codec", @@ -9416,7 +9504,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "hash-db", "kvdb", @@ -9441,10 +9529,10 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "libp2p", "log", @@ -9465,10 +9553,10 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "log", "parity-scale-codec", "sc-block-builder", @@ -9494,11 +9582,11 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "fork-tree", - "futures 0.3.21", + "futures", "log", "merlin", "num-bigint", @@ -9537,9 +9625,9 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "jsonrpsee", "sc-consensus-babe", "sc-consensus-epochs", @@ -9559,7 +9647,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9572,10 +9660,10 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", @@ -9597,7 +9685,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "sc-client-api", "sp-authorship", @@ -9608,7 +9696,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9635,7 +9723,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "environmental", "parity-scale-codec", @@ -9652,7 +9740,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "parity-scale-codec", @@ -9667,7 +9755,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9685,14 +9773,14 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "ahash", "async-trait", "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.21", + "futures", "futures-timer", "hex", "log", @@ -9725,10 +9813,10 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "finality-grandpa", - "futures 0.3.21", + "futures", "jsonrpsee", "log", "parity-scale-codec", @@ -9746,10 +9834,10 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "ansi_term", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-util-mem", @@ -9763,7 +9851,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "hex", @@ -9778,7 +9866,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "asynchronous-codec", @@ -9788,7 +9876,7 @@ dependencies = [ "either", "fnv", "fork-tree", - "futures 0.3.21", + "futures", "futures-timer", "hex", "ip_network", @@ -9801,7 +9889,7 @@ dependencies = [ "parking_lot 0.12.1", "pin-project 1.0.10", "prost 0.10.3", - "prost-build", + "prost-build 0.10.4", "rand 0.7.3", "sc-block-builder", "sc-client-api", @@ -9830,12 +9918,12 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "libp2p", "parity-scale-codec", - "prost-build", + "prost-build 0.10.4", "sc-peerset", "smallvec", ] @@ -9843,10 +9931,10 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "ahash", - "futures 0.3.21", + "futures", "futures-timer", "libp2p", "log", @@ -9860,14 +9948,14 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "libp2p", "log", "parity-scale-codec", "prost 0.10.3", - "prost-build", + "prost-build 0.10.4", "sc-client-api", "sc-network-common", "sc-peerset", @@ -9880,18 +9968,18 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "bitflags", "either", "fork-tree", - "futures 0.3.21", + "futures", "libp2p", "log", "lru 0.7.7", "parity-scale-codec", "prost 0.10.3", - "prost-build", + "prost-build 0.10.4", "sc-client-api", "sc-consensus", "sc-network-common", @@ -9909,11 +9997,11 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "bytes", "fnv", - "futures 0.3.21", + "futures", "futures-timer", "hex", "hyper", @@ -9937,9 +10025,9 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "libp2p", "log", "sc-utils", @@ -9950,7 +10038,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9959,9 +10047,9 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "hash-db", "jsonrpsee", "log", @@ -9989,9 +10077,9 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "jsonrpsee", "log", "parity-scale-codec", @@ -10012,9 +10100,9 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "jsonrpsee", "log", "serde_json", @@ -10025,12 +10113,12 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "directories", "exit-future", - "futures 0.3.21", + "futures", "futures-timer", "hash-db", "jsonrpsee", @@ -10090,7 +10178,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "parity-scale-codec", @@ -10104,7 +10192,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10123,9 +10211,9 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "libc", "log", "rand 0.7.3", @@ -10142,10 +10230,10 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "chrono", - "futures 0.3.21", + "futures", "libp2p", "log", "parking_lot 0.12.1", @@ -10160,7 +10248,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "ansi_term", "atty", @@ -10191,7 +10279,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10202,9 +10290,9 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "linked-hash-map", "log", @@ -10229,9 +10317,9 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "log", "serde", "sp-blockchain", @@ -10242,9 +10330,9 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "lazy_static", "log", @@ -10681,7 +10769,7 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "enumn", "parity-scale-codec", @@ -10747,7 +10835,7 @@ dependencies = [ "base64", "bytes", "flate2", - "futures 0.3.21", + "futures", "httparse", "log", "rand 0.8.5", @@ -10757,7 +10845,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "hash-db", "log", @@ -10774,7 +10862,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "blake2", "proc-macro-crate", @@ -10786,7 +10874,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10799,7 +10887,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "integer-sqrt", "num-traits", @@ -10814,7 +10902,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10827,7 +10915,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "parity-scale-codec", @@ -10839,7 +10927,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "sp-api", @@ -10851,9 +10939,9 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "log", "lru 0.7.7", "parity-scale-codec", @@ -10869,10 +10957,10 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", @@ -10888,7 +10976,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "parity-scale-codec", @@ -10906,7 +10994,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "merlin", @@ -10929,7 +11017,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10943,7 +11031,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10956,7 +11044,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "base58", "bitflags", @@ -10964,7 +11052,7 @@ dependencies = [ "byteorder", "dyn-clonable", "ed25519-dalek", - "futures 0.3.21", + "futures", "hash-db", "hash256-std-hasher", "hex", @@ -11002,7 +11090,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "blake2", "byteorder", @@ -11016,7 +11104,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro2", "quote", @@ -11027,7 +11115,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11036,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro2", "quote", @@ -11046,7 +11134,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "environmental", "parity-scale-codec", @@ -11057,7 +11145,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "finality-grandpa", "log", @@ -11075,7 +11163,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11089,9 +11177,9 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "hash-db", "libsecp256k1", "log", @@ -11114,7 +11202,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "lazy_static", "sp-core", @@ -11125,10 +11213,10 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "merlin", "parity-scale-codec", "parking_lot 0.12.1", @@ -11142,7 +11230,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "thiserror", "zstd", @@ -11151,7 +11239,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "parity-scale-codec", @@ -11166,7 +11254,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -11180,7 +11268,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "sp-api", "sp-core", @@ -11190,7 +11278,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "backtrace", "lazy_static", @@ -11200,7 +11288,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "rustc-hash", "serde", @@ -11210,7 +11298,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "either", "hash256-std-hasher", @@ -11232,7 +11320,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11249,7 +11337,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "Inflector", "proc-macro-crate", @@ -11261,7 +11349,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "parity-scale-codec", @@ -11275,7 +11363,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "serde", "serde_json", @@ -11284,7 +11372,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -11298,7 +11386,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "scale-info", @@ -11309,7 +11397,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "hash-db", "log", @@ -11331,12 +11419,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11349,7 +11437,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "log", "sp-core", @@ -11362,7 +11450,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "futures-timer", @@ -11378,7 +11466,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "sp-std", @@ -11390,7 +11478,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "sp-api", "sp-runtime", @@ -11399,7 +11487,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", "log", @@ -11415,7 +11503,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "hash-db", "memory-db", @@ -11431,7 +11519,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11448,7 +11536,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11459,7 +11547,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "impl-trait-for-tuples", "log", @@ -11738,7 +11826,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "platforms", ] @@ -11746,10 +11834,10 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.21", + "futures", "jsonrpsee", "log", "parity-scale-codec", @@ -11767,7 +11855,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "futures-util", "hyper", @@ -11780,7 +11868,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "jsonrpsee", "log", @@ -11801,10 +11889,10 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "hex", "parity-scale-codec", "sc-client-api", @@ -11827,9 +11915,9 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "futures 0.3.21", + "futures", "substrate-test-utils-derive", "tokio", ] @@ -11837,7 +11925,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11848,7 +11936,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "ansi_term", "build-helper", @@ -11870,9 +11958,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.96" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" dependencies = [ "proc-macro2", "quote", @@ -11956,7 +12044,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "polkadot-primitives", @@ -12245,7 +12333,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12256,7 +12344,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12385,7 +12473,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c950f18507d2b4a1d353c359ee3949f1b355bc60" +source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "clap 3.2.5", "jsonrpsee", @@ -12415,11 +12503,11 @@ checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" [[package]] name = "twox-hash" -version = "1.6.2" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "digest 0.10.3", "rand 0.8.5", "static_assertions", @@ -12717,7 +12805,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.21", + "futures", "js-sys", "parking_lot 0.11.2", "pin-utils", @@ -12966,7 +13054,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "beefy-primitives", "bitvec", @@ -13054,7 +13142,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "polkadot-primitives", @@ -13295,20 +13383,21 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "derivative", "impl-trait-for-tuples", "log", "parity-scale-codec", "scale-info", + "sp-runtime", "xcm-procedural", ] [[package]] name = "xcm-builder" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-support", "frame-system", @@ -13328,7 +13417,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "frame-benchmarking", "frame-support", @@ -13346,7 +13435,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#f57d7f1f2962fd096b49c242c8fff5538dbbe402" +source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ "Inflector", "proc-macro2", @@ -13360,7 +13449,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c0608f53c1dc0bad505d03a34bbd49fbf2ad7b51eb036123e896365532745a1" dependencies = [ - "futures 0.3.21", + "futures", "log", "nohash-hasher", "parking_lot 0.12.1", From 17ca448df53c76556ff85538f59f850c3fdd6f01 Mon Sep 17 00:00:00 2001 From: girazoki Date: Mon, 20 Jun 2022 15:49:28 +0200 Subject: [PATCH 125/238] Add event with XCM executor outcome, which includes weight fee (#1286) * Add event with XCM executor outcome, which includes weight fee * Show weight used in processed messages * remove added event * named events * message_id for message_hash * Update pallets/xcmp-queue/src/lib.rs Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- pallets/xcmp-queue/src/lib.rs | 41 ++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/pallets/xcmp-queue/src/lib.rs b/pallets/xcmp-queue/src/lib.rs index 1b416a7c69..2b1bdac2b8 100644 --- a/pallets/xcmp-queue/src/lib.rs +++ b/pallets/xcmp-queue/src/lib.rs @@ -148,7 +148,7 @@ pub mod pallet { let used = Self::handle_xcm_message(sender, sent_at, xcm, weight_limit) .map_err(|_| Error::::WeightOverLimit)?; Overweight::::remove(index); - Self::deposit_event(Event::OverweightServiced(index, used)); + Self::deposit_event(Event::OverweightServiced { index, used }); Ok(Some(used.saturating_add(1_000_000)).into()) } @@ -263,21 +263,26 @@ pub mod pallet { #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { /// Some XCM was executed ok. - Success(Option), + Success { message_hash: Option, weight: Weight }, /// Some XCM failed. - Fail(Option, XcmError), + Fail { message_hash: Option, error: XcmError, weight: Weight }, /// Bad XCM version used. - BadVersion(Option), + BadVersion { message_hash: Option }, /// Bad XCM format used. - BadFormat(Option), + BadFormat { message_hash: Option }, /// An upward message was sent to the relay chain. - UpwardMessageSent(Option), + UpwardMessageSent { message_hash: Option }, /// An HRMP message was sent to a sibling parachain. - XcmpMessageSent(Option), + XcmpMessageSent { message_hash: Option }, /// An XCM exceeded the individual message weight budget. - OverweightEnqueued(ParaId, RelayBlockNumber, OverweightIndex, Weight), + OverweightEnqueued { + sender: ParaId, + sent_at: RelayBlockNumber, + index: OverweightIndex, + required: Weight, + }, /// An XCM from the overweight queue was executed with the given actual weight used. - OverweightServiced(OverweightIndex, Weight), + OverweightServiced { index: OverweightIndex, used: Weight }, } #[pallet::error] @@ -599,15 +604,20 @@ impl Pallet { let (result, event) = match Xcm::::try_from(xcm) { Ok(xcm) => { let location = (1, Parachain(sender.into())); + match T::XcmExecutor::execute_xcm(location, xcm, max_weight) { - Outcome::Error(e) => (Err(e), Event::Fail(Some(hash), e)), - Outcome::Complete(w) => (Ok(w), Event::Success(Some(hash))), + Outcome::Error(e) => + (Err(e), Event::Fail { message_hash: Some(hash), error: e, weight: 0 }), + Outcome::Complete(w) => + (Ok(w), Event::Success { message_hash: Some(hash), weight: w }), // As far as the caller is concerned, this was dispatched without error, so // we just report the weight used. - Outcome::Incomplete(w, e) => (Ok(w), Event::Fail(Some(hash), e)), + Outcome::Incomplete(w, e) => + (Ok(w), Event::Fail { message_hash: Some(hash), error: e, weight: w }), } }, - Err(()) => (Err(XcmError::UnhandledXcmVersion), Event::BadVersion(Some(hash))), + Err(()) => + (Err(XcmError::UnhandledXcmVersion), Event::BadVersion { message_hash: Some(hash) }), }; Self::deposit_event(event); result @@ -644,7 +654,8 @@ impl Pallet { .saturating_sub(remaining_fragments.len()); let overweight_xcm = last_remaining_fragments[..msg_len].to_vec(); let index = Self::stash_overweight(sender, sent_at, overweight_xcm); - let e = Event::OverweightEnqueued(sender, sent_at, index, required); + let e = + Event::OverweightEnqueued { sender, sent_at, index, required }; Self::deposit_event(e); }, Err(XcmError::WeightLimitReached(required)) @@ -1098,7 +1109,7 @@ impl SendXcm for Pallet { versioned_xcm, ) .map_err(|e| SendError::Transport(<&'static str>::from(e)))?; - Self::deposit_event(Event::XcmpMessageSent(Some(hash))); + Self::deposit_event(Event::XcmpMessageSent { message_hash: Some(hash) }); Ok(()) }, // Anything else is unhandled. This includes a message this is meant for us. From ebbf6b6e2135dd73eb4b2e905619ddec1a278c0c Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Tue, 21 Jun 2022 10:26:03 +0200 Subject: [PATCH 126/238] Strip 'Cargo.toml' from workspace path for patches (#1391) --- test/relay-validation-worker-provider/build.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/relay-validation-worker-provider/build.rs b/test/relay-validation-worker-provider/build.rs index 6b2f482a7d..9b5247bcbe 100644 --- a/test/relay-validation-worker-provider/build.rs +++ b/test/relay-validation-worker-provider/build.rs @@ -120,6 +120,9 @@ fn add_patches(project_toml: &mut Table) { ) .expect("Workspace root `Cargo.toml` is a valid toml file; qed"); + let mut workspace_path = workspace_toml_path; + workspace_path.pop(); + while let Some(mut patch) = workspace_toml.remove("patch").and_then(|p| p.try_into::
().ok()) { @@ -134,7 +137,7 @@ fn add_patches(project_toml: &mut Table) { p.iter_mut().filter(|(k, _)| k == &"path").for_each(|(_, v)| { if let Some(path) = v.as_str().map(PathBuf::from) { if path.is_relative() { - *v = workspace_toml_path.join(path).display().to_string().into(); + *v = workspace_path.join(path).display().to_string().into(); } } }) From c8a9259a027200749a3fb2745a971a7c20f8edae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 20:39:33 +0000 Subject: [PATCH 127/238] Bump proc-macro2 from 1.0.39 to 1.0.40 Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.39 to 1.0.40. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.39...1.0.40) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 90ade69221..9e312fbd76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8499,9 +8499,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" dependencies = [ "unicode-ident", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index d27ca0d9b9..c4d285390c 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -10,7 +10,7 @@ proc-macro = true [dependencies] syn = "1.0.96" -proc-macro2 = "1.0.39" +proc-macro2 = "1.0.40" quote = "1.0.18" proc-macro-crate = "1.1.3" From 895d0f4dc13ba01e80fe22134b21d27faa4f891f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jun 2022 11:28:19 +0000 Subject: [PATCH 128/238] Bump quote from 1.0.18 to 1.0.19 (#1395) Bumps [quote](https://github.com/dtolnay/quote) from 1.0.18 to 1.0.19. - [Release notes](https://github.com/dtolnay/quote/releases) - [Commits](https://github.com/dtolnay/quote/compare/1.0.18...1.0.19) --- updated-dependencies: - dependency-name: quote dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Chevdor --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e312fbd76..44cfce00fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8698,9 +8698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "f53dc8cf16a769a6f677e09e7ff2cd4be1ea0f48754aac39520536962011de0d" dependencies = [ "proc-macro2", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index c4d285390c..36301f40d4 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -11,7 +11,7 @@ proc-macro = true [dependencies] syn = "1.0.96" proc-macro2 = "1.0.40" -quote = "1.0.18" +quote = "1.0.19" proc-macro-crate = "1.1.3" [features] From 8347d2f85cb5a535e75216da8227218917c4e3fe Mon Sep 17 00:00:00 2001 From: Squirrel Date: Tue, 21 Jun 2022 15:58:27 +0100 Subject: [PATCH 129/238] rename build_import_queue to not be statemint specific (#1389) * rename to aura * Update polkadot-parachain/src/service.rs Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- polkadot-parachain/src/command.rs | 12 ++++++------ polkadot-parachain/src/service.rs | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index 5e46b6c706..ebacb0def5 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -263,21 +263,21 @@ macro_rules! construct_benchmark_partials { Runtime::Statemine => { let $partials = new_partial::( &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, + crate::service::aura_build_import_queue::<_, AuraId>, )?; $code }, Runtime::Westmint => { let $partials = new_partial::( &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, + crate::service::aura_build_import_queue::<_, AuraId>, )?; $code }, Runtime::Statemint => { let $partials = new_partial::( &$config, - crate::service::statemint_build_import_queue::<_, StatemintAuraId>, + crate::service::aura_build_import_queue::<_, StatemintAuraId>, )?; $code }, @@ -294,7 +294,7 @@ macro_rules! construct_async_run { runner.async_run(|$config| { let $components = new_partial::( &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, + crate::service::aura_build_import_queue::<_, AuraId>, )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) @@ -304,7 +304,7 @@ macro_rules! construct_async_run { runner.async_run(|$config| { let $components = new_partial::( &$config, - crate::service::statemint_build_import_queue::<_, AuraId>, + crate::service::aura_build_import_queue::<_, AuraId>, )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) @@ -314,7 +314,7 @@ macro_rules! construct_async_run { runner.async_run(|$config| { let $components = new_partial::( &$config, - crate::service::statemint_build_import_queue::<_, StatemintAuraId>, + crate::service::aura_build_import_queue::<_, StatemintAuraId>, )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index 38b23fac89..f76c7997fb 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -1085,8 +1085,8 @@ where } } -/// Build the import queue for the statemint/statemine/westmine runtime. -pub fn statemint_build_import_queue( +/// Build the import queue for Statemint and other Aura-based runtimes. +pub fn aura_build_import_queue( client: Arc>>, config: &Configuration, telemetry_handle: Option, @@ -1203,7 +1203,7 @@ where collator_options, id, |_| Ok(RpcModule::new(())), - statemint_build_import_queue::<_, AuraId>, + aura_build_import_queue::<_, AuraId>, |client, prometheus_registry, telemetry, From 110b06b81cde292a7af72becb686a550528d91ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jun 2022 19:29:33 +0200 Subject: [PATCH 130/238] Bump dyn-clone from 1.0.5 to 1.0.6 (#1394) Bumps [dyn-clone](https://github.com/dtolnay/dyn-clone) from 1.0.5 to 1.0.6. - [Release notes](https://github.com/dtolnay/dyn-clone/releases) - [Commits](https://github.com/dtolnay/dyn-clone/compare/1.0.5...1.0.6) --- updated-dependencies: - dependency-name: dyn-clone dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/consensus/common/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44cfce00fb..6e9e7f262e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2468,9 +2468,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" +checksum = "140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5a" [[package]] name = "ecdsa" diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index e6752db095..dd0e80e527 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -dyn-clone = "1.0.5" +dyn-clone = "1.0.6" futures = "0.3.21" tracing = "0.1.34" From 15bff3ce5761dbbe01d2657dc69d61e5df26a996 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jun 2022 17:30:41 +0000 Subject: [PATCH 131/238] Bump quote from 1.0.19 to 1.0.20 (#1399) Bumps [quote](https://github.com/dtolnay/quote) from 1.0.19 to 1.0.20. - [Release notes](https://github.com/dtolnay/quote/releases) - [Commits](https://github.com/dtolnay/quote/compare/1.0.19...1.0.20) --- updated-dependencies: - dependency-name: quote dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e9e7f262e..9e0bc73bb4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8698,9 +8698,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f53dc8cf16a769a6f677e09e7ff2cd4be1ea0f48754aac39520536962011de0d" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" dependencies = [ "proc-macro2", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 36301f40d4..9fa582fc1a 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -11,7 +11,7 @@ proc-macro = true [dependencies] syn = "1.0.96" proc-macro2 = "1.0.40" -quote = "1.0.19" +quote = "1.0.20" proc-macro-crate = "1.1.3" [features] From f7e9daee20fc2944b33657fb497cc10a14ad0120 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jun 2022 17:32:01 +0000 Subject: [PATCH 132/238] Bump clap from 3.2.5 to 3.2.6 (#1400) Bumps [clap](https://github.com/clap-rs/clap) from 3.2.5 to 3.2.6. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.2.5...v3.2.6) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ client/cli/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e0bc73bb4..0bc0b85df5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,9 +1075,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.5" +version = "3.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53da17d37dba964b9b3ecb5c5a1f193a2762c700e6829201e645b9381c99dc7" +checksum = "9f1fe12880bae935d142c8702d500c63a4e8634b6c3c57ad72bf978fc7b6249a" dependencies = [ "atty", "bitflags", @@ -1092,9 +1092,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.5" +version = "3.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9" +checksum = "ed6db9e867166a43a53f7199b5e4d1f522a1e5bd626654be263c999ce59df39a" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -1574,7 +1574,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.2.5", + "clap 3.2.6", "parity-scale-codec", "sc-chain-spec", "sc-cli", @@ -2184,7 +2184,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.2.5", + "clap 3.2.6", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2854,7 +2854,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6c dependencies = [ "Inflector", "chrono", - "clap 3.2.5", + "clap 3.2.6", "comfy-table", "frame-benchmarking", "frame-support", @@ -6533,7 +6533,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.2.5", + "clap 3.2.6", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -7091,7 +7091,7 @@ name = "polkadot-cli" version = "0.9.23" source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" dependencies = [ - "clap 3.2.5", + "clap 3.2.6", "frame-benchmarking-cli", "futures", "log", @@ -7737,7 +7737,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.2.5", + "clap 3.2.6", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9440,7 +9440,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ "chrono", - "clap 3.2.5", + "clap 3.2.6", "fdlimit", "futures", "hex", @@ -12475,7 +12475,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" dependencies = [ - "clap 3.2.5", + "clap 3.2.6", "jsonrpsee", "log", "parity-scale-codec", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 0c1c909db1..eba672355f 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.2.5", features = ["derive", "deprecated"] } +clap = { version = "3.2.6", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index a4f4fab47f..c9b6d70b2b 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [dependencies] -clap = { version = "3.2.5", features = ["derive"] } +clap = { version = "3.2.6", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 67635d5fc9..d677df57d7 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -8,7 +8,7 @@ description = "Runs a polkadot parachain node which could be a collator." [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.5", features = ["derive", "deprecated"] } +clap = { version = "3.2.6", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 935d4ab771..f0df957616 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,7 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.5", features = ["derive", "deprecated"] } +clap = { version = "3.2.6", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } From 0a069ce7f378c83fa3f88ca63eed9af723aebf09 Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Thu, 23 Jun 2022 11:36:33 +0200 Subject: [PATCH 133/238] Rename help string `parachain-collator` -> `parachain-template-node` (#1392) --- parachain-template/node/src/command.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index eedc6e952f..129587625e 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -42,11 +42,13 @@ impl SubstrateCli for Cli { } fn description() -> String { - "Parachain Collator Template\n\nThe command-line arguments provided first will be \ + 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 relay chain node.\n\n\ - parachain-collator -- " - .into() + {} -- ", + Self::executable_name() + ) } fn author() -> String { @@ -80,11 +82,13 @@ impl SubstrateCli for RelayChainCli { } fn description() -> String { - "Parachain Collator Template\n\nThe command-line arguments provided first will be \ + 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 relay chain node.\n\n\ - parachain-collator -- " - .into() + {} -- ", + Self::executable_name() + ) } fn author() -> String { From 880496c7cca4b32bb2ec609a1af25915d0b63771 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Thu, 23 Jun 2022 12:41:44 +0100 Subject: [PATCH 134/238] rename now shared node creation function (#1402) --- polkadot-parachain/src/command.rs | 6 +++--- polkadot-parachain/src/service.rs | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index ebacb0def5..2c344b2400 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -548,21 +548,21 @@ pub fn run() -> Result<()> { info!("Is collating: {}", if config.role.is_authority() { "yes" } else { "no" }); match config.chain_spec.runtime() { - Runtime::Statemint => crate::service::start_statemint_node::< + Runtime::Statemint => crate::service::start_generic_aura_node::< statemint_runtime::RuntimeApi, StatemintAuraId, >(config, polkadot_config, collator_options, id, hwbench) .await .map(|r| r.0) .map_err(Into::into), - Runtime::Statemine => crate::service::start_statemint_node::< + Runtime::Statemine => crate::service::start_generic_aura_node::< statemine_runtime::RuntimeApi, AuraId, >(config, polkadot_config, collator_options, id, hwbench) .await .map(|r| r.0) .map_err(Into::into), - Runtime::Westmint => crate::service::start_statemint_node::< + Runtime::Westmint => crate::service::start_generic_aura_node::< westmint_runtime::RuntimeApi, AuraId, >(config, polkadot_config, collator_options, id, hwbench) diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index f76c7997fb..a694a9b113 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -1165,8 +1165,9 @@ where )) } -/// Start a statemint/statemine/westmint parachain node. -pub async fn start_statemint_node( +/// Start an aura powered parachain node. +/// (collective-polkadot and statemine/t use this) +pub async fn start_generic_aura_node( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, From 4bb9b610f46c69438cbd525490309191c76726e1 Mon Sep 17 00:00:00 2001 From: Alexander Gryaznov Date: Thu, 23 Jun 2022 15:48:13 +0300 Subject: [PATCH 135/238] Companion for substrate#11501 (#1404) * Companion for substrate#11501 * update lockfile for {"polkadot", "substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 698 +++++++++--------- .../contracts-rococo/src/contracts.rs | 1 + .../contracts/contracts-rococo/src/lib.rs | 2 +- 3 files changed, 353 insertions(+), 348 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0bc0b85df5..91c5f46963 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,12 +486,16 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +dependencies = [ + "beefy-primitives", + "sp-api", +] [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -681,7 +685,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-runtime", "finality-grandpa", @@ -698,7 +702,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-runtime", "frame-support", @@ -710,7 +714,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "bp-runtime", @@ -727,7 +731,7 @@ dependencies = [ [[package]] name = "bp-polkadot-core" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-messages", "bp-runtime", @@ -745,7 +749,7 @@ dependencies = [ [[package]] name = "bp-rococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -762,7 +766,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "hash-db", @@ -780,7 +784,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -795,7 +799,7 @@ dependencies = [ [[package]] name = "bp-wococo" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -810,7 +814,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -1208,7 +1212,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-runtime-common", "scale-info", "serde", @@ -1704,7 +1708,7 @@ dependencies = [ "parking_lot 0.12.1", "polkadot-client", "polkadot-node-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-service", "polkadot-test-client", @@ -1834,7 +1838,7 @@ dependencies = [ "log", "pallet-balances", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "sc-client-api", "scale-info", "serde", @@ -1953,7 +1957,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "sp-api", "sp-runtime", @@ -2008,7 +2012,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "sp-runtime", "sp-std", @@ -2109,7 +2113,7 @@ dependencies = [ "pallet-balances", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "sc-block-builder", "sc-consensus", @@ -2810,7 +2814,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", ] @@ -2828,7 +2832,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -2850,7 +2854,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "Inflector", "chrono", @@ -2901,7 +2905,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2912,7 +2916,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2928,7 +2932,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -2956,7 +2960,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "bitflags", "frame-metadata", @@ -2986,7 +2990,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2998,7 +3002,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3010,7 +3014,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro2", "quote", @@ -3020,7 +3024,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "log", @@ -3037,7 +3041,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -3052,7 +3056,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "sp-api", @@ -3061,7 +3065,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "sp-api", @@ -3922,8 +3926,8 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-primitives", "bitvec", @@ -4014,8 +4018,8 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "polkadot-primitives", @@ -5390,7 +5394,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "dyn-clonable", @@ -5406,7 +5410,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "expander 0.0.6", "itertools", @@ -5444,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -5461,7 +5465,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5475,7 +5479,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -5491,7 +5495,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -5507,7 +5511,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -5522,7 +5526,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5546,7 +5550,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5566,7 +5570,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5581,7 +5585,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "beefy-primitives", "frame-support", @@ -5597,7 +5601,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5620,7 +5624,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5638,7 +5642,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5655,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5677,7 +5681,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5698,7 +5702,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5743,7 +5747,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5760,7 +5764,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "bitflags", "frame-benchmarking", @@ -5787,7 +5791,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "bitflags", "parity-scale-codec", @@ -5802,7 +5806,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro2", "quote", @@ -5812,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5829,7 +5833,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5842,7 +5846,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5858,7 +5862,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5881,7 +5885,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5894,7 +5898,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5912,7 +5916,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5927,7 +5931,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5950,7 +5954,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5966,7 +5970,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5986,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6003,7 +6007,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6020,7 +6024,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6038,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6053,7 +6057,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6068,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6085,7 +6089,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6104,7 +6108,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6121,7 +6125,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6144,7 +6148,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6160,7 +6164,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6175,7 +6179,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6189,7 +6193,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6204,7 +6208,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6220,7 +6224,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6241,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6257,7 +6261,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6271,7 +6275,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6294,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6305,7 +6309,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "sp-arithmetic", @@ -6314,7 +6318,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6343,7 +6347,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6361,7 +6365,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6380,7 +6384,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-support", "frame-system", @@ -6396,7 +6400,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6411,7 +6415,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6422,7 +6426,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6439,7 +6443,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6454,7 +6458,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6470,7 +6474,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6484,8 +6488,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "frame-system", @@ -6502,8 +6506,8 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-benchmarking", "frame-support", @@ -6555,7 +6559,7 @@ dependencies = [ "parachain-template-runtime", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-service", "sc-basic-authorship", @@ -6630,7 +6634,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-runtime-common", "scale-info", "serde", @@ -7015,8 +7019,8 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -7030,8 +7034,8 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -7044,8 +7048,8 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "derive_more", "fatality", @@ -7067,8 +7071,8 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "fatality", "futures", @@ -7088,8 +7092,8 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "clap 3.2.6", "frame-benchmarking-cli", @@ -7113,8 +7117,8 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7153,8 +7157,8 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "always-assert", "fatality", @@ -7174,8 +7178,8 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7187,8 +7191,8 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "derive_more", "fatality", @@ -7210,8 +7214,8 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7224,8 +7228,8 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "futures-timer", @@ -7244,8 +7248,8 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "always-assert", "async-trait", @@ -7265,8 +7269,8 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "parity-scale-codec", @@ -7283,8 +7287,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "derive_more", @@ -7312,8 +7316,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "futures", @@ -7332,8 +7336,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "fatality", @@ -7351,8 +7355,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7366,8 +7370,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "futures", @@ -7376,7 +7380,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -7384,8 +7388,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7399,8 +7403,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "futures-timer", @@ -7416,8 +7420,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "fatality", "futures", @@ -7435,8 +7439,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "futures", @@ -7452,8 +7456,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "fatality", @@ -7470,8 +7474,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "always-assert", "assert_matches", @@ -7483,7 +7487,7 @@ dependencies = [ "pin-project 1.0.10", "polkadot-core-primitives", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "rand 0.8.5", "sc-executor", "sc-executor-common", @@ -7501,8 +7505,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "polkadot-node-primitives", @@ -7517,8 +7521,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "memory-lru", @@ -7534,8 +7538,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-std", "lazy_static", @@ -7552,8 +7556,8 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bs58", "futures", @@ -7571,8 +7575,8 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "derive_more", @@ -7592,13 +7596,13 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bounded-vec", "futures", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "schnorrkel", "serde", @@ -7614,8 +7618,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7624,8 +7628,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "futures", @@ -7642,8 +7646,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "derive_more", "futures", @@ -7661,8 +7665,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "derive_more", @@ -7694,8 +7698,8 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "futures", "futures-timer", @@ -7716,8 +7720,8 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "derive_more", "frame-support", @@ -7762,7 +7766,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-service", "rococo-parachain-runtime", @@ -7810,8 +7814,8 @@ dependencies = [ [[package]] name = "polkadot-performance-test" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7825,8 +7829,8 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitvec", "frame-system", @@ -7834,7 +7838,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "scale-info", "serde", "sp-api", @@ -7855,8 +7859,8 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7887,8 +7891,8 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-primitives", "bitvec", @@ -7972,8 +7976,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-primitives", "bitvec", @@ -8019,8 +8023,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "polkadot-primitives", @@ -8031,8 +8035,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bs58", "parity-scale-codec", @@ -8043,8 +8047,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "bitflags", "bitvec", @@ -8086,8 +8090,8 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "async-trait", "beefy-gadget", @@ -8132,7 +8136,7 @@ dependencies = [ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", @@ -8189,8 +8193,8 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8210,8 +8214,8 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8220,8 +8224,8 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8245,8 +8249,8 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-primitives", "bitvec", @@ -8273,7 +8277,7 @@ dependencies = [ "pallet-vesting", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8306,8 +8310,8 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-benchmarking", "frame-system", @@ -8319,7 +8323,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-common", @@ -8451,7 +8455,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8946,7 +8950,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9050,7 +9054,7 @@ dependencies = [ "parachain-info", "parachains-common", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "scale-info", "serde", "sp-api", @@ -9073,8 +9077,8 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9118,7 +9122,7 @@ dependencies = [ "pallet-utility", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -9150,8 +9154,8 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "polkadot-primitives", @@ -9332,7 +9336,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "sp-core", @@ -9343,7 +9347,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -9370,7 +9374,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "futures-timer", @@ -9393,7 +9397,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9409,7 +9413,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9426,7 +9430,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9437,7 +9441,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "chrono", "clap 3.2.6", @@ -9476,7 +9480,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "fnv", "futures", @@ -9504,7 +9508,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "hash-db", "kvdb", @@ -9529,7 +9533,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -9553,7 +9557,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -9582,7 +9586,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "fork-tree", @@ -9625,7 +9629,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "jsonrpsee", @@ -9647,7 +9651,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9660,7 +9664,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -9685,7 +9689,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "sc-client-api", "sp-authorship", @@ -9696,7 +9700,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9723,7 +9727,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "environmental", "parity-scale-codec", @@ -9740,7 +9744,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "parity-scale-codec", @@ -9755,7 +9759,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9773,7 +9777,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "ahash", "async-trait", @@ -9813,7 +9817,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "finality-grandpa", "futures", @@ -9834,7 +9838,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "ansi_term", "futures", @@ -9851,7 +9855,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "hex", @@ -9866,7 +9870,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "asynchronous-codec", @@ -9918,7 +9922,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "libp2p", @@ -9931,7 +9935,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "ahash", "futures", @@ -9948,7 +9952,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "libp2p", @@ -9968,7 +9972,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "bitflags", "either", @@ -9997,7 +10001,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "bytes", "fnv", @@ -10025,7 +10029,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "libp2p", @@ -10038,7 +10042,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10047,7 +10051,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "hash-db", @@ -10077,7 +10081,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "jsonrpsee", @@ -10100,7 +10104,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "jsonrpsee", @@ -10113,7 +10117,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "directories", @@ -10178,7 +10182,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "parity-scale-codec", @@ -10192,7 +10196,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10211,7 +10215,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "libc", @@ -10230,7 +10234,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "chrono", "futures", @@ -10248,7 +10252,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "ansi_term", "atty", @@ -10279,7 +10283,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10290,7 +10294,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "futures-timer", @@ -10317,7 +10321,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "log", @@ -10330,7 +10334,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "futures-timer", @@ -10768,8 +10772,8 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slot-range-helper" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "enumn", "parity-scale-codec", @@ -10845,7 +10849,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "hash-db", "log", @@ -10862,7 +10866,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "blake2", "proc-macro-crate", @@ -10874,7 +10878,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10887,7 +10891,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "integer-sqrt", "num-traits", @@ -10902,7 +10906,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10915,7 +10919,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "parity-scale-codec", @@ -10927,7 +10931,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "sp-api", @@ -10939,7 +10943,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "log", @@ -10957,7 +10961,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -10976,7 +10980,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "parity-scale-codec", @@ -10994,7 +10998,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "merlin", @@ -11017,7 +11021,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11031,7 +11035,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11044,7 +11048,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "base58", "bitflags", @@ -11090,7 +11094,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "blake2", "byteorder", @@ -11104,7 +11108,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro2", "quote", @@ -11115,7 +11119,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11124,7 +11128,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro2", "quote", @@ -11134,7 +11138,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "environmental", "parity-scale-codec", @@ -11145,7 +11149,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "finality-grandpa", "log", @@ -11163,7 +11167,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11177,7 +11181,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "hash-db", @@ -11202,7 +11206,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "lazy_static", "sp-core", @@ -11213,7 +11217,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -11230,7 +11234,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "thiserror", "zstd", @@ -11239,7 +11243,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "parity-scale-codec", @@ -11254,7 +11258,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11268,7 +11272,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "sp-api", "sp-core", @@ -11278,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "backtrace", "lazy_static", @@ -11288,7 +11292,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "rustc-hash", "serde", @@ -11298,7 +11302,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "either", "hash256-std-hasher", @@ -11320,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11337,7 +11341,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "Inflector", "proc-macro-crate", @@ -11349,7 +11353,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "parity-scale-codec", @@ -11363,7 +11367,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "serde", "serde_json", @@ -11372,7 +11376,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11386,7 +11390,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11397,7 +11401,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "hash-db", "log", @@ -11419,12 +11423,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11437,7 +11441,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "log", "sp-core", @@ -11450,7 +11454,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures-timer", @@ -11466,7 +11470,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "sp-std", @@ -11478,7 +11482,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "sp-api", "sp-runtime", @@ -11487,7 +11491,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "log", @@ -11503,7 +11507,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "hash-db", "memory-db", @@ -11519,7 +11523,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11536,7 +11540,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11547,7 +11551,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "impl-trait-for-tuples", "log", @@ -11627,7 +11631,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-runtime-common", "scale-info", "serde", @@ -11692,7 +11696,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", @@ -11826,7 +11830,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "platforms", ] @@ -11834,7 +11838,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11855,7 +11859,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures-util", "hyper", @@ -11868,7 +11872,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "jsonrpsee", "log", @@ -11889,7 +11893,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "async-trait", "futures", @@ -11915,7 +11919,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11925,7 +11929,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11936,7 +11940,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "ansi_term", "build-helper", @@ -12043,8 +12047,8 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "polkadot-primitives", @@ -12332,8 +12336,8 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12343,8 +12347,8 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12473,7 +12477,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ea2ac87de6cd66ca1e6038d10212c7c4e07a86a" +source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" dependencies = [ "clap 3.2.6", "jsonrpsee", @@ -13053,8 +13057,8 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "beefy-primitives", "bitvec", @@ -13107,7 +13111,7 @@ dependencies = [ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -13141,8 +13145,8 @@ dependencies = [ [[package]] name = "westend-runtime-constants" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "polkadot-primitives", @@ -13193,7 +13197,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "polkadot-runtime-common", "scale-info", "serde", @@ -13382,8 +13386,8 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13396,15 +13400,15 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-support", "frame-system", "log", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.23", + "polkadot-parachain 0.9.25", "scale-info", "sp-arithmetic", "sp-io", @@ -13416,8 +13420,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.23" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +version = "0.9.25" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "frame-benchmarking", "frame-support", @@ -13435,7 +13439,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#91680820118832ebddd64630ff47f8eeecc73ebb" +source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachains/runtimes/contracts/contracts-rococo/src/contracts.rs b/parachains/runtimes/contracts/contracts-rococo/src/contracts.rs index f577e9dc1d..47d8369d80 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/contracts.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/contracts.rs @@ -59,6 +59,7 @@ impl Config for Runtime { type ContractAccessWeight = DefaultContractAccessWeight; type MaxCodeLen = ConstU32<{ 128 * 1024 }>; type RelaxedMaxCodeLen = ConstU32<{ 256 * 1024 }>; + type MaxStorageKeyLen = ConstU32<128>; } pub struct Migrations; diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index e8639269fe..3ccc14f2db 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -536,7 +536,7 @@ impl pallet_contracts_rpc_runtime_api::ContractsApi, ) -> pallet_contracts_primitives::GetStorageResult { Contracts::get_storage(address, key) } From 4ae403205577673007cf19fe5fcf4f574f0902d8 Mon Sep 17 00:00:00 2001 From: Muharem Ismailov Date: Fri, 24 Jun 2022 10:31:51 +0200 Subject: [PATCH 136/238] README: installation instructions (#1403) --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 2df7aa0583..b415652cfc 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,10 @@ and treat as best. A Polkadot [collator](https://wiki.polkadot.network/docs/en/learn-collator) for the parachain is implemented by the `polkadot-parachain` binary (previously called `polkadot-collator`). +## Installation + +Before building Cumulus SDK based nodes / runtimes prepare your environment by following Substrate [installation instructions](https://docs.substrate.io/main-docs/install/). + ## Statemint 🪙 This repository also contains the Statemint runtime (as well as the canary runtime Statemine and the From f4b1f59e46f05b564f3fbb433b99ee2178fdbcca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:39:27 +0000 Subject: [PATCH 137/238] Bump smallvec from 1.8.0 to 1.8.1 (#1409) Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.8.0 to 1.8.1. - [Release notes](https://github.com/servo/rust-smallvec/releases) - [Commits](https://github.com/servo/rust-smallvec/compare/v1.8.0...v1.8.1) --- updated-dependencies: - dependency-name: smallvec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- parachain-template/runtime/Cargo.toml | 2 +- parachains/runtimes/assets/statemine/Cargo.toml | 2 +- parachains/runtimes/assets/statemint/Cargo.toml | 2 +- parachains/runtimes/assets/westmint/Cargo.toml | 2 +- parachains/runtimes/contracts/contracts-rococo/Cargo.toml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 91c5f46963..950cca9602 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10793,9 +10793,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "cc88c725d61fc6c3132893370cac4a0200e3fedf5da8331c570664b1987f5ca2" [[package]] name = "snap" diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index 77c8c12e12..56a64367b9 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -20,7 +20,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.6.1" +smallvec = "1.8.1" # Local pallet-template = { path = "../pallets/template", default-features = false } diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index 7fdcbbe90c..0dd770e38b 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -11,7 +11,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.6.1" +smallvec = "1.8.1" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index 9e549bc20e..268f90d0bc 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -11,7 +11,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } serde = { version = "1.0.137", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -smallvec = "1.6.1" +smallvec = "1.8.1" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index 3fc7d857ac..4401c558dc 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -11,7 +11,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.6.1" +smallvec = "1.8.1" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } diff --git a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml index 998da49648..e8920a1720 100644 --- a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -16,7 +16,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.6.1" +smallvec = "1.8.1" # Substrate sp-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } From 32a9df4bb5eb0ece80e43fbac249e80e1bbc9055 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 27 Jun 2022 12:00:21 +0200 Subject: [PATCH 138/238] Remove left over runtime sections for client builds (#1401) fix #1124 --- scripts/ci/changelog/templates/changes.md.tera | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/ci/changelog/templates/changes.md.tera b/scripts/ci/changelog/templates/changes.md.tera index 4a84608819..a6670a7ece 100644 --- a/scripts/ci/changelog/templates/changes.md.tera +++ b/scripts/ci/changelog/templates/changes.md.tera @@ -7,8 +7,14 @@ - {{ DOT }} Polkadot - {{ SUB }} Substrate +{% if env.RELEASE_TYPE and env.RELEASE_TYPE == "client" %} {% include "changes_client.md.tera" %} +{% else %} +{% include "migrations-runtime.md.tera" -%} {% include "changes_runtime.md.tera" %} +{% include "runtimes.md.tera" -%} +{% endif %} + {% include "changes_misc.md.tera" %} From f7490083e8b89c1168e08a80c918da4dac60aa5c Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 27 Jun 2022 12:15:13 +0200 Subject: [PATCH 139/238] Fix GHA hash (#1411) --- .github/workflows/release-01_rc-automation.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-01_rc-automation.yml b/.github/workflows/release-01_rc-automation.yml index 3d6b607e1e..7ca60b6c33 100644 --- a/.github/workflows/release-01_rc-automation.yml +++ b/.github/workflows/release-01_rc-automation.yml @@ -45,7 +45,7 @@ jobs: tag: ${{ steps.compute_tag.outputs.new_tag }} - id: create-issue-checklist-client - uses: JasonEtco/create-an-issue@v9e6213aec58987fa7d2f4deb8b256b99e63107a2 # v2.6.0 + uses: JasonEtco/create-an-issue@9e6213aec58987fa7d2f4deb8b256b99e63107a2 # v2.6.0 # Only create the issue if it's the first release candidate if: steps.compute_tag.outputs.first_rc == 'true' env: @@ -56,7 +56,7 @@ jobs: filename: .github/ISSUE_TEMPLATE/release-client.md - id: create-issue-checklist-runtime - uses: JasonEtco/create-an-issue@v9e6213aec58987fa7d2f4deb8b256b99e63107a2 # v2.6.0 + uses: JasonEtco/create-an-issue@9e6213aec58987fa7d2f4deb8b256b99e63107a2 # v2.6.0 # Only create the issue if it's the first release candidate if: steps.compute_tag.outputs.first_rc == 'true' env: From a940d16f7b0bdb68c3287f50f99afea2773b02ee Mon Sep 17 00:00:00 2001 From: bernardo Date: Wed, 29 Jun 2022 11:29:28 -0300 Subject: [PATCH 140/238] add wss bootnodes to statemine/t chainspec (#1378) * add wss bootnodes to statemint chainspec * add wss bootnodes to statemine chainspec --- parachains/chain-specs/statemine.json | 10 +++++++++- parachains/chain-specs/statemint.json | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/parachains/chain-specs/statemine.json b/parachains/chain-specs/statemine.json index 699ff9150d..272c100ba1 100644 --- a/parachains/chain-specs/statemine.json +++ b/parachains/chain-specs/statemine.json @@ -5,7 +5,15 @@ "bootNodes": [ "/ip4/34.77.217.152/tcp/30334/p2p/12D3KooWF63ZxKtZMYs5247WQA8fcTiGJb2osXykc31cmjwNLwem", "/ip4/34.77.119.77/tcp/30334/p2p/12D3KooWGowDwrXAh9cxkbPHPHuwMouFHrMcJhCVXcFS2B8vc5Ry", - "/ip4/35.188.228.71/tcp/30334/p2p/12D3KooWNqL6XroD35tDAs3DKG7do8dbKvdnACrR7Z3dcKesNcG4" + "/ip4/35.188.228.71/tcp/30334/p2p/12D3KooWNqL6XroD35tDAs3DKG7do8dbKvdnACrR7Z3dcKesNcG4", + "/dns/statemine-connect-ew1-0.parity-kusama-parachains.parity.io/tcp/30334/p2p/12D3KooWMzvdGcUXxacLdMQzRVrsP1mJrZHcrz8LtGbhLzve84Qx", + "/dns/statemine-connect-ew1-0.parity-kusama-parachains.parity.io/tcp/443/wss/p2p/12D3KooWMzvdGcUXxacLdMQzRVrsP1mJrZHcrz8LtGbhLzve84Qx", + "/dns/statemine-connect-ew1-1.parity-kusama-parachains.parity.io/tcp/30334/p2p/12D3KooWQmGf5z3DU1kKcZoLzMNgdbP31ybjuwxS1VGLKMUjq5ez", + "/dns/statemine-connect-ew1-1.parity-kusama-parachains.parity.io/tcp/443/wss/p2p/12D3KooWQmGf5z3DU1kKcZoLzMNgdbP31ybjuwxS1VGLKMUjq5ez", + "/dns/statemine-connect-ue4-0.parity-kusama-parachains.parity.io/tcp/30334/p2p/12D3KooWLm6iHcmA3YD4xn2zfbm4KLF5KSUqJJAnmt2UGr9o2PgB", + "/dns/statemine-connect-ue4-0.parity-kusama-parachains.parity.io/tcp/443/wss/p2p/12D3KooWLm6iHcmA3YD4xn2zfbm4KLF5KSUqJJAnmt2UGr9o2PgB", + "/dns/statemine-connect-ue4-1.parity-kusama-parachains.parity.io/tcp/30334/p2p/12D3KooWD8Bma5qPbq7N5qdED3Xy6GXHfvfk86TL8aVTQKxmWkHG", + "/dns/statemine-connect-ue4-1.parity-kusama-parachains.parity.io/tcp/443/wss/p2p/12D3KooWD8Bma5qPbq7N5qdED3Xy6GXHfvfk86TL8aVTQKxmWkHG" ], "telemetryEndpoints": null, "protocolId": null, diff --git a/parachains/chain-specs/statemint.json b/parachains/chain-specs/statemint.json index e2776f51cd..f6bd896ab9 100644 --- a/parachains/chain-specs/statemint.json +++ b/parachains/chain-specs/statemint.json @@ -6,7 +6,15 @@ "/ip4/34.65.251.121/tcp/30334/p2p/12D3KooWG3GrM6XKMM4gp3cvemdwUvu96ziYoJmqmetLZBXE8bSa", "/ip4/34.65.35.228/tcp/30334/p2p/12D3KooWMRyTLrCEPcAQD6c4EnudL3vVzg9zji3whvsMYPUYevpq", "/ip4/34.83.247.146/tcp/30334/p2p/12D3KooWE4jFh5FpJDkWVZhnWtFnbSqRhdjvC7Dp9b8b3FTuubQC", - "/ip4/104.199.117.230/tcp/30334/p2p/12D3KooWG9R8pVXKumVo2rdkeVD4j5PVhRTqmYgLHY3a4yPYgLqM" + "/ip4/104.199.117.230/tcp/30334/p2p/12D3KooWG9R8pVXKumVo2rdkeVD4j5PVhRTqmYgLHY3a4yPYgLqM", + "/dns/statemint-connect-ew6-0.parity-polkadot-parachains.parity.io/tcp/30334/p2p/12D3KooWLHqbcQtoBygf7GJgVjVa3TaeLuf7VbicNdooaCmQM2JZ", + "/dns/statemint-connect-ew6-0.parity-polkadot-parachains.parity.io/tcp/443/wss/p2p/12D3KooWLHqbcQtoBygf7GJgVjVa3TaeLuf7VbicNdooaCmQM2JZ", + "/dns/statemint-connect-ew6-1.parity-polkadot-parachains.parity.io/tcp/30334/p2p/12D3KooWNDrKSayoZXGGE2dRSFW2g1iGPq3fTZE2U39ma9yZGKd3", + "/dns/statemint-connect-ew6-1.parity-polkadot-parachains.parity.io/tcp/443/wss/p2p/12D3KooWNDrKSayoZXGGE2dRSFW2g1iGPq3fTZE2U39ma9yZGKd3", + "/dns/statemint-connect-uw1-0.parity-polkadot-parachains.parity.io/tcp/30334/p2p/12D3KooWApa2JW4rbLtgzuK7fjLMupLS9HZheX9cdkQKyu6AnGrP", + "/dns/statemint-connect-uw1-0.parity-polkadot-parachains.parity.io/tcp/443/wss/p2p/12D3KooWApa2JW4rbLtgzuK7fjLMupLS9HZheX9cdkQKyu6AnGrP", + "/dns/statemint-connect-uw1-1.parity-polkadot-parachains.parity.io/tcp/30334/p2p/12D3KooWRsVeHqRs2iKmjLiguxp8myL4G2mDAWhtX2jHwyWujseV", + "/dns/statemint-connect-uw1-1.parity-polkadot-parachains.parity.io/tcp/443/wss/p2p/12D3KooWRsVeHqRs2iKmjLiguxp8myL4G2mDAWhtX2jHwyWujseV" ], "telemetryEndpoints": null, "protocolId": null, From 149f691216854c321a93886a35a2087d0a62b7b2 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Wed, 29 Jun 2022 18:03:44 +0200 Subject: [PATCH 141/238] Fix Docker CI (#1418) --- .github/workflows/release-10_docker-manual.yml | 5 +++-- .github/workflows/release-10_docker.yml | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-10_docker-manual.yml b/.github/workflows/release-10_docker-manual.yml index 653c9b3796..6b596ae548 100644 --- a/.github/workflows/release-10_docker-manual.yml +++ b/.github/workflows/release-10_docker-manual.yml @@ -9,7 +9,7 @@ on: inputs: tag: description: release tag to build image for - default: polkadot-v0.9.17 + default: v0.9.230 required: true prerelease: description: is prerelease @@ -31,6 +31,7 @@ jobs: run: | echo "Repo: ${{ github.event.repository.full_name }}" + mkdir -p tmp; cd tmp for f in $BINARY $BINARY.asc $BINARY.sha256; do URL="https://github.com/${{ github.event.repository.full_name }}/releases/download/${{ github.event.inputs.tag }}/$f" echo " - Fetching $f from $URL" @@ -41,7 +42,7 @@ jobs: - name: Check files run: | - ls -al *collator* + ls -al *$BINARY* shasum -a 256 -c $BINARY.sha256 sha_result=$? diff --git a/.github/workflows/release-10_docker.yml b/.github/workflows/release-10_docker.yml index 3ce5fd8ee4..bb5f180014 100644 --- a/.github/workflows/release-10_docker.yml +++ b/.github/workflows/release-10_docker.yml @@ -32,6 +32,7 @@ jobs: echo "Prerelease: ${{ github.event.release.prerelease }}" echo "Assets: ${{ github.event.release.assets }}" + mkdir -p tmp; cd tmp for f in $BINARY $BINARY.asc $BINARY.sha256; do URL="https://github.com/${{ github.event.repository.full_name }}/releases/download/${{ github.event.release.tag_name }}/$f" echo " - Fetching $f from $URL" @@ -42,7 +43,7 @@ jobs: - name: Check files run: | - ls -al *collator* + ls -al *$BINARY* shasum -a 256 -c $BINARY.sha256 sha_result=$? From 6962b1b7f57f9a3c49ac14b4a8c349b6114efa75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Silva=20de=20Souza?= <77391175+joao-paulo-parity@users.noreply.github.com> Date: Thu, 30 Jun 2022 05:26:35 -0300 Subject: [PATCH 142/238] add release-engineering to CI files' reviewers (#1413) --- .github/pr-custom-review.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/pr-custom-review.yml b/.github/pr-custom-review.yml index 821f528405..18e2482b2a 100644 --- a/.github/pr-custom-review.yml +++ b/.github/pr-custom-review.yml @@ -19,19 +19,20 @@ rules: check_type: changed_files condition: include: .* - # excluding files from 'Runtime files' and 'CI team' rules + # excluding files from 'Runtime files' and 'CI files' rules exclude: ^parachains/runtimes/assets/(statemine|statemint)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.* min_approvals: 2 teams: - core-devs - - name: CI team + - name: CI files check_type: changed_files condition: include: ^\.gitlab-ci\.yml|^scripts/ci/.*|^\.github/.* min_approvals: 2 teams: - ci + - release-engineering prevent-review-request: teams: From eff2c9e498ba51766921eed2055aa3a01848dfbd Mon Sep 17 00:00:00 2001 From: Chevdor Date: Thu, 30 Jun 2022 12:13:07 +0200 Subject: [PATCH 143/238] Second part of the Docker CI fix (#1420) * Switch to defautl working-directory * Fix manual docker CI * Fix ENV/Context * Fix both CI workflows --- .github/workflows/release-10_docker-manual.yml | 16 +++++++++++++--- .github/workflows/release-10_docker.yml | 12 ++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-10_docker-manual.yml b/.github/workflows/release-10_docker-manual.yml index 6b596ae548..0da9e0c4f7 100644 --- a/.github/workflows/release-10_docker-manual.yml +++ b/.github/workflows/release-10_docker-manual.yml @@ -13,25 +13,34 @@ on: required: true prerelease: description: is prerelease - default: false + default: "false" required: true jobs: docker_build_publish: env: BINARY: polkadot-parachain + TMP: tmp runs-on: ubuntu-latest + steps: - name: Checkout sources uses: actions/checkout@v3 with: ref: ${{ github.event.release.tag_name }} + - name: Prepare temp folder + run: | + mkdir ${TMP} + ls -al + - name: Fetch files from release + working-directory: ${{ env.TMP }} run: | echo "Repo: ${{ github.event.repository.full_name }}" + echo "Working from folder $(pwd)" + ls -al - mkdir -p tmp; cd tmp for f in $BINARY $BINARY.asc $BINARY.sha256; do URL="https://github.com/${{ github.event.repository.full_name }}/releases/download/${{ github.event.inputs.tag }}/$f" echo " - Fetching $f from $URL" @@ -41,6 +50,7 @@ jobs: ls -al - name: Check files + working-directory: ${{ env.TMP }} run: | ls -al *$BINARY* shasum -a 256 -c $BINARY.sha256 @@ -77,7 +87,7 @@ jobs: run: | export OWNER=$DOCKERHUB_ORG mkdir -p target/release - cp -f $BINARY* target/release/ + cp -f ${TMP}/$BINARY* target/release/ ./docker/scripts/build-injected-image.sh - name: Login to Dockerhub diff --git a/.github/workflows/release-10_docker.yml b/.github/workflows/release-10_docker.yml index bb5f180014..9f8eb3c91a 100644 --- a/.github/workflows/release-10_docker.yml +++ b/.github/workflows/release-10_docker.yml @@ -15,14 +15,22 @@ jobs: docker_build_publish: env: BINARY: polkadot-parachain + TMP: tmp runs-on: ubuntu-latest + steps: - name: Checkout sources uses: actions/checkout@v3 with: ref: ${{ github.event.release.tag_name }} + - name: Prepare temp folder + run: | + mkdir ${TMP} + ls -al + - name: Fetch files from release + working-directory: ${{ env.TMP }} run: | echo "Repo: ${{ github.event.repository.full_name }}" @@ -32,7 +40,6 @@ jobs: echo "Prerelease: ${{ github.event.release.prerelease }}" echo "Assets: ${{ github.event.release.assets }}" - mkdir -p tmp; cd tmp for f in $BINARY $BINARY.asc $BINARY.sha256; do URL="https://github.com/${{ github.event.repository.full_name }}/releases/download/${{ github.event.release.tag_name }}/$f" echo " - Fetching $f from $URL" @@ -42,6 +49,7 @@ jobs: ls -al - name: Check files + working-directory: ${{ env.TMP }} run: | ls -al *$BINARY* shasum -a 256 -c $BINARY.sha256 @@ -78,7 +86,7 @@ jobs: run: | export OWNER=$DOCKERHUB_ORG mkdir -p target/release - cp -f $BINARY* target/release/ + cp -f ${TMP}/$BINARY* target/release/ ./docker/scripts/build-injected-image.sh - name: Login to Dockerhub From cc8c8347e41365c1906a784b8480e329b5986f88 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Fri, 1 Jul 2022 11:42:35 +0200 Subject: [PATCH 144/238] [ci] Send bench results to S3 (#1417) * [ci] Send bench results to S3 * move publish stage --- .gitlab-ci.yml | 38 ++++++++++++++++++++++++-------------- scripts/benchmarks-ci.sh | 6 +++--- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aea3b58a56..b611fdf891 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,9 +8,9 @@ stages: - test - build - - publish - benchmarks-build - benchmarks-run + - publish default: interruptible: true @@ -47,7 +47,6 @@ variables: .common-refs: &common-refs # these jobs run always* rules: - - if: $CI_PIPELINE_SOURCE == "web" - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_COMMIT_REF_NAME == "master" - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs @@ -56,27 +55,19 @@ variables: .publish-refs: &publish-refs rules: - - if: $CI_PIPELINE_SOURCE == "web" && - $CI_COMMIT_REF_NAME == "master" # run from web and on master branch - - if: $CI_PIPELINE_SOURCE == "web" && - $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # run from web and on version tag (i.e. v1.0, v2.1rc1) + - if: $CI_COMMIT_REF_NAME == "master" - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 # run benchmarks manually only on release-parachains-v* branch .benchmarks-manual-refs: &benchmarks-manual-refs rules: - - if: $CI_PIPELINE_SOURCE == "web" && - $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # run from web and on branch release-parachains-v* (i.e. 1.0, 2.1rc1, 3) - when: manual - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000 when: manual # run benchmarks only on release-parachains-v* branch .benchmarks-refs: &benchmarks-refs rules: - - if: $CI_PIPELINE_SOURCE == "web" && - $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # run from web and on branch release-parachains-v* (i.e. 1.0, 2.1rc1, 3) - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000 .docker-env: &docker-env @@ -284,9 +275,9 @@ benchmarks: <<: *collect-artifacts <<: *benchmarks-refs script: - - ./scripts/benchmarks-ci.sh assets statemine > ./artifacts/bench-statemine.log - - ./scripts/benchmarks-ci.sh assets statemint > ./artifacts/bench-statemint.log - - ./scripts/benchmarks-ci.sh assets westmint > ./artifacts/bench-westmint.log + - ./scripts/benchmarks-ci.sh assets statemine + - ./scripts/benchmarks-ci.sh assets statemint + - ./scripts/benchmarks-ci.sh assets westmint - git status - export BRANCHNAME="weights-${CI_COMMIT_BRANCH}" # Set git config @@ -309,6 +300,25 @@ benchmarks: tags: - weights +publish-benchmarks-s3: + stage: publish + <<: *kubernetes-env + image: paritytech/awscli:latest + <<: *benchmarks-refs + needs: + - job: benchmarks + artifacts: true + variables: + GIT_STRATEGY: none + BUCKET: "releases.parity.io" + PREFIX: "cumulus/$CI_COMMIT_REF_NAME/benchmarks" + script: + - echo "___Removing binary from artifacts___" + - rm -f ./artifacts/polkadot-parachain + - echo "___Publishing benchmark results___" + - aws s3 sync ./artifacts/ s3://${BUCKET}/${PREFIX}/ + after_script: + - aws s3 ls s3://${BUCKET}/${PREFIX}/ --recursive --human-readable --summarize #### stage: .post diff --git a/scripts/benchmarks-ci.sh b/scripts/benchmarks-ci.sh index 8b6afbebd1..b70277b211 100755 --- a/scripts/benchmarks-ci.sh +++ b/scripts/benchmarks-ci.sh @@ -22,17 +22,17 @@ pallets=( frame_system ) -for p in ${pallets[@]} +for pallet in ${pallets[@]} do ./artifacts/polkadot-parachain benchmark pallet \ --chain=$benchmarkRuntimeName \ --execution=wasm \ --wasm-execution=compiled \ - --pallet=$p \ + --pallet=$pallet \ --extrinsic='*' \ --steps=$steps \ --repeat=$repeat \ --json \ --header=./file_header.txt \ - --output=$benchmarkOutput + --output=$benchmarkOutput >> ./artifacts/${pallet}_benchmark.json done From b80db21988c32b48990f316422ef4e565fa18f63 Mon Sep 17 00:00:00 2001 From: Ignacio Palacios Date: Tue, 5 Jul 2022 12:24:54 +0200 Subject: [PATCH 145/238] Adding integration tests (#1426) * adding parachains integration tests * final integration-tests * Update parachains/integration-tests/statemine/xcm/2_ump.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemine/xcm/1_dmp.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemine/xcm/4_hrmp.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemint/xcm/1_dmp.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemint/xcm/2_ump.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemint/xcm/4_hrmp.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemine/xcm/3_hrmp-open-channels.yml Co-authored-by: Chevdor * Update parachains/integration-tests/statemint/xcm/3_hrmp-open-channels.yml Co-authored-by: Chevdor * clean up & trailling spaces * leftovers Co-authored-by: Chevdor --- .gitignore | 1 + .../integration-tests/statemine/config.toml | 49 +++ .../statemine/xcm/0_init.yml | 144 +++++++ .../integration-tests/statemine/xcm/1_dmp.yml | 254 +++++++++++ .../integration-tests/statemine/xcm/2_ump.yml | 196 +++++++++ .../statemine/xcm/3_hrmp-open-channels.yml | 402 ++++++++++++++++++ .../statemine/xcm/4_hrmp.yml | 353 +++++++++++++++ .../integration-tests/statemint/config.toml | 49 +++ .../statemint/xcm/0_init.yml | 144 +++++++ .../integration-tests/statemint/xcm/1_dmp.yml | 254 +++++++++++ .../integration-tests/statemint/xcm/2_ump.yml | 197 +++++++++ .../statemint/xcm/3_hrmp-open-channels.yml | 400 +++++++++++++++++ .../statemint/xcm/4_hrmp.yml | 352 +++++++++++++++ 13 files changed, 2795 insertions(+) create mode 100644 parachains/integration-tests/statemine/config.toml create mode 100644 parachains/integration-tests/statemine/xcm/0_init.yml create mode 100644 parachains/integration-tests/statemine/xcm/1_dmp.yml create mode 100644 parachains/integration-tests/statemine/xcm/2_ump.yml create mode 100644 parachains/integration-tests/statemine/xcm/3_hrmp-open-channels.yml create mode 100644 parachains/integration-tests/statemine/xcm/4_hrmp.yml create mode 100644 parachains/integration-tests/statemint/config.toml create mode 100644 parachains/integration-tests/statemint/xcm/0_init.yml create mode 100644 parachains/integration-tests/statemint/xcm/1_dmp.yml create mode 100644 parachains/integration-tests/statemint/xcm/2_ump.yml create mode 100644 parachains/integration-tests/statemint/xcm/3_hrmp-open-channels.yml create mode 100644 parachains/integration-tests/statemint/xcm/4_hrmp.yml diff --git a/.gitignore b/.gitignore index 9b34b3bb43..24eaf98681 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ polkadot_argument_parsing **/chains/ *.iml .env +bin diff --git a/parachains/integration-tests/statemine/config.toml b/parachains/integration-tests/statemine/config.toml new file mode 100644 index 0000000000..510f3cd3b0 --- /dev/null +++ b/parachains/integration-tests/statemine/config.toml @@ -0,0 +1,49 @@ +[relaychain] +default_command = "./bin/polkadot" +default_args = [ "-lparachain=debug" ] +chain = "kusama-local" + + [[relaychain.nodes]] + name = "alice" + ws_port = 9900 + validator = true + + [[relaychain.nodes]] + name = "bob" + validator = true + + [[relaychain.nodes]] + name = "charlie" + validator = true + + [[relaychain.nodes]] + name = "dave" + validator = true + +[[parachains]] +id = 1000 +chain = "statemine-local" +cumulus_based = true + + [[parachains.collators]] + name = "collator1" + ws_port = 9910 + command = "./bin/polkadot-parachain" + + [[parachains.collators]] + name = "collator2" + command = "./bin/polkadot-parachain" + +[[parachains]] +id = 2000 +chain = "penpal-kusama-2000" +cumulus_based = true + + [[parachains.collators]] + name = "collator3" + ws_port = 9920 + command = "./bin/polkadot-parachain" + + [[parachains.collators]] + name = "collator4" + command = "./bin/polkadot-parachain" diff --git a/parachains/integration-tests/statemine/xcm/0_init.yml b/parachains/integration-tests/statemine/xcm/0_init.yml new file mode 100644 index 0000000000..6f0db4cd61 --- /dev/null +++ b/parachains/integration-tests/statemine/xcm/0_init.yml @@ -0,0 +1,144 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + penpal_parachain: &penpal_parachain + wsPort: 9920 + paraId: &pp_id 2000 + variables: + common: + xcm_verison: &xcm_version '2' + require_weight_at_most: &weight_at_most 1000000000 + chains: + relay_chain: + signer: &rc_signer //Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + penpal_parachain: + signer: &pp_signer //Alice + decodedCalls: + ap_force_xcm_version: + chain: *assets_parachain + pallet: polkadotXcm + call: forceXcmVersion + args: [ + { # location + parents: 1, + interior: Here + }, + *xcm_version # xcmVersion + ] + +tests: + - name: Initialize Chains + its: + - name: XCM supported versions between chains + actions: + - extrinsics: # Relay Chain sets supported version for Assset Parachain + - chain: *relay_chain + sudo: true + signer: *rc_signer + pallet: xcmPallet + call: forceXcmVersion + args: [ + { # location + parents: 0, + interior: { + X1: { + Parachain: *ap_id + } + } + }, + *xcm_version # xcmVersion + ] + events: + - name: sudo.Sudid + attributes: + type: Result + value: Ok + - name: xcmPallet.SupportedVersionChanged + attribute: + type: u32 + value: *xcm_version + - extrinsics: # Relay Chain sets supported version for Penpal Parachain + - chain: *relay_chain + sudo: true + signer: *rc_signer + pallet: xcmPallet + call: forceXcmVersion + args: [ + { # location + parents: 0, + interior: { + X1: { + Parachain: *pp_id + } + } + }, + *xcm_version # xcmVersion + ] + events: + - name: sudo.Sudid + attributes: + type: Result + value: Ok + - name: xcmPallet.SupportedVersionChanged + attribute: + type: u32 + value: *xcm_version + - extrinsics: # Assset Parachain sets supported version for Relay Chain through it + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $ap_force_xcm_version + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: xcmPallet.Sent + - name: polkadotXcm.SupportedVersionChanged + chain: *assets_parachain + attribute: + type: u32 + value: *xcm_version + - extrinsics: # Penpal Parachain sets supported version for Relay Chain + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: forceXcmVersion + args: [ + { # location + parents: 1, + interior: Here + }, + *xcm_version # xcmVersion + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.SupportedVersionChanged + attribute: + type: u32 + value: *xcm_version diff --git a/parachains/integration-tests/statemine/xcm/1_dmp.yml b/parachains/integration-tests/statemine/xcm/1_dmp.yml new file mode 100644 index 0000000000..b5040c740c --- /dev/null +++ b/parachains/integration-tests/statemine/xcm/1_dmp.yml @@ -0,0 +1,254 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + variables: + relay_chain: + signer: &rc_signer //Alice + wallet: &rc_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + assets_parachain_destination: &ap_dest { v1: { parents: 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_account: &ap_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + assets_parachain_beneficiary: &ap_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *ap_acc }}}}} + ksm: &rc_ksm { concrete: { parents: 0, interior: { here: true }}} + amount: &amount 1000000000000 + ksm_fungible: &rc_ksm_fungible { id: *rc_ksm, fun: { fungible: *amount }} + require_weight_at_most: &rc_weight_at_most 1000000000 + assets_parachain_account: + wallet: &ap_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + asset_id: &asset_id 1 + asset_min_balance: &asset_ed 1000 + decodedCalls: + force_create_asset: + chain: *assets_parachain + pallet: assets + call: forceCreate + args: [ + *asset_id, + { Id: *ap_wallet }, # owner + true, # isSufficient + *asset_ed # minBalance + ] + +tests: + - name: DMP + its: [] + describes: + - name: xcmPallet.limitedTeleportAssets + before: &before_get_balances + - name: Get the balances of the Relay Chain's sender & Assets Parachain's receiver + actions: + - queries: + balance_rc_sender_before: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + balance_ap_receiver_before: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + its: + - name: Should teleport native assets from the Relay Chain to the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: limitedTeleportAssets + args: [ + *ap_dest, # destination + *ap_benf, # beneficiary + { v1: [ *rc_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + - queries: + balance_rc_sender_after: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + balance_ap_receiver_after: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + + - name: Should reduce the balance of the sender + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_rc_sender_before, + after: $balance_rc_sender_after, + }, + amount: *amount + } + ] + + - name: Should increase the balance of the receiver + actions: + - asserts: + balanceIncreased: + args: [ + { + balances: { + before: $balance_ap_receiver_before, + after: $balance_ap_receiver_after, + } + } + ] + + - name: xcmPallet.send | Superuser - Transact(assets.forceCreate) + its: + - name: Relay Chain Superuser account SHOULD be able to execute a XCM Transact instruction in the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *rc_weight_at_most, + call: $force_create_asset + } + } + ] + } + ] + events: + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - queries: + forced_created_asset: + chain: *assets_parachain + pallet: assets + call: asset + args: [ *asset_id ] + - asserts: + isSome: + args: [ $forced_created_asset ] + + - name: xcmPallet.send | Native - Transact(assets.forceCreate) + its: + - name: Relay Chain Native account SHOULD NOT be able to execute a XCM Transact instruction in the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Native, + requireWeightAtMost: *rc_weight_at_most, + call: $force_create_asset + } + } + ] + } + ] + events: + - name: system.ExtrinsicFailed + attribute: + type: SpRuntimeDispatchError + value: BadOrigin + + - name: xcmPallet.limitedReserveTransferAssets + before: *before_get_balances + its: + - name: SHOULD NOT reserved transfer native assets from the Relay Chain to the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: limitedReserveTransferAssets + args: [ + *ap_dest, # destination + *ap_benf, # beneficiary + { v1: [ *rc_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 750,645,000 + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isIncomplete: true + value: ['1,000,000,000' , UntrustedReserveLocation] + - queries: + balance_rc_sender_after: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + balance_ap_receiver_after: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + + - name: Should reduce the balance of the sender + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_rc_sender_before, + after: $balance_rc_sender_after, + }, + amount: *amount + } + ] + + - name: Should keep the balance of the receiver + actions: + - asserts: + equal: + args: + [ + $balance_ap_receiver_before, + $balance_ap_receiver_after + ] diff --git a/parachains/integration-tests/statemine/xcm/2_ump.yml b/parachains/integration-tests/statemine/xcm/2_ump.yml new file mode 100644 index 0000000000..6c8a816d16 --- /dev/null +++ b/parachains/integration-tests/statemine/xcm/2_ump.yml @@ -0,0 +1,196 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + variables: + common: + amount: &amount 1000000000000 + require_weight_at_most: &weight_at_most 1000000000 + relay_chain: + signer: &rc_signer //Alice + wallet: &rc_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F #Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_account: &ap_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + assets_parachain_beneficiary: &ap_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *ap_acc }}}}} + ksm: &rc_ksm { concrete: { 0, interior: { here: true }}} + ksm_fungible: &rc_ksm_fungible { id: *rc_ksm, fun: { fungible: *amount }} + assets_parachain_account: + signer: &ap_signer //Alice + wallet: &ap_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + relay_chain_destination: &rc_dest { v1: { parents: 1, interior: { here: true }}} + assets_parachain_account: &rc_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' #Alice + relay_chain_beneficiary: &rc_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *rc_acc }}}}} + ksm: &ap_ksm { concrete: { parents: 1, interior: { here: true }}} + ksm_fungible: &ap_ksm_fungible { id: *ap_ksm, fun: { fungible: *amount }} + decodedCalls: + system_remark: + chain: *relay_chain + pallet: system + call: remark + args: [ 0x0011 ] + +tests: + - name: UMP + describes: + - name: polkadotXcm.limitedTeleportAssets + before: + - name: DEPENDANCY | Do a 'limitedTeleportAssets' from the Relay Chain to the Assets Parachain to have funds to send them back + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: limitedTeleportAssets + args: [ + *ap_dest, # destination + *ap_benf, # beneficiary + { v1: [ *rc_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + + - name: Get the balances of the Assets Parachain's sender & Relay Chain's receiver + actions: + - queries: + balance_ap_sender_before: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + balance_rc_receiver_before: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + its: + - name: Should teleport native assets back from Assets Parachain to the Relay Chain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedTeleportAssets + args: [ + *rc_dest, # destination + *rc_benf, # beneficiary + { v1: [ *ap_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - name: ump.ExecutedUpward + chain: *relay_chain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 297,578,000 + - queries: + balance_ap_sender_after: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + balance_rc_receiver_after: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + + - name: Should reduce the balance of the sender + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_ap_sender_before, + after: $balance_ap_sender_after, + }, + amount: *amount + } + ] + + - name: Should increase the balance of the receiver + actions: + - asserts: + balanceIncreased: + args: [ + { + balances: { + before: $balance_rc_receiver_before, + after: $balance_rc_receiver_after, + } + } + ] + + - name: polkadotXcm.send | Native - Transact(system.remark) + its: + - name: Assets Parachain SHOULD NOT be able to dipatch 'send' call + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $system_remark + } + } + ] + } + ] + events: + - name: system.ExtrinsicFailed + attribute: + type: SpRuntimeDispatchError + value: BadOrigin + + - name: polkadotXcm.limitedReserveTransferAssets + its: + - name: Should NOT be able to reserve transfer native assets from the Assets Parachain to the Relay Chain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedReserveTransferAssets + args: [ + *rc_dest, # destination + *rc_benf, # beneficiary + { v1: [ *ap_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attribute: + type: XcmV2TraitsOutcome + isError: true + value: Barrier diff --git a/parachains/integration-tests/statemine/xcm/3_hrmp-open-channels.yml b/parachains/integration-tests/statemine/xcm/3_hrmp-open-channels.yml new file mode 100644 index 0000000000..0745c30742 --- /dev/null +++ b/parachains/integration-tests/statemine/xcm/3_hrmp-open-channels.yml @@ -0,0 +1,402 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + penpal_parachain: &penpal_parachain + wsPort: 9920 + paraId: &pp_id 2000 + variables: + common: + amount: &amount 2000000000000 + require_weight_at_most: &weight_at_most 1000000000 + hrmp_channels: + proposed_max_capacity: &max_capacity 8 + proposed_max_message_size: &max_message_size 8192 + channel: &channel { + maxCapacity: 8, + maxTotalSize: 8192, + maxMessageSize: 8192, + msgCount: 0, + totalSize: 0, + mqcHead: null, + senderDeposit: 0, + recipientDeposit: 0 + } + chains: + relay_chain: + signer: &rc_signer //Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_account: &ap_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + assets_parachain_beneficiary: &ap_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *ap_acc }}}}} + ksm: &rc_ksm { concrete: { 0, interior: { here: true }}} + ksm_fungible: &rc_ksm_fungible { id: *rc_ksm, fun: { fungible: *amount }} + assets_parachain_account: + sovereign_account: &ap_sovereign F7fq1jSNVTPfJmaHaXCMtatT1EZefCUsa7rRiQVNR5efcah + relay_chain_destination: &rc_dest { v1: { parents: 1, interior: { here: true }}} + penpal_parachain: + sovereign_account: &pp_sovereign F7fq1jMZkfuCuoMTyiEVAP2DMpMt18WopgBqTJznLihLNbZ + signer: &pp_signer //Alice + decodedCalls: + init_open_channel_with_ap: + chain: *relay_chain + pallet: hrmp + call: hrmpInitOpenChannel + args: [ + *ap_id, # recipient + *max_capacity, # proposedMaxCapacity + *max_message_size # proposedMaxMessageSize + ] + init_open_channel_with_cp: + chain: *relay_chain + pallet: hrmp + call: hrmpInitOpenChannel + args: [ + *pp_id, # recipient + *max_capacity, # proposedMaxCapacity + *max_message_size # proposedMaxMessageSize + ] + accept_open_channel_with_ap: + chain: *relay_chain + pallet: hrmp + call: hrmpAcceptOpenChannel + args: [ + *ap_id, # recipient + ] + accept_init_open_request_from_cp: + chain: *relay_chain + pallet: hrmp + call: hrmpAcceptOpenChannel + args: [ + *pp_id, # sender + ] + xcm_accept_init_open_request_from_cp: + chain: *assets_parachain + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $accept_init_open_request_from_cp + } + } + ] + } + ] + xcm_init_open_channel_with_cp: + chain: *assets_parachain + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $init_open_channel_with_cp + } + } + ] + } + ] + +tests: + - name: HRMP + beforeEach: + - name: DEPENDANCY | Penpal Parachain Sovereign account in the Relay Chain needs to be funded + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: balances + call: transfer + args: [ + *pp_sovereign, # destination + *amount, # value + ] + events: + - name: balances.Transfer + + - name: DEPENDANCY | Assets Parachain Sovereign account in the Relay Chain needs to be funded + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: balances + call: transfer + args: [ + *ap_sovereign, # destination + *amount, # value + ] + events: + - name: balances.Transfer + describes: + - name: hrmp.hrmpInitOpenChannel (Penpal Parachain → Assets Parachain) + its: + - name: Penpal Parachain sends a request to the Relay Chain to open a channel with the Assets Parchain + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $init_open_channel_with_ap + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.Sent + - name: ump.ExecutedUpward + chain: *relay_chain + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000 + - name: hrmp.OpenChannelRequested + chain: *relay_chain + - queries: + requested_channels: + chain: *relay_chain + pallet: hrmp + call: hrmpOpenChannelRequestsList + args: [] + - asserts: + equal: + args: [ + $requested_channels, + [ + { + sender: *pp_id, + recipient: *ap_id + } + ] + ] + + - name: hrmp.hrmpAcceptOpenChannel (Assets Parachain → Penpal Parachain) + its: + - name: Assets Parachain sends a response to the Relay Chain accepting the Penpal Parachain's request for openning a HRMP channel + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $xcm_accept_init_open_request_from_cp + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - name: polkadotXcm.Sent + chain: *assets_parachain + - name: ump.ExecutedUpward + timeout: 40000 + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,160,892,000 + - name: hrmp.OpenChannelAccepted + timeout: 40000 + - queries: + open_channels: + chain: *relay_chain + pallet: hrmp + call: hrmpChannels + delay: 80000 + args: [ + { + sender: *pp_id, + recipient: *ap_id + } + ] + - asserts: + equal: + args: [ + $open_channels, + *channel + ] + + - name: hrmp.hrmpInitOpenChannel (Assets Parachain → Penpal Parachain) + its: + - name: Assets Parchain sends a request to the Relay Chain to open a channel with a Penpal Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $xcm_init_open_channel_with_cp + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - name: polkadotXcm.Sent + chain: *assets_parachain + - name: ump.ExecutedUpward + timeout: 40000 + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,160,892,000 + - name: hrmp.OpenChannelRequested + timeout: 40000 + - queries: + requested_channels: + chain: *relay_chain + pallet: hrmp + call: hrmpOpenChannelRequestsList + args: [] + - asserts: + equal: + args: [ + $requested_channels, + [ + { + sender: *ap_id, + recipient: *pp_id + } + ] + ] + + - name: hrmp.hrmpAcceptOpenChannel (Penpal Parachain → Assets Parachain) + its: + - name: Penpal Parachain sends a response to the Relay Chain accepting the Assets Parachain's request for openning a HRMP channel + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $accept_open_channel_with_ap + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.Sent + - name: ump.ExecutedUpward + chain: *relay_chain + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000 + - name: hrmp.OpenChannelAccepted + chain: *relay_chain diff --git a/parachains/integration-tests/statemine/xcm/4_hrmp.yml b/parachains/integration-tests/statemine/xcm/4_hrmp.yml new file mode 100644 index 0000000000..a8b79ed3b9 --- /dev/null +++ b/parachains/integration-tests/statemine/xcm/4_hrmp.yml @@ -0,0 +1,353 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + penpal_parachain: &penpal_parachain + wsPort: 9920 + paraId: &pp_id 2000 + variables: + common: + amount: &amount 1000000000000 + require_weight_at_most: &weight_at_most 1000000000 + amount_to_send: &amount_to_send 500000000000 + chains: + relay_chain: + signer: &rc_signer //Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_dest_routed: &ap_dest_routed { v1: { parents: 1, interior: { x1: { parachain: *ap_id } }}} + assets_parachain_account: + signer: &ap_signer //Alice + wallet: &ap_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + asset_id: &asset_id 2 + assets_pallet_id: &assets_pallet_id 50 + asset_min_balance: &asset_ed 1000 + penpal_parachain_destination: &pp_dest { v1: { parents: 1, interior: { x1: { parachain: *pp_id } }}} + ksm: &ap_ksm { concrete: { parents: 1, interior: { here: true }}} + ksm_fungible: &ap_ksm_fungible { id: *ap_ksm, fun: { fungible: *amount }} + suff_asset: &suff_asset { concrete: { parents: 0, interior: { x2: [ { PalletInstance: *assets_pallet_id }, { GeneralIndex: *asset_id } ] }}} + suff_asset_fail: &suff_asset_fail { concrete: { parents: 0, interior: { x2: [ { PalletInstance: *assets_pallet_id }, { GeneralIndex: 3 } ] }}} + suff_asset_fungible: &ap_suff_asset_fungible { id: *suff_asset, fun: { fungible: *weight_at_most }} + suff_asset_fungible_fail: &ap_suff_asset_fungible_fail { id: *suff_asset_fail, fun: { fungible: *weight_at_most }} + penpal_parachain: + sovereign_account: &pp_sovereign_sibl FBeL7EAeUroLWXW1yfKboiqTqVfbRBcsUKd6QqVf4kGBySS + signer: &pp_signer //Alice + penpal_parachain_account: &pp_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + decodedCalls: + force_create_asset: + chain: *assets_parachain + pallet: assets + call: forceCreate + args: [ + *asset_id, + { Id: *ap_wallet }, # owner + true, # isSufficient + *asset_ed # minBalance + ] + system_remark_with_event: + chain: *assets_parachain + pallet: system + call: remarkWithEvent + args: [ 0x0011 ] + +tests: + - name: HRMP + describes: + - name: polkadotXcm.limitedReserveTransferAssets (Asset) | Assets Parachain -> Penpal Parachain + before: + - name: DEPENDANCY | A sufficient Asset should exist in the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $force_create_asset + } + } + ] + } + ] + events: + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - queries: + forced_created_asset: + chain: *assets_parachain + pallet: assets + call: asset + args: [ *asset_id ] + - asserts: + isSome: + args: [ $forced_created_asset ] + + - name: DEPENDANCY | Some Assets should be minted for the sender + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: assets + call: mint + args: [ + *asset_id, + *ap_wallet, + *amount + ] + events: + - name: assets.Issued + + its: + - name: Assets Parachain should be able to reserve transfer an Asset to Penpal Parachain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedReserveTransferAssets + args: [ + *pp_dest, # destination + { # beneficiary + V1: { + parents: 0, + interior: { + X1: { + AccountId32: { + network: Any, + id: *pp_acc + } + } + } + } + }, + { # assets + V1: [ + { + id: { + Concrete: { + parents: 0, + interior: { + X2: [ + { + PalletInstance: 50 + }, + { + GeneralIndex: *asset_id + } + ] + } + } + }, + fun: { + Fungible: *amount_to_send + } + } + ] + }, + 0, # feeAssetItem + Unlimited # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,000,000,000 + - name: assets.Transferred + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - name: assets.Transferred + attributes: + type: u128 + value: *amount_to_send + + - name: polkadotXcm.limitedReserveTransferAssets (KSM) | Assets Parachain -> Penpal Parachain + its: + - name: Assets Parachain should be able to reserve transfer KSM to Penpal Parachain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedReserveTransferAssets + args: [ + *pp_dest, # destination + { # beneficiary + V1: { + parents: 0, + interior: { + X1: { + AccountId32: { + network: Any, + id: *pp_acc + } + } + } + } + }, + { # assets + V1: [ + *ap_ksm_fungible + ] + }, + 0, # feeAssetItem + Unlimited # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,000,000,000 + - name: balances.Endowed + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - name: balances.Endowed + attributes: + type: u128 + value: *amount + + - name: polkadotXcm.send( system.remarkWithEvent() ) | Penpal Parachain -> Assets Parachain + before: + - name: Get the asset balance of the Penpal Parachain Sovereign account in Assets Parachain + actions: + - queries: + assets_balance_pp_sovereign_before: + chain: *assets_parachain + pallet: assets + call: account + args: [ + *asset_id, + *pp_sovereign_sibl + ] + its: + - name: Penpal Parachain should be able to send XCM message paying its fee with sufficient asset in Assets Parachain + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *ap_dest_routed, # destination + { + v2: [ #message + { + WithdrawAsset: [*ap_suff_asset_fungible] + }, + { + BuyExecution: { + fees: *ap_suff_asset_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: SovereignAccount, + requireWeightAtMost: *weight_at_most, + call: $system_remark_with_event + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.Sent + - name: assets.Burned + chain: *assets_parachain + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - name: assets.Issued + chain: *assets_parachain + attributes: + type: u32 + value: *asset_id + - name: system.Remarked + chain: *assets_parachain + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - queries: + assets_balance_pp_sovereign_after: + chain: *assets_parachain + pallet: assets + call: account + args: [ + *asset_id, + *pp_sovereign_sibl + ] + + - name: Should reduce the assets balance of the Penpal Parachain's SovereignAccount in the Assets Parachain + actions: + - asserts: + assetsDecreased: + args: [ + { + balances: { + before: $assets_balance_pp_sovereign_before, + after: $assets_balance_pp_sovereign_after, + }, + } + ] + + - name: Penpal Parachain SHOULD NOT be able to send XCM message paying its fee with sufficient assets if not enough balance + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *ap_dest_routed, # destination + { + v2: [ #message + { + WithdrawAsset: [*ap_suff_asset_fungible_fail] + }, + { + BuyExecution: { + fees: *ap_suff_asset_fungible_fail, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: SovereignAccount, + requireWeightAtMost: *weight_at_most, + call: $system_remark_with_event + } + } + ] + } + ] + events: + - name: xcmpQueue.Fail + chain: *assets_parachain + attributes: + type: XcmV2TraitsError + value: FailedToTransactAsset diff --git a/parachains/integration-tests/statemint/config.toml b/parachains/integration-tests/statemint/config.toml new file mode 100644 index 0000000000..f989d366ef --- /dev/null +++ b/parachains/integration-tests/statemint/config.toml @@ -0,0 +1,49 @@ +[relaychain] +default_command = "./bin/polkadot" +default_args = [ "-lparachain=debug" ] +chain = "polkadot-local" + + [[relaychain.nodes]] + name = "alice" + ws_port = 9900 + validator = true + + [[relaychain.nodes]] + name = "bob" + validator = true + + [[relaychain.nodes]] + name = "charlie" + validator = true + + [[relaychain.nodes]] + name = "dave" + validator = true + +[[parachains]] +id = 1000 +chain = "statemint-local" +cumulus_based = true + + [[parachains.collators]] + name = "collator1" + ws_port = 9910 + command = "./bin/polkadot-parachain" + + [[parachains.collators]] + name = "collator2" + command = "./bin/polkadot-parachain" + +[[parachains]] +id = 2000 +chain = "penpal-polkadot-2000" +cumulus_based = true + + [[parachains.collators]] + name = "collator3" + ws_port = 9920 + command = "./bin/polkadot-parachain" + + [[parachains.collators]] + name = "collator4" + command = "./bin/polkadot-parachain" diff --git a/parachains/integration-tests/statemint/xcm/0_init.yml b/parachains/integration-tests/statemint/xcm/0_init.yml new file mode 100644 index 0000000000..6f0db4cd61 --- /dev/null +++ b/parachains/integration-tests/statemint/xcm/0_init.yml @@ -0,0 +1,144 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + penpal_parachain: &penpal_parachain + wsPort: 9920 + paraId: &pp_id 2000 + variables: + common: + xcm_verison: &xcm_version '2' + require_weight_at_most: &weight_at_most 1000000000 + chains: + relay_chain: + signer: &rc_signer //Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + penpal_parachain: + signer: &pp_signer //Alice + decodedCalls: + ap_force_xcm_version: + chain: *assets_parachain + pallet: polkadotXcm + call: forceXcmVersion + args: [ + { # location + parents: 1, + interior: Here + }, + *xcm_version # xcmVersion + ] + +tests: + - name: Initialize Chains + its: + - name: XCM supported versions between chains + actions: + - extrinsics: # Relay Chain sets supported version for Assset Parachain + - chain: *relay_chain + sudo: true + signer: *rc_signer + pallet: xcmPallet + call: forceXcmVersion + args: [ + { # location + parents: 0, + interior: { + X1: { + Parachain: *ap_id + } + } + }, + *xcm_version # xcmVersion + ] + events: + - name: sudo.Sudid + attributes: + type: Result + value: Ok + - name: xcmPallet.SupportedVersionChanged + attribute: + type: u32 + value: *xcm_version + - extrinsics: # Relay Chain sets supported version for Penpal Parachain + - chain: *relay_chain + sudo: true + signer: *rc_signer + pallet: xcmPallet + call: forceXcmVersion + args: [ + { # location + parents: 0, + interior: { + X1: { + Parachain: *pp_id + } + } + }, + *xcm_version # xcmVersion + ] + events: + - name: sudo.Sudid + attributes: + type: Result + value: Ok + - name: xcmPallet.SupportedVersionChanged + attribute: + type: u32 + value: *xcm_version + - extrinsics: # Assset Parachain sets supported version for Relay Chain through it + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $ap_force_xcm_version + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: xcmPallet.Sent + - name: polkadotXcm.SupportedVersionChanged + chain: *assets_parachain + attribute: + type: u32 + value: *xcm_version + - extrinsics: # Penpal Parachain sets supported version for Relay Chain + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: forceXcmVersion + args: [ + { # location + parents: 1, + interior: Here + }, + *xcm_version # xcmVersion + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.SupportedVersionChanged + attribute: + type: u32 + value: *xcm_version diff --git a/parachains/integration-tests/statemint/xcm/1_dmp.yml b/parachains/integration-tests/statemint/xcm/1_dmp.yml new file mode 100644 index 0000000000..02e5b864bf --- /dev/null +++ b/parachains/integration-tests/statemint/xcm/1_dmp.yml @@ -0,0 +1,254 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + variables: + relay_chain: + signer: &rc_signer //Alice + wallet: &rc_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + assets_parachain_destination: &ap_dest { v1: { parents: 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_account: &ap_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + assets_parachain_beneficiary: &ap_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *ap_acc }}}}} + ksm: &rc_ksm { concrete: { parents: 0, interior: { here: true }}} + amount: &amount 1000000000000 + ksm_fungible: &rc_ksm_fungible { id: *rc_ksm, fun: { fungible: *amount }} + require_weight_at_most: &rc_weight_at_most 1000000000 + assets_parachain_account: + wallet: &ap_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + asset_id: &asset_id 1 + asset_min_balance: &asset_ed 1000 + decodedCalls: + force_create_asset: + chain: *assets_parachain + pallet: assets + call: forceCreate + args: [ + *asset_id, + { Id: *ap_wallet }, # owner + true, # isSufficient + *asset_ed # minBalance + ] + +tests: + - name: DMP + its: [] + describes: + - name: xcmPallet.limitedTeleportAssets + before: &before_get_balances + - name: Get the balances of the Relay Chain's sender & Assets Parachain's receiver + actions: + - queries: + balance_rc_sender_before: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + balance_ap_receiver_before: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + its: + - name: Should teleport native assets from the Relay Chain to the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: limitedTeleportAssets + args: [ + *ap_dest, # destination + *ap_benf, # beneficiary + { v1: [ *rc_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + - queries: + balance_rc_sender_after: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + balance_ap_receiver_after: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + + - name: Should reduce the balance of the sender + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_rc_sender_before, + after: $balance_rc_sender_after, + }, + amount: *amount + } + ] + + - name: Should increase the balance of the receiver + actions: + - asserts: + balanceIncreased: + args: [ + { + balances: { + before: $balance_ap_receiver_before, + after: $balance_ap_receiver_after, + } + } + ] + + - name: xcmPallet.send | Superuser - Transact(assets.forceCreate) + its: + - name: Relay Chain Superuser account SHOULD be able to execute a XCM Transact instruction in the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *rc_weight_at_most, + call: $force_create_asset + } + } + ] + } + ] + events: + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - queries: + forced_created_asset: + chain: *assets_parachain + pallet: assets + call: asset + args: [ *asset_id ] + - asserts: + isSome: + args: [ $forced_created_asset ] + + - name: xcmPallet.send | Native - Transact(assets.forceCreate) + its: + - name: Relay Chain Native account SHOULD NOT be able to execute a XCM Transact instruction in the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Native, + requireWeightAtMost: *rc_weight_at_most, + call: $force_create_asset + } + } + ] + } + ] + events: + - name: system.ExtrinsicFailed + attribute: + type: SpRuntimeDispatchError + value: BadOrigin + + - name: xcmPallet.limitedReserveTransferAssets + before: *before_get_balances + its: + - name: SHOULD NOT reserved transfer native assets from the Relay Chain to the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: limitedReserveTransferAssets + args: [ + *ap_dest, # destination + *ap_benf, # beneficiary + { v1: [ *rc_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,000,000,000 + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isIncomplete: true + value: ['1,000,000,000' , UntrustedReserveLocation] + - queries: + balance_rc_sender_after: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + balance_ap_receiver_after: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + + - name: Should reduce the balance of the sender + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_rc_sender_before, + after: $balance_rc_sender_after, + }, + amount: *amount + } + ] + + - name: Should keep the balance of the receiver + actions: + - asserts: + equal: + args: + [ + $balance_ap_receiver_before, + $balance_ap_receiver_after + ] diff --git a/parachains/integration-tests/statemint/xcm/2_ump.yml b/parachains/integration-tests/statemint/xcm/2_ump.yml new file mode 100644 index 0000000000..c20872ca68 --- /dev/null +++ b/parachains/integration-tests/statemint/xcm/2_ump.yml @@ -0,0 +1,197 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + variables: + common: + amount: &amount 1000000000000 + require_weight_at_most: &weight_at_most 1000000000 + relay_chain: + signer: &rc_signer //Alice + wallet: &rc_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_account: &ap_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + assets_parachain_beneficiary: &ap_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *ap_acc }}}}} + ksm: &rc_ksm { concrete: { 0, interior: { here: true }}} + ksm_fungible: &rc_ksm_fungible { id: *rc_ksm, fun: { fungible: *amount }} + assets_parachain_account: + signer: &ap_signer //Alice + wallet: &ap_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + relay_chain_destination: &rc_dest { v1: { parents: 1, interior: { here: true }}} + assets_parachain_account: &rc_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + relay_chain_beneficiary: &rc_benf {v1: { parents: 0, interior: { x1: { accountId32: { network: { any: true }, id: *rc_acc }}}}} + ksm: &ap_ksm { concrete: { parents: 1, interior: { here: true }}} + ksm_fungible: &ap_ksm_fungible { id: *ap_ksm, fun: { fungible: *amount }} + decodedCalls: + system_remark: + chain: *relay_chain + pallet: system + call: remark + args: [ 0x0011 ] + +tests: + - name: UMP + describes: + - name: polkadotXcm.limitedTeleportAssets + before: + - name: DEPENDANCY | Do a 'limitedTeleportAssets' from the Relay Chain to the Assets Parachain to have funds to send them back + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: xcmPallet + call: limitedTeleportAssets + args: [ + *ap_dest, # destination + *ap_benf, # beneficiary + { v1: [ *rc_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: xcmPallet.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + + - name: Get the balances of the Assets Parachain's sender & Relay Chain's receiver + actions: + - queries: + balance_ap_sender_before: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + balance_rc_receiver_before: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + + its: + - name: Should be able to teleport native assets back from Assets Parachain to the Relay Chain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedTeleportAssets + args: [ + *rc_dest, # destination + *rc_benf, # beneficiary + { v1: [ *ap_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - name: ump.ExecutedUpward + chain: *relay_chain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + - queries: + balance_ap_sender_after: + chain: *assets_parachain + pallet: system + call: account + args: [ *ap_wallet ] + balance_rc_receiver_after: + chain: *relay_chain + pallet: system + call: account + args: [ *rc_wallet ] + + - name: Should reduce the balance of the sender + actions: + - asserts: + balanceDecreased: + args: [ + { + balances: { + before: $balance_ap_sender_before, + after: $balance_ap_sender_after, + }, + amount: *amount + } + ] + + - name: Should increase the balance of the receiver + actions: + - asserts: + balanceIncreased: + args: [ + { + balances: { + before: $balance_rc_receiver_before, + after: $balance_rc_receiver_after, + } + } + ] + + - name: polkadotXcm.send | Native - Transact(system.remark) + its: + - name: Assets Parachain SHOULD NOT be able to dipatch 'send' call + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $system_remark + } + } + ] + } + ] + events: + - name: system.ExtrinsicFailed + attribute: + type: SpRuntimeDispatchError + value: BadOrigin + + - name: polkadotXcm.limitedReserveTransferAssets + its: + - name: Should NOT be able to reserve transfer native assets from the Assets Parachain to the Relay Chain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedReserveTransferAssets + args: [ + *rc_dest, # destination + *rc_benf, # beneficiary + { v1: [ *ap_ksm_fungible ] }, # assets + 0, # feeAssetItem + { unlimited: true } # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attribute: + type: XcmV2TraitsOutcome + isError: true + value: Barrier diff --git a/parachains/integration-tests/statemint/xcm/3_hrmp-open-channels.yml b/parachains/integration-tests/statemint/xcm/3_hrmp-open-channels.yml new file mode 100644 index 0000000000..c8d1d85290 --- /dev/null +++ b/parachains/integration-tests/statemint/xcm/3_hrmp-open-channels.yml @@ -0,0 +1,400 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + penpal_parachain: &penpal_parachain + wsPort: 9920 + paraId: &pp_id 2000 + variables: + common: + amount: &amount 2000000000000 + require_weight_at_most: &weight_at_most 1000000000 + hrmp_channels: + proposed_max_capacity: &max_capacity 8 + proposed_max_message_size: &max_message_size 8192 + channel: &channel { + maxCapacity: 8, + maxTotalSize: 8192, + maxMessageSize: 8192, + msgCount: 0, + totalSize: 0, + mqcHead: null, + senderDeposit: 0, + recipientDeposit: 0 + } + chains: + relay_chain: + signer: &rc_signer //Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + ksm: &rc_ksm { concrete: { 0, interior: { here: true }}} + ksm_fungible: &rc_ksm_fungible { id: *rc_ksm, fun: { fungible: *amount }} + assets_parachain_account: + sovereign_account: &ap_sovereign F7fq1jSNVTPfJmaHaXCMtatT1EZefCUsa7rRiQVNR5efcah + relay_chain_destination: &rc_dest { v1: { parents: 1, interior: { here: true }}} + penpal_parachain: + sovereign_account: &pp_sovereign F7fq1jMZkfuCuoMTyiEVAP2DMpMt18WopgBqTJznLihLNbZ + signer: &pp_signer //Alice + decodedCalls: + init_open_channel_with_ap: + chain: *relay_chain + pallet: hrmp + call: hrmpInitOpenChannel + args: [ + *ap_id, # recipient + *max_capacity, # proposedMaxCapacity + *max_message_size # proposedMaxMessageSize + ] + init_open_channel_with_cp: + chain: *relay_chain + pallet: hrmp + call: hrmpInitOpenChannel + args: [ + *pp_id, # recipient + *max_capacity, # proposedMaxCapacity + *max_message_size # proposedMaxMessageSize + ] + accept_open_channel_with_ap: + chain: *relay_chain + pallet: hrmp + call: hrmpAcceptOpenChannel + args: [ + *ap_id, # recipient + ] + accept_init_open_request_from_cp: + chain: *relay_chain + pallet: hrmp + call: hrmpAcceptOpenChannel + args: [ + *pp_id, # sender + ] + xcm_accept_init_open_request_from_cp: + chain: *assets_parachain + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $accept_init_open_request_from_cp + } + } + ] + } + ] + xcm_init_open_channel_with_cp: + chain: *assets_parachain + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $init_open_channel_with_cp + } + } + ] + } + ] + +tests: + - name: HRMP + beforeEach: + - name: DEPENDANCY | Penpal Parachain Sovereign account in the Relay Chain needs to be funded + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: balances + call: transfer + args: [ + *pp_sovereign, # destination + *amount, # value + ] + events: + - name: balances.Transfer + + - name: DEPENDANCY | Assets Parachain Sovereign account in the Relay Chain needs to be funded + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + pallet: balances + call: transfer + args: [ + *ap_sovereign, # destination + *amount, # value + ] + events: + - name: balances.Transfer + describes: + - name: hrmp.hrmpInitOpenChannel (Penpal Parachain → Assets Parachain) + its: + - name: Penpal Parachain sends a request to the Relay Chain to open a channel with the Assets Parchain + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $init_open_channel_with_ap + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.Sent + - name: ump.ExecutedUpward + chain: *relay_chain + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000 + - name: hrmp.OpenChannelRequested + chain: *relay_chain + - queries: + requested_channels: + chain: *relay_chain + pallet: hrmp + call: hrmpOpenChannelRequestsList + args: [] + - asserts: + equal: + args: [ + $requested_channels, + [ + { + sender: *pp_id, + recipient: *ap_id + } + ] + ] + + - name: hrmp.hrmpAcceptOpenChannel (Assets Parachain → Penpal Parachain) + its: + - name: Assets Parachain sends a response to the Relay Chain accepting the Penpal Parachain's request for openning a HRMP channel + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $xcm_accept_init_open_request_from_cp + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - name: polkadotXcm.Sent + chain: *assets_parachain + - name: ump.ExecutedUpward + timeout: 40000 + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + - name: hrmp.OpenChannelAccepted + timeout: 40000 + - queries: + open_channels: + chain: *relay_chain + pallet: hrmp + call: hrmpChannels + delay: 80000 + args: [ + { + sender: *pp_id, + recipient: *ap_id + } + ] + - asserts: + equal: + args: [ + $open_channels, + *channel + ] + + - name: hrmp.hrmpInitOpenChannel (Assets Parachain → Penpal Parachain) + its: + - name: Assets Parchain sends a request to the Relay Chain to open a channel with a Penpal Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $xcm_init_open_channel_with_cp + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - name: polkadotXcm.Sent + chain: *assets_parachain + - name: ump.ExecutedUpward + timeout: 40000 + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000,000 + - name: hrmp.OpenChannelRequested + timeout: 40000 + - queries: + requested_channels: + chain: *relay_chain + pallet: hrmp + call: hrmpOpenChannelRequestsList + args: [] + - asserts: + equal: + args: [ + $requested_channels, + [ + { + sender: *ap_id, + recipient: *pp_id + } + ] + ] + + - name: hrmp.hrmpAcceptOpenChannel (Penpal Parachain → Assets Parachain) + its: + - name: Penpal Parachain sends a response to the Relay Chain accepting the Assets Parachain's request for openning a HRMP channel + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *rc_dest, # destination + { + v2: [ #message + { + WithdrawAsset: [*rc_ksm_fungible] + }, + { + BuyExecution: { + fees: *rc_ksm_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: Native, + requireWeightAtMost: *weight_at_most, + call: $accept_open_channel_with_ap + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.Sent + - name: ump.ExecutedUpward + chain: *relay_chain + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 4,000,000 + - name: hrmp.OpenChannelAccepted + chain: *relay_chain diff --git a/parachains/integration-tests/statemint/xcm/4_hrmp.yml b/parachains/integration-tests/statemint/xcm/4_hrmp.yml new file mode 100644 index 0000000000..94783d5ed7 --- /dev/null +++ b/parachains/integration-tests/statemint/xcm/4_hrmp.yml @@ -0,0 +1,352 @@ +--- +settings: + chains: + relay_chain: &relay_chain + wsPort: 9900 + assets_parachain: &assets_parachain + wsPort: 9910 + paraId: &ap_id 1000 + penpal_parachain: &penpal_parachain + wsPort: 9920 + paraId: &pp_id 2000 + variables: + common: + amount: &amount 1000000000000 + require_weight_at_most: &weight_at_most 1000000000 + amount_to_send: &amount_to_send 500000000000 + chains: + relay_chain: + signer: &rc_signer //Alice + assets_parachain_destination: &ap_dest { v1: { 0, interior: { x1: { parachain: *ap_id }}}} + assets_parachain_dest_routed: &ap_dest_routed { v1: { parents: 1, interior: { x1: { parachain: *ap_id } }}} + assets_parachain_account: + signer: &ap_signer //Alice + wallet: &ap_wallet HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F + asset_id: &asset_id 2 + assets_pallet_id: &assets_pallet_id 50 + asset_min_balance: &asset_ed 1000 + penpal_parachain_destination: &pp_dest { v1: { parents: 1, interior: { x1: { parachain: *pp_id } }}} + ksm: &ap_ksm { concrete: { parents: 1, interior: { here: true }}} + ksm_fungible: &ap_ksm_fungible { id: *ap_ksm, fun: { fungible: *amount }} + suff_asset: &suff_asset { concrete: { parents: 0, interior: { x2: [ { PalletInstance: *assets_pallet_id }, { GeneralIndex: *asset_id } ] }}} + suff_asset_fail: &suff_asset_fail { concrete: { parents: 0, interior: { x2: [ { PalletInstance: *assets_pallet_id }, { GeneralIndex: 3 } ] }}} + suff_asset_fungible: &ap_suff_asset_fungible { id: *suff_asset, fun: { fungible: *weight_at_most }} + suff_asset_fungible_fail: &ap_suff_asset_fungible_fail { id: *suff_asset_fail, fun: { fungible: *weight_at_most }} + penpal_parachain: + sovereign_account: &pp_sovereign_sibl FBeL7EAeUroLWXW1yfKboiqTqVfbRBcsUKd6QqVf4kGBySS + signer: &pp_signer //Alice + penpal_parachain_account: &pp_acc '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d' + decodedCalls: + force_create_asset: + chain: *assets_parachain + pallet: assets + call: forceCreate + args: [ + *asset_id, + { Id: *ap_wallet }, # owner + true, # isSufficient + *asset_ed # minBalance + ] + system_remark_with_event: + chain: *assets_parachain + pallet: system + call: remarkWithEvent + args: [ 0x0011 ] + +tests: + - name: HRMP + describes: + - name: polkadotXcm.limitedReserveTransferAssets (Asset) | Assets Parachain -> Penpal Parachain + before: + - name: DEPENDANCY | A sufficient Asset should exist in the Assets Parachain + actions: + - extrinsics: + - chain: *relay_chain + signer: *rc_signer + sudo: true + pallet: xcmPallet + call: send + args: [ + *ap_dest, # destination + { + v2: [ #message + { + Transact: { + originType: Superuser, + requireWeightAtMost: *weight_at_most, + call: $force_create_asset + } + } + ] + } + ] + events: + - name: xcmPallet.Sent + - name: dmpQueue.ExecutedDownward + chain: *assets_parachain + attribute: + type: XcmV2TraitsOutcome + isComplete: true + value: 2,000,000,000 + - queries: + forced_created_asset: + chain: *assets_parachain + pallet: assets + call: asset + args: [ *asset_id ] + - asserts: + isSome: + args: [ $forced_created_asset ] + + - name: DEPENDANCY | Some Assets should be minted for the sender + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: assets + call: mint + args: [ + *asset_id, + *ap_wallet, + *amount + ] + events: + - name: assets.Issued + its: + - name: Assets Parachain should be able to reserve transfer an Asset to Penpal Parachain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedReserveTransferAssets + args: [ + *pp_dest, # destination + { # beneficiary + V1: { + parents: 0, + interior: { + X1: { + AccountId32: { + network: Any, + id: *pp_acc + } + } + } + } + }, + { # assets + V1: [ + { + id: { + Concrete: { + parents: 0, + interior: { + X2: [ + { + PalletInstance: 50 + }, + { + GeneralIndex: *asset_id + } + ] + } + } + }, + fun: { + Fungible: *amount_to_send + } + } + ] + }, + 0, # feeAssetItem + Unlimited # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,000,000,000 + - name: assets.Transferred + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - name: assets.Transferred + attributes: + type: u128 + value: *amount_to_send + + - name: polkadotXcm.limitedReserveTransferAssets (KSM) | Assets Parachain -> Penpal Parachain + its: + - name: Assets Parachain should be able to reserve transfer KSM to Penpal Parachain + actions: + - extrinsics: + - chain: *assets_parachain + signer: *ap_signer + pallet: polkadotXcm + call: limitedReserveTransferAssets + args: [ + *pp_dest, # destination + { # beneficiary + V1: { + parents: 0, + interior: { + X1: { + AccountId32: { + network: Any, + id: *pp_acc + } + } + } + } + }, + { # assets + V1: [ + *ap_ksm_fungible + ] + }, + 0, # feeAssetItem + Unlimited # weightLimit + ] + events: + - name: polkadotXcm.Attempted + attributes: + type: XcmV2TraitsOutcome + isComplete: true + value: 1,000,000,000 + - name: balances.Endowed + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - name: balances.Endowed + attributes: + type: u128 + value: *amount + + - name: polkadotXcm.send( system.remarkWithEvent() ) | Penpal Parachain -> Assets Parachain + before: + - name: Get the asset balance of the Penpal Parachain Sovereign account in Assets Parachain + actions: + - queries: + assets_balance_pp_sovereign_before: + chain: *assets_parachain + pallet: assets + call: account + args: [ + *asset_id, + *pp_sovereign_sibl + ] + its: + - name: Penpal Parachain should be able to send XCM message paying its fee with sufficient asset[2] in Assets Parachain + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *ap_dest_routed, # destination + { + v2: [ #message + { + WithdrawAsset: [*ap_suff_asset_fungible] + }, + { + BuyExecution: { + fees: *ap_suff_asset_fungible, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: SovereignAccount, + requireWeightAtMost: *weight_at_most, + call: $system_remark_with_event + } + } + ] + } + ] + events: + - name: sudo.Sudid + attribute: + type: Result + value: Ok + - name: polkadotXcm.Sent + - name: assets.Burned + chain: *assets_parachain + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - name: assets.Issued + chain: *assets_parachain + attributes: + type: u32 + value: *asset_id + - name: system.Remarked + chain: *assets_parachain + attributes: + type: AccountId32 + value: *pp_sovereign_sibl + - queries: + assets_balance_pp_sovereign_after: + chain: *assets_parachain + pallet: assets + call: account + args: [ + *asset_id, + *pp_sovereign_sibl + ] + + - name: Should reduce the asset[2] balance of the Penpal Parachain's SovereignAccount in the Assets Parachain + actions: + - asserts: + assetsDecreased: + args: [ + { + balances: { + before: $assets_balance_pp_sovereign_before, + after: $assets_balance_pp_sovereign_after, + }, + } + ] + + - name: Penpal Parachain SHOULD NOT be able to send XCM message paying its fee with sufficient asset[3] if not balance + actions: + - extrinsics: + - chain: *penpal_parachain + signer: *pp_signer + sudo: true + pallet: polkadotXcm + call: send + args: [ + *ap_dest_routed, # destination + { + v2: [ #message + { + WithdrawAsset: [*ap_suff_asset_fungible_fail] + }, + { + BuyExecution: { + fees: *ap_suff_asset_fungible_fail, + weightLimit: Unlimited + } + }, + { + Transact: { + originType: SovereignAccount, + requireWeightAtMost: *weight_at_most, + call: $system_remark_with_event + } + } + ] + } + ] + events: + - name: xcmpQueue.Fail + chain: *assets_parachain + attributes: + type: XcmV2TraitsError + value: FailedToTransactAsset From c764b0b460b996e4be4bc85ec357f8d980b2a432 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Tue, 5 Jul 2022 20:15:45 +0100 Subject: [PATCH 146/238] standard way to get at the docs (#1430) * standard way to get at the docs * Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b415652cfc..3a6712876a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Cumulus ☁️ +[![Doc](https://img.shields.io/badge/cumulus%20docs-master-brightgreen)](https://paritytech.github.io/cumulus/) + This repository contains both the Cumulus SDK and also specific chains implemented on top of this SDK. From a47caa1ebc409c7c06991291c48910d70f829d6d Mon Sep 17 00:00:00 2001 From: Ignacio Palacios Date: Wed, 6 Jul 2022 11:10:14 +0200 Subject: [PATCH 147/238] Update Readme for integration-tests (#1429) * Update Readme for integration-tests * Update parachains/README.md Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- parachains/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/parachains/README.md b/parachains/README.md index 6230ccb738..1fb0c5061b 100644 --- a/parachains/README.md +++ b/parachains/README.md @@ -7,6 +7,7 @@ The general internal structure is: - `chain-specs`: Chain specs for the runtimes contained in its sibling dir `runtimes`. - `common`: Common configurations, `impl`s, etc. used by several parachain runtimes. +- `integration-tests`: Integration tests to test parachain interactions via XCM. - `pallets`: FRAME pallets that are specific to parachains. - `runtimes`: The entry point for parachain runtimes. From fc4181b3ff0f89b187690fa30b3a4a1f1e646bae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Jul 2022 22:23:36 +0000 Subject: [PATCH 148/238] Bump chevdor/srtool-actions from 0.4.0 to 0.5.0 Bumps [chevdor/srtool-actions](https://github.com/chevdor/srtool-actions) from 0.4.0 to 0.5.0. - [Release notes](https://github.com/chevdor/srtool-actions/releases) - [Commits](https://github.com/chevdor/srtool-actions/compare/v0.4.0...v0.5.0) --- updated-dependencies: - dependency-name: chevdor/srtool-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/release-02_create-draft.yml | 2 +- .github/workflows/srtool.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index 82f7102dc5..e81d46798f 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -77,7 +77,7 @@ jobs: - name: Build ${{ matrix.runtime }} runtime if: ${{ github.event.inputs.release_type != 'client' }} id: srtool_build - uses: chevdor/srtool-actions@v0.4.0 + uses: chevdor/srtool-actions@v0.5.0 with: image: paritytech/srtool chain: ${{ matrix.runtime }} diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index c87f5cd026..703c30b453 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -52,7 +52,7 @@ jobs: - name: Srtool build id: srtool_build - uses: chevdor/srtool-actions@v0.4.0 + uses: chevdor/srtool-actions@v0.5.0 with: chain: ${{ matrix.runtime }} runtime_dir: parachains/runtimes/${{ matrix.category }}/${{ matrix.runtime }} From 8555ca2b608f946c80116ce926e908ff3b6e8528 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Thu, 7 Jul 2022 18:16:35 +0200 Subject: [PATCH 149/238] Add new room to the matrix notifications --- .github/workflows/release-99_bot-announce.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-99_bot-announce.yml b/.github/workflows/release-99_bot-announce.yml index e020acfdc8..2c98f04d76 100644 --- a/.github/workflows/release-99_bot-announce.yml +++ b/.github/workflows/release-99_bot-announce.yml @@ -7,12 +7,24 @@ on: jobs: ping_matrix: runs-on: ubuntu-latest + strategy: + matrix: + channel: + - name: 'Cumulus Release Coordination' + room: '!ZrLPsivsytpkdJfVaa:matrix.parity.io' + pre-releases: true + - name: 'Ledger <> Polkadot Coordination' + room: '!EoIhaKfGPmFOBrNSHT:web3.foundation' + pre-release: true + steps: - name: send message uses: s3krit/matrix-message-action@v0.0.3 with: - room_id: ${{ secrets.MATRIX_ROOM_ID }} + # room_id: ${{ secrets.MATRIX_ROOM_ID }} + room_id: ${{ matrix.channel.room }} access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} + server: "matrix.parity.io" message: | A (pre)release has been ${{github.event.action}} in **${{github.event.repository.full_name}}:**
Release version: [${{github.event.release.tag_name}}](${{github.event.release.html_url}}) @@ -20,4 +32,3 @@ jobs: ----- ${{github.event.release.body}} - server: "matrix.parity.io" From e46b59430a9a380483dcd95d5727c2f83007c4e6 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Thu, 7 Jul 2022 18:20:01 +0200 Subject: [PATCH 150/238] cleanup --- .github/workflows/release-99_bot-announce.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-99_bot-announce.yml b/.github/workflows/release-99_bot-announce.yml index 2c98f04d76..4a12bdb1fd 100644 --- a/.github/workflows/release-99_bot-announce.yml +++ b/.github/workflows/release-99_bot-announce.yml @@ -21,7 +21,6 @@ jobs: - name: send message uses: s3krit/matrix-message-action@v0.0.3 with: - # room_id: ${{ secrets.MATRIX_ROOM_ID }} room_id: ${{ matrix.channel.room }} access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} server: "matrix.parity.io" From 3bb82e5126362f9cf3952c60b737c3b71b0a136b Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Mon, 11 Jul 2022 13:05:40 +0200 Subject: [PATCH 151/238] Typo + some clippy stuff (unnecessary clone/to_string/refs) + fmt (#1437) --- client/cli/src/lib.rs | 2 +- client/pov-recovery/src/lib.rs | 2 +- client/service/src/lib.rs | 4 +-- pallets/parachain-system/src/lib.rs | 2 +- parachain-template/node/src/rpc.rs | 4 +-- .../runtimes/assets/statemine/src/lib.rs | 2 +- .../runtimes/assets/statemint/src/lib.rs | 2 +- .../runtimes/assets/westmint/src/lib.rs | 2 +- .../contracts/contracts-rococo/src/lib.rs | 2 +- .../testing/rococo-parachain/src/lib.rs | 2 +- polkadot-parachain/src/command.rs | 11 ++----- polkadot-parachain/src/rpc.rs | 2 +- polkadot-parachain/src/service.rs | 30 +++++++++---------- test/client/src/block_builder.rs | 3 +- test/client/src/lib.rs | 6 ++-- test/runtime/src/lib.rs | 2 +- test/service/src/cli.rs | 6 ++-- test/service/src/lib.rs | 14 ++++----- test/service/src/main.rs | 4 +-- 19 files changed, 46 insertions(+), 56 deletions(-) diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index cab0723ad0..9ac249729e 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -227,7 +227,7 @@ pub struct ExportGenesisWasmCommand { } impl ExportGenesisWasmCommand { - /// Run the export-genesis-state command + /// Run the export-genesis-wasm command pub fn run(&self, chain_spec: &dyn ChainSpec) -> sc_cli::Result<()> { let raw_wasm_blob = extract_genesis_wasm(chain_spec)?; let output_buf = if self.raw { diff --git a/client/pov-recovery/src/lib.rs b/client/pov-recovery/src/lib.rs index ab3609912d..aeff69d56c 100644 --- a/client/pov-recovery/src/lib.rs +++ b/client/pov-recovery/src/lib.rs @@ -218,7 +218,7 @@ where /// Handle an imported block. fn handle_block_imported(&mut self, hash: &Block::Hash) { - self.pending_candidates.remove(&hash); + self.pending_candidates.remove(hash); } /// Handle a finalized block with the given `block_number`. diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index 77adcb5c41..5ca73a530a 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -218,9 +218,9 @@ where min: relay_chain_slot_duration * 25, max: relay_chain_slot_duration * 50, }, - client.clone(), + client, import_queue, - relay_chain_interface.clone(), + relay_chain_interface, para_id, ); diff --git a/pallets/parachain-system/src/lib.rs b/pallets/parachain-system/src/lib.rs index b42453401a..b9056d5dca 100644 --- a/pallets/parachain-system/src/lib.rs +++ b/pallets/parachain-system/src/lib.rs @@ -898,7 +898,7 @@ impl Pallet { running_mqc_heads .entry(sender) - .or_insert_with(|| last_mqc_heads.get(&sender).cloned().unwrap_or_default()) + .or_insert_with(|| last_mqc_heads.get(sender).cloned().unwrap_or_default()) .extend_hrmp(horizontal_message); } } diff --git a/parachain-template/node/src/rpc.rs b/parachain-template/node/src/rpc.rs index 5ea7609000..2bc5ccccf7 100644 --- a/parachain-template/node/src/rpc.rs +++ b/parachain-template/node/src/rpc.rs @@ -52,7 +52,7 @@ where let mut module = RpcExtension::new(()); let FullDeps { client, pool, deny_unsafe } = deps; - module.merge(System::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?; - module.merge(TransactionPayment::new(client.clone()).into_rpc())?; + module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(TransactionPayment::new(client).into_rpc())?; Ok(module) } diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index a7e3f0ef0d..4fcca9f329 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -831,7 +831,7 @@ impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { .create_inherent_data() .expect("Could not create the timestamp inherent data"); - inherent_data.check_extrinsics(&block) + inherent_data.check_extrinsics(block) } } diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 54acdc6435..3184f37e76 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -860,7 +860,7 @@ impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { .create_inherent_data() .expect("Could not create the timestamp inherent data"); - inherent_data.check_extrinsics(&block) + inherent_data.check_extrinsics(block) } } diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index 9d1c7b9eee..f02013bef7 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -821,7 +821,7 @@ impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { .create_inherent_data() .expect("Could not create the timestamp inherent data"); - inherent_data.check_extrinsics(&block) + inherent_data.check_extrinsics(block) } } diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index 3ccc14f2db..edd2905c9b 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -626,7 +626,7 @@ impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { .create_inherent_data() .expect("Could not create the timestamp inherent data"); - inherent_data.check_extrinsics(&block) + inherent_data.check_extrinsics(block) } } diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index ec86567217..48ddc716b2 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -727,7 +727,7 @@ impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { .create_inherent_data() .expect("Could not create the timestamp inherent data"); - inherent_data.check_extrinsics(&block) + inherent_data.check_extrinsics(block) } } diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index 2c344b2400..38f9386235 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -247,8 +247,7 @@ impl SubstrateCli for RelayChainCli { } fn load_spec(&self, id: &str) -> std::result::Result, String> { - polkadot_cli::Cli::from_iter([RelayChainCli::executable_name().to_string()].iter()) - .load_spec(id) + polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()).load_spec(id) } fn native_runtime_version(chain_spec: &Box) -> &'static RuntimeVersion { @@ -405,9 +404,7 @@ pub fn run() -> Result<()> { runner.sync_run(|config| { let polkadot_cli = RelayChainCli::new( &config, - [RelayChainCli::executable_name().to_string()] - .iter() - .chain(cli.relaychain_args.iter()), + [RelayChainCli::executable_name()].iter().chain(cli.relaychain_args.iter()), ); let polkadot_config = SubstrateCli::create_configuration( @@ -520,9 +517,7 @@ pub fn run() -> Result<()> { let polkadot_cli = RelayChainCli::new( &config, - [RelayChainCli::executable_name().to_string()] - .iter() - .chain(cli.relaychain_args.iter()), + [RelayChainCli::executable_name()].iter().chain(cli.relaychain_args.iter()), ); let id = ParaId::from(para_id); diff --git a/polkadot-parachain/src/rpc.rs b/polkadot-parachain/src/rpc.rs index 36fdb68199..cf2979bcc7 100644 --- a/polkadot-parachain/src/rpc.rs +++ b/polkadot-parachain/src/rpc.rs @@ -65,7 +65,7 @@ where let FullDeps { client, pool, deny_unsafe } = deps; module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; - module.merge(TransactionPayment::new(client.clone()).into_rpc())?; + module.merge(TransactionPayment::new(client).into_rpc())?; Ok(module) } diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index a694a9b113..8994b2e2c4 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -245,7 +245,7 @@ where let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( - &config, + config, telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), executor, )?; @@ -748,7 +748,7 @@ pub fn rococo_parachain_build_import_queue( _, >(cumulus_client_consensus_aura::ImportQueueParams { block_import: client.clone(), - client: client.clone(), + client, create_inherent_data_providers: move |_, _| async move { let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); @@ -760,7 +760,7 @@ pub fn rococo_parachain_build_import_queue( Ok((timestamp, slot)) }, - registry: config.prometheus_registry().clone(), + registry: config.prometheus_registry(), can_author_with: sp_consensus::AlwaysCanAuthor, spawner: &task_manager.spawn_essential_handle(), telemetry, @@ -801,7 +801,7 @@ pub async fn start_rococo_parachain_node( task_manager.spawn_handle(), client.clone(), transaction_pool, - prometheus_registry.clone(), + prometheus_registry, telemetry.clone(), ); @@ -838,7 +838,7 @@ pub async fn start_rococo_parachain_node( } }, block_import: client.clone(), - para_client: client.clone(), + para_client: client, backoff_authoring_blocks: Option::<()>::None, sync_oracle, keystore, @@ -890,7 +890,7 @@ where client, |_, _| async { Ok(()) }, &task_manager.spawn_essential_handle(), - config.prometheus_registry().clone(), + config.prometheus_registry(), ) .map_err(Into::into) } @@ -942,15 +942,15 @@ where task_manager.spawn_handle(), client.clone(), transaction_pool, - prometheus_registry.clone(), - telemetry.clone(), + prometheus_registry, + telemetry, ); Ok(cumulus_client_consensus_relay_chain::build_relay_chain_consensus( cumulus_client_consensus_relay_chain::BuildRelayChainConsensusParams { para_id: id, proposer_factory, - block_import: client.clone(), + block_import: client, relay_chain_interface: relay_chain_interface.clone(), create_inherent_data_providers: move |_, (relay_parent, validation_data)| { let relay_chain_interface = relay_chain_interface.clone(); @@ -1153,12 +1153,12 @@ where _phantom: PhantomData, }; - let registry = config.prometheus_registry().clone(); + let registry = config.prometheus_registry(); let spawner = task_manager.spawn_essential_handle(); Ok(BasicQueue::new( verifier, - Box::new(ParachainBlockImport::new(client.clone())), + Box::new(ParachainBlockImport::new(client)), None, &spawner, registry, @@ -1286,8 +1286,8 @@ where task_manager.spawn_handle(), client.clone(), transaction_pool, - prometheus_registry.clone(), - telemetry.clone(), + prometheus_registry, + telemetry, ); let relay_chain_consensus = @@ -1321,7 +1321,7 @@ where ); let parachain_consensus = Box::new(WaitForAuraConsensus { - client: client.clone(), + client, aura_consensus: Arc::new(Mutex::new(aura_consensus)), relay_chain_consensus: Arc::new(Mutex::new(relay_chain_consensus)), _phantom: PhantomData, @@ -1572,7 +1572,7 @@ pub fn contracts_rococo_build_import_queue( _, >(cumulus_client_consensus_aura::ImportQueueParams { block_import: client.clone(), - client: client.clone(), + client, create_inherent_data_providers: move |_, _| async move { let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); diff --git a/test/client/src/block_builder.rs b/test/client/src/block_builder.rs index 14d4bc00ce..6a9b863a7e 100644 --- a/test/client/src/block_builder.rs +++ b/test/client/src/block_builder.rs @@ -136,8 +136,7 @@ impl InitBlockBuilder for Client { validation_data: Option>, relay_sproof_builder: RelayStateSproofBuilder, ) -> BlockBuilder { - let last_timestamp = - self.runtime_api().get_last_timestamp(&at).expect("Get last timestamp"); + let last_timestamp = self.runtime_api().get_last_timestamp(at).expect("Get last timestamp"); let timestamp = last_timestamp + cumulus_test_runtime::MinimumPeriod::get(); diff --git a/test/client/src/lib.rs b/test/client/src/lib.rs index adbd2e363e..2bac18a78a 100644 --- a/test/client/src/lib.rs +++ b/test/client/src/lib.rs @@ -151,10 +151,10 @@ pub fn generate_extrinsic( let signature = raw_payload.using_encoded(|e| origin.sign(e)); UncheckedExtrinsic::new_signed( - function.clone(), + function, origin.public().into(), - Signature::Sr25519(signature.clone()), - extra.clone(), + Signature::Sr25519(signature), + extra, ) } diff --git a/test/runtime/src/lib.rs b/test/runtime/src/lib.rs index 73246dd317..11d6494fc0 100644 --- a/test/runtime/src/lib.rs +++ b/test/runtime/src/lib.rs @@ -471,7 +471,7 @@ impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { sp_std::time::Duration::from_secs(6), ).create_inherent_data().expect("Could not create the timestamp inherent data"); - inherent_data.check_extrinsics(&block) + inherent_data.check_extrinsics(block) } } } diff --git a/test/service/src/cli.rs b/test/service/src/cli.rs index b6bd256851..ff7c6c0b95 100644 --- a/test/service/src/cli.rs +++ b/test/service/src/cli.rs @@ -327,10 +327,8 @@ impl SubstrateCli for RelayChainCli { } fn load_spec(&self, id: &str) -> std::result::Result, String> { - ::from_iter( - [RelayChainCli::executable_name().to_string()].iter(), - ) - .load_spec(id) + ::from_iter([RelayChainCli::executable_name()].iter()) + .load_spec(id) } fn native_runtime_version(chain_spec: &Box) -> &'static RuntimeVersion { diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index cf87fd826a..990c540b9e 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -140,7 +140,7 @@ pub fn new_partial( ); let (client, backend, keystore_container, task_manager) = - sc_service::new_full_parts::(&config, None, executor)?; + sc_service::new_full_parts::(config, None, executor)?; let client = Arc::new(client); let registry = config.prometheus_registry(); @@ -158,7 +158,7 @@ pub fn new_partial( client.clone(), |_, _| async { Ok(sp_timestamp::InherentDataProvider::from_system_time()) }, &task_manager.spawn_essential_handle(), - registry.clone(), + registry, )?; let params = PartialComponents { @@ -200,7 +200,7 @@ async fn build_relay_chain_interface( relay_chain_full_node.client.clone(), relay_chain_full_node.backend.clone(), Arc::new(Mutex::new(Box::new(relay_chain_full_node.network.clone()))), - relay_chain_full_node.overseer_handle.clone(), + relay_chain_full_node.overseer_handle, )) as Arc<_>) } @@ -621,7 +621,7 @@ pub fn node_config( spec.set_storage(storage); let mut network_config = NetworkConfiguration::new( - format!("{} (parachain)", key_seed.to_string()), + format!("{} (parachain)", key_seed), "network/test/0.1", Default::default(), None, @@ -774,10 +774,10 @@ pub fn construct_extrinsic( ); let signature = raw_payload.using_encoded(|e| caller.sign(e)); runtime::UncheckedExtrinsic::new_signed( - function.clone(), + function, caller.public().into(), - runtime::Signature::Sr25519(signature.clone()), - extra.clone(), + runtime::Signature::Sr25519(signature), + extra, ) } diff --git a/test/service/src/main.rs b/test/service/src/main.rs index 2b9ad48f9f..fadbd3539c 100644 --- a/test/service/src/main.rs +++ b/test/service/src/main.rs @@ -77,9 +77,7 @@ fn main() -> Result<(), sc_cli::Error> { let parachain_id = ParaId::from(cli.parachain_id); let polkadot_cli = RelayChainCli::new( &config, - [RelayChainCli::executable_name().to_string()] - .iter() - .chain(cli.relaychain_args.iter()), + [RelayChainCli::executable_name()].iter().chain(cli.relaychain_args.iter()), ); let parachain_account = From a56dbabbbdbfaa4eb526008e3196091b8965aaef Mon Sep 17 00:00:00 2001 From: Xiliang Chen Date: Wed, 13 Jul 2022 00:58:01 +1200 Subject: [PATCH 152/238] Companion for substrate#11786 (#1436) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bump deps * companion substrate#11786 * cargo fmt * update substrate Co-authored-by: André Silva --- Cargo.lock | 1126 +++++++++++------------- client/cli/src/lib.rs | 4 +- parachain-template/node/src/command.rs | 4 +- polkadot-parachain/src/command.rs | 4 +- test/service/src/cli.rs | 7 +- 5 files changed, 517 insertions(+), 628 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 950cca9602..1fe17a5cf6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -392,7 +392,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "miniz_oxide", - "object", + "object 0.27.1", "rustc-demangle", ] @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -682,160 +682,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "bp-header-chain" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-runtime", - "finality-grandpa", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core", - "sp-finality-grandpa", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "bp-message-dispatch" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-runtime", - "frame-support", - "parity-scale-codec", - "scale-info", - "sp-std", -] - -[[package]] -name = "bp-messages" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bitvec", - "bp-runtime", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core", - "sp-std", -] - -[[package]] -name = "bp-polkadot-core" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-core", - "sp-runtime", - "sp-std", - "sp-version", -] - -[[package]] -name = "bp-rococo" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-messages", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "parity-scale-codec", - "smallvec", - "sp-api", - "sp-runtime", - "sp-std", - "sp-version", -] - -[[package]] -name = "bp-runtime" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "frame-support", - "hash-db", - "num-traits", - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", -] - -[[package]] -name = "bp-test-utils" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-header-chain", - "ed25519-dalek", - "finality-grandpa", - "parity-scale-codec", - "sp-application-crypto", - "sp-finality-grandpa", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "bp-wococo" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -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" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-message-dispatch", - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "hash-db", - "pallet-bridge-dispatch", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-transaction-payment", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-core", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", -] - [[package]] name = "bs58" version = "0.4.0" @@ -1212,7 +1058,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-runtime-common", "scale-info", "serde", @@ -1286,59 +1132,60 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38faa2a16616c8e78a18d37b4726b98bfd2de192f2fdc8a39ddf568a408a0f75" +checksum = "7901fbba05decc537080b07cb3f1cadf53be7b7602ca8255786288a8692ae29a" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f192472a3ba23860afd07d2b0217dc628f21fcc72617aa1336d98e1671f33b" +checksum = "37ba1b45d243a4a28e12d26cd5f2507da74e77c45927d40de8b6ffbf088b46b5" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", + "cranelift-isle", "gimli", "log", - "regalloc", + "regalloc2", "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32ddb89e9b89d3d9b36a5b7d7ea3261c98235a76ac95ba46826b8ec40b1a24" +checksum = "54cc30032171bf230ce22b99c07c3a1de1221cb5375bd6dbe6dbe77d0eed743c" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01fd0d9f288cc1b42d9333b7a776b17e278fc888c28e6a0f09b5573d45a150bc" +checksum = "a23f2672426d2bb4c9c3ef53e023076cfc4d8922f0eeaebaf372c92fae8b5c69" [[package]] name = "cranelift-entity" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3bfe172b83167604601faf9dc60453e0d0a93415b57a9c4d1a7ae6849185cf" +checksum = "886c59a5e0de1f06dbb7da80db149c75de10d5e2caca07cdd9fef8a5918a6336" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a006e3e32d80ce0e4ba7f1f9ddf66066d052a8c884a110b91d05404d6ce26dce" +checksum = "ace74eeca11c439a9d4ed1a5cb9df31a54cd0f7fbddf82c8ce4ea8e9ad2a8fe0" dependencies = [ "cranelift-codegen", "log", @@ -1347,10 +1194,16 @@ dependencies = [ ] [[package]] -name = "cranelift-native" -version = "0.82.3" +name = "cranelift-isle" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501241b0cdf903412ec9075385ac9f2b1eb18a89044d1538e97fab603231f70c" +checksum = "db1ae52a5cc2cad0d86fdd3dcb16b7217d2f1e65ab4f5814aa4f014ad335fa43" + +[[package]] +name = "cranelift-native" +version = "0.85.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dadcfb7852900780d37102bce5698bcd401736403f07b52e714ff7a180e0e22f" dependencies = [ "cranelift-codegen", "libc", @@ -1359,9 +1212,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.82.3" +version = "0.85.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d9e4211bbc3268042a96dd4de5bd979cda22434991d035f5f8eacba987fad2" +checksum = "c84e3410960389110b88f97776f39f6d2c8becdaa4cd59e390e6b76d9d0e7190" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1708,7 +1561,7 @@ dependencies = [ "parking_lot 0.12.1", "polkadot-client", "polkadot-node-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-service", "polkadot-test-client", @@ -1838,7 +1691,7 @@ dependencies = [ "log", "pallet-balances", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "sc-client-api", "scale-info", "serde", @@ -1957,7 +1810,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "sp-api", "sp-runtime", @@ -2012,7 +1865,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "sp-runtime", "sp-std", @@ -2113,7 +1966,7 @@ dependencies = [ "pallet-balances", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "sc-block-builder", "sc-consensus", @@ -2814,7 +2667,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", ] @@ -2832,7 +2685,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -2854,7 +2707,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "Inflector", "chrono", @@ -2905,7 +2758,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2916,7 +2769,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2932,7 +2785,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -2960,7 +2813,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "bitflags", "frame-metadata", @@ -2990,7 +2843,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -3002,7 +2855,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3014,7 +2867,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro2", "quote", @@ -3024,7 +2877,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "log", @@ -3041,7 +2894,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -3056,7 +2909,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "sp-api", @@ -3065,7 +2918,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "sp-api", @@ -3235,6 +3088,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.12.4" @@ -3705,6 +3567,12 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec58677acfea8a15352d42fc87d11d63596ade9239e0a7c9352914417515dbe6" +[[package]] +name = "io-lifetimes" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24c3f4eff5495aee4c0399d7b6a0dc2b6e81be84242ffbfcf253ebacccc1d0cb" + [[package]] name = "ip_network" version = "0.4.1" @@ -3926,8 +3794,8 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-primitives", "bitvec", @@ -4018,8 +3886,8 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "polkadot-primitives", @@ -4090,9 +3958,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec647867e2bf0772e28c8bcde4f0d19a9216916e890543b5a03ed8ef27b8f259" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "libloading" @@ -4774,6 +4642,12 @@ version = "0.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5284f00d480e1c39af34e72f8ad60b94f47007e3481cd3b731c1d67190ddc7b7" +[[package]] +name = "linux-raw-sys" +version = "0.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" + [[package]] name = "lock_api" version = "0.4.6" @@ -5355,8 +5229,18 @@ name = "object" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.28.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" dependencies = [ "crc32fast", + "hashbrown 0.11.2", "indexmap", "memchr", ] @@ -5394,7 +5278,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "dyn-clonable", @@ -5410,7 +5294,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "expander 0.0.6", "itertools", @@ -5448,7 +5332,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -5465,7 +5349,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5479,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -5495,7 +5379,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -5511,7 +5395,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -5526,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5550,7 +5434,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5570,7 +5454,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5585,7 +5469,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "beefy-primitives", "frame-support", @@ -5601,7 +5485,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5624,7 +5508,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5639,70 +5523,10 @@ dependencies = [ "sp-std", ] -[[package]] -name = "pallet-bridge-dispatch" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-message-dispatch", - "bp-runtime", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-grandpa" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "bp-test-utils", - "finality-grandpa", - "frame-support", - "frame-system", - "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-finality-grandpa", - "sp-runtime", - "sp-std", - "sp-trie", -] - -[[package]] -name = "pallet-bridge-messages" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" -dependencies = [ - "bitvec", - "bp-message-dispatch", - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5747,7 +5571,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5764,7 +5588,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "bitflags", "frame-benchmarking", @@ -5791,7 +5615,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "bitflags", "parity-scale-codec", @@ -5806,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro2", "quote", @@ -5816,7 +5640,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5833,7 +5657,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5846,7 +5670,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5862,7 +5686,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5885,7 +5709,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5898,7 +5722,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5916,7 +5740,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5931,7 +5755,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5954,7 +5778,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5970,7 +5794,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -5990,7 +5814,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6007,7 +5831,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6024,7 +5848,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -6042,7 +5866,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6057,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6072,7 +5896,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6089,7 +5913,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6108,7 +5932,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6125,7 +5949,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6148,7 +5972,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6164,7 +5988,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6179,7 +6003,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6193,7 +6017,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6208,7 +6032,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6224,7 +6048,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6245,7 +6069,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6261,7 +6085,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6275,7 +6099,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6298,7 +6122,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6309,7 +6133,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "sp-arithmetic", @@ -6318,7 +6142,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6347,7 +6171,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6365,7 +6189,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6384,7 +6208,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-support", "frame-system", @@ -6400,7 +6224,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6415,7 +6239,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6426,7 +6250,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6443,7 +6267,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6458,7 +6282,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6474,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6488,8 +6312,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "frame-system", @@ -6506,8 +6330,8 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-benchmarking", "frame-support", @@ -6559,7 +6383,7 @@ dependencies = [ "parachain-template-runtime", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-service", "sc-basic-authorship", @@ -6634,7 +6458,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-runtime-common", "scale-info", "serde", @@ -6827,7 +6651,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-sys 0.32.0", ] [[package]] @@ -7019,8 +6843,8 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -7034,8 +6858,8 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -7048,8 +6872,8 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "derive_more", "fatality", @@ -7071,8 +6895,8 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "fatality", "futures", @@ -7092,8 +6916,8 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "clap 3.2.6", "frame-benchmarking-cli", @@ -7117,8 +6941,8 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7157,8 +6981,8 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "always-assert", "fatality", @@ -7178,8 +7002,8 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7191,8 +7015,8 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "derive_more", "fatality", @@ -7214,8 +7038,8 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7228,8 +7052,8 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "futures-timer", @@ -7248,8 +7072,8 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "always-assert", "async-trait", @@ -7269,8 +7093,8 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "parity-scale-codec", @@ -7287,8 +7111,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bitvec", "derive_more", @@ -7316,8 +7140,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bitvec", "futures", @@ -7336,8 +7160,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bitvec", "fatality", @@ -7355,8 +7179,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7370,8 +7194,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "futures", @@ -7380,7 +7204,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -7388,8 +7212,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7403,8 +7227,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "futures-timer", @@ -7420,8 +7244,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "fatality", "futures", @@ -7439,8 +7263,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "futures", @@ -7456,8 +7280,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bitvec", "fatality", @@ -7474,8 +7298,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "always-assert", "assert_matches", @@ -7487,8 +7311,9 @@ dependencies = [ "pin-project 1.0.10", "polkadot-core-primitives", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "rand 0.8.5", + "rayon", "sc-executor", "sc-executor-common", "sc-executor-wasmtime", @@ -7505,8 +7330,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "polkadot-node-primitives", @@ -7521,8 +7346,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "memory-lru", @@ -7538,8 +7363,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-std", "lazy_static", @@ -7556,8 +7381,8 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bs58", "futures", @@ -7575,8 +7400,8 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "derive_more", @@ -7596,13 +7421,13 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bounded-vec", "futures", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "schnorrkel", "serde", @@ -7618,8 +7443,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7628,8 +7453,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "futures", @@ -7646,8 +7471,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "derive_more", "futures", @@ -7665,8 +7490,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "derive_more", @@ -7698,8 +7523,8 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "futures", "futures-timer", @@ -7720,8 +7545,8 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "derive_more", "frame-support", @@ -7766,7 +7591,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-service", "rococo-parachain-runtime", @@ -7814,8 +7639,8 @@ dependencies = [ [[package]] name = "polkadot-performance-test" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7829,8 +7654,8 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bitvec", "frame-system", @@ -7838,7 +7663,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "scale-info", "serde", "sp-api", @@ -7859,8 +7684,8 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7891,8 +7716,8 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-primitives", "bitvec", @@ -7976,8 +7801,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-primitives", "bitvec", @@ -8023,8 +7848,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "polkadot-primitives", @@ -8035,8 +7860,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bs58", "parity-scale-codec", @@ -8047,8 +7872,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "bitflags", "bitvec", @@ -8090,8 +7915,8 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "async-trait", "beefy-gadget", @@ -8136,7 +7961,7 @@ dependencies = [ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", @@ -8193,8 +8018,8 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8214,8 +8039,8 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8224,8 +8049,8 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8249,8 +8074,8 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-primitives", "bitvec", @@ -8277,7 +8102,7 @@ dependencies = [ "pallet-vesting", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8310,8 +8135,8 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-benchmarking", "frame-system", @@ -8323,7 +8148,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-common", @@ -8455,7 +8280,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8899,13 +8724,14 @@ dependencies = [ ] [[package]] -name = "regalloc" -version = "0.0.34" +name = "regalloc2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62446b1d3ebf980bdc68837700af1d77b37bc430e524bf95319c6eada2a4cc02" +checksum = "4a8d23b35d7177df3b9d31ed8a9ab4bf625c668be77a319d4f5efd4a5257701c" dependencies = [ + "fxhash", "log", - "rustc-hash", + "slice-group-by", "smallvec", ] @@ -8950,7 +8776,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9054,7 +8880,7 @@ dependencies = [ "parachain-info", "parachains-common", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "scale-info", "serde", "sp-api", @@ -9077,16 +8903,11 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-merkle-tree", "beefy-primitives", - "bp-messages", - "bp-rococo", - "bp-runtime", - "bp-wococo", - "bridge-runtime-common", "frame-benchmarking", "frame-executive", "frame-support", @@ -9101,9 +8922,6 @@ dependencies = [ "pallet-balances", "pallet-beefy", "pallet-beefy-mmr", - "pallet-bridge-dispatch", - "pallet-bridge-grandpa", - "pallet-bridge-messages", "pallet-collective", "pallet-grandpa", "pallet-im-online", @@ -9122,7 +8940,7 @@ dependencies = [ "pallet-utility", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -9154,8 +8972,8 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "polkadot-primitives", @@ -9227,18 +9045,32 @@ dependencies = [ [[package]] name = "rustix" -version = "0.33.6" +version = "0.33.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ac32d9fc97153ca55305284cb6c2dcbb84e1fc6d7ac13392cea02222f2d8741" +checksum = "938a344304321a9da4973b9ff4f9f8db9caf4597dfd9dda6a60b523340a0fff0" dependencies = [ "bitflags", "errno", - "io-lifetimes", + "io-lifetimes 0.5.3", "libc", - "linux-raw-sys", + "linux-raw-sys 0.0.42", "winapi", ] +[[package]] +name = "rustix" +version = "0.35.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51cc38aa10f6bbb377ed28197aa052aa4e2b762c22be9d3153d01822587e787" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes 0.7.2", + "libc", + "linux-raw-sys 0.0.46", + "windows-sys 0.36.1", +] + [[package]] name = "rustls" version = "0.20.2" @@ -9336,7 +9168,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "sp-core", @@ -9347,7 +9179,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -9374,7 +9206,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "futures-timer", @@ -9397,7 +9229,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9413,7 +9245,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9430,7 +9262,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9441,7 +9273,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "chrono", "clap 3.2.6", @@ -9480,7 +9312,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "fnv", "futures", @@ -9508,7 +9340,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "hash-db", "kvdb", @@ -9533,7 +9365,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -9557,7 +9389,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -9586,7 +9418,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "fork-tree", @@ -9629,7 +9461,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "jsonrpsee", @@ -9651,7 +9483,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9664,7 +9496,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -9689,7 +9521,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "sc-client-api", "sp-authorship", @@ -9700,7 +9532,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9727,7 +9559,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "environmental", "parity-scale-codec", @@ -9744,7 +9576,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "parity-scale-codec", @@ -9759,13 +9591,15 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "cfg-if 1.0.0", "libc", "log", + "once_cell", "parity-scale-codec", "parity-wasm 0.42.2", + "rustix 0.35.7", "sc-allocator", "sc-executor-common", "sp-runtime-interface", @@ -9777,7 +9611,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "ahash", "async-trait", @@ -9817,7 +9651,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "finality-grandpa", "futures", @@ -9838,7 +9672,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "ansi_term", "futures", @@ -9855,7 +9689,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "hex", @@ -9870,7 +9704,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "asynchronous-codec", @@ -9922,7 +9756,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "libp2p", @@ -9935,7 +9769,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "ahash", "futures", @@ -9952,7 +9786,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "libp2p", @@ -9972,7 +9806,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "bitflags", "either", @@ -10001,7 +9835,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "bytes", "fnv", @@ -10029,7 +9863,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "libp2p", @@ -10042,7 +9876,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10051,7 +9885,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "hash-db", @@ -10081,7 +9915,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "jsonrpsee", @@ -10104,7 +9938,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "jsonrpsee", @@ -10117,7 +9951,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "directories", @@ -10182,7 +10016,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "parity-scale-codec", @@ -10196,7 +10030,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10215,7 +10049,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "libc", @@ -10234,7 +10068,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "chrono", "futures", @@ -10252,7 +10086,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "ansi_term", "atty", @@ -10283,7 +10117,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10294,7 +10128,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "futures-timer", @@ -10321,7 +10155,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "log", @@ -10334,7 +10168,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "futures-timer", @@ -10770,10 +10604,16 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +[[package]] +name = "slice-group-by" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" + [[package]] name = "slot-range-helper" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "enumn", "parity-scale-codec", @@ -10849,7 +10689,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "hash-db", "log", @@ -10866,7 +10706,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "blake2", "proc-macro-crate", @@ -10878,7 +10718,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -10891,7 +10731,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "integer-sqrt", "num-traits", @@ -10906,7 +10746,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -10919,7 +10759,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "parity-scale-codec", @@ -10931,7 +10771,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "sp-api", @@ -10943,7 +10783,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "log", @@ -10961,7 +10801,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -10980,7 +10820,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "parity-scale-codec", @@ -10998,7 +10838,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "merlin", @@ -11021,7 +10861,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11035,7 +10875,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11048,7 +10888,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "base58", "bitflags", @@ -11094,7 +10934,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "blake2", "byteorder", @@ -11108,7 +10948,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro2", "quote", @@ -11119,7 +10959,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11128,7 +10968,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro2", "quote", @@ -11138,7 +10978,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "environmental", "parity-scale-codec", @@ -11149,7 +10989,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "finality-grandpa", "log", @@ -11167,7 +11007,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11181,7 +11021,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "hash-db", @@ -11206,7 +11046,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "lazy_static", "sp-core", @@ -11217,7 +11057,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -11234,7 +11074,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "thiserror", "zstd", @@ -11243,7 +11083,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "parity-scale-codec", @@ -11258,7 +11098,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11272,7 +11112,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "sp-api", "sp-core", @@ -11282,7 +11122,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "backtrace", "lazy_static", @@ -11292,7 +11132,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "rustc-hash", "serde", @@ -11302,7 +11142,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "either", "hash256-std-hasher", @@ -11324,7 +11164,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11341,7 +11181,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "Inflector", "proc-macro-crate", @@ -11353,7 +11193,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "parity-scale-codec", @@ -11367,7 +11207,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "serde", "serde_json", @@ -11376,7 +11216,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11390,7 +11230,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "scale-info", @@ -11401,7 +11241,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "hash-db", "log", @@ -11423,12 +11263,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11441,7 +11281,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "log", "sp-core", @@ -11454,7 +11294,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures-timer", @@ -11470,7 +11310,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "sp-std", @@ -11482,7 +11322,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "sp-api", "sp-runtime", @@ -11491,7 +11331,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "log", @@ -11507,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "hash-db", "memory-db", @@ -11523,7 +11363,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11540,7 +11380,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11551,7 +11391,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "impl-trait-for-tuples", "log", @@ -11631,7 +11471,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-runtime-common", "scale-info", "serde", @@ -11696,7 +11536,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", @@ -11830,7 +11670,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "platforms", ] @@ -11838,7 +11678,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11859,7 +11699,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures-util", "hyper", @@ -11872,7 +11712,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "jsonrpsee", "log", @@ -11893,7 +11733,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "async-trait", "futures", @@ -11919,7 +11759,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11929,7 +11769,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11940,7 +11780,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "ansi_term", "build-helper", @@ -12047,8 +11887,8 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "polkadot-primitives", @@ -12336,8 +12176,8 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12347,8 +12187,8 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12477,7 +12317,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#622f532e605270c9d4f932aea666073e409e02f9" +source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "clap 3.2.6", "jsonrpsee", @@ -12845,15 +12685,18 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.83.0" +version = "0.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" +checksum = "570460c58b21e9150d2df0eaaedbb7816c34bcec009ae0dcc976e40ba81463e7" +dependencies = [ + "indexmap", +] [[package]] name = "wasmtime" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ffb4705016d5ca91e18a72ed6822dab50e6d5ddd7045461b17ef19071cdef1" +checksum = "e76e2b2833bb0ece666ccdbed7b71b617d447da11f1bb61f4f2bab2648f745ee" dependencies = [ "anyhow", "backtrace", @@ -12863,7 +12706,7 @@ dependencies = [ "lazy_static", "libc", "log", - "object", + "object 0.28.4", "once_cell", "paste", "psm", @@ -12882,9 +12725,9 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c6ab24291fa7cb3a181f5669f6c72599b7ef781669759b45c7828c5999d0c0" +checksum = "743a9f142d93318262d7e1fe329394ff2e8f86a1df45ae5e4f0eedba215ca5ce" dependencies = [ "anyhow", "base64", @@ -12892,7 +12735,7 @@ dependencies = [ "directories-next", "file-per-thread-logger", "log", - "rustix", + "rustix 0.33.7", "serde", "sha2 0.9.8", "toml", @@ -12902,9 +12745,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04c810078a491b7bc4866ebe045f714d2b95e6b539e1f64009a4a7606be11de" +checksum = "5dc0f80afa1ce97083a7168e6b6948d015d6237369e9f4a511d38c9c4ac8fbb9" dependencies = [ "anyhow", "cranelift-codegen", @@ -12915,7 +12758,7 @@ dependencies = [ "gimli", "log", "more-asserts", - "object", + "object 0.28.4", "target-lexicon", "thiserror", "wasmparser", @@ -12924,9 +12767,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61448266ea164b1ac406363cdcfac81c7c44db4d94c7a81c8620ac6c5c6cdf59" +checksum = "0816d9365196f1f447060087e0f87239ccded830bd54970a1168b0c9c8e824c9" dependencies = [ "anyhow", "cranelift-entity", @@ -12934,7 +12777,7 @@ dependencies = [ "indexmap", "log", "more-asserts", - "object", + "object 0.28.4", "serde", "target-lexicon", "thiserror", @@ -12944,9 +12787,9 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156b4623c6b0d4b8c24afb846c20525922f538ef464cc024abab7ea8de2109a2" +checksum = "5c687f33cfa0f89ec1646929d0ff102087052cf9f0d15533de56526b0da0d1b3" dependencies = [ "addr2line", "anyhow", @@ -12955,10 +12798,10 @@ dependencies = [ "cpp_demangle", "gimli", "log", - "object", + "object 0.28.4", "region", "rustc-demangle", - "rustix", + "rustix 0.33.7", "serde", "target-lexicon", "thiserror", @@ -12970,20 +12813,20 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5dc31f811760a6c76b2672c404866fd19b75e5fb3b0075a3e377a6846490654" +checksum = "b252d1d025f94f3954ba2111f12f3a22826a0764a11c150c2d46623115a69e27" dependencies = [ "lazy_static", - "object", - "rustix", + "object 0.28.4", + "rustix 0.33.7", ] [[package]] name = "wasmtime-runtime" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f907beaff69d4d920fa4688411ee4cc75c0f01859e424677f9e426e2ef749864" +checksum = "ace251693103c9facbbd7df87a29a75e68016e48bc83c09133f2fda6b575e0ab" dependencies = [ "anyhow", "backtrace", @@ -12998,7 +12841,7 @@ dependencies = [ "more-asserts", "rand 0.8.5", "region", - "rustix", + "rustix 0.33.7", "thiserror", "wasmtime-environ", "wasmtime-jit-debug", @@ -13007,9 +12850,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "0.35.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514ef0e5fd197b9609dc9eb74beba0c84d5a12b2417cbae55534633329ba4852" +checksum = "d129b0487a95986692af8708ffde9c50b0568dcefd79200941d475713b4f40bb" dependencies = [ "cranelift-entity", "serde", @@ -13057,8 +12900,8 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "beefy-primitives", "bitvec", @@ -13111,7 +12954,7 @@ dependencies = [ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -13145,8 +12988,8 @@ dependencies = [ [[package]] name = "westend-runtime-constants" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "polkadot-primitives", @@ -13197,7 +13040,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-runtime-common", "scale-info", "serde", @@ -13295,6 +13138,19 @@ dependencies = [ "windows_x86_64_msvc 0.32.0", ] +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + [[package]] name = "windows_aarch64_msvc" version = "0.29.0" @@ -13307,6 +13163,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + [[package]] name = "windows_i686_gnu" version = "0.29.0" @@ -13319,6 +13181,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + [[package]] name = "windows_i686_msvc" version = "0.29.0" @@ -13331,6 +13199,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + [[package]] name = "windows_x86_64_gnu" version = "0.29.0" @@ -13343,6 +13217,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + [[package]] name = "windows_x86_64_msvc" version = "0.29.0" @@ -13355,6 +13235,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + [[package]] name = "winreg" version = "0.7.0" @@ -13386,8 +13272,8 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13400,15 +13286,15 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-support", "frame-system", "log", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "scale-info", "sp-arithmetic", "sp-io", @@ -13420,8 +13306,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.25" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +version = "0.9.26" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "frame-benchmarking", "frame-support", @@ -13439,7 +13325,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#595ed6e9eaf83134eb4227e161fd0dea1e3f5d92" +source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ "Inflector", "proc-macro2", @@ -13484,18 +13370,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.10.2+zstd.1.5.2" +version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.6+zstd.1.5.2" +version = "5.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" dependencies = [ "libc", "zstd-sys", @@ -13503,9 +13389,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.3+zstd.1.5.2" +version = "2.0.1+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8" +checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" dependencies = [ "cc", "libc", diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index 9ac249729e..09433b7562 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -427,8 +427,8 @@ impl sc_cli::CliConfiguration for NormalizedRunCmd { self.base.ws_max_out_buffer_capacity() } - fn transaction_pool(&self) -> sc_cli::Result { - self.base.transaction_pool() + fn transaction_pool(&self, is_dev: bool) -> sc_cli::Result { + self.base.transaction_pool(is_dev) } fn max_runtime_instances(&self) -> sc_cli::Result> { diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index 129587625e..55afc4f1e5 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -392,8 +392,8 @@ impl CliConfiguration for RelayChainCli { self.base.base.role(is_dev) } - fn transaction_pool(&self) -> Result { - self.base.base.transaction_pool() + fn transaction_pool(&self, is_dev: bool) -> Result { + self.base.base.transaction_pool(is_dev) } fn state_cache_child_ratio(&self) -> Result> { diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index 38f9386235..ab325744c3 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -692,8 +692,8 @@ impl CliConfiguration for RelayChainCli { self.base.base.role(is_dev) } - fn transaction_pool(&self) -> Result { - self.base.base.transaction_pool() + fn transaction_pool(&self, is_dev: bool) -> Result { + self.base.base.transaction_pool(is_dev) } fn state_cache_child_ratio(&self) -> Result> { diff --git a/test/service/src/cli.rs b/test/service/src/cli.rs index ff7c6c0b95..f8c4fecb03 100644 --- a/test/service/src/cli.rs +++ b/test/service/src/cli.rs @@ -184,8 +184,11 @@ impl CliConfiguration for RelayChainCli { self.base.base.role(is_dev) } - fn transaction_pool(&self) -> CliResult { - self.base.base.transaction_pool() + fn transaction_pool( + &self, + is_dev: bool, + ) -> CliResult { + self.base.base.transaction_pool(is_dev) } fn state_cache_child_ratio(&self) -> CliResult> { From 8f613256be8dbc8f345f1f1c4e3abc5ed0bd194e Mon Sep 17 00:00:00 2001 From: Squirrel Date: Tue, 12 Jul 2022 13:59:41 +0100 Subject: [PATCH 153/238] Penpal testing runtime (#1254) * adapt to common good paras * fmt * Updated to leave parachain-template alone * use norm_id + cargo fmt * removed comment as we are not touching parachain template * is_penpal * updated code to new locations * changes required to get penpal running * cargo fmt * remove warning, rename chain * Update polkadot-parachain/src/command.rs * Update polkadot-parachain/src/command.rs Co-authored-by: Ignacio Palacios * remove now moved functions * added runtime description * add missing copyright notices * more copyright notices. Co-authored-by: NachoPal --- Cargo.lock | 61 ++ Cargo.toml | 1 + parachains/runtimes/testing/penpal/Cargo.toml | 151 ++++ parachains/runtimes/testing/penpal/build.rs | 25 + parachains/runtimes/testing/penpal/src/lib.rs | 774 ++++++++++++++++++ .../penpal/src/weights/block_weights.rs | 46 ++ .../penpal/src/weights/extrinsic_weights.rs | 46 ++ .../testing/penpal/src/weights/mod.rs | 28 + .../penpal/src/weights/paritydb_weights.rs | 63 ++ .../penpal/src/weights/rocksdb_weights.rs | 63 ++ .../runtimes/testing/penpal/src/xcm_config.rs | 378 +++++++++ polkadot-parachain/Cargo.toml | 1 + polkadot-parachain/src/chain_spec/mod.rs | 1 + polkadot-parachain/src/chain_spec/penpal.rs | 136 +++ polkadot-parachain/src/command.rs | 64 +- 15 files changed, 1825 insertions(+), 13 deletions(-) create mode 100644 parachains/runtimes/testing/penpal/Cargo.toml create mode 100644 parachains/runtimes/testing/penpal/build.rs create mode 100644 parachains/runtimes/testing/penpal/src/lib.rs create mode 100644 parachains/runtimes/testing/penpal/src/weights/block_weights.rs create mode 100644 parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs create mode 100644 parachains/runtimes/testing/penpal/src/weights/mod.rs create mode 100644 parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs create mode 100644 parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs create mode 100644 parachains/runtimes/testing/penpal/src/xcm_config.rs create mode 100644 polkadot-parachain/src/chain_spec/penpal.rs diff --git a/Cargo.lock b/Cargo.lock index 1fe17a5cf6..1c785e0d91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6684,6 +6684,66 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "penpal-runtime" +version = "0.1.0" +dependencies = [ + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-session-benchmarking", + "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", + "frame-try-runtime", + "hex-literal", + "log", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-xcm", + "parachain-info", + "parity-scale-codec", + "polkadot-parachain 0.9.25", + "polkadot-primitives", + "polkadot-runtime-common", + "scale-info", + "serde", + "smallvec", + "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 = "percent-encoding" version = "2.1.0" @@ -7590,6 +7650,7 @@ dependencies = [ "pallet-transaction-payment-rpc", "parachains-common", "parity-scale-codec", + "penpal-runtime", "polkadot-cli", "polkadot-parachain 0.9.26", "polkadot-primitives", diff --git a/Cargo.toml b/Cargo.toml index 9c6bd5af20..c21af466f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,7 @@ members = [ "parachains/runtimes/assets/statemine", "parachains/runtimes/assets/westmint", "parachains/runtimes/contracts/contracts-rococo", + "parachains/runtimes/testing/penpal", "test/client", "test/relay-sproof-builder", "test/relay-validation-worker-provider", diff --git a/parachains/runtimes/testing/penpal/Cargo.toml b/parachains/runtimes/testing/penpal/Cargo.toml new file mode 100644 index 0000000000..65fdbc80fe --- /dev/null +++ b/parachains/runtimes/testing/penpal/Cargo.toml @@ -0,0 +1,151 @@ +[package] +name = "penpal-runtime" +version = "0.1.0" +authors = ["Anonymous"] +description = "A parachain for communication back and forth with XCM of assets and uniques." +license = "Unlicense" +homepage = "https://substrate.io" +repository = "https://github.com/paritytech/cumulus/" +edition = "2021" + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } +hex-literal = { version = "0.3.4", optional = true } +log = { version = "0.4.16", default-features = false } +scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } +serde = { version = "1.0.132", optional = true, features = ["derive"] } +smallvec = "1.6.1" + +# Substrate +frame-benchmarking = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "master" } +frame-executive = { 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" } +frame-system-benchmarking = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "master" } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +frame-try-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "master" } +pallet-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-authorship = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-balances = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-sudo = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-asset-tx-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-assets = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-inherents = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-offchain = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } + +# Polkadot +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +pallet-xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } + +# Cumulus +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-session-benchmarking = {path = "../../../../pallets/session-benchmarking", default-features = false, version = "3.0.0"} +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachain-info = { path = "../../../../parachains/pallets/parachain-info", default-features = false } + +[features] +default = [ + "std", +] +std = [ + "codec/std", + "log/std", + "scale-info/std", + "serde", + "cumulus-pallet-aura-ext/std", + "cumulus-pallet-dmp-queue/std", + "cumulus-pallet-parachain-system/std", + "cumulus-pallet-xcm/std", + "cumulus-pallet-xcmp-queue/std", + "cumulus-primitives-core/std", + "cumulus-primitives-timestamp/std", + "cumulus-primitives-utility/std", + "frame-executive/std", + "frame-support/std", + "frame-system-rpc-runtime-api/std", + "frame-system/std", + "pallet-aura/std", + "pallet-authorship/std", + "pallet-balances/std", + "pallet-collator-selection/std", + "pallet-session/std", + "pallet-sudo/std", + "pallet-timestamp/std", + "pallet-transaction-payment-rpc-runtime-api/std", + "pallet-transaction-payment/std", + "pallet-assets/std", + "pallet-asset-tx-payment/std", + "pallet-xcm/std", + "polkadot-primitives/std", + "parachain-info/std", + "polkadot-parachain/std", + "polkadot-runtime-common/std", + "sp-api/std", + "sp-block-builder/std", + "sp-consensus-aura/std", + "sp-core/std", + "sp-inherents/std", + "sp-io/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-version/std", + "xcm-builder/std", + "xcm-executor/std", + "xcm/std", +] + +runtime-benchmarks = [ + "hex-literal", + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system-benchmarking", + "frame-system/runtime-benchmarks", + "pallet-balances/runtime-benchmarks", + "pallet-collator-selection/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks", + "pallet-xcm/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", + "xcm-builder/runtime-benchmarks", + "cumulus-pallet-session-benchmarking/runtime-benchmarks", + "cumulus-pallet-xcmp-queue/runtime-benchmarks", +] + +try-runtime = [ + "frame-executive/try-runtime", + "frame-try-runtime", +] diff --git a/parachains/runtimes/testing/penpal/build.rs b/parachains/runtimes/testing/penpal/build.rs new file mode 100644 index 0000000000..fe1a2ea911 --- /dev/null +++ b/parachains/runtimes/testing/penpal/build.rs @@ -0,0 +1,25 @@ +// Copyright 2019-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 . + +use substrate_wasm_builder::WasmBuilder; + +fn main() { + WasmBuilder::new() + .with_current_project() + .export_heap_base() + .import_memory() + .build() +} diff --git a/parachains/runtimes/testing/penpal/src/lib.rs b/parachains/runtimes/testing/penpal/src/lib.rs new file mode 100644 index 0000000000..bd37a22011 --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/lib.rs @@ -0,0 +1,774 @@ +// Copyright 2019-2022 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 . + +//! The Penpal runtime is designed as a test runtime that can be created using an arbitrary parachain id. +//! (and as such multiple parachains can be on the same relay node - though make sure you have enough relay +//! nodes running to support this or you will get the not scheduled on a core error message.) +//! +//! The penpal runtime's primary use is as a partner when testing statemine/t with reserve asset transfers. +#![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")); + +mod weights; +pub mod xcm_config; + +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; +use frame_support::{ + construct_runtime, parameter_types, + traits::Everything, + weights::{ + constants::WEIGHT_PER_SECOND, ConstantMultiplier, DispatchClass, Weight, + WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial, + }, + PalletId, +}; +use frame_system::{ + limits::{BlockLength, BlockWeights}, + EnsureRoot, +}; +use smallvec::smallvec; +use sp_api::impl_runtime_apis; +pub 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::{AccountIdLookup, BlakeTwo256, Block as BlockT, IdentifyAccount, Verify}, + transaction_validity::{TransactionSource, TransactionValidity}, + ApplyExtrinsicResult, MultiSignature, +}; +pub use sp_runtime::{traits::ConvertInto, MultiAddress, Perbill, Permill}; +use sp_std::prelude::*; +#[cfg(feature = "std")] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; +use xcm_config::{AssetsToBlockAuthor, XcmConfig, XcmOriginToTransactDispatchOrigin}; + +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; + +// Polkadot imports +use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate}; + +use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}; + +// XCM Imports +use xcm::latest::prelude::BodyId; +use xcm_executor::XcmExecutor; + +/// 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; + +/// Balance of an account. +pub type Balance = u128; + +/// Index of a transaction in the chain. +pub type Index = u32; + +/// A hash of some data used by the chain. +pub type Hash = sp_core::H256; + +/// An index to a block. +pub type BlockNumber = u32; + +/// The address format for describing accounts. +pub type Address = 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; + +// Id used for identifying assets. +pub type AssetId = u32; + +/// The SignedExtension to the basic transaction logic. +pub type SignedExtra = ( + frame_system::CheckNonZeroSender, + frame_system::CheckSpecVersion, + frame_system::CheckTxVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, + pallet_asset_tx_payment::ChargeAssetTxPayment, +); + +/// 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, + AllPalletsWithSystem, +>; + +/// 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 Rococo, extrinsic base weight (smallest non-zero weight) is mapped to 1 MILLIUNIT: + // in our template, we map to 1/10 of that, or 1/10 MILLIUNIT + let p = MILLIUNIT / 10; + let q = 100 * Balance::from(ExtrinsicBaseWeight::get()); + smallvec![WeightToFeeCoefficient { + degree: 1, + negative: false, + coeff_frac: Perbill::from_rational(p % q, q), + coeff_integer: p / q, + }] + } +} + +/// 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::*; + use sp_runtime::{generic, traits::BlakeTwo256}; + + 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, + } +} + +#[sp_version::runtime_version] +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("penpal-parachain"), + impl_name: create_runtime_str!("penpal-parachain"), + authoring_version: 1, + spec_version: 1, + impl_version: 0, + apis: RUNTIME_API_VERSIONS, + transaction_version: 1, + state_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; + +// NOTE: Currently it is not possible to change the slot duration after the chain has started. +// Attempting to do so will brick block production. +pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; + +// 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; + +/// The existential deposit. Set to 1/10 of the Connected Relay Chain. +pub const EXISTENTIAL_DEPOSIT: Balance = MILLIUNIT; + +/// We assume that ~5% of the block weight is consumed by `on_initialize` handlers. This is +/// used to limit the maximal weight of a single extrinsic. +const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(5); + +/// 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 0.5 of a second of compute with a 12 second average block time. +const MAXIMUM_BLOCK_WEIGHT: Weight = WEIGHT_PER_SECOND / 2; + +/// 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 Version: RuntimeVersion = VERSION; + + // This part is copied from Substrate's `bin/node/runtime/src/lib.rs`. + // The `RuntimeBlockLength` and `RuntimeBlockWeights` exist here because the + // `DeletionWeightLimit` and `DeletionQueueDepth` depend on those to parameterize + // the lazy contract deletion. + pub RuntimeBlockLength: BlockLength = + BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + pub RuntimeBlockWeights: BlockWeights = 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 some 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(); + pub const SS58Prefix: u16 = 42; +} + +// 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 = BlakeTwo256; + /// 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; + /// The data to be stored in an account. + 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 = RocksDbWeight; + /// 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 = RuntimeBlockWeights; + /// The maximum length of a block (in bytes). + type BlockLength = RuntimeBlockLength; + /// 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; + type MaxConsumers = frame_support::traits::ConstU32<16>; +} + +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 UncleGenerations: u32 = 0; +} + +impl pallet_authorship::Config for Runtime { + type FindAuthor = pallet_session::FindAccountFromAuthorIndex; + type UncleGenerations = UncleGenerations; + type FilterUncle = (); + type EventHandler = (CollatorSelection,); +} + +parameter_types! { + pub const ExistentialDeposit: Balance = EXISTENTIAL_DEPOSIT; + pub const MaxLocks: u32 = 50; + pub const MaxReserves: u32 = 50; +} + +impl pallet_balances::Config for Runtime { + type MaxLocks = MaxLocks; + /// 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 MaxReserves = MaxReserves; + type ReserveIdentifier = [u8; 8]; +} + +parameter_types! { + /// Relay Chain `TransactionByteFee` / 10 + pub const TransactionByteFee: Balance = 10 * MICROUNIT; + pub const OperationalFeeMultiplier: u8 = 5; +} + +impl pallet_transaction_payment::Config for Runtime { + type Event = Event; + type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter; + type WeightToFee = WeightToFee; + type LengthToFee = ConstantMultiplier; + type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; + type OperationalFeeMultiplier = OperationalFeeMultiplier; +} + +parameter_types! { + pub const AssetDeposit: Balance = 0; + pub const AssetAccountDeposit: Balance = 0; + pub const ApprovalDeposit: Balance = 0; + pub const AssetsStringLimit: u32 = 50; + pub const MetadataDepositBase: Balance = 0; + pub const MetadataDepositPerByte: Balance = 0; +} + +// /// We allow root and the Relay Chain council to execute privileged asset operations. +// pub type AssetsForceOrigin = +// EnsureOneOf, EnsureXcm>>; + +impl pallet_assets::Config for Runtime { + type Event = Event; + type Balance = Balance; + type AssetId = AssetId; + type Currency = Balances; + type ForceOrigin = EnsureRoot; + type AssetDeposit = AssetDeposit; + type MetadataDepositBase = MetadataDepositBase; + type MetadataDepositPerByte = MetadataDepositPerByte; + type ApprovalDeposit = ApprovalDeposit; + type StringLimit = AssetsStringLimit; + type Freezer = (); + type Extra = (); + type WeightInfo = pallet_assets::weights::SubstrateWeight; + type AssetAccountDeposit = AssetAccountDeposit; +} + +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 OnSystemEvent = (); + type SelfParaId = parachain_info::Pallet; + type DmpMessageHandler = DmpQueue; + type ReservedDmpWeight = ReservedDmpWeight; + type OutboundXcmpMessageSource = XcmpQueue; + type XcmpMessageHandler = XcmpQueue; + type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; +} + +impl parachain_info::Config for Runtime {} + +impl cumulus_pallet_aura_ext::Config for Runtime {} + +impl cumulus_pallet_xcmp_queue::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; + type ChannelInfo = ParachainSystem; + type VersionWrapper = PolkadotXcm; + type ExecuteOverweightOrigin = EnsureRoot; + type ControllerOrigin = EnsureRoot; + type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin; + type WeightInfo = (); +} + +impl cumulus_pallet_dmp_queue::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; + type ExecuteOverweightOrigin = EnsureRoot; +} + +parameter_types! { + pub const Period: u32 = 6 * HOURS; + pub const Offset: u32 = 0; + pub const MaxAuthorities: u32 = 100_000; +} + +impl pallet_session::Config for Runtime { + type Event = Event; + type ValidatorId = ::AccountId; + // we don't have stash and controller, thus we don't need the convert as well. + type ValidatorIdOf = pallet_collator_selection::IdentityCollator; + type ShouldEndSession = pallet_session::PeriodicSessions; + type NextSessionRotation = pallet_session::PeriodicSessions; + type SessionManager = CollatorSelection; + // Essentially just Aura, but lets be pedantic. + type SessionHandler = ::KeyTypeIdProviders; + type Keys = SessionKeys; + type WeightInfo = (); +} + +impl pallet_aura::Config for Runtime { + type AuthorityId = AuraId; + type DisabledValidators = (); + type MaxAuthorities = MaxAuthorities; +} + +parameter_types! { + pub const PotId: PalletId = PalletId(*b"PotStake"); + pub const MaxCandidates: u32 = 1000; + pub const MinCandidates: u32 = 5; + pub const SessionLength: BlockNumber = 6 * HOURS; + pub const MaxInvulnerables: u32 = 100; + pub const ExecutiveBody: BodyId = BodyId::Executive; +} + +// We allow root only to execute privileged collator selection operations. +pub type CollatorSelectionUpdateOrigin = EnsureRoot; + +impl pallet_collator_selection::Config for Runtime { + type Event = Event; + type Currency = Balances; + type UpdateOrigin = CollatorSelectionUpdateOrigin; + type PotId = PotId; + type MaxCandidates = MaxCandidates; + type MinCandidates = MinCandidates; + type MaxInvulnerables = MaxInvulnerables; + // should be a multiple of session or things will get inconsistent + type KickThreshold = Period; + type ValidatorId = ::AccountId; + type ValidatorIdOf = pallet_collator_selection::IdentityCollator; + type ValidatorRegistration = Session; + type WeightInfo = (); +} + +impl pallet_asset_tx_payment::Config for Runtime { + type Fungibles = Assets; + type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter< + pallet_assets::BalanceToAssetBalance, + AssetsToBlockAuthor, + >; +} + +impl pallet_sudo::Config for Runtime { + type Event = Event; + type Call = Call; +} + +// Create the runtime by composing the FRAME pallets that were previously configured. +construct_runtime!( + pub enum Runtime where + Block = Block, + NodeBlock = opaque::Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + // System support stuff. + System: frame_system::{Pallet, Call, Config, Storage, Event} = 0, + ParachainSystem: cumulus_pallet_parachain_system::{ + Pallet, Call, Config, Storage, Inherent, Event, ValidateUnsigned, + } = 1, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 2, + ParachainInfo: parachain_info::{Pallet, Storage, Config} = 3, + + // Monetary stuff. + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, + AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, + + // Collator support. The order of these 4 are important and shall not change. + Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, + CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event, Config} = 21, + Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 22, + Aura: pallet_aura::{Pallet, Storage, Config} = 23, + AuraExt: cumulus_pallet_aura_ext::{Pallet, Storage, Config} = 24, + + // XCM helpers. + XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, + PolkadotXcm: pallet_xcm::{Pallet, Call, Event, Origin, Config} = 31, + CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, + DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, + + // The main stage. + Assets: pallet_assets::{Pallet, Call, Storage, Event} = 50, + + Sudo: pallet_sudo::{Pallet, Call, Storage, Event, Config} = 255, + } +); + +#[cfg(feature = "runtime-benchmarks")] +#[macro_use] +extern crate frame_benchmarking; + +#[cfg(feature = "runtime-benchmarks")] +mod benches { + define_benchmarks!( + [frame_system, SystemBench::] + [pallet_balances, Balances] + [pallet_session, SessionBench::] + [pallet_timestamp, Timestamp] + [pallet_collator_selection, CollatorSelection] + [cumulus_pallet_xcmp_queue, XcmpQueue] + ); +} + +impl_runtime_apis! { + 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().into_inner() + } + } + + 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 generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + + fn decode_session_keys( + encoded: Vec, + ) -> Option, KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } + } + + 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) + } + } + + impl cumulus_primitives_core::CollectCollationInfo for Runtime { + fn collect_collation_info(header: &::Header) -> cumulus_primitives_core::CollationInfo { + ParachainSystem::collect_collation_info(header) + } + } + + #[cfg(feature = "try-runtime")] + impl frame_try_runtime::TryRuntime for Runtime { + fn on_runtime_upgrade() -> (Weight, Weight) { + log::info!("try-runtime::on_runtime_upgrade parachain-template."); + let weight = Executive::try_runtime_upgrade().unwrap(); + (weight, RuntimeBlockWeights::get().max_block) + } + + fn execute_block_no_check(block: Block) -> Weight { + Executive::execute_block_no_check(block) + } + } + + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_benchmarking::{Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; + use frame_system_benchmarking::Pallet as SystemBench; + use cumulus_pallet_session_benchmarking::Pallet as SessionBench; + + let mut list = Vec::::new(); + list_benchmarks!(list, extra); + + 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}; + + use frame_system_benchmarking::Pallet as SystemBench; + impl frame_system_benchmarking::Config for Runtime {} + + use cumulus_pallet_session_benchmarking::Pallet as SessionBench; + impl cumulus_pallet_session_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_benchmarks!(params, batches); + + 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/parachains/runtimes/testing/penpal/src/weights/block_weights.rs b/parachains/runtimes/testing/penpal/src/weights/block_weights.rs new file mode 100644 index 0000000000..4db90f0c02 --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/weights/block_weights.rs @@ -0,0 +1,46 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, Weight}, + }; + + parameter_types! { + /// Importing a block with 0 Extrinsics. + pub const BlockExecutionWeight: Weight = 5_000_000 * constants::WEIGHT_PER_NANOS; + } + + #[cfg(test)] + mod test_weights { + use frame_support::weights::constants; + + /// Checks that the weight exists and is sane. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + let w = super::constants::BlockExecutionWeight::get(); + + // At least 100 µs. + assert!(w >= 100 * constants::WEIGHT_PER_MICROS, "Weight should be at least 100 µs."); + // At most 50 ms. + assert!(w <= 50 * constants::WEIGHT_PER_MILLIS, "Weight should be at most 50 ms."); + } + } +} diff --git a/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs b/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs new file mode 100644 index 0000000000..158ba99c6a --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs @@ -0,0 +1,46 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, Weight}, + }; + + parameter_types! { + /// Executing a NO-OP `System::remarks` Extrinsic. + pub const ExtrinsicBaseWeight: Weight = 125_000 * constants::WEIGHT_PER_NANOS; + } + + #[cfg(test)] + mod test_weights { + use frame_support::weights::constants; + + /// Checks that the weight exists and is sane. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + let w = super::constants::ExtrinsicBaseWeight::get(); + + // At least 10 µs. + assert!(w >= 10 * constants::WEIGHT_PER_MICROS, "Weight should be at least 10 µs."); + // At most 1 ms. + assert!(w <= constants::WEIGHT_PER_MILLIS, "Weight should be at most 1 ms."); + } + } +} diff --git a/parachains/runtimes/testing/penpal/src/weights/mod.rs b/parachains/runtimes/testing/penpal/src/weights/mod.rs new file mode 100644 index 0000000000..ed0b4dbcd4 --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/weights/mod.rs @@ -0,0 +1,28 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +//! Expose the auto generated weight files. + +pub mod block_weights; +pub mod extrinsic_weights; +pub mod paritydb_weights; +pub mod rocksdb_weights; + +pub use block_weights::constants::BlockExecutionWeight; +pub use extrinsic_weights::constants::ExtrinsicBaseWeight; +pub use paritydb_weights::constants::ParityDbWeight; +pub use rocksdb_weights::constants::RocksDbWeight; diff --git a/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs b/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs new file mode 100644 index 0000000000..843823c1bf --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs @@ -0,0 +1,63 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, RuntimeDbWeight}, + }; + + parameter_types! { + /// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights + /// are available for brave runtime engineers who may want to try this out as default. + pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight { + read: 8_000 * constants::WEIGHT_PER_NANOS, + write: 50_000 * constants::WEIGHT_PER_NANOS, + }; + } + + #[cfg(test)] + mod test_db_weights { + use super::constants::ParityDbWeight as W; + use frame_support::weights::constants; + + /// Checks that all weights exist and have sane values. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + // At least 1 µs. + assert!( + W::get().reads(1) >= constants::WEIGHT_PER_MICROS, + "Read weight should be at least 1 µs." + ); + assert!( + W::get().writes(1) >= constants::WEIGHT_PER_MICROS, + "Write weight should be at least 1 µs." + ); + // At most 1 ms. + assert!( + W::get().reads(1) <= constants::WEIGHT_PER_MILLIS, + "Read weight should be at most 1 ms." + ); + assert!( + W::get().writes(1) <= constants::WEIGHT_PER_MILLIS, + "Write weight should be at most 1 ms." + ); + } + } +} diff --git a/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs b/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs new file mode 100644 index 0000000000..05e06b0eab --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs @@ -0,0 +1,63 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, RuntimeDbWeight}, + }; + + parameter_types! { + /// By default, Substrate uses `RocksDB`, so this will be the weight used throughout + /// the runtime. + pub const RocksDbWeight: RuntimeDbWeight = RuntimeDbWeight { + read: 25_000 * constants::WEIGHT_PER_NANOS, + write: 100_000 * constants::WEIGHT_PER_NANOS, + }; + } + + #[cfg(test)] + mod test_db_weights { + use super::constants::RocksDbWeight as W; + use frame_support::weights::constants; + + /// Checks that all weights exist and have sane values. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + // At least 1 µs. + assert!( + W::get().reads(1) >= constants::WEIGHT_PER_MICROS, + "Read weight should be at least 1 µs." + ); + assert!( + W::get().writes(1) >= constants::WEIGHT_PER_MICROS, + "Write weight should be at least 1 µs." + ); + // At most 1 ms. + assert!( + W::get().reads(1) <= constants::WEIGHT_PER_MILLIS, + "Read weight should be at most 1 ms." + ); + assert!( + W::get().writes(1) <= constants::WEIGHT_PER_MILLIS, + "Write weight should be at most 1 ms." + ); + } + } +} diff --git a/parachains/runtimes/testing/penpal/src/xcm_config.rs b/parachains/runtimes/testing/penpal/src/xcm_config.rs new file mode 100644 index 0000000000..3fb2192cd7 --- /dev/null +++ b/parachains/runtimes/testing/penpal/src/xcm_config.rs @@ -0,0 +1,378 @@ +// Copyright 2019-2022 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 . + +//! Holds the XCM specific configuration that would otherwise be in lib.rs +//! +//! This configuration dictates how the Penpal chain will communicate with other chains. +//! +//! One of the main uses of the penpal chain will be to be a benefactor of reserve asset transfers +//! with statemine as the reserve. At present no derivative tokens are minted on receipt of a +//! ReserveAssetTransferDeposited message but that will but the intension will be to support this soon. +use super::{ + AccountId, AssetId as AssetIdPalletAssets, Assets, Balance, Balances, Call, Event, Origin, + ParachainInfo, ParachainSystem, PolkadotXcm, Runtime, WeightToFee, XcmpQueue, +}; +use core::marker::PhantomData; +use frame_support::{ + log, match_types, parameter_types, + traits::{ + fungibles::{self, Balanced, CreditOf}, + Contains, Everything, Get, Nothing, + }, + weights::Weight, +}; +use pallet_asset_tx_payment::HandleCredit; +use pallet_xcm::XcmPassthrough; +use polkadot_parachain::primitives::Sibling; +use polkadot_runtime_common::impls::ToAuthor; +use sp_runtime::traits::Zero; +use xcm::latest::prelude::*; +use xcm_builder::{ + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, AsPrefixedGeneralIndex, + ConvertedConcreteAssetId, CurrencyAdapter, EnsureXcmOrigin, FixedWeightBounds, + FungiblesAdapter, IsConcrete, LocationInverter, NativeAsset, ParentIsPreset, + RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + UsingComponents, +}; +use xcm_executor::{ + traits::{FilterAssetLocation, JustTry, ShouldExecute}, + XcmExecutor, +}; + +parameter_types! { + pub const RelayLocation: MultiLocation = MultiLocation::parent(); + pub const RelayNetwork: NetworkId = NetworkId::Any; + pub RelayChainOrigin: 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 parent `AccountId`. + ParentIsPreset, + // 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 CurrencyTransactor = 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. + (), +>; + +/// Means for transacting assets besides the native currency on this chain. +pub type FungiblesTransactor = FungiblesAdapter< + // Use this fungibles implementation: + Assets, + // Use this currency when it is a fungible asset matching the given location or name: + ConvertedConcreteAssetId< + AssetIdPalletAssets, + Balance, + AsPrefixedGeneralIndex, + JustTry, + >, + // Convert an XCM MultiLocation into a local account id: + LocationToAccountId, + // Our chain's account ID type (we can't get away without mentioning it explicitly): + AccountId, + // We only want to allow teleports of known assets. We use non-zero issuance as an indication + // that this asset is known. + NonZeroIssuance, + // The account to use for tracking teleports. + CheckingAccount, +>; + +/// Means for transacting assets on this chain. +pub type AssetTransactors = (CurrencyTransactor, FungiblesTransactor); + +/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance, +/// ready for dispatching a transaction with Xcm's `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 + // recognized. + RelayChainAsNative, + // Native converter for sibling Parachains; will convert to a `SiblingPara` origin when + // recognized. + SiblingParachainAsNative, + // 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_000 weight - almost certainly a conservative estimate. + pub UnitWeightCost: Weight = 1_000_000_000; + pub const MaxInstructions: u32 = 100; +} + +match_types! { + pub type ParentOrParentsExecutivePlurality: impl Contains = { + MultiLocation { parents: 1, interior: Here } | + MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) } + }; + pub type CommonGoodAssetsParachain: impl Contains = { + MultiLocation { parents: 1, interior: X1(Parachain(1000)) } + }; +} + +//TODO: move DenyThenTry to polkadot's xcm module. +/// Deny executing the xcm message if it matches any of the Deny filter regardless of anything else. +/// If it passes the Deny, and matches one of the Allow cases then it is let through. +pub struct DenyThenTry(PhantomData, PhantomData) +where + Deny: ShouldExecute, + Allow: ShouldExecute; + +impl ShouldExecute for DenyThenTry +where + Deny: ShouldExecute, + Allow: ShouldExecute, +{ + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + max_weight: Weight, + weight_credit: &mut Weight, + ) -> Result<(), ()> { + Deny::should_execute(origin, message, max_weight, weight_credit)?; + Allow::should_execute(origin, message, max_weight, weight_credit) + } +} + +// See issue #5233 +pub struct DenyReserveTransferToRelayChain; +impl ShouldExecute for DenyReserveTransferToRelayChain { + fn should_execute( + origin: &MultiLocation, + message: &mut Xcm, + _max_weight: Weight, + _weight_credit: &mut Weight, + ) -> Result<(), ()> { + if message.0.iter().any(|inst| { + matches!( + inst, + InitiateReserveWithdraw { + reserve: MultiLocation { parents: 1, interior: Here }, + .. + } | DepositReserveAsset { dest: MultiLocation { parents: 1, interior: Here }, .. } | + TransferReserveAsset { + dest: MultiLocation { parents: 1, interior: Here }, + .. + } + ) + }) { + return Err(()) // Deny + } + + // allow reserve transfers to arrive from relay chain + if matches!(origin, MultiLocation { parents: 1, interior: Here }) && + message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. })) + { + log::warn!( + target: "xcm::barriers", + "Unexpected ReserveAssetDeposited from the relay chain", + ); + } + // Permit everything else + Ok(()) + } +} + +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + TakeWeightCredit, + AllowTopLevelPaidExecutionFrom, + // Parent and its exec plurality get free execution + AllowUnpaidExecutionFrom, + // Assets Common Good parachain gets free execution + AllowUnpaidExecutionFrom, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, + ), +>; + +/// Type alias to conveniently refer to `frame_system`'s `Config::AccountId`. +pub type AccountIdOf = ::AccountId; + +/// Asset filter that allows all assets from a certain location. +pub struct AssetsFrom(PhantomData); +impl> FilterAssetLocation for AssetsFrom { + fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { + let loc = T::get(); + &loc == origin && + matches!(asset, MultiAsset { id: AssetId::Concrete(asset_loc), fun: Fungible(_a) } + if asset_loc.match_and_split(&loc).is_some()) + } +} + +/// Allow checking in assets that have issuance > 0. +pub struct NonZeroIssuance(PhantomData<(AccountId, Assets)>); +impl Contains<>::AssetId> + for NonZeroIssuance +where + Assets: fungibles::Inspect, +{ + fn contains(id: &>::AssetId) -> bool { + !Assets::total_issuance(*id).is_zero() + } +} + +/// A `HandleCredit` implementation that naively transfers the fees to the block author. +/// Will drop and burn the assets in case the transfer fails. +pub struct AssetsToBlockAuthor(PhantomData); +impl HandleCredit, pallet_assets::Pallet> for AssetsToBlockAuthor +where + R: pallet_authorship::Config + pallet_assets::Config, + AccountIdOf: + From + Into, +{ + fn handle_credit(credit: CreditOf, pallet_assets::Pallet>) { + if let Some(author) = pallet_authorship::Pallet::::author() { + // In case of error: Will drop the result triggering the `OnDrop` of the imbalance. + let _ = pallet_assets::Pallet::::resolve(&author, credit); + } + } +} + +pub trait Reserve { + /// Returns assets reserve location. + fn reserve(&self) -> Option; +} + +// Takes the chain part of a MultiAsset +impl Reserve for MultiAsset { + fn reserve(&self) -> Option { + if let AssetId::Concrete(location) = self.id.clone() { + let first_interior = location.first_interior(); + let parents = location.parent_count(); + match (parents, first_interior.clone()) { + (0, Some(Parachain(id))) => Some(MultiLocation::new(0, X1(Parachain(id.clone())))), + (1, Some(Parachain(id))) => Some(MultiLocation::new(1, X1(Parachain(id.clone())))), + (1, _) => Some(MultiLocation::parent()), + _ => None, + } + } else { + None + } + } +} + +/// A `FilterAssetLocation` implementation. Filters multi native assets whose +/// reserve is same with `origin`. +pub struct MultiNativeAsset; +impl FilterAssetLocation for MultiNativeAsset { + fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { + if let Some(ref reserve) = asset.reserve() { + if reserve == origin { + return true + } + } + false + } +} + +parameter_types! { + pub CommonGoodAssetsLocation: MultiLocation = MultiLocation::new(1, X1(Parachain(1000))); + // ALWAYS ensure that the index in PalletInstance stays up-to-date with + // Statemint's Assets pallet index + pub CommonGoodAssetsPalletLocation: MultiLocation = + MultiLocation::new(1, X2(Parachain(1000), PalletInstance(50))); + pub CheckingAccount: AccountId = PolkadotXcm::check_account(); +} + +pub type Reserves = (NativeAsset, AssetsFrom); + +pub struct XcmConfig; +impl xcm_executor::Config for XcmConfig { + type Call = Call; + type XcmSender = XcmRouter; + // How to withdraw and deposit an asset. + type AssetTransactor = AssetTransactors; + type OriginConverter = XcmOriginToTransactDispatchOrigin; + type IsReserve = MultiNativeAsset; // TODO: maybe needed to be replaced by Reserves + type IsTeleporter = NativeAsset; + type LocationInverter = LocationInverter; + type Barrier = Barrier; + type Weigher = FixedWeightBounds; + type Trader = + UsingComponents>; + 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 = Nothing; + // ^ Disable dispatchable execute on the XCM pallet. + // Needs to be `Everything` for local testing. + 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; + // ^ Override for AdvertisedXcmVersion default + type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion; +} + +impl cumulus_pallet_xcm::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; +} diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index d677df57d7..78a44a198d 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -23,6 +23,7 @@ statemint-runtime = { path = "../parachains/runtimes/assets/statemint" } statemine-runtime = { path = "../parachains/runtimes/assets/statemine" } westmint-runtime = { path = "../parachains/runtimes/assets/westmint" } contracts-rococo-runtime = { path = "../parachains/runtimes/contracts/contracts-rococo" } +penpal-runtime = { path = "../parachains/runtimes/testing/penpal" } jsonrpsee = { version = "0.14.0", features = ["server"] } parachains-common = { path = "../parachains/common" } diff --git a/polkadot-parachain/src/chain_spec/mod.rs b/polkadot-parachain/src/chain_spec/mod.rs index f5e442f5e2..fe26ce2a66 100644 --- a/polkadot-parachain/src/chain_spec/mod.rs +++ b/polkadot-parachain/src/chain_spec/mod.rs @@ -24,6 +24,7 @@ use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public}; use sp_runtime::traits::{IdentifyAccount, Verify}; pub mod contracts; +pub mod penpal; pub mod seedling; pub mod shell; pub mod statemint; diff --git a/polkadot-parachain/src/chain_spec/penpal.rs b/polkadot-parachain/src/chain_spec/penpal.rs new file mode 100644 index 0000000000..fb127e5168 --- /dev/null +++ b/polkadot-parachain/src/chain_spec/penpal.rs @@ -0,0 +1,136 @@ +// Copyright 2019-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 . + +use crate::chain_spec::{get_account_id_from_seed, Extensions}; +use cumulus_primitives_core::ParaId; +// use rococo_parachain_runtime::{AuraId}; +use crate::chain_spec::{get_collator_keys_from_seed, SAFE_XCM_VERSION}; +use sc_service::ChainType; +use sp_core::sr25519; +/// Specialized `ChainSpec` for the normal parachain runtime. +pub type PenpalChainSpec = sc_service::GenericChainSpec; + +pub fn get_penpal_chain_spec(id: ParaId, relay_chain: &str) -> PenpalChainSpec { + // 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(), 12u32.into()); + properties.insert("ss58Format".into(), 42u32.into()); + + PenpalChainSpec::from_genesis( + // Name + "Penpal Parachain", + // ID + &format!("penpal-{}", relay_chain.replace("-local", "")), + ChainType::Development, + move || { + penpal_testnet_genesis( + // initial collators. + vec![ + ( + get_account_id_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), + ), + ( + get_account_id_from_seed::("Bob"), + get_collator_keys_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, + None, + Extensions { + relay_chain: relay_chain.into(), // You MUST set this to the correct network! + para_id: id.into(), + }, + ) +} + +fn penpal_testnet_genesis( + invulnerables: Vec<(penpal_runtime::AccountId, penpal_runtime::AuraId)>, + endowed_accounts: Vec, + id: ParaId, +) -> penpal_runtime::GenesisConfig { + penpal_runtime::GenesisConfig { + system: penpal_runtime::SystemConfig { + code: penpal_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + balances: penpal_runtime::BalancesConfig { + balances: endowed_accounts + .iter() + .cloned() + .map(|k| (k, penpal_runtime::EXISTENTIAL_DEPOSIT * 4096)) + .collect(), + }, + parachain_info: penpal_runtime::ParachainInfoConfig { parachain_id: id }, + collator_selection: penpal_runtime::CollatorSelectionConfig { + invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: penpal_runtime::EXISTENTIAL_DEPOSIT * 16, + ..Default::default() + }, + session: penpal_runtime::SessionConfig { + keys: invulnerables + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + penpal_session_keys(aura), // session keys + ) + }) + .collect(), + }, + // no need to pass anything to aura, in fact it will panic if we do. Session will take care + // of this. + aura: Default::default(), + aura_ext: Default::default(), + parachain_system: Default::default(), + polkadot_xcm: penpal_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + }, + sudo: penpal_runtime::SudoConfig { + key: Some(get_account_id_from_seed::("Alice")), + }, + } +} + +/// Generate the session keys from individual elements. +/// +/// The input must be a tuple of individual keys (a single arg for now since we have just one key). +pub fn penpal_session_keys(keys: penpal_runtime::AuraId) -> penpal_runtime::SessionKeys { + penpal_runtime::SessionKeys { aura: keys } +} diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index ab325744c3..ac76e20d48 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -14,8 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use std::net::SocketAddr; - use codec::Encode; use cumulus_client_cli::generate_genesis_block; use cumulus_primitives_core::ParaId; @@ -32,6 +30,7 @@ use sc_service::{ }; use sp_core::hexdisplay::HexDisplay; use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; +use std::net::SocketAddr; use crate::{ chain_spec, @@ -50,6 +49,7 @@ enum Runtime { Statemint, Statemine, Westmint, + Penpal(ParaId), ContractsRococo, } @@ -73,6 +73,7 @@ impl ChainType } fn runtime(id: &str) -> Runtime { + let (_, id, para_id) = extract_parachain_id(id); if id.starts_with("shell") { Runtime::Shell } else if id.starts_with("seedling") { @@ -83,6 +84,8 @@ fn runtime(id: &str) -> Runtime { Runtime::Statemine } else if id.starts_with("westmint") { Runtime::Westmint + } else if id.starts_with("penpal") { + Runtime::Penpal(para_id.unwrap_or(ParaId::new(0))) } else if id.starts_with("contracts-rococo") { Runtime::ContractsRococo } else { @@ -91,6 +94,7 @@ fn runtime(id: &str) -> Runtime { } fn load_spec(id: &str) -> std::result::Result, String> { + let (id, _, para_id) = extract_parachain_id(id); Ok(match id { "staging" => Box::new(chain_spec::staging_test_net()), "tick" => Box::new(chain_spec::ChainSpec::from_json_bytes( @@ -142,6 +146,14 @@ fn load_spec(id: &str) -> std::result::Result, String> { )?), // -- Fallback (generic chainspec) "" => Box::new(chain_spec::get_chain_spec()), + "penpal-kusama" => Box::new(chain_spec::penpal::get_penpal_chain_spec( + para_id.expect("Must specify parachain id"), + "kusama-local", + )), + "penpal-polkadot" => Box::new(chain_spec::penpal::get_penpal_chain_spec( + para_id.expect("Must specify parachain id"), + "polkadot-local", + )), // -- Loading a specific spec from disk path => { let chain_spec = chain_spec::ChainSpec::from_json_file(path.into())?; @@ -161,12 +173,36 @@ fn load_spec(id: &str) -> std::result::Result, String> { Runtime::ContractsRococo => Box::new( chain_spec::contracts::ContractsRococoChainSpec::from_json_file(path.into())?, ), + Runtime::Penpal(_para_id) => + Box::new(chain_spec::penpal::PenpalChainSpec::from_json_file(path.into())?), Runtime::Generic => Box::new(chain_spec), } }, }) } +/// Extracts the normalized chain id and parachain id from the input chain id. +/// (H/T to Phala for the idea) +/// E.g. "penpal-kusama-2004" yields ("penpal-kusama", Some(2004)) +fn extract_parachain_id(id: &str) -> (&str, &str, Option) { + const KUSAMA_TEST_PARA_PREFIX: &str = "penpal-kusama-"; + const POLKADOT_TEST_PARA_PREFIX: &str = "penpal-polkadot-"; + + let (norm_id, orig_id, para) = if id.starts_with(KUSAMA_TEST_PARA_PREFIX) { + let suffix = &id[KUSAMA_TEST_PARA_PREFIX.len()..]; + let para_id: u32 = suffix.parse().expect("Invalid parachain-id suffix"); + (&id[..KUSAMA_TEST_PARA_PREFIX.len() - 1], id, Some(para_id)) + } else if id.starts_with(POLKADOT_TEST_PARA_PREFIX) { + let suffix = &id[POLKADOT_TEST_PARA_PREFIX.len()..]; + let para_id: u32 = suffix.parse().expect("Invalid parachain-id suffix"); + (&id[..POLKADOT_TEST_PARA_PREFIX.len() - 1], id, Some(para_id)) + } else { + (id, id, None) + }; + + (norm_id, orig_id, para.map(Into::into)) +} + impl SubstrateCli for Cli { fn impl_name() -> String { "Polkadot parachain".into() @@ -210,6 +246,7 @@ impl SubstrateCli for Cli { Runtime::Shell => &shell_runtime::VERSION, Runtime::Seedling => &seedling_runtime::VERSION, Runtime::ContractsRococo => &contracts_rococo_runtime::VERSION, + Runtime::Penpal(_) => &penpal_runtime::VERSION, Runtime::Generic => &rococo_parachain_runtime::VERSION, } } @@ -349,7 +386,7 @@ macro_rules! construct_async_run { { $( $code )* }.map(|v| (v, task_manager)) }) }, - Runtime::Generic => { + Runtime::Penpal(_) | Runtime::Generic => { runner.async_run(|$config| { let $components = new_partial::< rococo_parachain_runtime::RuntimeApi, @@ -591,16 +628,17 @@ pub fn run() -> Result<()> { .await .map(|r| r.0) .map_err(Into::into), - Runtime::Generic => crate::service::start_rococo_parachain_node( - config, - polkadot_config, - collator_options, - id, - hwbench, - ) - .await - .map(|r| r.0) - .map_err(Into::into), + Runtime::Penpal(_) | Runtime::Generic => + crate::service::start_rococo_parachain_node( + config, + polkadot_config, + collator_options, + id, + hwbench, + ) + .await + .map(|r| r.0) + .map_err(Into::into), } }) }, From b056dae0fa3985894b790468c6e362d1fd327056 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 22:33:53 +0200 Subject: [PATCH 154/238] Bump clap from 3.2.6 to 3.2.8 (#1422) Bumps [clap](https://github.com/clap-rs/clap) from 3.2.6 to 3.2.8. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.2.6...v3.2.8) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ client/cli/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1c785e0d91..698d05ac7f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -925,9 +925,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.6" +version = "3.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1fe12880bae935d142c8702d500c63a4e8634b6c3c57ad72bf978fc7b6249a" +checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" dependencies = [ "atty", "bitflags", @@ -942,9 +942,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.6" +version = "3.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6db9e867166a43a53f7199b5e4d1f522a1e5bd626654be263c999ce59df39a" +checksum = "759bf187376e1afa7b85b959e6a664a3e7a95203415dba952ad19139e798f902" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -1431,7 +1431,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.2.6", + "clap 3.2.8", "parity-scale-codec", "sc-chain-spec", "sc-cli", @@ -2041,7 +2041,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.2.6", + "clap 3.2.8", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2711,7 +2711,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba dependencies = [ "Inflector", "chrono", - "clap 3.2.6", + "clap 3.2.8", "comfy-table", "frame-benchmarking", "frame-support", @@ -6361,7 +6361,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.2.6", + "clap 3.2.8", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -6979,7 +6979,7 @@ name = "polkadot-cli" version = "0.9.26" source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" dependencies = [ - "clap 3.2.6", + "clap 3.2.8", "frame-benchmarking-cli", "futures", "log", @@ -7626,7 +7626,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.2.6", + "clap 3.2.8", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9337,7 +9337,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ "chrono", - "clap 3.2.6", + "clap 3.2.8", "fdlimit", "futures", "hex", @@ -12380,7 +12380,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" dependencies = [ - "clap 3.2.6", + "clap 3.2.8", "jsonrpsee", "log", "parity-scale-codec", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index eba672355f..d6276d63bc 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.2.6", features = ["derive", "deprecated"] } +clap = { version = "3.2.8", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index c9b6d70b2b..cd552755b4 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [dependencies] -clap = { version = "3.2.6", features = ["derive"] } +clap = { version = "3.2.8", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 78a44a198d..c9145e772d 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -8,7 +8,7 @@ description = "Runs a polkadot parachain node which could be a collator." [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.6", features = ["derive", "deprecated"] } +clap = { version = "3.2.8", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index f0df957616..e1b97f9368 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,7 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.6", features = ["derive", "deprecated"] } +clap = { version = "3.2.8", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } From ba9d9cdf6e35ff4949fea33582b2b623a6716996 Mon Sep 17 00:00:00 2001 From: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com> Date: Wed, 13 Jul 2022 14:21:34 +0100 Subject: [PATCH 155/238] Companion to #11398 (#1324) * Companion to #11398 * Remove buy_item() from AssetOwner * Remove set_price() as well * Remove set_price and buy_item from the proxy in Westmint and Statemine * update lockfile for {"substrate", "polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 879 ++++++++---------- .../statemine/src/weights/pallet_uniques.rs | 14 + .../statemint/src/weights/pallet_uniques.rs | 14 + .../westmint/src/weights/pallet_uniques.rs | 14 + 4 files changed, 425 insertions(+), 496 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 698d05ac7f..c12710e4ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -2667,7 +2667,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", ] @@ -2685,7 +2685,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -2707,7 +2707,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "Inflector", "chrono", @@ -2758,7 +2758,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2769,7 +2769,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2785,7 +2785,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -2813,7 +2813,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "bitflags", "frame-metadata", @@ -2843,7 +2843,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2855,7 +2855,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2867,7 +2867,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro2", "quote", @@ -2877,7 +2877,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "log", @@ -2894,7 +2894,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -2909,7 +2909,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "sp-api", @@ -2918,7 +2918,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "sp-api", @@ -3661,7 +3661,7 @@ dependencies = [ "http", "jsonrpsee-core", "jsonrpsee-types", - "pin-project 1.0.10", + "pin-project", "rustls-native-certs", "soketto", "thiserror", @@ -3795,7 +3795,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-primitives", "bitvec", @@ -3887,7 +3887,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "polkadot-primitives", @@ -3990,9 +3990,9 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.45.1" +version = "0.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41726ee8f662563fafba2d2d484b14037cc8ecb8c953fbfc8439d4ce3a0a9029" +checksum = "81327106887e42d004fbdab1fef93675be2e2e07c1b95fce45e2cc813485611d" dependencies = [ "bytes", "futures", @@ -4001,7 +4001,7 @@ dependencies = [ "instant", "lazy_static", "libp2p-autonat", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-deflate", "libp2p-dns", "libp2p-floodsub", @@ -4027,69 +4027,35 @@ dependencies = [ "libp2p-yamux", "multiaddr", "parking_lot 0.12.1", - "pin-project 1.0.10", + "pin-project", "rand 0.7.3", "smallvec", ] [[package]] name = "libp2p-autonat" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50de7c1d5c3f040fccb469e8a2d189e068b7627d760dd74ef914071c16bbe905" +checksum = "4decc51f3573653a9f4ecacb31b1b922dd20c25a6322bb15318ec04287ec46f9" dependencies = [ "async-trait", "futures", "futures-timer", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-request-response", "libp2p-swarm", "log", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.8.5", ] [[package]] name = "libp2p-core" -version = "0.32.1" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db5b02602099fb75cb2d16f9ea860a320d6eb82ce41e95ab680912c454805cd5" -dependencies = [ - "asn1_der", - "bs58", - "ed25519-dalek", - "either", - "fnv", - "futures", - "futures-timer", - "instant", - "lazy_static", - "log", - "multiaddr", - "multihash", - "multistream-select", - "parking_lot 0.12.1", - "pin-project 1.0.10", - "prost 0.9.0", - "prost-build 0.9.0", - "rand 0.8.5", - "ring", - "rw-stream-sink 0.2.1", - "sha2 0.10.2", - "smallvec", - "thiserror", - "unsigned-varint", - "void", - "zeroize", -] - -[[package]] -name = "libp2p-core" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d46fca305dee6757022e2f5a4f6c023315084d0ed7441c3ab244e76666d979" +checksum = "fbf9b94cefab7599b2d3dff2f93bee218c6621d68590b23ede4485813cbcece6" dependencies = [ "asn1_der", "bs58", @@ -4106,12 +4072,12 @@ dependencies = [ "multihash", "multistream-select", "parking_lot 0.12.1", - "pin-project 1.0.10", - "prost 0.10.3", - "prost-build 0.10.4", + "pin-project", + "prost", + "prost-build", "rand 0.8.5", "ring", - "rw-stream-sink 0.3.0", + "rw-stream-sink", "sha2 0.10.2", "smallvec", "thiserror", @@ -4122,24 +4088,24 @@ dependencies = [ [[package]] name = "libp2p-deflate" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86adefc55ea4ed8201149f052fb441210727481dff1fb0b8318460206a79f5fb" +checksum = "d0183dc2a3da1fbbf85e5b6cf51217f55b14f5daea0c455a9536eef646bfec71" dependencies = [ "flate2", "futures", - "libp2p-core 0.33.0", + "libp2p-core", ] [[package]] name = "libp2p-dns" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb462ec3a51fab457b4b44ac295e8b0a4b04dc175127e615cf996b1f0f1a268" +checksum = "6cbf54723250fa5d521383be789bf60efdabe6bacfb443f87da261019a49b4b5" dependencies = [ "async-std-resolver", "futures", - "libp2p-core 0.33.0", + "libp2p-core", "log", "parking_lot 0.12.1", "smallvec", @@ -4148,27 +4114,27 @@ dependencies = [ [[package]] name = "libp2p-floodsub" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a505d0c6f851cbf2919535150198e530825def8bd3757477f13dc3a57f46cbcc" +checksum = "98a4b6ffd53e355775d24b76f583fdda54b3284806f678499b57913adb94f231" dependencies = [ "cuckoofilter", "fnv", "futures", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.7.3", "smallvec", ] [[package]] name = "libp2p-gossipsub" -version = "0.38.1" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e064ba4d7832e01c738626c6b274ae100baba05f5ffcc7b265c2a3ed398108" +checksum = "74b4b888cfbeb1f5551acd3aa1366e01bf88ede26cc3c4645d0d2d004d5ca7b0" dependencies = [ "asynchronous-codec", "base64", @@ -4178,12 +4144,12 @@ dependencies = [ "futures", "hex_fmt", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", "prometheus-client", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.7.3", "regex", "sha2 0.10.2", @@ -4194,19 +4160,19 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.36.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84b53490442d086db1fa5375670c9666e79143dccadef3f7c74a4346899a984" +checksum = "c50b585518f8efd06f93ac2f976bd672e17cdac794644b3117edd078e96bda06" dependencies = [ "asynchronous-codec", "futures", "futures-timer", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", "lru 0.7.7", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "prost-codec", "smallvec", "thiserror", @@ -4215,9 +4181,9 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.37.1" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6b5d4de90fcd35feb65ea6223fd78f3b747a64ca4b65e0813fbe66a27d56aa" +checksum = "740862893bb5f06ac24acc9d49bdeadc3a5e52e51818a30a25c1f3519da2c851" dependencies = [ "arrayvec 0.7.2", "asynchronous-codec", @@ -4227,11 +4193,11 @@ dependencies = [ "futures", "futures-timer", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.7.3", "sha2 0.10.2", "smallvec", @@ -4243,9 +4209,9 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4783f8cf00c7b6c1ff0f1870b4fcf50b042b45533d2e13b6fb464caf447a6951" +checksum = "66e5e5919509603281033fd16306c61df7a4428ce274b67af5e14b07de5cdcb2" dependencies = [ "async-io", "data-encoding", @@ -4253,7 +4219,7 @@ dependencies = [ "futures", "if-watch", "lazy_static", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", "rand 0.8.5", @@ -4264,11 +4230,11 @@ dependencies = [ [[package]] name = "libp2p-metrics" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4357140141ba9739eee71b20aa735351c0fc642635b2bffc7f57a6b5c1090" +checksum = "ef8aff4a1abef42328fbb30b17c853fff9be986dc39af17ee39f9c5f755c5e0c" dependencies = [ - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-gossipsub", "libp2p-identify", "libp2p-kad", @@ -4280,14 +4246,14 @@ dependencies = [ [[package]] name = "libp2p-mplex" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ff9c893f2367631a711301d703c47432af898c9bb8253bea0e2c051a13f7640" +checksum = "61fd1b20638ec209c5075dfb2e8ce6a7ea4ec3cd3ad7b77f7a477c06d53322e2" dependencies = [ "asynchronous-codec", "bytes", "futures", - "libp2p-core 0.33.0", + "libp2p-core", "log", "nohash-hasher", "parking_lot 0.12.1", @@ -4298,18 +4264,18 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2cee1dad1c83325bbd182a8e94555778699cec8a9da00086efb7522c4c15ad" +checksum = "762408cb5d84b49a600422d7f9a42c18012d8da6ebcd570f9a4a4290ba41fb6f" dependencies = [ "bytes", "curve25519-dalek 3.2.0", "futures", "lazy_static", - "libp2p-core 0.33.0", + "libp2p-core", "log", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.8.5", "sha2 0.10.2", "snow", @@ -4320,14 +4286,14 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41516c82fe8dd148ec925eead0c5ec08a0628f7913597e93e126e4dfb4e0787" +checksum = "100a6934ae1dbf8a693a4e7dd1d730fd60b774dafc45688ed63b554497c6c925" dependencies = [ "futures", "futures-timer", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", "rand 0.7.3", @@ -4336,17 +4302,17 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db007e737adc5d28b2e03223b0210164928ad742591127130796a72aa8eaf54f" +checksum = "be27bf0820a6238a4e06365b096d428271cce85a129cf16f2fe9eb1610c4df86" dependencies = [ "asynchronous-codec", "bytes", "futures", - "libp2p-core 0.33.0", + "libp2p-core", "log", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "unsigned-varint", "void", ] @@ -4359,7 +4325,7 @@ checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" dependencies = [ "futures", "log", - "pin-project 1.0.10", + "pin-project", "rand 0.7.3", "salsa20", "sha3 0.9.1", @@ -4367,9 +4333,9 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624ead3406f64437a0d4567c31bd128a9a0b8226d5f16c074038f5d0fc32f650" +checksum = "4931547ee0cce03971ccc1733ff05bb0c4349fd89120a39e9861e2bbe18843c3" dependencies = [ "asynchronous-codec", "bytes", @@ -4377,12 +4343,12 @@ dependencies = [ "futures", "futures-timer", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", - "pin-project 1.0.10", - "prost 0.10.3", - "prost-build 0.10.4", + "pin-project", + "prost", + "prost-build", "prost-codec", "rand 0.8.5", "smallvec", @@ -4393,20 +4359,20 @@ dependencies = [ [[package]] name = "libp2p-rendezvous" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59967ea2db2c7560f641aa58ac05982d42131863fcd3dd6dcf0dd1daf81c60c" +checksum = "9511c9672ba33284838e349623319c8cad2d18cfad243ae46c6b7e8a2982ea4e" dependencies = [ "asynchronous-codec", "bimap", "futures", "futures-timer", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.8.5", "sha2 0.10.2", "thiserror", @@ -4416,15 +4382,15 @@ dependencies = [ [[package]] name = "libp2p-request-response" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b02e0acb725e5a757d77c96b95298fd73a7394fe82ba7b8bbeea510719cbe441" +checksum = "508a189e2795d892c8f5c1fa1e9e0b1845d32d7b0b249dbf7b05b18811361843" dependencies = [ "async-trait", "bytes", "futures", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "libp2p-swarm", "log", "rand 0.7.3", @@ -4434,18 +4400,18 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.36.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4bb21c5abadbf00360c734f16bf87f1712ed4f23cd46148f625d2ddb867346" +checksum = "95ac5be6c2de2d1ff3f7693fda6faf8a827b1f3e808202277783fea9f527d114" dependencies = [ "either", "fnv", "futures", "futures-timer", "instant", - "libp2p-core 0.33.0", + "libp2p-core", "log", - "pin-project 1.0.10", + "pin-project", "rand 0.7.3", "smallvec", "thiserror", @@ -4454,9 +4420,9 @@ dependencies = [ [[package]] name = "libp2p-swarm-derive" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf2fe8c80b43561355f4d51875273b5b6dfbac37952e8f64b1270769305c9d7" +checksum = "9f54a64b6957249e0ce782f8abf41d97f69330d02bf229f0672d864f0650cc76" dependencies = [ "quote", "syn", @@ -4464,9 +4430,9 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4933e38ef21b50698aefc87799c24f2a365c9d3f6cf50471f3f6a0bc410892" +checksum = "8a6771dc19aa3c65d6af9a8c65222bfc8fcd446630ddca487acd161fa6096f3b" dependencies = [ "async-io", "futures", @@ -4474,32 +4440,32 @@ dependencies = [ "if-watch", "ipnet", "libc", - "libp2p-core 0.33.0", + "libp2p-core", "log", "socket2", ] [[package]] name = "libp2p-uds" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24bdab114f7f2701757d6541266e1131b429bbae382008f207f2114ee4222dcb" +checksum = "d125e3e5f0d58f3c6ac21815b20cf4b6a88b8db9dc26368ea821838f4161fd4d" dependencies = [ "async-std", "futures", - "libp2p-core 0.32.1", + "libp2p-core", "log", ] [[package]] name = "libp2p-wasm-ext" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f066f2b8b1a1d64793f05da2256e6842ecd0293d6735ca2e9bda89831a1bdc06" +checksum = "ec894790eec3c1608f8d1a8a0bdf0dbeb79ed4de2dce964222011c2896dfa05a" dependencies = [ "futures", "js-sys", - "libp2p-core 0.33.0", + "libp2p-core", "parity-send-wrapper", "wasm-bindgen", "wasm-bindgen-futures", @@ -4507,18 +4473,18 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39d398fbb29f432c4128fabdaac2ed155c3bcaf1b9bd40eeeb10a471eefacbf5" +checksum = "9808e57e81be76ff841c106b4c5974fb4d41a233a7bdd2afbf1687ac6def3818" dependencies = [ "either", "futures", "futures-rustls", - "libp2p-core 0.33.0", + "libp2p-core", "log", "parking_lot 0.12.1", "quicksink", - "rw-stream-sink 0.3.0", + "rw-stream-sink", "soketto", "url", "webpki-roots", @@ -4526,12 +4492,12 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe653639ad74877c759720febb0cbcbf4caa221adde4eed2d3126ce5c6f381f" +checksum = "c6dea686217a06072033dc025631932810e2f6ad784e4fafa42e27d311c7a81c" dependencies = [ "futures", - "libp2p-core 0.33.0", + "libp2p-core", "parking_lot 0.12.1", "thiserror", "yamux", @@ -4970,7 +4936,7 @@ dependencies = [ "bytes", "futures", "log", - "pin-project 1.0.10", + "pin-project", "smallvec", "unsigned-varint", ] @@ -5278,14 +5244,14 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "dyn-clonable", "futures", "futures-timer", "orchestra-proc-macro", - "pin-project 1.0.10", + "pin-project", "prioritized-metered-channel", "thiserror", "tracing", @@ -5294,7 +5260,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "expander 0.0.6", "itertools", @@ -5332,7 +5298,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -5349,7 +5315,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5363,7 +5329,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -5379,7 +5345,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -5395,7 +5361,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -5410,7 +5376,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5434,7 +5400,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5454,7 +5420,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5469,7 +5435,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "beefy-primitives", "frame-support", @@ -5485,7 +5451,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5508,7 +5474,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5526,7 +5492,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5571,7 +5537,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5588,7 +5554,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "bitflags", "frame-benchmarking", @@ -5615,7 +5581,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "bitflags", "parity-scale-codec", @@ -5630,7 +5596,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro2", "quote", @@ -5640,7 +5606,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5657,7 +5623,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5670,7 +5636,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5686,7 +5652,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5709,7 +5675,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5722,7 +5688,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5740,7 +5706,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5755,7 +5721,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5778,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5794,7 +5760,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5814,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5831,7 +5797,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5848,7 +5814,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5866,7 +5832,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5881,7 +5847,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5896,7 +5862,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -5913,7 +5879,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5932,7 +5898,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -5949,7 +5915,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5972,7 +5938,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5988,7 +5954,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6003,7 +5969,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -6017,7 +5983,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6032,7 +5998,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6048,7 +6014,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -6069,7 +6035,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6085,7 +6051,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -6099,7 +6065,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6122,7 +6088,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6133,7 +6099,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "sp-arithmetic", @@ -6142,7 +6108,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -6171,7 +6137,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6189,7 +6155,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6208,7 +6174,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-support", "frame-system", @@ -6224,7 +6190,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6239,7 +6205,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6250,7 +6216,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6267,7 +6233,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6282,7 +6248,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6298,7 +6264,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6313,7 +6279,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "frame-system", @@ -6331,7 +6297,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-benchmarking", "frame-support", @@ -6720,7 +6686,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.25", + "polkadot-parachain 0.9.26", "polkadot-primitives", "polkadot-runtime-common", "scale-info", @@ -6803,33 +6769,13 @@ dependencies = [ "indexmap", ] -[[package]] -name = "pin-project" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9615c18d31137579e9ff063499264ddc1278e7b1982757ebc111028c4d1dc909" -dependencies = [ - "pin-project-internal 0.4.29", -] - [[package]] name = "pin-project" version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" dependencies = [ - "pin-project-internal 1.0.10", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "044964427019eed9d49d9d5bbce6047ef18f37100ea400912a9fa4a3523ab12a" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "pin-project-internal", ] [[package]] @@ -6904,7 +6850,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6919,7 +6865,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6933,7 +6879,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "derive_more", "fatality", @@ -6956,7 +6902,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "fatality", "futures", @@ -6977,7 +6923,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "clap 3.2.8", "frame-benchmarking-cli", @@ -7002,7 +6948,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7042,7 +6988,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "always-assert", "fatality", @@ -7063,7 +7009,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7076,7 +7022,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "derive_more", "fatality", @@ -7099,7 +7045,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7113,7 +7059,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "futures-timer", @@ -7133,11 +7079,12 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "always-assert", "async-trait", "bytes", + "fatality", "futures", "parity-scale-codec", "parking_lot 0.12.1", @@ -7148,13 +7095,14 @@ dependencies = [ "polkadot-primitives", "sc-network", "sp-consensus", + "thiserror", "tracing-gum", ] [[package]] name = "polkadot-node-collation-generation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "parity-scale-codec", @@ -7172,7 +7120,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bitvec", "derive_more", @@ -7201,7 +7149,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bitvec", "futures", @@ -7221,7 +7169,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bitvec", "fatality", @@ -7240,7 +7188,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7255,7 +7203,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "futures", @@ -7273,7 +7221,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7288,7 +7236,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "futures-timer", @@ -7305,7 +7253,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "fatality", "futures", @@ -7324,7 +7272,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "futures", @@ -7341,7 +7289,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bitvec", "fatality", @@ -7359,7 +7307,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "always-assert", "assert_matches", @@ -7368,7 +7316,7 @@ dependencies = [ "futures", "futures-timer", "parity-scale-codec", - "pin-project 1.0.10", + "pin-project", "polkadot-core-primitives", "polkadot-node-subsystem-util", "polkadot-parachain 0.9.26", @@ -7391,7 +7339,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "polkadot-node-primitives", @@ -7407,7 +7355,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "memory-lru", @@ -7424,7 +7372,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-std", "lazy_static", @@ -7442,7 +7390,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bs58", "futures", @@ -7461,7 +7409,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "derive_more", @@ -7482,7 +7430,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bounded-vec", "futures", @@ -7504,7 +7452,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7514,7 +7462,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "futures", @@ -7532,7 +7480,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "derive_more", "futures", @@ -7551,7 +7499,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "derive_more", @@ -7564,7 +7512,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "parking_lot 0.11.2", - "pin-project 1.0.10", + "pin-project", "polkadot-node-jaeger", "polkadot-node-metrics", "polkadot-node-network-protocol", @@ -7584,7 +7532,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "futures", "futures-timer", @@ -7606,7 +7554,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "derive_more", "frame-support", @@ -7701,7 +7649,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7716,7 +7664,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bitvec", "frame-system", @@ -7746,7 +7694,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7778,7 +7726,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-primitives", "bitvec", @@ -7863,7 +7811,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-primitives", "bitvec", @@ -7910,7 +7858,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "polkadot-primitives", @@ -7922,7 +7870,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bs58", "parity-scale-codec", @@ -7934,7 +7882,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "bitflags", "bitvec", @@ -7977,7 +7925,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "async-trait", "beefy-gadget", @@ -8080,7 +8028,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8101,7 +8049,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8111,7 +8059,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8136,7 +8084,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-primitives", "bitvec", @@ -8197,7 +8145,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-benchmarking", "frame-system", @@ -8341,7 +8289,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8433,16 +8381,6 @@ dependencies = [ "syn", ] -[[package]] -name = "prost" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" -dependencies = [ - "bytes", - "prost-derive 0.9.0", -] - [[package]] name = "prost" version = "0.10.3" @@ -8450,27 +8388,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc03e116981ff7d8da8e5c220e374587b98d294af7ba7dd7fda761158f00086f" dependencies = [ "bytes", - "prost-derive 0.10.1", -] - -[[package]] -name = "prost-build" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" -dependencies = [ - "bytes", - "heck 0.3.3", - "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost 0.9.0", - "prost-types 0.9.0", - "regex", - "tempfile", - "which", + "prost-derive", ] [[package]] @@ -8488,8 +8406,8 @@ dependencies = [ "log", "multimap", "petgraph", - "prost 0.10.3", - "prost-types 0.10.1", + "prost", + "prost-types", "regex", "tempfile", "which", @@ -8503,24 +8421,11 @@ checksum = "00af1e92c33b4813cc79fda3f2dbf56af5169709be0202df730e9ebc3e4cd007" dependencies = [ "asynchronous-codec", "bytes", - "prost 0.10.3", + "prost", "thiserror", "unsigned-varint", ] -[[package]] -name = "prost-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "prost-derive" version = "0.10.1" @@ -8534,16 +8439,6 @@ dependencies = [ "syn", ] -[[package]] -name = "prost-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" -dependencies = [ - "bytes", - "prost 0.9.0", -] - [[package]] name = "prost-types" version = "0.10.1" @@ -8551,7 +8446,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" dependencies = [ "bytes", - "prost 0.10.3", + "prost", ] [[package]] @@ -8837,7 +8732,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8965,7 +8860,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -9034,7 +8929,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "polkadot-primitives", @@ -9171,17 +9066,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" -[[package]] -name = "rw-stream-sink" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" -dependencies = [ - "futures", - "pin-project 0.4.29", - "static_assertions", -] - [[package]] name = "rw-stream-sink" version = "0.3.0" @@ -9189,7 +9073,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" dependencies = [ "futures", - "pin-project 1.0.10", + "pin-project", "static_assertions", ] @@ -9229,7 +9113,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "sp-core", @@ -9240,7 +9124,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -9249,8 +9133,8 @@ dependencies = [ "libp2p", "log", "parity-scale-codec", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "rand 0.7.3", "sc-client-api", "sc-network", @@ -9267,7 +9151,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "futures-timer", @@ -9290,7 +9174,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9306,7 +9190,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9323,7 +9207,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9334,7 +9218,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "chrono", "clap 3.2.8", @@ -9373,7 +9257,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "fnv", "futures", @@ -9401,7 +9285,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "hash-db", "kvdb", @@ -9426,7 +9310,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -9450,7 +9334,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -9479,7 +9363,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "fork-tree", @@ -9522,7 +9406,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "jsonrpsee", @@ -9544,7 +9428,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9557,7 +9441,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -9582,7 +9466,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "sc-client-api", "sp-authorship", @@ -9593,7 +9477,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9620,7 +9504,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "environmental", "parity-scale-codec", @@ -9637,7 +9521,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "parity-scale-codec", @@ -9652,7 +9536,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9672,7 +9556,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "ahash", "async-trait", @@ -9692,6 +9576,7 @@ dependencies = [ "sc-consensus", "sc-keystore", "sc-network", + "sc-network-common", "sc-network-gossip", "sc-telemetry", "sc-utils", @@ -9712,7 +9597,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "finality-grandpa", "futures", @@ -9733,7 +9618,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "ansi_term", "futures", @@ -9750,7 +9635,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "hex", @@ -9765,7 +9650,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "asynchronous-codec", @@ -9786,16 +9671,14 @@ dependencies = [ "lru 0.7.7", "parity-scale-codec", "parking_lot 0.12.1", - "pin-project 1.0.10", - "prost 0.10.3", - "prost-build 0.10.4", + "pin-project", + "prost", + "prost-build", "rand 0.7.3", "sc-block-builder", "sc-client-api", "sc-consensus", "sc-network-common", - "sc-network-light", - "sc-network-sync", "sc-peerset", "sc-utils", "serde", @@ -9805,7 +9688,6 @@ dependencies = [ "sp-blockchain", "sp-consensus", "sp-core", - "sp-finality-grandpa", "sp-runtime", "substrate-prometheus-endpoint", "thiserror", @@ -9817,20 +9699,25 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ + "bitflags", "futures", "libp2p", "parity-scale-codec", - "prost-build 0.10.4", + "prost-build", + "sc-consensus", "sc-peerset", "smallvec", + "sp-consensus", + "sp-finality-grandpa", + "sp-runtime", ] [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "ahash", "futures", @@ -9847,14 +9734,14 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "libp2p", "log", "parity-scale-codec", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "sc-client-api", "sc-network-common", "sc-peerset", @@ -9867,18 +9754,16 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ - "bitflags", - "either", "fork-tree", "futures", "libp2p", "log", "lru 0.7.7", "parity-scale-codec", - "prost 0.10.3", - "prost-build 0.10.4", + "prost", + "prost-build", "sc-client-api", "sc-consensus", "sc-network-common", @@ -9896,7 +9781,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "bytes", "fnv", @@ -9924,7 +9809,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "libp2p", @@ -9937,7 +9822,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9946,7 +9831,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "hash-db", @@ -9976,7 +9861,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "jsonrpsee", @@ -9999,7 +9884,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "jsonrpsee", @@ -10012,7 +9897,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "directories", @@ -10025,7 +9910,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "parking_lot 0.12.1", - "pin-project 1.0.10", + "pin-project", "rand 0.7.3", "sc-block-builder", "sc-chain-spec", @@ -10037,6 +9922,8 @@ dependencies = [ "sc-keystore", "sc-network", "sc-network-common", + "sc-network-light", + "sc-network-sync", "sc-offchain", "sc-rpc", "sc-rpc-server", @@ -10077,7 +9964,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "parity-scale-codec", @@ -10091,7 +9978,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10110,7 +9997,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "libc", @@ -10129,14 +10016,14 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "chrono", "futures", "libp2p", "log", "parking_lot 0.12.1", - "pin-project 1.0.10", + "pin-project", "rand 0.7.3", "serde", "serde_json", @@ -10147,7 +10034,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "ansi_term", "atty", @@ -10178,7 +10065,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10189,7 +10076,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "futures-timer", @@ -10216,7 +10103,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "log", @@ -10229,7 +10116,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "futures-timer", @@ -10674,7 +10561,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "enumn", "parity-scale-codec", @@ -10750,7 +10637,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "hash-db", "log", @@ -10767,7 +10654,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "blake2", "proc-macro-crate", @@ -10779,7 +10666,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10792,7 +10679,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "integer-sqrt", "num-traits", @@ -10807,7 +10694,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10820,7 +10707,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "parity-scale-codec", @@ -10832,7 +10719,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "sp-api", @@ -10844,7 +10731,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "log", @@ -10862,7 +10749,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -10881,7 +10768,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "parity-scale-codec", @@ -10899,7 +10786,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "merlin", @@ -10922,7 +10809,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10936,7 +10823,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10949,7 +10836,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "base58", "bitflags", @@ -10995,7 +10882,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "blake2", "byteorder", @@ -11009,7 +10896,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro2", "quote", @@ -11020,7 +10907,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11029,7 +10916,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro2", "quote", @@ -11039,7 +10926,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "environmental", "parity-scale-codec", @@ -11050,7 +10937,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "finality-grandpa", "log", @@ -11068,7 +10955,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11082,7 +10969,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "hash-db", @@ -11107,7 +10994,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "lazy_static", "sp-core", @@ -11118,7 +11005,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -11135,7 +11022,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "thiserror", "zstd", @@ -11144,7 +11031,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "parity-scale-codec", @@ -11159,7 +11046,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -11173,7 +11060,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "sp-api", "sp-core", @@ -11183,7 +11070,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "backtrace", "lazy_static", @@ -11193,7 +11080,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "rustc-hash", "serde", @@ -11203,7 +11090,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "either", "hash256-std-hasher", @@ -11225,7 +11112,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11242,7 +11129,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "Inflector", "proc-macro-crate", @@ -11254,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "parity-scale-codec", @@ -11268,7 +11155,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "serde", "serde_json", @@ -11277,7 +11164,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -11291,7 +11178,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "scale-info", @@ -11302,7 +11189,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "hash-db", "log", @@ -11324,12 +11211,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11342,7 +11229,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "log", "sp-core", @@ -11355,7 +11242,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures-timer", @@ -11371,7 +11258,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "sp-std", @@ -11383,7 +11270,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "sp-api", "sp-runtime", @@ -11392,7 +11279,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "log", @@ -11408,7 +11295,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "hash-db", "memory-db", @@ -11424,7 +11311,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11441,7 +11328,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11452,7 +11339,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "impl-trait-for-tuples", "log", @@ -11731,7 +11618,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "platforms", ] @@ -11739,7 +11626,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11760,7 +11647,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures-util", "hyper", @@ -11773,7 +11660,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "jsonrpsee", "log", @@ -11794,7 +11681,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "async-trait", "futures", @@ -11820,7 +11707,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11830,7 +11717,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11841,7 +11728,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "ansi_term", "build-helper", @@ -11949,7 +11836,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "polkadot-primitives", @@ -12231,14 +12118,14 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.0.10", + "pin-project", "tracing", ] [[package]] name = "tracing-gum" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12249,7 +12136,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12378,7 +12265,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#43fd9a9dc2ba2644f88531b52a196a4f0800c2bf" +source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "clap 3.2.8", "jsonrpsee", @@ -12962,7 +12849,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "beefy-primitives", "bitvec", @@ -13050,7 +12937,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "polkadot-primitives", @@ -13334,7 +13221,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13348,7 +13235,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-support", "frame-system", @@ -13368,7 +13255,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "frame-benchmarking", "frame-support", @@ -13386,7 +13273,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#5a09bf62ec7be0e90dfae335a80459728a896d95" +source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs index d0d570e760..6dd19eebae 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs @@ -235,4 +235,18 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + fn set_price() -> Weight { + (16_929_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + fn buy_item() -> Weight { + (16_929_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs index 18c11a8f76..ca35bdf945 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs @@ -235,4 +235,18 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + fn set_price() -> Weight { + (16_254_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + fn buy_item() -> Weight { + (16_254_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs index 04a771c06c..ab14a7b7fc 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs @@ -235,4 +235,18 @@ impl pallet_uniques::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + fn set_price() -> Weight { + (16_300_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + fn buy_item() -> Weight { + (16_300_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } From 3175d2fa276c81d5a7671f8f7fe35c8607e3c98f Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Thu, 14 Jul 2022 16:51:37 +0800 Subject: [PATCH 156/238] Use genesis_state_version param instead of StateVersion::V0 (#1410) Signed-off-by: koushiro --- client/cli/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index 09433b7562..9fea382a7e 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -189,7 +189,7 @@ pub fn generate_genesis_block( let extrinsics_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( Vec::new(), - sp_runtime::StateVersion::V0, + genesis_state_version, ); Ok(Block::new( From d4f2b6e92e32db3ed16cf7d3bc5f4438217fd5ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Jul 2022 13:40:24 +0200 Subject: [PATCH 157/238] Bump dyn-clone from 1.0.6 to 1.0.8 (#1450) Bumps [dyn-clone](https://github.com/dtolnay/dyn-clone) from 1.0.6 to 1.0.8. - [Release notes](https://github.com/dtolnay/dyn-clone/releases) - [Commits](https://github.com/dtolnay/dyn-clone/compare/1.0.6...1.0.8) --- updated-dependencies: - dependency-name: dyn-clone dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/consensus/common/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c12710e4ad..fe407803ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2325,9 +2325,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5a" +checksum = "9d07a982d1fb29db01e5a59b1918e03da4df7297eaeee7686ac45542fd4e59c8" [[package]] name = "ecdsa" diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index dd0e80e527..e2af49ac5c 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] async-trait = "0.1.56" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -dyn-clone = "1.0.6" +dyn-clone = "1.0.8" futures = "0.3.21" tracing = "0.1.34" From f931a3eb565e5afc08991cc908248efaadd84c8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Jul 2022 12:38:06 +0000 Subject: [PATCH 158/238] Bump clap from 3.2.8 to 3.2.12 (#1448) Bumps [clap](https://github.com/clap-rs/clap) from 3.2.8 to 3.2.12. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.2.8...v3.2.12) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- client/cli/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe407803ca..b3dc734f3c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -925,9 +925,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.8" +version = "3.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" +checksum = "ab8b79fe3946ceb4a0b1c080b4018992b8d27e9ff363644c1c9b6387c854614d" dependencies = [ "atty", "bitflags", @@ -1431,7 +1431,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.2.8", + "clap 3.2.12", "parity-scale-codec", "sc-chain-spec", "sc-cli", @@ -2041,7 +2041,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.2.8", + "clap 3.2.12", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2711,7 +2711,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a dependencies = [ "Inflector", "chrono", - "clap 3.2.8", + "clap 3.2.12", "comfy-table", "frame-benchmarking", "frame-support", @@ -6327,7 +6327,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.2.8", + "clap 3.2.12", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -6925,7 +6925,7 @@ name = "polkadot-cli" version = "0.9.26" source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" dependencies = [ - "clap 3.2.8", + "clap 3.2.12", "frame-benchmarking-cli", "futures", "log", @@ -7574,7 +7574,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.2.8", + "clap 3.2.12", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9221,7 +9221,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ "chrono", - "clap 3.2.8", + "clap 3.2.12", "fdlimit", "futures", "hex", @@ -12267,7 +12267,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" dependencies = [ - "clap 3.2.8", + "clap 3.2.12", "jsonrpsee", "log", "parity-scale-codec", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index d6276d63bc..bafc536bc5 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.2.8", features = ["derive", "deprecated"] } +clap = { version = "3.2.12", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index cd552755b4..696658aaab 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [dependencies] -clap = { version = "3.2.8", features = ["derive"] } +clap = { version = "3.2.12", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index c9145e772d..9c4d2c0ff0 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -8,7 +8,7 @@ description = "Runs a polkadot parachain node which could be a collator." [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.8", features = ["derive", "deprecated"] } +clap = { version = "3.2.12", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index e1b97f9368..08211d5579 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,7 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.8", features = ["derive", "deprecated"] } +clap = { version = "3.2.12", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.5", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } From cd200ad22335a2eabade139e426c4d223dfd5b51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Jul 2022 15:12:16 +0200 Subject: [PATCH 159/238] Bump smallvec from 1.8.1 to 1.9.0 (#1421) Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.8.1 to 1.9.0. - [Release notes](https://github.com/servo/rust-smallvec/releases) - [Commits](https://github.com/servo/rust-smallvec/compare/v1.8.1...v1.9.0) --- updated-dependencies: - dependency-name: smallvec dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- parachain-template/runtime/Cargo.toml | 2 +- parachains/runtimes/assets/statemine/Cargo.toml | 2 +- parachains/runtimes/assets/statemint/Cargo.toml | 2 +- parachains/runtimes/assets/westmint/Cargo.toml | 2 +- parachains/runtimes/contracts/contracts-rococo/Cargo.toml | 2 +- parachains/runtimes/testing/penpal/Cargo.toml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b3dc734f3c..2ecf69bc7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10581,9 +10581,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc88c725d61fc6c3132893370cac4a0200e3fedf5da8331c570664b1987f5ca2" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "snap" diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index 56a64367b9..f2cfd1ef55 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -20,7 +20,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.8.1" +smallvec = "1.9.0" # Local pallet-template = { path = "../pallets/template", default-features = false } diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index 0dd770e38b..4ec8c08f37 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -11,7 +11,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.8.1" +smallvec = "1.9.0" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index 268f90d0bc..c8174c0923 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -11,7 +11,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } serde = { version = "1.0.137", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -smallvec = "1.8.1" +smallvec = "1.9.0" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index 4401c558dc..571075d074 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -11,7 +11,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.8.1" +smallvec = "1.9.0" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } diff --git a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml index e8920a1720..95669c0d8c 100644 --- a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -16,7 +16,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.137", optional = true, features = ["derive"] } -smallvec = "1.8.1" +smallvec = "1.9.0" # Substrate sp-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/testing/penpal/Cargo.toml b/parachains/runtimes/testing/penpal/Cargo.toml index 65fdbc80fe..2966cf1be4 100644 --- a/parachains/runtimes/testing/penpal/Cargo.toml +++ b/parachains/runtimes/testing/penpal/Cargo.toml @@ -20,7 +20,7 @@ hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } serde = { version = "1.0.132", optional = true, features = ["derive"] } -smallvec = "1.6.1" +smallvec = "1.9.0" # Substrate frame-benchmarking = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "master" } From f21fdaf0aad1856c90988e46b4524e34c1fe848d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Jul 2022 13:17:37 +0000 Subject: [PATCH 160/238] Bump criterion from 0.3.5 to 0.3.6 (#1434) Bumps [criterion](https://github.com/bheisler/criterion.rs) from 0.3.5 to 0.3.6. - [Release notes](https://github.com/bheisler/criterion.rs/releases) - [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/bheisler/criterion.rs/compare/0.3.5...0.3.6) --- updated-dependencies: - dependency-name: criterion dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 14 ++++++++++---- test/service/Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2ecf69bc7b..94f6894110 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -796,6 +796,12 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cc" version = "1.0.72" @@ -1237,12 +1243,12 @@ dependencies = [ [[package]] name = "criterion" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" dependencies = [ "atty", - "cast", + "cast 0.3.0", "clap 2.34.0", "criterion-plot", "csv", @@ -1269,7 +1275,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" dependencies = [ - "cast", + "cast 0.2.7", "itertools", ] diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 08211d5579..6f50831245 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -12,7 +12,7 @@ path = "src/main.rs" async-trait = "0.1.56" clap = { version = "3.2.12", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } -criterion = { version = "0.3.5", features = [ "async_tokio" ] } +criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" From 6bd0feeb42febd5fa983554de268a26bea677560 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Jul 2022 23:13:09 +0200 Subject: [PATCH 161/238] Bump serde from 1.0.137 to 1.0.139 (#1439) Bumps [serde](https://github.com/serde-rs/serde) from 1.0.137 to 1.0.139. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.137...v1.0.139) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/aura-ext/Cargo.toml | 2 +- pallets/collator-selection/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- pallets/xcm/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/runtime/Cargo.toml | 2 +- parachains/pallets/parachain-info/Cargo.toml | 2 +- parachains/pallets/ping/Cargo.toml | 2 +- parachains/runtimes/assets/statemine/Cargo.toml | 2 +- parachains/runtimes/assets/statemint/Cargo.toml | 2 +- parachains/runtimes/assets/westmint/Cargo.toml | 2 +- parachains/runtimes/contracts/contracts-rococo/Cargo.toml | 2 +- parachains/runtimes/starters/seedling/Cargo.toml | 2 +- parachains/runtimes/starters/shell/Cargo.toml | 2 +- parachains/runtimes/testing/penpal/Cargo.toml | 2 +- parachains/runtimes/testing/rococo-parachain/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/runtime/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 20 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 94f6894110..c2a21c36d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10330,9 +10330,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.137" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6" dependencies = [ "serde_derive", ] @@ -10349,9 +10349,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/aura-ext/Cargo.toml b/pallets/aura-ext/Cargo.toml index f935794c5f..1fa22983bc 100644 --- a/pallets/aura-ext/Cargo.toml +++ b/pallets/aura-ext/Cargo.toml @@ -8,7 +8,7 @@ description = "AURA consensus extension pallet for parachains" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/collator-selection/Cargo.toml b/pallets/collator-selection/Cargo.toml index bc6d018946..9981cb2cfd 100644 --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -17,7 +17,7 @@ log = { version = "0.4.17", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", default-features = false } +serde = { version = "1.0.139", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 5aab22fce3..d2b27567d8 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -11,7 +11,7 @@ environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/xcm/Cargo.toml b/pallets/xcm/Cargo.toml index 1bfee67080..05249426ed 100644 --- a/pallets/xcm/Cargo.toml +++ b/pallets/xcm/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 696658aaab..0474537177 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -14,7 +14,7 @@ clap = { version = "3.2.12", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } -serde = { version = "1.0.137", features = ["derive"] } +serde = { version = "1.0.139", features = ["derive"] } hex-literal = "0.3.4" jsonrpsee = { version = "0.14.0", features = ["server"] } diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index f2cfd1ef55..e248be9028 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } smallvec = "1.9.0" # Local diff --git a/parachains/pallets/parachain-info/Cargo.toml b/parachains/pallets/parachain-info/Cargo.toml index 383b811b8c..24799bed36 100644 --- a/parachains/pallets/parachain-info/Cargo.toml +++ b/parachains/pallets/parachain-info/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } 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" } diff --git a/parachains/pallets/ping/Cargo.toml b/parachains/pallets/ping/Cargo.toml index 36fdae0baf..f2ef763b7a 100644 --- a/parachains/pallets/ping/Cargo.toml +++ b/parachains/pallets/ping/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", 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" } diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index 4ec8c08f37..ebd68acffa 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index c8174c0923..410d5d4067 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -9,7 +9,7 @@ description = "Statemint parachain runtime" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.9.0" diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index 571075d074..4139fad9be 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml index 95669c0d8c..eb5edf1392 100644 --- a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/starters/seedling/Cargo.toml b/parachains/runtimes/starters/seedling/Cargo.toml index 97fc40b998..551f36cc96 100644 --- a/parachains/runtimes/starters/seedling/Cargo.toml +++ b/parachains/runtimes/starters/seedling/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } scale-info = { version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/starters/shell/Cargo.toml b/parachains/runtimes/starters/shell/Cargo.toml index 51242257e3..3491c30a1c 100644 --- a/parachains/runtimes/starters/shell/Cargo.toml +++ b/parachains/runtimes/starters/shell/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/testing/penpal/Cargo.toml b/parachains/runtimes/testing/penpal/Cargo.toml index 2966cf1be4..ca6e1d48ae 100644 --- a/parachains/runtimes/testing/penpal/Cargo.toml +++ b/parachains/runtimes/testing/penpal/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.132", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/testing/rococo-parachain/Cargo.toml b/parachains/runtimes/testing/rococo-parachain/Cargo.toml index 243888af67..bfa8825da0 100644 --- a/parachains/runtimes/testing/rococo-parachain/Cargo.toml +++ b/parachains/runtimes/testing/rococo-parachain/Cargo.toml @@ -9,7 +9,7 @@ description = "Simple runtime used by the rococo parachain(s)" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 9c4d2c0ff0..8331974747 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -13,7 +13,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" log = "0.4.17" -serde = { version = "1.0.137", features = ["derive"] } +serde = { version = "1.0.139", features = ["derive"] } # Local rococo-parachain-runtime = { path = "../parachains/runtimes/testing/rococo-parachain" } diff --git a/test/runtime/Cargo.toml b/test/runtime/Cargo.toml index 8403d39b0f..1567266793 100644 --- a/test/runtime/Cargo.toml +++ b/test/runtime/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.139", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 6f50831245..88bb0e9a68 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -16,7 +16,7 @@ criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" -serde = { version = "1.0.137", features = ["derive"] } +serde = { version = "1.0.139", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } tracing = "0.1.25" url = "2.2.2" From f1b02db6e240f7080680aa68cc15244d4c0f977b Mon Sep 17 00:00:00 2001 From: Oliver Tale-Yazdi Date: Tue, 19 Jul 2022 14:53:59 +0200 Subject: [PATCH 162/238] Co #11456: Match statement fallthrough for `benchmark` commands (#1350) * Add default error for unsupported benchmarking command Signed-off-by: Oliver Tale-Yazdi * Same for the parachain-template... Signed-off-by: Oliver Tale-Yazdi * cargo update -p sp-io Signed-off-by: Oliver Tale-Yazdi * cargo update -p polkadot-primitives Signed-off-by: Oliver Tale-Yazdi --- Cargo.lock | 504 ++++++++++++------------- parachain-template/node/src/command.rs | 5 +- polkadot-parachain/src/command.rs | 5 +- 3 files changed, 260 insertions(+), 254 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2a21c36d1..f8674ad69e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -2673,7 +2673,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", ] @@ -2691,7 +2691,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -2713,7 +2713,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "Inflector", "chrono", @@ -2764,7 +2764,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2775,7 +2775,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2791,7 +2791,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -2819,7 +2819,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "bitflags", "frame-metadata", @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2861,7 +2861,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2873,7 +2873,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro2", "quote", @@ -2883,7 +2883,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "log", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "sp-api", @@ -2924,7 +2924,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "sp-api", @@ -3801,7 +3801,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-primitives", "bitvec", @@ -3893,7 +3893,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "polkadot-primitives", @@ -5250,7 +5250,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "dyn-clonable", @@ -5266,7 +5266,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "expander 0.0.6", "itertools", @@ -5304,7 +5304,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5321,7 +5321,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5351,7 +5351,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5367,7 +5367,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5382,7 +5382,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5406,7 +5406,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5426,7 +5426,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5441,7 +5441,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "beefy-primitives", "frame-support", @@ -5457,7 +5457,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5498,7 +5498,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5543,7 +5543,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5560,12 +5560,13 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "bitflags", "frame-benchmarking", "frame-support", "frame-system", + "impl-trait-for-tuples", "log", "pallet-contracts-primitives", "pallet-contracts-proc-macro", @@ -5587,7 +5588,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "bitflags", "parity-scale-codec", @@ -5602,7 +5603,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro2", "quote", @@ -5612,7 +5613,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5629,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5642,7 +5643,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5658,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5681,7 +5682,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5694,7 +5695,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5712,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5727,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5750,7 +5751,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5766,7 +5767,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5786,7 +5787,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5803,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5820,7 +5821,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5838,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5853,7 +5854,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5868,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5885,7 +5886,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5904,7 +5905,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5921,7 +5922,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5944,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5960,7 +5961,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5975,7 +5976,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -5989,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6004,7 +6005,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6020,7 +6021,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -6041,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6057,7 +6058,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -6071,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6094,7 +6095,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6105,7 +6106,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "sp-arithmetic", @@ -6114,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -6143,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6161,7 +6162,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6180,7 +6181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-support", "frame-system", @@ -6196,7 +6197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6211,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6222,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6239,7 +6240,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6254,7 +6255,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6270,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6285,7 +6286,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "frame-system", @@ -6303,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6856,7 +6857,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6871,7 +6872,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6885,7 +6886,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "derive_more", "fatality", @@ -6908,7 +6909,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "fatality", "futures", @@ -6929,7 +6930,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "clap 3.2.12", "frame-benchmarking-cli", @@ -6945,6 +6946,7 @@ dependencies = [ "sc-sysinfo", "sc-tracing", "sp-core", + "sp-keyring", "sp-trie", "substrate-build-script-utils", "thiserror", @@ -6954,7 +6956,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -6994,7 +6996,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "always-assert", "fatality", @@ -7015,7 +7017,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7028,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "derive_more", "fatality", @@ -7051,7 +7053,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7065,7 +7067,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "futures-timer", @@ -7085,7 +7087,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "always-assert", "async-trait", @@ -7108,7 +7110,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "parity-scale-codec", @@ -7126,7 +7128,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bitvec", "derive_more", @@ -7155,7 +7157,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bitvec", "futures", @@ -7175,7 +7177,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bitvec", "fatality", @@ -7194,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7209,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "futures", @@ -7227,7 +7229,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7242,7 +7244,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "futures-timer", @@ -7259,7 +7261,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "fatality", "futures", @@ -7278,7 +7280,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "futures", @@ -7295,7 +7297,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bitvec", "fatality", @@ -7313,7 +7315,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "always-assert", "assert_matches", @@ -7345,7 +7347,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "polkadot-node-primitives", @@ -7361,7 +7363,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "memory-lru", @@ -7378,7 +7380,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-std", "lazy_static", @@ -7396,7 +7398,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bs58", "futures", @@ -7415,7 +7417,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "derive_more", @@ -7436,7 +7438,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bounded-vec", "futures", @@ -7458,7 +7460,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7468,7 +7470,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "futures", @@ -7486,7 +7488,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "derive_more", "futures", @@ -7505,7 +7507,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "derive_more", @@ -7538,7 +7540,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "futures", "futures-timer", @@ -7560,7 +7562,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "derive_more", "frame-support", @@ -7655,7 +7657,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7670,7 +7672,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bitvec", "frame-system", @@ -7700,7 +7702,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7732,7 +7734,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-primitives", "bitvec", @@ -7817,7 +7819,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-primitives", "bitvec", @@ -7864,7 +7866,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "polkadot-primitives", @@ -7876,7 +7878,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bs58", "parity-scale-codec", @@ -7888,7 +7890,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "bitflags", "bitvec", @@ -7931,7 +7933,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "async-trait", "beefy-gadget", @@ -8034,7 +8036,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8055,7 +8057,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8065,7 +8067,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8090,7 +8092,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-primitives", "bitvec", @@ -8151,7 +8153,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-benchmarking", "frame-system", @@ -8295,7 +8297,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8738,7 +8740,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8866,7 +8868,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8935,7 +8937,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "polkadot-primitives", @@ -9119,7 +9121,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "sp-core", @@ -9130,7 +9132,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -9157,7 +9159,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "futures-timer", @@ -9180,7 +9182,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9196,7 +9198,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9213,7 +9215,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9224,7 +9226,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "chrono", "clap 3.2.12", @@ -9263,7 +9265,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "fnv", "futures", @@ -9291,7 +9293,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "hash-db", "kvdb", @@ -9316,7 +9318,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -9340,7 +9342,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -9369,7 +9371,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "fork-tree", @@ -9412,7 +9414,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "jsonrpsee", @@ -9434,7 +9436,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9447,7 +9449,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -9472,7 +9474,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "sc-client-api", "sp-authorship", @@ -9483,7 +9485,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9510,7 +9512,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "environmental", "parity-scale-codec", @@ -9527,7 +9529,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "parity-scale-codec", @@ -9542,7 +9544,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9562,7 +9564,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "ahash", "async-trait", @@ -9603,7 +9605,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "finality-grandpa", "futures", @@ -9624,7 +9626,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "ansi_term", "futures", @@ -9641,7 +9643,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "hex", @@ -9656,7 +9658,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "asynchronous-codec", @@ -9705,7 +9707,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "bitflags", "futures", @@ -9723,7 +9725,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "ahash", "futures", @@ -9740,7 +9742,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "libp2p", @@ -9760,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "fork-tree", "futures", @@ -9787,7 +9789,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "bytes", "fnv", @@ -9815,7 +9817,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "libp2p", @@ -9828,7 +9830,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9837,7 +9839,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "hash-db", @@ -9867,7 +9869,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "jsonrpsee", @@ -9890,7 +9892,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "jsonrpsee", @@ -9903,7 +9905,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "directories", @@ -9970,7 +9972,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "parity-scale-codec", @@ -9984,7 +9986,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10003,7 +10005,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "libc", @@ -10022,7 +10024,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "chrono", "futures", @@ -10040,7 +10042,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "ansi_term", "atty", @@ -10071,7 +10073,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10082,7 +10084,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "futures-timer", @@ -10109,7 +10111,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "log", @@ -10122,7 +10124,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "futures-timer", @@ -10567,7 +10569,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "enumn", "parity-scale-codec", @@ -10643,7 +10645,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "hash-db", "log", @@ -10660,7 +10662,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "blake2", "proc-macro-crate", @@ -10672,7 +10674,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -10685,7 +10687,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "integer-sqrt", "num-traits", @@ -10700,7 +10702,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -10713,7 +10715,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "parity-scale-codec", @@ -10725,7 +10727,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "sp-api", @@ -10737,7 +10739,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "log", @@ -10755,7 +10757,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -10774,7 +10776,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "parity-scale-codec", @@ -10792,7 +10794,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "merlin", @@ -10815,7 +10817,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -10829,7 +10831,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -10842,7 +10844,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "base58", "bitflags", @@ -10888,7 +10890,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "blake2", "byteorder", @@ -10902,7 +10904,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro2", "quote", @@ -10913,7 +10915,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10922,7 +10924,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro2", "quote", @@ -10932,7 +10934,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "environmental", "parity-scale-codec", @@ -10943,7 +10945,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "finality-grandpa", "log", @@ -10961,7 +10963,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10975,7 +10977,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "hash-db", @@ -11000,7 +11002,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "lazy_static", "sp-core", @@ -11011,7 +11013,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -11028,7 +11030,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "thiserror", "zstd", @@ -11037,7 +11039,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "parity-scale-codec", @@ -11052,7 +11054,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -11066,7 +11068,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "sp-api", "sp-core", @@ -11076,7 +11078,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "backtrace", "lazy_static", @@ -11086,7 +11088,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "rustc-hash", "serde", @@ -11096,7 +11098,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "either", "hash256-std-hasher", @@ -11118,7 +11120,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11135,7 +11137,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "Inflector", "proc-macro-crate", @@ -11147,7 +11149,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "parity-scale-codec", @@ -11161,7 +11163,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "serde", "serde_json", @@ -11170,7 +11172,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -11184,7 +11186,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "scale-info", @@ -11195,7 +11197,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "hash-db", "log", @@ -11217,12 +11219,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11235,7 +11237,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "log", "sp-core", @@ -11248,7 +11250,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures-timer", @@ -11264,7 +11266,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "sp-std", @@ -11276,7 +11278,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "sp-api", "sp-runtime", @@ -11285,7 +11287,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "log", @@ -11301,7 +11303,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "hash-db", "memory-db", @@ -11317,7 +11319,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11334,7 +11336,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11345,7 +11347,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "impl-trait-for-tuples", "log", @@ -11624,7 +11626,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "platforms", ] @@ -11632,7 +11634,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11653,7 +11655,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures-util", "hyper", @@ -11666,7 +11668,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "jsonrpsee", "log", @@ -11687,7 +11689,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "async-trait", "futures", @@ -11713,7 +11715,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11723,7 +11725,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11734,7 +11736,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "ansi_term", "build-helper", @@ -11842,7 +11844,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "polkadot-primitives", @@ -12110,11 +12112,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" +checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" dependencies = [ - "lazy_static", + "once_cell", "valuable", ] @@ -12131,7 +12133,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12142,7 +12144,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12157,10 +12159,8 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" dependencies = [ - "ahash", "lazy_static", "log", - "lru 0.7.7", "tracing-core", ] @@ -12271,7 +12271,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9dad17f77b8a56ccf0d289ae410ee1e61d9b12a1" +source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" dependencies = [ "clap 3.2.12", "jsonrpsee", @@ -12855,7 +12855,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "beefy-primitives", "bitvec", @@ -12943,7 +12943,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "polkadot-primitives", @@ -13227,7 +13227,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13241,7 +13241,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-support", "frame-system", @@ -13261,7 +13261,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "frame-benchmarking", "frame-support", @@ -13279,7 +13279,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#81cd489111830b8a60aa991113f41187c5e94fdf" +source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachain-template/node/src/command.rs b/parachain-template/node/src/command.rs index 55afc4f1e5..5dc04bbb54 100644 --- a/parachain-template/node/src/command.rs +++ b/parachain-template/node/src/command.rs @@ -227,9 +227,12 @@ pub fn run() -> Result<()> { cmd.run(config, partials.client.clone(), db, storage) }), - BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()), BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())), + // NOTE: this allows the Client to leniently implement + // new benchmark commands without requiring a companion MR. + #[allow(unreachable_patterns)] + _ => Err("Benchmarking sub-command unsupported".into()), } }, Some(Subcommand::TryRuntime(cmd)) => { diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index ac76e20d48..dc17014c0a 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -500,9 +500,12 @@ pub fn run() -> Result<()> { cmd.run(config, partials.client.clone(), db, storage) }) }), - BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()), BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())), + // NOTE: this allows the Client to leniently implement + // new benchmark commands without requiring a companion MR. + #[allow(unreachable_patterns)] + _ => Err("Benchmarking sub-command unsupported".into()), } }, Some(Subcommand::TryRuntime(cmd)) => { From 79d663b4e46e829b9ac419456f75e1afb46fc768 Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Wed, 20 Jul 2022 13:03:02 +0200 Subject: [PATCH 163/238] Companion for polkadot#5782 (#1447) * Make HeadSupportsParachain async * Update Cargo.lock * update lockfile for {"substrate", "polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 502 +++++++++++++++++++------------------ client/collator/src/lib.rs | 5 +- 2 files changed, 257 insertions(+), 250 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8674ad69e..974a59b74c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -2673,7 +2673,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", ] @@ -2691,7 +2691,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -2713,7 +2713,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "Inflector", "chrono", @@ -2764,7 +2764,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2775,7 +2775,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2791,7 +2791,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -2819,7 +2819,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "bitflags", "frame-metadata", @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2861,7 +2861,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2873,7 +2873,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro2", "quote", @@ -2883,7 +2883,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "log", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "sp-api", @@ -2924,7 +2924,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "sp-api", @@ -3801,7 +3801,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-primitives", "bitvec", @@ -3893,7 +3893,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "polkadot-primitives", @@ -5250,7 +5250,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "dyn-clonable", @@ -5266,7 +5266,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "expander 0.0.6", "itertools", @@ -5304,7 +5304,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5321,7 +5321,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5351,7 +5351,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5367,7 +5367,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5382,7 +5382,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5406,7 +5406,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5426,7 +5426,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5441,7 +5441,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "beefy-primitives", "frame-support", @@ -5457,7 +5457,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5498,7 +5498,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5543,7 +5543,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5560,7 +5560,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "bitflags", "frame-benchmarking", @@ -5588,7 +5588,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "bitflags", "parity-scale-codec", @@ -5603,7 +5603,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro2", "quote", @@ -5613,7 +5613,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5630,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5643,7 +5643,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5659,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5682,7 +5682,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5695,7 +5695,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5713,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5728,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5767,7 +5767,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5787,7 +5787,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5821,7 +5821,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5854,7 +5854,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5886,7 +5886,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5905,7 +5905,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5922,7 +5922,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5976,7 +5976,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -5990,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6005,7 +6005,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6021,7 +6021,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -6042,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6058,7 +6058,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -6072,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6106,7 +6106,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "sp-arithmetic", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6162,7 +6162,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6181,7 +6181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-support", "frame-system", @@ -6197,7 +6197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6212,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6223,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6240,7 +6240,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6255,7 +6255,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6271,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6286,7 +6286,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "frame-system", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6857,7 +6857,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6872,7 +6872,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6886,7 +6886,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "derive_more", "fatality", @@ -6909,7 +6909,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "fatality", "futures", @@ -6930,7 +6930,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "clap 3.2.12", "frame-benchmarking-cli", @@ -6956,7 +6956,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -6996,7 +6996,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "always-assert", "fatality", @@ -7017,7 +7017,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7030,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "derive_more", "fatality", @@ -7053,7 +7053,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7067,7 +7067,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "futures-timer", @@ -7087,7 +7087,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "always-assert", "async-trait", @@ -7110,7 +7110,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "parity-scale-codec", @@ -7128,7 +7128,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bitvec", "derive_more", @@ -7157,7 +7157,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bitvec", "futures", @@ -7177,7 +7177,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bitvec", "fatality", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7211,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "futures", @@ -7229,7 +7229,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7244,7 +7244,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "futures-timer", @@ -7261,7 +7261,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "fatality", "futures", @@ -7280,7 +7280,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "futures", @@ -7297,7 +7297,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bitvec", "fatality", @@ -7315,7 +7315,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "always-assert", "assert_matches", @@ -7347,7 +7347,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "polkadot-node-primitives", @@ -7363,16 +7363,15 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "futures", "memory-lru", "parity-util-mem", "polkadot-node-subsystem", + "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-primitives", - "sp-api", - "sp-authority-discovery", "sp-consensus-babe", "tracing-gum", ] @@ -7380,7 +7379,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-std", "lazy_static", @@ -7398,7 +7397,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bs58", "futures", @@ -7417,7 +7416,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "derive_more", @@ -7438,7 +7437,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bounded-vec", "futures", @@ -7460,7 +7459,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7470,7 +7469,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "futures", @@ -7488,8 +7487,9 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ + "async-trait", "derive_more", "futures", "orchestra", @@ -7500,6 +7500,9 @@ dependencies = [ "polkadot-statement-table", "sc-network", "smallvec", + "sp-api", + "sp-authority-discovery", + "sp-consensus-babe", "substrate-prometheus-endpoint", "thiserror", ] @@ -7507,7 +7510,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "derive_more", @@ -7540,8 +7543,9 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ + "async-trait", "futures", "futures-timer", "lru 0.7.7", @@ -7562,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "derive_more", "frame-support", @@ -7657,7 +7661,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7672,7 +7676,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bitvec", "frame-system", @@ -7702,7 +7706,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7734,7 +7738,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-primitives", "bitvec", @@ -7819,7 +7823,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-primitives", "bitvec", @@ -7866,7 +7870,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "polkadot-primitives", @@ -7878,7 +7882,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bs58", "parity-scale-codec", @@ -7890,7 +7894,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "bitflags", "bitvec", @@ -7933,7 +7937,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "async-trait", "beefy-gadget", @@ -8036,7 +8040,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8057,7 +8061,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8067,7 +8071,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8092,7 +8096,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-primitives", "bitvec", @@ -8153,7 +8157,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-benchmarking", "frame-system", @@ -8297,7 +8301,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8740,7 +8744,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8868,7 +8872,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8937,7 +8941,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "polkadot-primitives", @@ -9121,7 +9125,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "sp-core", @@ -9132,7 +9136,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -9159,7 +9163,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "futures-timer", @@ -9182,7 +9186,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9198,7 +9202,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9215,7 +9219,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9226,7 +9230,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "chrono", "clap 3.2.12", @@ -9265,7 +9269,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "fnv", "futures", @@ -9293,7 +9297,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "hash-db", "kvdb", @@ -9318,7 +9322,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -9342,7 +9346,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -9371,7 +9375,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "fork-tree", @@ -9414,7 +9418,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "jsonrpsee", @@ -9436,7 +9440,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9449,7 +9453,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -9474,7 +9478,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "sc-client-api", "sp-authorship", @@ -9485,7 +9489,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9512,7 +9516,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "environmental", "parity-scale-codec", @@ -9529,7 +9533,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "parity-scale-codec", @@ -9544,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9564,7 +9568,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "ahash", "async-trait", @@ -9605,7 +9609,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "finality-grandpa", "futures", @@ -9626,7 +9630,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "ansi_term", "futures", @@ -9643,7 +9647,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "hex", @@ -9658,7 +9662,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "asynchronous-codec", @@ -9707,7 +9711,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "bitflags", "futures", @@ -9725,7 +9729,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "ahash", "futures", @@ -9742,7 +9746,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "libp2p", @@ -9762,7 +9766,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "fork-tree", "futures", @@ -9789,7 +9793,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "bytes", "fnv", @@ -9817,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "libp2p", @@ -9830,7 +9834,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9839,7 +9843,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "hash-db", @@ -9869,7 +9873,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "jsonrpsee", @@ -9892,7 +9896,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "jsonrpsee", @@ -9905,7 +9909,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "directories", @@ -9972,7 +9976,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "parity-scale-codec", @@ -9986,7 +9990,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10005,7 +10009,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "libc", @@ -10024,7 +10028,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "chrono", "futures", @@ -10042,7 +10046,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "ansi_term", "atty", @@ -10073,7 +10077,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10084,7 +10088,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "futures-timer", @@ -10111,7 +10115,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "log", @@ -10124,7 +10128,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "futures-timer", @@ -10569,7 +10573,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "enumn", "parity-scale-codec", @@ -10645,7 +10649,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "hash-db", "log", @@ -10662,7 +10666,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "blake2", "proc-macro-crate", @@ -10674,7 +10678,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10687,7 +10691,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "integer-sqrt", "num-traits", @@ -10702,7 +10706,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10715,7 +10719,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "parity-scale-codec", @@ -10727,7 +10731,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "sp-api", @@ -10739,7 +10743,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "log", @@ -10757,7 +10761,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -10776,7 +10780,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "parity-scale-codec", @@ -10794,7 +10798,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "merlin", @@ -10817,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10831,7 +10835,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10844,7 +10848,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "base58", "bitflags", @@ -10890,7 +10894,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "blake2", "byteorder", @@ -10904,7 +10908,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro2", "quote", @@ -10915,7 +10919,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10924,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro2", "quote", @@ -10934,7 +10938,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "environmental", "parity-scale-codec", @@ -10945,7 +10949,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "finality-grandpa", "log", @@ -10963,7 +10967,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10977,7 +10981,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "hash-db", @@ -11002,7 +11006,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "lazy_static", "sp-core", @@ -11013,7 +11017,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -11030,7 +11034,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "thiserror", "zstd", @@ -11039,7 +11043,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "parity-scale-codec", @@ -11054,7 +11058,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11068,7 +11072,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "sp-api", "sp-core", @@ -11078,7 +11082,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "backtrace", "lazy_static", @@ -11088,7 +11092,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "rustc-hash", "serde", @@ -11098,7 +11102,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "either", "hash256-std-hasher", @@ -11120,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11137,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "Inflector", "proc-macro-crate", @@ -11149,7 +11153,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "parity-scale-codec", @@ -11163,7 +11167,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "serde", "serde_json", @@ -11172,7 +11176,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11186,7 +11190,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11197,7 +11201,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "hash-db", "log", @@ -11219,12 +11223,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11237,7 +11241,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "log", "sp-core", @@ -11250,7 +11254,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures-timer", @@ -11266,7 +11270,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "sp-std", @@ -11278,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "sp-api", "sp-runtime", @@ -11287,7 +11291,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "log", @@ -11303,7 +11307,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "hash-db", "memory-db", @@ -11319,7 +11323,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11336,7 +11340,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11347,7 +11351,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "impl-trait-for-tuples", "log", @@ -11626,7 +11630,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "platforms", ] @@ -11634,7 +11638,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11655,7 +11659,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures-util", "hyper", @@ -11668,7 +11672,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "jsonrpsee", "log", @@ -11689,7 +11693,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "async-trait", "futures", @@ -11715,7 +11719,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11725,7 +11729,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11736,7 +11740,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "ansi_term", "build-helper", @@ -11844,7 +11848,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "polkadot-primitives", @@ -12133,7 +12137,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12144,7 +12148,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12271,7 +12275,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ced41695aafa648ebdb01305e563fa7ca89756bc" +source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "clap 3.2.12", "jsonrpsee", @@ -12855,7 +12859,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "beefy-primitives", "bitvec", @@ -12943,7 +12947,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "polkadot-primitives", @@ -13227,7 +13231,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13241,7 +13245,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-support", "frame-system", @@ -13261,7 +13265,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "frame-benchmarking", "frame-support", @@ -13279,7 +13283,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#9c64ccdf88921926a07225c50697179a99d7903d" +source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/collator/src/lib.rs b/client/collator/src/lib.rs index 94072fbee2..80650ff72e 100644 --- a/client/collator/src/lib.rs +++ b/client/collator/src/lib.rs @@ -359,6 +359,7 @@ pub async fn start_collator( #[cfg(test)] mod tests { use super::*; + use async_trait::async_trait; use cumulus_client_consensus_common::ParachainCandidate; use cumulus_test_client::{ Client, ClientBlockImportExt, DefaultTestClientBuilderExt, InitBlockBuilder, @@ -374,8 +375,10 @@ mod tests { use sp_state_machine::Backend; struct AlwaysSupportsParachains; + + #[async_trait] impl HeadSupportsParachains for AlwaysSupportsParachains { - fn head_supports_parachains(&self, _head: &PHash) -> bool { + async fn head_supports_parachains(&self, _head: &PHash) -> bool { true } } From 17ef4100b669f81b9410ee0293cbd6ddf308a475 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 11:44:19 +0000 Subject: [PATCH 164/238] Bump clap from 3.2.12 to 3.2.13 (#1455) Bumps [clap](https://github.com/clap-rs/clap) from 3.2.12 to 3.2.13. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.2.12...v3.2.13) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- client/cli/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 974a59b74c..526397197f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -931,9 +931,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.12" +version = "3.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8b79fe3946ceb4a0b1c080b4018992b8d27e9ff363644c1c9b6387c854614d" +checksum = "ac2bd7a1eb07da9ac757c923f69373deb7bc2ba5efc951b873bcb5e693992dca" dependencies = [ "atty", "bitflags", @@ -1437,7 +1437,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.2.12", + "clap 3.2.13", "parity-scale-codec", "sc-chain-spec", "sc-cli", @@ -2047,7 +2047,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.2.12", + "clap 3.2.13", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2717,7 +2717,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e5 dependencies = [ "Inflector", "chrono", - "clap 3.2.12", + "clap 3.2.13", "comfy-table", "frame-benchmarking", "frame-support", @@ -6334,7 +6334,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.2.12", + "clap 3.2.13", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -6932,7 +6932,7 @@ name = "polkadot-cli" version = "0.9.26" source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" dependencies = [ - "clap 3.2.12", + "clap 3.2.13", "frame-benchmarking-cli", "futures", "log", @@ -7586,7 +7586,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.2.12", + "clap 3.2.13", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9233,7 +9233,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ "chrono", - "clap 3.2.12", + "clap 3.2.13", "fdlimit", "futures", "hex", @@ -12277,7 +12277,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" dependencies = [ - "clap 3.2.12", + "clap 3.2.13", "jsonrpsee", "log", "parity-scale-codec", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index bafc536bc5..f65c325819 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.2.12", features = ["derive", "deprecated"] } +clap = { version = "3.2.13", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 0474537177..a83296ed95 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [dependencies] -clap = { version = "3.2.12", features = ["derive"] } +clap = { version = "3.2.13", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 8331974747..eceee4ddec 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -8,7 +8,7 @@ description = "Runs a polkadot parachain node which could be a collator." [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.12", features = ["derive", "deprecated"] } +clap = { version = "3.2.13", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 88bb0e9a68..8b1e993003 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,7 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.12", features = ["derive", "deprecated"] } +clap = { version = "3.2.13", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } From d7e4f65761b6f145d6f30d3edf35972b80e940d9 Mon Sep 17 00:00:00 2001 From: Dmitry Markin Date: Thu, 21 Jul 2022 13:59:07 +0300 Subject: [PATCH 165/238] Cleanup light client leftovers (#1456) * Cleanup light client leftovers * Readme: make it clear that Collator is full node of parachain * cargo update -p sp-io * cargo update -p polkadot-primitives --- Cargo.lock | 494 +++++++++--------- .../src/lib.rs | 45 +- docs/overview.md | 2 +- parachain-template/node/src/service.rs | 6 +- polkadot-parachain/src/service.rs | 14 +- test/service/src/lib.rs | 4 - 6 files changed, 270 insertions(+), 295 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 526397197f..7f6fb6ff62 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -2673,7 +2673,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", ] @@ -2691,7 +2691,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -2713,7 +2713,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "Inflector", "chrono", @@ -2764,7 +2764,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2775,7 +2775,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2791,7 +2791,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -2819,7 +2819,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "bitflags", "frame-metadata", @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2861,7 +2861,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2873,7 +2873,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro2", "quote", @@ -2883,7 +2883,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "log", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "sp-api", @@ -2924,7 +2924,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "sp-api", @@ -3801,7 +3801,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-primitives", "bitvec", @@ -3893,7 +3893,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "polkadot-primitives", @@ -5250,7 +5250,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "dyn-clonable", @@ -5266,7 +5266,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "expander 0.0.6", "itertools", @@ -5304,7 +5304,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5321,7 +5321,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5351,7 +5351,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5367,7 +5367,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5382,7 +5382,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5406,7 +5406,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5426,7 +5426,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5441,7 +5441,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "beefy-primitives", "frame-support", @@ -5457,7 +5457,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5498,7 +5498,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5543,7 +5543,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5560,7 +5560,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "bitflags", "frame-benchmarking", @@ -5588,7 +5588,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "bitflags", "parity-scale-codec", @@ -5603,7 +5603,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro2", "quote", @@ -5613,7 +5613,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5630,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5643,7 +5643,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5659,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5682,7 +5682,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5695,7 +5695,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5713,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5728,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5767,7 +5767,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5787,7 +5787,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5821,7 +5821,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5854,7 +5854,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5886,7 +5886,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5905,7 +5905,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5922,7 +5922,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -5976,7 +5976,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -5990,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6005,7 +6005,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6021,7 +6021,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -6042,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6058,7 +6058,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -6072,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6106,7 +6106,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "sp-arithmetic", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6162,7 +6162,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6181,7 +6181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-support", "frame-system", @@ -6197,7 +6197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6212,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6223,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6240,7 +6240,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6255,7 +6255,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6271,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-benchmarking", "frame-support", @@ -6286,7 +6286,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "frame-system", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-benchmarking", "frame-support", @@ -6857,7 +6857,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6872,7 +6872,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6886,7 +6886,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "derive_more", "fatality", @@ -6909,7 +6909,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "fatality", "futures", @@ -6930,7 +6930,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "clap 3.2.13", "frame-benchmarking-cli", @@ -6956,7 +6956,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -6996,7 +6996,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "always-assert", "fatality", @@ -7017,7 +7017,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7030,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "derive_more", "fatality", @@ -7053,7 +7053,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7067,7 +7067,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "futures-timer", @@ -7087,7 +7087,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "always-assert", "async-trait", @@ -7110,7 +7110,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "parity-scale-codec", @@ -7128,7 +7128,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bitvec", "derive_more", @@ -7157,7 +7157,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bitvec", "futures", @@ -7177,7 +7177,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bitvec", "fatality", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7211,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "futures", @@ -7229,7 +7229,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7244,7 +7244,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "futures-timer", @@ -7261,7 +7261,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "fatality", "futures", @@ -7280,7 +7280,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "futures", @@ -7297,7 +7297,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bitvec", "fatality", @@ -7315,7 +7315,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "always-assert", "assert_matches", @@ -7347,7 +7347,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "polkadot-node-primitives", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "futures", "memory-lru", @@ -7379,7 +7379,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-std", "lazy_static", @@ -7397,7 +7397,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bs58", "futures", @@ -7416,7 +7416,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "derive_more", @@ -7437,7 +7437,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bounded-vec", "futures", @@ -7459,7 +7459,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7469,7 +7469,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "futures", @@ -7487,7 +7487,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "derive_more", @@ -7510,7 +7510,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "derive_more", @@ -7543,7 +7543,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "futures", @@ -7566,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "derive_more", "frame-support", @@ -7661,7 +7661,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7676,7 +7676,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bitvec", "frame-system", @@ -7706,7 +7706,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7738,7 +7738,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-primitives", "bitvec", @@ -7823,7 +7823,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-primitives", "bitvec", @@ -7870,7 +7870,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "polkadot-primitives", @@ -7882,7 +7882,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bs58", "parity-scale-codec", @@ -7894,7 +7894,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "bitflags", "bitvec", @@ -7937,7 +7937,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "async-trait", "beefy-gadget", @@ -8040,7 +8040,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8061,7 +8061,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8071,7 +8071,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8096,7 +8096,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-primitives", "bitvec", @@ -8157,7 +8157,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-benchmarking", "frame-system", @@ -8301,7 +8301,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8744,7 +8744,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8872,7 +8872,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8941,7 +8941,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "polkadot-primitives", @@ -9125,7 +9125,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "sp-core", @@ -9136,7 +9136,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -9163,7 +9163,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "futures-timer", @@ -9186,7 +9186,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9202,7 +9202,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9219,7 +9219,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9230,7 +9230,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "chrono", "clap 3.2.13", @@ -9269,7 +9269,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "fnv", "futures", @@ -9297,7 +9297,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "hash-db", "kvdb", @@ -9322,7 +9322,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -9346,7 +9346,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -9375,7 +9375,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "fork-tree", @@ -9418,7 +9418,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "jsonrpsee", @@ -9440,7 +9440,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9453,7 +9453,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -9478,7 +9478,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "sc-client-api", "sp-authorship", @@ -9489,7 +9489,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9516,7 +9516,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "environmental", "parity-scale-codec", @@ -9533,7 +9533,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "parity-scale-codec", @@ -9548,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9568,7 +9568,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "ahash", "async-trait", @@ -9609,7 +9609,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "finality-grandpa", "futures", @@ -9630,7 +9630,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "ansi_term", "futures", @@ -9647,7 +9647,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "hex", @@ -9662,7 +9662,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "asynchronous-codec", @@ -9711,7 +9711,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "bitflags", "futures", @@ -9729,7 +9729,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "ahash", "futures", @@ -9746,7 +9746,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "libp2p", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "fork-tree", "futures", @@ -9793,7 +9793,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "bytes", "fnv", @@ -9821,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "libp2p", @@ -9834,7 +9834,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9843,7 +9843,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "hash-db", @@ -9873,7 +9873,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "jsonrpsee", @@ -9896,7 +9896,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "jsonrpsee", @@ -9909,7 +9909,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "directories", @@ -9976,7 +9976,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "parity-scale-codec", @@ -9990,7 +9990,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10009,7 +10009,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "libc", @@ -10028,7 +10028,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "chrono", "futures", @@ -10046,7 +10046,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "ansi_term", "atty", @@ -10077,7 +10077,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10088,7 +10088,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "futures-timer", @@ -10115,7 +10115,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "log", @@ -10128,7 +10128,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "futures-timer", @@ -10573,7 +10573,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "enumn", "parity-scale-codec", @@ -10649,7 +10649,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "hash-db", "log", @@ -10666,7 +10666,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "blake2", "proc-macro-crate", @@ -10678,7 +10678,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -10691,7 +10691,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "integer-sqrt", "num-traits", @@ -10706,7 +10706,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -10719,7 +10719,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "parity-scale-codec", @@ -10731,7 +10731,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "sp-api", @@ -10743,7 +10743,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "log", @@ -10761,7 +10761,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -10780,7 +10780,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "parity-scale-codec", @@ -10798,7 +10798,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "merlin", @@ -10821,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -10835,7 +10835,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -10848,7 +10848,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "base58", "bitflags", @@ -10894,7 +10894,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "blake2", "byteorder", @@ -10908,7 +10908,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro2", "quote", @@ -10919,7 +10919,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10928,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro2", "quote", @@ -10938,7 +10938,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "environmental", "parity-scale-codec", @@ -10949,7 +10949,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "finality-grandpa", "log", @@ -10967,7 +10967,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10981,7 +10981,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "hash-db", @@ -11006,7 +11006,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "lazy_static", "sp-core", @@ -11017,7 +11017,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -11034,7 +11034,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "thiserror", "zstd", @@ -11043,7 +11043,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "parity-scale-codec", @@ -11058,7 +11058,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -11072,7 +11072,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "sp-api", "sp-core", @@ -11082,7 +11082,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "backtrace", "lazy_static", @@ -11092,7 +11092,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "rustc-hash", "serde", @@ -11102,7 +11102,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "either", "hash256-std-hasher", @@ -11124,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11141,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "Inflector", "proc-macro-crate", @@ -11153,7 +11153,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "parity-scale-codec", @@ -11167,7 +11167,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "serde", "serde_json", @@ -11176,7 +11176,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -11190,7 +11190,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "scale-info", @@ -11201,7 +11201,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "hash-db", "log", @@ -11223,12 +11223,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11241,7 +11241,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "log", "sp-core", @@ -11254,7 +11254,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures-timer", @@ -11270,7 +11270,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "sp-std", @@ -11282,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "sp-api", "sp-runtime", @@ -11291,7 +11291,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "log", @@ -11307,7 +11307,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "hash-db", "memory-db", @@ -11323,7 +11323,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11340,7 +11340,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11351,7 +11351,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "impl-trait-for-tuples", "log", @@ -11630,7 +11630,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "platforms", ] @@ -11638,7 +11638,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11659,7 +11659,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures-util", "hyper", @@ -11672,7 +11672,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "jsonrpsee", "log", @@ -11693,7 +11693,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "async-trait", "futures", @@ -11719,7 +11719,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11729,7 +11729,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11740,7 +11740,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "ansi_term", "build-helper", @@ -11848,7 +11848,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "polkadot-primitives", @@ -12137,7 +12137,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12148,7 +12148,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12275,7 +12275,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b81072843e584ef2bee449081aed5c963021ee9" +source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" dependencies = [ "clap 3.2.13", "jsonrpsee", @@ -12859,7 +12859,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "beefy-primitives", "bitvec", @@ -12947,7 +12947,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "polkadot-primitives", @@ -13231,7 +13231,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13245,7 +13245,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-support", "frame-system", @@ -13265,7 +13265,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "frame-benchmarking", "frame-support", @@ -13283,7 +13283,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#bb1bf69dfc538abd40c8d614e8bbf46580d7005a" +source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index cc6f88f239..acc704bb77 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -30,7 +30,7 @@ use futures::{FutureExt, Stream, StreamExt}; use parking_lot::Mutex; use polkadot_client::{ClientHandle, ExecuteWithClient, FullBackend}; use polkadot_service::{ - AuxStore, BabeApi, CollatorPair, Configuration, Handle, NewFull, Role, TaskManager, + AuxStore, BabeApi, CollatorPair, Configuration, Handle, NewFull, TaskManager, }; use sc_cli::SubstrateCli; use sc_client_api::{ @@ -330,33 +330,28 @@ fn build_polkadot_full_node( telemetry_worker_handle: Option, hwbench: Option, ) -> Result<(NewFull, Option), polkadot_service::Error> { - let is_light = matches!(config.role, Role::Light); - if is_light { - Err(polkadot_service::Error::Sub("Light client not supported.".into())) + let (is_collator, maybe_collator_key) = if parachain_config.role.is_authority() { + let collator_key = CollatorPair::generate().0; + (polkadot_service::IsCollator::Yes(collator_key.clone()), Some(collator_key)) } else { - let (is_collator, maybe_collator_key) = if parachain_config.role.is_authority() { - let collator_key = CollatorPair::generate().0; - (polkadot_service::IsCollator::Yes(collator_key.clone()), Some(collator_key)) - } else { - (polkadot_service::IsCollator::No, None) - }; + (polkadot_service::IsCollator::No, None) + }; - let relay_chain_full_node = polkadot_service::build_full( - config, - is_collator, - None, - // Disable BEEFY. It should not be required by the internal relay chain node. - false, - None, - telemetry_worker_handle, - true, - polkadot_service::RealOverseerGen, - None, - hwbench, - )?; + let relay_chain_full_node = polkadot_service::build_full( + config, + is_collator, + None, + // Disable BEEFY. It should not be required by the internal relay chain node. + false, + None, + telemetry_worker_handle, + true, + polkadot_service::RealOverseerGen, + None, + hwbench, + )?; - Ok((relay_chain_full_node, maybe_collator_key)) - } + Ok((relay_chain_full_node, maybe_collator_key)) } /// Builds a relay chain interface by constructing a full relay chain node diff --git a/docs/overview.md b/docs/overview.md index b64adaf238..402c56042c 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -53,7 +53,7 @@ the notification the so-called candidate message. This candidate message is issu validator after approving a block. This proof of possible inclusion prevents spamming other collators of the network with useless blocks. The Collator joins the relay-chain network for two reasons. First, the Collator uses it to send the -Parachain blocks to the Parachain validators. Secondly, the Collator participates as light/full-node +Parachain blocks to the Parachain validators. Secondly, the Collator participates as a full-node of the relay chain to be informed of new relay-chain blocks. This information will be used for the consensus and the block production logic. diff --git a/parachain-template/node/src/service.rs b/parachain-template/node/src/service.rs index aec1ce8e8b..9b50508622 100644 --- a/parachain-template/node/src/service.rs +++ b/parachain-template/node/src/service.rs @@ -28,7 +28,7 @@ use cumulus_relay_chain_rpc_interface::RelayChainRPCInterface; use sc_client_api::ExecutorProvider; use sc_executor::NativeElseWasmExecutor; use sc_network::NetworkService; -use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager}; +use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sp_api::ConstructRuntimeApi; use sp_keystore::SyncCryptoStorePtr; @@ -257,10 +257,6 @@ where 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)?; diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index 8994b2e2c4..cd8eaf242c 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -47,7 +47,7 @@ use sc_consensus::{ }; use sc_executor::WasmExecutor; use sc_network::NetworkService; -use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager}; +use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sp_api::{ApiExt, ConstructRuntimeApi}; use sp_consensus::CacheKeyId; @@ -374,10 +374,6 @@ where 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)?; @@ -576,10 +572,6 @@ where 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)?; @@ -1400,10 +1392,6 @@ where 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)?; diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index 990c540b9e..d3a52b7db7 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -227,10 +227,6 @@ pub async fn start_node_impl( where RB: Fn(Arc) -> Result, sc_service::Error> + Send + 'static, { - if matches!(parachain_config.role, Role::Light) { - return Err("Light client not supported!".into()) - } - let mut parachain_config = prepare_node_config(parachain_config); let params = new_partial(&mut parachain_config)?; From b1c8d95b205b74a65d19d1a362a7ec5542a5b6f4 Mon Sep 17 00:00:00 2001 From: Andronik Date: Sat, 23 Jul 2022 02:03:07 +0200 Subject: [PATCH 166/238] companion for https://github.com/paritytech/polkadot/pull/5770 (#1442) * companion for https://github.com/paritytech/polkadot/pull/5770 * update lockfile for {"polkadot", "substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 494 +++++++++--------- .../src/lib.rs | 1 + 2 files changed, 248 insertions(+), 247 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f6fb6ff62..214509caaf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -2673,7 +2673,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", ] @@ -2691,7 +2691,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -2713,7 +2713,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "Inflector", "chrono", @@ -2764,7 +2764,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2775,7 +2775,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2791,7 +2791,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -2819,7 +2819,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "bitflags", "frame-metadata", @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2861,7 +2861,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2873,7 +2873,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro2", "quote", @@ -2883,7 +2883,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "log", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "sp-api", @@ -2924,7 +2924,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "sp-api", @@ -3801,7 +3801,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-primitives", "bitvec", @@ -3893,7 +3893,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "polkadot-primitives", @@ -5250,7 +5250,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "dyn-clonable", @@ -5266,7 +5266,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "expander 0.0.6", "itertools", @@ -5304,7 +5304,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5321,7 +5321,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5351,7 +5351,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5367,7 +5367,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5382,7 +5382,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5406,7 +5406,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5426,7 +5426,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5441,7 +5441,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "beefy-primitives", "frame-support", @@ -5457,7 +5457,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5498,7 +5498,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5543,7 +5543,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5560,7 +5560,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "bitflags", "frame-benchmarking", @@ -5588,7 +5588,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "bitflags", "parity-scale-codec", @@ -5603,7 +5603,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro2", "quote", @@ -5613,7 +5613,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5630,7 +5630,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5643,7 +5643,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5659,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5682,7 +5682,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5695,7 +5695,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5713,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5728,7 +5728,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5767,7 +5767,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5787,7 +5787,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5821,7 +5821,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5839,7 +5839,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5854,7 +5854,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5869,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5886,7 +5886,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5905,7 +5905,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5922,7 +5922,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5976,7 +5976,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -5990,7 +5990,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6005,7 +6005,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6021,7 +6021,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -6042,7 +6042,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6058,7 +6058,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -6072,7 +6072,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6106,7 +6106,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "sp-arithmetic", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6162,7 +6162,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6181,7 +6181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-support", "frame-system", @@ -6197,7 +6197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6212,7 +6212,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6223,7 +6223,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6240,7 +6240,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6255,7 +6255,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6271,7 +6271,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6286,7 +6286,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "frame-system", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-benchmarking", "frame-support", @@ -6857,7 +6857,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6872,7 +6872,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6886,7 +6886,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "derive_more", "fatality", @@ -6909,7 +6909,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "fatality", "futures", @@ -6930,7 +6930,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "clap 3.2.13", "frame-benchmarking-cli", @@ -6956,7 +6956,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -6996,7 +6996,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "always-assert", "fatality", @@ -7017,7 +7017,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7030,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "derive_more", "fatality", @@ -7053,7 +7053,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7067,7 +7067,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "futures-timer", @@ -7087,7 +7087,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "always-assert", "async-trait", @@ -7110,7 +7110,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "parity-scale-codec", @@ -7128,7 +7128,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bitvec", "derive_more", @@ -7157,7 +7157,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bitvec", "futures", @@ -7177,7 +7177,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bitvec", "fatality", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7211,7 +7211,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "futures", @@ -7229,7 +7229,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7244,7 +7244,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "futures-timer", @@ -7261,7 +7261,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "fatality", "futures", @@ -7280,7 +7280,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "futures", @@ -7297,7 +7297,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bitvec", "fatality", @@ -7315,7 +7315,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "always-assert", "assert_matches", @@ -7347,7 +7347,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "polkadot-node-primitives", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "futures", "memory-lru", @@ -7379,7 +7379,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-std", "lazy_static", @@ -7397,7 +7397,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bs58", "futures", @@ -7416,7 +7416,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "derive_more", @@ -7437,7 +7437,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bounded-vec", "futures", @@ -7459,7 +7459,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7469,7 +7469,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "futures", @@ -7487,7 +7487,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "derive_more", @@ -7510,7 +7510,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "derive_more", @@ -7543,7 +7543,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "futures", @@ -7566,7 +7566,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "derive_more", "frame-support", @@ -7661,7 +7661,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7676,7 +7676,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bitvec", "frame-system", @@ -7706,7 +7706,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7738,7 +7738,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-primitives", "bitvec", @@ -7823,7 +7823,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-primitives", "bitvec", @@ -7870,7 +7870,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "polkadot-primitives", @@ -7882,7 +7882,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bs58", "parity-scale-codec", @@ -7894,7 +7894,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "bitflags", "bitvec", @@ -7937,7 +7937,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "async-trait", "beefy-gadget", @@ -8040,7 +8040,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8061,7 +8061,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8071,7 +8071,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8096,7 +8096,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-primitives", "bitvec", @@ -8157,7 +8157,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-benchmarking", "frame-system", @@ -8301,7 +8301,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8744,7 +8744,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8872,7 +8872,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8941,7 +8941,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "polkadot-primitives", @@ -9125,7 +9125,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "sp-core", @@ -9136,7 +9136,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -9163,7 +9163,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "futures-timer", @@ -9186,7 +9186,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9202,7 +9202,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9219,7 +9219,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9230,7 +9230,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "chrono", "clap 3.2.13", @@ -9269,7 +9269,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "fnv", "futures", @@ -9297,7 +9297,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "hash-db", "kvdb", @@ -9322,7 +9322,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -9346,7 +9346,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -9375,7 +9375,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "fork-tree", @@ -9418,7 +9418,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "jsonrpsee", @@ -9440,7 +9440,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9453,7 +9453,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -9478,7 +9478,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "sc-client-api", "sp-authorship", @@ -9489,7 +9489,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9516,7 +9516,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "environmental", "parity-scale-codec", @@ -9533,7 +9533,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "parity-scale-codec", @@ -9548,7 +9548,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9568,7 +9568,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "ahash", "async-trait", @@ -9609,7 +9609,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "finality-grandpa", "futures", @@ -9630,7 +9630,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "ansi_term", "futures", @@ -9647,7 +9647,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "hex", @@ -9662,7 +9662,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "asynchronous-codec", @@ -9711,7 +9711,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "bitflags", "futures", @@ -9729,7 +9729,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "ahash", "futures", @@ -9746,7 +9746,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "libp2p", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "fork-tree", "futures", @@ -9793,7 +9793,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "bytes", "fnv", @@ -9821,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "libp2p", @@ -9834,7 +9834,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9843,7 +9843,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "hash-db", @@ -9873,7 +9873,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "jsonrpsee", @@ -9896,7 +9896,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "jsonrpsee", @@ -9909,7 +9909,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "directories", @@ -9976,7 +9976,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "parity-scale-codec", @@ -9990,7 +9990,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10009,7 +10009,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "libc", @@ -10028,7 +10028,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "chrono", "futures", @@ -10046,7 +10046,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "ansi_term", "atty", @@ -10077,7 +10077,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10088,7 +10088,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "futures-timer", @@ -10115,7 +10115,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "log", @@ -10128,7 +10128,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "futures-timer", @@ -10573,7 +10573,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "enumn", "parity-scale-codec", @@ -10649,7 +10649,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "hash-db", "log", @@ -10666,7 +10666,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "blake2", "proc-macro-crate", @@ -10678,7 +10678,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -10691,7 +10691,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "integer-sqrt", "num-traits", @@ -10706,7 +10706,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -10719,7 +10719,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "parity-scale-codec", @@ -10731,7 +10731,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "sp-api", @@ -10743,7 +10743,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "log", @@ -10761,7 +10761,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -10780,7 +10780,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "parity-scale-codec", @@ -10798,7 +10798,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "merlin", @@ -10821,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -10835,7 +10835,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -10848,7 +10848,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "base58", "bitflags", @@ -10894,7 +10894,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "blake2", "byteorder", @@ -10908,7 +10908,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro2", "quote", @@ -10919,7 +10919,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10928,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro2", "quote", @@ -10938,7 +10938,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "environmental", "parity-scale-codec", @@ -10949,7 +10949,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "finality-grandpa", "log", @@ -10967,7 +10967,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10981,7 +10981,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "hash-db", @@ -11006,7 +11006,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "lazy_static", "sp-core", @@ -11017,7 +11017,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -11034,7 +11034,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "thiserror", "zstd", @@ -11043,7 +11043,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "parity-scale-codec", @@ -11058,7 +11058,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11072,7 +11072,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "sp-api", "sp-core", @@ -11082,7 +11082,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "backtrace", "lazy_static", @@ -11092,7 +11092,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "rustc-hash", "serde", @@ -11102,7 +11102,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "either", "hash256-std-hasher", @@ -11124,7 +11124,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11141,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "Inflector", "proc-macro-crate", @@ -11153,7 +11153,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "parity-scale-codec", @@ -11167,7 +11167,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "serde", "serde_json", @@ -11176,7 +11176,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11190,7 +11190,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "scale-info", @@ -11201,7 +11201,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "hash-db", "log", @@ -11223,12 +11223,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11241,7 +11241,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "log", "sp-core", @@ -11254,7 +11254,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures-timer", @@ -11270,7 +11270,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "sp-std", @@ -11282,7 +11282,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "sp-api", "sp-runtime", @@ -11291,7 +11291,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "log", @@ -11307,7 +11307,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "hash-db", "memory-db", @@ -11323,7 +11323,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11340,7 +11340,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11351,7 +11351,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "impl-trait-for-tuples", "log", @@ -11630,7 +11630,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "platforms", ] @@ -11638,7 +11638,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11659,7 +11659,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures-util", "hyper", @@ -11672,7 +11672,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "jsonrpsee", "log", @@ -11693,7 +11693,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "async-trait", "futures", @@ -11719,7 +11719,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11729,7 +11729,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11740,7 +11740,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "ansi_term", "build-helper", @@ -11848,7 +11848,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "polkadot-primitives", @@ -12137,7 +12137,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12148,7 +12148,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12275,7 +12275,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cac91f59b9e3fb8fd59842c023f87b4206931993" +source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "clap 3.2.13", "jsonrpsee", @@ -12859,7 +12859,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "beefy-primitives", "bitvec", @@ -12947,7 +12947,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "polkadot-primitives", @@ -13231,7 +13231,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13245,7 +13245,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-support", "frame-system", @@ -13265,7 +13265,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "frame-benchmarking", "frame-support", @@ -13283,7 +13283,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#7f3e99d8fc84e55654172efe8423edfb9cb17744" +source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index acc704bb77..1563553917 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -348,6 +348,7 @@ fn build_polkadot_full_node( true, polkadot_service::RealOverseerGen, None, + None, hwbench, )?; From 5eb49e8068f18d9afd575610c92b64575d359eff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jul 2022 07:17:03 +0000 Subject: [PATCH 167/238] Bump serde from 1.0.139 to 1.0.140 (#1457) Bumps [serde](https://github.com/serde-rs/serde) from 1.0.139 to 1.0.140. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.139...v1.0.140) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/aura-ext/Cargo.toml | 2 +- pallets/collator-selection/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- pallets/xcm/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/runtime/Cargo.toml | 2 +- parachains/pallets/parachain-info/Cargo.toml | 2 +- parachains/pallets/ping/Cargo.toml | 2 +- parachains/runtimes/assets/statemine/Cargo.toml | 2 +- parachains/runtimes/assets/statemint/Cargo.toml | 2 +- parachains/runtimes/assets/westmint/Cargo.toml | 2 +- parachains/runtimes/contracts/contracts-rococo/Cargo.toml | 2 +- parachains/runtimes/starters/seedling/Cargo.toml | 2 +- parachains/runtimes/starters/shell/Cargo.toml | 2 +- parachains/runtimes/testing/penpal/Cargo.toml | 2 +- parachains/runtimes/testing/rococo-parachain/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/runtime/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 20 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 214509caaf..f136e81e5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10336,9 +10336,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.139" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6" +checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" dependencies = [ "serde_derive", ] @@ -10355,9 +10355,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.139" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb" +checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/aura-ext/Cargo.toml b/pallets/aura-ext/Cargo.toml index 1fa22983bc..31609ada32 100644 --- a/pallets/aura-ext/Cargo.toml +++ b/pallets/aura-ext/Cargo.toml @@ -8,7 +8,7 @@ description = "AURA consensus extension pallet for parachains" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/collator-selection/Cargo.toml b/pallets/collator-selection/Cargo.toml index 9981cb2cfd..91b3c400a0 100644 --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -17,7 +17,7 @@ log = { version = "0.4.17", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", default-features = false } +serde = { version = "1.0.140", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index d2b27567d8..d7418b24a1 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -11,7 +11,7 @@ environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/xcm/Cargo.toml b/pallets/xcm/Cargo.toml index 05249426ed..dda5782846 100644 --- a/pallets/xcm/Cargo.toml +++ b/pallets/xcm/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index a83296ed95..aee4cb3a2c 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -14,7 +14,7 @@ clap = { version = "3.2.13", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } -serde = { version = "1.0.139", features = ["derive"] } +serde = { version = "1.0.140", features = ["derive"] } hex-literal = "0.3.4" jsonrpsee = { version = "0.14.0", features = ["server"] } diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index e248be9028..792c238e81 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } smallvec = "1.9.0" # Local diff --git a/parachains/pallets/parachain-info/Cargo.toml b/parachains/pallets/parachain-info/Cargo.toml index 24799bed36..9c44da7e74 100644 --- a/parachains/pallets/parachain-info/Cargo.toml +++ b/parachains/pallets/parachain-info/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } 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" } diff --git a/parachains/pallets/ping/Cargo.toml b/parachains/pallets/ping/Cargo.toml index f2ef763b7a..960e7563e5 100644 --- a/parachains/pallets/ping/Cargo.toml +++ b/parachains/pallets/ping/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", 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" } diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index ebd68acffa..5f450ba3b6 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index 410d5d4067..bbbe289032 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -9,7 +9,7 @@ description = "Statemint parachain runtime" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.9.0" diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index 4139fad9be..06058937fd 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml index eb5edf1392..0a1278b322 100644 --- a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/starters/seedling/Cargo.toml b/parachains/runtimes/starters/seedling/Cargo.toml index 551f36cc96..86933c6e56 100644 --- a/parachains/runtimes/starters/seedling/Cargo.toml +++ b/parachains/runtimes/starters/seedling/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } scale-info = { version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/starters/shell/Cargo.toml b/parachains/runtimes/starters/shell/Cargo.toml index 3491c30a1c..26b319f0d0 100644 --- a/parachains/runtimes/starters/shell/Cargo.toml +++ b/parachains/runtimes/starters/shell/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/testing/penpal/Cargo.toml b/parachains/runtimes/testing/penpal/Cargo.toml index ca6e1d48ae..4143e07067 100644 --- a/parachains/runtimes/testing/penpal/Cargo.toml +++ b/parachains/runtimes/testing/penpal/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/testing/rococo-parachain/Cargo.toml b/parachains/runtimes/testing/rococo-parachain/Cargo.toml index bfa8825da0..dd221d8322 100644 --- a/parachains/runtimes/testing/rococo-parachain/Cargo.toml +++ b/parachains/runtimes/testing/rococo-parachain/Cargo.toml @@ -9,7 +9,7 @@ description = "Simple runtime used by the rococo parachain(s)" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index eceee4ddec..2b0e931849 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -13,7 +13,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" log = "0.4.17" -serde = { version = "1.0.139", features = ["derive"] } +serde = { version = "1.0.140", features = ["derive"] } # Local rococo-parachain-runtime = { path = "../parachains/runtimes/testing/rococo-parachain" } diff --git a/test/runtime/Cargo.toml b/test/runtime/Cargo.toml index 1567266793..73c8e59136 100644 --- a/test/runtime/Cargo.toml +++ b/test/runtime/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.139", optional = true, features = ["derive"] } +serde = { version = "1.0.140", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 8b1e993003..9cefe52db2 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -16,7 +16,7 @@ criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" -serde = { version = "1.0.139", features = ["derive"] } +serde = { version = "1.0.140", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } tracing = "0.1.25" url = "2.2.2" From f65bd64c54d17a5997370173614afcbdb85585da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Jul 2022 12:22:11 +0000 Subject: [PATCH 168/238] Bump clap from 3.2.13 to 3.2.15 (#1468) Bumps [clap](https://github.com/clap-rs/clap) from 3.2.13 to 3.2.15. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/v3.2.15/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.2.13...v3.2.15) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ client/cli/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f136e81e5b..ba2a4b5f5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -931,9 +931,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.13" +version = "3.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2bd7a1eb07da9ac757c923f69373deb7bc2ba5efc951b873bcb5e693992dca" +checksum = "44bbe24bbd31a185bc2c4f7c2abe80bea13a20d57ee4e55be70ac512bdc76417" dependencies = [ "atty", "bitflags", @@ -948,9 +948,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.7" +version = "3.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759bf187376e1afa7b85b959e6a664a3e7a95203415dba952ad19139e798f902" +checksum = "9ba52acd3b0a5c33aeada5cdaa3267cdc7c594a98731d4268cdc1532f4264cb4" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -1437,7 +1437,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.2.13", + "clap 3.2.15", "parity-scale-codec", "sc-chain-spec", "sc-cli", @@ -2047,7 +2047,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.2.13", + "clap 3.2.15", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2717,7 +2717,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c846 dependencies = [ "Inflector", "chrono", - "clap 3.2.13", + "clap 3.2.15", "comfy-table", "frame-benchmarking", "frame-support", @@ -6334,7 +6334,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.2.13", + "clap 3.2.15", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -6932,7 +6932,7 @@ name = "polkadot-cli" version = "0.9.26" source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" dependencies = [ - "clap 3.2.13", + "clap 3.2.15", "frame-benchmarking-cli", "futures", "log", @@ -7586,7 +7586,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.2.13", + "clap 3.2.15", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9233,7 +9233,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ "chrono", - "clap 3.2.13", + "clap 3.2.15", "fdlimit", "futures", "hex", @@ -12277,7 +12277,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" dependencies = [ - "clap 3.2.13", + "clap 3.2.15", "jsonrpsee", "log", "parity-scale-codec", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index f65c325819..686a0b8dab 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.2.13", features = ["derive", "deprecated"] } +clap = { version = "3.2.15", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index aee4cb3a2c..5ef58cb6d4 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [dependencies] -clap = { version = "3.2.13", features = ["derive"] } +clap = { version = "3.2.15", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 2b0e931849..c775b9fc78 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -8,7 +8,7 @@ description = "Runs a polkadot parachain node which could be a collator." [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.13", features = ["derive", "deprecated"] } +clap = { version = "3.2.15", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 9cefe52db2..27720cbcc9 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,7 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.13", features = ["derive", "deprecated"] } +clap = { version = "3.2.15", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } From d249ae2cff0354ccb84bdf67e9fff68bc505454e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Jul 2022 15:30:31 +0200 Subject: [PATCH 169/238] Bump proc-macro2 from 1.0.40 to 1.0.42 (#1474) Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.40 to 1.0.42. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.40...1.0.42) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba2a4b5f5b..a4aad0acde 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8349,9 +8349,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" dependencies = [ "unicode-ident", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 9fa582fc1a..018b9301a4 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -10,7 +10,7 @@ proc-macro = true [dependencies] syn = "1.0.96" -proc-macro2 = "1.0.40" +proc-macro2 = "1.0.42" quote = "1.0.20" proc-macro-crate = "1.1.3" From 53f255decad939d5a4d9dbc2d24285ff3e449016 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Wed, 27 Jul 2022 15:31:35 +0200 Subject: [PATCH 170/238] [ci] Add timeout to benchmark job (#1475) --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b611fdf891..25d17f2147 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -274,6 +274,7 @@ benchmarks: - *rust-info-script <<: *collect-artifacts <<: *benchmarks-refs + timeout: 1d script: - ./scripts/benchmarks-ci.sh assets statemine - ./scripts/benchmarks-ci.sh assets statemint From c5dc2e3a0d699da31f9710ca8081288ce48e5a25 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Thu, 28 Jul 2022 10:18:35 +0200 Subject: [PATCH 171/238] [ci] use nextest for tests (#1477) * [do not merge] ci: try nextest * uncomment jobs --- .gitlab-ci.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 25d17f2147..eab592d70b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -93,7 +93,18 @@ test-linux-stable: # but still want to have debug assertions. RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings" script: - - time cargo test --all --release --locked -- --include-ignored + - time cargo nextest run --all --release --locked --run-ignored all + +test-doc: + stage: test + <<: *docker-env + <<: *common-refs + variables: + # Enable debug assertions since we are running optimized builds for testing + # but still want to have debug assertions. + RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings" + script: + - time cargo test --doc check-runtime-benchmarks: stage: test From ebec202c3af50189c2a28ac61ef4bbce828117d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 17:38:07 +0200 Subject: [PATCH 172/238] Bump nix from 0.24.1 to 0.24.2 (#1453) Bumps [nix](https://github.com/nix-rust/nix) from 0.24.1 to 0.24.2. - [Release notes](https://github.com/nix-rust/nix/releases) - [Changelog](https://github.com/nix-rust/nix/blob/v0.24.2/CHANGELOG.md) - [Commits](https://github.com/nix-rust/nix/compare/v0.24.1...v0.24.2) --- updated-dependencies: - dependency-name: nix dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a4aad0acde..4893a7d4e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5071,9 +5071,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" dependencies = [ "bitflags", "cfg-if 1.0.0", @@ -7605,7 +7605,7 @@ dependencies = [ "hex-literal", "jsonrpsee", "log", - "nix 0.24.1", + "nix 0.24.2", "pallet-contracts-rpc", "pallet-transaction-payment-rpc", "parachains-common", From 9f5d8c333a245c847897829756f2aafee71fae6a Mon Sep 17 00:00:00 2001 From: Amar Singh Date: Thu, 28 Jul 2022 18:41:23 -0400 Subject: [PATCH 173/238] Add epoch index to RelayStateSproofBuilder (for testing) (#1419) * insert zero epoch index into relay sproof * fix --- test/relay-sproof-builder/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/relay-sproof-builder/src/lib.rs b/test/relay-sproof-builder/src/lib.rs index 179b817dbc..36b091eb7e 100644 --- a/test/relay-sproof-builder/src/lib.rs +++ b/test/relay-sproof-builder/src/lib.rs @@ -43,6 +43,7 @@ pub struct RelayStateSproofBuilder { pub hrmp_egress_channel_index: Option>, pub hrmp_channels: BTreeMap, pub current_slot: relay_chain::v2::Slot, + pub current_epoch: u64, } impl Default for RelayStateSproofBuilder { @@ -67,6 +68,7 @@ impl Default for RelayStateSproofBuilder { hrmp_egress_channel_index: None, hrmp_channels: BTreeMap::new(), current_slot: 0.into(), + current_epoch: 0u64, } } } @@ -153,7 +155,7 @@ impl RelayStateSproofBuilder { for (channel, metadata) in self.hrmp_channels { insert(relay_chain::well_known_keys::hrmp_channels(channel), metadata.encode()); } - + insert(relay_chain::well_known_keys::EPOCH_INDEX.to_vec(), self.current_epoch.encode()); insert(relay_chain::well_known_keys::CURRENT_SLOT.to_vec(), self.current_slot.encode()); } From 24c5d6c8278579bcd99f8f07924cff11f68c5435 Mon Sep 17 00:00:00 2001 From: Koute Date: Fri, 29 Jul 2022 18:34:26 +0900 Subject: [PATCH 174/238] Companion for substrate#11523 (#1390) * Align to changes in substrate: `sp_io::storage::get` now returns `Bytes` * Update substrate and polkadot to the newest master * update lockfile for {"substrate", "polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 787 +++++++++--------- pallets/parachain-system/Cargo.toml | 1 + .../src/validate_block/implementation.rs | 4 +- test/runtime/src/lib.rs | 2 +- 4 files changed, 377 insertions(+), 417 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4893a7d4e5..01ec181c94 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "beefy-primitives", "fnv", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -952,7 +952,7 @@ version = "3.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ba52acd3b0a5c33aeada5cdaa3267cdc7c594a98731d4268cdc1532f4264cb4" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro-error", "proc-macro2", "quote", @@ -991,12 +991,12 @@ dependencies = [ [[package]] name = "comfy-table" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b103d85ca6e209388771bfb7aa6b68a7aeec4afbf6f0a0264bfbf50360e5212e" +checksum = "121d8a5b0346092c18a4b2fd6f620d7a06f0eb7ac0a45860939a0884bc579c56" dependencies = [ - "strum 0.23.0", - "strum_macros 0.23.1", + "strum", + "strum_macros", "unicode-width", ] @@ -1064,7 +1064,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-runtime-common", "scale-info", "serde", @@ -1567,7 +1567,7 @@ dependencies = [ "parking_lot 0.12.1", "polkadot-client", "polkadot-node-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-service", "polkadot-test-client", @@ -1683,6 +1683,7 @@ dependencies = [ name = "cumulus-pallet-parachain-system" version = "0.1.0" dependencies = [ + "bytes", "cumulus-pallet-parachain-system-proc-macro", "cumulus-primitives-core", "cumulus-primitives-parachain-inherent", @@ -1697,7 +1698,7 @@ dependencies = [ "log", "pallet-balances", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "sc-client-api", "scale-info", "serde", @@ -1816,7 +1817,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "sp-api", "sp-runtime", @@ -1871,7 +1872,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "sp-runtime", "sp-std", @@ -1972,7 +1973,7 @@ dependencies = [ "pallet-balances", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "sc-block-builder", "sc-consensus", @@ -2400,7 +2401,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro2", "quote", "syn", @@ -2673,7 +2674,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", ] @@ -2691,7 +2692,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -2713,7 +2714,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "Inflector", "chrono", @@ -2764,7 +2765,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2775,7 +2776,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2791,7 +2792,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -2819,7 +2820,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "bitflags", "frame-metadata", @@ -2849,7 +2850,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2861,7 +2862,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2873,7 +2874,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro2", "quote", @@ -2883,7 +2884,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "log", @@ -2900,7 +2901,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -2915,7 +2916,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "sp-api", @@ -2924,7 +2925,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "sp-api", @@ -3292,15 +3293,6 @@ dependencies = [ "ahash", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.0" @@ -3800,8 +3792,8 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-primitives", "bitvec", @@ -3837,6 +3829,7 @@ dependencies = [ "pallet-multisig", "pallet-nomination-pools", "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", @@ -3892,8 +3885,8 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "polkadot-primitives", @@ -5250,7 +5243,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "dyn-clonable", @@ -5266,7 +5259,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "expander 0.0.6", "itertools", @@ -5304,7 +5297,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5321,7 +5314,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5335,7 +5328,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5351,7 +5344,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5367,7 +5360,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5382,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5406,7 +5399,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5426,7 +5419,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5441,7 +5434,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "beefy-primitives", "frame-support", @@ -5457,7 +5450,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5480,7 +5473,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5498,7 +5491,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5543,7 +5536,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5560,7 +5553,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "bitflags", "frame-benchmarking", @@ -5588,7 +5581,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "bitflags", "parity-scale-codec", @@ -5603,7 +5596,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro2", "quote", @@ -5613,7 +5606,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5630,7 +5623,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5643,7 +5636,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5659,7 +5652,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5676,13 +5669,13 @@ dependencies = [ "sp-runtime", "sp-std", "static_assertions", - "strum 0.23.0", + "strum", ] [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5695,7 +5688,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5713,7 +5706,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5728,7 +5721,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5751,7 +5744,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5767,7 +5760,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5787,7 +5780,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5804,7 +5797,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5821,7 +5814,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5839,7 +5832,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5854,7 +5847,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5869,7 +5862,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5886,7 +5879,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5902,10 +5895,20 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-nomination-pools-runtime-api" +version = "1.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +dependencies = [ + "parity-scale-codec", + "sp-api", + "sp-std", +] + [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5922,7 +5925,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5945,7 +5948,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +5964,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5976,7 +5979,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -5990,7 +5993,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6005,7 +6008,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6021,7 +6024,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -6042,7 +6045,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6058,7 +6061,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -6072,7 +6075,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6095,7 +6098,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6106,7 +6109,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "sp-arithmetic", @@ -6115,7 +6118,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6147,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6162,7 +6165,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6181,7 +6184,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-support", "frame-system", @@ -6197,7 +6200,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6212,7 +6215,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6223,7 +6226,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6240,7 +6243,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6255,7 +6258,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6271,7 +6274,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -6285,8 +6288,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "frame-system", @@ -6303,8 +6306,8 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-benchmarking", "frame-support", @@ -6356,7 +6359,7 @@ dependencies = [ "parachain-template-runtime", "parity-scale-codec", "polkadot-cli", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-service", "sc-basic-authorship", @@ -6431,7 +6434,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-runtime-common", "scale-info", "serde", @@ -6482,9 +6485,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.13" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a7901b85874402471e131de3332dde0e51f38432c69a3853627c8e25433048" +checksum = "2bb474d0ed0836e185cb998a6b140ed1073d1fbf27d690ecf9ede8030289382c" dependencies = [ "blake2-rfc", "crc32fast", @@ -6508,6 +6511,7 @@ dependencies = [ "arrayvec 0.7.2", "bitvec", "byte-slice-cast", + "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", @@ -6693,7 +6697,7 @@ dependencies = [ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-runtime-common", "scale-info", @@ -6856,8 +6860,8 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6871,8 +6875,8 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6885,8 +6889,8 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "derive_more", "fatality", @@ -6908,8 +6912,8 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "fatality", "futures", @@ -6929,8 +6933,8 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "clap 3.2.15", "frame-benchmarking-cli", @@ -6955,8 +6959,8 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -6995,8 +6999,8 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "always-assert", "fatality", @@ -7016,8 +7020,8 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7029,8 +7033,8 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "derive_more", "fatality", @@ -7052,8 +7056,8 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7066,8 +7070,8 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "futures-timer", @@ -7086,8 +7090,8 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "always-assert", "async-trait", @@ -7109,8 +7113,8 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "parity-scale-codec", @@ -7127,8 +7131,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bitvec", "derive_more", @@ -7156,8 +7160,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bitvec", "futures", @@ -7176,8 +7180,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bitvec", "fatality", @@ -7195,8 +7199,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7210,8 +7214,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "futures", @@ -7220,7 +7224,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -7228,8 +7232,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7243,8 +7247,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "futures-timer", @@ -7260,8 +7264,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "fatality", "futures", @@ -7279,8 +7283,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "futures", @@ -7296,8 +7300,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bitvec", "fatality", @@ -7314,8 +7318,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "always-assert", "assert_matches", @@ -7327,7 +7331,7 @@ dependencies = [ "pin-project", "polkadot-core-primitives", "polkadot-node-subsystem-util", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "rand 0.8.5", "rayon", "sc-executor", @@ -7346,8 +7350,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "polkadot-node-primitives", @@ -7362,8 +7366,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "futures", "memory-lru", @@ -7378,8 +7382,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-std", "lazy_static", @@ -7396,8 +7400,8 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bs58", "futures", @@ -7415,8 +7419,8 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "derive_more", @@ -7429,20 +7433,20 @@ dependencies = [ "rand 0.8.5", "sc-authority-discovery", "sc-network", - "strum 0.24.0", + "strum", "thiserror", "tracing-gum", ] [[package]] name = "polkadot-node-primitives" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bounded-vec", "futures", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "schnorrkel", "serde", @@ -7458,8 +7462,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7468,8 +7472,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "futures", @@ -7486,8 +7490,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "derive_more", @@ -7509,8 +7513,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "derive_more", @@ -7542,8 +7546,8 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "futures", @@ -7565,8 +7569,8 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "derive_more", "frame-support", @@ -7612,7 +7616,7 @@ dependencies = [ "parity-scale-codec", "penpal-runtime", "polkadot-cli", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-service", "rococo-parachain-runtime", @@ -7660,8 +7664,8 @@ dependencies = [ [[package]] name = "polkadot-performance-test" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7675,8 +7679,8 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bitvec", "frame-system", @@ -7684,7 +7688,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "scale-info", "serde", "sp-api", @@ -7705,8 +7709,8 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7737,8 +7741,8 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-primitives", "bitvec", @@ -7822,8 +7826,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-primitives", "bitvec", @@ -7869,8 +7873,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "polkadot-primitives", @@ -7881,8 +7885,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bs58", "parity-scale-codec", @@ -7893,8 +7897,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "bitflags", "bitvec", @@ -7936,8 +7940,8 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "async-trait", "beefy-gadget", @@ -7982,7 +7986,7 @@ dependencies = [ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", @@ -7999,7 +8003,6 @@ dependencies = [ "sc-consensus", "sc-consensus-babe", "sc-consensus-slots", - "sc-consensus-uncles", "sc-executor", "sc-finality-grandpa", "sc-keystore", @@ -8039,8 +8042,8 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8060,8 +8063,8 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8070,8 +8073,8 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8095,8 +8098,8 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-primitives", "bitvec", @@ -8123,7 +8126,7 @@ dependencies = [ "pallet-vesting", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8156,8 +8159,8 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-benchmarking", "frame-system", @@ -8169,7 +8172,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-common", @@ -8301,7 +8304,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8412,7 +8415,7 @@ dependencies = [ "bytes", "cfg-if 1.0.0", "cmake", - "heck 0.4.0", + "heck", "itertools", "lazy_static", "log", @@ -8744,7 +8747,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8777,12 +8780,6 @@ dependencies = [ "quick-error 1.2.3", ] -[[package]] -name = "retain_mut" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11000e6ba5020e53e7cc26f73b91ae7d5496b4977851479edb66b694c0675c21" - [[package]] name = "rfc6979" version = "0.1.0" @@ -8848,7 +8845,7 @@ dependencies = [ "parachain-info", "parachains-common", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "scale-info", "serde", "sp-api", @@ -8871,8 +8868,8 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8908,7 +8905,7 @@ dependencies = [ "pallet-utility", "pallet-xcm", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -8940,8 +8937,8 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "polkadot-primitives", @@ -9125,7 +9122,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "sp-core", @@ -9136,7 +9133,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -9163,7 +9160,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "futures-timer", @@ -9186,7 +9183,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9202,7 +9199,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9219,7 +9216,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9230,7 +9227,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "chrono", "clap 3.2.15", @@ -9269,7 +9266,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "fnv", "futures", @@ -9297,7 +9294,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "hash-db", "kvdb", @@ -9322,7 +9319,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -9346,7 +9343,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -9375,7 +9372,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "fork-tree", @@ -9388,7 +9385,6 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", "rand 0.7.3", - "retain_mut", "sc-client-api", "sc-consensus", "sc-consensus-epochs", @@ -9418,7 +9414,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "jsonrpsee", @@ -9440,7 +9436,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9453,7 +9449,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -9475,21 +9471,10 @@ dependencies = [ "thiserror", ] -[[package]] -name = "sc-consensus-uncles" -version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" -dependencies = [ - "sc-client-api", - "sp-authorship", - "sp-runtime", - "thiserror", -] - [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9516,7 +9501,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "environmental", "parity-scale-codec", @@ -9533,7 +9518,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "parity-scale-codec", @@ -9548,7 +9533,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9568,7 +9553,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "ahash", "async-trait", @@ -9609,7 +9594,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "finality-grandpa", "futures", @@ -9630,7 +9615,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "ansi_term", "futures", @@ -9647,7 +9632,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "hex", @@ -9662,7 +9647,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "asynchronous-codec", @@ -9711,7 +9696,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "bitflags", "futures", @@ -9729,7 +9714,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "ahash", "futures", @@ -9746,7 +9731,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "libp2p", @@ -9766,7 +9751,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "fork-tree", "futures", @@ -9793,7 +9778,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "bytes", "fnv", @@ -9821,7 +9806,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "libp2p", @@ -9834,7 +9819,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9843,7 +9828,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "hash-db", @@ -9873,7 +9858,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "jsonrpsee", @@ -9896,7 +9881,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "jsonrpsee", @@ -9909,7 +9894,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "directories", @@ -9976,7 +9961,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "parity-scale-codec", @@ -9990,7 +9975,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10009,7 +9994,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "libc", @@ -10028,7 +10013,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "chrono", "futures", @@ -10046,7 +10031,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "ansi_term", "atty", @@ -10077,7 +10062,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10088,7 +10073,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "futures-timer", @@ -10097,7 +10082,6 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "parking_lot 0.12.1", - "retain_mut", "sc-client-api", "sc-transaction-pool-api", "sc-utils", @@ -10115,7 +10099,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "log", @@ -10128,7 +10112,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "futures-timer", @@ -10222,18 +10206,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.21.3" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260" +checksum = "b7649a0b3ffb32636e60c7ce0d70511eda9c52c658cd0634e194d5a19943aeff" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.4.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036" +checksum = "7058dc8eaf3f2810d7828680320acda0b25a288f6d288e19278e249bbf74226b" dependencies = [ "cc", ] @@ -10572,8 +10556,8 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "enumn", "parity-scale-codec", @@ -10649,7 +10633,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "hash-db", "log", @@ -10666,7 +10650,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "blake2", "proc-macro-crate", @@ -10678,7 +10662,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10691,7 +10675,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "integer-sqrt", "num-traits", @@ -10706,7 +10690,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10719,7 +10703,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "parity-scale-codec", @@ -10731,7 +10715,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "sp-api", @@ -10743,7 +10727,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "log", @@ -10761,7 +10745,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -10780,7 +10764,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "parity-scale-codec", @@ -10798,7 +10782,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "merlin", @@ -10821,7 +10805,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10835,7 +10819,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10848,7 +10832,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "base58", "bitflags", @@ -10894,7 +10878,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "blake2", "byteorder", @@ -10908,7 +10892,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro2", "quote", @@ -10919,7 +10903,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10928,7 +10912,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro2", "quote", @@ -10938,7 +10922,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "environmental", "parity-scale-codec", @@ -10949,7 +10933,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "finality-grandpa", "log", @@ -10967,7 +10951,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10981,8 +10965,9 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ + "bytes", "futures", "hash-db", "libsecp256k1", @@ -11006,18 +10991,18 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "lazy_static", "sp-core", "sp-runtime", - "strum 0.23.0", + "strum", ] [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -11034,7 +11019,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "thiserror", "zstd", @@ -11043,7 +11028,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "parity-scale-codec", @@ -11058,7 +11043,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11072,7 +11057,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "sp-api", "sp-core", @@ -11082,7 +11067,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "backtrace", "lazy_static", @@ -11092,7 +11077,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "rustc-hash", "serde", @@ -11102,7 +11087,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "either", "hash256-std-hasher", @@ -11124,8 +11109,9 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ + "bytes", "impl-trait-for-tuples", "parity-scale-codec", "primitive-types", @@ -11141,7 +11127,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "Inflector", "proc-macro-crate", @@ -11153,7 +11139,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "parity-scale-codec", @@ -11167,7 +11153,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "serde", "serde_json", @@ -11176,7 +11162,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11190,7 +11176,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -11201,7 +11187,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "hash-db", "log", @@ -11223,12 +11209,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11241,7 +11227,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "log", "sp-core", @@ -11254,7 +11240,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures-timer", @@ -11270,7 +11256,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "sp-std", @@ -11282,7 +11268,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "sp-api", "sp-runtime", @@ -11291,7 +11277,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "log", @@ -11307,7 +11293,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "hash-db", "memory-db", @@ -11323,7 +11309,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11340,7 +11326,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11351,7 +11337,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "impl-trait-for-tuples", "log", @@ -11431,7 +11417,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-runtime-common", "scale-info", "serde", @@ -11496,7 +11482,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", @@ -11572,33 +11558,11 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "strum_macros 0.23.1", -] - -[[package]] -name = "strum" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96acfc1b70604b8b2f1ffa4c57e59176c7dbb05d556c71ecd2f5498a1dee7f8" -dependencies = [ - "strum_macros 0.24.0", -] - -[[package]] -name = "strum_macros" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" -dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "rustversion", - "syn", + "strum_macros", ] [[package]] @@ -11607,7 +11571,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6878079b17446e4d3eba6192bb0a2950d5b14f0ed8424b852310e5a94345d0ef" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -11630,7 +11594,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "platforms", ] @@ -11638,7 +11602,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11659,7 +11623,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures-util", "hyper", @@ -11672,7 +11636,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "jsonrpsee", "log", @@ -11693,7 +11657,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "async-trait", "futures", @@ -11719,7 +11683,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11729,7 +11693,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11740,14 +11704,14 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", "filetime", "sp-maybe-compressed-blob", - "strum 0.23.0", + "strum", "tempfile", "toml", "walkdir", @@ -11847,8 +11811,8 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "polkadot-primitives", @@ -12136,8 +12100,8 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12147,8 +12111,8 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12275,7 +12239,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#dbdbef95c84644328bee60bd170d79814c04e32b" +source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" dependencies = [ "clap 3.2.15", "jsonrpsee", @@ -12369,12 +12333,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" - [[package]] name = "unicode-width" version = "0.1.9" @@ -12858,8 +12816,8 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "beefy-primitives", "bitvec", @@ -12891,6 +12849,7 @@ dependencies = [ "pallet-multisig", "pallet-nomination-pools", "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", @@ -12912,7 +12871,7 @@ dependencies = [ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -12946,8 +12905,8 @@ dependencies = [ [[package]] name = "westend-runtime-constants" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "polkadot-primitives", @@ -12998,7 +12957,7 @@ dependencies = [ "parachains-common", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "polkadot-runtime-common", "scale-info", "serde", @@ -13230,8 +13189,8 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13244,15 +13203,15 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-support", "frame-system", "log", "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain 0.9.26", + "polkadot-parachain 0.9.27", "scale-info", "sp-arithmetic", "sp-io", @@ -13264,8 +13223,8 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.26" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "frame-benchmarking", "frame-support", @@ -13282,8 +13241,8 @@ dependencies = [ [[package]] name = "xcm-procedural" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#7e11707a55fcad806c71179c8cab6505cde65991" +version = "0.9.27" +source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" dependencies = [ "Inflector", "proc-macro2", diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index d7418b24a1..1512ab8acf 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" description = "Base pallet for cumulus-based parachains" [dependencies] +bytes = { version = "1.1.0", default-features = false } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" diff --git a/pallets/parachain-system/src/validate_block/implementation.rs b/pallets/parachain-system/src/validate_block/implementation.rs index ae361d8481..9acb76875d 100644 --- a/pallets/parachain-system/src/validate_block/implementation.rs +++ b/pallets/parachain-system/src/validate_block/implementation.rs @@ -205,8 +205,8 @@ fn host_storage_set(key: &[u8], value: &[u8]) { with_externalities(|ext| ext.place_storage(key.to_vec(), Some(value.to_vec()))) } -fn host_storage_get(key: &[u8]) -> Option> { - with_externalities(|ext| ext.storage(key).clone()) +fn host_storage_get(key: &[u8]) -> Option { + with_externalities(|ext| ext.storage(key).map(|value| value.into())) } fn host_storage_exists(key: &[u8]) -> bool { diff --git a/test/runtime/src/lib.rs b/test/runtime/src/lib.rs index 11d6494fc0..b6567887cd 100644 --- a/test/runtime/src/lib.rs +++ b/test/runtime/src/lib.rs @@ -347,7 +347,7 @@ pub struct TestOnRuntimeUpgrade; impl OnRuntimeUpgrade for TestOnRuntimeUpgrade { fn on_runtime_upgrade() -> frame_support::weights::Weight { - assert_eq!(sp_io::storage::get(TEST_RUNTIME_UPGRADE_KEY), Some(vec![1, 2, 3, 4])); + assert_eq!(sp_io::storage::get(TEST_RUNTIME_UPGRADE_KEY), Some(vec![1, 2, 3, 4].into())); 1 } From 1b9c8942cc2ded16991a9ebac9382d6b06b7dfe7 Mon Sep 17 00:00:00 2001 From: Mak Date: Fri, 29 Jul 2022 15:16:12 +0300 Subject: [PATCH 175/238] Integrate auto-updating parachain template on developer-hub (#1479) * Integrate auto-updating parachain template on developer-hub * Update .gitlab-ci.yml Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> --- .gitlab-ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eab592d70b..4d70121703 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -332,6 +332,20 @@ publish-benchmarks-s3: after_script: - aws s3 ls s3://${BUCKET}/${PREFIX}/ --recursive --human-readable --summarize +# Ref: https://github.com/paritytech/opstooling/issues/111 +update-parachain-template: + stage: publish + extends: .kubernetes-env + rules: + - if: $CI_COMMIT_REF_NAME =~ /^polkadot-v[0-9]+\.[0-9]+.*$/ # i.e. polkadot-v1.0.99, polkadot-v2.1rc1 + script: + - git clone --depth=1 --branch="$PIPELINE_SCRIPTS_TAG" https://github.com/paritytech/pipeline-scripts + - ./pipeline-scripts/update_substrate_template.sh + --repo-name "substrate-parachain-template" + --template-path "parachain-template" + --github-api-token "$GITHUB_TOKEN" + --polkadot-branch "$CI_COMMIT_REF_NAME" + #### stage: .post # This job cancels the whole pipeline if any of provided jobs fail. From 2e46edfa10f87811f8d576a32e7ecae857301546 Mon Sep 17 00:00:00 2001 From: Miguel Hervas Date: Fri, 29 Jul 2022 09:15:48 -0700 Subject: [PATCH 176/238] Adding TxVersion Check to signed params (#1483) --- parachains/runtimes/testing/rococo-parachain/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 48ddc716b2..05837b4464 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -570,6 +570,7 @@ pub type BlockId = generic::BlockId; pub type SignedExtra = ( frame_system::CheckNonZeroSender, frame_system::CheckSpecVersion, + frame_system::CheckTxVersion, frame_system::CheckGenesis, frame_system::CheckEra, frame_system::CheckNonce, From e69bca17be97728b231861eea3c5c440091ef146 Mon Sep 17 00:00:00 2001 From: ZhiYong Date: Sat, 30 Jul 2022 03:01:54 +0800 Subject: [PATCH 177/238] Companion for substrate#11690 (#1377) * Companion for substrate#11690 * Fix * Fix * update lockfile for {"substrate", "polkadot"} Co-authored-by: parity-processbot <> --- Cargo.lock | 496 +++++++++--------- .../runtimes/assets/statemine/src/lib.rs | 3 +- .../runtimes/assets/statemint/src/lib.rs | 3 +- .../runtimes/assets/westmint/src/lib.rs | 3 +- parachains/runtimes/testing/penpal/src/lib.rs | 3 +- 5 files changed, 257 insertions(+), 251 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 01ec181c94..ba5356c194 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,8 +432,9 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ + "async-trait", "beefy-primitives", "fnv", "futures", @@ -444,6 +445,7 @@ dependencies = [ "parking_lot 0.12.1", "sc-chain-spec", "sc-client-api", + "sc-consensus", "sc-finality-grandpa", "sc-keystore", "sc-network", @@ -466,7 +468,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -486,7 +488,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "beefy-primitives", "sp-api", @@ -495,7 +497,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -2674,7 +2676,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", ] @@ -2692,7 +2694,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -2714,7 +2716,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "Inflector", "chrono", @@ -2765,7 +2767,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2776,7 +2778,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2792,7 +2794,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -2820,7 +2822,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bitflags", "frame-metadata", @@ -2850,7 +2852,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2862,7 +2864,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2874,7 +2876,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro2", "quote", @@ -2884,7 +2886,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "log", @@ -2901,7 +2903,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -2916,7 +2918,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "sp-api", @@ -2925,7 +2927,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "sp-api", @@ -3793,7 +3795,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-primitives", "bitvec", @@ -3886,7 +3888,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "polkadot-primitives", @@ -5243,7 +5245,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "dyn-clonable", @@ -5259,7 +5261,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "expander 0.0.6", "itertools", @@ -5297,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5314,7 +5316,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5328,7 +5330,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5344,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5360,7 +5362,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5375,7 +5377,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5399,7 +5401,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5419,7 +5421,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5434,7 +5436,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "beefy-primitives", "frame-support", @@ -5450,7 +5452,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5473,7 +5475,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5491,7 +5493,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5536,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5553,7 +5555,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bitflags", "frame-benchmarking", @@ -5581,7 +5583,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bitflags", "parity-scale-codec", @@ -5596,7 +5598,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro2", "quote", @@ -5606,7 +5608,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5623,7 +5625,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5636,7 +5638,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5652,7 +5654,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5675,7 +5677,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5688,7 +5690,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5706,7 +5708,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5721,7 +5723,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5744,7 +5746,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5760,7 +5762,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5780,7 +5782,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5797,7 +5799,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5814,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5832,7 +5834,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5847,7 +5849,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5862,7 +5864,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5879,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5898,7 +5900,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "sp-api", @@ -5908,7 +5910,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5925,7 +5927,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5948,7 +5950,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5964,7 +5966,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -5979,7 +5981,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -5993,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6008,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6024,7 +6026,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -6045,7 +6047,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6061,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -6075,7 +6077,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6098,7 +6100,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6109,7 +6111,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "sp-arithmetic", @@ -6118,7 +6120,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -6147,7 +6149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6165,7 +6167,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6184,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-support", "frame-system", @@ -6200,7 +6202,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6215,7 +6217,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6226,7 +6228,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6243,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6258,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6274,7 +6276,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-benchmarking", "frame-support", @@ -6289,7 +6291,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "frame-system", @@ -6307,7 +6309,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-benchmarking", "frame-support", @@ -6861,7 +6863,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6876,7 +6878,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6890,7 +6892,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "derive_more", "fatality", @@ -6913,7 +6915,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "fatality", "futures", @@ -6934,7 +6936,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "clap 3.2.15", "frame-benchmarking-cli", @@ -6960,7 +6962,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7000,7 +7002,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "always-assert", "fatality", @@ -7021,7 +7023,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7034,7 +7036,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "derive_more", "fatality", @@ -7057,7 +7059,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7071,7 +7073,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "futures-timer", @@ -7091,7 +7093,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "always-assert", "async-trait", @@ -7114,7 +7116,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "parity-scale-codec", @@ -7132,7 +7134,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bitvec", "derive_more", @@ -7161,7 +7163,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bitvec", "futures", @@ -7181,7 +7183,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bitvec", "fatality", @@ -7200,7 +7202,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7215,7 +7217,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "futures", @@ -7233,7 +7235,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7248,7 +7250,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "futures-timer", @@ -7265,7 +7267,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "fatality", "futures", @@ -7284,7 +7286,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "futures", @@ -7301,7 +7303,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bitvec", "fatality", @@ -7319,7 +7321,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "always-assert", "assert_matches", @@ -7351,7 +7353,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "polkadot-node-primitives", @@ -7367,7 +7369,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "futures", "memory-lru", @@ -7383,7 +7385,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-std", "lazy_static", @@ -7401,7 +7403,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bs58", "futures", @@ -7420,7 +7422,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "derive_more", @@ -7441,7 +7443,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bounded-vec", "futures", @@ -7463,7 +7465,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7473,7 +7475,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "futures", @@ -7491,7 +7493,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "derive_more", @@ -7514,7 +7516,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "derive_more", @@ -7547,7 +7549,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "futures", @@ -7570,7 +7572,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "derive_more", "frame-support", @@ -7665,7 +7667,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7680,7 +7682,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bitvec", "frame-system", @@ -7710,7 +7712,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7742,7 +7744,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-primitives", "bitvec", @@ -7827,7 +7829,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-primitives", "bitvec", @@ -7874,7 +7876,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "polkadot-primitives", @@ -7886,7 +7888,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bs58", "parity-scale-codec", @@ -7898,7 +7900,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "bitflags", "bitvec", @@ -7941,7 +7943,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "async-trait", "beefy-gadget", @@ -8043,7 +8045,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8064,7 +8066,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8074,7 +8076,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8099,7 +8101,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-primitives", "bitvec", @@ -8160,7 +8162,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-benchmarking", "frame-system", @@ -8304,7 +8306,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8747,7 +8749,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8869,7 +8871,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8938,7 +8940,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "polkadot-primitives", @@ -9122,7 +9124,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "sp-core", @@ -9133,7 +9135,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -9160,7 +9162,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "futures-timer", @@ -9183,7 +9185,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9199,7 +9201,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9216,7 +9218,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9227,7 +9229,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "chrono", "clap 3.2.15", @@ -9266,7 +9268,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "fnv", "futures", @@ -9294,7 +9296,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "hash-db", "kvdb", @@ -9319,7 +9321,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -9343,7 +9345,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -9372,7 +9374,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "fork-tree", @@ -9414,7 +9416,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "jsonrpsee", @@ -9436,7 +9438,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9449,7 +9451,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -9474,7 +9476,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9501,7 +9503,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "environmental", "parity-scale-codec", @@ -9518,7 +9520,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "parity-scale-codec", @@ -9533,7 +9535,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9553,7 +9555,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "ahash", "async-trait", @@ -9594,7 +9596,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "finality-grandpa", "futures", @@ -9615,7 +9617,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "ansi_term", "futures", @@ -9632,7 +9634,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "hex", @@ -9647,7 +9649,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "asynchronous-codec", @@ -9696,7 +9698,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bitflags", "futures", @@ -9714,7 +9716,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "ahash", "futures", @@ -9731,7 +9733,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "libp2p", @@ -9751,7 +9753,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "fork-tree", "futures", @@ -9778,7 +9780,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bytes", "fnv", @@ -9806,7 +9808,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "libp2p", @@ -9819,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9828,7 +9830,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "hash-db", @@ -9858,7 +9860,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "jsonrpsee", @@ -9881,7 +9883,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "jsonrpsee", @@ -9894,7 +9896,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "directories", @@ -9961,7 +9963,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "parity-scale-codec", @@ -9975,7 +9977,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -9994,7 +9996,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "libc", @@ -10013,7 +10015,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "chrono", "futures", @@ -10031,7 +10033,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "ansi_term", "atty", @@ -10062,7 +10064,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10073,7 +10075,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "futures-timer", @@ -10099,7 +10101,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "log", @@ -10112,7 +10114,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "futures-timer", @@ -10557,7 +10559,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "enumn", "parity-scale-codec", @@ -10633,7 +10635,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "hash-db", "log", @@ -10650,7 +10652,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "blake2", "proc-macro-crate", @@ -10662,7 +10664,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -10675,7 +10677,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "integer-sqrt", "num-traits", @@ -10690,7 +10692,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -10703,7 +10705,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "parity-scale-codec", @@ -10715,7 +10717,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "sp-api", @@ -10727,7 +10729,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "log", @@ -10745,7 +10747,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -10764,7 +10766,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "parity-scale-codec", @@ -10782,7 +10784,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "merlin", @@ -10805,7 +10807,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -10819,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -10832,7 +10834,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "base58", "bitflags", @@ -10878,7 +10880,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "blake2", "byteorder", @@ -10892,7 +10894,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro2", "quote", @@ -10903,7 +10905,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10912,7 +10914,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro2", "quote", @@ -10922,7 +10924,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "environmental", "parity-scale-codec", @@ -10933,7 +10935,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "finality-grandpa", "log", @@ -10951,7 +10953,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10965,7 +10967,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bytes", "futures", @@ -10991,7 +10993,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "lazy_static", "sp-core", @@ -11002,7 +11004,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -11019,7 +11021,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "thiserror", "zstd", @@ -11028,7 +11030,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "parity-scale-codec", @@ -11043,7 +11045,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -11057,7 +11059,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "sp-api", "sp-core", @@ -11067,7 +11069,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "backtrace", "lazy_static", @@ -11077,7 +11079,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "rustc-hash", "serde", @@ -11087,7 +11089,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "either", "hash256-std-hasher", @@ -11109,7 +11111,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11127,7 +11129,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "Inflector", "proc-macro-crate", @@ -11139,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "parity-scale-codec", @@ -11153,7 +11155,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "serde", "serde_json", @@ -11162,7 +11164,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -11176,7 +11178,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "scale-info", @@ -11187,7 +11189,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "hash-db", "log", @@ -11209,12 +11211,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11227,7 +11229,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "log", "sp-core", @@ -11240,7 +11242,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures-timer", @@ -11256,7 +11258,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "sp-std", @@ -11268,7 +11270,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "sp-api", "sp-runtime", @@ -11277,7 +11279,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "log", @@ -11293,7 +11295,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "hash-db", "memory-db", @@ -11309,7 +11311,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11326,7 +11328,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11337,7 +11339,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "impl-trait-for-tuples", "log", @@ -11594,7 +11596,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "platforms", ] @@ -11602,7 +11604,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11623,7 +11625,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures-util", "hyper", @@ -11636,7 +11638,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "jsonrpsee", "log", @@ -11657,7 +11659,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "async-trait", "futures", @@ -11683,7 +11685,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11693,7 +11695,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11704,7 +11706,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "ansi_term", "build-helper", @@ -11812,7 +11814,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "polkadot-primitives", @@ -12101,7 +12103,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12112,7 +12114,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12239,7 +12241,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3ca8a42954e284bfb8771ed93d37cced3a7809b9" +source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" dependencies = [ "clap 3.2.15", "jsonrpsee", @@ -12817,7 +12819,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "beefy-primitives", "bitvec", @@ -12906,7 +12908,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "polkadot-primitives", @@ -13190,7 +13192,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13204,7 +13206,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-support", "frame-system", @@ -13224,7 +13226,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "frame-benchmarking", "frame-support", @@ -13242,7 +13244,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#07823ee85f5c874ef16d6284b46eb681f675acbe" +source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ "Inflector", "proc-macro2", diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index 4fcca9f329..6d86288ce3 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -502,6 +502,7 @@ impl pallet_collator_selection::Config for Runtime { } impl pallet_asset_tx_payment::Config for Runtime { + type Event = Event; type Fungibles = Assets; type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter< pallet_assets::BalanceToAssetBalance, @@ -560,7 +561,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, - AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, + AssetTxPayment: pallet_asset_tx_payment::{Pallet, Event} = 12, // Collator support. the order of these 5 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 3184f37e76..0033e6b5f0 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -532,6 +532,7 @@ impl pallet_collator_selection::Config for Runtime { } impl pallet_asset_tx_payment::Config for Runtime { + type Event = Event; type Fungibles = Assets; type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter< pallet_assets::BalanceToAssetBalance, @@ -590,7 +591,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, - AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, + AssetTxPayment: pallet_asset_tx_payment::{Pallet, Event} = 12, // Collator support. the order of these 5 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index f02013bef7..494c0cc38c 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -492,6 +492,7 @@ impl pallet_collator_selection::Config for Runtime { } impl pallet_asset_tx_payment::Config for Runtime { + type Event = Event; type Fungibles = Assets; type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter< pallet_assets::BalanceToAssetBalance, @@ -550,7 +551,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, - AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, + AssetTxPayment: pallet_asset_tx_payment::{Pallet, Event} = 12, // Collator support. the order of these 5 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, diff --git a/parachains/runtimes/testing/penpal/src/lib.rs b/parachains/runtimes/testing/penpal/src/lib.rs index bd37a22011..faf12f783f 100644 --- a/parachains/runtimes/testing/penpal/src/lib.rs +++ b/parachains/runtimes/testing/penpal/src/lib.rs @@ -504,6 +504,7 @@ impl pallet_collator_selection::Config for Runtime { } impl pallet_asset_tx_payment::Config for Runtime { + type Event = Event; type Fungibles = Assets; type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter< pallet_assets::BalanceToAssetBalance, @@ -534,7 +535,7 @@ construct_runtime!( // Monetary stuff. Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, - AssetTxPayment: pallet_asset_tx_payment::{Pallet} = 12, + AssetTxPayment: pallet_asset_tx_payment::{Pallet, Event} = 12, // Collator support. The order of these 4 are important and shall not change. Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, From 007ec5b796d6ffcc0fae1fb99264705243df0c0f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:00:57 +0200 Subject: [PATCH 178/238] Bump bytes from 1.1.0 to 1.2.0 (#1485) Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.1.0 to 1.2.0. - [Release notes](https://github.com/tokio-rs/bytes/releases) - [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/bytes/compare/v1.1.0...v1.2.0) --- updated-dependencies: - dependency-name: bytes dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba5356c194..067ce40f97 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -737,9 +737,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" [[package]] name = "bzip2-sys" diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 1512ab8acf..e115eb88b3 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" description = "Base pallet for cumulus-based parachains" [dependencies] -bytes = { version = "1.1.0", default-features = false } +bytes = { version = "1.2.0", default-features = false } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" From 46eb9797b496fd197bb994338a97217dfeaa7bf5 Mon Sep 17 00:00:00 2001 From: Sergej Sakac <73715684+Szegoo@users.noreply.github.com> Date: Sun, 31 Jul 2022 13:23:53 +0200 Subject: [PATCH 179/238] companion for #11796 (#1460) * companion for #11796 * fix * ".git/.scripts/bench-bot.sh" pallet statemint assets pallet_uniques * ".git/.scripts/bench-bot.sh" pallet statemine assets pallet_uniques * ".git/.scripts/bench-bot.sh" pallet westmint assets pallet_uniques * fix * update sp-io * update lockfile for {"polkadot", "substrate"} Co-authored-by: command-bot <> --- Cargo.lock | 360 +++++++++--------- .../statemine/src/weights/pallet_uniques.rs | 126 +++--- .../statemint/src/weights/pallet_uniques.rs | 126 +++--- .../westmint/src/weights/pallet_uniques.rs | 126 +++--- 4 files changed, 399 insertions(+), 339 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 067ce40f97..2ef6fef863 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "beefy-primitives", @@ -468,7 +468,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -488,7 +488,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "beefy-primitives", "sp-api", @@ -497,7 +497,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -2676,7 +2676,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", ] @@ -2694,7 +2694,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -2716,7 +2716,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "Inflector", "chrono", @@ -2767,7 +2767,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2778,7 +2778,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2794,7 +2794,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -2822,7 +2822,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bitflags", "frame-metadata", @@ -2852,7 +2852,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2864,7 +2864,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2876,7 +2876,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro2", "quote", @@ -2886,7 +2886,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "log", @@ -2903,7 +2903,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -2918,7 +2918,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "sp-api", @@ -2927,7 +2927,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "sp-api", @@ -5173,9 +5173,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", "libm", @@ -5299,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5316,7 +5316,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5330,7 +5330,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5346,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5362,7 +5362,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5377,7 +5377,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5401,7 +5401,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5421,7 +5421,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5436,7 +5436,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "beefy-primitives", "frame-support", @@ -5452,7 +5452,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5475,7 +5475,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5493,7 +5493,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5538,7 +5538,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5555,7 +5555,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bitflags", "frame-benchmarking", @@ -5583,7 +5583,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bitflags", "parity-scale-codec", @@ -5598,7 +5598,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro2", "quote", @@ -5608,7 +5608,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5625,7 +5625,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5638,7 +5638,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5654,7 +5654,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5677,7 +5677,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5690,7 +5690,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5708,7 +5708,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5723,7 +5723,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5746,7 +5746,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5762,7 +5762,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5782,7 +5782,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5799,7 +5799,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5816,7 +5816,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5834,7 +5834,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5849,7 +5849,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5864,7 +5864,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5881,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5900,7 +5900,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "sp-api", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5927,7 +5927,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5950,7 +5950,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5966,7 +5966,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -5981,7 +5981,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -5995,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6010,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6026,7 +6026,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -6047,7 +6047,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6063,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -6077,7 +6077,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6100,7 +6100,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6111,7 +6111,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "sp-arithmetic", @@ -6120,7 +6120,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -6149,7 +6149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6167,7 +6167,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6186,7 +6186,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-support", "frame-system", @@ -6202,7 +6202,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6217,7 +6217,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6228,7 +6228,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6245,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6260,7 +6260,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -6276,7 +6276,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-benchmarking", "frame-support", @@ -8749,7 +8749,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9124,7 +9124,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "sp-core", @@ -9135,7 +9135,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -9162,7 +9162,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "futures-timer", @@ -9185,7 +9185,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9201,7 +9201,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9218,7 +9218,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9229,7 +9229,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "chrono", "clap 3.2.15", @@ -9268,7 +9268,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "fnv", "futures", @@ -9296,7 +9296,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "hash-db", "kvdb", @@ -9321,7 +9321,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -9345,7 +9345,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -9374,7 +9374,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "fork-tree", @@ -9416,7 +9416,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "jsonrpsee", @@ -9438,7 +9438,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9451,7 +9451,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -9476,7 +9476,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9503,7 +9503,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "environmental", "parity-scale-codec", @@ -9520,7 +9520,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "parity-scale-codec", @@ -9535,7 +9535,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9555,7 +9555,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "ahash", "async-trait", @@ -9596,7 +9596,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "finality-grandpa", "futures", @@ -9617,7 +9617,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "ansi_term", "futures", @@ -9634,7 +9634,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "hex", @@ -9649,7 +9649,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "asynchronous-codec", @@ -9698,7 +9698,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bitflags", "futures", @@ -9716,7 +9716,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "ahash", "futures", @@ -9733,7 +9733,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "libp2p", @@ -9753,7 +9753,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "fork-tree", "futures", @@ -9780,7 +9780,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bytes", "fnv", @@ -9808,7 +9808,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "libp2p", @@ -9821,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9830,7 +9830,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "hash-db", @@ -9860,7 +9860,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "jsonrpsee", @@ -9883,7 +9883,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "jsonrpsee", @@ -9896,7 +9896,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "directories", @@ -9963,7 +9963,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "parity-scale-codec", @@ -9977,7 +9977,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -9996,7 +9996,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "libc", @@ -10015,7 +10015,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "chrono", "futures", @@ -10033,7 +10033,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "ansi_term", "atty", @@ -10064,7 +10064,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10075,7 +10075,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "futures-timer", @@ -10101,7 +10101,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "log", @@ -10114,7 +10114,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "futures-timer", @@ -10635,7 +10635,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "hash-db", "log", @@ -10652,7 +10652,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "blake2", "proc-macro-crate", @@ -10664,7 +10664,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -10677,7 +10677,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "integer-sqrt", "num-traits", @@ -10692,7 +10692,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -10705,7 +10705,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "parity-scale-codec", @@ -10717,7 +10717,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "sp-api", @@ -10729,7 +10729,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "log", @@ -10747,7 +10747,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -10766,7 +10766,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "parity-scale-codec", @@ -10784,7 +10784,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "merlin", @@ -10807,7 +10807,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -10821,7 +10821,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -10834,7 +10834,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "base58", "bitflags", @@ -10880,7 +10880,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "blake2", "byteorder", @@ -10894,7 +10894,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro2", "quote", @@ -10905,7 +10905,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10914,7 +10914,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro2", "quote", @@ -10924,7 +10924,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "environmental", "parity-scale-codec", @@ -10935,7 +10935,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "finality-grandpa", "log", @@ -10953,7 +10953,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10967,7 +10967,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bytes", "futures", @@ -10993,7 +10993,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "lazy_static", "sp-core", @@ -11004,7 +11004,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -11021,7 +11021,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "thiserror", "zstd", @@ -11030,7 +11030,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "parity-scale-codec", @@ -11045,7 +11045,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -11059,7 +11059,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "sp-api", "sp-core", @@ -11069,7 +11069,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "backtrace", "lazy_static", @@ -11079,7 +11079,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "rustc-hash", "serde", @@ -11089,7 +11089,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "either", "hash256-std-hasher", @@ -11111,7 +11111,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11129,7 +11129,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "Inflector", "proc-macro-crate", @@ -11141,7 +11141,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "parity-scale-codec", @@ -11155,7 +11155,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "serde", "serde_json", @@ -11164,7 +11164,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -11178,7 +11178,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "scale-info", @@ -11189,7 +11189,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "hash-db", "log", @@ -11211,12 +11211,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11229,7 +11229,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "log", "sp-core", @@ -11242,7 +11242,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures-timer", @@ -11258,7 +11258,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "sp-std", @@ -11270,7 +11270,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "sp-api", "sp-runtime", @@ -11279,7 +11279,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "log", @@ -11295,7 +11295,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "hash-db", "memory-db", @@ -11311,7 +11311,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11328,7 +11328,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11339,7 +11339,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "impl-trait-for-tuples", "log", @@ -11596,7 +11596,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "platforms", ] @@ -11604,7 +11604,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11625,7 +11625,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures-util", "hyper", @@ -11638,7 +11638,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "jsonrpsee", "log", @@ -11659,7 +11659,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "async-trait", "futures", @@ -11685,7 +11685,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11695,7 +11695,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11706,7 +11706,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "ansi_term", "build-helper", @@ -12241,7 +12241,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3e0554a94193c1221c6bf12c7efabc25e2d63404" +source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "clap 3.2.15", "jsonrpsee", diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs index 6dd19eebae..376a44ab79 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs @@ -17,23 +17,25 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-07-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// /home/benchbot/cargo_target_dir/production/polkadot-parachain // benchmark // pallet -// --chain=statemine-dev -// --execution=wasm -// --wasm-execution=compiled -// --pallet=pallet_uniques -// --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --pallet=pallet_uniques +// --chain=statemine-dev +// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/cumulus/.git/.artifacts/bench.json // --header=./file_header.txt -// --output=./parachains/runtimes/assets/statemine/src/weights +// --output=./parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,19 +47,21 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_uniques`. pub struct WeightInfo(PhantomData); impl pallet_uniques::WeightInfo for WeightInfo { + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (23_692_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (30_418_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (13_308_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (19_165_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) @@ -65,18 +69,22 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Attribute (r:0 w:1000) // Storage: Uniques ClassMetadataOf (r:0 w:1) // Storage: Uniques InstanceMetadataOf (r:0 w:1000) + // Storage: Uniques CollectionMaxSupply (r:0 w:1) // Storage: Uniques Account (r:0 w:20) + /// The range of component `n` is `[0, 1000]`. + /// The range of component `m` is `[0, 1000]`. + /// The range of component `a` is `[0, 1000]`. fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 17_000 - .saturating_add((9_675_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 17_000 - .saturating_add((975_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 17_000 - .saturating_add((860_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 19_000 + .saturating_add((11_040_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 19_000 + .saturating_add((1_591_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 19_000 + .saturating_add((1_553_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(m as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(a as Weight))) @@ -86,32 +94,35 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (31_547_000 as Weight) + (37_027_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:1) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn burn() -> Weight { - (30_845_000 as Weight) + (37_408_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn transfer() -> Weight { - (23_188_000 as Weight) + (29_003_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:100 w:100) + /// The range of component `i` is `[0, 5000]`. fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 13_000 - .saturating_add((12_385_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 17_000 + .saturating_add((13_243_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -120,26 +131,26 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (18_475_000 as Weight) + (22_186_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (18_166_000 as Weight) + (22_351_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (13_385_000 as Weight) + (17_528_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (13_377_000 as Weight) + (17_530_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -147,20 +158,20 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (20_471_000 as Weight) + (25_794_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (13_902_000 as Weight) + (18_102_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (16_642_000 as Weight) + (21_774_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -168,7 +179,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (37_957_000 as Weight) + (42_889_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -176,77 +187,86 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (35_937_000 as Weight) + (41_233_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (30_125_000 as Weight) + (34_201_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (29_919_000 as Weight) + (35_387_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (28_912_000 as Weight) + (34_499_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (26_897_000 as Weight) + (32_426_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (19_927_000 as Weight) + (23_660_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (19_894_000 as Weight) + (23_711_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (17_053_000 as Weight) + (21_147_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn set_collection_max_supply() -> Weight { - (16_929_000 as Weight) + (20_939_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + fn try_increment_id() -> Weight { + (19_318_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn set_price() -> Weight { - (16_929_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + (20_073_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques ItemPriceOf (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + // Storage: Uniques Account (r:0 w:2) fn buy_item() -> Weight { - (16_929_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (39_849_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs index ca35bdf945..340d2a967f 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs @@ -17,23 +17,25 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-07-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// /home/benchbot/cargo_target_dir/production/polkadot-parachain // benchmark // pallet -// --chain=statemint-dev -// --execution=wasm -// --wasm-execution=compiled -// --pallet=pallet_uniques -// --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --pallet=pallet_uniques +// --chain=statemint-dev +// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/cumulus/.git/.artifacts/bench.json // --header=./file_header.txt -// --output=./parachains/runtimes/assets/statemint/src/weights +// --output=./parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,19 +47,21 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_uniques`. pub struct WeightInfo(PhantomData); impl pallet_uniques::WeightInfo for WeightInfo { + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (22_749_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (29_281_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (13_806_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (18_557_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) @@ -65,18 +69,22 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Attribute (r:0 w:1000) // Storage: Uniques ClassMetadataOf (r:0 w:1) // Storage: Uniques InstanceMetadataOf (r:0 w:1000) + // Storage: Uniques CollectionMaxSupply (r:0 w:1) // Storage: Uniques Account (r:0 w:20) + /// The range of component `n` is `[0, 1000]`. + /// The range of component `m` is `[0, 1000]`. + /// The range of component `a` is `[0, 1000]`. fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 16_000 - .saturating_add((9_523_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 16_000 - .saturating_add((1_015_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 16_000 - .saturating_add((957_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 18_000 + .saturating_add((10_816_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 18_000 + .saturating_add((1_732_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 18_000 + .saturating_add((1_442_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(m as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(a as Weight))) @@ -86,32 +94,35 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (31_084_000 as Weight) + (35_779_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:1) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn burn() -> Weight { - (30_007_000 as Weight) + (36_526_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn transfer() -> Weight { - (23_247_000 as Weight) + (28_542_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:100 w:100) + /// The range of component `i` is `[0, 5000]`. fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 12_000 - .saturating_add((12_143_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 17_000 + .saturating_add((12_725_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -120,26 +131,26 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (17_750_000 as Weight) + (21_639_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (17_991_000 as Weight) + (21_492_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (13_329_000 as Weight) + (16_979_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (13_084_000 as Weight) + (17_112_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -147,20 +158,20 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (20_520_000 as Weight) + (25_141_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (13_873_000 as Weight) + (17_566_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (15_979_000 as Weight) + (20_435_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -168,7 +179,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (37_161_000 as Weight) + (42_154_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -176,77 +187,86 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (35_578_000 as Weight) + (40_247_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (29_693_000 as Weight) + (34_154_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (29_248_000 as Weight) + (34_669_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (28_479_000 as Weight) + (33_074_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (26_495_000 as Weight) + (31_386_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (19_533_000 as Weight) + (23_487_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (19_479_000 as Weight) + (23_421_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (16_551_000 as Weight) + (20_865_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn set_collection_max_supply() -> Weight { - (16_254_000 as Weight) + (20_451_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + fn try_increment_id() -> Weight { + (18_496_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn set_price() -> Weight { - (16_254_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + (19_952_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques ItemPriceOf (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + // Storage: Uniques Account (r:0 w:2) fn buy_item() -> Weight { - (16_254_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (39_750_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs index ab14a7b7fc..fcdccf6df2 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs @@ -17,23 +17,25 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-07-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// /home/benchbot/cargo_target_dir/production/polkadot-parachain // benchmark // pallet -// --chain=westmint-dev -// --execution=wasm -// --wasm-execution=compiled -// --pallet=pallet_uniques -// --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --pallet=pallet_uniques +// --chain=westmint-dev +// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/cumulus/.git/.artifacts/bench.json // --header=./file_header.txt -// --output=./parachains/runtimes/assets/westmint/src/weights +// --output=./parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -45,19 +47,21 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_uniques`. pub struct WeightInfo(PhantomData); impl pallet_uniques::WeightInfo for WeightInfo { + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (23_011_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (30_771_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (12_898_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (18_993_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) @@ -65,18 +69,22 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Attribute (r:0 w:1000) // Storage: Uniques ClassMetadataOf (r:0 w:1) // Storage: Uniques InstanceMetadataOf (r:0 w:1000) + // Storage: Uniques CollectionMaxSupply (r:0 w:1) // Storage: Uniques Account (r:0 w:20) + /// The range of component `n` is `[0, 1000]`. + /// The range of component `m` is `[0, 1000]`. + /// The range of component `a` is `[0, 1000]`. fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 15_000 - .saturating_add((9_683_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 15_000 - .saturating_add((921_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 15_000 - .saturating_add((800_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 17_000 + .saturating_add((10_708_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 17_000 + .saturating_add((1_670_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 17_000 + .saturating_add((1_553_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(m as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(a as Weight))) @@ -86,32 +94,35 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (31_760_000 as Weight) + (36_089_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:1) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn burn() -> Weight { - (30_857_000 as Weight) + (37_263_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn transfer() -> Weight { - (23_536_000 as Weight) + (28_354_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:100 w:100) + /// The range of component `i` is `[0, 5000]`. fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 12_000 - .saturating_add((12_171_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 17_000 + .saturating_add((12_931_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -120,26 +131,26 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (18_224_000 as Weight) + (21_319_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (17_667_000 as Weight) + (21_919_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (13_398_000 as Weight) + (17_073_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (13_278_000 as Weight) + (17_076_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -147,20 +158,20 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (20_275_000 as Weight) + (25_188_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (13_910_000 as Weight) + (17_702_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (16_235_000 as Weight) + (20_148_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -168,7 +179,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (36_968_000 as Weight) + (40_678_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -176,77 +187,86 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (34_767_000 as Weight) + (38_881_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (29_045_000 as Weight) + (33_625_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (29_331_000 as Weight) + (34_391_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (28_240_000 as Weight) + (33_073_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (26_270_000 as Weight) + (31_404_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (19_122_000 as Weight) + (22_265_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (18_930_000 as Weight) + (23_219_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (16_708_000 as Weight) + (20_645_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn set_collection_max_supply() -> Weight { - (16_300_000 as Weight) + (20_020_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + fn try_increment_id() -> Weight { + (18_647_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: Uniques ItemPriceOf (r:0 w:1) fn set_price() -> Weight { - (16_300_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) + (19_627_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Uniques CollectionMaxSupply (r:1 w:1) + // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques ItemPriceOf (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + // Storage: Uniques Account (r:0 w:2) fn buy_item() -> Weight { - (16_300_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + (39_671_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } } From b6a2a38c91fa07ebd49655d0e4928b395c4afa2c Mon Sep 17 00:00:00 2001 From: Sebastian Kunert Date: Mon, 1 Aug 2022 12:08:57 +0200 Subject: [PATCH 180/238] Introduce RPC Worker (#1462) * Extract json-rpc-client and introduce worker * Initial rpc worker * Add error handling * Use bounded channels for listeners * Improve naming and clean up * Use tracing channels * Improve code readability * Decrease channel size limit * Remove unused dependency * Fix docs * RPC -> Rpc * Start worker in initialization method * Print error in case a distribution channel is full * Fix docs * Make `RpcStreamWorker` private Co-authored-by: Davide Galassi * Use tokio channels and add TODO item * Remove `Option` from `to_worker_channel` Co-authored-by: Davide Galassi --- Cargo.lock | 1 + client/relay-chain-interface/src/lib.rs | 8 +- client/relay-chain-rpc-interface/Cargo.toml | 1 + client/relay-chain-rpc-interface/src/lib.rs | 308 +----------- .../src/rpc_client.rs | 466 ++++++++++++++++++ parachain-template/node/src/service.rs | 8 +- polkadot-parachain/src/service.rs | 8 +- test/service/src/lib.rs | 5 +- 8 files changed, 503 insertions(+), 302 deletions(-) create mode 100644 client/relay-chain-rpc-interface/src/rpc_client.rs diff --git a/Cargo.lock b/Cargo.lock index 2ef6fef863..f8b081cf72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1958,6 +1958,7 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-storage", + "tokio", "tracing", "url", ] diff --git a/client/relay-chain-interface/src/lib.rs b/client/relay-chain-interface/src/lib.rs index 119721adec..91cfb531b7 100644 --- a/client/relay-chain-interface/src/lib.rs +++ b/client/relay-chain-interface/src/lib.rs @@ -29,7 +29,7 @@ use sc_client_api::StorageProof; use futures::Stream; use async_trait::async_trait; -use jsonrpsee_core::Error as JsonRPSeeError; +use jsonrpsee_core::Error as JsonRpcError; use parity_scale_codec::Error as CodecError; use sp_api::ApiError; use sp_state_machine::StorageValue; @@ -51,9 +51,11 @@ pub enum RelayChainError { #[error("State machine error occured: {0}")] StateMachineError(Box), #[error("Unable to call RPC method '{0}' due to error: {1}")] - RPCCallError(String, JsonRPSeeError), + RpcCallError(String, JsonRpcError), #[error("RPC Error: '{0}'")] - JsonRPCError(#[from] JsonRPSeeError), + JsonRpcError(#[from] JsonRpcError), + #[error("Unable to reach RpcStreamWorker: {0}")] + WorkerCommunicationError(String), #[error("Scale codec deserialization error: {0}")] DeserializationError(CodecError), #[error("Scale codec deserialization error: {0}")] diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index d7b6009dc9..3bae31b7fe 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -18,6 +18,7 @@ sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = " sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +tokio = { version = "1.19.2", features = ["sync"] } futures = "0.3.21" futures-timer = "3.0.2" diff --git a/client/relay-chain-rpc-interface/src/lib.rs b/client/relay-chain-rpc-interface/src/lib.rs index 9f84e43769..f295c693ec 100644 --- a/client/relay-chain-rpc-interface/src/lib.rs +++ b/client/relay-chain-rpc-interface/src/lib.rs @@ -15,7 +15,6 @@ // along with Cumulus. If not, see . use async_trait::async_trait; -use backoff::{future::retry_notify, ExponentialBackoff}; use core::time::Duration; use cumulus_primitives_core::{ relay_chain::{ @@ -26,274 +25,35 @@ use cumulus_primitives_core::{ }; use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult}; use futures::{FutureExt, Stream, StreamExt}; -use jsonrpsee::{ - core::{ - client::{Client as JsonRPCClient, ClientT, Subscription, SubscriptionClientT}, - Error as JsonRpseeError, - }, - rpc_params, - types::ParamsSer, - ws_client::WsClientBuilder, -}; -use parity_scale_codec::{Decode, Encode}; use polkadot_service::Handle; -use sc_client_api::{StorageData, StorageProof}; -use sc_rpc_api::{state::ReadProof, system::Health}; +use sc_client_api::StorageProof; use sp_core::sp_std::collections::btree_map::BTreeMap; -use sp_runtime::DeserializeOwned; use sp_state_machine::StorageValue; use sp_storage::StorageKey; -use std::{pin::Pin, sync::Arc}; +use std::pin::Pin; pub use url::Url; -const LOG_TARGET: &str = "relay-chain-rpc-interface"; +mod rpc_client; +pub use rpc_client::{create_client_and_start_worker, RelayChainRpcClient}; + const TIMEOUT_IN_SECONDS: u64 = 6; -/// Client that maps RPC methods and deserializes results -#[derive(Clone)] -struct RelayChainRPCClient { - /// Websocket client to make calls - ws_client: Arc, - - /// Retry strategy that should be used for requests and subscriptions - retry_strategy: ExponentialBackoff, -} - -impl RelayChainRPCClient { - pub async fn new(url: Url) -> RelayChainResult { - tracing::info!(target: LOG_TARGET, url = %url.to_string(), "Initializing RPC Client"); - let ws_client = WsClientBuilder::default().build(url.as_str()).await?; - - Ok(RelayChainRPCClient { - ws_client: Arc::new(ws_client), - retry_strategy: ExponentialBackoff::default(), - }) - } - - /// Call a call to `state_call` rpc method. - async fn call_remote_runtime_function( - &self, - method_name: &str, - hash: PHash, - payload: Option, - ) -> RelayChainResult { - let payload_bytes = - payload.map_or(sp_core::Bytes(Vec::new()), |v| sp_core::Bytes(v.encode())); - let params = rpc_params! { - method_name, - payload_bytes, - hash - }; - let res = self - .request_tracing::("state_call", params, |err| { - tracing::trace!( - target: LOG_TARGET, - %method_name, - %hash, - error = %err, - "Error during call to 'state_call'.", - ); - }) - .await?; - Decode::decode(&mut &*res.0).map_err(Into::into) - } - - /// Subscribe to a notification stream via RPC - async fn subscribe<'a, R>( - &self, - sub_name: &'a str, - unsub_name: &'a str, - params: Option>, - ) -> RelayChainResult> - where - R: DeserializeOwned, - { - self.ws_client - .subscribe::(sub_name, params, unsub_name) - .await - .map_err(|err| RelayChainError::RPCCallError(sub_name.to_string(), err)) - } - - /// Perform RPC request - async fn request<'a, R>( - &self, - method: &'a str, - params: Option>, - ) -> Result - where - R: DeserializeOwned + std::fmt::Debug, - { - self.request_tracing( - method, - params, - |e| tracing::trace!(target:LOG_TARGET, error = %e, %method, "Unable to complete RPC request"), - ) - .await - } - - /// Perform RPC request - async fn request_tracing<'a, R, OR>( - &self, - method: &'a str, - params: Option>, - trace_error: OR, - ) -> Result - where - R: DeserializeOwned + std::fmt::Debug, - OR: Fn(&jsonrpsee::core::Error), - { - retry_notify( - self.retry_strategy.clone(), - || async { - self.ws_client.request(method, params.clone()).await.map_err(|err| match err { - JsonRpseeError::Transport(_) => - backoff::Error::Transient { err, retry_after: None }, - _ => backoff::Error::Permanent(err), - }) - }, - |error, dur| tracing::trace!(target: LOG_TARGET, %error, ?dur, "Encountered transport error, retrying."), - ) - .await - .map_err(|err| { - trace_error(&err); - RelayChainError::RPCCallError(method.to_string(), err)}) - } - - async fn system_health(&self) -> Result { - self.request("system_health", None).await - } - - async fn state_get_read_proof( - &self, - storage_keys: Vec, - at: Option, - ) -> Result, RelayChainError> { - let params = rpc_params!(storage_keys, at); - self.request("state_getReadProof", params).await - } - - async fn state_get_storage( - &self, - storage_key: StorageKey, - at: Option, - ) -> Result, RelayChainError> { - let params = rpc_params!(storage_key, at); - self.request("state_getStorage", params).await - } - - async fn chain_get_head(&self) -> Result { - self.request("chain_getHead", None).await - } - - async fn chain_get_header( - &self, - hash: Option, - ) -> Result, RelayChainError> { - let params = rpc_params!(hash); - self.request("chain_getHeader", params).await - } - - async fn parachain_host_candidate_pending_availability( - &self, - at: PHash, - para_id: ParaId, - ) -> Result, RelayChainError> { - self.call_remote_runtime_function( - "ParachainHost_candidate_pending_availability", - at, - Some(para_id), - ) - .await - } - - async fn parachain_host_session_index_for_child( - &self, - at: PHash, - ) -> Result { - self.call_remote_runtime_function("ParachainHost_session_index_for_child", at, None::<()>) - .await - } - - async fn parachain_host_validators( - &self, - at: PHash, - ) -> Result, RelayChainError> { - self.call_remote_runtime_function("ParachainHost_validators", at, None::<()>) - .await - } - - async fn parachain_host_persisted_validation_data( - &self, - at: PHash, - para_id: ParaId, - occupied_core_assumption: OccupiedCoreAssumption, - ) -> Result, RelayChainError> { - self.call_remote_runtime_function( - "ParachainHost_persisted_validation_data", - at, - Some((para_id, occupied_core_assumption)), - ) - .await - } - - async fn parachain_host_inbound_hrmp_channels_contents( - &self, - para_id: ParaId, - at: PHash, - ) -> Result>, RelayChainError> { - self.call_remote_runtime_function( - "ParachainHost_inbound_hrmp_channels_contents", - at, - Some(para_id), - ) - .await - } - - async fn parachain_host_dmq_contents( - &self, - para_id: ParaId, - at: PHash, - ) -> Result, RelayChainError> { - self.call_remote_runtime_function("ParachainHost_dmq_contents", at, Some(para_id)) - .await - } - - async fn subscribe_all_heads(&self) -> Result, RelayChainError> { - self.subscribe::("chain_subscribeAllHeads", "chain_unsubscribeAllHeads", None) - .await - } - - async fn subscribe_new_best_heads(&self) -> Result, RelayChainError> { - self.subscribe::("chain_subscribeNewHeads", "chain_unsubscribeNewHeads", None) - .await - } - - async fn subscribe_finalized_heads(&self) -> Result, RelayChainError> { - self.subscribe::( - "chain_subscribeFinalizedHeads", - "chain_unsubscribeFinalizedHeads", - None, - ) - .await - } -} - -/// RelayChainRPCInterface is used to interact with a full node that is running locally +/// RelayChainRpcInterface is used to interact with a full node that is running locally /// in the same process. #[derive(Clone)] -pub struct RelayChainRPCInterface { - rpc_client: RelayChainRPCClient, +pub struct RelayChainRpcInterface { + rpc_client: RelayChainRpcClient, } -impl RelayChainRPCInterface { - pub async fn new(url: Url) -> RelayChainResult { - Ok(Self { rpc_client: RelayChainRPCClient::new(url).await? }) +impl RelayChainRpcInterface { + pub fn new(rpc_client: RelayChainRpcClient) -> Self { + Self { rpc_client } } } #[async_trait] -impl RelayChainInterface for RelayChainRPCInterface { +impl RelayChainInterface for RelayChainRpcInterface { async fn retrieve_dmq_contents( &self, para_id: ParaId, @@ -344,17 +104,7 @@ impl RelayChainInterface for RelayChainRPCInterface { async fn import_notification_stream( &self, ) -> RelayChainResult + Send>>> { - let imported_headers_stream = - self.rpc_client.subscribe_all_heads().await?.filter_map(|item| async move { - item.map_err(|err| { - tracing::error!( - target: LOG_TARGET, - "Encountered error in import notification stream: {}", - err - ) - }) - .ok() - }); + let imported_headers_stream = self.rpc_client.get_imported_heads_stream().await?; Ok(imported_headers_stream.boxed()) } @@ -362,20 +112,7 @@ impl RelayChainInterface for RelayChainRPCInterface { async fn finality_notification_stream( &self, ) -> RelayChainResult + Send>>> { - let imported_headers_stream = self - .rpc_client - .subscribe_finalized_heads() - .await? - .filter_map(|item| async move { - item.map_err(|err| { - tracing::error!( - target: LOG_TARGET, - "Encountered error in finality notification stream: {}", - err - ) - }) - .ok() - }); + let imported_headers_stream = self.rpc_client.get_finalized_heads_stream().await?; Ok(imported_headers_stream.boxed()) } @@ -430,7 +167,7 @@ impl RelayChainInterface for RelayChainRPCInterface { /// 3. Wait for the block to be imported via subscription. /// 4. If timeout is reached, we return an error. async fn wait_for_block(&self, wait_for_hash: PHash) -> RelayChainResult<()> { - let mut head_stream = self.rpc_client.subscribe_all_heads().await?; + let mut head_stream = self.rpc_client.get_imported_heads_stream().await?; if self.rpc_client.chain_get_header(Some(wait_for_hash)).await?.is_some() { return Ok(()) @@ -442,7 +179,7 @@ impl RelayChainInterface for RelayChainRPCInterface { futures::select! { _ = timeout => return Err(RelayChainError::WaitTimeout(wait_for_hash)), evt = head_stream.next().fuse() => match evt { - Some(Ok(evt)) if evt.hash() == wait_for_hash => return Ok(()), + Some(evt) if evt.hash() == wait_for_hash => return Ok(()), // Not the event we waited on. Some(_) => continue, None => return Err(RelayChainError::ImportListenerClosed(wait_for_hash)), @@ -454,18 +191,7 @@ impl RelayChainInterface for RelayChainRPCInterface { async fn new_best_notification_stream( &self, ) -> RelayChainResult + Send>>> { - let imported_headers_stream = - self.rpc_client.subscribe_new_best_heads().await?.filter_map(|item| async move { - item.map_err(|err| { - tracing::error!( - target: LOG_TARGET, - "Error in best block notification stream: {}", - err - ) - }) - .ok() - }); - + let imported_headers_stream = self.rpc_client.get_best_heads_stream().await?; Ok(imported_headers_stream.boxed()) } } diff --git a/client/relay-chain-rpc-interface/src/rpc_client.rs b/client/relay-chain-rpc-interface/src/rpc_client.rs new file mode 100644 index 0000000000..71014b18e0 --- /dev/null +++ b/client/relay-chain-rpc-interface/src/rpc_client.rs @@ -0,0 +1,466 @@ +// Copyright 2022 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 . + +use backoff::{future::retry_notify, ExponentialBackoff}; +use cumulus_primitives_core::{ + relay_chain::{ + v2::{CommittedCandidateReceipt, OccupiedCoreAssumption, SessionIndex, ValidatorId}, + Hash as PHash, Header as PHeader, InboundHrmpMessage, + }, + InboundDownwardMessage, ParaId, PersistedValidationData, +}; +use cumulus_relay_chain_interface::{RelayChainError, RelayChainResult}; +use futures::{ + channel::mpsc::{Receiver, Sender}, + StreamExt, +}; +use jsonrpsee::{ + core::{ + client::{Client as JsonRpcClient, ClientT, Subscription, SubscriptionClientT}, + Error as JsonRpseeError, + }, + rpc_params, + types::ParamsSer, + ws_client::WsClientBuilder, +}; +use parity_scale_codec::{Decode, Encode}; +use polkadot_service::TaskManager; +use sc_client_api::StorageData; +use sc_rpc_api::{state::ReadProof, system::Health}; +use sp_core::sp_std::collections::btree_map::BTreeMap; +use sp_runtime::DeserializeOwned; +use sp_storage::StorageKey; +use std::sync::Arc; +use tokio::sync::mpsc::{ + channel as tokio_channel, Receiver as TokioReceiver, Sender as TokioSender, +}; + +pub use url::Url; + +const LOG_TARGET: &str = "relay-chain-rpc-client"; + +const NOTIFICATION_CHANNEL_SIZE_LIMIT: usize = 20; + +/// Client that maps RPC methods and deserializes results +#[derive(Clone)] +pub struct RelayChainRpcClient { + /// Websocket client to make calls + ws_client: Arc, + + /// Retry strategy that should be used for requests and subscriptions + retry_strategy: ExponentialBackoff, + + /// Channel to communicate with the RPC worker + to_worker_channel: TokioSender, +} + +/// Worker messages to register new notification listeners +#[derive(Clone, Debug)] +pub enum NotificationRegisterMessage { + RegisterBestHeadListener(Sender), + RegisterImportListener(Sender), + RegisterFinalizationListener(Sender), +} + +/// Worker that should be used in combination with [`RelayChainRpcClient`]. Must be polled to distribute header notifications to listeners. +struct RpcStreamWorker { + // Communication channel with the RPC client + client_receiver: TokioReceiver, + + // Senders to distribute incoming header notifications to + imported_header_listeners: Vec>, + finalized_header_listeners: Vec>, + best_header_listeners: Vec>, + + // Incoming notification subscriptions + rpc_imported_header_subscription: Subscription, + rpc_finalized_header_subscription: Subscription, + rpc_best_header_subscription: Subscription, +} + +/// Entry point to create [`RelayChainRpcClient`] and start a worker that distributes notifications. +pub async fn create_client_and_start_worker( + url: Url, + task_manager: &mut TaskManager, +) -> RelayChainResult { + tracing::info!(target: LOG_TARGET, url = %url.to_string(), "Initializing RPC Client"); + let ws_client = WsClientBuilder::default().build(url.as_str()).await?; + + let best_head_stream = RelayChainRpcClient::subscribe_new_best_heads(&ws_client).await?; + let finalized_head_stream = RelayChainRpcClient::subscribe_finalized_heads(&ws_client).await?; + let imported_head_stream = RelayChainRpcClient::subscribe_imported_heads(&ws_client).await?; + + let (worker, sender) = + RpcStreamWorker::new(imported_head_stream, best_head_stream, finalized_head_stream); + let client = RelayChainRpcClient::new(ws_client, sender).await?; + + task_manager + .spawn_essential_handle() + .spawn("relay-chain-rpc-worker", None, worker.run()); + + Ok(client) +} + +fn handle_event_distribution( + event: Option>, + senders: &mut Vec>, +) -> Result<(), String> { + match event { + Some(Ok(header)) => { + senders.retain_mut(|e| { + match e.try_send(header.clone()) { + // Receiver has been dropped, remove Sender from list. + Err(error) if error.is_disconnected() => false, + // Channel is full. This should not happen. + // TODO: Improve error handling here + // https://github.com/paritytech/cumulus/issues/1482 + Err(error) => { + tracing::error!(target: LOG_TARGET, ?error, "Event distribution channel has reached its limit. This can lead to missed notifications."); + true + }, + _ => true, + } + }); + Ok(()) + }, + None => Err("RPC Subscription closed.".to_string()), + Some(Err(err)) => Err(format!("Error in RPC subscription: {}", err)), + } +} + +impl RpcStreamWorker { + /// Create new worker. Returns the worker and a channel to register new listeners. + fn new( + import_sub: Subscription, + best_sub: Subscription, + finalized_sub: Subscription, + ) -> (RpcStreamWorker, TokioSender) { + let (tx, rx) = tokio_channel(100); + let worker = RpcStreamWorker { + client_receiver: rx, + imported_header_listeners: Vec::new(), + finalized_header_listeners: Vec::new(), + best_header_listeners: Vec::new(), + rpc_imported_header_subscription: import_sub, + rpc_best_header_subscription: best_sub, + rpc_finalized_header_subscription: finalized_sub, + }; + (worker, tx) + } + + /// Run this worker to drive notification streams. + /// The worker does two things: + /// 1. Listen for `NotificationRegisterMessage` and register new listeners for the notification streams + /// 2. Distribute incoming import, best head and finalization notifications to registered listeners. + /// If an error occurs during sending, the receiver has been closed and we remove the sender from the list. + pub async fn run(mut self) { + let mut import_sub = self.rpc_imported_header_subscription.fuse(); + let mut best_head_sub = self.rpc_best_header_subscription.fuse(); + let mut finalized_sub = self.rpc_finalized_header_subscription.fuse(); + loop { + tokio::select! { + evt = self.client_receiver.recv() => match evt { + Some(NotificationRegisterMessage::RegisterBestHeadListener(tx)) => { + self.best_header_listeners.push(tx); + }, + Some(NotificationRegisterMessage::RegisterImportListener(tx)) => { + self.imported_header_listeners.push(tx) + }, + Some(NotificationRegisterMessage::RegisterFinalizationListener(tx)) => { + self.finalized_header_listeners.push(tx) + }, + None => { + tracing::error!(target: LOG_TARGET, "RPC client receiver closed. Stopping RPC Worker."); + return; + } + }, + import_event = import_sub.next() => { + if let Err(err) = handle_event_distribution(import_event, &mut self.imported_header_listeners) { + tracing::error!(target: LOG_TARGET, err, "Encountered error while processing imported header notification. Stopping RPC Worker."); + return; + } + }, + best_header_event = best_head_sub.next() => { + if let Err(err) = handle_event_distribution(best_header_event, &mut self.best_header_listeners) { + tracing::error!(target: LOG_TARGET, err, "Encountered error while processing best header notification. Stopping RPC Worker."); + return; + } + } + finalized_event = finalized_sub.next() => { + if let Err(err) = handle_event_distribution(finalized_event, &mut self.finalized_header_listeners) { + tracing::error!(target: LOG_TARGET, err, "Encountered error while processing finalized header notification. Stopping RPC Worker."); + return; + } + } + } + } + } +} + +impl RelayChainRpcClient { + /// Initialize new RPC Client. + async fn new( + ws_client: JsonRpcClient, + sender: TokioSender, + ) -> RelayChainResult { + let client = RelayChainRpcClient { + to_worker_channel: sender, + ws_client: Arc::new(ws_client), + retry_strategy: ExponentialBackoff::default(), + }; + + Ok(client) + } + + /// Call a call to `state_call` rpc method. + pub async fn call_remote_runtime_function( + &self, + method_name: &str, + hash: PHash, + payload: Option, + ) -> RelayChainResult { + let payload_bytes = + payload.map_or(sp_core::Bytes(Vec::new()), |v| sp_core::Bytes(v.encode())); + let params = rpc_params! { + method_name, + payload_bytes, + hash + }; + let res = self + .request_tracing::("state_call", params, |err| { + tracing::trace!( + target: LOG_TARGET, + %method_name, + %hash, + error = %err, + "Error during call to 'state_call'.", + ); + }) + .await?; + Decode::decode(&mut &*res.0).map_err(Into::into) + } + + /// Subscribe to a notification stream via RPC + + /// Perform RPC request + async fn request<'a, R>( + &self, + method: &'a str, + params: Option>, + ) -> Result + where + R: DeserializeOwned + std::fmt::Debug, + { + self.request_tracing( + method, + params, + |e| tracing::trace!(target:LOG_TARGET, error = %e, %method, "Unable to complete RPC request"), + ) + .await + } + + /// Perform RPC request + async fn request_tracing<'a, R, OR>( + &self, + method: &'a str, + params: Option>, + trace_error: OR, + ) -> Result + where + R: DeserializeOwned + std::fmt::Debug, + OR: Fn(&jsonrpsee::core::Error), + { + retry_notify( + self.retry_strategy.clone(), + || async { + self.ws_client.request(method, params.clone()).await.map_err(|err| match err { + JsonRpseeError::Transport(_) => + backoff::Error::Transient { err, retry_after: None }, + _ => backoff::Error::Permanent(err), + }) + }, + |error, dur| tracing::trace!(target: LOG_TARGET, %error, ?dur, "Encountered transport error, retrying."), + ) + .await + .map_err(|err| { + trace_error(&err); + RelayChainError::RpcCallError(method.to_string(), err)}) + } + + pub async fn system_health(&self) -> Result { + self.request("system_health", None).await + } + + pub async fn state_get_read_proof( + &self, + storage_keys: Vec, + at: Option, + ) -> Result, RelayChainError> { + let params = rpc_params!(storage_keys, at); + self.request("state_getReadProof", params).await + } + + pub async fn state_get_storage( + &self, + storage_key: StorageKey, + at: Option, + ) -> Result, RelayChainError> { + let params = rpc_params!(storage_key, at); + self.request("state_getStorage", params).await + } + + pub async fn chain_get_head(&self) -> Result { + self.request("chain_getHead", None).await + } + + pub async fn chain_get_header( + &self, + hash: Option, + ) -> Result, RelayChainError> { + let params = rpc_params!(hash); + self.request("chain_getHeader", params).await + } + + pub async fn parachain_host_candidate_pending_availability( + &self, + at: PHash, + para_id: ParaId, + ) -> Result, RelayChainError> { + self.call_remote_runtime_function( + "ParachainHost_candidate_pending_availability", + at, + Some(para_id), + ) + .await + } + + pub async fn parachain_host_session_index_for_child( + &self, + at: PHash, + ) -> Result { + self.call_remote_runtime_function("ParachainHost_session_index_for_child", at, None::<()>) + .await + } + + pub async fn parachain_host_validators( + &self, + at: PHash, + ) -> Result, RelayChainError> { + self.call_remote_runtime_function("ParachainHost_validators", at, None::<()>) + .await + } + + pub async fn parachain_host_persisted_validation_data( + &self, + at: PHash, + para_id: ParaId, + occupied_core_assumption: OccupiedCoreAssumption, + ) -> Result, RelayChainError> { + self.call_remote_runtime_function( + "ParachainHost_persisted_validation_data", + at, + Some((para_id, occupied_core_assumption)), + ) + .await + } + + pub async fn parachain_host_inbound_hrmp_channels_contents( + &self, + para_id: ParaId, + at: PHash, + ) -> Result>, RelayChainError> { + self.call_remote_runtime_function( + "ParachainHost_inbound_hrmp_channels_contents", + at, + Some(para_id), + ) + .await + } + + pub async fn parachain_host_dmq_contents( + &self, + para_id: ParaId, + at: PHash, + ) -> Result, RelayChainError> { + self.call_remote_runtime_function("ParachainHost_dmq_contents", at, Some(para_id)) + .await + } + + fn send_register_message_to_worker( + &self, + message: NotificationRegisterMessage, + ) -> Result<(), RelayChainError> { + self.to_worker_channel + .try_send(message) + .map_err(|e| RelayChainError::WorkerCommunicationError(e.to_string())) + } + + pub async fn get_imported_heads_stream(&self) -> Result, RelayChainError> { + let (tx, rx) = futures::channel::mpsc::channel::(NOTIFICATION_CHANNEL_SIZE_LIMIT); + self.send_register_message_to_worker(NotificationRegisterMessage::RegisterImportListener( + tx, + ))?; + Ok(rx) + } + + pub async fn get_best_heads_stream(&self) -> Result, RelayChainError> { + let (tx, rx) = futures::channel::mpsc::channel::(NOTIFICATION_CHANNEL_SIZE_LIMIT); + self.send_register_message_to_worker( + NotificationRegisterMessage::RegisterBestHeadListener(tx), + )?; + Ok(rx) + } + + pub async fn get_finalized_heads_stream(&self) -> Result, RelayChainError> { + let (tx, rx) = futures::channel::mpsc::channel::(NOTIFICATION_CHANNEL_SIZE_LIMIT); + self.send_register_message_to_worker( + NotificationRegisterMessage::RegisterFinalizationListener(tx), + )?; + Ok(rx) + } + + async fn subscribe_imported_heads( + ws_client: &JsonRpcClient, + ) -> Result, RelayChainError> { + Ok(ws_client + .subscribe::("chain_subscribeAllHeads", None, "chain_unsubscribeAllHeads") + .await?) + } + + async fn subscribe_finalized_heads( + ws_client: &JsonRpcClient, + ) -> Result, RelayChainError> { + Ok(ws_client + .subscribe::( + "chain_subscribeFinalizedHeads", + None, + "chain_unsubscribeFinalizedHeads", + ) + .await?) + } + + async fn subscribe_new_best_heads( + ws_client: &JsonRpcClient, + ) -> Result, RelayChainError> { + Ok(ws_client + .subscribe::( + "chain_subscribeNewHeads", + None, + "chain_unsubscribeFinalizedHeads", + ) + .await?) + } +} diff --git a/parachain-template/node/src/service.rs b/parachain-template/node/src/service.rs index 9b50508622..f7849f953f 100644 --- a/parachain-template/node/src/service.rs +++ b/parachain-template/node/src/service.rs @@ -22,7 +22,7 @@ use cumulus_client_service::{ use cumulus_primitives_core::ParaId; use cumulus_relay_chain_inprocess_interface::build_inprocess_relay_chain; use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult}; -use cumulus_relay_chain_rpc_interface::RelayChainRPCInterface; +use cumulus_relay_chain_rpc_interface::{create_client_and_start_worker, RelayChainRpcInterface}; // Substrate Imports use sc_client_api::ExecutorProvider; @@ -176,8 +176,10 @@ async fn build_relay_chain_interface( hwbench: Option, ) -> RelayChainResult<(Arc<(dyn RelayChainInterface + 'static)>, Option)> { match collator_options.relay_chain_rpc_url { - Some(relay_chain_url) => - Ok((Arc::new(RelayChainRPCInterface::new(relay_chain_url).await?) as Arc<_>, None)), + Some(relay_chain_url) => { + let client = create_client_and_start_worker(relay_chain_url, task_manager).await?; + Ok((Arc::new(RelayChainRpcInterface::new(client)) as Arc<_>, None)) + }, None => build_inprocess_relay_chain( polkadot_config, parachain_config, diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index cd8eaf242c..a4bae9cfed 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -30,7 +30,7 @@ use cumulus_primitives_core::{ }; use cumulus_relay_chain_inprocess_interface::build_inprocess_relay_chain; use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult}; -use cumulus_relay_chain_rpc_interface::RelayChainRPCInterface; +use cumulus_relay_chain_rpc_interface::{create_client_and_start_worker, RelayChainRpcInterface}; use polkadot_service::CollatorPair; use sp_core::Pair; @@ -296,8 +296,10 @@ async fn build_relay_chain_interface( hwbench: Option, ) -> RelayChainResult<(Arc<(dyn RelayChainInterface + 'static)>, Option)> { match collator_options.relay_chain_rpc_url { - Some(relay_chain_url) => - Ok((Arc::new(RelayChainRPCInterface::new(relay_chain_url).await?) as Arc<_>, None)), + Some(relay_chain_url) => { + let client = create_client_and_start_worker(relay_chain_url, task_manager).await?; + Ok((Arc::new(RelayChainRpcInterface::new(client)) as Arc<_>, None)) + }, None => build_inprocess_relay_chain( polkadot_config, parachain_config, diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index d3a52b7db7..3eded079d4 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -37,7 +37,7 @@ use cumulus_client_service::{ use cumulus_primitives_core::ParaId; use cumulus_relay_chain_inprocess_interface::RelayChainInProcessInterface; use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult}; -use cumulus_relay_chain_rpc_interface::RelayChainRPCInterface; +use cumulus_relay_chain_rpc_interface::{create_client_and_start_worker, RelayChainRpcInterface}; use cumulus_test_runtime::{Hash, Header, NodeBlock as Block, RuntimeApi}; use parking_lot::Mutex; @@ -182,7 +182,8 @@ async fn build_relay_chain_interface( task_manager: &mut TaskManager, ) -> RelayChainResult> { if let Some(relay_chain_url) = collator_options.relay_chain_rpc_url { - return Ok(Arc::new(RelayChainRPCInterface::new(relay_chain_url).await?) as Arc<_>) + let client = create_client_and_start_worker(relay_chain_url, task_manager).await?; + return Ok(Arc::new(RelayChainRpcInterface::new(client)) as Arc<_>) } let relay_chain_full_node = polkadot_test_service::new_full( From 00e3e8ae1131b7836f7c0dc6928b14e1e77d7638 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Aug 2022 23:19:46 +0200 Subject: [PATCH 181/238] Bump bytes from 1.2.0 to 1.2.1 (#1489) Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.2.0 to 1.2.1. - [Release notes](https://github.com/tokio-rs/bytes/releases) - [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/bytes/commits) --- updated-dependencies: - dependency-name: bytes dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8b081cf72..b21e5bf1cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -737,9 +737,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" [[package]] name = "bzip2-sys" diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index e115eb88b3..df99164044 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" description = "Base pallet for cumulus-based parachains" [dependencies] -bytes = { version = "1.2.0", default-features = false } +bytes = { version = "1.2.1", default-features = false } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" From 416834d702721b813086fe2a2ce68d65022d6e68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Aug 2022 08:54:19 +0000 Subject: [PATCH 182/238] Bump serde from 1.0.140 to 1.0.141 (#1490) Bumps [serde](https://github.com/serde-rs/serde) from 1.0.140 to 1.0.141. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.140...v1.0.141) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/aura-ext/Cargo.toml | 2 +- pallets/collator-selection/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- pallets/xcm/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/runtime/Cargo.toml | 2 +- parachains/pallets/parachain-info/Cargo.toml | 2 +- parachains/pallets/ping/Cargo.toml | 2 +- parachains/runtimes/assets/statemine/Cargo.toml | 2 +- parachains/runtimes/assets/statemint/Cargo.toml | 2 +- parachains/runtimes/assets/westmint/Cargo.toml | 2 +- parachains/runtimes/contracts/contracts-rococo/Cargo.toml | 2 +- parachains/runtimes/starters/seedling/Cargo.toml | 2 +- parachains/runtimes/starters/shell/Cargo.toml | 2 +- parachains/runtimes/testing/penpal/Cargo.toml | 2 +- parachains/runtimes/testing/rococo-parachain/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/runtime/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 20 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b21e5bf1cb..9991dcb9fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10323,9 +10323,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.140" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +checksum = "7af873f2c95b99fcb0bd0fe622a43e29514658873c8ceba88c4cb88833a22500" dependencies = [ "serde_derive", ] @@ -10342,9 +10342,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.140" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +checksum = "75743a150d003dd863b51dc809bcad0d73f2102c53632f1e954e738192a3413f" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/aura-ext/Cargo.toml b/pallets/aura-ext/Cargo.toml index 31609ada32..4507670834 100644 --- a/pallets/aura-ext/Cargo.toml +++ b/pallets/aura-ext/Cargo.toml @@ -8,7 +8,7 @@ description = "AURA consensus extension pallet for parachains" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/collator-selection/Cargo.toml b/pallets/collator-selection/Cargo.toml index 91b3c400a0..d3f4625b8e 100644 --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -17,7 +17,7 @@ log = { version = "0.4.17", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", default-features = false } +serde = { version = "1.0.141", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index df99164044..341f76c872 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -12,7 +12,7 @@ environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/xcm/Cargo.toml b/pallets/xcm/Cargo.toml index dda5782846..db199bd5ea 100644 --- a/pallets/xcm/Cargo.toml +++ b/pallets/xcm/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 5ef58cb6d4..76b6910f09 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -14,7 +14,7 @@ clap = { version = "3.2.15", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } -serde = { version = "1.0.140", features = ["derive"] } +serde = { version = "1.0.141", features = ["derive"] } hex-literal = "0.3.4" jsonrpsee = { version = "0.14.0", features = ["server"] } diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index 792c238e81..a1a480a5c3 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } smallvec = "1.9.0" # Local diff --git a/parachains/pallets/parachain-info/Cargo.toml b/parachains/pallets/parachain-info/Cargo.toml index 9c44da7e74..da22f19a5c 100644 --- a/parachains/pallets/parachain-info/Cargo.toml +++ b/parachains/pallets/parachain-info/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } 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" } diff --git a/parachains/pallets/ping/Cargo.toml b/parachains/pallets/ping/Cargo.toml index 960e7563e5..3ce4e37963 100644 --- a/parachains/pallets/ping/Cargo.toml +++ b/parachains/pallets/ping/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", 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" } diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index 5f450ba3b6..ebbd86b766 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index bbbe289032..7746e97130 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -9,7 +9,7 @@ description = "Statemint parachain runtime" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.9.0" diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index 06058937fd..df3fb7ea01 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml index 0a1278b322..b4172e817b 100644 --- a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/starters/seedling/Cargo.toml b/parachains/runtimes/starters/seedling/Cargo.toml index 86933c6e56..dba67f7f37 100644 --- a/parachains/runtimes/starters/seedling/Cargo.toml +++ b/parachains/runtimes/starters/seedling/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } scale-info = { version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/starters/shell/Cargo.toml b/parachains/runtimes/starters/shell/Cargo.toml index 26b319f0d0..14aec72d88 100644 --- a/parachains/runtimes/starters/shell/Cargo.toml +++ b/parachains/runtimes/starters/shell/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/testing/penpal/Cargo.toml b/parachains/runtimes/testing/penpal/Cargo.toml index 4143e07067..a31111f1b3 100644 --- a/parachains/runtimes/testing/penpal/Cargo.toml +++ b/parachains/runtimes/testing/penpal/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/testing/rococo-parachain/Cargo.toml b/parachains/runtimes/testing/rococo-parachain/Cargo.toml index dd221d8322..8cf3aab02c 100644 --- a/parachains/runtimes/testing/rococo-parachain/Cargo.toml +++ b/parachains/runtimes/testing/rococo-parachain/Cargo.toml @@ -9,7 +9,7 @@ description = "Simple runtime used by the rococo parachain(s)" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index c775b9fc78..8ef39cb1b4 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -13,7 +13,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" log = "0.4.17" -serde = { version = "1.0.140", features = ["derive"] } +serde = { version = "1.0.141", features = ["derive"] } # Local rococo-parachain-runtime = { path = "../parachains/runtimes/testing/rococo-parachain" } diff --git a/test/runtime/Cargo.toml b/test/runtime/Cargo.toml index 73c8e59136..789bc3de4b 100644 --- a/test/runtime/Cargo.toml +++ b/test/runtime/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.140", optional = true, features = ["derive"] } +serde = { version = "1.0.141", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 27720cbcc9..9e3d0b5973 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -16,7 +16,7 @@ criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" -serde = { version = "1.0.140", features = ["derive"] } +serde = { version = "1.0.141", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } tracing = "0.1.25" url = "2.2.2" From 777e72804cdeb6a1ea4c40f1fd6d61089ea21568 Mon Sep 17 00:00:00 2001 From: Nate Armstrong <109548806+elv-nate@users.noreply.github.com> Date: Tue, 2 Aug 2022 04:01:50 -0700 Subject: [PATCH 183/238] Fix typos in release.md (#1491) --- docs/release.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/release.md b/docs/release.md index a5adc21b38..9bd5895c83 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,6 +1,6 @@ # Releases -## Versionning +## Versioning ### Example #1 @@ -8,7 +8,7 @@ | Polkadot | v 0. 9.22 | | Client | v 0. 9.22 0 | | Runtime | v 9 22 0 | => 9220 -| senmver | 0. 9.22 0 | +| semver | 0. 9.22 0 | ``` ### Example #2 @@ -17,7 +17,7 @@ | Polkadot | v 0.10.42 | | Client | v 0.10.42 0 | | Runtime | v 10.42 0 | => 10420 -| senmver | 0.10.42 0 | +| semver | 0.10.42 0 | ``` ### Example #3 @@ -26,7 +26,7 @@ | Polkadot | v 1. 2.18 | | Client | v 1. 2.18 0 | | Runtime | v 1 2 18 0 | => 102180 -| senmver | 1. 2.18 0 | +| semver | 1. 2.18 0 | ``` From 78f8827be83ceaf7b2f7b2a490b64706e5808fec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Aug 2022 13:58:51 +0200 Subject: [PATCH 184/238] Bump clap from 3.2.15 to 3.2.16 (#1492) Bumps [clap](https://github.com/clap-rs/clap) from 3.2.15 to 3.2.16. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v3.2.15...v3.2.16) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- client/cli/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9991dcb9fd..b8266f0993 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -933,9 +933,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.15" +version = "3.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bbe24bbd31a185bc2c4f7c2abe80bea13a20d57ee4e55be70ac512bdc76417" +checksum = "a3dbbb6653e7c55cc8595ad3e1f7be8f32aba4eb7ff7f0fd1163d4f3d137c0a9" dependencies = [ "atty", "bitflags", @@ -1439,7 +1439,7 @@ dependencies = [ name = "cumulus-client-cli" version = "0.1.0" dependencies = [ - "clap 3.2.15", + "clap 3.2.16", "parity-scale-codec", "sc-chain-spec", "sc-cli", @@ -2051,7 +2051,7 @@ name = "cumulus-test-service" version = "0.1.0" dependencies = [ "async-trait", - "clap 3.2.15", + "clap 3.2.16", "criterion", "cumulus-client-cli", "cumulus-client-consensus-common", @@ -2721,7 +2721,7 @@ source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979 dependencies = [ "Inflector", "chrono", - "clap 3.2.15", + "clap 3.2.16", "comfy-table", "frame-benchmarking", "frame-support", @@ -6340,7 +6340,7 @@ dependencies = [ name = "parachain-template-node" version = "0.1.0" dependencies = [ - "clap 3.2.15", + "clap 3.2.16", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-aura", @@ -6939,7 +6939,7 @@ name = "polkadot-cli" version = "0.9.27" source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" dependencies = [ - "clap 3.2.15", + "clap 3.2.16", "frame-benchmarking-cli", "futures", "log", @@ -7593,7 +7593,7 @@ version = "0.9.220" dependencies = [ "assert_cmd", "async-trait", - "clap 3.2.15", + "clap 3.2.16", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", @@ -9233,7 +9233,7 @@ version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ "chrono", - "clap 3.2.15", + "clap 3.2.16", "fdlimit", "futures", "hex", @@ -12244,7 +12244,7 @@ name = "try-runtime-cli" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" dependencies = [ - "clap 3.2.15", + "clap 3.2.16", "jsonrpsee", "log", "parity-scale-codec", diff --git a/client/cli/Cargo.toml b/client/cli/Cargo.toml index 686a0b8dab..6745fef473 100644 --- a/client/cli/Cargo.toml +++ b/client/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -clap = { version = "3.2.15", features = ["derive", "deprecated"] } +clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index 76b6910f09..e5db09ca02 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [dependencies] -clap = { version = "3.2.15", features = ["derive"] } +clap = { version = "3.2.16", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 8ef39cb1b4..f42cb6ab93 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -8,7 +8,7 @@ description = "Runs a polkadot parachain node which could be a collator." [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.15", features = ["derive", "deprecated"] } +clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 9e3d0b5973..deac4f5763 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -10,7 +10,7 @@ path = "src/main.rs" [dependencies] async-trait = "0.1.56" -clap = { version = "3.2.15", features = ["derive", "deprecated"] } +clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.14.0", features = ["server"] } From 1b8dc9facc0dc0bda4a939768b1e9be30fd87fb5 Mon Sep 17 00:00:00 2001 From: Muharem Ismailov Date: Tue, 2 Aug 2022 15:12:34 +0200 Subject: [PATCH 185/238] gitignore dot-underscore (#1488) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 24eaf98681..58abcc32cc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ polkadot_argument_parsing *.iml .env bin +**/._* From dcf71da93dc1615665a8d39c929d643794dac15d Mon Sep 17 00:00:00 2001 From: Ignacio Palacios Date: Tue, 2 Aug 2022 16:33:34 +0200 Subject: [PATCH 186/238] Add script to run integration tests (#1431) * script run integration tests * Update scripts/parachains_integration_tests.sh Co-authored-by: Squirrel * Update scripts/parachains_integration_tests.sh Co-authored-by: Chevdor * Update scripts/parachains_integration_tests.sh Co-authored-by: Squirrel Co-authored-by: Chevdor --- scripts/parachains_integration_tests.sh | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 scripts/parachains_integration_tests.sh diff --git a/scripts/parachains_integration_tests.sh b/scripts/parachains_integration_tests.sh new file mode 100755 index 0000000000..ed920f430f --- /dev/null +++ b/scripts/parachains_integration_tests.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +tests=( + statemine + statemint +) + +rm -R logs &> /dev/null + +for t in ${tests[@]} +do + printf "\n🔍 Running $t tests...\n\n" + + mkdir -p logs/$t + + parachains-integration-tests \ + -m zombienet \ + -c ./parachains/integration-tests/$t/config.toml \ + -cl ./logs/$t/chains.log 2> /dev/null & + + parachains-integration-tests \ + -m test \ + -t ./parachains/integration-tests/$t \ + -tl ./logs/$t/tests.log & tests=$! + + wait $tests + + pkill -f polkadot + pkill -f parachain + + printf "\n🎉 $t integration tests finished! \n\n" +done From acc409cd0a58ee6d839baf8052b65084765d82eb Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Wed, 3 Aug 2022 16:25:18 +0300 Subject: [PATCH 187/238] Companion for #11939 (#1487) * Bump jsonrpsee to v0.15.1 Signed-off-by: Alexandru Vasile * Update Cargo.lock Signed-off-by: Alexandru Vasile * Update cargo.lock Signed-off-by: Alexandru Vasile * client: Upadte jsonrpsee-core from relay-chain-interface Signed-off-by: Alexandru Vasile * update substrate & polkadot * update substrate & polkadot Co-authored-by: Niklas Adolfsson --- Cargo.lock | 542 ++++++++++---------- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 6 files changed, 279 insertions(+), 273 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b8266f0993..05712a2963 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "beefy-primitives", @@ -468,7 +468,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -488,7 +488,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "beefy-primitives", "sp-api", @@ -497,7 +497,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -2677,7 +2677,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", ] @@ -2695,7 +2695,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -2717,7 +2717,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "Inflector", "chrono", @@ -2768,7 +2768,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2779,7 +2779,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2795,7 +2795,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -2823,7 +2823,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bitflags", "frame-metadata", @@ -2853,7 +2853,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2865,7 +2865,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2877,7 +2877,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro2", "quote", @@ -2887,7 +2887,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "log", @@ -2904,7 +2904,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -2919,7 +2919,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "sp-api", @@ -2928,7 +2928,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "sp-api", @@ -3373,13 +3373,13 @@ dependencies = [ [[package]] name = "http" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa 0.4.8", + "itoa 1.0.1", ] [[package]] @@ -3639,9 +3639,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11e017217fcd18da0a25296d3693153dd19c8a6aadab330b3595285d075385d1" +checksum = "8bd0d559d5e679b1ab2f869b486a11182923863b1b3ee8b421763cdd707b783a" dependencies = [ "jsonrpsee-core", "jsonrpsee-http-server", @@ -3654,9 +3654,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce395539a14d3ad4ec1256fde105abd36a2da25d578a291cabe98f45adfdb111" +checksum = "8752740ecd374bcbf8b69f3e80b0327942df76f793f8d4e60d3355650c31fb74" dependencies = [ "futures-util", "http", @@ -3675,9 +3675,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16efcd4477de857d4a2195a45769b2fe9ebb54f3ef5a4221d3b014a4fe33ec0b" +checksum = "f3dc3e9cf2ba50b7b1d7d76a667619f82846caa39e8e8daa8a4962d74acaddca" dependencies = [ "anyhow", "arrayvec 0.7.2", @@ -3688,6 +3688,7 @@ dependencies = [ "futures-timer", "futures-util", "globset", + "http", "hyper", "jsonrpsee-types", "lazy_static", @@ -3700,14 +3701,15 @@ dependencies = [ "thiserror", "tokio", "tracing", + "tracing-futures", "unicase", ] [[package]] name = "jsonrpsee-http-server" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdd69efeb3ce2cba767f126872f4eeb4624038a29098e75d77608b2b4345ad03" +checksum = "03802f0373a38c2420c70b5144742d800b509e2937edc4afb116434f07120117" dependencies = [ "futures-channel", "futures-util", @@ -3718,13 +3720,14 @@ dependencies = [ "serde_json", "tokio", "tracing", + "tracing-futures", ] [[package]] name = "jsonrpsee-proc-macros" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874cf3f6a027cebf36cae767feca9aa2e8a8f799880e49eb5540819fcbd8eada" +checksum = "bd67957d4280217247588ac86614ead007b301ca2fa9f19c19f880a536f029e3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3734,9 +3737,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcf76cd316f5d3ad48138085af1f45e2c58c98e02f0779783dbb034d43f7c86" +checksum = "e290bba767401b646812f608c099b922d8142603c9e73a50fb192d3ac86f4a0d" dependencies = [ "anyhow", "beef", @@ -3748,10 +3751,11 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee043cb5dd0d51d3eb93432e998d5bae797691a7b10ec4a325e036bcdb48c48a" +checksum = "6ee5feddd5188e62ac08fcf0e56478138e581509d4730f3f7be9b57dd402a4ff" dependencies = [ + "http", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", @@ -3759,12 +3763,13 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-server" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd2e4d266774a671f8def3794255b28eddd09b18d76e0b913fa439f34588c0a" +checksum = "d488ba74fb369e5ab68926feb75a483458b88e768d44319f37e4ecad283c7325" dependencies = [ "futures-channel", "futures-util", + "http", "jsonrpsee-core", "jsonrpsee-types", "serde_json", @@ -3773,6 +3778,7 @@ dependencies = [ "tokio-stream", "tokio-util 0.7.1", "tracing", + "tracing-futures", ] [[package]] @@ -3796,7 +3802,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-primitives", "bitvec", @@ -3889,7 +3895,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "polkadot-primitives", @@ -5246,7 +5252,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "dyn-clonable", @@ -5262,7 +5268,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "expander 0.0.6", "itertools", @@ -5300,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5317,7 +5323,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5331,7 +5337,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5347,7 +5353,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5363,7 +5369,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5378,7 +5384,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5402,7 +5408,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5422,7 +5428,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5437,7 +5443,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "beefy-primitives", "frame-support", @@ -5453,7 +5459,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5476,7 +5482,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5494,7 +5500,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5539,7 +5545,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5556,7 +5562,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bitflags", "frame-benchmarking", @@ -5584,7 +5590,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bitflags", "parity-scale-codec", @@ -5599,7 +5605,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro2", "quote", @@ -5609,7 +5615,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5626,7 +5632,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5639,7 +5645,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5655,7 +5661,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5678,7 +5684,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5691,7 +5697,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5709,7 +5715,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5724,7 +5730,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5747,7 +5753,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5763,7 +5769,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5783,7 +5789,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5800,7 +5806,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5817,7 +5823,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5835,7 +5841,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5850,7 +5856,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5865,7 +5871,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5882,7 +5888,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5901,7 +5907,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "sp-api", @@ -5911,7 +5917,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5928,7 +5934,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5951,7 +5957,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5967,7 +5973,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5982,7 +5988,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -5996,7 +6002,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6011,7 +6017,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6027,7 +6033,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -6048,7 +6054,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6064,7 +6070,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -6078,7 +6084,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6101,7 +6107,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6112,7 +6118,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "sp-arithmetic", @@ -6121,7 +6127,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -6150,7 +6156,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6168,7 +6174,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6187,7 +6193,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-support", "frame-system", @@ -6203,7 +6209,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6218,7 +6224,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6229,7 +6235,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6246,7 +6252,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6261,7 +6267,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6277,7 +6283,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6292,7 +6298,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "frame-system", @@ -6310,7 +6316,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-benchmarking", "frame-support", @@ -6864,7 +6870,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6879,7 +6885,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6893,7 +6899,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "derive_more", "fatality", @@ -6916,7 +6922,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "fatality", "futures", @@ -6937,7 +6943,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "clap 3.2.16", "frame-benchmarking-cli", @@ -6963,7 +6969,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7003,7 +7009,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "always-assert", "fatality", @@ -7024,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7037,7 +7043,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "derive_more", "fatality", @@ -7060,7 +7066,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7074,7 +7080,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "futures-timer", @@ -7094,7 +7100,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "always-assert", "async-trait", @@ -7117,7 +7123,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "parity-scale-codec", @@ -7135,7 +7141,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bitvec", "derive_more", @@ -7164,7 +7170,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bitvec", "futures", @@ -7184,7 +7190,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bitvec", "fatality", @@ -7203,7 +7209,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7218,7 +7224,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "futures", @@ -7236,7 +7242,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7251,7 +7257,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "futures-timer", @@ -7268,7 +7274,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "fatality", "futures", @@ -7287,7 +7293,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "futures", @@ -7304,7 +7310,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bitvec", "fatality", @@ -7322,7 +7328,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "always-assert", "assert_matches", @@ -7354,7 +7360,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "polkadot-node-primitives", @@ -7370,7 +7376,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "futures", "memory-lru", @@ -7386,7 +7392,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-std", "lazy_static", @@ -7404,7 +7410,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bs58", "futures", @@ -7423,7 +7429,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "derive_more", @@ -7444,7 +7450,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bounded-vec", "futures", @@ -7466,7 +7472,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7476,7 +7482,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "futures", @@ -7494,7 +7500,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "derive_more", @@ -7517,7 +7523,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "derive_more", @@ -7550,7 +7556,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "futures", @@ -7573,7 +7579,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "derive_more", "frame-support", @@ -7668,7 +7674,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7683,7 +7689,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bitvec", "frame-system", @@ -7713,7 +7719,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7745,7 +7751,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-primitives", "bitvec", @@ -7830,7 +7836,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-primitives", "bitvec", @@ -7877,7 +7883,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "polkadot-primitives", @@ -7889,7 +7895,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bs58", "parity-scale-codec", @@ -7901,7 +7907,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "bitflags", "bitvec", @@ -7944,7 +7950,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "async-trait", "beefy-gadget", @@ -8046,7 +8052,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8067,7 +8073,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8077,7 +8083,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8102,7 +8108,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-primitives", "bitvec", @@ -8163,7 +8169,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-benchmarking", "frame-system", @@ -8307,7 +8313,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8750,7 +8756,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8872,7 +8878,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8941,7 +8947,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "polkadot-primitives", @@ -9125,7 +9131,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "sp-core", @@ -9136,7 +9142,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -9163,7 +9169,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "futures-timer", @@ -9186,7 +9192,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9202,7 +9208,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9219,7 +9225,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9230,7 +9236,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "chrono", "clap 3.2.16", @@ -9269,7 +9275,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "fnv", "futures", @@ -9297,7 +9303,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "hash-db", "kvdb", @@ -9322,7 +9328,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -9346,7 +9352,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -9375,7 +9381,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "fork-tree", @@ -9417,7 +9423,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "jsonrpsee", @@ -9439,7 +9445,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9452,7 +9458,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -9477,7 +9483,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9504,7 +9510,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "environmental", "parity-scale-codec", @@ -9521,7 +9527,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "parity-scale-codec", @@ -9536,7 +9542,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9556,7 +9562,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "ahash", "async-trait", @@ -9597,7 +9603,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "finality-grandpa", "futures", @@ -9618,7 +9624,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "ansi_term", "futures", @@ -9635,7 +9641,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "hex", @@ -9650,7 +9656,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "asynchronous-codec", @@ -9699,7 +9705,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bitflags", "futures", @@ -9717,7 +9723,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "ahash", "futures", @@ -9734,7 +9740,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "libp2p", @@ -9754,7 +9760,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "fork-tree", "futures", @@ -9781,7 +9787,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bytes", "fnv", @@ -9809,7 +9815,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "libp2p", @@ -9822,7 +9828,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9831,7 +9837,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "hash-db", @@ -9861,7 +9867,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "jsonrpsee", @@ -9884,7 +9890,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "jsonrpsee", @@ -9897,7 +9903,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "directories", @@ -9964,7 +9970,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "parity-scale-codec", @@ -9978,7 +9984,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -9997,7 +10003,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "libc", @@ -10016,7 +10022,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "chrono", "futures", @@ -10034,7 +10040,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "ansi_term", "atty", @@ -10065,7 +10071,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10076,7 +10082,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "futures-timer", @@ -10102,7 +10108,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "log", @@ -10115,7 +10121,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "futures-timer", @@ -10560,7 +10566,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "enumn", "parity-scale-codec", @@ -10636,7 +10642,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "hash-db", "log", @@ -10653,7 +10659,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "blake2", "proc-macro-crate", @@ -10665,7 +10671,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10678,7 +10684,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "integer-sqrt", "num-traits", @@ -10693,7 +10699,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10706,7 +10712,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "parity-scale-codec", @@ -10718,7 +10724,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "sp-api", @@ -10730,7 +10736,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "log", @@ -10748,7 +10754,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -10767,7 +10773,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "parity-scale-codec", @@ -10785,7 +10791,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "merlin", @@ -10808,7 +10814,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10822,7 +10828,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -10835,7 +10841,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "base58", "bitflags", @@ -10881,7 +10887,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "blake2", "byteorder", @@ -10895,7 +10901,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro2", "quote", @@ -10906,7 +10912,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10915,7 +10921,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro2", "quote", @@ -10925,7 +10931,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "environmental", "parity-scale-codec", @@ -10936,7 +10942,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "finality-grandpa", "log", @@ -10954,7 +10960,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10968,7 +10974,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bytes", "futures", @@ -10994,7 +11000,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "lazy_static", "sp-core", @@ -11005,7 +11011,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -11022,7 +11028,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "thiserror", "zstd", @@ -11031,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "parity-scale-codec", @@ -11046,7 +11052,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11060,7 +11066,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "sp-api", "sp-core", @@ -11070,7 +11076,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "backtrace", "lazy_static", @@ -11080,7 +11086,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "rustc-hash", "serde", @@ -11090,7 +11096,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "either", "hash256-std-hasher", @@ -11112,7 +11118,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11130,7 +11136,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "Inflector", "proc-macro-crate", @@ -11142,7 +11148,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "parity-scale-codec", @@ -11156,7 +11162,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "serde", "serde_json", @@ -11165,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11179,7 +11185,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "scale-info", @@ -11190,7 +11196,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "hash-db", "log", @@ -11212,12 +11218,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11230,7 +11236,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "log", "sp-core", @@ -11243,7 +11249,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures-timer", @@ -11259,7 +11265,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "sp-std", @@ -11271,7 +11277,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "sp-api", "sp-runtime", @@ -11280,7 +11286,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "log", @@ -11296,7 +11302,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "hash-db", "memory-db", @@ -11312,7 +11318,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11329,7 +11335,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11340,7 +11346,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "impl-trait-for-tuples", "log", @@ -11597,7 +11603,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "platforms", ] @@ -11605,7 +11611,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11626,7 +11632,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures-util", "hyper", @@ -11639,7 +11645,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "jsonrpsee", "log", @@ -11660,7 +11666,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "async-trait", "futures", @@ -11686,7 +11692,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11696,7 +11702,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11707,7 +11713,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "ansi_term", "build-helper", @@ -11815,7 +11821,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "polkadot-primitives", @@ -12060,9 +12066,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" +checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" dependencies = [ "cfg-if 1.0.0", "pin-project-lite 0.2.7", @@ -12104,7 +12110,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12115,7 +12121,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12242,7 +12248,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7d8e5a1e3979cb0fc61123d5cfeec974dfa25334" +source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" dependencies = [ "clap 3.2.16", "jsonrpsee", @@ -12820,7 +12826,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "beefy-primitives", "bitvec", @@ -12909,7 +12915,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "polkadot-primitives", @@ -13193,7 +13199,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13207,7 +13213,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-support", "frame-system", @@ -13227,7 +13233,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "frame-benchmarking", "frame-support", @@ -13245,7 +13251,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#e7461a6bd020250fed010ba56b78b854ad463064" +source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index efa5472ebc..fdafdf3316 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -22,5 +22,5 @@ parking_lot = "0.12.1" derive_more = "0.99.2" async-trait = "0.1.56" thiserror = "1.0.31" -jsonrpsee-core = "0.14.0" +jsonrpsee-core = "0.15.1" parity-scale-codec = "3.1.5" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 3bae31b7fe..ea1f76bf70 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -24,7 +24,7 @@ futures = "0.3.21" futures-timer = "3.0.2" parity-scale-codec = "3.1.5" parking_lot = "0.12.1" -jsonrpsee = { version = "0.14.0", features = ["ws-client"] } +jsonrpsee = { version = "0.15.1", features = ["ws-client"] } tracing = "0.1.34" async-trait = "0.1.56" url = "2.2.2" diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index e5db09ca02..b97f92e0b6 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -16,7 +16,7 @@ log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } serde = { version = "1.0.141", features = ["derive"] } hex-literal = "0.3.4" -jsonrpsee = { version = "0.14.0", features = ["server"] } +jsonrpsee = { version = "0.15.1", features = ["server"] } # Local parachain-template-runtime = { path = "../runtime" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index f42cb6ab93..a879c8f966 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -24,7 +24,7 @@ statemine-runtime = { path = "../parachains/runtimes/assets/statemine" } westmint-runtime = { path = "../parachains/runtimes/assets/westmint" } contracts-rococo-runtime = { path = "../parachains/runtimes/contracts/contracts-rococo" } penpal-runtime = { path = "../parachains/runtimes/testing/penpal" } -jsonrpsee = { version = "0.14.0", features = ["server"] } +jsonrpsee = { version = "0.15.1", features = ["server"] } parachains-common = { path = "../parachains/common" } # Substrate diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index deac4f5763..946d8dbbb8 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -13,7 +13,7 @@ async-trait = "0.1.56" clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } -jsonrpsee = { version = "0.14.0", features = ["server"] } +jsonrpsee = { version = "0.15.1", features = ["server"] } parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.141", features = ["derive"] } From 4d04eebb44ebe96d756c1ec277cee1e952cd1be2 Mon Sep 17 00:00:00 2001 From: girazoki Date: Wed, 3 Aug 2022 18:04:13 +0200 Subject: [PATCH 188/238] Statemint runtimes to accept sufficient assets as xcm fee payment (#1278) * point to my branch * girazoki-add-TakeFirstAssetTrader-to-utility * Commit lock * point at custom branch * add new trader to statemine runtimes * compiles * Back to master * Update last tomls * Imports up * remove non-needing imports * FMT * log messages properly * Use TakeRevenue instead of HandleCredit * Introduce xcm fee handler * check total supply in tests * FMT * fix test * Start decoupling balance calculation into different traits * Make traits a bit more generic * PR suggestions * add import * import well * Place xcmfeesassethandler into parachains common * fix tests * config parameters * Min amount to fee receiver * Make minimum amount for block author to be at least the ED * Doc in AssetFeeAsExistentialDepositMultiplier * saturating sub * make sure we dont enter twice * FMT * fmt again * adapt tests * Add doc and struct for weight refund * Doc * More doc * PR suggestions * store all info related to asset payment as multiasset * return AssetNotFound instead of TooExpensive * Use asset transactor to deposit fee * uninstall from statemint * R for RUntime and CON for BalanceConverter * Rework logic to avoid unnecesary match and error * Rework ED check, also in case of refund * rework typo * In case refund makes drop below ED, just refund the difference * fix test westmint * clone id * move test imports to preamble * move test imports to preamble * test-utils with builderS * lock file updated * remove unused imports Co-authored-by: Stephen Shelton Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: joepetrowski --- Cargo.lock | 27 ++ parachains/common/Cargo.toml | 4 + parachains/common/src/xcm_config.rs | 43 ++- .../runtimes/assets/statemine/Cargo.toml | 1 + .../assets/statemine/src/xcm_config.rs | 33 +- .../runtimes/assets/statemine/tests/tests.rs | 301 ++++++++++++++++++ .../runtimes/assets/statemint/Cargo.toml | 1 + .../assets/statemint/src/xcm_config.rs | 3 +- .../runtimes/assets/statemint/tests/tests.rs | 71 +++++ .../runtimes/assets/test-utils/Cargo.toml | 45 +++ .../runtimes/assets/test-utils/src/lib.rs | 134 ++++++++ .../runtimes/assets/westmint/Cargo.toml | 1 + .../assets/westmint/src/xcm_config.rs | 33 +- .../runtimes/assets/westmint/tests/tests.rs | 300 +++++++++++++++++ primitives/utility/Cargo.toml | 5 + primitives/utility/src/lib.rs | 218 ++++++++++++- 16 files changed, 1209 insertions(+), 11 deletions(-) create mode 100644 parachains/runtimes/assets/statemine/tests/tests.rs create mode 100644 parachains/runtimes/assets/statemint/tests/tests.rs create mode 100644 parachains/runtimes/assets/test-utils/Cargo.toml create mode 100644 parachains/runtimes/assets/test-utils/src/lib.rs create mode 100644 parachains/runtimes/assets/westmint/tests/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 05712a2963..0e449de544 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -165,6 +165,25 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +[[package]] +name = "asset-test-utils" +version = "1.0.0" +dependencies = [ + "frame-support", + "frame-system", + "hex-literal", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "parachains-common", + "sp-consensus-aura", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "substrate-wasm-builder", +] + [[package]] name = "async-attributes" version = "1.1.2" @@ -1872,6 +1891,7 @@ version = "0.1.0" dependencies = [ "cumulus-primitives-core", "frame-support", + "log", "parity-scale-codec", "polkadot-core-primitives", "polkadot-parachain 0.9.27", @@ -1880,6 +1900,8 @@ dependencies = [ "sp-std", "sp-trie", "xcm", + "xcm-builder", + "xcm-executor", ] [[package]] @@ -6470,6 +6492,7 @@ dependencies = [ name = "parachains-common" version = "1.0.0" dependencies = [ + "cumulus-primitives-utility", "frame-executive", "frame-support", "frame-system", @@ -6489,6 +6512,7 @@ dependencies = [ "sp-std", "substrate-wasm-builder", "xcm", + "xcm-builder", "xcm-executor", ] @@ -11387,6 +11411,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" name = "statemine-runtime" version = "2.0.0" dependencies = [ + "asset-test-utils", "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", "cumulus-pallet-parachain-system", @@ -11453,6 +11478,7 @@ dependencies = [ name = "statemint-runtime" version = "1.0.0" dependencies = [ + "asset-test-utils", "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", "cumulus-pallet-parachain-system", @@ -12928,6 +12954,7 @@ dependencies = [ name = "westmint-runtime" version = "1.0.0" dependencies = [ + "asset-test-utils", "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", "cumulus-pallet-parachain-system", diff --git a/parachains/common/Cargo.toml b/parachains/common/Cargo.toml index 57a1eaa6ce..dd70f4436a 100644 --- a/parachains/common/Cargo.toml +++ b/parachains/common/Cargo.toml @@ -31,9 +31,11 @@ polkadot-primitives = { git = "https://github.com/paritytech/polkadot", default- polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } # Cumulus pallet-collator-selection = { path = "../../pallets/collator-selection", default-features = false } +cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } [dev-dependencies] pallet-authorship = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } @@ -60,4 +62,6 @@ std = [ "sp-io/std", "sp-std/std", "pallet-collator-selection/std", + "cumulus-primitives-utility/std", + "xcm-builder/std" ] diff --git a/parachains/common/src/xcm_config.rs b/parachains/common/src/xcm_config.rs index d244428217..d56876d60c 100644 --- a/parachains/common/src/xcm_config.rs +++ b/parachains/common/src/xcm_config.rs @@ -1,5 +1,10 @@ +use crate::impls::AccountIdOf; use core::marker::PhantomData; -use frame_support::{log, weights::Weight}; +use frame_support::{ + log, + traits::{fungibles::Inspect, tokens::BalanceConversion}, + weights::{Weight, WeightToFee, WeightToFeePolynomial}, +}; use xcm::latest::prelude::*; use xcm_executor::traits::ShouldExecute; @@ -66,3 +71,39 @@ impl ShouldExecute for DenyReserveTransferToRelayChain { Ok(()) } } + +/// A `ChargeFeeInFungibles` implementation that converts the output of +/// a given WeightToFee implementation an amount charged in +/// a particular assetId from pallet-assets +pub struct AssetFeeAsExistentialDepositMultiplier( + PhantomData<(Runtime, WeightToFee, BalanceConverter)>, +); +impl + cumulus_primitives_utility::ChargeWeightInFungibles< + AccountIdOf, + pallet_assets::Pallet, + > for AssetFeeAsExistentialDepositMultiplier +where + Runtime: pallet_assets::Config, + WeightToFee: WeightToFeePolynomial, + BalanceConverter: BalanceConversion< + CurrencyBalance, + ::AssetId, + ::Balance, + >, + AccountIdOf: + From + Into, +{ + fn charge_weight_in_fungibles( + asset_id: as Inspect>>::AssetId, + weight: Weight, + ) -> Result< as Inspect>>::Balance, XcmError> + { + let amount = WeightToFee::weight_to_fee(&weight); + // If the amount gotten is not at least the ED, then make it be the ED of the asset + // This is to avoid burning assets and decreasing the supply + let asset_amount = BalanceConverter::to_asset_balance(amount, asset_id) + .map_err(|_| XcmError::TooExpensive)?; + Ok(asset_amount) + } +} diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index ebbd86b766..8f8e3e9890 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -75,6 +75,7 @@ parachains-common = { path = "../../../common", default-features = false } [dev-dependencies] hex-literal = "0.3.4" +asset-test-utils = { path = "../test-utils"} [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/parachains/runtimes/assets/statemine/src/xcm_config.rs b/parachains/runtimes/assets/statemine/src/xcm_config.rs index ce6fd18f91..3875cf7901 100644 --- a/parachains/runtimes/assets/statemine/src/xcm_config.rs +++ b/parachains/runtimes/assets/statemine/src/xcm_config.rs @@ -14,7 +14,7 @@ // limitations under the License. use super::{ - AccountId, AssetId, Assets, Balance, Balances, Call, Event, Origin, ParachainInfo, + AccountId, AssetId, Assets, Authorship, Balance, Balances, Call, Event, Origin, ParachainInfo, ParachainSystem, PolkadotXcm, Runtime, WeightToFee, XcmpQueue, }; use frame_support::{ @@ -25,9 +25,12 @@ use frame_support::{ use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, - xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}, + xcm_config::{ + AssetFeeAsExistentialDepositMultiplier, DenyReserveTransferToRelayChain, DenyThenTry, + }, }; use polkadot_parachain::primitives::Sibling; +use sp_runtime::traits::ConvertInto; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, @@ -129,6 +132,7 @@ parameter_types! { // One XCM operation is 1_000_000_000 weight - almost certainly a conservative estimate. pub UnitWeightCost: Weight = 1_000_000_000; pub const MaxInstructions: u32 = 100; + pub XcmAssetFeesReceiver: Option = Authorship::author(); } match_types! { @@ -170,8 +174,29 @@ impl xcm_executor::Config for XcmConfig { type LocationInverter = LocationInverter; type Barrier = Barrier; type Weigher = FixedWeightBounds; - type Trader = - UsingComponents>; + type Trader = ( + UsingComponents>, + cumulus_primitives_utility::TakeFirstAssetTrader< + AccountId, + AssetFeeAsExistentialDepositMultiplier< + Runtime, + WeightToFee, + pallet_assets::BalanceToAssetBalance, + >, + ConvertedConcreteAssetId< + AssetId, + Balance, + AsPrefixedGeneralIndex, + JustTry, + >, + Assets, + cumulus_primitives_utility::XcmFeesTo32ByteAccount< + FungiblesTransactor, + AccountId, + XcmAssetFeesReceiver, + >, + >, + ); type ResponseHandler = PolkadotXcm; type AssetTrap = PolkadotXcm; type AssetClaims = PolkadotXcm; diff --git a/parachains/runtimes/assets/statemine/tests/tests.rs b/parachains/runtimes/assets/statemine/tests/tests.rs new file mode 100644 index 0000000000..c99debbced --- /dev/null +++ b/parachains/runtimes/assets/statemine/tests/tests.rs @@ -0,0 +1,301 @@ +use asset_test_utils::{ExtBuilder, RuntimeHelper}; +use frame_support::{ + assert_noop, assert_ok, traits::PalletInfo, weights::WeightToFee as WeightToFeeT, +}; +use parachains_common::{AccountId, AuraId}; +pub use statemine_runtime::{ + constants::fee::WeightToFee, xcm_config::XcmConfig, Assets, Balances, ExistentialDeposit, + Runtime, SessionKeys, System, +}; +use xcm::latest::prelude::*; +use xcm_executor::traits::WeightTrader; +pub const ALICE: [u8; 32] = [1u8; 32]; + +#[test] +fn test_asset_xcm_trader() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + // We first mint enough asset for the account to exist for assets + assert_ok!(Assets::mint( + RuntimeHelper::::origin_of(AccountId::from(ALICE)), + 1, + AccountId::from(ALICE).into(), + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy 4e9 weight + let bought = 4_000_000_000u64; + + // lets calculate amount needed + let amount_needed = WeightToFee::weight_to_fee(&bought); + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let asset: MultiAsset = (asset_multilocation, amount_needed).into(); + + // Make sure buy_weight does not return an error + assert_ok!(trader.buy_weight(bought, asset.into())); + + // Drop trader + drop(trader); + + // Make sure author(Alice) has received the amount + assert_eq!( + Assets::balance(1, AccountId::from(ALICE)), + ExistentialDeposit::get() + amount_needed + ); + + // We also need to ensure the total supply increased + assert_eq!(Assets::total_supply(1), ExistentialDeposit::get() + amount_needed); + }); +} + +#[test] +fn test_asset_xcm_trader_with_refund() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + // We first mint enough asset for the account to exist for assets + assert_ok!(Assets::mint( + RuntimeHelper::::origin_of(AccountId::from(ALICE)), + 1, + AccountId::from(ALICE).into(), + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy 4e9 weight + let bought = 4_000_000_000u64; + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + // lets calculate amount needed + let amount_bought = WeightToFee::weight_to_fee(&bought); + + let asset: MultiAsset = (asset_multilocation.clone(), amount_bought).into(); + + // Make sure buy_weight does not return an error + assert_ok!(trader.buy_weight(bought, asset.clone().into())); + + // Make sure again buy_weight does return an error + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::NotWithdrawable); + + // We actually use half of the weight + let weight_used = bought / 2; + + // Make sure refurnd works. + let amount_refunded = WeightToFee::weight_to_fee(&(bought - weight_used)); + + assert_eq!( + trader.refund_weight(bought - weight_used), + Some((asset_multilocation, amount_refunded).into()) + ); + + // Drop trader + drop(trader); + + // We only should have paid for half of the bought weight + let fees_paid = WeightToFee::weight_to_fee(&weight_used); + + assert_eq!( + Assets::balance(1, AccountId::from(ALICE)), + ExistentialDeposit::get() + fees_paid + ); + + // We also need to ensure the total supply increased + assert_eq!(Assets::total_supply(1), ExistentialDeposit::get() + fees_paid); + }); +} + +#[test] +fn test_asset_xcm_trader_refund_not_possible_since_amount_less_than_ed() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy small amount + let bought = 500_000_000u64; + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let amount_bought = WeightToFee::weight_to_fee(&bought); + + assert!( + amount_bought < ExistentialDeposit::get(), + "we are testing what happens when the amount does not exceed ED" + ); + + let asset: MultiAsset = (asset_multilocation.clone(), amount_bought).into(); + + // Buy weight should return an error + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::TooExpensive); + + // not credited since the ED is higher than this value + assert_eq!(Assets::balance(1, AccountId::from(ALICE)), 0); + + // We also need to ensure the total supply did not increase + assert_eq!(Assets::total_supply(1), 0); + }); +} + +#[test] +fn test_that_buying_ed_refund_does_not_refund() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are gonna buy ED + let bought: u64 = ExistentialDeposit::get().try_into().unwrap(); + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let amount_bought = WeightToFee::weight_to_fee(&bought); + + assert!( + amount_bought < ExistentialDeposit::get(), + "we are testing what happens when the amount does not exceed ED" + ); + + // We know we will have to buy at least ED, so lets make sure first it will + // fail with a payment of less than ED + let asset: MultiAsset = (asset_multilocation.clone(), amount_bought).into(); + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::TooExpensive); + + // Now lets buy ED at least + let asset: MultiAsset = (asset_multilocation.clone(), ExistentialDeposit::get()).into(); + + // Buy weight should work + assert_ok!(trader.buy_weight(bought, asset.into())); + + // Should return None. We have a specific check making sure we dont go below ED for + // drop payment + assert_eq!(trader.refund_weight(bought), None); + + // Drop trader + drop(trader); + + // Make sure author(Alice) has received the amount + assert_eq!(Assets::balance(1, AccountId::from(ALICE)), ExistentialDeposit::get()); + + // We also need to ensure the total supply increased + assert_eq!(Assets::total_supply(1), ExistentialDeposit::get()); + }); +} diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index 7746e97130..2e713322de 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -74,6 +74,7 @@ parachains-common = { path = "../../../common", default-features = false } [dev-dependencies] hex-literal = "0.3.4" +asset-test-utils = { path = "../test-utils"} [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/parachains/runtimes/assets/statemint/src/xcm_config.rs b/parachains/runtimes/assets/statemint/src/xcm_config.rs index a8c652588c..abfe9bb986 100644 --- a/parachains/runtimes/assets/statemint/src/xcm_config.rs +++ b/parachains/runtimes/assets/statemint/src/xcm_config.rs @@ -14,7 +14,7 @@ // limitations under the License. use super::{ - AccountId, AssetId, Assets, Balance, Balances, Call, Event, Origin, ParachainInfo, + AccountId, AssetId, Assets, Authorship, Balance, Balances, Call, Event, Origin, ParachainInfo, ParachainSystem, PolkadotXcm, Runtime, WeightToFee, XcmpQueue, }; use frame_support::{ @@ -129,6 +129,7 @@ parameter_types! { // One XCM operation is 1_000_000_000 weight - almost certainly a conservative estimate. pub UnitWeightCost: Weight = 1_000_000_000; pub const MaxInstructions: u32 = 100; + pub XcmAssetFeesReceiver: Option = Authorship::author(); } match_types! { diff --git a/parachains/runtimes/assets/statemint/tests/tests.rs b/parachains/runtimes/assets/statemint/tests/tests.rs new file mode 100644 index 0000000000..518936210f --- /dev/null +++ b/parachains/runtimes/assets/statemint/tests/tests.rs @@ -0,0 +1,71 @@ +use asset_test_utils::{ExtBuilder, RuntimeHelper}; +use frame_support::{ + assert_noop, assert_ok, traits::PalletInfo, weights::WeightToFee as WeightToFeeT, +}; +use parachains_common::{AccountId, StatemintAuraId as AuraId}; +pub use statemint_runtime::{ + constants::fee::WeightToFee, xcm_config::XcmConfig, Assets, Balances, ExistentialDeposit, + Runtime, SessionKeys, System, +}; +use xcm::latest::prelude::*; +use xcm_executor::traits::WeightTrader; +pub const ALICE: [u8; 32] = [1u8; 32]; + +#[test] +fn test_asset_xcm_trader_does_not_work_in_statemine() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::ed25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy 400e9 weight + // Because of the ED being higher in statemine + // and not to complicate things, we use a little + // bit more of weight + let bought = 400_000_000_000u64; + + // lets calculate amount needed + let amount_needed = WeightToFee::weight_to_fee(&bought); + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let asset: MultiAsset = (asset_multilocation, amount_needed).into(); + + // Buy weight should return an error, since asset trader not installed + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::TooExpensive); + + // not credited since the ED is higher than this value + assert_eq!(Assets::balance(1, AccountId::from(ALICE)), 0); + + // We also need to ensure the total supply did not increase + assert_eq!(Assets::total_supply(1), 0); + }); +} diff --git a/parachains/runtimes/assets/test-utils/Cargo.toml b/parachains/runtimes/assets/test-utils/Cargo.toml new file mode 100644 index 0000000000..52ce1d2d9a --- /dev/null +++ b/parachains/runtimes/assets/test-utils/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "asset-test-utils" +version = "1.0.0" +authors = ["Parity Technologies "] +edition = "2021" +description = "Statemint parachain runtime" + +[dependencies] + +# Substrate + +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" } +pallet-balances = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } + +# Cumulus +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachains-common = { path = "../../../common", default-features = false } + +[dev-dependencies] +hex-literal = "0.3.4" + +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = [ "std" ] +std = [ + "frame-support/std", + "frame-system/std", + "pallet-balances/std", + "pallet-collator-selection/std", + "pallet-session/std", + "parachains-common/std", + "sp-consensus-aura/std", + "sp-io/std", + "sp-runtime/std", + "sp-std/std", +] diff --git a/parachains/runtimes/assets/test-utils/src/lib.rs b/parachains/runtimes/assets/test-utils/src/lib.rs new file mode 100644 index 0000000000..f37465e5bd --- /dev/null +++ b/parachains/runtimes/assets/test-utils/src/lib.rs @@ -0,0 +1,134 @@ +use frame_support::traits::GenesisBuild; +use sp_std::marker::PhantomData; + +use frame_support::traits::OriginTrait; +use parachains_common::AccountId; +use sp_consensus_aura::AURA_ENGINE_ID; +use sp_core::Encode; +use sp_runtime::{Digest, DigestItem}; + +pub type BalanceOf = ::Balance; +pub type AccountIdOf = ::AccountId; +pub type ValidatorIdOf = ::ValidatorId; +pub type SessionKeysOf = ::Keys; + +// Basic builder based on balances, collators and pallet_sessopm +pub struct ExtBuilder< + Runtime: frame_system::Config + pallet_balances::Config + pallet_session::Config, +> { + // endowed accounts with balances + balances: Vec<(AccountIdOf, BalanceOf)>, + // collators to test block prod + collators: Vec>, + // keys added to pallet session + keys: Vec<(AccountIdOf, ValidatorIdOf, SessionKeysOf)>, + _runtime: PhantomData, +} + +impl Default + for ExtBuilder +{ + fn default() -> ExtBuilder { + ExtBuilder { balances: vec![], collators: vec![], keys: vec![], _runtime: PhantomData } + } +} + +impl + ExtBuilder +{ + pub fn with_balances( + mut self, + balances: Vec<(AccountIdOf, BalanceOf)>, + ) -> Self { + self.balances = balances; + self + } + pub fn with_collators(mut self, collators: Vec>) -> Self { + self.collators = collators; + self + } + + pub fn with_session_keys( + mut self, + keys: Vec<(AccountIdOf, ValidatorIdOf, SessionKeysOf)>, + ) -> Self { + self.keys = keys; + self + } + + pub fn build(self) -> sp_io::TestExternalities + where + Runtime: + pallet_collator_selection::Config + pallet_balances::Config + pallet_session::Config, + ValidatorIdOf: From>, + { + let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); + + pallet_balances::GenesisConfig:: { balances: self.balances.into() } + .assimilate_storage(&mut t) + .unwrap(); + + pallet_collator_selection::GenesisConfig:: { + invulnerables: self.collators.clone().into(), + candidacy_bond: Default::default(), + desired_candidates: Default::default(), + } + .assimilate_storage(&mut t) + .unwrap(); + + pallet_session::GenesisConfig:: { keys: self.keys } + .assimilate_storage(&mut t) + .unwrap(); + + let mut ext = sp_io::TestExternalities::new(t); + + ext.execute_with(|| { + frame_system::Pallet::::set_block_number(1u32.into()); + }); + + ext + } +} + +pub struct RuntimeHelper(PhantomData); +/// Utility function that advances the chain to the desired block number. +/// If an author is provided, that author information is injected to all the blocks in the meantime. +impl RuntimeHelper +where + AccountIdOf: + Into<<::Origin as OriginTrait>::AccountId>, +{ + pub fn run_to_block(n: u32, author: Option) { + while frame_system::Pallet::::block_number() < n.into() { + // Set the new block number and author + match author { + Some(ref author) => { + let pre_digest = Digest { + logs: vec![DigestItem::PreRuntime(AURA_ENGINE_ID, author.encode())], + }; + frame_system::Pallet::::reset_events(); + frame_system::Pallet::::initialize( + &(frame_system::Pallet::::block_number() + 1u32.into()), + &frame_system::Pallet::::parent_hash(), + &pre_digest, + ); + }, + None => { + frame_system::Pallet::::set_block_number( + frame_system::Pallet::::block_number() + 1u32.into(), + ); + }, + } + } + } + + pub fn root_origin() -> ::Origin { + ::Origin::root() + } + + pub fn origin_of( + account_id: AccountIdOf, + ) -> ::Origin { + ::Origin::signed(account_id.into()) + } +} diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index df3fb7ea01..4a06a86fac 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -74,6 +74,7 @@ parachains-common = { path = "../../../common", default-features = false } [dev-dependencies] hex-literal = "0.3.4" +asset-test-utils = { path = "../test-utils"} [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/parachains/runtimes/assets/westmint/src/xcm_config.rs b/parachains/runtimes/assets/westmint/src/xcm_config.rs index 6aec071de0..4a2daa3380 100644 --- a/parachains/runtimes/assets/westmint/src/xcm_config.rs +++ b/parachains/runtimes/assets/westmint/src/xcm_config.rs @@ -14,7 +14,7 @@ // limitations under the License. use super::{ - AccountId, AssetId, Assets, Balance, Balances, Call, Event, Origin, ParachainInfo, + AccountId, AssetId, Assets, Authorship, Balance, Balances, Call, Event, Origin, ParachainInfo, ParachainSystem, PolkadotXcm, Runtime, WeightToFee, XcmpQueue, }; use frame_support::{ @@ -25,9 +25,12 @@ use frame_support::{ use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, - xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}, + xcm_config::{ + AssetFeeAsExistentialDepositMultiplier, DenyReserveTransferToRelayChain, DenyThenTry, + }, }; use polkadot_parachain::primitives::Sibling; +use sp_runtime::traits::ConvertInto; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, @@ -130,6 +133,7 @@ parameter_types! { // One XCM operation is 1_000_000_000 weight - almost certainly a conservative estimate. pub UnitWeightCost: Weight = 1_000_000_000; pub const MaxInstructions: u32 = 100; + pub XcmAssetFeesReceiver: Option = Authorship::author(); } match_types! { @@ -167,8 +171,29 @@ impl xcm_executor::Config for XcmConfig { type LocationInverter = LocationInverter; type Barrier = Barrier; type Weigher = FixedWeightBounds; - type Trader = - UsingComponents>; + type Trader = ( + UsingComponents>, + cumulus_primitives_utility::TakeFirstAssetTrader< + AccountId, + AssetFeeAsExistentialDepositMultiplier< + Runtime, + WeightToFee, + pallet_assets::BalanceToAssetBalance, + >, + ConvertedConcreteAssetId< + AssetId, + Balance, + AsPrefixedGeneralIndex, + JustTry, + >, + Assets, + cumulus_primitives_utility::XcmFeesTo32ByteAccount< + FungiblesTransactor, + AccountId, + XcmAssetFeesReceiver, + >, + >, + ); type ResponseHandler = PolkadotXcm; type AssetTrap = PolkadotXcm; type AssetClaims = PolkadotXcm; diff --git a/parachains/runtimes/assets/westmint/tests/tests.rs b/parachains/runtimes/assets/westmint/tests/tests.rs new file mode 100644 index 0000000000..a967c85add --- /dev/null +++ b/parachains/runtimes/assets/westmint/tests/tests.rs @@ -0,0 +1,300 @@ +use asset_test_utils::{ExtBuilder, RuntimeHelper}; +use frame_support::{ + assert_noop, assert_ok, traits::PalletInfo, weights::WeightToFee as WeightToFeeT, +}; +use parachains_common::{AccountId, AuraId}; +pub use westmint_runtime::{ + constants::fee::WeightToFee, xcm_config::XcmConfig, Assets, Balances, ExistentialDeposit, + Runtime, SessionKeys, System, +}; +use xcm::latest::prelude::*; +use xcm_executor::traits::WeightTrader; + +pub const ALICE: [u8; 32] = [1u8; 32]; + +#[test] +fn test_asset_xcm_trader() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + // We first mint enough asset for the account to exist for assets + assert_ok!(Assets::mint( + RuntimeHelper::::origin_of(AccountId::from(ALICE)), + 1, + AccountId::from(ALICE).into(), + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy 4e9 weight + let bought = 4_000_000_000u64; + + // lets calculate amount needed + let amount_needed = WeightToFee::weight_to_fee(&bought); + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let asset: MultiAsset = (asset_multilocation, amount_needed).into(); + + // Make sure buy_weight does not return an error + assert_ok!(trader.buy_weight(bought, asset.into())); + + // Drop trader + drop(trader); + + // Make sure author(Alice) has received the amount + assert_eq!( + Assets::balance(1, AccountId::from(ALICE)), + ExistentialDeposit::get() + amount_needed + ); + + // We also need to ensure the total supply increased + assert_eq!(Assets::total_supply(1), ExistentialDeposit::get() + amount_needed); + }); +} + +#[test] +fn test_asset_xcm_trader_with_refund() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + // We first mint enough asset for the account to exist for assets + assert_ok!(Assets::mint( + RuntimeHelper::::origin_of(AccountId::from(ALICE)), + 1, + AccountId::from(ALICE).into(), + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy 4e9 weight + let bought = 4_000_000_000u64; + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + // lets calculate amount needed + let amount_bought = WeightToFee::weight_to_fee(&bought); + + let asset: MultiAsset = (asset_multilocation.clone(), amount_bought).into(); + + // Make sure buy_weight does not return an error + assert_ok!(trader.buy_weight(bought, asset.clone().into())); + + // Make sure again buy_weight does return an error + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::NotWithdrawable); + + // We actually use half of the weight + let weight_used = bought / 2; + + // Make sure refurnd works. + let amount_refunded = WeightToFee::weight_to_fee(&(bought - weight_used)); + + assert_eq!( + trader.refund_weight(bought - weight_used), + Some((asset_multilocation, amount_refunded).into()) + ); + + // Drop trader + drop(trader); + + // We only should have paid for half of the bought weight + let fees_paid = WeightToFee::weight_to_fee(&weight_used); + + assert_eq!( + Assets::balance(1, AccountId::from(ALICE)), + ExistentialDeposit::get() + fees_paid + ); + + // We also need to ensure the total supply increased + assert_eq!(Assets::total_supply(1), ExistentialDeposit::get() + fees_paid); + }); +} + +#[test] +fn test_asset_xcm_trader_refund_not_possible_since_amount_less_than_ed() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + // We are going to buy 4e9 weight + let bought = 500_000_000u64; + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let amount_bought = WeightToFee::weight_to_fee(&bought); + + assert!( + amount_bought < ExistentialDeposit::get(), + "we are testing what happens when the amount does not exceed ED" + ); + + let asset: MultiAsset = (asset_multilocation.clone(), amount_bought).into(); + + // Buy weight should return an error + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::TooExpensive); + + // not credited since the ED is higher than this value + assert_eq!(Assets::balance(1, AccountId::from(ALICE)), 0); + + // We also need to ensure the total supply did not increase + assert_eq!(Assets::total_supply(1), 0); + }); +} + +#[test] +fn test_that_buying_ed_refund_does_not_refund() { + ExtBuilder::::default() + .with_collators(vec![AccountId::from(ALICE)]) + .with_session_keys(vec![( + AccountId::from(ALICE), + AccountId::from(ALICE), + SessionKeys { aura: AuraId::from(sp_core::sr25519::Public::from_raw(ALICE)) }, + )]) + .build() + .execute_with(|| { + // We need root origin to create a sufficient asset + // We set existential deposit to be identical to the one for Balances first + assert_ok!(Assets::force_create( + RuntimeHelper::::root_origin(), + 1, + AccountId::from(ALICE).into(), + true, + ExistentialDeposit::get() + )); + + let mut trader = ::Trader::new(); + + // Set Alice as block author, who will receive fees + RuntimeHelper::::run_to_block(2, Some(AccountId::from(ALICE))); + + let bought = 500_000_000u64; + + let asset_multilocation = MultiLocation::new( + 0, + X2( + PalletInstance( + ::PalletInfo::index::().unwrap() + as u8, + ), + GeneralIndex(1), + ), + ); + + let amount_bought = WeightToFee::weight_to_fee(&bought); + + assert!( + amount_bought < ExistentialDeposit::get(), + "we are testing what happens when the amount does not exceed ED" + ); + + // We know we will have to buy at least ED, so lets make sure first it will + // fail with a payment of less than ED + let asset: MultiAsset = (asset_multilocation.clone(), amount_bought).into(); + assert_noop!(trader.buy_weight(bought, asset.into()), XcmError::TooExpensive); + + // Now lets buy ED at least + let asset: MultiAsset = (asset_multilocation.clone(), ExistentialDeposit::get()).into(); + + // Buy weight should work + assert_ok!(trader.buy_weight(bought, asset.into())); + + // Should return None. We have a specific check making sure we dont go below ED for + // drop payment + assert_eq!(trader.refund_weight(bought), None); + + // Drop trader + drop(trader); + + // Make sure author(Alice) has received the amount + assert_eq!(Assets::balance(1, AccountId::from(ALICE)), ExistentialDeposit::get()); + + // We also need to ensure the total supply increased + assert_eq!(Assets::total_supply(1), ExistentialDeposit::get()); + }); +} diff --git a/primitives/utility/Cargo.toml b/primitives/utility/Cargo.toml index 74cb8a3eb5..6a76740bde 100644 --- a/primitives/utility/Cargo.toml +++ b/primitives/utility/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } +log = { version = "0.4.17", default-features = false } # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } @@ -18,6 +19,9 @@ polkadot-core-primitives = { git = "https://github.com/paritytech/polkadot", def polkadot-parachain = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } polkadot-primitives = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } + # Cumulus cumulus-primitives-core = { path = "../core", default-features = false } @@ -34,4 +38,5 @@ std = [ "polkadot-parachain/std", "polkadot-primitives/std", "cumulus-primitives-core/std", + "xcm-executor/std", ] diff --git a/primitives/utility/src/lib.rs b/primitives/utility/src/lib.rs index 69397247a3..ea7a81f327 100644 --- a/primitives/utility/src/lib.rs +++ b/primitives/utility/src/lib.rs @@ -21,9 +21,16 @@ use codec::Encode; use cumulus_primitives_core::UpwardMessageSender; +use frame_support::{ + traits::tokens::{fungibles, fungibles::Inspect}, + weights::Weight, +}; +use sp_runtime::{traits::Saturating, SaturatedConversion}; + use sp_std::marker::PhantomData; use xcm::{latest::prelude::*, WrapVersion}; - +use xcm_builder::TakeRevenue; +use xcm_executor::traits::{MatchesFungibles, TransactAsset, WeightTrader}; /// Xcm router which recognises the `Parent` destination and handles it by sending the message into /// the given UMP `UpwardMessageSender` implementation. Thus this essentially adapts an /// `UpwardMessageSender` trait impl into a `SendXcm` trait impl. @@ -51,3 +58,212 @@ impl SendXcm for ParentAsUmp { } } } + +/// Contains information to handle refund/payment for xcm-execution +#[derive(Clone, Eq, PartialEq, Debug)] +struct AssetTraderRefunder { + // The amount of weight bought minus the weigh already refunded + weight_outstanding: Weight, + // The concrete asset containing the asset location and outstanding balance + outstanding_concrete_asset: MultiAsset, +} + +/// Charges for exercution in the first multiasset of those selected for fee payment +/// Only succeeds for Concrete Fungible Assets +/// First tries to convert the this MultiAsset into a local assetId +/// Then charges for this assetId as described by FeeCharger +/// Weight, paid balance, local asset Id and the multilocation is stored for +/// later refund purposes +/// Important: Errors if the Trader is being called twice by 2 BuyExecution instructions +/// Alternatively we could just return payment in the aforementioned case +pub struct TakeFirstAssetTrader< + AccountId, + FeeCharger: ChargeWeightInFungibles, + Matcher: MatchesFungibles, + ConcreteAssets: fungibles::Mutate + fungibles::Transfer + fungibles::Balanced, + HandleRefund: TakeRevenue, +>( + Option, + PhantomData<(AccountId, FeeCharger, Matcher, ConcreteAssets, HandleRefund)>, +); +impl< + AccountId, + FeeCharger: ChargeWeightInFungibles, + Matcher: MatchesFungibles, + ConcreteAssets: fungibles::Mutate + + fungibles::Transfer + + fungibles::Balanced, + HandleRefund: TakeRevenue, + > WeightTrader + for TakeFirstAssetTrader +{ + fn new() -> Self { + Self(None, PhantomData) + } + // We take first multiasset + // Check whether we can convert fee to asset_fee (is_sufficient, min_deposit) + // If everything goes well, we charge. + fn buy_weight( + &mut self, + weight: Weight, + payment: xcm_executor::Assets, + ) -> Result { + log::trace!(target: "xcm::weight", "TakeFirstAssetTrader::buy_weight weight: {:?}, payment: {:?}", weight, payment); + + // Make sure we dont enter twice + if self.0.is_some() { + return Err(XcmError::NotWithdrawable) + } + + // We take the very first multiasset from payment + let multiassets: MultiAssets = payment.clone().into(); + + // Take the first multiasset from the selected MultiAssets + let first = multiassets.get(0).ok_or(XcmError::AssetNotFound)?; + + // Get the local asset id in which we can pay for fees + let (local_asset_id, _) = + Matcher::matches_fungibles(&first).map_err(|_| XcmError::AssetNotFound)?; + + // Calculate how much we should charge in the asset_id for such amount of weight + // Require at least a payment of minimum_balance + // Necessary for fully collateral-backed assets + let asset_balance: u128 = FeeCharger::charge_weight_in_fungibles(local_asset_id, weight) + .map(|amount| { + let minimum_balance = ConcreteAssets::minimum_balance(local_asset_id); + if amount < minimum_balance { + minimum_balance + } else { + amount + } + })? + .try_into() + .map_err(|_| XcmError::Overflow)?; + + // Convert to the same kind of multiasset, with the required fungible balance + let required = first.id.clone().into_multiasset(asset_balance.into()); + + // Substract payment + let unused = payment.checked_sub(required.clone()).map_err(|_| XcmError::TooExpensive)?; + + // record weight and multiasset + self.0 = Some(AssetTraderRefunder { + weight_outstanding: weight, + outstanding_concrete_asset: required, + }); + + Ok(unused) + } + + fn refund_weight(&mut self, weight: Weight) -> Option { + log::trace!(target: "xcm::weight", "TakeFirstAssetTrader::refund_weight weight: {:?}", weight); + if let Some(AssetTraderRefunder { + mut weight_outstanding, + outstanding_concrete_asset: MultiAsset { id, fun }, + }) = self.0.clone() + { + let weight = weight.min(weight_outstanding); + + // Get the local asset id in which we can refund fees + let (local_asset_id, outstanding_balance) = + Matcher::matches_fungibles(&(id.clone(), fun).into()).ok()?; + + let minimum_balance = ConcreteAssets::minimum_balance(local_asset_id); + + // Calculate asset_balance + // This read should have already be cached in buy_weight + let (asset_balance, outstanding_minus_substracted) = + FeeCharger::charge_weight_in_fungibles(local_asset_id, weight).ok().map( + |asset_balance| { + // Require at least a drop of minimum_balance + // Necessary for fully collateral-backed assets + if outstanding_balance.saturating_sub(asset_balance) > minimum_balance { + (asset_balance, outstanding_balance.saturating_sub(asset_balance)) + } + // If the amount to be refunded leaves the remaining balance below ED, + // we just refund the exact amount that guarantees at least ED will be + // dropped + else { + (outstanding_balance.saturating_sub(minimum_balance), minimum_balance) + } + }, + )?; + + // Convert balances into u128 + let outstanding_minus_substracted: u128 = + outstanding_minus_substracted.saturated_into(); + let asset_balance: u128 = asset_balance.saturated_into(); + + // Construct outstanding_concrete_asset with the same location id and substracted balance + let outstanding_concrete_asset: MultiAsset = + (id.clone(), outstanding_minus_substracted).into(); + + // Substract from existing weight and balance + weight_outstanding = weight_outstanding.saturating_sub(weight); + + // Override AssetTraderRefunder + self.0 = Some(AssetTraderRefunder { weight_outstanding, outstanding_concrete_asset }); + + // Only refund if positive + if asset_balance > 0 { + Some((id, asset_balance).into()) + } else { + None + } + } else { + None + } + } +} + +impl< + AccountId, + FeeCharger: ChargeWeightInFungibles, + Matcher: MatchesFungibles, + ConcreteAssets: fungibles::Mutate + + fungibles::Transfer + + fungibles::Balanced, + HandleRefund: TakeRevenue, + > Drop for TakeFirstAssetTrader +{ + fn drop(&mut self) { + if let Some(asset_trader) = self.0.clone() { + HandleRefund::take_revenue(asset_trader.outstanding_concrete_asset); + } + } +} + +/// XCM fee depositor to which we implement the TakeRevenue trait +/// It receives a Transact implemented argument, a 32 byte convertible acocuntId, and the fee receiver account +/// FungiblesMutateAdapter should be identical to that implemented by WithdrawAsset +pub struct XcmFeesTo32ByteAccount( + PhantomData<(FungiblesMutateAdapter, AccountId, ReceiverAccount)>, +); +impl< + FungiblesMutateAdapter: TransactAsset, + AccountId: Clone + Into<[u8; 32]>, + ReceiverAccount: frame_support::traits::Get>, + > TakeRevenue for XcmFeesTo32ByteAccount +{ + fn take_revenue(revenue: MultiAsset) { + if let Some(receiver) = ReceiverAccount::get() { + let ok = FungiblesMutateAdapter::deposit_asset( + &revenue, + &(X1(AccountId32 { network: Any, id: receiver.into() }).into()), + ) + .is_ok(); + + debug_assert!(ok, "`deposit_asset` cannot generally fail; qed"); + } + } +} + +/// ChargeWeightInFungibles trait, which converts a given amount of weight +/// and an assetId, and it returns the balance amount that should be charged +/// in such assetId for that amount of weight +pub trait ChargeWeightInFungibles> { + fn charge_weight_in_fungibles( + asset_id: >::AssetId, + weight: Weight, + ) -> Result<>::Balance, XcmError>; +} From fcd628990cace282da49985b26fd8910323a45cd Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Thu, 4 Aug 2022 11:46:01 +0200 Subject: [PATCH 189/238] chore; don't require default features for cli (#1497) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * don't require default features for an API crate Let the consumer define by overriding the features for the inner deps as needed. Cargo feature resolution allows this. Ref https://github.com/paritytech/polkadot/pull/5792 * Update client/relay-chain-inprocess-interface/Cargo.toml Co-authored-by: Bastian Köcher --- client/relay-chain-inprocess-interface/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index e0479c3fc0..c1e95230f5 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -27,7 +27,7 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } # Polkadot -polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "master", default-features = false } polkadot-client = { git = "https://github.com/paritytech/polkadot", branch = "master" } polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "master" } From e94395dbd2469f700aa6a933dfecb75d7c74c5cd Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 11:49:08 +0100 Subject: [PATCH 190/238] adapt to subwasm version output format change --- scripts/ci/changelog/templates/runtime.md.tera | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/changelog/templates/runtime.md.tera b/scripts/ci/changelog/templates/runtime.md.tera index 2027ca78c1..9e7e04b5c6 100644 --- a/scripts/ci/changelog/templates/runtime.md.tera +++ b/scripts/ci/changelog/templates/runtime.md.tera @@ -19,7 +19,7 @@ ``` 🏋️ Runtime Size: {{ runtime.data.runtimes.compressed.subwasm.size | filesizeformat }} ({{ runtime.data.runtimes.compressed.subwasm.size }} bytes) -🔥 Core Version: {{ runtime.data.runtimes.compressed.subwasm.core_version }} +🔥 Core Version: {{ runtime.data.runtimes.compressed.subwasm.core_version.specName }}-{{ runtime.data.runtimes.compressed.subwasm.core_version.specVersion }} ({{ runtime.data.runtimes.compressed.subwasm.core_version.implName }}-{{ runtime.data.runtimes.compressed.subwasm.core_version.implVersion }}.tx{{ runtime.data.runtimes.compressed.subwasm.core_version.transactionVersion }}.au{{ runtime.data.runtimes.compressed.subwasm.core_version.authoringVersion }}) 🗜 Compressed: {{ compressed }}: {{ comp_ratio | round(method="ceil", precision=2) }}% 🎁 Metadata version: V{{ runtime.data.runtimes.compressed.subwasm.metadata_version }} 🗳️ Blake2-256 hash: {{ runtime.data.runtimes.compressed.subwasm.blake2_256 }} From b0bfe4835b39939da1a0220527aa2562ecd13229 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 11:54:04 +0100 Subject: [PATCH 191/238] Like polkadot, save context.json as an artifact --- .github/workflows/release-02_create-draft.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index e81d46798f..d324e8b729 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -177,6 +177,7 @@ jobs: with: name: srtool-json path: | + scripts/ci/changelog/context.json **/*-srtool-digest.json - name: Archive context artifact From 92f3eb931b4af675939726ca26d647e160ac881c Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 14:01:44 +0100 Subject: [PATCH 192/238] broader scope --- .github/workflows/release-02_create-draft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index d324e8b729..40963f4a12 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -177,7 +177,7 @@ jobs: with: name: srtool-json path: | - scripts/ci/changelog/context.json + **/context.json **/*-srtool-digest.json - name: Archive context artifact From f8a1ffc6fa46439ca16c4ad970265eecd8e3bc3c Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 14:44:17 +0100 Subject: [PATCH 193/238] another shot --- .github/workflows/release-02_create-draft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index 40963f4a12..713c2cf051 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -177,7 +177,7 @@ jobs: with: name: srtool-json path: | - **/context.json + cumulus/scripts/ci/changelog/context.json **/*-srtool-digest.json - name: Archive context artifact From 66c6c38b12a259c26f0e3f5b6e1c950a60362399 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 14:51:36 +0100 Subject: [PATCH 194/238] if not in a subdir... --- .github/workflows/release-02_create-draft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index 713c2cf051..ec8db6d937 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -177,7 +177,7 @@ jobs: with: name: srtool-json path: | - cumulus/scripts/ci/changelog/context.json + context.json **/*-srtool-digest.json - name: Archive context artifact From 5dae501aa53a19c2a5a5ea6e7a85eb90870428ed Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 15:13:59 +0100 Subject: [PATCH 195/238] There's already one directly below --- .github/workflows/release-02_create-draft.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index ec8db6d937..e81d46798f 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -177,7 +177,6 @@ jobs: with: name: srtool-json path: | - context.json **/*-srtool-digest.json - name: Archive context artifact From 958414472f7970a00639252e13ed73bc0d751f50 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Tue, 26 Jul 2022 15:15:18 +0100 Subject: [PATCH 196/238] and again --- .github/workflows/release-02_create-draft.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index e81d46798f..8f795f609e 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -184,7 +184,7 @@ jobs: with: name: release-notes-context path: | - context.json + cumulus/scripts/ci/changelog/context.json - name: Create draft release id: create-release From d428cb6a68ee4975be20b12f330261d9a92c94bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:28:35 +0000 Subject: [PATCH 197/238] Bump cranelift-codegen from 0.85.1 to 0.85.3 (#1466) Bumps [cranelift-codegen](https://github.com/bytecodealliance/wasmtime) from 0.85.1 to 0.85.3. - [Release notes](https://github.com/bytecodealliance/wasmtime/releases) - [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/docs/WASI-some-possible-changes.md) - [Commits](https://github.com/bytecodealliance/wasmtime/commits) --- updated-dependencies: - dependency-name: cranelift-codegen dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e449de544..771429078d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1159,18 +1159,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7901fbba05decc537080b07cb3f1cadf53be7b7602ca8255786288a8692ae29a" +checksum = "749d0d6022c9038dccf480bdde2a38d435937335bf2bb0f14e815d94517cdce8" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ba1b45d243a4a28e12d26cd5f2507da74e77c45927d40de8b6ffbf088b46b5" +checksum = "e94370cc7b37bf652ccd8bb8f09bd900997f7ccf97520edfc75554bb5c4abbea" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", @@ -1186,24 +1186,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cc30032171bf230ce22b99c07c3a1de1221cb5375bd6dbe6dbe77d0eed743c" +checksum = "e0a3cea8fdab90e44018c5b9a1dfd460d8ee265ac354337150222a354628bdb6" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23f2672426d2bb4c9c3ef53e023076cfc4d8922f0eeaebaf372c92fae8b5c69" +checksum = "5ac72f76f2698598951ab26d8c96eaa854810e693e7dd52523958b5909fde6b2" [[package]] name = "cranelift-entity" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "886c59a5e0de1f06dbb7da80db149c75de10d5e2caca07cdd9fef8a5918a6336" +checksum = "09eaeacfcd2356fe0e66b295e8f9d59fdd1ac3ace53ba50de14d628ec902f72d" dependencies = [ "serde", ] @@ -1222,9 +1222,9 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db1ae52a5cc2cad0d86fdd3dcb16b7217d2f1e65ab4f5814aa4f014ad335fa43" +checksum = "d2920dc1e05cac40304456ed3301fde2c09bd6a9b0210bcfa2f101398d628d5b" [[package]] name = "cranelift-native" @@ -12308,7 +12308,7 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "digest 0.10.3", "rand 0.8.5", "static_assertions", From 4474972a0c23187a41b4663a58b9b5a79d213b1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:56:41 +0000 Subject: [PATCH 198/238] Bump async-trait from 0.1.56 to 0.1.57 (#1493) Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.56 to 0.1.57. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.56...0.1.57) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- client/consensus/aura/Cargo.toml | 2 +- client/consensus/common/Cargo.toml | 2 +- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/relay-chain-inprocess-interface/Cargo.toml | 2 +- client/relay-chain-interface/Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- primitives/parachain-inherent/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 771429078d..1787145425 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -341,9 +341,9 @@ checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" [[package]] name = "async-trait" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" dependencies = [ "proc-macro2", "quote", diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index c493595e5d..2203cab0d2 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } futures = "0.3.21" tracing = "0.1.34" diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index e2af49ac5c..dd7c1c9630 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } dyn-clone = "1.0.8" futures = "0.3.21" diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index 6fc1e8aa79..a5a124fc45 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" futures = "0.3.21" parking_lot = "0.12.1" tracing = "0.1.34" diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 4f82906d4f..823ddaa773 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -6,7 +6,7 @@ description = "Cumulus-specific networking protocol" edition = "2021" [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } derive_more = "0.99.2" futures = "0.3.21" diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index c1e95230f5..26e3f508cf 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -5,7 +5,7 @@ version = "0.1.0" edition = "2021" [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.1" diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index fdafdf3316..7ba9583933 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -20,7 +20,7 @@ sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "mas futures = "0.3.21" parking_lot = "0.12.1" derive_more = "0.99.2" -async-trait = "0.1.56" +async-trait = "0.1.57" thiserror = "1.0.31" jsonrpsee-core = "0.15.1" parity-scale-codec = "3.1.5" diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index ea1f76bf70..66e865de1a 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -26,6 +26,6 @@ parity-scale-codec = "3.1.5" parking_lot = "0.12.1" jsonrpsee = { version = "0.15.1", features = ["ws-client"] } tracing = "0.1.34" -async-trait = "0.1.56" +async-trait = "0.1.57" url = "2.2.2" backoff = { version = "0.4.0", features = ["tokio"] } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index a879c8f966..3ffe9fa430 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" description = "Runs a polkadot parachain node which could be a collator." [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" diff --git a/primitives/parachain-inherent/Cargo.toml b/primitives/parachain-inherent/Cargo.toml index e033ff664f..0cc1f20555 100644 --- a/primitives/parachain-inherent/Cargo.toml +++ b/primitives/parachain-inherent/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = { version = "0.1.56", optional = true } +async-trait = { version = "0.1.57", optional = true } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } tracing = { version = "0.1.34", optional = true } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 946d8dbbb8..aa3ee517dc 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -9,7 +9,7 @@ name = "test-parachain" path = "src/main.rs" [dependencies] -async-trait = "0.1.56" +async-trait = "0.1.57" clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } From cefa473aaeb6b13228946d3a351b3794ee65e814 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:59:24 +0000 Subject: [PATCH 199/238] Bump dyn-clone from 1.0.8 to 1.0.9 Bumps [dyn-clone](https://github.com/dtolnay/dyn-clone) from 1.0.8 to 1.0.9. - [Release notes](https://github.com/dtolnay/dyn-clone/releases) - [Commits](https://github.com/dtolnay/dyn-clone/compare/1.0.8...1.0.9) --- updated-dependencies: - dependency-name: dyn-clone dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 6 +++--- client/consensus/common/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1787145425..c7c1481533 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2357,9 +2357,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d07a982d1fb29db01e5a59b1918e03da4df7297eaeee7686ac45542fd4e59c8" +checksum = "4f94fa09c2aeea5b8839e414b7b841bf429fd25b9c522116ac97ee87856d88b2" [[package]] name = "ecdsa" @@ -12308,7 +12308,7 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "digest 0.10.3", "rand 0.8.5", "static_assertions", diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index dd7c1c9630..e83dbba2dc 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] async-trait = "0.1.57" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -dyn-clone = "1.0.8" +dyn-clone = "1.0.9" futures = "0.3.21" tracing = "0.1.34" From 29d7b73faa0fd8ce9be7cfda7a9ef160c7125756 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Aug 2022 22:24:26 +0200 Subject: [PATCH 200/238] Bump tracing from 0.1.35 to 0.1.36 (#1495) Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.35 to 0.1.36. - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.35...tracing-0.1.36) --- updated-dependencies: - dependency-name: tracing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 44 +++++++++---------- client/consensus/aura/Cargo.toml | 2 +- client/consensus/common/Cargo.toml | 2 +- client/consensus/relay-chain/Cargo.toml | 2 +- client/network/Cargo.toml | 2 +- client/pov-recovery/Cargo.toml | 2 +- .../Cargo.toml | 2 +- client/relay-chain-rpc-interface/Cargo.toml | 2 +- client/service/Cargo.toml | 2 +- primitives/parachain-inherent/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7c1481533..791fac0a15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,7 +312,7 @@ dependencies = [ "memchr", "num_cpus", "once_cell", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "pin-utils", "slab", "wasm-bindgen-futures", @@ -360,7 +360,7 @@ dependencies = [ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", ] [[package]] @@ -395,7 +395,7 @@ dependencies = [ "futures-core", "getrandom 0.2.3", "instant", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "rand 0.8.5", "tokio", ] @@ -3058,7 +3058,7 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "waker-fn", ] @@ -3115,7 +3115,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "pin-utils", "slab", ] @@ -3412,7 +3412,7 @@ checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ "bytes", "http", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", ] [[package]] @@ -3458,7 +3458,7 @@ dependencies = [ "httparse", "httpdate", "itoa 0.4.8", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "socket2", "tokio", "tower-service", @@ -5243,9 +5243,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "oorandom" @@ -6841,9 +6841,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -12007,7 +12007,7 @@ dependencies = [ "num_cpus", "once_cell", "parking_lot 0.12.1", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "signal-hook-registry", "socket2", "tokio-macros", @@ -12043,7 +12043,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" dependencies = [ "futures-core", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "tokio", ] @@ -12057,7 +12057,7 @@ dependencies = [ "futures-core", "futures-sink", "log", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "tokio", ] @@ -12071,7 +12071,7 @@ dependencies = [ "futures-core", "futures-io", "futures-sink", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "tokio", ] @@ -12092,21 +12092,21 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if 1.0.0", - "pin-project-lite 0.2.7", + "pin-project-lite 0.2.9", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" dependencies = [ "proc-macro2", "quote", @@ -12115,9 +12115,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ "once_cell", "valuable", diff --git a/client/consensus/aura/Cargo.toml b/client/consensus/aura/Cargo.toml index 2203cab0d2..29d2976a7e 100644 --- a/client/consensus/aura/Cargo.toml +++ b/client/consensus/aura/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" async-trait = "0.1.57" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } futures = "0.3.21" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/consensus/common/Cargo.toml b/client/consensus/common/Cargo.toml index e83dbba2dc..2b93f0d826 100644 --- a/client/consensus/common/Cargo.toml +++ b/client/consensus/common/Cargo.toml @@ -10,7 +10,7 @@ async-trait = "0.1.57" codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } dyn-clone = "1.0.9" futures = "0.3.21" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/consensus/relay-chain/Cargo.toml b/client/consensus/relay-chain/Cargo.toml index a5a124fc45..5288b14d6a 100644 --- a/client/consensus/relay-chain/Cargo.toml +++ b/client/consensus/relay-chain/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" async-trait = "0.1.57" futures = "0.3.21" parking_lot = "0.12.1" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/network/Cargo.toml b/client/network/Cargo.toml index 823ddaa773..d78969ce95 100644 --- a/client/network/Cargo.toml +++ b/client/network/Cargo.toml @@ -12,7 +12,7 @@ derive_more = "0.99.2" futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.1" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/pov-recovery/Cargo.toml b/client/pov-recovery/Cargo.toml index ea937ef5b1..f585f572ea 100644 --- a/client/pov-recovery/Cargo.toml +++ b/client/pov-recovery/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "deriv futures = "0.3.21" futures-timer = "3.0.2" rand = "0.8.5" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 26e3f508cf..97ff7cbb04 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -9,7 +9,7 @@ async-trait = "0.1.57" futures = "0.3.21" futures-timer = "3.0.2" parking_lot = "0.12.1" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/client/relay-chain-rpc-interface/Cargo.toml b/client/relay-chain-rpc-interface/Cargo.toml index 66e865de1a..acd4485342 100644 --- a/client/relay-chain-rpc-interface/Cargo.toml +++ b/client/relay-chain-rpc-interface/Cargo.toml @@ -25,7 +25,7 @@ futures-timer = "3.0.2" parity-scale-codec = "3.1.5" parking_lot = "0.12.1" jsonrpsee = { version = "0.15.1", features = ["ws-client"] } -tracing = "0.1.34" +tracing = "0.1.36" async-trait = "0.1.57" url = "2.2.2" backoff = { version = "0.4.0", features = ["tokio"] } diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index 687aa0f95a..63b1d25a9f 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] parking_lot = "0.12.1" -tracing = "0.1.34" +tracing = "0.1.36" # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/primitives/parachain-inherent/Cargo.toml b/primitives/parachain-inherent/Cargo.toml index 0cc1f20555..e3fc81dec0 100644 --- a/primitives/parachain-inherent/Cargo.toml +++ b/primitives/parachain-inherent/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" async-trait = { version = "0.1.57", optional = true } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive" ] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -tracing = { version = "0.1.34", optional = true } +tracing = { version = "0.1.36", optional = true } # Substrate sc-client-api = { git = "https://github.com/paritytech/substrate", optional = true, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index aa3ee517dc..1fcc399bbd 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -18,7 +18,7 @@ parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.141", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } -tracing = "0.1.25" +tracing = "0.1.36" url = "2.2.2" # Substrate From 919b56124f63b1f2ad57f9c9e3344e935dc85e6b Mon Sep 17 00:00:00 2001 From: Nikos Kontakis Date: Mon, 8 Aug 2022 16:22:57 +0200 Subject: [PATCH 201/238] Renaming CLI prunning and keep-blocks flags (#1514) * Rename keep blocksflag * Add correct use of BlocksPruning * update lockfile for {"polkadot", "substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 496 ++++++++++++++++++++-------------------- test/service/src/lib.rs | 4 +- 2 files changed, 251 insertions(+), 249 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 791fac0a15..6f33b9d543 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "beefy-primitives", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -507,7 +507,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "beefy-primitives", "sp-api", @@ -516,7 +516,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -2699,7 +2699,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", ] @@ -2717,7 +2717,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -2739,7 +2739,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "Inflector", "chrono", @@ -2790,7 +2790,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2801,7 +2801,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2817,7 +2817,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -2845,7 +2845,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bitflags", "frame-metadata", @@ -2875,7 +2875,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2887,7 +2887,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2899,7 +2899,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro2", "quote", @@ -2909,7 +2909,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "log", @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -2941,7 +2941,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "sp-api", @@ -2950,7 +2950,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "sp-api", @@ -3824,7 +3824,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-primitives", "bitvec", @@ -3917,7 +3917,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "polkadot-primitives", @@ -5274,7 +5274,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "dyn-clonable", @@ -5290,7 +5290,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "expander 0.0.6", "itertools", @@ -5328,7 +5328,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -5345,7 +5345,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5359,7 +5359,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -5375,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -5391,7 +5391,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -5406,7 +5406,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5430,7 +5430,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5450,7 +5450,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5465,7 +5465,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "beefy-primitives", "frame-support", @@ -5481,7 +5481,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5504,7 +5504,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5522,7 +5522,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5567,7 +5567,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5584,7 +5584,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bitflags", "frame-benchmarking", @@ -5612,7 +5612,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bitflags", "parity-scale-codec", @@ -5627,7 +5627,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro2", "quote", @@ -5637,7 +5637,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5654,7 +5654,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5667,7 +5667,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5683,7 +5683,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5706,7 +5706,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5719,7 +5719,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5737,7 +5737,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5752,7 +5752,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5775,7 +5775,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5791,7 +5791,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5811,7 +5811,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5828,7 +5828,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5863,7 +5863,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5893,7 +5893,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -5910,7 +5910,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5929,7 +5929,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "sp-api", @@ -5939,7 +5939,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -5956,7 +5956,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5979,7 +5979,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5995,7 +5995,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6010,7 +6010,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -6024,7 +6024,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6039,7 +6039,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6055,7 +6055,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -6076,7 +6076,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6092,7 +6092,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -6106,7 +6106,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6129,7 +6129,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6140,7 +6140,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "sp-arithmetic", @@ -6149,7 +6149,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -6178,7 +6178,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6196,7 +6196,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6215,7 +6215,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-support", "frame-system", @@ -6231,7 +6231,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6246,7 +6246,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6257,7 +6257,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6274,7 +6274,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6289,7 +6289,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6305,7 +6305,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-benchmarking", "frame-support", @@ -6320,7 +6320,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "frame-system", @@ -6338,7 +6338,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6894,7 +6894,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6909,7 +6909,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6923,7 +6923,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "derive_more", "fatality", @@ -6946,7 +6946,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "fatality", "futures", @@ -6967,7 +6967,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "clap 3.2.16", "frame-benchmarking-cli", @@ -6993,7 +6993,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7033,7 +7033,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "always-assert", "fatality", @@ -7054,7 +7054,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7067,7 +7067,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "derive_more", "fatality", @@ -7090,7 +7090,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7104,7 +7104,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "futures-timer", @@ -7124,7 +7124,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "always-assert", "async-trait", @@ -7147,7 +7147,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "parity-scale-codec", @@ -7165,7 +7165,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bitvec", "derive_more", @@ -7194,7 +7194,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bitvec", "futures", @@ -7214,7 +7214,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bitvec", "fatality", @@ -7233,7 +7233,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7248,7 +7248,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "futures", @@ -7266,7 +7266,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7281,7 +7281,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "futures-timer", @@ -7298,7 +7298,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "fatality", "futures", @@ -7317,7 +7317,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "futures", @@ -7334,7 +7334,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bitvec", "fatality", @@ -7352,7 +7352,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "always-assert", "assert_matches", @@ -7384,7 +7384,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "polkadot-node-primitives", @@ -7400,7 +7400,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "futures", "memory-lru", @@ -7416,7 +7416,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-std", "lazy_static", @@ -7434,7 +7434,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bs58", "futures", @@ -7453,7 +7453,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "derive_more", @@ -7474,7 +7474,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bounded-vec", "futures", @@ -7496,7 +7496,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7506,7 +7506,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "futures", @@ -7524,7 +7524,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "derive_more", @@ -7547,7 +7547,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "derive_more", @@ -7580,7 +7580,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "futures", @@ -7603,7 +7603,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "derive_more", "frame-support", @@ -7698,7 +7698,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7713,7 +7713,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bitvec", "frame-system", @@ -7743,7 +7743,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7775,7 +7775,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-primitives", "bitvec", @@ -7860,7 +7860,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-primitives", "bitvec", @@ -7907,7 +7907,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "polkadot-primitives", @@ -7919,7 +7919,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bs58", "parity-scale-codec", @@ -7931,7 +7931,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "bitflags", "bitvec", @@ -7974,7 +7974,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "async-trait", "beefy-gadget", @@ -8076,7 +8076,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8097,7 +8097,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8107,7 +8107,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8132,7 +8132,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-primitives", "bitvec", @@ -8193,7 +8193,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-benchmarking", "frame-system", @@ -8337,7 +8337,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8780,7 +8780,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8902,7 +8902,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8971,7 +8971,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "polkadot-primitives", @@ -9155,7 +9155,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "sp-core", @@ -9166,7 +9166,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -9193,7 +9193,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "futures-timer", @@ -9216,7 +9216,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9232,7 +9232,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9249,7 +9249,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9260,7 +9260,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "chrono", "clap 3.2.16", @@ -9299,7 +9299,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "fnv", "futures", @@ -9327,7 +9327,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "hash-db", "kvdb", @@ -9352,7 +9352,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -9376,7 +9376,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -9405,7 +9405,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "fork-tree", @@ -9447,7 +9447,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "jsonrpsee", @@ -9469,7 +9469,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9482,7 +9482,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -9507,7 +9507,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9534,7 +9534,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "environmental", "parity-scale-codec", @@ -9551,7 +9551,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "parity-scale-codec", @@ -9566,7 +9566,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9586,7 +9586,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "ahash", "async-trait", @@ -9627,7 +9627,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "finality-grandpa", "futures", @@ -9648,7 +9648,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "ansi_term", "futures", @@ -9665,7 +9665,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "hex", @@ -9680,7 +9680,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "asynchronous-codec", @@ -9729,7 +9729,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bitflags", "futures", @@ -9747,7 +9747,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "ahash", "futures", @@ -9764,9 +9764,10 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", + "hex", "libp2p", "log", "parity-scale-codec", @@ -9784,10 +9785,11 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "fork-tree", "futures", + "hex", "libp2p", "log", "lru 0.7.7", @@ -9811,7 +9813,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bytes", "fnv", @@ -9839,7 +9841,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "libp2p", @@ -9852,7 +9854,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9861,7 +9863,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "hash-db", @@ -9891,7 +9893,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "jsonrpsee", @@ -9914,7 +9916,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "jsonrpsee", @@ -9927,7 +9929,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "directories", @@ -9994,7 +9996,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "parity-scale-codec", @@ -10008,7 +10010,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10027,7 +10029,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "libc", @@ -10046,7 +10048,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "chrono", "futures", @@ -10064,7 +10066,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "ansi_term", "atty", @@ -10095,7 +10097,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10106,7 +10108,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "futures-timer", @@ -10132,7 +10134,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "log", @@ -10145,7 +10147,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "futures-timer", @@ -10590,7 +10592,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "enumn", "parity-scale-codec", @@ -10666,7 +10668,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "hash-db", "log", @@ -10683,7 +10685,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "blake2", "proc-macro-crate", @@ -10695,7 +10697,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10708,7 +10710,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "integer-sqrt", "num-traits", @@ -10723,7 +10725,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10736,7 +10738,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "parity-scale-codec", @@ -10748,7 +10750,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "sp-api", @@ -10760,7 +10762,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "log", @@ -10778,7 +10780,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -10797,7 +10799,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "parity-scale-codec", @@ -10815,7 +10817,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "merlin", @@ -10838,7 +10840,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10852,7 +10854,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -10865,7 +10867,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "base58", "bitflags", @@ -10911,7 +10913,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "blake2", "byteorder", @@ -10925,7 +10927,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro2", "quote", @@ -10936,7 +10938,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10945,7 +10947,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro2", "quote", @@ -10955,7 +10957,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "environmental", "parity-scale-codec", @@ -10966,7 +10968,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "finality-grandpa", "log", @@ -10984,7 +10986,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10998,7 +11000,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bytes", "futures", @@ -11024,7 +11026,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "lazy_static", "sp-core", @@ -11035,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -11052,7 +11054,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "thiserror", "zstd", @@ -11061,7 +11063,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "parity-scale-codec", @@ -11076,7 +11078,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -11090,7 +11092,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "sp-api", "sp-core", @@ -11100,7 +11102,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "backtrace", "lazy_static", @@ -11110,7 +11112,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "rustc-hash", "serde", @@ -11120,7 +11122,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "either", "hash256-std-hasher", @@ -11142,7 +11144,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11160,7 +11162,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "Inflector", "proc-macro-crate", @@ -11172,7 +11174,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "parity-scale-codec", @@ -11186,7 +11188,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "serde", "serde_json", @@ -11195,7 +11197,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -11209,7 +11211,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "scale-info", @@ -11220,7 +11222,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "hash-db", "log", @@ -11242,12 +11244,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11260,7 +11262,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "log", "sp-core", @@ -11273,7 +11275,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures-timer", @@ -11289,7 +11291,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "sp-std", @@ -11301,7 +11303,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "sp-api", "sp-runtime", @@ -11310,7 +11312,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "log", @@ -11326,7 +11328,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "hash-db", "memory-db", @@ -11342,7 +11344,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11359,7 +11361,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11370,7 +11372,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "impl-trait-for-tuples", "log", @@ -11629,7 +11631,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "platforms", ] @@ -11637,7 +11639,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11658,7 +11660,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures-util", "hyper", @@ -11671,7 +11673,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "jsonrpsee", "log", @@ -11692,7 +11694,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "async-trait", "futures", @@ -11718,7 +11720,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11728,7 +11730,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11739,7 +11741,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "ansi_term", "build-helper", @@ -11847,7 +11849,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "polkadot-primitives", @@ -12136,7 +12138,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12147,7 +12149,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12274,7 +12276,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#744eda47f545e31083ee722abb3a286f91a7f98d" +source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" dependencies = [ "clap 3.2.16", "jsonrpsee", @@ -12852,7 +12854,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "beefy-primitives", "bitvec", @@ -12941,7 +12943,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "polkadot-primitives", @@ -13226,7 +13228,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13240,7 +13242,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-support", "frame-system", @@ -13260,7 +13262,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "frame-benchmarking", "frame-support", @@ -13278,7 +13280,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#00bad261db089ac9a71255b2f71e3f60bf181ace" +source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" dependencies = [ "Inflector", "proc-macro2", diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index 3eded079d4..99fb1ad936 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -48,7 +48,7 @@ use sc_client_api::execution_extensions::ExecutionStrategies; use sc_network::{config::TransportConfig, multiaddr, NetworkService}; use sc_service::{ config::{ - DatabaseSource, KeepBlocks, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration, + BlocksPruning, DatabaseSource, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration, OffchainWorkerConfig, PruningMode, WasmExecutionMethod, }, BasePath, ChainSpec, Configuration, Error as ServiceError, PartialComponents, Role, @@ -653,7 +653,7 @@ pub fn node_config( state_cache_size: 67108864, state_cache_child_ratio: None, state_pruning: Some(PruningMode::ArchiveAll), - keep_blocks: KeepBlocks::All, + blocks_pruning: BlocksPruning::All, chain_spec: spec, wasm_method: WasmExecutionMethod::Interpreted, // NOTE: we enforce the use of the native runtime to make the errors more debuggable From 23a7fdd909b5233baa3975af61cd41a83d126752 Mon Sep 17 00:00:00 2001 From: Ignacio Palacios Date: Mon, 8 Aug 2022 17:02:50 +0200 Subject: [PATCH 202/238] Upgrade spec_version to `9230` and bump `transaction_version` for assets parachains. (#1340) (#1494) * Transaction version bump + updated spec_version * Reformatting issue * Adding missing runtimes * Upgrading contracts pallet runtime version * Upgrading Seedling runtime * Bump polkadot-parachain version Co-authored-by: Wilfried Kopp Co-authored-by: Hector Bulgarini Co-authored-by: Wilfried Kopp --- Cargo.lock | 2 +- parachains/runtimes/assets/statemine/src/lib.rs | 4 ++-- parachains/runtimes/assets/statemint/src/lib.rs | 4 ++-- parachains/runtimes/assets/westmint/src/lib.rs | 4 ++-- parachains/runtimes/contracts/contracts-rococo/src/lib.rs | 2 +- parachains/runtimes/starters/seedling/src/lib.rs | 2 +- parachains/runtimes/testing/rococo-parachain/src/lib.rs | 2 +- polkadot-parachain/Cargo.toml | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f33b9d543..c77b57cfd4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7619,7 +7619,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.220" +version = "0.9.230" dependencies = [ "assert_cmd", "async-trait", diff --git a/parachains/runtimes/assets/statemine/src/lib.rs b/parachains/runtimes/assets/statemine/src/lib.rs index 6d86288ce3..1312b06c6d 100644 --- a/parachains/runtimes/assets/statemine/src/lib.rs +++ b/parachains/runtimes/assets/statemine/src/lib.rs @@ -85,10 +85,10 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("statemine"), impl_name: create_runtime_str!("statemine"), authoring_version: 1, - spec_version: 9220, + spec_version: 9230, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 6, + transaction_version: 7, state_version: 0, }; diff --git a/parachains/runtimes/assets/statemint/src/lib.rs b/parachains/runtimes/assets/statemint/src/lib.rs index 0033e6b5f0..099fe4e4bb 100644 --- a/parachains/runtimes/assets/statemint/src/lib.rs +++ b/parachains/runtimes/assets/statemint/src/lib.rs @@ -115,10 +115,10 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("statemint"), impl_name: create_runtime_str!("statemint"), authoring_version: 1, - spec_version: 9220, + spec_version: 9230, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 6, + transaction_version: 7, state_version: 0, }; diff --git a/parachains/runtimes/assets/westmint/src/lib.rs b/parachains/runtimes/assets/westmint/src/lib.rs index 494c0cc38c..dfcfc8ffa1 100644 --- a/parachains/runtimes/assets/westmint/src/lib.rs +++ b/parachains/runtimes/assets/westmint/src/lib.rs @@ -83,10 +83,10 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("westmint"), impl_name: create_runtime_str!("westmint"), authoring_version: 1, - spec_version: 9220, + spec_version: 9230, impl_version: 0, apis: RUNTIME_API_VERSIONS, - transaction_version: 6, + transaction_version: 7, state_version: 0, }; diff --git a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index edd2905c9b..7483fb780f 100644 --- a/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -116,7 +116,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("contracts-rococo"), impl_name: create_runtime_str!("contracts-rococo"), authoring_version: 1, - spec_version: 9220, + spec_version: 9230, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/parachains/runtimes/starters/seedling/src/lib.rs b/parachains/runtimes/starters/seedling/src/lib.rs index 146a769fd5..850f6bab34 100644 --- a/parachains/runtimes/starters/seedling/src/lib.rs +++ b/parachains/runtimes/starters/seedling/src/lib.rs @@ -62,7 +62,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("seedling"), impl_name: create_runtime_str!("seedling"), authoring_version: 1, - spec_version: 9220, + spec_version: 9230, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 05837b4464..98f53af196 100644 --- a/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -94,7 +94,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("test-parachain"), impl_name: create_runtime_str!("test-parachain"), authoring_version: 1, - spec_version: 9220, + spec_version: 9230, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 3ffe9fa430..72a3e882f3 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-parachain" -version = "0.9.220" +version = "0.9.230" authors = ["Parity Technologies "] build = "build.rs" edition = "2021" From ed57c8aca96309184b8bc368db4c05177c313903 Mon Sep 17 00:00:00 2001 From: Roman Useinov Date: Tue, 9 Aug 2022 09:15:26 +0200 Subject: [PATCH 203/238] [Fix] Benchmark build artifact folder creation (#1518) --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4d70121703..1476f03a8e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -276,7 +276,7 @@ benchmarks-build: <<: *benchmarks-manual-refs script: - time cargo build --profile production --locked --features runtime-benchmarks - - mkdir artifacts + - mkdir -p artifacts - cp target/production/polkadot-parachain ./artifacts/ benchmarks: From 994c8a296b4f4bb4ac67fd63abc1167d4210f306 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Wed, 10 Aug 2022 00:59:34 +0300 Subject: [PATCH 204/238] Trivial networking changes for Substrate PR #11940 (#1486) * Trivial networking changes for Substrate PR https://github.com/paritytech/substrate/pull/11940 * Apply formatting rules * update lockfile for {"polkadot", "substrate"} Co-authored-by: parity-processbot <> --- Cargo.lock | 511 +++++++++--------- .../Cargo.toml | 1 - .../src/lib.rs | 28 +- parachain-template/node/Cargo.toml | 1 + parachain-template/node/src/service.rs | 1 + polkadot-parachain/Cargo.toml | 1 + polkadot-parachain/src/service.rs | 1 + test/service/Cargo.toml | 2 +- test/service/src/lib.rs | 4 +- 9 files changed, 276 insertions(+), 274 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c77b57cfd4..9f8b07c230 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "beefy-primitives", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -507,7 +507,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "beefy-primitives", "sp-api", @@ -516,7 +516,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -1914,7 +1914,6 @@ dependencies = [ "cumulus-test-service", "futures", "futures-timer", - "parking_lot 0.12.1", "polkadot-cli", "polkadot-client", "polkadot-primitives", @@ -2094,7 +2093,6 @@ dependencies = [ "pallet-transaction-payment", "parachains-common", "parity-scale-codec", - "parking_lot 0.12.1", "polkadot-cli", "polkadot-primitives", "polkadot-service", @@ -2108,6 +2106,7 @@ dependencies = [ "sc-consensus", "sc-executor", "sc-network", + "sc-network-common", "sc-rpc", "sc-service", "sc-telemetry", @@ -2699,7 +2698,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", ] @@ -2717,7 +2716,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -2739,7 +2738,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "Inflector", "chrono", @@ -2790,7 +2789,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2801,7 +2800,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2817,7 +2816,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -2845,7 +2844,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "bitflags", "frame-metadata", @@ -2875,7 +2874,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2887,7 +2886,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2899,7 +2898,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro2", "quote", @@ -2909,7 +2908,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "log", @@ -2926,7 +2925,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -2941,7 +2940,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "sp-api", @@ -2950,7 +2949,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "sp-api", @@ -3824,7 +3823,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-primitives", "bitvec", @@ -3917,7 +3916,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "polkadot-primitives", @@ -5274,7 +5273,7 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "orchestra" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "dyn-clonable", @@ -5290,7 +5289,7 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" version = "0.0.1" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "expander 0.0.6", "itertools", @@ -5328,7 +5327,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -5345,7 +5344,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5359,7 +5358,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -5375,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -5391,7 +5390,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -5406,7 +5405,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5430,7 +5429,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5450,7 +5449,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5465,7 +5464,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "beefy-primitives", "frame-support", @@ -5481,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5504,7 +5503,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5522,7 +5521,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5567,7 +5566,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5584,7 +5583,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "bitflags", "frame-benchmarking", @@ -5612,7 +5611,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "bitflags", "parity-scale-codec", @@ -5627,7 +5626,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro2", "quote", @@ -5637,7 +5636,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5654,7 +5653,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5667,7 +5666,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5683,7 +5682,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5706,7 +5705,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5719,7 +5718,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5737,7 +5736,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5752,7 +5751,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5775,7 +5774,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5791,7 +5790,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5811,7 +5810,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5828,7 +5827,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5845,7 +5844,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5863,7 +5862,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5878,7 +5877,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5893,7 +5892,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -5910,7 +5909,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5929,7 +5928,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "sp-api", @@ -5939,7 +5938,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -5956,7 +5955,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5979,7 +5978,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5995,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6010,7 +6009,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -6024,7 +6023,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6039,7 +6038,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6055,7 +6054,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -6076,7 +6075,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6092,7 +6091,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -6106,7 +6105,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6129,7 +6128,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6140,7 +6139,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "sp-arithmetic", @@ -6149,7 +6148,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -6178,7 +6177,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6196,7 +6195,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6215,7 +6214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-support", "frame-system", @@ -6231,7 +6230,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6246,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6257,7 +6256,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6274,7 +6273,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6289,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6305,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6320,7 +6319,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "frame-system", @@ -6338,7 +6337,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-benchmarking", "frame-support", @@ -6401,6 +6400,7 @@ dependencies = [ "sc-executor", "sc-keystore", "sc-network", + "sc-network-common", "sc-rpc", "sc-rpc-api", "sc-service", @@ -6894,7 +6894,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6909,7 +6909,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "polkadot-node-network-protocol", @@ -6923,7 +6923,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "derive_more", "fatality", @@ -6946,7 +6946,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "fatality", "futures", @@ -6967,7 +6967,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "clap 3.2.16", "frame-benchmarking-cli", @@ -6993,7 +6993,7 @@ dependencies = [ [[package]] name = "polkadot-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -7033,7 +7033,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "always-assert", "fatality", @@ -7054,7 +7054,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -7067,7 +7067,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "derive_more", "fatality", @@ -7090,7 +7090,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -7104,7 +7104,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "futures-timer", @@ -7124,7 +7124,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "always-assert", "async-trait", @@ -7139,6 +7139,7 @@ dependencies = [ "polkadot-overseer", "polkadot-primitives", "sc-network", + "sc-network-common", "sp-consensus", "thiserror", "tracing-gum", @@ -7147,7 +7148,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "parity-scale-codec", @@ -7165,7 +7166,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bitvec", "derive_more", @@ -7194,7 +7195,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bitvec", "futures", @@ -7214,7 +7215,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bitvec", "fatality", @@ -7233,7 +7234,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7248,7 +7249,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "futures", @@ -7266,7 +7267,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "polkadot-node-subsystem", @@ -7281,7 +7282,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "futures-timer", @@ -7298,7 +7299,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "fatality", "futures", @@ -7317,7 +7318,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "futures", @@ -7334,7 +7335,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bitvec", "fatality", @@ -7352,7 +7353,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "always-assert", "assert_matches", @@ -7384,7 +7385,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "polkadot-node-primitives", @@ -7400,7 +7401,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "futures", "memory-lru", @@ -7416,7 +7417,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-std", "lazy_static", @@ -7434,7 +7435,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bs58", "futures", @@ -7453,7 +7454,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "derive_more", @@ -7474,7 +7475,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bounded-vec", "futures", @@ -7496,7 +7497,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -7506,7 +7507,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "futures", @@ -7524,7 +7525,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "derive_more", @@ -7547,7 +7548,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "derive_more", @@ -7580,7 +7581,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "futures", @@ -7603,7 +7604,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "derive_more", "frame-support", @@ -7660,6 +7661,7 @@ dependencies = [ "sc-consensus", "sc-executor", "sc-network", + "sc-network-common", "sc-rpc", "sc-service", "sc-sysinfo", @@ -7698,7 +7700,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -7713,7 +7715,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bitvec", "frame-system", @@ -7743,7 +7745,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -7775,7 +7777,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-primitives", "bitvec", @@ -7860,7 +7862,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-primitives", "bitvec", @@ -7907,7 +7909,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "polkadot-primitives", @@ -7919,7 +7921,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bs58", "parity-scale-codec", @@ -7931,7 +7933,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "bitflags", "bitvec", @@ -7974,7 +7976,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "async-trait", "beefy-gadget", @@ -8040,6 +8042,7 @@ dependencies = [ "sc-finality-grandpa", "sc-keystore", "sc-network", + "sc-network-common", "sc-offchain", "sc-service", "sc-sync-state-rpc", @@ -8076,7 +8079,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -8097,7 +8100,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8107,7 +8110,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -8132,7 +8135,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-primitives", "bitvec", @@ -8193,7 +8196,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-benchmarking", "frame-system", @@ -8222,6 +8225,7 @@ dependencies = [ "sc-executor", "sc-finality-grandpa", "sc-network", + "sc-network-common", "sc-service", "sc-tracing", "sc-transaction-pool", @@ -8337,7 +8341,7 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8780,7 +8784,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8902,7 +8906,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -8971,7 +8975,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "polkadot-primitives", @@ -9155,7 +9159,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "sp-core", @@ -9166,9 +9170,8 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ - "async-trait", "futures", "futures-timer", "ip_network", @@ -9180,6 +9183,7 @@ dependencies = [ "rand 0.7.3", "sc-client-api", "sc-network", + "sc-network-common", "sp-api", "sp-authority-discovery", "sp-blockchain", @@ -9193,7 +9197,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "futures-timer", @@ -9216,7 +9220,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9232,7 +9236,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9249,7 +9253,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9260,7 +9264,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "chrono", "clap 3.2.16", @@ -9299,7 +9303,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "fnv", "futures", @@ -9327,7 +9331,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "hash-db", "kvdb", @@ -9352,7 +9356,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures", @@ -9376,7 +9380,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures", @@ -9405,7 +9409,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "fork-tree", @@ -9447,7 +9451,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "jsonrpsee", @@ -9469,7 +9473,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9482,7 +9486,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures", @@ -9507,7 +9511,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9534,7 +9538,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "environmental", "parity-scale-codec", @@ -9551,7 +9555,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "parity-scale-codec", @@ -9566,7 +9570,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9586,7 +9590,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "ahash", "async-trait", @@ -9627,7 +9631,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "finality-grandpa", "futures", @@ -9648,7 +9652,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "ansi_term", "futures", @@ -9656,7 +9660,7 @@ dependencies = [ "log", "parity-util-mem", "sc-client-api", - "sc-network", + "sc-network-common", "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", @@ -9665,7 +9669,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "hex", @@ -9680,7 +9684,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "asynchronous-codec", @@ -9729,9 +9733,11 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ + "async-trait", "bitflags", + "bytes", "futures", "libp2p", "parity-scale-codec", @@ -9742,12 +9748,13 @@ dependencies = [ "sp-consensus", "sp-finality-grandpa", "sp-runtime", + "thiserror", ] [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "ahash", "futures", @@ -9756,6 +9763,7 @@ dependencies = [ "log", "lru 0.7.7", "sc-network", + "sc-network-common", "sp-runtime", "substrate-prometheus-endpoint", "tracing", @@ -9764,7 +9772,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "hex", @@ -9785,7 +9793,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "fork-tree", "futures", @@ -9813,7 +9821,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "bytes", "fnv", @@ -9829,6 +9837,7 @@ dependencies = [ "rand 0.7.3", "sc-client-api", "sc-network", + "sc-network-common", "sc-utils", "sp-api", "sp-core", @@ -9841,7 +9850,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "libp2p", @@ -9854,7 +9863,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9863,7 +9872,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "hash-db", @@ -9893,7 +9902,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "jsonrpsee", @@ -9916,7 +9925,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "jsonrpsee", @@ -9929,7 +9938,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "directories", @@ -9996,7 +10005,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "parity-scale-codec", @@ -10010,7 +10019,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10029,7 +10038,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "libc", @@ -10048,7 +10057,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "chrono", "futures", @@ -10066,7 +10075,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "ansi_term", "atty", @@ -10097,7 +10106,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10108,7 +10117,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "futures-timer", @@ -10134,7 +10143,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "log", @@ -10147,7 +10156,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "futures-timer", @@ -10592,7 +10601,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "enumn", "parity-scale-codec", @@ -10668,7 +10677,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "hash-db", "log", @@ -10685,7 +10694,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "blake2", "proc-macro-crate", @@ -10697,7 +10706,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10710,7 +10719,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "integer-sqrt", "num-traits", @@ -10725,7 +10734,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10738,7 +10747,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "parity-scale-codec", @@ -10750,7 +10759,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "sp-api", @@ -10762,7 +10771,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "log", @@ -10780,7 +10789,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures", @@ -10799,7 +10808,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "parity-scale-codec", @@ -10817,7 +10826,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "merlin", @@ -10840,7 +10849,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10854,7 +10863,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10867,7 +10876,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "base58", "bitflags", @@ -10913,7 +10922,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "blake2", "byteorder", @@ -10927,7 +10936,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro2", "quote", @@ -10938,7 +10947,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10947,7 +10956,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro2", "quote", @@ -10957,7 +10966,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "environmental", "parity-scale-codec", @@ -10968,7 +10977,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "finality-grandpa", "log", @@ -10986,7 +10995,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11000,7 +11009,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "bytes", "futures", @@ -11026,7 +11035,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "lazy_static", "sp-core", @@ -11037,7 +11046,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures", @@ -11054,7 +11063,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "thiserror", "zstd", @@ -11063,7 +11072,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "parity-scale-codec", @@ -11078,7 +11087,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11092,7 +11101,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "sp-api", "sp-core", @@ -11102,7 +11111,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "backtrace", "lazy_static", @@ -11112,7 +11121,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "rustc-hash", "serde", @@ -11122,7 +11131,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "either", "hash256-std-hasher", @@ -11144,7 +11153,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11162,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "Inflector", "proc-macro-crate", @@ -11174,7 +11183,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "parity-scale-codec", @@ -11188,7 +11197,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "serde", "serde_json", @@ -11197,7 +11206,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11211,7 +11220,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "scale-info", @@ -11222,7 +11231,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "hash-db", "log", @@ -11244,12 +11253,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11262,7 +11271,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "log", "sp-core", @@ -11275,7 +11284,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures-timer", @@ -11291,7 +11300,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "sp-std", @@ -11303,7 +11312,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "sp-api", "sp-runtime", @@ -11312,7 +11321,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "log", @@ -11328,7 +11337,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "hash-db", "memory-db", @@ -11344,7 +11353,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11361,7 +11370,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11372,7 +11381,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "impl-trait-for-tuples", "log", @@ -11631,7 +11640,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "platforms", ] @@ -11639,7 +11648,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11660,7 +11669,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures-util", "hyper", @@ -11673,7 +11682,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "jsonrpsee", "log", @@ -11694,7 +11703,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "async-trait", "futures", @@ -11720,7 +11729,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11730,7 +11739,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11741,7 +11750,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "ansi_term", "build-helper", @@ -11849,7 +11858,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "polkadot-primitives", @@ -12138,7 +12147,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "polkadot-node-jaeger", "polkadot-primitives", @@ -12149,7 +12158,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "expander 0.0.6", "proc-macro-crate", @@ -12276,7 +12285,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ef890f5598e0d3fd1b6a5fcc8c3322f7570089d1" +source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" dependencies = [ "clap 3.2.16", "jsonrpsee", @@ -12854,7 +12863,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "beefy-primitives", "bitvec", @@ -12943,7 +12952,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "polkadot-primitives", @@ -13228,7 +13237,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -13242,7 +13251,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-support", "frame-system", @@ -13262,7 +13271,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "frame-benchmarking", "frame-support", @@ -13280,7 +13289,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.9.27" -source = "git+https://github.com/paritytech/polkadot?branch=master#b4d48428d676b614203d2d1deb6bc6b58f93559b" +source = "git+https://github.com/paritytech/polkadot?branch=master#4863d0a33a4a3534236f76abb5b1dc91751c6c34" dependencies = [ "Inflector", "proc-macro2", diff --git a/client/relay-chain-inprocess-interface/Cargo.toml b/client/relay-chain-inprocess-interface/Cargo.toml index 97ff7cbb04..28e1f749bf 100644 --- a/client/relay-chain-inprocess-interface/Cargo.toml +++ b/client/relay-chain-inprocess-interface/Cargo.toml @@ -8,7 +8,6 @@ edition = "2021" async-trait = "0.1.57" futures = "0.3.21" futures-timer = "3.0.2" -parking_lot = "0.12.1" tracing = "0.1.36" # Substrate diff --git a/client/relay-chain-inprocess-interface/src/lib.rs b/client/relay-chain-inprocess-interface/src/lib.rs index 1563553917..d713ab9cf3 100644 --- a/client/relay-chain-inprocess-interface/src/lib.rs +++ b/client/relay-chain-inprocess-interface/src/lib.rs @@ -27,7 +27,6 @@ use cumulus_primitives_core::{ }; use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult}; use futures::{FutureExt, Stream, StreamExt}; -use parking_lot::Mutex; use polkadot_client::{ClientHandle, ExecuteWithClient, FullBackend}; use polkadot_service::{ AuxStore, BabeApi, CollatorPair, Configuration, Handle, NewFull, TaskManager, @@ -50,7 +49,7 @@ const TIMEOUT_IN_SECONDS: u64 = 6; pub struct RelayChainInProcessInterface { full_client: Arc, backend: Arc, - sync_oracle: Arc>>, + sync_oracle: Arc, overseer_handle: Option, } @@ -59,7 +58,7 @@ impl RelayChainInProcessInterface { pub fn new( full_client: Arc, backend: Arc, - sync_oracle: Arc>>, + sync_oracle: Arc, overseer_handle: Option, ) -> Self { Self { full_client, backend, sync_oracle, overseer_handle } @@ -169,8 +168,7 @@ where } async fn is_major_syncing(&self) -> RelayChainResult { - let mut network = self.sync_oracle.lock(); - Ok(network.is_major_syncing()) + Ok(self.sync_oracle.is_major_syncing()) } fn overseer_handle(&self) -> RelayChainResult> { @@ -289,7 +287,7 @@ where struct RelayChainInProcessInterfaceBuilder { polkadot_client: polkadot_client::Client, backend: Arc, - sync_oracle: Arc>>, + sync_oracle: Arc, overseer_handle: Option, } @@ -375,8 +373,7 @@ pub fn build_inprocess_relay_chain( hwbench, )?; - let sync_oracle: Box = Box::new(full_node.network.clone()); - let sync_oracle = Arc::new(Mutex::new(sync_oracle)); + let sync_oracle: Arc = Arc::new(full_node.network.clone()); let relay_chain_interface_builder = RelayChainInProcessInterfaceBuilder { polkadot_client: full_node.client.clone(), backend: full_node.backend.clone(), @@ -391,8 +388,6 @@ pub fn build_inprocess_relay_chain( #[cfg(test)] mod tests { - use parking_lot::Mutex; - use super::*; use polkadot_primitives::v2::Block as PBlock; @@ -410,11 +405,11 @@ mod tests { struct DummyNetwork {} impl SyncOracle for DummyNetwork { - fn is_major_syncing(&mut self) -> bool { + fn is_major_syncing(&self) -> bool { unimplemented!("Not needed for test") } - fn is_offline(&mut self) -> bool { + fn is_offline(&self) -> bool { unimplemented!("Not needed for test") } } @@ -428,17 +423,12 @@ mod tests { let block_builder = client.init_polkadot_block_builder(); let block = block_builder.build().expect("Finalizes the block").block; - let dummy_network: Box = Box::new(DummyNetwork {}); + let dummy_network: Arc = Arc::new(DummyNetwork {}); ( client.clone(), block, - RelayChainInProcessInterface::new( - client, - backend.clone(), - Arc::new(Mutex::new(dummy_network)), - None, - ), + RelayChainInProcessInterface::new(client, backend.clone(), dummy_network, None), ) } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index b97f92e0b6..ff95f0eeab 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -33,6 +33,7 @@ sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "mast sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["wasmtime"] } sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-network-common = { 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"] } diff --git a/parachain-template/node/src/service.rs b/parachain-template/node/src/service.rs index f7849f953f..9ad3c38e1a 100644 --- a/parachain-template/node/src/service.rs +++ b/parachain-template/node/src/service.rs @@ -28,6 +28,7 @@ use cumulus_relay_chain_rpc_interface::{create_client_and_start_worker, RelayCha use sc_client_api::ExecutorProvider; use sc_executor::NativeElseWasmExecutor; use sc_network::NetworkService; +use sc_network_common::service::NetworkBlock; use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sp_api::ConstructRuntimeApi; diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 72a3e882f3..f266da2f9c 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -45,6 +45,7 @@ sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "mast sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-network-common = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index a4bae9cfed..7cecaa807b 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -47,6 +47,7 @@ use sc_consensus::{ }; use sc_executor::WasmExecutor; use sc_network::NetworkService; +use sc_network_common::service::NetworkBlock; use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sp_api::{ApiExt, ConstructRuntimeApi}; diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 1fcc399bbd..9c5974f74d 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -14,7 +14,6 @@ clap = { version = "3.2.16", features = ["derive", "deprecated"] } codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.15.1", features = ["server"] } -parking_lot = "0.12.1" rand = "0.8.5" serde = { version = "1.0.141", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } @@ -31,6 +30,7 @@ sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "mas sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["wasmtime"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-network-common = { 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", features = [ "wasmtime" ] } sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/test/service/src/lib.rs b/test/service/src/lib.rs index 99fb1ad936..28c52ac8f7 100644 --- a/test/service/src/lib.rs +++ b/test/service/src/lib.rs @@ -39,13 +39,13 @@ use cumulus_relay_chain_inprocess_interface::RelayChainInProcessInterface; use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult}; use cumulus_relay_chain_rpc_interface::{create_client_and_start_worker, RelayChainRpcInterface}; use cumulus_test_runtime::{Hash, Header, NodeBlock as Block, RuntimeApi}; -use parking_lot::Mutex; use frame_system_rpc_runtime_api::AccountNonceApi; use polkadot_primitives::v2::{CollatorPair, Hash as PHash, PersistedValidationData}; use polkadot_service::ProvideRuntimeApi; use sc_client_api::execution_extensions::ExecutionStrategies; use sc_network::{config::TransportConfig, multiaddr, NetworkService}; +use sc_network_common::service::{NetworkBlock, NetworkStateInfo}; use sc_service::{ config::{ BlocksPruning, DatabaseSource, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration, @@ -200,7 +200,7 @@ async fn build_relay_chain_interface( Ok(Arc::new(RelayChainInProcessInterface::new( relay_chain_full_node.client.clone(), relay_chain_full_node.backend.clone(), - Arc::new(Mutex::new(Box::new(relay_chain_full_node.network.clone()))), + Arc::new(relay_chain_full_node.network.clone()), relay_chain_full_node.overseer_handle, )) as Arc<_>) } From 530a0aaf0c8a422f708415873d1366ae4c8ea456 Mon Sep 17 00:00:00 2001 From: Roman Useinov Date: Wed, 10 Aug 2022 13:10:20 +0200 Subject: [PATCH 205/238] [benchmarks] pr with weights master (#1522) * [benchmarks] pr with weights * fix weights to reflect the current master state Co-authored-by: paritytech-ci --- .../src/weights/cumulus_pallet_xcmp_queue.rs | 11 ++- .../statemine/src/weights/frame_system.rs | 30 +++--- .../statemine/src/weights/pallet_assets.rs | 74 +++++++------- .../statemine/src/weights/pallet_balances.rs | 21 ++-- .../src/weights/pallet_collator_selection.rs | 40 ++++---- .../statemine/src/weights/pallet_multisig.rs | 66 ++++++++----- .../statemine/src/weights/pallet_proxy.rs | 75 ++++++++------ .../statemine/src/weights/pallet_session.rs | 11 ++- .../statemine/src/weights/pallet_timestamp.rs | 11 ++- .../statemine/src/weights/pallet_uniques.rs | 98 ++++++++++--------- .../statemine/src/weights/pallet_utility.rs | 28 +++--- .../src/weights/cumulus_pallet_xcmp_queue.rs | 11 ++- .../statemint/src/weights/frame_system.rs | 28 +++--- .../statemint/src/weights/pallet_assets.rs | 76 +++++++------- .../statemint/src/weights/pallet_balances.rs | 21 ++-- .../src/weights/pallet_collator_selection.rs | 40 ++++---- .../statemint/src/weights/pallet_multisig.rs | 64 +++++++----- .../statemint/src/weights/pallet_proxy.rs | 83 +++++++++------- .../statemint/src/weights/pallet_session.rs | 11 ++- .../statemint/src/weights/pallet_timestamp.rs | 11 ++- .../statemint/src/weights/pallet_uniques.rs | 92 ++++++++--------- .../statemint/src/weights/pallet_utility.rs | 28 +++--- .../src/weights/cumulus_pallet_xcmp_queue.rs | 11 ++- .../westmint/src/weights/frame_system.rs | 26 +++-- .../westmint/src/weights/pallet_assets.rs | 74 +++++++------- .../westmint/src/weights/pallet_balances.rs | 21 ++-- .../src/weights/pallet_collator_selection.rs | 42 ++++---- .../westmint/src/weights/pallet_multisig.rs | 62 +++++++----- .../westmint/src/weights/pallet_proxy.rs | 95 ++++++++++-------- .../westmint/src/weights/pallet_session.rs | 11 ++- .../westmint/src/weights/pallet_timestamp.rs | 11 ++- .../westmint/src/weights/pallet_uniques.rs | 98 ++++++++++--------- .../westmint/src/weights/pallet_utility.rs | 32 +++--- 33 files changed, 799 insertions(+), 614 deletions(-) diff --git a/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs index 1376461f30..fe16b470b1 100644 --- a/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/parachains/runtimes/assets/statemine/src/weights/cumulus_pallet_xcmp_queue.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -47,13 +48,13 @@ pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_u32() -> Weight { - (2_742_000 as Weight) + (5_634_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_weight() -> Weight { - (2_723_000 as Weight) + (5_559_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/frame_system.rs b/parachains/runtimes/assets/statemine/src/weights/frame_system.rs index 6ac6820bf2..58e679ffb8 100644 --- a/parachains/runtimes/assets/statemine/src/weights/frame_system.rs +++ b/parachains/runtimes/assets/statemine/src/weights/frame_system.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -45,40 +46,45 @@ use sp_std::marker::PhantomData; /// Weight functions for `frame_system`. pub struct WeightInfo(PhantomData); impl frame_system::WeightInfo for WeightInfo { + /// The range of component `b` is `[0, 3932160]`. fn remark(_b: u32, ) -> Weight { (0 as Weight) } + /// The range of component `b` is `[0, 3932160]`. fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (2_661_000 as Weight) + (5_461_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. fn set_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((408_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((622_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. fn kill_storage(i: u32, ) -> Weight { - (868_000 as Weight) - // Standard Error: 0 - .saturating_add((301_000 as Weight).saturating_mul(i as Weight)) + (351_000 as Weight) + // Standard Error: 1_000 + .saturating_add((513_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `p` is `[1, 1000]`. fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((677_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 1_000 + .saturating_add((1_054_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/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs index 25ffd4a38f..5e6847175d 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_assets.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_assets` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -47,13 +48,13 @@ pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) fn create() -> Weight { - (21_627_000 as Weight) + (26_670_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_create() -> Weight { - (11_668_000 as Weight) + (15_063_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -62,14 +63,17 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: System Account (r:5000 w:5000) // Storage: Assets Metadata (r:1 w:0) // Storage: Assets Approvals (r:501 w:500) + /// The range of component `c` is `[0, 5000]`. + /// The range of component `s` is `[0, 5000]`. + /// The range of component `a` is `[0, 500]`. fn destroy(c: u32, s: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 40_000 - .saturating_add((14_590_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 40_000 - .saturating_add((17_099_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 402_000 - .saturating_add((16_521_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 46_000 + .saturating_add((16_382_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 46_000 + .saturating_add((19_187_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 465_000 + .saturating_add((16_818_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) @@ -82,14 +86,14 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn mint() -> Weight { - (25_181_000 as Weight) + (29_655_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn burn() -> Weight { - (28_345_000 as Weight) + (33_648_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -97,7 +101,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (41_418_000 as Weight) + (47_414_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -105,7 +109,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (35_087_000 as Weight) + (39_871_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -113,89 +117,91 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn force_transfer() -> Weight { - (41_546_000 as Weight) + (47_454_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn freeze() -> Weight { - (16_980_000 as Weight) + (20_827_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn thaw() -> Weight { - (17_244_000 as Weight) + (21_249_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn freeze_asset() -> Weight { - (13_896_000 as Weight) + (17_775_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn thaw_asset() -> Weight { - (13_645_000 as Weight) + (17_917_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Metadata (r:1 w:0) fn transfer_ownership() -> Weight { - (15_188_000 as Weight) + (18_724_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn set_team() -> Weight { - (13_773_000 as Weight) + (17_448_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) - fn set_metadata(_n: u32, s: u32, ) -> Weight { - (26_675_000 as Weight) - // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. + fn set_metadata(_n: u32, _s: u32, ) -> Weight { + (31_859_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn clear_metadata() -> Weight { - (26_721_000 as Weight) + (31_293_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. fn force_set_metadata(_n: u32, _s: u32, ) -> Weight { - (15_048_000 as Weight) + (19_595_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_clear_metadata() -> Weight { - (26_543_000 as Weight) + (31_366_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_asset_status() -> Weight { - (13_155_000 as Weight) + (16_884_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn approve_transfer() -> Weight { - (29_278_000 as Weight) + (34_730_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -204,21 +210,21 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_approved() -> Weight { - (53_600_000 as Weight) + (59_797_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn cancel_approval() -> Weight { - (30_325_000 as Weight) + (35_178_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn force_cancel_approval() -> Weight { - (31_541_000 as Weight) + (36_840_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs index 2ff177cec7..346712c553 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_balances.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_balances` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -47,43 +48,43 @@ pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (35_771_000 as Weight) + (41_804_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (27_333_000 as Weight) + (31_899_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (17_049_000 as Weight) + (20_638_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (20_318_000 as Weight) + (24_081_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (36_298_000 as Weight) + (41_357_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (32_829_000 as Weight) + (37_382_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (14_966_000 as Weight) + (18_476_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs index b1a7f9ae53..d7aaeceeef 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_collator_selection.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_collator_selection` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -47,21 +48,22 @@ pub struct WeightInfo(PhantomData); impl pallet_collator_selection::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection Invulnerables (r:0 w:1) + /// The range of component `b` is `[1, 100]`. fn set_invulnerables(b: u32, ) -> Weight { - (7_537_000 as Weight) - // Standard Error: 2_000 - .saturating_add((3_134_000 as Weight).saturating_mul(b as Weight)) + (8_196_000 as Weight) + // Standard Error: 3_000 + .saturating_add((3_354_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection DesiredCandidates (r:0 w:1) fn set_desired_candidates() -> Weight { - (8_482_000 as Weight) + (9_141_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection CandidacyBond (r:0 w:1) fn set_candidacy_bond() -> Weight { - (8_830_000 as Weight) + (9_554_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) @@ -70,19 +72,21 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection CandidacyBond (r:1 w:0) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[1, 1000]`. fn register_as_candidate(c: u32, ) -> Weight { - (49_340_000 as Weight) + (55_660_000 as Weight) // Standard Error: 1_000 - .saturating_add((73_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((103_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[6, 1000]`. fn leave_intent(c: u32, ) -> Weight { - (47_670_000 as Weight) + (56_380_000 as Weight) // Standard Error: 1_000 - .saturating_add((84_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((113_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -90,7 +94,7 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn note_author() -> Weight { - (31_969_000 as Weight) + (31_852_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -99,12 +103,14 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System Account (r:1 w:1) // Storage: CollatorSelection Invulnerables (r:1 w:0) // Storage: System BlockWeight (r:1 w:1) + /// The range of component `r` is `[1, 1000]`. + /// The range of component `c` is `[1, 1000]`. fn new_session(r: u32, c: u32, ) -> Weight { (0 as Weight) - // Standard Error: 1_622_000 - .saturating_add((9_012_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_622_000 - .saturating_add((43_791_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 2_076_000 + .saturating_add((10_780_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 2_076_000 + .saturating_add((55_238_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs index 3b37ba3065..9a6bd8b4b3 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_multisig.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_multisig` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -45,15 +46,20 @@ 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 { - (11_793_000 as Weight) + /// The range of component `z` is `[0, 10000]`. + fn as_multi_threshold_1(z: u32, ) -> Weight { + (18_001_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_create(s: u32, z: u32, ) -> Weight { - (31_457_000 as Weight) + (35_223_000 as Weight) // Standard Error: 0 - .saturating_add((89_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((118_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)) @@ -62,8 +68,10 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (33_873_000 as Weight) + (39_275_000 as Weight) // Standard Error: 1_000 .saturating_add((92_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 @@ -72,10 +80,12 @@ impl pallet_multisig::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (20_886_000 as Weight) + (24_703_000 as Weight) // Standard Error: 1_000 - .saturating_add((78_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((96_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)) @@ -83,10 +93,12 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (32_658_000 as Weight) + (38_375_000 as Weight) // Standard Error: 1_000 - .saturating_add((88_000 as Weight).saturating_mul(s as Weight)) + .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)) @@ -95,49 +107,55 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (40_252_000 as Weight) + (46_964_000 as Weight) // Standard Error: 1_000 - .saturating_add((123_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((143_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_create(s: u32, ) -> Weight { - (28_117_000 as Weight) - // Standard Error: 1_000 - .saturating_add((105_000 as Weight).saturating_mul(s as Weight)) + (34_450_000 as Weight) + // Standard Error: 2_000 + .saturating_add((117_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_approve(s: u32, ) -> Weight { - (17_435_000 as Weight) + (22_051_000 as Weight) // Standard Error: 0 - .saturating_add((99_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((117_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_complete(s: u32, ) -> Weight { - (56_681_000 as Weight) + (69_763_000 as Weight) // Standard Error: 1_000 - .saturating_add((137_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((162_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[2, 100]`. fn cancel_as_multi(s: u32, ) -> Weight { - (44_968_000 as Weight) + (53_182_000 as Weight) // Standard Error: 1_000 - .saturating_add((107_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((129_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/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs index 95f4fb539d..d764987b4b 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_proxy.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_proxy` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -46,96 +47,110 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Proxies (r:1 w:0) + /// The range of component `p` is `[1, 31]`. fn proxy(p: u32, ) -> Weight { - (13_370_000 as Weight) - // Standard Error: 1_000 - .saturating_add((76_000 as Weight).saturating_mul(p as Weight)) + (18_075_000 as Weight) + // Standard Error: 2_000 + .saturating_add((92_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn proxy_announced(a: u32, p: u32, ) -> Weight { - (29_628_000 as Weight) + (35_722_000 as Weight) // Standard Error: 2_000 - .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((180_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 2_000 - .saturating_add((91_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((85_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)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn remove_announcement(a: u32, p: u32, ) -> Weight { - (20_690_000 as Weight) - // Standard Error: 2_000 - .saturating_add((178_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 2_000 - .saturating_add((25_000 as Weight).saturating_mul(p as Weight)) + (25_193_000 as Weight) + // Standard Error: 1_000 + .saturating_add((185_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 1_000 + .saturating_add((23_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn reject_announcement(a: u32, p: u32, ) -> Weight { - (20_705_000 as Weight) + (25_123_000 as Weight) // Standard Error: 1_000 - .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((190_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((27_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((21_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn announce(a: u32, p: u32, ) -> Weight { - (28_504_000 as Weight) + (32_582_000 as Weight) // Standard Error: 2_000 - .saturating_add((154_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((200_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 2_000 - .saturating_add((82_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((93_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn add_proxy(p: u32, ) -> Weight { - (23_725_000 as Weight) + (28_173_000 as Weight) // Standard Error: 3_000 - .saturating_add((107_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((112_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn remove_proxy(p: u32, ) -> Weight { - (23_878_000 as Weight) - // Standard Error: 2_000 - .saturating_add((104_000 as Weight).saturating_mul(p as Weight)) + (28_247_000 as Weight) + // Standard Error: 3_000 + .saturating_add((118_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn remove_proxies(p: u32, ) -> Weight { - (19_794_000 as Weight) + (23_821_000 as Weight) // Standard Error: 2_000 - .saturating_add((66_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((85_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)) } // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn anonymous(p: u32, ) -> Weight { - (26_583_000 as Weight) + (31_472_000 as Weight) // Standard Error: 2_000 .saturating_add((21_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[0, 30]`. fn kill_anonymous(p: u32, ) -> Weight { - (20_573_000 as Weight) + (24_620_000 as Weight) // Standard Error: 2_000 - .saturating_add((68_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((85_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/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs index 40c6b9a260..973fd7d4dc 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_session.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_session` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -48,14 +49,14 @@ impl pallet_session::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (13_104_000 as Weight) + (16_555_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (10_083_000 as Weight) + (13_554_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs index 202ec83005..c2757b04d5 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_timestamp.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_timestamp` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -47,11 +48,11 @@ pub struct WeightInfo(PhantomData); impl pallet_timestamp::WeightInfo for WeightInfo { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (3_852_000 as Weight) + (6_818_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (2_335_000 as Weight) + (2_431_000 as Weight) } } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs index 376a44ab79..a49c1795c2 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs @@ -17,12 +17,12 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-07-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// /home/benchbot/cargo_target_dir/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --steps=50 @@ -32,8 +32,10 @@ // --wasm-execution=compiled // --heap-pages=4096 // --pallet=pallet_uniques -// --chain=statemine-dev -// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/cumulus/.git/.artifacts/bench.json +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights/pallet_uniques.rs @@ -51,17 +53,17 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (30_418_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (28_358_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (19_165_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (17_824_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) @@ -76,12 +78,12 @@ impl pallet_uniques::WeightInfo for WeightInfo { /// The range of component `a` is `[0, 1000]`. fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 19_000 - .saturating_add((11_040_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 19_000 - .saturating_add((1_591_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 19_000 - .saturating_add((1_553_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 17_000 + .saturating_add((10_592_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 17_000 + .saturating_add((1_658_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 17_000 + .saturating_add((1_593_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) @@ -94,7 +96,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (37_027_000 as Weight) + (36_742_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -103,7 +105,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:1) // Storage: Uniques ItemPriceOf (r:0 w:1) fn burn() -> Weight { - (37_408_000 as Weight) + (37_124_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -112,7 +114,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:2) // Storage: Uniques ItemPriceOf (r:0 w:1) fn transfer() -> Weight { - (29_003_000 as Weight) + (28_961_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -121,8 +123,8 @@ impl pallet_uniques::WeightInfo for WeightInfo { /// The range of component `i` is `[0, 5000]`. fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 17_000 - .saturating_add((13_243_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 15_000 + .saturating_add((12_880_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -131,26 +133,26 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (22_186_000 as Weight) + (21_658_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (22_351_000 as Weight) + (21_980_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (17_528_000 as Weight) + (17_123_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (17_530_000 as Weight) + (17_398_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -158,20 +160,20 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (25_794_000 as Weight) + (25_473_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (18_102_000 as Weight) + (17_970_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (21_774_000 as Weight) + (20_781_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -179,7 +181,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (42_889_000 as Weight) + (42_652_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -187,76 +189,76 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (41_233_000 as Weight) + (41_166_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (34_201_000 as Weight) + (35_471_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (35_387_000 as Weight) + (35_110_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (34_499_000 as Weight) + (33_536_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } + // Done by hand to satisfy master branch + // This will be regenerated for the next release + fn try_increment_id() -> Weight { + (20_000_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (32_426_000 as Weight) + (31_913_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (23_660_000 as Weight) + (23_536_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (23_711_000 as Weight) + (23_748_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (21_147_000 as Weight) + (20_712_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn set_collection_max_supply() -> Weight { - (20_939_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - // Storage: Uniques NextCollectionId (r:1 w:1) - // Storage: Uniques Class (r:1 w:0) - fn try_increment_id() -> Weight { - (19_318_000 as Weight) + (20_245_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:0) // Storage: Uniques ItemPriceOf (r:0 w:1) fn set_price() -> Weight { - (20_073_000 as Weight) + (20_065_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -265,7 +267,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Account (r:0 w:2) fn buy_item() -> Weight { - (39_849_000 as Weight) + (40_638_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } diff --git a/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs b/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs index 0468fa48d5..2df9b89848 100644 --- a/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs +++ b/parachains/runtimes/assets/statemine/src/weights/pallet_utility.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_utility` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemine-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemine.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemine/src/weights @@ -45,25 +46,28 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_utility`. pub struct WeightInfo(PhantomData); impl pallet_utility::WeightInfo for WeightInfo { + /// The range of component `c` is `[0, 1000]`. fn batch(c: u32, ) -> Weight { - (13_031_000 as Weight) + (22_923_000 as Weight) // Standard Error: 1_000 - .saturating_add((2_829_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((3_526_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (1_740_000 as Weight) + (5_220_000 as Weight) } + /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { - (17_846_000 as Weight) + (20_953_000 as Weight) // Standard Error: 2_000 - .saturating_add((3_074_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((3_698_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (8_741_000 as Weight) + (12_087_000 as Weight) } + /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { - (11_543_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_832_000 as Weight).saturating_mul(c as Weight)) + (10_076_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_546_000 as Weight).saturating_mul(c as Weight)) } } diff --git a/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs index 034c5223a6..a51fb710ea 100644 --- a/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/parachains/runtimes/assets/statemint/src/weights/cumulus_pallet_xcmp_queue.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -47,13 +48,13 @@ pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_u32() -> Weight { - (2_947_000 as Weight) + (5_192_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_weight() -> Weight { - (2_953_000 as Weight) + (5_363_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/frame_system.rs b/parachains/runtimes/assets/statemint/src/weights/frame_system.rs index 13e338fed0..794cdbe1b6 100644 --- a/parachains/runtimes/assets/statemint/src/weights/frame_system.rs +++ b/parachains/runtimes/assets/statemint/src/weights/frame_system.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -45,40 +46,45 @@ use sp_std::marker::PhantomData; /// Weight functions for `frame_system`. pub struct WeightInfo(PhantomData); impl frame_system::WeightInfo for WeightInfo { + /// The range of component `b` is `[0, 3932160]`. fn remark(_b: u32, ) -> Weight { (0 as Weight) } + /// The range of component `b` is `[0, 3932160]`. fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) } // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (2_796_000 as Weight) + (5_446_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. fn set_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((406_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((626_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. fn kill_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((300_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((515_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `p` is `[1, 1000]`. fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((675_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 1_000 + .saturating_add((1_052_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/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs index 25c402ca66..4aea74e75c 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_assets.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_assets` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -47,13 +48,13 @@ pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) fn create() -> Weight { - (21_125_000 as Weight) + (26_226_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_create() -> Weight { - (11_436_000 as Weight) + (15_357_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -62,14 +63,17 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: System Account (r:5000 w:5000) // Storage: Assets Metadata (r:1 w:0) // Storage: Assets Approvals (r:501 w:500) + /// The range of component `c` is `[0, 5000]`. + /// The range of component `s` is `[0, 5000]`. + /// The range of component `a` is `[0, 500]`. fn destroy(c: u32, s: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 41_000 - .saturating_add((14_276_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 41_000 - .saturating_add((17_058_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 413_000 - .saturating_add((16_349_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 45_000 + .saturating_add((15_904_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 45_000 + .saturating_add((18_803_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 450_000 + .saturating_add((17_017_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) @@ -82,14 +86,14 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn mint() -> Weight { - (25_174_000 as Weight) + (29_616_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn burn() -> Weight { - (28_685_000 as Weight) + (33_496_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -97,7 +101,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (41_884_000 as Weight) + (46_790_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -105,7 +109,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (34_928_000 as Weight) + (39_769_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -113,93 +117,97 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn force_transfer() -> Weight { - (41_850_000 as Weight) + (47_200_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn freeze() -> Weight { - (17_476_000 as Weight) + (20_873_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn thaw() -> Weight { - (16_933_000 as Weight) + (21_228_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn freeze_asset() -> Weight { - (14_108_000 as Weight) + (17_685_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn thaw_asset() -> Weight { - (13_892_000 as Weight) + (17_542_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Metadata (r:1 w:0) fn transfer_ownership() -> Weight { - (15_156_000 as Weight) + (18_639_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn set_team() -> Weight { - (13_664_000 as Weight) + (17_135_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. fn set_metadata(n: u32, s: u32, ) -> Weight { - (26_528_000 as Weight) + (31_324_000 as Weight) // Standard Error: 0 - .saturating_add((4_000 as Weight).saturating_mul(n as Weight)) + .saturating_add((1_000 as Weight).saturating_mul(n as Weight)) // Standard Error: 0 - .saturating_add((7_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((3_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn clear_metadata() -> Weight { - (26_473_000 as Weight) + (31_340_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. fn force_set_metadata(_n: u32, s: u32, ) -> Weight { - (15_111_000 as Weight) + (18_756_000 as Weight) // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((2_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_clear_metadata() -> Weight { - (26_530_000 as Weight) + (31_427_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_asset_status() -> Weight { - (13_531_000 as Weight) + (16_930_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn approve_transfer() -> Weight { - (29_424_000 as Weight) + (34_492_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -208,21 +216,21 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_approved() -> Weight { - (53_931_000 as Weight) + (60_098_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn cancel_approval() -> Weight { - (30_317_000 as Weight) + (35_630_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn force_cancel_approval() -> Weight { - (31_712_000 as Weight) + (37_399_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs index 028f18aff0..66e621a74a 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_balances.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_balances` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -47,43 +48,43 @@ pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (35_623_000 as Weight) + (41_006_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (26_691_000 as Weight) + (31_329_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (16_902_000 as Weight) + (21_075_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (19_859_000 as Weight) + (24_413_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (35_804_000 as Weight) + (41_434_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (32_500_000 as Weight) + (37_653_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (15_231_000 as Weight) + (18_701_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs index f17ef6ce86..ceb6344319 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_collator_selection.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_collator_selection` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -47,21 +48,22 @@ pub struct WeightInfo(PhantomData); impl pallet_collator_selection::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection Invulnerables (r:0 w:1) + /// The range of component `b` is `[1, 100]`. fn set_invulnerables(b: u32, ) -> Weight { - (7_491_000 as Weight) - // Standard Error: 4_000 - .saturating_add((3_088_000 as Weight).saturating_mul(b as Weight)) + (8_587_000 as Weight) + // Standard Error: 3_000 + .saturating_add((3_304_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection DesiredCandidates (r:0 w:1) fn set_desired_candidates() -> Weight { - (8_499_000 as Weight) + (9_027_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection CandidacyBond (r:0 w:1) fn set_candidacy_bond() -> Weight { - (8_828_000 as Weight) + (9_244_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) @@ -70,19 +72,21 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection CandidacyBond (r:1 w:0) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[1, 1000]`. fn register_as_candidate(c: u32, ) -> Weight { - (50_408_000 as Weight) + (60_984_000 as Weight) // Standard Error: 1_000 - .saturating_add((74_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((89_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[6, 1000]`. fn leave_intent(c: u32, ) -> Weight { - (46_529_000 as Weight) + (49_046_000 as Weight) // Standard Error: 1_000 - .saturating_add((88_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((118_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -90,7 +94,7 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn note_author() -> Weight { - (32_010_000 as Weight) + (32_269_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -99,12 +103,14 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System Account (r:1 w:1) // Storage: CollatorSelection Invulnerables (r:1 w:0) // Storage: System BlockWeight (r:1 w:1) + /// The range of component `r` is `[1, 1000]`. + /// The range of component `c` is `[1, 1000]`. fn new_session(r: u32, c: u32, ) -> Weight { (0 as Weight) - // Standard Error: 1_634_000 - .saturating_add((9_177_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_634_000 - .saturating_add((44_101_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 1_992_000 + .saturating_add((10_521_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 1_992_000 + .saturating_add((53_162_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs index 2db8e0c9be..cd0c8b42a2 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_multisig.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_multisig` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -45,13 +46,18 @@ 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 { - (11_820_000 as Weight) + /// The range of component `z` is `[0, 10000]`. + fn as_multi_threshold_1(z: u32, ) -> Weight { + (17_175_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_create(s: u32, z: u32, ) -> Weight { - (30_833_000 as Weight) + (35_937_000 as Weight) // Standard Error: 0 .saturating_add((97_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 @@ -62,20 +68,24 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (34_326_000 as Weight) + (37_468_000 as Weight) // Standard Error: 1_000 - .saturating_add((76_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((89_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)) } // Storage: Multisig Multisigs (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (19_773_000 as Weight) + (25_557_000 as Weight) // Standard Error: 1_000 - .saturating_add((80_000 as Weight).saturating_mul(s as Weight)) + .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)) @@ -83,8 +93,10 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (32_978_000 as Weight) + (38_127_000 as Weight) // Standard Error: 1_000 .saturating_add((88_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 @@ -95,49 +107,55 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (43_388_000 as Weight) + (47_383_000 as Weight) // Standard Error: 1_000 - .saturating_add((115_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((127_000 as Weight).saturating_mul(s as Weight)) // Standard Error: 0 - .saturating_add((2_000 as Weight).saturating_mul(z as Weight)) + .saturating_add((3_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_create(s: u32, ) -> Weight { - (28_277_000 as Weight) + (33_472_000 as Weight) // Standard Error: 1_000 - .saturating_add((106_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((102_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_approve(s: u32, ) -> Weight { - (17_706_000 as Weight) - // Standard Error: 0 - .saturating_add((99_000 as Weight).saturating_mul(s as Weight)) + (21_612_000 as Weight) + // Standard Error: 1_000 + .saturating_add((119_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_complete(s: u32, ) -> Weight { - (56_982_000 as Weight) + (68_168_000 as Weight) // Standard Error: 1_000 - .saturating_add((142_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((157_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[2, 100]`. fn cancel_as_multi(s: u32, ) -> Weight { - (45_280_000 as Weight) + (52_748_000 as Weight) // Standard Error: 1_000 - .saturating_add((106_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((117_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/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs index f714523cb5..1b968ae885 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_proxy.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_proxy` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -46,96 +47,110 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Proxies (r:1 w:0) + /// The range of component `p` is `[1, 31]`. fn proxy(p: u32, ) -> Weight { - (13_319_000 as Weight) - // Standard Error: 1_000 - .saturating_add((74_000 as Weight).saturating_mul(p as Weight)) + (17_582_000 as Weight) + // Standard Error: 2_000 + .saturating_add((77_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn proxy_announced(a: u32, p: u32, ) -> Weight { - (29_744_000 as Weight) - // Standard Error: 1_000 - .saturating_add((151_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((71_000 as Weight).saturating_mul(p as Weight)) + (34_603_000 as Weight) + // Standard Error: 2_000 + .saturating_add((169_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((87_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)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn remove_announcement(a: u32, p: u32, ) -> Weight { - (20_491_000 as Weight) + (24_496_000 as Weight) // Standard Error: 1_000 - .saturating_add((167_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((179_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((20_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((25_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn reject_announcement(a: u32, p: u32, ) -> Weight { - (20_322_000 as Weight) + (24_237_000 as Weight) // Standard Error: 1_000 - .saturating_add((168_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((181_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((23_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((29_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn announce(a: u32, p: u32, ) -> Weight { - (27_196_000 as Weight) + (32_065_000 as Weight) + // Standard Error: 1_000 + .saturating_add((166_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 2_000 - .saturating_add((165_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 2_000 - .saturating_add((82_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((91_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn add_proxy(p: u32, ) -> Weight { - (22_891_000 as Weight) - // Standard Error: 3_000 - .saturating_add((112_000 as Weight).saturating_mul(p as Weight)) + (27_168_000 as Weight) + // Standard Error: 2_000 + .saturating_add((117_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn remove_proxy(p: u32, ) -> Weight { - (22_819_000 as Weight) - // Standard Error: 3_000 - .saturating_add((123_000 as Weight).saturating_mul(p as Weight)) + (27_233_000 as Weight) + // Standard Error: 2_000 + .saturating_add((121_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn remove_proxies(p: u32, ) -> Weight { - (19_067_000 as Weight) - // Standard Error: 1_000 - .saturating_add((75_000 as Weight).saturating_mul(p as Weight)) + (23_010_000 as Weight) + // Standard Error: 2_000 + .saturating_add((95_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)) } // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn anonymous(p: u32, ) -> Weight { - (25_335_000 as Weight) + (30_378_000 as Weight) // Standard Error: 2_000 - .saturating_add((35_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((16_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[0, 30]`. fn kill_anonymous(p: u32, ) -> Weight { - (20_262_000 as Weight) + (23_977_000 as Weight) // Standard Error: 2_000 - .saturating_add((70_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((76_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/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs index 422b3779ac..5f5a8eea98 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_session.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_session` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -48,14 +49,14 @@ impl pallet_session::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (12_809_000 as Weight) + (16_170_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (9_844_000 as Weight) + (13_246_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs index 4ba7092bae..ffb8799414 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_timestamp.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_timestamp` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -47,11 +48,11 @@ pub struct WeightInfo(PhantomData); impl pallet_timestamp::WeightInfo for WeightInfo { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (3_742_000 as Weight) + (6_737_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (2_217_000 as Weight) + (2_329_000 as Weight) } } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs index 340d2a967f..c421cf9ba3 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs @@ -17,12 +17,12 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-07-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// /home/benchbot/cargo_target_dir/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --steps=50 @@ -32,8 +32,10 @@ // --wasm-execution=compiled // --heap-pages=4096 // --pallet=pallet_uniques -// --chain=statemint-dev -// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/cumulus/.git/.artifacts/bench.json +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights/pallet_uniques.rs @@ -51,17 +53,17 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (29_281_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (27_424_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (18_557_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (17_098_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) @@ -77,11 +79,11 @@ impl pallet_uniques::WeightInfo for WeightInfo { fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) // Standard Error: 18_000 - .saturating_add((10_816_000 as Weight).saturating_mul(n as Weight)) + .saturating_add((10_919_000 as Weight).saturating_mul(n as Weight)) // Standard Error: 18_000 - .saturating_add((1_732_000 as Weight).saturating_mul(m as Weight)) + .saturating_add((1_679_000 as Weight).saturating_mul(m as Weight)) // Standard Error: 18_000 - .saturating_add((1_442_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((1_463_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) @@ -94,7 +96,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (35_779_000 as Weight) + (36_329_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -103,7 +105,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:1) // Storage: Uniques ItemPriceOf (r:0 w:1) fn burn() -> Weight { - (36_526_000 as Weight) + (36_746_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -112,7 +114,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:2) // Storage: Uniques ItemPriceOf (r:0 w:1) fn transfer() -> Weight { - (28_542_000 as Weight) + (28_916_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -121,8 +123,8 @@ impl pallet_uniques::WeightInfo for WeightInfo { /// The range of component `i` is `[0, 5000]`. fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 17_000 - .saturating_add((12_725_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 15_000 + .saturating_add((12_745_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -131,26 +133,26 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (21_639_000 as Weight) + (21_813_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (21_492_000 as Weight) + (22_088_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (16_979_000 as Weight) + (17_184_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (17_112_000 as Weight) + (17_311_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -158,20 +160,20 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (25_141_000 as Weight) + (25_174_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (17_566_000 as Weight) + (17_879_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (20_435_000 as Weight) + (20_491_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -179,7 +181,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (42_154_000 as Weight) + (42_444_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -187,76 +189,76 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (40_247_000 as Weight) + (41_217_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (34_154_000 as Weight) + (34_559_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (34_669_000 as Weight) + (34_863_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (33_074_000 as Weight) + (33_199_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } + // Done by hand to satisfy master branch + // This will be regenerated for the next release + fn try_increment_id() -> Weight { + (20_000_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (31_386_000 as Weight) + (31_472_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (23_487_000 as Weight) + (23_618_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (23_421_000 as Weight) + (23_507_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (20_865_000 as Weight) + (21_120_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn set_collection_max_supply() -> Weight { - (20_451_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - // Storage: Uniques NextCollectionId (r:1 w:1) - // Storage: Uniques Class (r:1 w:0) - fn try_increment_id() -> Weight { - (18_496_000 as Weight) + (20_664_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:0) // Storage: Uniques ItemPriceOf (r:0 w:1) fn set_price() -> Weight { - (19_952_000 as Weight) + (19_938_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -265,7 +267,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Account (r:0 w:2) fn buy_item() -> Weight { - (39_750_000 as Weight) + (39_254_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } diff --git a/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs b/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs index 108bfc7088..e1bade9386 100644 --- a/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs +++ b/parachains/runtimes/assets/statemint/src/weights/pallet_utility.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_utility` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=statemint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-statemint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/statemint/src/weights @@ -45,25 +46,28 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_utility`. pub struct WeightInfo(PhantomData); impl pallet_utility::WeightInfo for WeightInfo { + /// The range of component `c` is `[0, 1000]`. fn batch(c: u32, ) -> Weight { - (12_413_000 as Weight) - // Standard Error: 1_000 - .saturating_add((3_011_000 as Weight).saturating_mul(c as Weight)) + (30_959_000 as Weight) + // Standard Error: 6_000 + .saturating_add((3_220_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (1_748_000 as Weight) + (4_732_000 as Weight) } + /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { - (20_755_000 as Weight) + (16_465_000 as Weight) // Standard Error: 2_000 - .saturating_add((3_254_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((3_364_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (8_936_000 as Weight) + (11_903_000 as Weight) } + /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { - (12_159_000 as Weight) + (22_621_000 as Weight) // Standard Error: 1_000 - .saturating_add((3_063_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((3_147_000 as Weight).saturating_mul(c as Weight)) } } diff --git a/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs index fa8084e394..1fff43c333 100644 --- a/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/parachains/runtimes/assets/westmint/src/weights/cumulus_pallet_xcmp_queue.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -47,13 +48,13 @@ pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_u32() -> Weight { - (2_926_000 as Weight) + (5_463_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: XcmpQueue QueueConfig (r:1 w:1) fn set_config_with_weight() -> Weight { - (2_822_000 as Weight) + (5_221_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/frame_system.rs b/parachains/runtimes/assets/westmint/src/weights/frame_system.rs index 84806b92cd..1c3947980e 100644 --- a/parachains/runtimes/assets/westmint/src/weights/frame_system.rs +++ b/parachains/runtimes/assets/westmint/src/weights/frame_system.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -45,9 +46,11 @@ use sp_std::marker::PhantomData; /// Weight functions for `frame_system`. pub struct WeightInfo(PhantomData); impl frame_system::WeightInfo for WeightInfo { + /// The range of component `b` is `[0, 3932160]`. fn remark(_b: u32, ) -> Weight { (0 as Weight) } + /// The range of component `b` is `[0, 3932160]`. fn remark_with_event(b: u32, ) -> Weight { (0 as Weight) // Standard Error: 0 @@ -56,29 +59,32 @@ impl frame_system::WeightInfo for WeightInfo { // Storage: System Digest (r:1 w:1) // Storage: unknown [0x3a686561707061676573] (r:0 w:1) fn set_heap_pages() -> Weight { - (2_765_000 as Weight) + (5_726_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. fn set_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((407_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((616_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. fn kill_storage(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((301_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 1_000 + .saturating_add((519_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) } // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `p` is `[1, 1000]`. fn kill_prefix(p: u32, ) -> Weight { (0 as Weight) - // Standard Error: 0 - .saturating_add((675_000 as Weight).saturating_mul(p as Weight)) + // Standard Error: 1_000 + .saturating_add((1_067_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/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs index cdd196cb30..ea6cfd174d 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_assets.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_assets` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -47,13 +48,13 @@ pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) fn create() -> Weight { - (21_904_000 as Weight) + (25_905_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_create() -> Weight { - (11_278_000 as Weight) + (14_977_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -62,14 +63,17 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: System Account (r:5000 w:5000) // Storage: Assets Metadata (r:1 w:0) // Storage: Assets Approvals (r:501 w:500) + /// The range of component `c` is `[0, 5000]`. + /// The range of component `s` is `[0, 5000]`. + /// The range of component `a` is `[0, 500]`. fn destroy(c: u32, s: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 40_000 - .saturating_add((14_319_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 40_000 - .saturating_add((17_186_000 as Weight).saturating_mul(s as Weight)) - // Standard Error: 405_000 - .saturating_add((16_886_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 46_000 + .saturating_add((16_133_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 46_000 + .saturating_add((18_915_000 as Weight).saturating_mul(s as Weight)) + // Standard Error: 464_000 + .saturating_add((16_795_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight))) @@ -82,14 +86,14 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn mint() -> Weight { - (25_484_000 as Weight) + (29_903_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Account (r:1 w:1) fn burn() -> Weight { - (29_034_000 as Weight) + (34_384_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -97,7 +101,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (41_422_000 as Weight) + (48_218_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -105,7 +109,7 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (35_411_000 as Weight) + (40_558_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -113,91 +117,95 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn force_transfer() -> Weight { - (42_224_000 as Weight) + (48_330_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn freeze() -> Weight { - (17_089_000 as Weight) + (21_218_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Account (r:1 w:1) fn thaw() -> Weight { - (17_264_000 as Weight) + (21_227_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn freeze_asset() -> Weight { - (14_186_000 as Weight) + (17_906_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn thaw_asset() -> Weight { - (14_050_000 as Weight) + (17_669_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Metadata (r:1 w:0) fn transfer_ownership() -> Weight { - (15_416_000 as Weight) + (18_756_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn set_team() -> Weight { - (13_897_000 as Weight) + (17_203_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. fn set_metadata(_n: u32, s: u32, ) -> Weight { - (27_021_000 as Weight) + (31_757_000 as Weight) // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((3_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn clear_metadata() -> Weight { - (26_549_000 as Weight) + (31_669_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. fn force_set_metadata(_n: u32, s: u32, ) -> Weight { - (14_947_000 as Weight) + (18_566_000 as Weight) // Standard Error: 0 - .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((2_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)) } // Storage: Assets Asset (r:1 w:0) // Storage: Assets Metadata (r:1 w:1) fn force_clear_metadata() -> Weight { - (26_334_000 as Weight) + (31_467_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) fn force_asset_status() -> Weight { - (13_291_000 as Weight) + (16_275_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn approve_transfer() -> Weight { - (29_781_000 as Weight) + (34_436_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -206,21 +214,21 @@ impl pallet_assets::WeightInfo for WeightInfo { // Storage: Assets Account (r:2 w:2) // Storage: System Account (r:1 w:1) fn transfer_approved() -> Weight { - (54_111_000 as Weight) + (60_445_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn cancel_approval() -> Weight { - (30_413_000 as Weight) + (35_819_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Assets Asset (r:1 w:1) // Storage: Assets Approvals (r:1 w:1) fn force_cancel_approval() -> Weight { - (31_635_000 as Weight) + (36_535_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs index ce4646373e..14aa8f1ca7 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_balances.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_balances` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -47,43 +48,43 @@ pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - (37_133_000 as Weight) + (40_330_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_keep_alive() -> Weight { - (28_339_000 as Weight) + (30_938_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_creating() -> Weight { - (16_854_000 as Weight) + (20_284_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn set_balance_killing() -> Weight { - (20_043_000 as Weight) + (24_018_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) fn force_transfer() -> Weight { - (37_927_000 as Weight) + (40_970_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:1 w:1) fn transfer_all() -> Weight { - (34_600_000 as Weight) + (36_243_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) fn force_unreserve() -> Weight { - (15_697_000 as Weight) + (18_374_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs index 6dbad537e2..244ba48e35 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_collator_selection.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_collator_selection` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -47,21 +48,22 @@ pub struct WeightInfo(PhantomData); impl pallet_collator_selection::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection Invulnerables (r:0 w:1) + /// The range of component `b` is `[1, 100]`. fn set_invulnerables(b: u32, ) -> Weight { - (7_367_000 as Weight) - // Standard Error: 2_000 - .saturating_add((3_108_000 as Weight).saturating_mul(b as Weight)) + (6_669_000 as Weight) + // Standard Error: 3_000 + .saturating_add((3_218_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection DesiredCandidates (r:0 w:1) fn set_desired_candidates() -> Weight { - (8_408_000 as Weight) + (8_348_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection CandidacyBond (r:0 w:1) fn set_candidacy_bond() -> Weight { - (8_465_000 as Weight) + (8_592_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) @@ -70,19 +72,21 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: Session NextKeys (r:1 w:0) // Storage: CollatorSelection CandidacyBond (r:1 w:0) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[1, 1000]`. fn register_as_candidate(c: u32, ) -> Weight { - (47_256_000 as Weight) - // Standard Error: 0 - .saturating_add((80_000 as Weight).saturating_mul(c as Weight)) + (55_542_000 as Weight) + // Standard Error: 1_000 + .saturating_add((92_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: CollatorSelection Candidates (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[2, 1000]`. fn leave_intent(c: u32, ) -> Weight { - (47_184_000 as Weight) + (52_080_000 as Weight) // Standard Error: 1_000 - .saturating_add((93_000 as Weight).saturating_mul(c as Weight)) + .saturating_add((109_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -90,7 +94,7 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System BlockWeight (r:1 w:1) // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) fn note_author() -> Weight { - (31_830_000 as Weight) + (31_546_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -99,12 +103,14 @@ impl pallet_collator_selection::WeightInfo for WeightIn // Storage: System Account (r:1 w:1) // Storage: CollatorSelection Invulnerables (r:1 w:0) // Storage: System BlockWeight (r:1 w:1) + /// The range of component `r` is `[1, 1000]`. + /// The range of component `c` is `[1, 1000]`. fn new_session(r: u32, c: u32, ) -> Weight { (0 as Weight) - // Standard Error: 1_712_000 - .saturating_add((9_418_000 as Weight).saturating_mul(r as Weight)) - // Standard Error: 1_712_000 - .saturating_add((46_064_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 1_895_000 + .saturating_add((9_941_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 1_895_000 + .saturating_add((50_628_000 as Weight).saturating_mul(c as Weight)) .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs index d61d2d9f7f..cc762c4624 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_multisig.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_multisig` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -45,17 +46,20 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_multisig`. pub struct WeightInfo(PhantomData); impl pallet_multisig::WeightInfo for WeightInfo { + /// The range of component `z` is `[0, 10000]`. fn as_multi_threshold_1(z: u32, ) -> Weight { - (12_152_000 as Weight) + (17_854_000 as Weight) // Standard Error: 0 .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_create(s: u32, z: u32, ) -> Weight { - (30_804_000 as Weight) - // Standard Error: 0 - .saturating_add((102_000 as Weight).saturating_mul(s as Weight)) + (36_613_000 as Weight) + // Standard Error: 1_000 + .saturating_add((96_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)) @@ -64,20 +68,24 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_create_store(s: u32, z: u32, ) -> Weight { - (34_003_000 as Weight) + (40_039_000 as Weight) // Standard Error: 1_000 - .saturating_add((77_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((72_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)) } // Storage: Multisig Multisigs (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_approve(s: u32, z: u32, ) -> Weight { - (20_754_000 as Weight) + (26_059_000 as Weight) // Standard Error: 1_000 - .saturating_add((78_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((82_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)) @@ -85,10 +93,12 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { - (32_903_000 as Weight) + (38_292_000 as Weight) // Standard Error: 1_000 - .saturating_add((89_000 as Weight).saturating_mul(s as Weight)) + .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(2 as Weight)) @@ -97,10 +107,12 @@ impl pallet_multisig::WeightInfo for WeightInfo { // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. fn as_multi_complete(s: u32, z: u32, ) -> Weight { - (40_647_000 as Weight) + (47_468_000 as Weight) // Standard Error: 1_000 - .saturating_add((126_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((129_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)) @@ -108,38 +120,42 @@ impl pallet_multisig::WeightInfo for WeightInfo { } // Storage: Multisig Multisigs (r:1 w:1) // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_create(s: u32, ) -> Weight { - (28_386_000 as Weight) + (33_492_000 as Weight) // Standard Error: 1_000 - .saturating_add((105_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((110_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:0) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_approve(s: u32, ) -> Weight { - (17_693_000 as Weight) + (22_147_000 as Weight) // Standard Error: 0 - .saturating_add((104_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((113_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. fn approve_as_multi_complete(s: u32, ) -> Weight { - (59_428_000 as Weight) + (66_106_000 as Weight) // Standard Error: 1_000 - .saturating_add((142_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((161_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)) } // Storage: Multisig Multisigs (r:1 w:1) // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[2, 100]`. fn cancel_as_multi(s: u32, ) -> Weight { - (46_106_000 as Weight) + (52_566_000 as Weight) // Standard Error: 1_000 - .saturating_add((109_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((117_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/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs index f7070665b7..8ec439c9ae 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_proxy.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_proxy` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -46,94 +47,108 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_proxy::WeightInfo for WeightInfo { // Storage: Proxy Proxies (r:1 w:0) + /// The range of component `p` is `[1, 31]`. fn proxy(p: u32, ) -> Weight { - (13_141_000 as Weight) - // Standard Error: 1_000 - .saturating_add((77_000 as Weight).saturating_mul(p as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - } - // Storage: Proxy Proxies (r:1 w:0) - // Storage: Proxy Announcements (r:1 w:1) - // Storage: System Account (r:1 w:1) - fn proxy_announced(a: u32, p: u32, ) -> Weight { - (29_038_000 as Weight) - // Standard Error: 1_000 - .saturating_add((169_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 + (18_084_000 as Weight) + // Standard Error: 2_000 .saturating_add((83_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + } + // Storage: Proxy Proxies (r:1 w:0) + // Storage: Proxy Announcements (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. + fn proxy_announced(a: u32, p: u32, ) -> Weight { + (35_619_000 as Weight) + // Standard Error: 2_000 + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((89_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)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn remove_announcement(a: u32, p: u32, ) -> Weight { - (20_094_000 as Weight) - // Standard Error: 1_000 - .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) - // Standard Error: 1_000 - .saturating_add((27_000 as Weight).saturating_mul(p as Weight)) + (24_774_000 as Weight) + // Standard Error: 2_000 + .saturating_add((190_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_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(2 as Weight)) } // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn reject_announcement(a: u32, p: u32, ) -> Weight { - (20_103_000 as Weight) + (25_855_000 as Weight) // Standard Error: 1_000 - .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + .saturating_add((160_000 as Weight).saturating_mul(a as Weight)) // Standard Error: 1_000 - .saturating_add((28_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((15_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Proxy Proxies (r:1 w:0) // Storage: Proxy Announcements (r:1 w:1) // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. fn announce(a: u32, p: u32, ) -> Weight { - (27_273_000 as Weight) - // Standard Error: 1_000 - .saturating_add((157_000 as Weight).saturating_mul(a as Weight)) + (32_874_000 as Weight) // Standard Error: 2_000 - .saturating_add((87_000 as Weight).saturating_mul(p as Weight)) + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((97_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn add_proxy(p: u32, ) -> Weight { - (22_950_000 as Weight) - // Standard Error: 2_000 - .saturating_add((102_000 as Weight).saturating_mul(p as Weight)) + (28_312_000 as Weight) + // Standard Error: 4_000 + .saturating_add((105_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn remove_proxy(p: u32, ) -> Weight { - (22_740_000 as Weight) - // Standard Error: 3_000 - .saturating_add((120_000 as Weight).saturating_mul(p as Weight)) + (28_197_000 as Weight) + // Standard Error: 4_000 + .saturating_add((121_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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn remove_proxies(p: u32, ) -> Weight { - (18_937_000 as Weight) - // Standard Error: 1_000 - .saturating_add((75_000 as Weight).saturating_mul(p as Weight)) + (23_659_000 as Weight) + // Standard Error: 8_000 + .saturating_add((106_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)) } // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. fn anonymous(p: u32, ) -> Weight { - (25_617_000 as Weight) + (31_575_000 as Weight) // Standard Error: 2_000 - .saturating_add((24_000 as Weight).saturating_mul(p as Weight)) + .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)) } // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[0, 30]`. fn kill_anonymous(p: u32, ) -> Weight { - (19_880_000 as Weight) + (24_640_000 as Weight) // Standard Error: 2_000 .saturating_add((80_000 as Weight).saturating_mul(p as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs index 31334d9874..949e1c64ef 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_session.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_session` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -48,14 +49,14 @@ impl pallet_session::WeightInfo for WeightInfo { // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:1 w:1) fn set_keys() -> Weight { - (12_489_000 as Weight) + (16_457_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Session NextKeys (r:1 w:1) // Storage: Session KeyOwner (r:0 w:1) fn purge_keys() -> Weight { - (9_671_000 as Weight) + (13_585_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs index 099c2e10af..296a565fcb 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_timestamp.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_timestamp` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -47,11 +48,11 @@ pub struct WeightInfo(PhantomData); impl pallet_timestamp::WeightInfo for WeightInfo { // Storage: Timestamp Now (r:1 w:1) fn set() -> Weight { - (3_849_000 as Weight) + (6_762_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn on_finalize() -> Weight { - (2_393_000 as Weight) + (2_387_000 as Weight) } } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs index fcdccf6df2..66c0587c12 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs @@ -17,12 +17,12 @@ //! Autogenerated weights for `pallet_uniques` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-07-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! HOSTNAME: `bm3`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// /home/benchbot/cargo_target_dir/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --steps=50 @@ -32,8 +32,10 @@ // --wasm-execution=compiled // --heap-pages=4096 // --pallet=pallet_uniques -// --chain=westmint-dev -// --json-file=/var/lib/gitlab-runner/builds/zyw4fam_/0/parity/mirrors/cumulus/.git/.artifacts/bench.json +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights/pallet_uniques.rs @@ -51,17 +53,17 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create() -> Weight { - (30_771_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (27_462_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques NextCollectionId (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_create() -> Weight { - (18_993_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (16_480_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) @@ -76,12 +78,12 @@ impl pallet_uniques::WeightInfo for WeightInfo { /// The range of component `a` is `[0, 1000]`. fn destroy(n: u32, m: u32, a: u32, ) -> Weight { (0 as Weight) - // Standard Error: 17_000 - .saturating_add((10_708_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 17_000 - .saturating_add((1_670_000 as Weight).saturating_mul(m as Weight)) - // Standard Error: 17_000 - .saturating_add((1_553_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 18_000 + .saturating_add((10_956_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 18_000 + .saturating_add((1_654_000 as Weight).saturating_mul(m as Weight)) + // Standard Error: 18_000 + .saturating_add((1_572_000 as Weight).saturating_mul(a as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) @@ -94,7 +96,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint() -> Weight { - (36_089_000 as Weight) + (36_074_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -103,7 +105,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:1) // Storage: Uniques ItemPriceOf (r:0 w:1) fn burn() -> Weight { - (37_263_000 as Weight) + (37_583_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -112,7 +114,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Account (r:0 w:2) // Storage: Uniques ItemPriceOf (r:0 w:1) fn transfer() -> Weight { - (28_354_000 as Weight) + (28_134_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -121,8 +123,8 @@ impl pallet_uniques::WeightInfo for WeightInfo { /// The range of component `i` is `[0, 5000]`. fn redeposit(i: u32, ) -> Weight { (0 as Weight) - // Standard Error: 17_000 - .saturating_add((12_931_000 as Weight).saturating_mul(i as Weight)) + // Standard Error: 16_000 + .saturating_add((12_715_000 as Weight).saturating_mul(i as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -131,26 +133,26 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn freeze() -> Weight { - (21_319_000 as Weight) + (21_019_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn thaw() -> Weight { - (21_919_000 as Weight) + (21_907_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn freeze_collection() -> Weight { - (17_073_000 as Weight) + (16_894_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn thaw_collection() -> Weight { - (17_076_000 as Weight) + (16_650_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -158,20 +160,20 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn transfer_ownership() -> Weight { - (25_188_000 as Weight) + (25_095_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: Uniques Class (r:1 w:1) fn set_team() -> Weight { - (17_702_000 as Weight) + (17_428_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn force_item_status() -> Weight { - (20_148_000 as Weight) + (20_018_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -179,7 +181,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn set_attribute() -> Weight { - (40_678_000 as Weight) + (41_955_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -187,76 +189,76 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques InstanceMetadataOf (r:1 w:0) // Storage: Uniques Attribute (r:1 w:1) fn clear_attribute() -> Weight { - (38_881_000 as Weight) + (40_201_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn set_metadata() -> Weight { - (33_625_000 as Weight) + (33_630_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques InstanceMetadataOf (r:1 w:1) fn clear_metadata() -> Weight { - (34_391_000 as Weight) + (34_054_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Uniques Class (r:1 w:1) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn set_collection_metadata() -> Weight { - (33_073_000 as Weight) + (33_283_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } + // Done by hand to satisfy master branch + // This will be regenerated for the next release + fn try_increment_id() -> Weight { + (20_000_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques ClassMetadataOf (r:1 w:1) fn clear_collection_metadata() -> Weight { - (31_404_000 as Weight) + (31_298_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn approve_transfer() -> Weight { - (22_265_000 as Weight) + (22_430_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Asset (r:1 w:1) fn cancel_approval() -> Weight { - (23_219_000 as Weight) + (23_005_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques OwnershipAcceptance (r:1 w:1) fn set_accept_ownership() -> Weight { - (20_645_000 as Weight) + (20_468_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques CollectionMaxSupply (r:1 w:1) // Storage: Uniques Class (r:1 w:0) fn set_collection_max_supply() -> Weight { - (20_020_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - // Storage: Uniques NextCollectionId (r:1 w:1) - // Storage: Uniques Class (r:1 w:0) - fn try_increment_id() -> Weight { - (18_647_000 as Weight) + (19_948_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Uniques Asset (r:1 w:0) // Storage: Uniques ItemPriceOf (r:0 w:1) fn set_price() -> Weight { - (19_627_000 as Weight) + (19_487_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -265,7 +267,7 @@ impl pallet_uniques::WeightInfo for WeightInfo { // Storage: Uniques Class (r:1 w:0) // Storage: Uniques Account (r:0 w:2) fn buy_item() -> Weight { - (39_671_000 as Weight) + (39_973_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } diff --git a/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs b/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs index 98954e058c..d8b3e0e1f3 100644 --- a/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs +++ b/parachains/runtimes/assets/westmint/src/weights/pallet_utility.rs @@ -17,11 +17,12 @@ //! Autogenerated weights for `pallet_utility` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-05-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-08-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm6`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westmint-dev"), DB CACHE: 1024 // Executed Command: -// ./target/production/polkadot-parachain +// ./artifacts/polkadot-parachain // benchmark // pallet // --chain=westmint-dev @@ -31,7 +32,7 @@ // --extrinsic=* // --steps=50 // --repeat=20 -// --json-file=./bench-westmint.json +// --json // --header=./file_header.txt // --output=./parachains/runtimes/assets/westmint/src/weights @@ -45,25 +46,28 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_utility`. pub struct WeightInfo(PhantomData); impl pallet_utility::WeightInfo for WeightInfo { + /// The range of component `c` is `[0, 1000]`. fn batch(c: u32, ) -> Weight { - (11_572_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_896_000 as Weight).saturating_mul(c as Weight)) + (14_433_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_315_000 as Weight).saturating_mul(c as Weight)) } fn as_derivative() -> Weight { - (1_697_000 as Weight) + (5_234_000 as Weight) } + /// The range of component `c` is `[0, 1000]`. fn batch_all(c: u32, ) -> Weight { - (20_744_000 as Weight) - // Standard Error: 1_000 - .saturating_add((3_144_000 as Weight).saturating_mul(c as Weight)) + (16_023_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_466_000 as Weight).saturating_mul(c as Weight)) } fn dispatch_as() -> Weight { - (8_621_000 as Weight) + (12_588_000 as Weight) } + /// The range of component `c` is `[0, 1000]`. fn force_batch(c: u32, ) -> Weight { - (13_931_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_888_000 as Weight).saturating_mul(c as Weight)) + (16_094_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_280_000 as Weight).saturating_mul(c as Weight)) } } From b0f2816b816bf7c0950a1ec4fd15fb26c7620a5e Mon Sep 17 00:00:00 2001 From: Roman Useinov Date: Wed, 10 Aug 2022 19:27:09 +0200 Subject: [PATCH 206/238] [Fix] flaky node tests (#1534) * [Fix] flaky node tests * fix tokio ver * fix errors/warnings * fix more errors * some fixe * fix err * fix arg order for the base path to work properly * comments * remove extra dependencies and waiting for blocks * fix errors * bump sleep --- Cargo.lock | 358 +++++++++--------- polkadot-parachain/Cargo.toml | 2 + polkadot-parachain/tests/common.rs | 126 +++++- .../tests/polkadot_argument_parsing.rs | 54 +-- .../tests/polkadot_mdns_issue.rs | 37 +- polkadot-parachain/tests/purge_chain_works.rs | 71 ++-- .../tests/running_the_node_and_interrupt.rs | 37 +- 7 files changed, 348 insertions(+), 337 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f8b07c230..eb370220c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "beefy-primitives", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -507,7 +507,7 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "beefy-primitives", "sp-api", @@ -516,7 +516,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -2698,7 +2698,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", ] @@ -2716,7 +2716,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -2738,7 +2738,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "Inflector", "chrono", @@ -2789,7 +2789,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2800,7 +2800,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2816,7 +2816,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -2844,7 +2844,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "bitflags", "frame-metadata", @@ -2874,7 +2874,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2886,7 +2886,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2898,7 +2898,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro2", "quote", @@ -2908,7 +2908,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "log", @@ -2925,7 +2925,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -2940,7 +2940,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "sp-api", @@ -2949,7 +2949,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "sp-api", @@ -5327,7 +5327,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -5344,7 +5344,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5358,7 +5358,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -5390,7 +5390,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -5405,7 +5405,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5429,7 +5429,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5449,7 +5449,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5464,7 +5464,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "beefy-primitives", "frame-support", @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -5503,7 +5503,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5521,7 +5521,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5566,7 +5566,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5583,7 +5583,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "bitflags", "frame-benchmarking", @@ -5611,7 +5611,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "bitflags", "parity-scale-codec", @@ -5626,7 +5626,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro2", "quote", @@ -5636,7 +5636,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "jsonrpsee", "pallet-contracts-primitives", @@ -5653,7 +5653,7 @@ dependencies = [ [[package]] name = "pallet-contracts-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "pallet-contracts-primitives", "parity-scale-codec", @@ -5666,7 +5666,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5682,7 +5682,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5705,7 +5705,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5718,7 +5718,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5736,7 +5736,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5774,7 +5774,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5790,7 +5790,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5810,7 +5810,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5844,7 +5844,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5862,7 +5862,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -5877,7 +5877,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5892,7 +5892,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -5909,7 +5909,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5928,7 +5928,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "sp-api", @@ -5938,7 +5938,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -5955,7 +5955,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5978,7 +5978,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -5994,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6009,7 +6009,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -6023,7 +6023,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6038,7 +6038,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6054,7 +6054,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -6075,7 +6075,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6091,7 +6091,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -6105,7 +6105,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6128,7 +6128,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6139,7 +6139,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "sp-arithmetic", @@ -6148,7 +6148,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -6177,7 +6177,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6195,7 +6195,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6214,7 +6214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-support", "frame-system", @@ -6230,7 +6230,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6245,7 +6245,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6256,7 +6256,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6273,7 +6273,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6288,7 +6288,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-benchmarking", "frame-support", @@ -7692,7 +7692,9 @@ dependencies = [ "substrate-frame-rpc-system", "substrate-prometheus-endpoint", "tempfile", + "tokio", "try-runtime-cli", + "wait-timeout", "westmint-runtime", "xcm", ] @@ -8784,7 +8786,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -9159,7 +9161,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "sp-core", @@ -9170,7 +9172,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "futures-timer", @@ -9197,7 +9199,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "futures-timer", @@ -9220,7 +9222,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9236,7 +9238,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -9253,7 +9255,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9264,7 +9266,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "chrono", "clap 3.2.16", @@ -9303,7 +9305,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "fnv", "futures", @@ -9331,7 +9333,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "hash-db", "kvdb", @@ -9356,7 +9358,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures", @@ -9380,7 +9382,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures", @@ -9409,7 +9411,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "fork-tree", @@ -9451,7 +9453,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "jsonrpsee", @@ -9473,7 +9475,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9486,7 +9488,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures", @@ -9511,7 +9513,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "lazy_static", "lru 0.7.7", @@ -9538,7 +9540,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "environmental", "parity-scale-codec", @@ -9555,7 +9557,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "parity-scale-codec", @@ -9570,7 +9572,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "cfg-if 1.0.0", "libc", @@ -9590,7 +9592,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "ahash", "async-trait", @@ -9631,7 +9633,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "finality-grandpa", "futures", @@ -9652,7 +9654,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "ansi_term", "futures", @@ -9669,7 +9671,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "hex", @@ -9684,7 +9686,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "asynchronous-codec", @@ -9733,7 +9735,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "bitflags", @@ -9754,7 +9756,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "ahash", "futures", @@ -9772,7 +9774,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "hex", @@ -9793,7 +9795,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "fork-tree", "futures", @@ -9821,7 +9823,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "bytes", "fnv", @@ -9850,7 +9852,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "libp2p", @@ -9863,7 +9865,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9872,7 +9874,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "hash-db", @@ -9902,7 +9904,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "jsonrpsee", @@ -9925,7 +9927,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "jsonrpsee", @@ -9938,7 +9940,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "directories", @@ -10005,7 +10007,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "parity-scale-codec", @@ -10019,7 +10021,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10038,7 +10040,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "libc", @@ -10057,7 +10059,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "chrono", "futures", @@ -10075,7 +10077,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "ansi_term", "atty", @@ -10106,7 +10108,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10117,7 +10119,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "futures-timer", @@ -10143,7 +10145,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "log", @@ -10156,7 +10158,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "futures-timer", @@ -10677,7 +10679,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "hash-db", "log", @@ -10694,7 +10696,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "blake2", "proc-macro-crate", @@ -10706,7 +10708,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -10719,7 +10721,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "integer-sqrt", "num-traits", @@ -10734,7 +10736,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -10747,7 +10749,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "parity-scale-codec", @@ -10759,7 +10761,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "sp-api", @@ -10771,7 +10773,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "log", @@ -10789,7 +10791,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures", @@ -10808,7 +10810,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "parity-scale-codec", @@ -10826,7 +10828,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "merlin", @@ -10849,7 +10851,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -10863,7 +10865,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -10876,7 +10878,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "base58", "bitflags", @@ -10922,7 +10924,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "blake2", "byteorder", @@ -10936,7 +10938,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro2", "quote", @@ -10947,7 +10949,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10956,7 +10958,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro2", "quote", @@ -10966,7 +10968,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "environmental", "parity-scale-codec", @@ -10977,7 +10979,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "finality-grandpa", "log", @@ -10995,7 +10997,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11009,7 +11011,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "bytes", "futures", @@ -11035,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "lazy_static", "sp-core", @@ -11046,7 +11048,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures", @@ -11063,7 +11065,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "thiserror", "zstd", @@ -11072,7 +11074,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "parity-scale-codec", @@ -11087,7 +11089,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -11101,7 +11103,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "sp-api", "sp-core", @@ -11111,7 +11113,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "backtrace", "lazy_static", @@ -11121,7 +11123,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "rustc-hash", "serde", @@ -11131,7 +11133,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "either", "hash256-std-hasher", @@ -11153,7 +11155,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11171,7 +11173,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "Inflector", "proc-macro-crate", @@ -11183,7 +11185,7 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "parity-scale-codec", @@ -11197,7 +11199,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "serde", "serde_json", @@ -11206,7 +11208,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -11220,7 +11222,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "scale-info", @@ -11231,7 +11233,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "hash-db", "log", @@ -11253,12 +11255,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11271,7 +11273,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "log", "sp-core", @@ -11284,7 +11286,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures-timer", @@ -11300,7 +11302,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "sp-std", @@ -11312,7 +11314,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "sp-api", "sp-runtime", @@ -11321,7 +11323,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "log", @@ -11337,7 +11339,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "hash-db", "memory-db", @@ -11353,7 +11355,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11370,7 +11372,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11381,7 +11383,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "impl-trait-for-tuples", "log", @@ -11640,7 +11642,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "platforms", ] @@ -11648,7 +11650,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11669,7 +11671,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures-util", "hyper", @@ -11682,7 +11684,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "jsonrpsee", "log", @@ -11703,7 +11705,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "async-trait", "futures", @@ -11729,7 +11731,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11739,7 +11741,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11750,7 +11752,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "ansi_term", "build-helper", @@ -12285,7 +12287,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#fece0657f20e15df94be5833b164dfacd44823eb" +source = "git+https://github.com/paritytech/substrate?branch=master#1fd71c7845d6c28c532795ec79106d959dd1fe30" dependencies = [ "clap 3.2.16", "jsonrpsee", diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index f266da2f9c..55664fab9c 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -92,6 +92,8 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/substrate" assert_cmd = "2.0" nix = "0.24" tempfile = "3.3.0" +tokio = { version = "1.19.2", features = ["macros", "time", "parking_lot"] } +wait-timeout = "0.2" [features] default = [] diff --git a/polkadot-parachain/tests/common.rs b/polkadot-parachain/tests/common.rs index 72f3881b7b..7b9dffae38 100644 --- a/polkadot-parachain/tests/common.rs +++ b/polkadot-parachain/tests/common.rs @@ -14,25 +14,119 @@ // 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, -}; +#![cfg(unix)] -/// Wait for the given `child` the given ammount of `secs`. +use assert_cmd::cargo::cargo_bin; +use nix::{ + sys::signal::{kill, Signal}, + unistd::Pid, +}; +use std::{ + io::{BufRead, BufReader, Read}, + ops::{Deref, DerefMut}, + path::Path, + process::{self, Child, Command, ExitStatus}, +}; +use tokio::time::{sleep, Duration}; + +/// Wait for the given `child` the given number 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)), +pub fn wait_for(child: &mut Child, secs: u64) -> Result { + let result = wait_timeout::ChildExt::wait_timeout(child, Duration::from_secs(5.min(secs))) + .map_err(|_| ())?; + if let Some(exit_status) = result { + Ok(exit_status) + } else { + if secs > 5 { + eprintln!("Child process taking over 5 seconds to exit gracefully"); + let result = wait_timeout::ChildExt::wait_timeout(child, Duration::from_secs(secs - 5)) + .map_err(|_| ())?; + if let Some(exit_status) = result { + return Ok(exit_status) + } } + eprintln!("Took too long to exit (> {} seconds). Killing...", secs); + let _ = child.kill(); + child.wait().unwrap(); + Err(()) } - eprintln!("Took to long to exit. Killing..."); - let _ = child.kill(); - child.wait().unwrap(); - - None +} + +/// Run the node for a while (till the RPC is up + 30 secs) +/// TODO: needs to be revisited to hit the RPC +pub async fn run_node_for_a_while(base_path: &Path, args: &[&str], signal: Signal) { + let mut cmd = Command::new(cargo_bin("polkadot-parachain")) + .stdout(process::Stdio::piped()) + .stderr(process::Stdio::piped()) + .arg("-d") + .arg(base_path) + .args(args) + .spawn() + .unwrap(); + + let stderr = cmd.stderr.take().unwrap(); + + let mut child = KillChildOnDrop(cmd); + // TODO: use this instead of the timeout going forward? + let (_, _) = find_ws_url_from_output(stderr); + + // TODO: Revisit this to find a better approach for collators + sleep(Duration::from_secs(120)).await; + + assert!(child.try_wait().unwrap().is_none(), "the process should still be running"); + + // Stop the process + kill(Pid::from_raw(child.id().try_into().unwrap()), signal).unwrap(); + assert!(wait_for(&mut child, 40).map(|x| x.success()).unwrap()); +} + +pub struct KillChildOnDrop(pub Child); + +impl Drop for KillChildOnDrop { + fn drop(&mut self) { + let _ = self.0.kill(); + } +} + +impl Deref for KillChildOnDrop { + type Target = Child; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for KillChildOnDrop { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +/// Read the WS address from the output. +/// +/// This is hack to get the actual bound sockaddr because +/// substrate assigns a random port if the specified port was already bound. +pub fn find_ws_url_from_output(read: impl Read + Send) -> (String, String) { + let mut data = String::new(); + + let ws_url = BufReader::new(read) + .lines() + .find_map(|line| { + let line = + line.expect("failed to obtain next line from stdout for WS address discovery"); + + data.push_str(&line); + + // does the line contain our port (we expect this specific output from substrate). + let sock_addr = match line.split_once("Running JSON-RPC WS server: addr=") { + None => return None, + Some((_, after)) => after.split_once(",").unwrap().0, + }; + + Some(format!("ws://{}", sock_addr)) + }) + .expect("We should get a WebSocket address"); + + (ws_url, data) } diff --git a/polkadot-parachain/tests/polkadot_argument_parsing.rs b/polkadot-parachain/tests/polkadot_argument_parsing.rs index 4b4078fcfc..ad91ce0e48 100644 --- a/polkadot-parachain/tests/polkadot_argument_parsing.rs +++ b/polkadot-parachain/tests/polkadot_argument_parsing.rs @@ -14,50 +14,26 @@ // 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, fs, process::Command, thread, time::Duration}; +use tempfile::tempdir; mod common; -#[test] +#[tokio::test] #[cfg(unix)] #[ignore] -fn polkadot_argument_parsing() { - use nix::{ - sys::signal::{ - kill, - Signal::{self, SIGINT, SIGTERM}, - }, - unistd::Pid, - }; +async fn polkadot_argument_parsing() { + use nix::sys::signal::Signal::{SIGINT, SIGTERM}; + let base_dir = tempdir().expect("could not create a temp dir"); - fn run_command_and_kill(signal: Signal) { - let _ = fs::remove_dir_all("polkadot_argument_parsing"); - let mut cmd = Command::new(cargo_bin("polkadot-parachain")) - .args(&[ - "-d", - "polkadot_argument_parsing", - "--", - "--dev", - "--bootnodes", - "/ip4/127.0.0.1/tcp/30333/p2p/Qmbx43psh7LVkrYTRXisUpzCubbgYojkejzAgj5mteDnxy", - "--bootnodes", - "/ip4/127.0.0.1/tcp/50500/p2p/Qma6SpS7tzfCrhtgEVKR9Uhjmuv55ovC3kY6y6rPBxpWde", - ]) - .spawn() - .unwrap(); + let args = &[ + "--", + "--dev", + "--bootnodes", + "/ip4/127.0.0.1/tcp/30333/p2p/Qmbx43psh7LVkrYTRXisUpzCubbgYojkejzAgj5mteDnxy", + "--bootnodes", + "/ip4/127.0.0.1/tcp/50500/p2p/Qma6SpS7tzfCrhtgEVKR9Uhjmuv55ovC3kY6y6rPBxpWde", + ]; - thread::sleep(Duration::from_secs(20)); - 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 process must exit gracefully after signal {}", - signal, - ); - } - - run_command_and_kill(SIGINT); - run_command_and_kill(SIGTERM); + common::run_node_for_a_while(base_dir.path(), args, SIGINT).await; + common::run_node_for_a_while(base_dir.path(), args, SIGTERM).await; } diff --git a/polkadot-parachain/tests/polkadot_mdns_issue.rs b/polkadot-parachain/tests/polkadot_mdns_issue.rs index 1f04e2a72f..bb492a31d9 100644 --- a/polkadot-parachain/tests/polkadot_mdns_issue.rs +++ b/polkadot-parachain/tests/polkadot_mdns_issue.rs @@ -14,41 +14,20 @@ // 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, fs, process::Command, thread, time::Duration}; +use tempfile::tempdir; mod common; -#[test] +#[tokio::test] #[cfg(unix)] #[ignore] -fn interrupt_polkadot_mdns_issue_test() { - use nix::{ - sys::signal::{ - kill, - Signal::{self, SIGINT, SIGTERM}, - }, - unistd::Pid, - }; +async fn interrupt_polkadot_mdns_issue_test() { + use nix::sys::signal::Signal::{SIGINT, SIGTERM}; - fn run_command_and_kill(signal: Signal) { - let _ = fs::remove_dir_all("interrupt_polkadot_mdns_issue_test"); - let mut cmd = Command::new(cargo_bin("polkadot-parachain")) - .args(&["-d", "interrupt_polkadot_mdns_issue_test", "--", "--dev"]) - .spawn() - .unwrap(); + let base_dir = tempdir().expect("could not create a temp dir"); - thread::sleep(Duration::from_secs(20)); - 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 process must exit gracefully after signal {}", - signal, - ); - } + let args = &["--", "--dev"]; - run_command_and_kill(SIGINT); - run_command_and_kill(SIGTERM); + common::run_node_for_a_while(base_dir.path(), args, SIGINT).await; + common::run_node_for_a_while(base_dir.path(), args, SIGTERM).await; } diff --git a/polkadot-parachain/tests/purge_chain_works.rs b/polkadot-parachain/tests/purge_chain_works.rs index ea93c4275f..acde3faa50 100644 --- a/polkadot-parachain/tests/purge_chain_works.rs +++ b/polkadot-parachain/tests/purge_chain_works.rs @@ -15,59 +15,38 @@ // along with Substrate. If not, see . use assert_cmd::cargo::cargo_bin; -use std::{convert::TryInto, process::Command, thread, time::Duration}; +use nix::sys::signal::SIGINT; +use std::process::Command; +use tempfile::tempdir; mod common; -#[test] +#[tokio::test] #[cfg(unix)] #[ignore] -fn purge_chain_works() { - fn run_node_and_stop() -> tempfile::TempDir { - use nix::{ - sys::signal::{kill, Signal::SIGINT}, - unistd::Pid, - }; - - let base_path = tempfile::tempdir().unwrap(); - - let mut cmd = Command::new(cargo_bin("polkadot-parachain")) - .args(&["-d"]) - .arg(base_path.path()) - .args(&["--", "--dev"]) - .spawn() - .unwrap(); - - // Let it produce some blocks. - thread::sleep(Duration::from_secs(30)); - 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()); - - base_path - } - +async fn purge_chain_works() { // Check that both databases are deleted - { - let base_path = run_node_and_stop(); - assert!(base_path.path().join("chains/local_testnet/db/full").exists()); - assert!(base_path.path().join("polkadot/chains/dev/db/full").exists()); + let base_dir = tempdir().expect("could not create a temp dir"); - let status = Command::new(cargo_bin("polkadot-parachain")) - .args(&["purge-chain", "-d"]) - .arg(base_path.path()) - .arg("-y") - .status() - .unwrap(); - assert!(status.success()); + let args = &["--", "--dev"]; - // Make sure that the `parachain_local_testnet` chain folder exists, but the `db` is deleted. - assert!(base_path.path().join("chains/local_testnet").exists()); - assert!(!base_path.path().join("chains/local_testnet/db/full").exists()); - // assert!(base_path.path().join("polkadot/chains/dev").exists()); - // assert!(!base_path.path().join("polkadot/chains/dev/db").exists()); - } + common::run_node_for_a_while(base_dir.path(), args, SIGINT).await; + + assert!(base_dir.path().join("chains/local_testnet/db/full").exists()); + assert!(base_dir.path().join("polkadot/chains/dev/db/full").exists()); + + let status = Command::new(cargo_bin("polkadot-parachain")) + .args(&["purge-chain", "-d"]) + .arg(base_dir.path()) + .arg("-y") + .status() + .unwrap(); + assert!(status.success()); + + // Make sure that the `parachain_local_testnet` chain folder exists, but the `db` is deleted. + assert!(base_dir.path().join("chains/local_testnet").exists()); + assert!(!base_dir.path().join("chains/local_testnet/db/full").exists()); + // assert!(base_path.path().join("polkadot/chains/dev").exists()); + // assert!(!base_path.path().join("polkadot/chains/dev/db").exists()); } diff --git a/polkadot-parachain/tests/running_the_node_and_interrupt.rs b/polkadot-parachain/tests/running_the_node_and_interrupt.rs index f28e8f19b2..6ffa39bd87 100644 --- a/polkadot-parachain/tests/running_the_node_and_interrupt.rs +++ b/polkadot-parachain/tests/running_the_node_and_interrupt.rs @@ -14,41 +14,20 @@ // 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, fs, process::Command, thread, time::Duration}; +use tempfile::tempdir; mod common; -#[test] +#[tokio::test] #[cfg(unix)] #[ignore] -fn running_the_node_works_and_can_be_interrupted() { - use nix::{ - sys::signal::{ - kill, - Signal::{self, SIGINT, SIGTERM}, - }, - unistd::Pid, - }; +async fn running_the_node_works_and_can_be_interrupted() { + use nix::sys::signal::Signal::{SIGINT, SIGTERM}; - fn run_command_and_kill(signal: Signal) { - let _ = fs::remove_dir_all("interrupt_test"); - let mut cmd = Command::new(cargo_bin("polkadot-parachain")) - .args(&["-d", "interrupt_test", "--", "--dev"]) - .spawn() - .unwrap(); + let base_dir = tempdir().expect("could not create a temp dir"); - 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 process must exit gracefully after signal {}", - signal, - ); - } + let args = &["--", "--dev"]; - run_command_and_kill(SIGINT); - run_command_and_kill(SIGTERM); + common::run_node_for_a_while(base_dir.path(), args, SIGINT).await; + common::run_node_for_a_while(base_dir.path(), args, SIGTERM).await; } From cd3fcf6d89f69172cfca23a12e68cd1a73ebce43 Mon Sep 17 00:00:00 2001 From: Roman Useinov Date: Wed, 10 Aug 2022 19:50:14 +0200 Subject: [PATCH 207/238] [Fix] Some info in the release checklist (#1516) * [Fix] Some info in the release checklist * fix the rest of the links * adding more details * improve details it * adding proxy filters to release notes * remove proxy checks Co-authored-by: NachoPal Co-authored-by: parity-processbot <> --- .github/ISSUE_TEMPLATE/release-runtime.md | 18 +++---- docs/release.md | 63 +++++++++++++++-------- 2 files changed, 51 insertions(+), 30 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/release-runtime.md b/.github/ISSUE_TEMPLATE/release-runtime.md index 25157a8280..fe970ce7a1 100644 --- a/.github/ISSUE_TEMPLATE/release-runtime.md +++ b/.github/ISSUE_TEMPLATE/release-runtime.md @@ -11,14 +11,14 @@ title: Cumulus {{ env.VERSION }} Release checklist ### Codebase These checks should be performed on the codebase. -- [ ] the [`spec_version`](../../docs/release.md#spec-version) has been incremented since the +- [ ] the [`spec_version`](https://github.com/paritytech/cumulus/blob/master/docs/release.md#spec-version) has been incremented since the last release for any native runtimes from any existing use on public (non-private/test) networks -- [ ] previously [completed migrations](../../docs/release.md#old-migrations-removed) are +- [ ] previously [completed migrations](https://github.com/paritytech/cumulus/blob/master/docs/release.md#old-migrations-removed) are removed for any public (non-private/test) networks - [ ] No migrations added in the last release that would need to be removed -- [ ] pallet and [extrinsic ordering](../../docs/release.md#extrinsic-ordering) as well as `SignedExtension`s have stayed +- [ ] pallet and [extrinsic ordering](https://github.com/paritytech/cumulus/blob/master/docs/release.md#extrinsic-ordering--storage) as well as `SignedExtension`s have stayed the same. Bump `transaction_version` otherwise -- [ ] the [benchmarks](../../docs/release.md#benchmarks) ran +- [ ] the [benchmarks](https://github.com/paritytech/ci_cd/wiki/Benchmarks:-cumulus) ran - [ ] the weights have been updated for any modified runtime logic - [ ] the various pieces of XCM config are sane @@ -27,20 +27,20 @@ These checks should be performed on the codebase. 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](../../docs/release.md#new-migrations) complete successfully, and the +- [ ] Verify [new migrations](https://github.com/paritytech/cumulus/blob/master/docs/release.md#new-migrations) complete successfully, and the runtime state is correctly updated for any public (non-private/test) networks -- [ ] Run integration tests +- [ ] Run [integration tests](https://github.com/paritytech/cumulus/blob/master/docs/release.md#integration-tests), and make sure they pass. - [ ] Push runtime upgrade to Westmint and verify network stability ### Github - [ ] Check that a draft release has been created at the [Github Releases page](https://github.com/paritytech/cumulus/releases) with relevant [release - notes](../../docs/release.md#release-notes) -- [ ] Check that [build artifacts](../../docs/release.md#build-artifacts) have been added to the + notes](https://github.com/paritytech/cumulus/blob/master/docs/release.md#release-notes) +- [ ] Check that [build artifacts](https://github.com/paritytech/cumulus/blob/master/docs/release.md#build-artifacts) have been added to the draft-release. --- -Read more about the [release documentation](../../docs/release.md). +Read more about the [release documentation](https://github.com/paritytech/cumulus/blob/master/docs/release.md). diff --git a/docs/release.md b/docs/release.md index 9bd5895c83..2b7c79c50b 100644 --- a/docs/release.md +++ b/docs/release.md @@ -75,35 +75,56 @@ function of the appropriate pallets. ### Extrinsic Ordering & Storage -Offline signing libraries depend on a consistent API of call indices and functions. Nowadays, we are no longer using -indices but the task of checking whether the API remains compatible remained and the name "Extrinsic Ordering" remained -as well although we no longer check the ordering itself. +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. It also checks if there have been any changes in `storage`. In case of a breaking change, increase `transaction_version`. -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. It also checks if there have been any changes in `storage`. In case of a breaking change, -increase `transaction_version`. +To verify the order has not changed, manually start the following [Github Action](https://github.com/paritytech/cumulus/actions/workflows/extrinsic-ordering-check-from-bin.yml). It takes around a minute to run and will produce the report as artifact you need to manually check. -To verify that the API did not break, manually start the following [Github -Action](https://github.com/paritytech/cumulus/actions/workflows/extrinsic-ordering-check-from-bin.yml). It takes around -a minute to run and will produce the report as artifact you need to manually check. +To run it, in the _Run Workflow_ dropdown: +1. **Use workflow from**: to ignore, leave `master` as default +2. **The WebSocket url of the reference node**: + - Statemint: `wss://statemint-rpc.polkadot.io` + - Statemine: `wss://statemine-rpc.polkadot.io` + - Westmint: `wss://westmint-rpc.polkadot.io` +3. **A url to a Linux binary for the node containing the runtime to test**: Paste the URL of the latest release-candidate binary from the draft-release on Github. The binary has to previously be uploaded to S3 (Github url link to the binary is constantly changing) + - E.g: https://releases.parity.io/cumulus/v0.9.270-rc3/polkadot-parachain +4. **The name of the chain under test. Usually, you would pass a local chain**: + - Statemint: `statemint-local` + - Statemine: `statemine-local` + - Westmint: `westmint-local` +5. Click **Run workflow** -When the workflow is done, click on it and download the zip artifact, inside you'll find an `output.txt` file. The -output should be appended as comment to the "Checklist issue". - -The things to look for in the output are lines like: +When the workflow is done, click on it and download the zip artifact, inside you'll find an `output.txt` file. The 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 +- `[+] 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 the indexes did not -change. +**Note**: Adding new functions to the runtime does not constitute a breaking change +as long as the indexes did not change. -**Note**: Extrinsic function signatures changes (adding/removing & ordering arguments) are not caught by the job, so -those changes should be reviewed "manually" +**Note**: Extrinsic function signatures changes (adding/removing & ordering arguments) are not caught by the job, so those changes should be reviewed "manually" ### Benchmarks -The Benchmarks can now be started from the CI. First find the CI pipeline from -[here](https://gitlab.parity.io/parity/mirrors/cumulus/-/pipelines?page=1&scope=all&ref=release-parachains-v9220) and -pick the latest. +The Benchmarks can now be started from the CI. First find the CI pipeline from [here](https://gitlab.parity.io/parity/mirrors/cumulus/-/pipelines?page=1&scope=all&ref=release-parachains-v9220) and pick the latest. +[Guide](https://github.com/paritytech/ci_cd/wiki/Benchmarks:-cumulus) + +### Integration Tests + +Until https://github.com/paritytech/ci_cd/issues/499 is done, tests will have to be run manually. +1. Go to https://github.com/paritytech/parachains-integration-tests and checkout to the release branch. +E.g. https://github.com/paritytech/parachains-integration-tests/tree/release-v9270-v0.9.27 +for `release-parachains-v0.9.270` +2. Clone `release-parachains-` branch from Cumulus +3. `cargo build --release` +4. Copy `./target/polkadot-parachain` to `./bin` +5. Clone `it/release--fast-sudo` from Polkadot +In case the branch does not exists (it is a manual process): cherry pick paritytech/polkadot@791c8b8 and run +`find . -type f -name "*.toml" -print0 | xargs -0 sed -i '' -e 's/polkadot-vX.X.X/polkadot-v/g'` +6. `cargo build --release features --fast-runtime` +7. Copy `./target/polkadot` into `./bin` (in Cumulus) +8. Run the tests: + - Statemint: `yarn zombienet-test -c ./examples/statemint/config.toml -t ./examples/statemint` + - Statemine: `yarn zombienet-test -c ./examples/statemine/config.toml -t ./examples/statemine` From d374d443700010770811c5b8fea2380894adc015 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 20:25:48 +0200 Subject: [PATCH 208/238] Bump wasmtime from 0.38.1 to 0.38.3 (#1461) Bumps [wasmtime](https://github.com/bytecodealliance/wasmtime) from 0.38.1 to 0.38.3. - [Release notes](https://github.com/bytecodealliance/wasmtime/releases) - [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/docs/WASI-some-possible-changes.md) - [Commits](https://github.com/bytecodealliance/wasmtime/compare/v0.38.1...v0.38.3) --- updated-dependencies: - dependency-name: wasmtime dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eb370220c1..fbc38cf083 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1210,9 +1210,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace74eeca11c439a9d4ed1a5cb9df31a54cd0f7fbddf82c8ce4ea8e9ad2a8fe0" +checksum = "dba69c9980d5ffd62c18a2bde927855fcd7c8dc92f29feaf8636052662cbd99c" dependencies = [ "cranelift-codegen", "log", @@ -1228,9 +1228,9 @@ checksum = "d2920dc1e05cac40304456ed3301fde2c09bd6a9b0210bcfa2f101398d628d5b" [[package]] name = "cranelift-native" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dadcfb7852900780d37102bce5698bcd401736403f07b52e714ff7a180e0e22f" +checksum = "f04dfa45f9b2a6f587c564d6b63388e00cd6589d2df6ea2758cf79e1a13285e6" dependencies = [ "cranelift-codegen", "libc", @@ -1239,9 +1239,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.85.1" +version = "0.85.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c84e3410960389110b88f97776f39f6d2c8becdaa4cd59e390e6b76d9d0e7190" +checksum = "31a46513ae6f26f3f267d8d75b5373d555fbbd1e68681f348d99df43f747ec54" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -12321,9 +12321,9 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "digest 0.10.3", - "rand 0.8.5", + "rand 0.7.3", "static_assertions", ] @@ -12658,9 +12658,9 @@ dependencies = [ [[package]] name = "wasmtime" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e76e2b2833bb0ece666ccdbed7b71b617d447da11f1bb61f4f2bab2648f745ee" +checksum = "1f50eadf868ab6a04b7b511460233377d0bfbb92e417b2f6a98b98fef2e098f5" dependencies = [ "anyhow", "backtrace", @@ -12689,9 +12689,9 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743a9f142d93318262d7e1fe329394ff2e8f86a1df45ae5e4f0eedba215ca5ce" +checksum = "d1df23c642e1376892f3b72f311596976979cbf8b85469680cdd3a8a063d12a2" dependencies = [ "anyhow", "base64", @@ -12709,9 +12709,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc0f80afa1ce97083a7168e6b6948d015d6237369e9f4a511d38c9c4ac8fbb9" +checksum = "f264ff6b4df247d15584f2f53d009fbc90032cfdc2605b52b961bffc71b6eccd" dependencies = [ "anyhow", "cranelift-codegen", @@ -12731,9 +12731,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0816d9365196f1f447060087e0f87239ccded830bd54970a1168b0c9c8e824c9" +checksum = "839d2820e4b830f4b9e7aa08d4c0acabf4a5036105d639f6dfa1c6891c73bdc6" dependencies = [ "anyhow", "cranelift-entity", @@ -12751,9 +12751,9 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c687f33cfa0f89ec1646929d0ff102087052cf9f0d15533de56526b0da0d1b3" +checksum = "ef0a0bcbfa18b946d890078ba0e1bc76bcc53eccfb40806c0020ec29dcd1bd49" dependencies = [ "addr2line", "anyhow", @@ -12777,9 +12777,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b252d1d025f94f3954ba2111f12f3a22826a0764a11c150c2d46623115a69e27" +checksum = "4f4779d976206c458edd643d1ac622b6c37e4a0800a8b1d25dfbf245ac2f2cac" dependencies = [ "lazy_static", "object 0.28.4", @@ -12788,9 +12788,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace251693103c9facbbd7df87a29a75e68016e48bc83c09133f2fda6b575e0ab" +checksum = "b7eb6ffa169eb5dcd18ac9473c817358cd57bc62c244622210566d473397954a" dependencies = [ "anyhow", "backtrace", @@ -12814,9 +12814,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d129b0487a95986692af8708ffde9c50b0568dcefd79200941d475713b4f40bb" +checksum = "8d932b0ac5336f7308d869703dd225610a6a3aeaa8e968c52b43eed96cefb1c2" dependencies = [ "cranelift-entity", "serde", From 90166235c540f61d7d8d9f088727d2bc35c7c645 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 22:07:10 +0200 Subject: [PATCH 209/238] Bump thiserror from 1.0.31 to 1.0.32 (#1505) Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.31 to 1.0.32. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.31...1.0.32) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- client/relay-chain-interface/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fbc38cf083..cff729ca88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11886,18 +11886,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ "proc-macro2", "quote", diff --git a/client/relay-chain-interface/Cargo.toml b/client/relay-chain-interface/Cargo.toml index 7ba9583933..5037c91031 100644 --- a/client/relay-chain-interface/Cargo.toml +++ b/client/relay-chain-interface/Cargo.toml @@ -21,6 +21,6 @@ futures = "0.3.21" parking_lot = "0.12.1" derive_more = "0.99.2" async-trait = "0.1.57" -thiserror = "1.0.31" +thiserror = "1.0.32" jsonrpsee-core = "0.15.1" parity-scale-codec = "3.1.5" From 7879d1c3ca3c08349c833604af447c335f031a0e Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 10:15:09 +0200 Subject: [PATCH 210/238] Renaming to align with Polkadot --- ...ation.yml => release-10_rc-automation.yml} | 0 ...-20_extrinsic-ordering-check-from-bin.yml} | 0 ...e-21_extrinsic-ordering-check-from-two.yml | 97 +++++++++++++++++++ ...-draft.yml => release-30_create-draft.yml} | 0 ...anual.yml => release-50_docker-manual.yml} | 0 ...se-10_docker.yml => release-50_docker.yml} | 0 6 files changed, 97 insertions(+) rename .github/workflows/{release-01_rc-automation.yml => release-10_rc-automation.yml} (100%) rename .github/workflows/{extrinsic-ordering-check-from-bin.yml => release-20_extrinsic-ordering-check-from-bin.yml} (100%) create mode 100644 .github/workflows/release-21_extrinsic-ordering-check-from-two.yml rename .github/workflows/{release-02_create-draft.yml => release-30_create-draft.yml} (100%) rename .github/workflows/{release-10_docker-manual.yml => release-50_docker-manual.yml} (100%) rename .github/workflows/{release-10_docker.yml => release-50_docker.yml} (100%) diff --git a/.github/workflows/release-01_rc-automation.yml b/.github/workflows/release-10_rc-automation.yml similarity index 100% rename from .github/workflows/release-01_rc-automation.yml rename to .github/workflows/release-10_rc-automation.yml diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/release-20_extrinsic-ordering-check-from-bin.yml similarity index 100% rename from .github/workflows/extrinsic-ordering-check-from-bin.yml rename to .github/workflows/release-20_extrinsic-ordering-check-from-bin.yml diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml new file mode 100644 index 0000000000..6513897f4a --- /dev/null +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -0,0 +1,97 @@ +# This workflow performs the Extrinsic Ordering Check on demand using two reference binaries + +name: Release - Extrinsic API Check with reference bins +on: + workflow_dispatch: + inputs: + reference_binary_url: + description: A url to a Linux binary for the node containing the reference runtime to test against + default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.26/polkadot + required: true + binary_url: + description: A url to a Linux binary for the node containing the runtime to test + default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.27-rc1/polkadot + required: true + +jobs: + check: + name: Run check + runs-on: ubuntu-latest + env: + BIN_URL: ${{github.event.inputs.binary_url}} + REF_URL: ${{github.event.inputs.reference_binary_url}} + strategy: + fail-fast: false + matrix: + chain: [polkadot, kusama, westend, rococo] + + steps: + - name: Checkout sources + uses: actions/checkout@v3 + + - name: Fetch reference binary + run: | + echo Fetching $REF_URL + curl $REF_URL -o polkadot-ref + chmod a+x polkadot-ref + ./polkadot-ref --version + + - name: Fetch test binary + run: | + echo Fetching $BIN_URL + curl $BIN_URL -o polkadot + chmod a+x polkadot + ./polkadot --version + + - name: Start local reference node + run: | + echo Running reference on ${{ matrix.chain }}-local + ./polkadot-ref --chain=${{ matrix.chain }}-local --rpc-port=9934 --ws-port=9945 --base-path=polkadot-ref-base/ & + + - name: Start local test node + run: | + echo Running test on ${{ matrix.chain }}-local + ./polkadot --chain=${{ matrix.chain }}-local & + + - name: Prepare output + run: | + REF_VERSION=$(./polkadot-ref --version) + BIN_VERSION=$(./polkadot --version) + echo "Metadata comparison:" >> output.txt + echo "Date: $(date)" >> output.txt + echo "Ref. binary: $REF_URL" >> output.txt + echo "Test binary: $BIN_URL" >> output.txt + echo "Ref. version: $REF_VERSION" >> output.txt + echo "Test version: $BIN_VERSION" >> output.txt + echo "Chain: ${{ matrix.chain }}-local" >> output.txt + echo "----------------------------------------------------------------------" >> output.txt + + - name: Pull polkadot-js-tools image + run: docker pull jacogr/polkadot-js-tools + + - name: Compare the metadata + run: | + CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata ws://localhost:9945 ws://localhost:9944" + echo -e "Running:\n$CMD" + $CMD >> output.txt + sed -z -i 's/\n\n/\n/g' output.txt + cat output.txt | egrep -n -i '' + SUMMARY=$(./scripts/ci/github/extrinsic-ordering-filter.sh output.txt) + echo -e $SUMMARY + echo -e $SUMMARY >> output.txt + + - name: Show result + run: | + cat output.txt + + - name: Save output as artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.chain }} + path: | + output.txt + + - name: Stop our local nodes + run: | + pkill polkadot-ref + pkill polkadot diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-30_create-draft.yml similarity index 100% rename from .github/workflows/release-02_create-draft.yml rename to .github/workflows/release-30_create-draft.yml diff --git a/.github/workflows/release-10_docker-manual.yml b/.github/workflows/release-50_docker-manual.yml similarity index 100% rename from .github/workflows/release-10_docker-manual.yml rename to .github/workflows/release-50_docker-manual.yml diff --git a/.github/workflows/release-10_docker.yml b/.github/workflows/release-50_docker.yml similarity index 100% rename from .github/workflows/release-10_docker.yml rename to .github/workflows/release-50_docker.yml From 20474336493c6e41683c808600abb181deb5654d Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 18:19:45 +0200 Subject: [PATCH 211/238] WIP --- .../workflows/release-10_rc-automation.yml | 2 +- ...e-20_extrinsic-ordering-check-from-bin.yml | 2 +- ...e-21_extrinsic-ordering-check-from-two.yml | 52 ++++++++++++------- 3 files changed, 35 insertions(+), 21 deletions(-) diff --git a/.github/workflows/release-10_rc-automation.yml b/.github/workflows/release-10_rc-automation.yml index 7ca60b6c33..d732113d11 100644 --- a/.github/workflows/release-10_rc-automation.yml +++ b/.github/workflows/release-10_rc-automation.yml @@ -1,4 +1,4 @@ -name: RC automation +name: Release - RC automation on: push: branches: diff --git a/.github/workflows/release-20_extrinsic-ordering-check-from-bin.yml b/.github/workflows/release-20_extrinsic-ordering-check-from-bin.yml index 2c54859602..704cee5d70 100644 --- a/.github/workflows/release-20_extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/release-20_extrinsic-ordering-check-from-bin.yml @@ -1,6 +1,6 @@ # This workflow performs the Extrinsic Ordering Check on demand using a binary -name: Extrinsic Ordering Check from Binary +name: Release - Extrinsic Ordering Check from Binary on: workflow_dispatch: inputs: diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 6513897f4a..0eef52a977 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -6,11 +6,11 @@ on: inputs: reference_binary_url: description: A url to a Linux binary for the node containing the reference runtime to test against - default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.26/polkadot + default: https://releases.parity.io/cumulus/v0.9.230/polkadot-parachain required: true binary_url: description: A url to a Linux binary for the node containing the runtime to test - default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.27-rc1/polkadot + default: https://releases.parity.io/cumulus/v0.9.270-rc3/polkadot-parachain required: true jobs: @@ -20,10 +20,24 @@ jobs: env: BIN_URL: ${{github.event.inputs.binary_url}} REF_URL: ${{github.event.inputs.reference_binary_url}} + BIN_BASE: polkadot-parachain + BIN_REF: polkadot-parachain-ref strategy: fail-fast: false matrix: - chain: [polkadot, kusama, westend, rococo] + include: + - category: assets + runtime: statemine + local: statemine-local + - category: assets + runtime: statemint + local: statemint-local + - category: assets + runtime: westmint + local: westmint-local + - category: contracts + runtime: contracts-rococo + local: contracts-rococo-local steps: - name: Checkout sources @@ -32,38 +46,38 @@ jobs: - name: Fetch reference binary run: | echo Fetching $REF_URL - curl $REF_URL -o polkadot-ref - chmod a+x polkadot-ref - ./polkadot-ref --version + curl $REF_URL -o $BIN_REF + chmod a+x $BIN_REF + ./$BIN_REF --version - name: Fetch test binary run: | echo Fetching $BIN_URL - curl $BIN_URL -o polkadot - chmod a+x polkadot - ./polkadot --version + curl $BIN_URL -o $BIN_BASE + chmod a+x $BIN_BASE + ./$BIN_BASE --version - name: Start local reference node run: | - echo Running reference on ${{ matrix.chain }}-local - ./polkadot-ref --chain=${{ matrix.chain }}-local --rpc-port=9934 --ws-port=9945 --base-path=polkadot-ref-base/ & + echo Running reference on ${{ matrix.local }} + ./$BIN_REF --chain=${{ matrix.local }} --rpc-port=9934 --ws-port=9945 --base-path=$BIN_REF-base/ & - name: Start local test node run: | - echo Running test on ${{ matrix.chain }}-local - ./polkadot --chain=${{ matrix.chain }}-local & + echo Running test on ${{ matrix.local }} + ./$BIN_BASE --chain=${{ matrix.local }} & - name: Prepare output run: | - REF_VERSION=$(./polkadot-ref --version) - BIN_VERSION=$(./polkadot --version) + REF_VERSION=$(./$BIN_REF --version) + BIN_VERSION=$(./BIN_BASE --version) echo "Metadata comparison:" >> output.txt echo "Date: $(date)" >> output.txt echo "Ref. binary: $REF_URL" >> output.txt echo "Test binary: $BIN_URL" >> output.txt echo "Ref. version: $REF_VERSION" >> output.txt echo "Test version: $BIN_VERSION" >> output.txt - echo "Chain: ${{ matrix.chain }}-local" >> output.txt + echo "Chain: ${{ matrix.local }}" >> output.txt echo "----------------------------------------------------------------------" >> output.txt - name: Pull polkadot-js-tools image @@ -87,11 +101,11 @@ jobs: - name: Save output as artifact uses: actions/upload-artifact@v3 with: - name: ${{ matrix.chain }} + name: ${{ matrix.runtime }} path: | output.txt - name: Stop our local nodes run: | - pkill polkadot-ref - pkill polkadot + pkill $BIN_REF + pkill $BIN_BASE From 160cfbd2621cf27bff9fee577e9c49a7b30b2b69 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 18:39:33 +0200 Subject: [PATCH 212/238] Fix defautls --- .../workflows/release-21_extrinsic-ordering-check-from-two.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 0eef52a977..5fd967682c 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -10,7 +10,7 @@ on: required: true binary_url: description: A url to a Linux binary for the node containing the runtime to test - default: https://releases.parity.io/cumulus/v0.9.270-rc3/polkadot-parachain + default: https://releases.parity.io/cumulus/v0.9.270-rc7/polkadot-parachain required: true jobs: From 5737302c0940d3b5a39121ed4d147228a166cbf0 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 18:46:46 +0200 Subject: [PATCH 213/238] Move to a tmp folder --- .../release-21_extrinsic-ordering-check-from-two.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 5fd967682c..04efe5b2fa 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -22,6 +22,7 @@ jobs: REF_URL: ${{github.event.inputs.reference_binary_url}} BIN_BASE: polkadot-parachain BIN_REF: polkadot-parachain-ref + TMP: ./tmp strategy: fail-fast: false matrix: @@ -43,8 +44,15 @@ jobs: - name: Checkout sources uses: actions/checkout@v3 + - name: Create tmp folder + run: | + mkdir -p $TMP + cd $TMP + pwd + - name: Fetch reference binary run: | + pwd echo Fetching $REF_URL curl $REF_URL -o $BIN_REF chmod a+x $BIN_REF @@ -52,6 +60,7 @@ jobs: - name: Fetch test binary run: | + pwd echo Fetching $BIN_URL curl $BIN_URL -o $BIN_BASE chmod a+x $BIN_BASE From 2d10c143b720f84aab19a924b8ee71ea6ced3d29 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 18:50:47 +0200 Subject: [PATCH 214/238] Remove unquired checkout --- .../release-21_extrinsic-ordering-check-from-two.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 04efe5b2fa..984e83d18a 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -22,7 +22,6 @@ jobs: REF_URL: ${{github.event.inputs.reference_binary_url}} BIN_BASE: polkadot-parachain BIN_REF: polkadot-parachain-ref - TMP: ./tmp strategy: fail-fast: false matrix: @@ -41,18 +40,8 @@ jobs: local: contracts-rococo-local steps: - - name: Checkout sources - uses: actions/checkout@v3 - - - name: Create tmp folder - run: | - mkdir -p $TMP - cd $TMP - pwd - - name: Fetch reference binary run: | - pwd echo Fetching $REF_URL curl $REF_URL -o $BIN_REF chmod a+x $BIN_REF @@ -60,7 +49,6 @@ jobs: - name: Fetch test binary run: | - pwd echo Fetching $BIN_URL curl $BIN_URL -o $BIN_BASE chmod a+x $BIN_BASE From bb4b221e35f054a9f6ea3a2e6ac04671f50528d1 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 18:56:24 +0200 Subject: [PATCH 215/238] typo --- .../workflows/release-21_extrinsic-ordering-check-from-two.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 984e83d18a..f161428cc5 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -67,7 +67,7 @@ jobs: - name: Prepare output run: | REF_VERSION=$(./$BIN_REF --version) - BIN_VERSION=$(./BIN_BASE --version) + BIN_VERSION=$(./$BIN_BASE --version) echo "Metadata comparison:" >> output.txt echo "Date: $(date)" >> output.txt echo "Ref. binary: $REF_URL" >> output.txt From 12d1221cc3aaee10ec5f88e826e1e295a911ac3f Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 19:01:01 +0200 Subject: [PATCH 216/238] Move down bins to a tmp folder --- ...e-21_extrinsic-ordering-check-from-two.yml | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index f161428cc5..a3c8918e36 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -22,6 +22,7 @@ jobs: REF_URL: ${{github.event.inputs.reference_binary_url}} BIN_BASE: polkadot-parachain BIN_REF: polkadot-parachain-ref + TMP: ./tmp strategy: fail-fast: false matrix: @@ -40,34 +41,41 @@ jobs: local: contracts-rococo-local steps: + - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + + - name: Create tmp dir + run: | + mkdir -p $TMP + pwd + - name: Fetch reference binary run: | echo Fetching $REF_URL - curl $REF_URL -o $BIN_REF + curl $REF_URL -o $TMP/$BIN_REF chmod a+x $BIN_REF - ./$BIN_REF --version + $TMP/$BIN_REF --version - name: Fetch test binary run: | echo Fetching $BIN_URL - curl $BIN_URL -o $BIN_BASE + curl $BIN_URL -o $TMP/$BIN_BASE chmod a+x $BIN_BASE - ./$BIN_BASE --version + $TMP/$BIN_BASE --version - name: Start local reference node run: | echo Running reference on ${{ matrix.local }} - ./$BIN_REF --chain=${{ matrix.local }} --rpc-port=9934 --ws-port=9945 --base-path=$BIN_REF-base/ & + $TMP/$BIN_REF --chain=${{ matrix.local }} --rpc-port=9934 --ws-port=9945 --base-path=$TMP/$BIN_REF-base/ & - name: Start local test node run: | echo Running test on ${{ matrix.local }} - ./$BIN_BASE --chain=${{ matrix.local }} & + $TMP/$BIN_BASE --chain=${{ matrix.local }} & - name: Prepare output run: | - REF_VERSION=$(./$BIN_REF --version) - BIN_VERSION=$(./$BIN_BASE --version) + REF_VERSION=$($TMP/$BIN_REF --version) + BIN_VERSION=$($TMP/$BIN_BASE --version) echo "Metadata comparison:" >> output.txt echo "Date: $(date)" >> output.txt echo "Ref. binary: $REF_URL" >> output.txt From f9f4128d76a457fe5e25ea86bf86f835f6842fe5 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 19:08:31 +0200 Subject: [PATCH 217/238] Fix paths --- .../release-21_extrinsic-ordering-check-from-two.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index a3c8918e36..9959d23edb 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -52,14 +52,14 @@ jobs: run: | echo Fetching $REF_URL curl $REF_URL -o $TMP/$BIN_REF - chmod a+x $BIN_REF + chmod a+x $TMP/$BIN_REF $TMP/$BIN_REF --version - name: Fetch test binary run: | echo Fetching $BIN_URL curl $BIN_URL -o $TMP/$BIN_BASE - chmod a+x $BIN_BASE + chmod a+x $TMP/$BIN_BASE $TMP/$BIN_BASE --version - name: Start local reference node From 53afd090e414637e35aa97337993cf93e4d20941 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 20:51:26 +0200 Subject: [PATCH 218/238] Add timeout --- .../workflows/release-21_extrinsic-ordering-check-from-two.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 9959d23edb..fd36c631e0 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -17,6 +17,7 @@ jobs: check: name: Run check runs-on: ubuntu-latest + timeout-minutes: 15 env: BIN_URL: ${{github.event.inputs.binary_url}} REF_URL: ${{github.event.inputs.reference_binary_url}} From 18387fca139f22f0b4027ed29031c928244d30c2 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 20:53:13 +0200 Subject: [PATCH 219/238] Move script --- scripts/ci/{ => github}/extrinsic-ordering-filter.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/ci/{ => github}/extrinsic-ordering-filter.sh (100%) diff --git a/scripts/ci/extrinsic-ordering-filter.sh b/scripts/ci/github/extrinsic-ordering-filter.sh similarity index 100% rename from scripts/ci/extrinsic-ordering-filter.sh rename to scripts/ci/github/extrinsic-ordering-filter.sh From fbab011705578b568ed20f0090745ec185bdc1bc Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 21:05:31 +0200 Subject: [PATCH 220/238] Ignore pkill outcome --- .../release-21_extrinsic-ordering-check-from-two.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index fd36c631e0..757dc79555 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -113,5 +113,5 @@ jobs: - name: Stop our local nodes run: | - pkill $BIN_REF - pkill $BIN_BASE + pkill $BIN_REF || true + pkill $BIN_BASE || true From 0710ae3f1a6dc019dc5639d5b880a6aab25a1afd Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 21:13:17 +0200 Subject: [PATCH 221/238] WIP --- .../release-21_extrinsic-ordering-check-from-two.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 757dc79555..e2b4a8cb98 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -66,12 +66,12 @@ jobs: - name: Start local reference node run: | echo Running reference on ${{ matrix.local }} - $TMP/$BIN_REF --chain=${{ matrix.local }} --rpc-port=9934 --ws-port=9945 --base-path=$TMP/$BIN_REF-base/ & + $TMP/$BIN_REF --chain=${{ matrix.local }} --rpc-port=9934 --ws-port=9945 --base-path=$TMP/$BIN_REF-data/ & - name: Start local test node run: | echo Running test on ${{ matrix.local }} - $TMP/$BIN_BASE --chain=${{ matrix.local }} & + $TMP/$BIN_BASE --chain=${{ matrix.local }} --base-path=$TMP/$BIN_BASE-data/ -- --chain polkadot-local & - name: Prepare output run: | From 3ac9ed8e9fda189fab948df0b1804ecd85a3a1e2 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 21:27:21 +0200 Subject: [PATCH 222/238] Fix ref node --- .../release-21_extrinsic-ordering-check-from-two.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index e2b4a8cb98..32775327cf 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -66,12 +66,12 @@ jobs: - name: Start local reference node run: | echo Running reference on ${{ matrix.local }} - $TMP/$BIN_REF --chain=${{ matrix.local }} --rpc-port=9934 --ws-port=9945 --base-path=$TMP/$BIN_REF-data/ & + $TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9945 --base-path=$TMP/$BIN_REF-local/ -- --chain polkadot-local & - name: Start local test node run: | echo Running test on ${{ matrix.local }} - $TMP/$BIN_BASE --chain=${{ matrix.local }} --base-path=$TMP/$BIN_BASE-data/ -- --chain polkadot-local & + $TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --base-path=$TMP/$BIN_BASE-data/ & - name: Prepare output run: | From d33f2fdcbb03ea2ced02da2f802613747884e3d1 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 21:29:55 +0200 Subject: [PATCH 223/238] Fix relay chain ref --- .../workflows/release-21_extrinsic-ordering-check-from-two.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 32775327cf..9d5e3dbafc 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -71,7 +71,7 @@ jobs: - name: Start local test node run: | echo Running test on ${{ matrix.local }} - $TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --base-path=$TMP/$BIN_BASE-data/ & + $TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --base-path=$TMP/$BIN_BASE-data/ -- --chain polkadot-local & - name: Prepare output run: | From 3b31b3fefa7421cf8c9a8a4877873e17bd626e50 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Tue, 9 Aug 2022 21:30:33 +0200 Subject: [PATCH 224/238] Lower timeout# Please enter the commit message for your changes. Lines starting --- .../workflows/release-21_extrinsic-ordering-check-from-two.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 9d5e3dbafc..1e7396a8ba 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -17,7 +17,7 @@ jobs: check: name: Run check runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: 10 env: BIN_URL: ${{github.event.inputs.binary_url}} REF_URL: ${{github.event.inputs.reference_binary_url}} From 07323dfd9a594552d1a5aa6178fb4714b6244d8c Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Wed, 10 Aug 2022 09:56:23 +0200 Subject: [PATCH 225/238] Add relay to matrix --- ...e-21_extrinsic-ordering-check-from-two.yml | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 1e7396a8ba..27d471c700 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -19,10 +19,10 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 env: - BIN_URL: ${{github.event.inputs.binary_url}} REF_URL: ${{github.event.inputs.reference_binary_url}} - BIN_BASE: polkadot-parachain BIN_REF: polkadot-parachain-ref + BIN_URL: ${{github.event.inputs.binary_url}} + BIN_BASE: polkadot-parachain TMP: ./tmp strategy: fail-fast: false @@ -31,15 +31,19 @@ jobs: - category: assets runtime: statemine local: statemine-local + relay: polkadot-local - category: assets runtime: statemint local: statemint-local + relay: polkadot-local - category: assets runtime: westmint local: westmint-local + relay: polkadot-local - category: contracts runtime: contracts-rococo local: contracts-rococo-local + relay: polkadot-local steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 @@ -49,29 +53,29 @@ jobs: mkdir -p $TMP pwd - - name: Fetch reference binary + - name: Fetch reference binary for ${{ matrix.runtime }} run: | echo Fetching $REF_URL curl $REF_URL -o $TMP/$BIN_REF chmod a+x $TMP/$BIN_REF $TMP/$BIN_REF --version - - name: Fetch test binary + - name: Fetch test binary for ${{ matrix.runtime }} run: | echo Fetching $BIN_URL curl $BIN_URL -o $TMP/$BIN_BASE chmod a+x $TMP/$BIN_BASE $TMP/$BIN_BASE --version - - name: Start local reference node + - name: Start local reference node for ${{ matrix.runtime }} run: | echo Running reference on ${{ matrix.local }} - $TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9945 --base-path=$TMP/$BIN_REF-local/ -- --chain polkadot-local & + $TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9945 --tmp -- --chain ${{ matrix.relay }} & - - name: Start local test node + - name: Start local test node for ${{ matrix.runtime }} run: | echo Running test on ${{ matrix.local }} - $TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --base-path=$TMP/$BIN_BASE-data/ -- --chain polkadot-local & + $TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --tmp -- --chain ${{ matrix.relay }} & - name: Prepare output run: | @@ -84,6 +88,7 @@ jobs: echo "Ref. version: $REF_VERSION" >> output.txt echo "Test version: $BIN_VERSION" >> output.txt echo "Chain: ${{ matrix.local }}" >> output.txt + echo "Relay: ${{ matrix.relay }}" >> output.txt echo "----------------------------------------------------------------------" >> output.txt - name: Pull polkadot-js-tools image From 48d70ce44dc8c8bf10fd795ccafd54a5dcd159f9 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Wed, 10 Aug 2022 10:06:34 +0200 Subject: [PATCH 226/238] Add delay to see node start --- .../workflows/release-21_extrinsic-ordering-check-from-two.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 27d471c700..459df6429b 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -71,11 +71,13 @@ jobs: run: | echo Running reference on ${{ matrix.local }} $TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9945 --tmp -- --chain ${{ matrix.relay }} & + sleep 15 - name: Start local test node for ${{ matrix.runtime }} run: | echo Running test on ${{ matrix.local }} $TMP/$BIN_BASE --chain=${{ matrix.local }} --ws-port=9944 --tmp -- --chain ${{ matrix.relay }} & + sleep 15 - name: Prepare output run: | From ff9e50a79bed140fb760d73ad97768502fd51486 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Wed, 10 Aug 2022 10:36:20 +0200 Subject: [PATCH 227/238] Fix ports --- .../release-21_extrinsic-ordering-check-from-two.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 459df6429b..9617ca6728 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -70,7 +70,7 @@ jobs: - name: Start local reference node for ${{ matrix.runtime }} run: | echo Running reference on ${{ matrix.local }} - $TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9945 --tmp -- --chain ${{ matrix.relay }} & + $TMP/$BIN_REF --chain=${{ matrix.local }} --ws-port=9954 --tmp -- --chain ${{ matrix.relay }} & sleep 15 - name: Start local test node for ${{ matrix.runtime }} @@ -98,7 +98,7 @@ jobs: - name: Compare the metadata run: | - CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata ws://localhost:9945 ws://localhost:9944" + CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata ws://localhost:9954 ws://localhost:9944" echo -e "Running:\n$CMD" $CMD >> output.txt sed -z -i 's/\n\n/\n/g' output.txt From cc0be990a71570339be957c36fb6f1715f303a47 Mon Sep 17 00:00:00 2001 From: Wilfried Kopp Date: Wed, 10 Aug 2022 12:38:22 +0200 Subject: [PATCH 228/238] Remove category --- .../release-21_extrinsic-ordering-check-from-two.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml index 9617ca6728..7956aff249 100644 --- a/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml +++ b/.github/workflows/release-21_extrinsic-ordering-check-from-two.yml @@ -28,20 +28,16 @@ jobs: fail-fast: false matrix: include: - - category: assets - runtime: statemine + - runtime: statemine local: statemine-local relay: polkadot-local - - category: assets - runtime: statemint + - runtime: statemint local: statemint-local relay: polkadot-local - - category: assets - runtime: westmint + - runtime: westmint local: westmint-local relay: polkadot-local - - category: contracts - runtime: contracts-rococo + - runtime: contracts-rococo local: contracts-rococo-local relay: polkadot-local From b824f0266b3c6bfd0dd4e3de50dbb0377065faba Mon Sep 17 00:00:00 2001 From: Chevdor Date: Wed, 10 Aug 2022 23:00:19 +0200 Subject: [PATCH 229/238] CI fixes (#1510) * Fix templates * Same than https://github.com/paritytech/polkadot/pull/5751 Co-authored-by: parity-processbot <> --- .github/ISSUE_TEMPLATE/release-client.md | 4 ++-- .github/ISSUE_TEMPLATE/release-runtime.md | 6 +++--- .github/workflows/release-01_branch-check.yml | 2 +- scripts/ci/github/check-rel-br | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/release-client.md b/.github/ISSUE_TEMPLATE/release-client.md index 016f0a4c0b..bb7f206157 100644 --- a/.github/ISSUE_TEMPLATE/release-client.md +++ b/.github/ISSUE_TEMPLATE/release-client.md @@ -1,7 +1,7 @@ --- -name: Release Checklist for Client - issue template +name: Release Checklist for Client about: Release Checklist for Client -title: Release Checklist - Client {{ env.VERSION }} +title: Release Checklist for Client {{ env.VERSION }} --- # Release Checklist - Client diff --git a/.github/ISSUE_TEMPLATE/release-runtime.md b/.github/ISSUE_TEMPLATE/release-runtime.md index fe970ce7a1..8ebce6ff15 100644 --- a/.github/ISSUE_TEMPLATE/release-runtime.md +++ b/.github/ISSUE_TEMPLATE/release-runtime.md @@ -1,7 +1,7 @@ --- -name: Release issue template -about: Tracking issue for new releases -title: Cumulus {{ env.VERSION }} Release checklist +name: Release Checklist for Runtime +about: Release Checklist for Runtime +title: Release Checklist for Runtime {{ env.VERSION }} --- # Release Checklist - Runtimes diff --git a/.github/workflows/release-01_branch-check.yml b/.github/workflows/release-01_branch-check.yml index ad35e9623b..a39c635af3 100644 --- a/.github/workflows/release-01_branch-check.yml +++ b/.github/workflows/release-01_branch-check.yml @@ -9,7 +9,7 @@ on: workflow_dispatch: jobs: - tag_rc: + check_branch: runs-on: ubuntu-latest steps: - name: Checkout sources diff --git a/scripts/ci/github/check-rel-br b/scripts/ci/github/check-rel-br index 5efebeea31..1b49ae6217 100755 --- a/scripts/ci/github/check-rel-br +++ b/scripts/ci/github/check-rel-br @@ -9,7 +9,7 @@ grv=$(git remote --verbose | grep push) export RUST_LOG=none -REPO=$(echo "$grv" | cut -d ' ' -f1 | cut -d$'\t' -f2 | cut -d '/' -f2 | cut -d '.' -f1 | sort | uniq) +REPO=$(echo "$grv" | cut -d ' ' -f1 | cut -d$'\t' -f2 | sed 's/.*github.com\/\(.*\)/\1/g' | cut -d '/' -f2 | cut -d '.' -f1 | sort | uniq) echo "[+] Detected repo: $REPO" BRANCH=$(git branch --show-current) From 66a370b3771ce814f907ff5e7f56bd75a86fc228 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 21:01:00 +0000 Subject: [PATCH 230/238] Bump quote from 1.0.20 to 1.0.21 (#1501) Bumps [quote](https://github.com/dtolnay/quote) from 1.0.20 to 1.0.21. - [Release notes](https://github.com/dtolnay/quote/releases) - [Commits](https://github.com/dtolnay/quote/compare/1.0.20...1.0.21) --- updated-dependencies: - dependency-name: quote dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cff729ca88..5bde83bbb2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8537,9 +8537,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -12321,9 +12321,9 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "digest 0.10.3", - "rand 0.7.3", + "rand 0.8.5", "static_assertions", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 018b9301a4..986a3cdb5c 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -11,7 +11,7 @@ proc-macro = true [dependencies] syn = "1.0.96" proc-macro2 = "1.0.42" -quote = "1.0.20" +quote = "1.0.21" proc-macro-crate = "1.1.3" [features] From 7ee19559095ad35ea67bad075a70b2cb5eda34a1 Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Thu, 11 Aug 2022 08:47:02 +0200 Subject: [PATCH 231/238] [ci] improve cancel-pipeline job (#1532) * [ci] improve cancel-pipeline job * fix trigger * fix trigger * add file to trigger * test job fail * fix trigger * fix indent * fix before_script * add comment * remove debuag fail from test-linux-stable --- .gitlab-ci.yml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1476f03a8e..9e4b175a53 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,6 +44,19 @@ variables: - cargo +nightly --version - bash --version +# collecting vars for pipeline stopper +# they will be used if the job fails +.pipeline-stopper-vars: &pipeline-stopper-vars + - echo "FAILED_JOB_URL=${CI_JOB_URL}" > pipeline-stopper.env + - echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env + - echo "FAILED_JOB_NAME=${CI_JOB_NAME}" >> pipeline-stopper.env + - echo "PR_NUM=${CI_COMMIT_REF_NAME}" >> pipeline-stopper.env + +.pipeline-stopper-artifacts: &pipeline-stopper-artifacts + artifacts: + reports: + dotenv: pipeline-stopper.env + .common-refs: &common-refs # these jobs run always* rules: @@ -88,6 +101,10 @@ test-linux-stable: stage: test <<: *docker-env <<: *common-refs + <<: *pipeline-stopper-artifacts + before_script: + - *rust-info-script + - *pipeline-stopper-vars variables: # Enable debug assertions since we are running optimized builds for testing # but still want to have debug assertions. @@ -355,11 +372,17 @@ cancel-pipeline: stage: .post needs: - job: test-linux-stable - artifacts: false rules: - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs when: on_failure variables: PROJECT_ID: "${CI_PROJECT_ID}" + PROJECT_NAME: "${CI_PROJECT_NAME}" PIPELINE_ID: "${CI_PIPELINE_ID}" - trigger: "parity/infrastructure/ci_cd/pipeline-stopper" + FAILED_JOB_URL: "${FAILED_JOB_URL}" + FAILED_JOB_NAME: "${FAILED_JOB_NAME}" + PR_NUM: "${PR_NUM}" + trigger: + project: "parity/infrastructure/ci_cd/pipeline-stopper" + # remove branch, when pipeline-stopper for substrate and polakdot is updated to the same branch + branch: "as-improve" From cfb8308413ef6f3866fcb230dd06fcc16de7a6ae Mon Sep 17 00:00:00 2001 From: Egor_P Date: Thu, 11 Aug 2022 09:13:25 +0200 Subject: [PATCH 232/238] add tag creation for the runtimes release candidate (#1525) * add tag creation for the runtimes release branch * change githab actions versions to hashes Co-authored-by: parity-processbot <> --- .github/workflows/release-10_rc-automation.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-10_rc-automation.yml b/.github/workflows/release-10_rc-automation.yml index d732113d11..740b1860e1 100644 --- a/.github/workflows/release-10_rc-automation.yml +++ b/.github/workflows/release-10_rc-automation.yml @@ -2,7 +2,8 @@ name: Release - RC automation on: push: branches: - - release-**v[0-9]+.[0-9]+.[0-9]+ + - release-v[0-9]+.[0-9]+.[0-9]+ + - release-parachains-v[0-9]+ workflow_dispatch: jobs: @@ -36,7 +37,7 @@ jobs: fi - name: Apply new tag - uses: tvdias/github-tagger@v0.0.2 + uses: tvdias/github-tagger@ed7350546e3e503b5e942dffd65bc8751a95e49d # 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 @@ -67,7 +68,7 @@ jobs: filename: .github/ISSUE_TEMPLATE/release-runtime.md - name: Send Matrix message - uses: s3krit/matrix-message-action@v0.0.3 + uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3 if: steps.create-issue-checklist-client.outputs.url != '' && steps.create-issue-checklist-runtime.outputs.url != '' with: room_id: ${{ secrets.INTERNAL_CUMULUS_MATRIX_ROOM_ID }} From 4d6204884d242d986fc294924eba9ac6f6e4197f Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Thu, 11 Aug 2022 10:09:07 +0200 Subject: [PATCH 233/238] [ci] fix pipeline for polkadot-v branches (#1503) Co-authored-by: parity-processbot <> --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9e4b175a53..07d6dae35f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,6 +65,7 @@ variables: - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # i.e. v1.0, v2.1rc1 - if: $CI_COMMIT_REF_NAME =~ /^release-parachains-v[0-9].*$/ # i.e. release-parachains-v1.0, release-parachains-v2.1rc1, release-parachains-v3000 + - if: $CI_COMMIT_REF_NAME =~ /^polkadot-v[0-9]+\.[0-9]+.*$/ # i.e. polkadot-v1.0.99, polkadot-v2.1rc1 .publish-refs: &publish-refs rules: @@ -174,6 +175,7 @@ build-linux-stable: stage: build <<: *docker-env <<: *collect-artifacts + <<: *common-refs variables: # Enable debug assertions since we are running optimized builds for testing # but still want to have debug assertions. @@ -195,6 +197,7 @@ build-test-parachain: stage: build <<: *docker-env <<: *collect-artifacts + <<: *common-refs variables: # Enable debug assertions since we are running optimized builds for testing # but still want to have debug assertions. From 0e83ad23aa12fe458c2e0ed1e92b84c1b02adf46 Mon Sep 17 00:00:00 2001 From: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:11:10 +0200 Subject: [PATCH 234/238] Add Collectives Parachain (#1346) * add new runtime and remove unnecessary pallets * make runtime build * add collectives to collator node * sketch alliance config in runtime * Slash handler was supposed to be commented out (for now) * correct signature * move to impls * add alliance to runtime * rustfmt * IsReserve, remove Ping, update fn deposit * add transaction_payment event * Update parachains/runtimes/collectives/collectives-polkadot/src/lib.rs Co-authored-by: Squirrel * fmt * add genesis config to chain spec * fix merge * local and dev configs only (for now) * remove duplicate imports * Collectives polkadot runtime to cargo workspace members (#1397) * Collectives polkadot runtime: use unit type impl for identity verifier (#1398) * apply fn rename * fmt * one less todo * Less code in magic macros (#1407) * Less code in magic macros * cargo fmt * Bench alliance (#1427) * add benchmarks * call one script from the other * shebang changes so works on nixos too. * bench in parallel as separate jobs * hyphens can turn into underscores * remove workaround to trigger bench Co-authored-by: alvicsam Co-authored-by: paritytech-ci * enable ci jobs * fix publish bench results jobs * chainspecs for collectives-westend (#1441) * initial chainspecs for collections relay chain * plumb in the collectives-westend chainspec * add Runtime::CollectivesWestend * lock * Collectives: teleport slashed assets (#1433) * Collectives: teleport slashed assets * fmt * Cargo.lock > polkadot-parachain 0.9.25 * create temp account for imbalance * treasury acc id from pallet id * move accounts into constants, use here junction for assets * assets location is relay chain, accounts as parameters * fix typos * fix typo * Update parachains/runtimes/collectives/collectives-polkadot/src/constants.rs Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Move alliance proposal provider to impls.rs (#1464) * Move to impls alliance proposal provider * rustfmt * Bumping spec version (so that we can redeploy with slashing change.) * cargo lock * slurp collectives digest to make appear in release notes (#1473) * add slurp * Slurp better :) * Bring some order Co-authored-by: Chevdor Co-authored-by: Wilfried Kopp * reorder barrier * Update parachains/runtimes/collectives/collectives-polkadot/src/xcm_config.rs Co-authored-by: Keith Yeung * address review * clean construct runtime * fmt * looks pretty but brings in too much Co-authored-by: Squirrel Co-authored-by: Muharem Ismailov Co-authored-by: alvicsam Co-authored-by: paritytech-ci Co-authored-by: Chevdor Co-authored-by: Wilfried Kopp Co-authored-by: Keith Yeung --- .github/workflows/release-30_create-draft.yml | 6 + .github/workflows/srtool.yml | 2 + .gitlab-ci.yml | 69 +- Cargo.lock | 87 ++ Cargo.toml | 1 + .../chain-specs/collectives-polkadot.json | 84 ++ .../chain-specs/collectives-westend.json | 104 +++ .../collectives-polkadot/Cargo.toml | 159 ++++ .../collectives/collectives-polkadot/build.rs | 9 + .../collectives-polkadot/src/constants.rs | 83 ++ .../collectives-polkadot/src/impls.rs | 137 ++++ .../collectives-polkadot/src/lib.rs | 774 ++++++++++++++++++ .../src/weights/block_weights.rs | 46 ++ .../src/weights/cumulus_pallet_xcmp_queue.rs | 61 ++ .../src/weights/extrinsic_weights.rs | 46 ++ .../src/weights/frame_system.rs | 90 ++ .../collectives-polkadot/src/weights/mod.rs | 18 + .../src/weights/pallet_alliance.rs | 279 +++++++ .../src/weights/pallet_balances.rs | 91 ++ .../src/weights/pallet_collator_selection.rs | 118 +++ .../src/weights/pallet_multisig.rs | 162 ++++ .../src/weights/pallet_proxy.rs | 157 ++++ .../src/weights/pallet_session.rs | 63 ++ .../src/weights/pallet_timestamp.rs | 58 ++ .../src/weights/pallet_utility.rs | 73 ++ .../src/weights/paritydb_weights.rs | 63 ++ .../src/weights/rocksdb_weights.rs | 63 ++ .../collectives-polkadot/src/xcm_config.rs | 191 +++++ polkadot-parachain/Cargo.toml | 1 + .../src/chain_spec/collectives.rs | 179 ++++ polkadot-parachain/src/chain_spec/mod.rs | 1 + .../src/chain_spec/statemint.rs | 2 +- polkadot-parachain/src/command.rs | 95 ++- polkadot-parachain/src/service.rs | 15 + scripts/benchmarks-ci.sh | 53 +- scripts/benchmarks.sh | 68 +- scripts/ci/changelog/bin/changelog | 40 +- 37 files changed, 3420 insertions(+), 128 deletions(-) create mode 100644 parachains/chain-specs/collectives-polkadot.json create mode 100644 parachains/chain-specs/collectives-westend.json create mode 100644 parachains/runtimes/collectives/collectives-polkadot/Cargo.toml create mode 100644 parachains/runtimes/collectives/collectives-polkadot/build.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/constants.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/impls.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/lib.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/block_weights.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/cumulus_pallet_xcmp_queue.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/extrinsic_weights.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/frame_system.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/mod.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_alliance.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_balances.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_collator_selection.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_multisig.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_proxy.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_session.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_timestamp.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_utility.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/paritydb_weights.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/weights/rocksdb_weights.rs create mode 100644 parachains/runtimes/collectives/collectives-polkadot/src/xcm_config.rs create mode 100644 polkadot-parachain/src/chain_spec/collectives.rs diff --git a/.github/workflows/release-30_create-draft.yml b/.github/workflows/release-30_create-draft.yml index 8f795f609e..709f040c4a 100644 --- a/.github/workflows/release-30_create-draft.yml +++ b/.github/workflows/release-30_create-draft.yml @@ -50,6 +50,8 @@ jobs: runtime: statemint - category: assets runtime: westmint + - category: collectives + runtime: collectives-polkadot - category: contracts runtime: contracts-rococo - category: starters @@ -148,6 +150,7 @@ jobs: WESTMINT_DIGEST: ${{ github.workspace}}/westmint-srtool-json/westmint-srtool-digest.json STATEMINE_DIGEST: ${{ github.workspace}}/statemine-srtool-json/statemine-srtool-digest.json STATEMINT_DIGEST: ${{ github.workspace}}/statemint-srtool-json/statemint-srtool-digest.json + COLLECTIVES_POLKADOT_DIGEST: ${{ github.workspace}}/collectives-polkadot-srtool-json/collectives-polkadot-srtool-digest.json ROCOCO_PARA_DIGEST: ${{ github.workspace}}/rococo-parachain-srtool-json/rococo-parachain-srtool-digest.json CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/contracts-rococo-srtool-json/contracts-rococo-srtool-digest.json REF1: ${{ github.event.inputs.ref1 }} @@ -162,6 +165,7 @@ jobs: ls -al $WESTMINT_DIGEST || true ls -al $STATEMINE_DIGEST || true ls -al $STATEMINT_DIGEST || true + ls -al $COLLECTIVES_POLKADOT_DIGEST || true ls -al $ROCOCO_PARA_DIGEST || true ls -al $CANVAS_KUSAMA_DIGEST || true fi @@ -212,6 +216,8 @@ jobs: runtime: statemint - category: assets runtime: westmint + - category: collectives + runtime: collectives-polkadot - category: contracts runtime: contracts-rococo - category: starters diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index 703c30b453..85d3569ed8 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -37,6 +37,8 @@ jobs: runtime: statemint - category: assets runtime: westmint + - category: collectives + runtime: collectives-polkadot - category: contracts runtime: contracts-rococo - category: starters diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07d6dae35f..e11e2814a8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -299,7 +299,21 @@ benchmarks-build: - mkdir -p artifacts - cp target/production/polkadot-parachain ./artifacts/ -benchmarks: +.git-commit-push: &git-commit-push + - git status + # Set git config + - rm -rf .git/config + - git config --global user.email "${GITHUB_EMAIL}" + - git config --global user.name "${GITHUB_USER}" + - git config remote.origin.url "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/paritytech/${CI_PROJECT_NAME}.git" + - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" + # push results to github + - git checkout -b $BRANCHNAME + - git add parachains/* + - git commit -m "[benchmarks] pr with weights" + - git push origin $BRANCHNAME + +benchmarks-statemint: stage: benchmarks-run before_script: - *rust-info-script @@ -307,38 +321,47 @@ benchmarks: <<: *benchmarks-refs timeout: 1d script: - - ./scripts/benchmarks-ci.sh assets statemine - - ./scripts/benchmarks-ci.sh assets statemint - - ./scripts/benchmarks-ci.sh assets westmint - - git status - - export BRANCHNAME="weights-${CI_COMMIT_BRANCH}" - # Set git config - - rm -rf .git/config - - git config --global user.email "${GITHUB_EMAIL}" - - git config --global user.name "${GITHUB_USER}" - - git config remote.origin.url "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/paritytech/${CI_PROJECT_NAME}.git" - - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" - # push results to github - - git checkout -b $BRANCHNAME - - git add parachains/* - - git commit -m "[benchmarks] pr with weights" - - git push origin $BRANCHNAME + - ./scripts/benchmarks-ci.sh assets statemine ./artifacts + - ./scripts/benchmarks-ci.sh assets statemint ./artifacts + - ./scripts/benchmarks-ci.sh assets westmint ./artifacts + - export BRANCHNAME="weights-statemint-${CI_COMMIT_BRANCH}" + - *git-commit-push # create PR - curl -u ${GITHUB_USER}:${GITHUB_TOKEN} - -d '{"title":"[benchmarks] Update weights","body":"This PR is generated automatically by CI.","head":"'$BRANCHNAME'","base":"'${CI_COMMIT_BRANCH}'"}' + -d '{"title":"[benchmarks] Update weights for statemine/t","body":"This PR is generated automatically by CI.","head":"'$BRANCHNAME'","base":"'${CI_COMMIT_BRANCH}'"}' -X POST https://api.github.com/repos/paritytech/${CI_PROJECT_NAME}/pulls after_script: - rm -rf .git/config tags: - weights -publish-benchmarks-s3: +benchmarks-collectives: + stage: benchmarks-run + before_script: + - *rust-info-script + <<: *collect-artifacts + <<: *benchmarks-refs + script: + - ./scripts/benchmarks-ci.sh collectives collectives-polkadot ./artifacts + - git status + - export BRANCHNAME="weights-collectives-${CI_COMMIT_BRANCH}" + - *git-commit-push + # create PR + - curl -u ${GITHUB_USER}:${GITHUB_TOKEN} + -d '{"title":"[benchmarks] Update weights for collectives","body":"This PR is generated automatically by CI.","head":"'$BRANCHNAME'","base":"'${CI_COMMIT_BRANCH}'"}' + -X POST https://api.github.com/repos/paritytech/${CI_PROJECT_NAME}/pulls + after_script: + - rm -rf .git/config + tags: + - weights + +publish-benchmarks-statemint-s3: &publish-benchmarks stage: publish <<: *kubernetes-env image: paritytech/awscli:latest <<: *benchmarks-refs needs: - - job: benchmarks + - job: benchmarks-statemint artifacts: true variables: GIT_STRATEGY: none @@ -352,6 +375,12 @@ publish-benchmarks-s3: after_script: - aws s3 ls s3://${BUCKET}/${PREFIX}/ --recursive --human-readable --summarize +publish-benchmarks-collectives-s3: + <<: *publish-benchmarks + needs: + - job: benchmarks-collectives + artifacts: true + # Ref: https://github.com/paritytech/opstooling/issues/111 update-parachain-template: stage: publish diff --git a/Cargo.lock b/Cargo.lock index 5bde83bbb2..a634cac816 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1010,6 +1010,71 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "collectives-polkadot-runtime" +version = "1.0.0" +dependencies = [ + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-session-benchmarking", + "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", + "frame-try-runtime", + "hex-literal", + "log", + "pallet-alliance", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-collective", + "pallet-multisig", + "pallet-proxy", + "pallet-session", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-utility", + "pallet-xcm", + "parachain-info", + "parachains-common", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain 0.9.27", + "polkadot-runtime-common", + "polkadot-runtime-constants", + "scale-info", + "serde", + "smallvec", + "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 = "comfy-table" version = "6.0.0" @@ -5324,6 +5389,27 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "pallet-alliance" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#bc310fdd1040af8a3d2901b5d6f4cf8d5250aeb7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "hex", + "log", + "pallet-collective", + "pallet-identity", + "parity-scale-codec", + "scale-info", + "sha2 0.10.2", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" @@ -7625,6 +7711,7 @@ dependencies = [ "assert_cmd", "async-trait", "clap 3.2.16", + "collectives-polkadot-runtime", "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", diff --git a/Cargo.toml b/Cargo.toml index c21af466f0..d4497a7767 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,6 +34,7 @@ members = [ "parachains/runtimes/assets/statemint", "parachains/runtimes/assets/statemine", "parachains/runtimes/assets/westmint", + "parachains/runtimes/collectives/collectives-polkadot", "parachains/runtimes/contracts/contracts-rococo", "parachains/runtimes/testing/penpal", "test/client", diff --git a/parachains/chain-specs/collectives-polkadot.json b/parachains/chain-specs/collectives-polkadot.json new file mode 100644 index 0000000000..7dc81f9cd2 --- /dev/null +++ b/parachains/chain-specs/collectives-polkadot.json @@ -0,0 +1,84 @@ +{ + "name": "Polkadot Collectives", + "id": "collectives_polkadot", + "chainType": "Live", + "bootNodes": [ + "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWJY6kM1ES9cZV6tv7CXNcxetKVDXXmpwxzeqvTzANfDza" + ], + "telemetryEndpoints": null, + "protocolId": null, + "properties": { + "ss58Format": 0, + "tokenDecimals": 10, + "tokenSymbol": "DOT" + }, + "relay_chain": "polkadot", + "para_id": 1002, + "codeSubstitutes": {}, + "genesis": { + "runtime": { + "system": { + "code": "0x52bc537646db8e0528b52ffd00583ccf026a4ca7a9542010b34a078169fc3a6ee6c8895ee4c191b2dc3877c0737d80f41c9f7cee2eb327c74a1fbc2c75b6be9dddb4db2fce03a984699f83e21d6acf47457dafc842fa8bfd75c72f194124829add7b6f22e59649a694029d0bbe09710a3955724ad0ca9253440e11393ae428d1e2d232a345474b06ad2e5a3068896995d122a335464b8c56182d305a4ead2f5a5eb4a45a77b4ccb4ec689569d5d17a6abda0e582560b5a605a6fb4dc68b1a0d5468b8dd697d61a2d2f2d355a69b4d0689dd1ead2826ac5d182a315a6b5450b8bd69696162d2b5a55b492682dd142a2a5446b8a160ead282d1b70c4e040e1a8819306ce16384ce060c19182c303ce0e3839e00cc1f2830586f502d6130b0e9617961aac345868e4646181c1fa82e5054b0b1617d6192c33584cb0a86039c17a8275858585a5c4ca8f551eab33ab1bacfe58e9b1da63c5c7ca06ab32aba8551d2b323852acc0acb0acaeacda589db1eab27a62b5c40a8a1513ab35564ae038dd4cddd8e0868e1b19dc44dd90b9197313e686cb8dd34d1e3765dcb8e0e6cbcd1a375ddcdc7143c64d1b373ddc4c71a3e526cb0d153752dc587153050042b8b90133420585e1602879c30d158e0715159305344a8e095876b4a66c36d8f6b0019343839c3ce81b363dcc37280e9b1faa28544d344b3625880d3c7bd4bca1f3042b0a56172ca78d0f950e377bd02a355d3815d50dada61a316ac660bdc1527035401cb61a6c52345a40289b997807760553712dac154ca7f9a5cff4101c1a1d0417868b838383fb812301f786ea0995131c1b500ae7038cc2f5b0aa6145037744cb0a0e144c0403c156d804ac04636126d8094e62c3837fd8ee7014704dd05ce12cbe448b0a9a14b813384d2c29bc099e253c896d063c4cf028a1c3829d31fc042f61d3c4a302bee24a3812f1069e246890504d4173031a2c3b31e098e0235808d6c2a28105855fa1518255c0e3c48e144f183449b472f014700968967026564f8e65d38306053b77d8e8c043e080c1416c79f050e12a4cc56c829bd069830708e6a2c2817ea17b503928193a86ea41eba07f503f681fb406d406940f3a456540eda062281e540bbd83ce41a5681e940e3a031a45ada054d02ae8143406b40c850135436950738632d5dce006cb4d142a30544e2a3f545ba8b85069a1ea429585ea0b9517aa3fe8195515ab14ac50b0b2b23a6265c4aa881511ab13ac4cb02ac1aaca6a889510ab205640ac7e589160e5c38acaaa87150fab1d5653381ab63fb633dc1e34326841c939c18d0a543b604e1c95e9c6cd0b780a1a2370be5859a153021a2638285c04a780adb8a9325fc09ac366cad4327b983b4c1e269519c5f4610e31a1982498555657dcac600a31bd90666ce6b031630303151a2a28551a36556c92b02901c60616066b03ce80c507a401b7c5d607c7850d1e36774438221e310ecfc3a75c8f8906ab8ea9868d1e367ed8ec41b1a05b6e6cc0a86044603e6070cc34e61ad30b2d8222418d6075e113300ab80a4642da2048139c0d3943605b708a68215a5948293654e20d303070f0a8e14295438e1198160e853fe152605978149ea525854d0e3b62e6951c247292b0e1219eb1f121fec18201a7074e148e29072a1611fdf02a7088c0a9637507b401d6d0405026dc07cc8a6d0ae70e0c0b1b293c64e8b0c1838497e163f81b6cc45401ab0aa7020b0336e170d96eb0d100de80238563074e14ac1a20531482a7584c1c82b241d750458955588e0804c7419f8841a8a4300c780ebe837d60285a51f811140ab5817be01d388acd0e1c15f40d66179b28d8147209b74263656507a66565861506d230cfd8cac82bad12482c3c464826b63ab02a302a688e6012d8e0805306c70cf370538312889820801b36a21c1ad7654d0c55c32227473a40d4e448910b44441ac3244b8a8888328c099a38061222262d2c51e1e88849029290141d1d31490000a218ebe4c8e848525112a2a2a2164088612c93169618118100a9280618888c9ad4a425452f80e008043e82b14548963059427484c8a8492d42b284c9039296c4c00409921a243a256182a4284907f18b7502822225444e9c80a06885254c8c9c38299a4017bdd80f1835a948454a90985880852e76b145494792181d1d9181a82886a21822408124451ef0c0110a002072b14e9420297201c916eb2469491152910b4b8c3e6ab1c4a8859d98c5223172b2c40829e9491111088e9a343942845494e4c82806212548981c09f1c42dfb02d191a423498e241539c026621102a3a3234649464b8c70e215ab040993a30e101525c580a4e849d14db462919824608b55ac9322a3242324262e24c5706415a9d8254c8c928e20c590842889c9911322a326f508520c1567b9e8a803479296c4d0025112922224a3244b8c8888725a718ab4c2454c95ba4bda3a3131555e8239589c23cec14d583a8455084208a15085b566429c33f60d72779eb28564429c598ee02e33219e39679c792624132233212de5089c6542b28c3dcbdc9b331622c4b3cc39939eb910c992337767e6cc337709a5672da5d4dc5d36f76eb6bbbbac65ed72366719f4b26c4e9f92257b56e39239ebcce5ecd9cc9984599631a649a9d2daddb1766c9332c3a6cb55cdb935cd9c5a4d6732e3764700cb8cb33e80f41af7e9cef3039eb24d6877ce32e9e3eede52caf63999597ab3b3b774ef9eec193367ecee2ce500a47bd6ce2c9bb95dba37b74b9eee9c354bd92bb3ceb67ba1cc1a6699ccd82767ee0cbb67d768b3379a89619894d33d93bd35737b904d296506a1966519cc322106288084de947066598d749752126065967130cb38eb6e09dd6b58d3bc6ddb36bb3366ce9c998bb83b4bf7e99c674fc9cc7300f3b573fa9639afcc329bd9939937af619eb2a594d1997b97a7f39c5ad7d0eee92da1fb944de39910676f29653642c6197b26571963993326a56ca9e23846c9cc8ec2071f742b5d72266796b9a4fb9c3acc9eb93390f3fc71775ff79f1f5f7797cb528ec0cb2bbb653bccb2e95b4f9fd2a50f7b5682bb74963dadc8b9c718a3333b7bd7796f1bf39c734e39bb7ddb7adbba3bcba4dc6aa4dc6a32df30295bba4b5833e7365bb2fbf413584a969299a5fb949277d761bbc396b3bd5dc6e8dc792661cf3967cb6e96d2e5742939cea5ccdabdd9b35ef6ccb98c738e31caedb28e5db24b293d63e75d9673b294eecc26485631ab981de3185b1d56a93a95b38a4b6029b3cdd63bebde98db3def03e6ae6166964d8224d2ac9231c6eeeece65072e3321425cf2083c0213616e01481f1f9f000c11c1c766367332c6187df8c5dc5202c0d99b01c02c65d7416776c9ccef1973c6cc217807ee2e85b8af0f33bf1c0467963bd279ba0b9152ce0f5c4a9e3e5d4a77ce5cbaf778b07931b2772edba594eecc2e638ceeeed2b32ccba4942e33ce985d3a3bb33bfb4a29dda56ce9d2dd1d730933e919bbfbae074922c81210038184df11928e20152d29f20092930f3a58128a9c3829426af202132444484532304152844474c449122445442328f939818426488a9c00a95c409274a403442e38315a62d402072d182115c9403480114e3881842445444c929a8000098907aff3a428c91223a22546475c40d2420b4cbc178c9296c480e4e9b49014439022178892961821352142e2c4e8059e20498a908a92203121fa3981842223a4a410908e24816093c3e9284172a40347474c42e0d1d9e160272787075bc2c42809c911274b8e2025112519bdf0029317cbd3d9b15952d4a4c9119e7d81032e2a426a81088949d211244c8e8e8ef098f013e409930f2471f073020939289030021109454a8e1c75c00527475c78d58e502443d111d193232f74e0da113cc0e488c8034b8c3ce001264739251c1d19292102c40908ad25218909139c24478a905e2028524294f4a4688908aca4220f803082932427464f8a42b859129e18b55084d484880c4b8aa0cd8e40b484899113a4221988908e141d21212af2c0112426494e88921c19b9808428e92886232d1425214a7a52e423c39222b8da06011293178a5ec06458520443e0c26837b2d1c8124ba8e44a4b4a4a6d6495967a69c9a3929292d29292d2d2d212a6a4a4a4a4a4a4b4b4b4e4aba4b4e44ad0c8122bf11a595262a5256864091a5162234bacc44656496949092e292929b911a52556526a234aaca4a4048dac92924a1ad9a5a569448997d8c82e614696788977291ad935a2c44a4b6d649796dac8122f2d2d4123bbb4b4b4e44676898d2cf1121b490014c3bbcb2f3839b20160eabefcd7bf19d68e0a1f62b1004b0aa0b1eb41468c6905737718f541301048be7bdf9137c560a32e08b410baa00bba2ae67d5f3f57fdd6e9f32615b0ba3be47b0281853e1f0433031153e8378395eabfdcf62b3a8cdfdd77e44dd53f7a2e630f5ee5f32a73a34d4d569478c9619c620fc7b243a060d1b1f9f017be1652f80b81b68f3f219046a4cac75e93dddc36b6eed727bed6edfa7caf4aa409ad442611a55e9a0de3d096310c83dcd09c40f263f4be24af31aa4163c43aea823ef0354d6efdb16b96abbbef6b8c495efbf9316ec83d761f8d1d7bdbc1b0987b2c1b28e486fab5b839c0a327798deed5b36834ce299fb1e78fd28bafc5c7b8a11839066cf5d79c3a37c4628efcb1638cd1a3ede2ca9cff629eeff614db5da06dcff79485bd77d86b4eb78af1b755a69129f5d776736ec8e59240aaadfa53d71bd4ffa395e55275ee3f1ff38f8fbdec828041fda7275f932cf8c7ce7fab7ce786240396314e05f7366fb9cd0594ff9bce0df547ca726dbe3dd6314b24121fce8ad18a2de67d49b1c697afc56ef6cb0d1ae30735866118a641c80db1f0128b32462f29564c6232c4ea9ea7a0bf66fbc78194281313130d4250f4ef4725fdf0f9bd8b9ebfa613e40cdabfd51f7243dedf1c03b6b6f7732af443cffbb50499ab449b2d3bb91a3d67e2b86052a0aa44d51145262a0d325ac53c38b543e05332d6675454180c252646d121a662ffb1e052958d92daa89a1abd27fd9234d89d1bdd651e586a6ef2fdb1cebd5fd84a558cbbbb9f57dbee9b95b7fbbc323f377bde2facb78a7d500741d9619e4f5fa927bad18daaf263c74c98c750b02ee646b957ca578aa5226353b0396b6a608c11939a9452c68a79af1a3c5ed1b768dbf331950a5f5b668e1cd96be9fd626db7383d6e08fb2fc746ebf98202f4813f35ef9b74429fcf85c58e2b021668d7277bf82840a023bb40dbab7ef747f54d20d0e63113f4810f7ffbc7bd95aaf0316e8899fa059fdb81f27fcc54e156145c2e4a37a25021f64e54e5cf979c0a5fb5d7266fd3ec0ec1defbb8629ebff78fe67d4b55be7f10d4b02debbe8daaf055ddb7622afc897143d28bdc50bf7c2cca9e9eeafd728fa9a85ada40429181516940323354815175c028ad460f4ed132e0149c8251304a420151a70a5fdb7ef7be57f5e7712d337fac8a61af61dde7d535c8bbebdd7d47ac8a71fce586e26bdc5becb4b8dcd0697687f407b5771f0b630c5b3a236b0decb159536bea47638dde6b87c0af91a2fcdfebc5cd72d6621cf13013657d86e10b55e16bf2bfcfb1513d6fcf97395daefdd97d7d1dd4f8d2fb3aa81f8529c477ef5b2ed5ff25c2d753fd83dadd3fa88f7a6a7c6c87f4c0c0357e507bd71ed6c1006357cc4361879041f93f1450589f3ddeb3507188c934b7a6293aa6269d1fabc2ffbcfa14d446611eacad629e37f50b3ee5c29bbc7ede34370aa7e0d464e2e2a5c2d726a59f6b422039a918eaffcdba5108a6c6ff5c73b30235857219cabf9c045668a1cf372b849a54022d243d28057de00735460794fa66fda0d4dc281454752f753d50e2256f2885b63d1f11975ef61f8fea3f568df3bfadc6efd922d8c7dffed13ebe3710853ef0a3f71dbdaa9463a8941fd45ad7ed2b3e8defaaf133ef73d11a5fe57d747dbe59e34fef9bf5a3157e50e30c5efd9d5bc12be6fd0e895d8d4b43fe1bbdf53e23d59fdf3915befa07412cca6e2b26a577f4f2ba5c8c1fbd25afea9e135131f42362afc10d9ad9fed914668d41ed376052a69308a2bc8a1d5ec5abc0e1433896898363712c5ec5ab4ca79a2c4fb2482f35905ea49730528d59314f42b90d124a42492fd24b4d961f3a2bf652aac2d77c062ab5dfbb8fb7a0fe41b0bb232855fb3dde166efbcdfa2d55ecf9b78116fac0dfd7b04e5baebd6fe9e30affe3eabf5b047bf7be232855ddbb7e01f514bc5ff0dd9bfd821fd477d4f89f4d850fb9057015f39c6987c0e7cca0fc413076485c3f67aaf0971b5a6162eefde2e7d79a1b8ad833c780ad987704a56237eb72eeedacd0efefde122855bd5f52aaae074bce300c285ea06ce9ff6685f0217c082194a60a2184b007be20c686336ca0f2fdd3dfffea9fcf6bf7f7f40fd7aee1a9f66f0d0485ba7e22d4ae1f4feddf7e224db4bd79a2eb540311759d98a64aa8eb448397ca05f563bfeffd23bfee6bb2db8a755cb5fda15ce5c38db921ac014bf235e654c05e7a1ff6d86bcda9402bf6cb79bffc971b8a1fd4d82f07b5e5a6f72dd5f9b2fba6fc2028bbcfabfce586e66bb2fb1450e56bcba9bcef4955bdecbe75aaf2b1eedb7e3d69e282910b54f9dff6eb834095ff610c8058b755d5c100cf9c393355b197dd5780eaaff1263b7f166495b3834156ccfbb84a0f063e73e6cc99fa2dd5882541e6ff589527c333dab6c664dadeb841d78906a73afb679d68d852f7b70662a17d57ffac13d354ddfaf1d4fdedd9206d45e88e2b775cbd7ff877abf74fffbec61a6ffc5a6fcb360c98034abfb6c2f7ef87dc507bbb360c98634abfb6f27bb7fdea8e6b73fccb41cf971b9a5bbbe3badc0396bbd0b6f66f3fffb7af6dff3eec57b2d0dba5e60868fcdcdd98419d98a0eae7b57ff2cfcaffcd0a81b67d3e5af93f5a9d3909ec86104257fff8c3d7607ce8317ac7b5bdaf1f0251ad667bbeaffddb3ffdc3df69fb43f7bd5ffdcc0dadb7fdfa66ed5f6e68fbd51fd42750fe7e57ffc0efd760c795f64f3fab7f1c765b97f30feaa0e66e678559f967656f6705f8fcf0d94be2eade722af043efe3ca1fd4dbd39e92afebc11264de42dbba3d1fadfddaf6cfc70fdf5f27081894ffdb6aff077ffbb5afc16efbe54f02e587bfbf1c0bfc4aa0b7fd72ef9b757ffbf579dd0f6a8d3bafdc462303265565b8a9e18dbbae4e55068cd3e0b65b84ff83bffdda9ffdf37185bfafc16ef66b7f040a7f7fb914b65f9fd77de8cd7eed07b50637ee60e5b60812335518105065c02a7fffb6459018aacab055fe7e9a2d82c44c15060454fefee6587026a6cacf9c0a94a9f26ffdb3b57f391598a9f207755007755007f576dbaffded694f09adebc112e426a36d6beb43f9f757a56d0028fffeaab41d42f9f757a5f16fff7cfbec6dbff6f7979871b47562b252576a8b02e5df5f559024d80a27a8c88298208813414a10848620508230f1d48067053c5d7656c033064f193b4bf05cd9c183e7881d3e76f4d8c983678a9d19ececb133a5f3c50e193b5d7654c0a365a70f9e277878d821b313b5e365670d1e2d76beec4cb163c64e193b68ec70d98162e78c9d3476a4d87182478c1d267848b093c40e183c3ef0ecb0e3b4e3c64e183c5378a2d8f962e78a1d2b76aae00163670c1e2876c4d8a162a78d1d16ec28b17345c769470d9d3076b0e88ca1c3840e143a4ee834a13384ce097488c8d123674cce1c3952e44091f3448e13394de430913325074b4e10393ee4fc9003444e1439577296c81122e7881c1c726ec8899263430b052d2d01586ac328ace3aa6cc2300cb3f2e43465301aa9da8fd1444180060afab436a55fad51a91a15ad495b6ef7999fb750fe20c89dff7647508a67762c8475ab1ad49bd6047dfaa395ca1bd6694db55fc33655b742587753b1a906dae68f62926a82535498aa54f7a6caff492b154bfddcca190b2795ca2fbb853e9f57c1ba9a2aa67ef089da1f3bba457860478ca5efacb152d70325c84e9383b65c2abfa3b0ee1e34994b011ba3f247cfa9320afde2f9fe3daffec99e5f84fe81cf6f42ff68bf6d9e08fdcabab9f5ab1f7a345550fed67adbfe31e13d1ea0e98554bfbff50154deb64fcf4b7eeca484a149c55efe722ad03aa58481d6e97d4d622795c8c7b82942ff488fe32f9702e6ad27022452f961472594516810f1c71731e02207332a00c0132e4c54de60230a28539a08e189ea0712f8d1c50c1946d0e0439486192884e8a38f2a985e72a3ce9001828c103840810508360401c6173b2cf1822e3b088943f3629382e211450c324e629ab47c0080a93da2b0c00b2862b0d1f3811cf4f8238c2d88b8028c293c5872820d2d25e8e34b17289abc31ec18c30d1f9ac86892ea9eac94155a305166065cacd0e0378d216ce8630f15282186111d2c1c49f480c31a59f848830b074f57e031832857b0f8638b204f9a24510605357c11a54b0d783e70850bb4580197a72c64b083059430b888e20921b8a8436789091b98112688a836c4e02267e560b2a2a98f1a80a8018aab8b1e96887205192bd88106204f82b0e30b2b3558034c1e645a4fe60a44dcd134258a971598c1f92076c0838f16c8118326d607bc7881131b53a060a1e58ed51313d441071421fe98127523431572d850c41e7a94d962534215509870e8a28d2d51344e31071525b001991ceaa871810f30a26e38e38f3231a0f980161eccd02185cc54113f704b5bbaec2147193430028a33b69b34e89a5146956a53d70c329aa8aecafcf36d1fadced55dd5fb3f11eafe8bb921f8387b507e57ffc4e7e7e99fafa77ed13beaa913e383043bd916743841bdae53d3184d089ad5756a7adaa62f3900d9e9d34a9319d914ada9ebd4b405f39a9cd8816507dd8ef8a1e9874c0d4aeb3a35d9a0b98002294303e5e2c8cc8872867605ddea3a4571cacc50adae53142beca01c96854014faf0330b7d5b8dd1294a1135beb70e42f1590de442f17f8b64b587bfb0e7caa4e84d5da7283ae840575360d09c38343ce87c23d383b2c4c86440b92bb61f7060620b82b6ea3ae1f0836686e2d475bae106953fbb837278f05308e442cc4e37cc51bdbaab067550c38e76acf6e1c79983caba4e37bca06a759d6e18533f5af9957889a1ea8c9d230721aec0e18ad3123a684bf400c509a6ccfc8143964cf652165a5290a5055334a0c11342aafad11ef694d027daf6ec16f1ba9f3f1313530d4241387a50fecf843a85f8270462262626a626217e35900bed2f045262c30c185f9ec4bce186d0acfd140239412206486441c316523009d59ebd3ddccc59680bb1c02d552095baef1193d3e784cd733139b16dbb9daa4cdb7cdb60f3e6abda36d3368ec669686033cdeec6edb66db73452755fa3a9a9d9b6fb20d3765f43d57d9b1bbfb981cd3760eafe162e8da5ad345353918ae202660b67612a6c8599a6160c7418b55cbc6f9d2a7743e81e31c730d88c7143e81e23265d4ad82c3d62989473aa32cf32d89cc9a9526599a66d9c731c6ce6326ddb388e86a6863aa5b099721bd36c5c53b331a51bdbdcac7cb582cdab9b6d57dbb2b6fbe8b65adb0271b9cb059b5d361b77371b77abaffbda8ae52c22751f47c3d9b86b712970d516880301029b814c9ab94324161d36e34c9a2166b4edf9362ab55f4cbf1a46d586503ba47f3908cc6dff156a03aa81e453fbf48b892a2395079c927ed4dedf6f0251fda8485ebf09440bb1e74d3451d0afa7f2f6f48b75e02f04037da017040cea4df5f3a62808d4df2fa120d00a3584aafd9f94aa5df9b59a1950fee516002bcd1494c140a0168275fbb551a9eb81ffa0d5f40f75c041109e1d9d1c1790160e6b7563436b68b84dcb545362d161f30ed95f0e063e53afc00feacf0504bd5d9feeb6b2122f7577983c76e1c2850b7f17328f207adf7e7cff6f9763615f498410c25d8f6da0ed12a09b5900fbd3ac2ddce7f57aa99905c69ebd6ffacf769fddba4bee9f9ed7ed5f9efddac7ba2f09f6f6c3e8bc1e92d724d829800fbf9f172edcff5cfbf0eb72f06b502f31cb40dd8601738881df3fe3177ffbe51edfa337fbe5eeffb37f9abdbaa78446d121e57c89fd37a79c32ce3834f8eb7dacbaef43d0fe22296c8581cfd4e9af71877304ef0ef928f6dff43adf5f9bdd9c5e50630ebbef88b5843183f15fefa375bd8f5f7e9cffc997fcf23b724db4ffdb2afcad7fd8db873fbbfd91ff3577384750affc55097f50cb6efbb59ff32fd36147148e892b8389a906d371881bcd8335b7a6293aa626dd6af4bcc90bac87e6eee68e344ed7e486717c653e7314782626262626a1e9496e2862d18f18fb078b31c6b92fecb78acde08339f6644a2cca183189d116b318867547ae8a458c0e45efe5c5cbb190196342ed9caef9b3da17fc6e7fe86f91f82f365613be2b73a95cfd8e42f502545f2fd5fd55fb637cd5d891bba37701336095deb72d78cd57ff440c621e3baf1a6fceb1e00f1feb6027f50ad04beadadfbfe4cc5d7852d7aefe7bd578f31f911a6dfe43a1c6248c0cf7af95f7bd88dc781f91fa51146cbc0f85eca9f74ded6b685494f336974bf3a897cc9b73feaeea3f579dabfaa9f266f77d12c632604abe246174638fa6314f5216bb8389c5300cf3886118867d8c40f401a3238b94f4bf2235ff9140f35f08dc7f5f63a4f58335beb7dd16d98088401ff8a3da22d9c7e7254003580010803eb0490398003c8505009fd21a4a43b9edfaed19d8671d5755e7fb8adf04024d9ec204d815c0fcaf514aaac8ee90afebfcafebc7532a7c084020a6027de0cfe965b78e2b53d17e35a6a231953096bcf8cdeb3c0e0c6144bcaf183915246f4f8cb3d0f024a3a662de13a9b95133b620e359ae6fac3fda1e5da7346ece45cfc582cba5728cba628c3f9f23167f62f1b76218c69c0ad1db3cc6b89c0a5e1d6bf71a89d083875fd0f3ad17e7fe2b800935feb6083536911d030641fb8a4f24721b112295488563d4b84e357a3bc68eb15eea602c621d33f50bc61839c61823478fa170113d7ea1f3e34fd516516d6f40c18188d0dc12e243998fc30b659f29651db625c4a9d4d55f53a9bc8869181667b77b42f4197c7d6e1b65255e8aee34b06ff399b921eca1ab4a5ae5ac527a9f7b8b7513c3b44c158d54ec638c9c0a5fb1f8edd8f43c29628f7932c4c855066378f80df8b9c055586a8e8d32d3c755e6c6dea744a5f2b314fdb8e95b2e022db4d0e7dba8ea5e1fb154f5ef0e0a49afa3e40c9ae96b269662292825a5070f875977b1a05b46ef73a1c6f723578def1de6bdfac55f78b3cb05cd68901f3e0bddb1e7fd82419d058d516e110c7a716e85ae98e73b047b4c76bb2f0c9bc161c5242603a41d032d3e7791792a7fafca92bb8fc5414da9f424dd228e3d75b11e021121f29bec5c1c917ec1c700e5ff8854c855c3969bc63ddf21f18b358aa0fa737ce786b088795b29cbc56255f73c3631b7397d5b8e05676e88fb0f85edbf117cbaea3fff6355df5cd00716712ca800726cd41504812e007de073aeba799f6bb555794edf82716e015da5778445d5fbb5af717737773777f343e66668fae8a0fd70aaeb246043082134a369cb767019da65a0478c99994c19facd39339add21b3074daba1cced3dc7342c53f7218c82c0421f4a1d424d898e4ddf246741e7dcf46867ca827eb366e3f478568d8bc553c3a5c095dadcac6e563674b55aad563934ac27f69b950cfd66855b73d304a1f16029b3dbf1f48b8c73d59c1bfe76dfcd1c74cb18e329081e05b5fb18d8cd4e051a4f13947f9bc2050c9dbb1d11bb87c6df8ecd6c3be304d54573c3474d15ab31aa984f4c4a47774358c5f4313652eeea57565dfd9252ca393533b42dcbb24cd3bcc989d6961c9e702a3910510508f6c67c626e3fb89c4b0e7c8a638aeac8ba4e39d071868f8963c7995c3c39e0e1399c81bdb139059132c674f5abd56ab58000d1a1cae4b06845bc0a8b0d4ba7aaeba40316ab296ff3b251a799831f3a4c91138707bb9def9029404ce14187291da29e7abed1934313aceb94c393d775ca81cbb3c4f840ca9456d749872950d81b7e85908dbb14b66a0c47d72d438d38aa8bbddd1dd2be43322e884c79624a125055ccba4e529ef02d02bf3f6e9175f5abebbacef33ed87a7a7a7a3ef800e706af0d046e88eb96a18698eaea17081c0c5e41e08660e03355b543fa41e0527871fbdc71dd0e063e53f95fdcd00ee9d7b99183ae931428d5dc220b6d3657bfd6eb11acf0301ec63d4c172d5fbeb8a3d1838791d2c5c3307fe92285f94b1729cc5aa47ce9f224a5cb93140fd3c5c39c119fe2d313f3537c8a4f4f4e83073578180fe31ea68b162f5edcd1e8c1c348e9e26198bf7491c2fca58b14662d52be747992d2e5498a87e9e261ce884ff1e989f9293ec5a72787e261c0f8d2454b172d1ec3c41578182d5ab4c056e2a576af8b35d62012a59623d4fe325084629ffeafeb7e9c83a1cf17a168a0ec101b3c88a22d84820004b36ba4a9a169fba46dcf77c3d402fa452f0d390b8a496daa326de3686aa8cdcd8a85d302c2e3cad9f6359d9d4d270afaf46b3c57180aaaf69414cf16646330ec85bd04e1c0c5e286a6e0605febe05bdfe1b01addba807e2a290814bd87652ed0a7a3c74e9c86536d6eaa856cbc409ffee8c30ecff6c10d6361ee0a5b612b1ba3b8b600e1ae7016ce12840321361dfcb6d14b8412c24d81a0aa814a6a5f4583056a26551fcdd44c112a8ab7f114ea414f08659a492515a1a8977e26a24a156eaae7838df3a8e5c8403015a612b580ae517c369e12c206a19e34910242d1e0167785994200c0a646fd2294c6850c973400b0af89a0d2c005c024310275e4c3b93064a340bffad5bf5e6abf16806dfb073a170005141410e4d4807ef58bc031a05ffdcba5f66b02d8b022f017406b84aa81c80e77e5f5821e0c7ca6d23028bf26808da750225b84ea28cdb42a2931b5bf6d58a0e8e56b1daaab99d75049d5e6a6a00f1ad10bece8a5f6eb8cb0710b2809dc196e8aeb638154521f8d4a2842411f3454522aa9a1388546c2c6606809db7e93485dffefebee8b9ba294bb32a10f1cdc14048a13f3a2f7d10abdcf5575b805788d505d28ff17a172b82b2ee8d3bfc15182096dc2097cc2f6b36d24539b172842ad4f7f84c1027153d0a7b95847e5a6fa3505e5ffb8a9daafedf0dc3041f7c270c30d97135a7fb1fa6b5a54696ec08dd29b9b150b562caf52f77b8ae452f7bbb5691c901a1a4ad5b0d95c3736ab8d737058ad2ec6e84c2e9d0d6e855107ca3bcd1364630e3a80bf6dfff07685dd17e3fbc28fafc12e56afcb610fbbae58e460f32e88d6c1e6ddc72b20a076b779dcd07a5bc7ad00cf9cf1605b61cf9cc1628410421863841046acf360a36a50fee8eecc0df56c44f80ccabfc5408810104078b9fb0bbef6da79a28d365c5cf8aeebf8aed36d4c0e842ee80e1d88ef3a165b920d0c07ba43c99adb3686abe058a15cbf6d732ad0673fa8e36a1b23a7ea46352597a965369bb6b9c49c2a9de2b65843c35177778f5c689cc915d42eb7d48d3b507e8c8352be8d91df73a16f63b63ae5fad4768b64beeb37aa95effae7b07f13237d6e3042f9db2fde218b61d01d02d936f65baef8b9437788457d04b2512d283ff45d8f100cad0be11174d726c636e6db7d7f6d7dd731223a39bda3c31a8fbbef78bffc21f4873c3b3a392e202d1cd6eac686d6d0703c3d606ce029890b943c01c1dfa710087adf44df4c43c42216e1f01582cd364c08145b48e32d7613faf47bb7b3422db485d9862f44bb95346dfba7bb2ff673555bc8bcbc18cda7a4eee3d4855dacdd7dad799c42f99b1bdaff7654e01d159c898989a9ee633556a8c23ad58feb14ff428e5106104268e402770f3a6ca8877bff3c7cdef7f606c25c2ee8f3823e26b44f7f3fb7009d0a3d22fdea57d1b1dc34bc43e2ebd456aaf0796b9f7e1e1ce8e7aa0d2442fbf4f7ab022f77f8ec759dda60628f37c0d8e2471f48a86048184e6384f1851b2cbfadee874235a17ffc65e74e4c4c4c42087d3c15eba918151bb04841061757e8484208fbd93f22540c2323ca948a45af0dba95d7615da71bc0d06ec1969d9a63b818c3c5182e4968dbf3695eb88c8fe5a8fd124cff3012d78f17c055f624981d42078d02f2f66133e827c1d496aa120c6f431acd0bafb26c41595620ec3916648581cf745a43dfb00e96699ffe2da3e1e84639e8c1a81beddbdd5ddf5ddf9d1fe34f9c0debb4dd223b758be854089fd20ec8a6da22b36e11d99100cb02f8fca6c25f0662ca2afc662038c57c3090f6fd2e08843d2cd22dfb7c0cb4ec9379c73b849fa7c20adff7673efcb93ff2e16f0b843d9c53707243ee4130fdeae7e4a0300fd547f54f99fec9be1f4ad14ce5fa2ae7b6bcf0611f0b84414db5d1fed9f1e70a2b843f211006a40e399884e0471b6e087aa958c7715b535a23c60acbaa0ad7ae9f5c11b1b2b24a82b256dc102cd3af767fd87dac07851f046117df2194ea57c3a87ef5df704310cc0ee9ef2ce807a76abf06a67f342ed0060b34e1d416d9dada199fe6a5f6efa7b5516bd6a71f82d9220b6be0990981e0d4faf4b1d9b069996a4a8e067aab2c4abce47e3346db2dc2dd3bb4ff41f80c3de85e3307e5f709b7e5d6fb4430f5451e286f77e44d75bfb9a17dffa03bdc768b6cfde0c2670f36afd3403059edfe5c2e9efea1cfdd14837e93f6cf378130d9b47fa0d7ffc19ffdea8ef6abb97eb3d60d765cbd53ed90b943f8e1cfad8168c3acb6155ff7edbc5f50be36bbb902acf12be48664c759dd5363dfe57fee1dce11ecdcded6afc55e07fe275f763847502512636f42169e5878ead7981b8abf0f7dfabfedfd59fdeaf7ae69bffa3340b77ed1b9b9c00d571f2e974e102e14fbdefaf98b2fbfb1f7ff8e8868b2a766ed9f5206ae8c794afcbd5b42a42a81bff5cb839ee48eb285193366d4d8a279214d0d7bbf96eb21b4ed177b2c45f9995b404d5d3fba36f33c853a37342356b32f97f9b90694795dfe3933733373f3c3a8dea69c73ae46b33b649fa343db9eafc60a0452fd27b960b1f29f53a9fbb1ea7e0e3f36d6d154559749419f7ed84181821f871752bdec24962a536baaaa2ef3a34fc8a62a6313a3cee48a11eb68d57ce32c284fa13655477a915c6aff944eb55f5269208905faf4cf2afd48ae3575991fedd3d9142707fd6aa8d4fe2f9baafd3544f4cf7744a50688fec1bebfa68a63d34bfde0549669a884aad80a33390b328766666604000009931640302820100b06e469a02af2031480106f924c524a2c1646439118876118c55010c4308c2104116208320839a4e86c026e1d6845e8c04e82845ebc5ef04e18d9e20811eb216e3b77cd4ebf60a9c3499c40c659cbcbca4e1ade047ab0ba7238f19c19703899bb3c2a71a709d353b550a74bef8544e06a11e21b41fd55ed9c278ad4b6f6cdd660b8eba5a62e67237939106045530b83c2528b02ba0e220461af86a414e6ea015abfc2a1499bc1f7aa0c7633a24a4531bcd90d99cfe3e494521dfddf4ebe2bccf996a1559ced79a18ab4e6f66dca3e2de08db7695af7a2ad099b6cc0ad524c731c501f40d7ce2e1ca6f74213118fdd8c419f969d8bf2cdcac9378d8eb98c113080e56ede02e1ac92c4ee328bd2e99918ad6522f7d7f8e1b62e4a12b8ea1433e098798f3a210a90f373de4b497b6032124096ffe7332ddd41409fffb6f40f26bb130261c3e18fb0a7d447ed5be595c12b49de69c7b676b4bccec58af9c87a21d9e443b04ecd18dfb38362693912ee009e897e7aa14148fa5c8db0ff4ba22a778a2f43a2172d0fdef00cb42bc633084508ab6913a8f84f768d1efc87871a8ac0c8e03f593742061ad7ae34bb04b17dff545834e67d276a40ef76973f2e76cf64a0b095cef4d54313cec9bfcc1454513e0a24ce4599aca413b92981f8fc24332cb8aeb3a742f0eb646af6c667a43f7f22ca44e7939b7eff0e1046b8c10fcb004ec5fdcd3d9826fadc9966087841feeb0e44d68d98e64f50c16d43d9bc375fcfa78f3001bdc9b980dd2a14c2f8d087ad594807b0bcbcea32c41fd8bdad1e262227b52a468977e90e2dc3a103bd38b8f5d0c11de620870e0ebb746e9f5b14cc5e7712ab017ced16a45feb0a8ca188d25151aaf2ed9060078616a0e49529d49249d645d6e63a6e0e3c0419597a5f6145edc14c822ac4ef52f58b9ee3e29cbfe183589feb5942f7169cfe4dde5dc40d5d91ecf85d1bbc2c4158339695ba79ffc2521075c50de126b4be9fef9fdd1e31e38a0daf4694ef8dd242d1db66d561d05cec5bd13cb90968a8d9bec1362c53a4110dcdd4ab93425d1ab1890148102a913b5f11ff45917a0d8a2a22cf1928d6b55c8004348bd84bc02476ecdbc193da938f02449036d27e2421b40cb8fdfae2056889dabc23b8b1ef142913546c84be18538b06702adca197e3d2bb026d74c99e7d16b08ffe955b38aaeaf3950f6d99c1d89dcfd27a9fb0faed70637a47199137d351cba8e23a1bf19e7b7dc60a923464f2bb6414c89bfd5227caf46a125380354ad42d8ab597c379a554a3cf9053cfc1f55f7bea4d1648da5a93721254df0cc28d4d21328b0e443234f726e817c3d52e97e1e461c2d905123ad4939e84fcbb2e217f94636f17f63fcf6ab8ac20035eafa43f8ee93eb1ea80eb2a3739bcc7a8221545ea67621f9cca6d4be4917bf8a64af21a89c5b18577499602687d57501bb1a0cb8b8bac0cad6aa4899a1918701416046accb60c6708a007008193a34a6b2272182e880a42df9f2e36550371ed81a31d407e3b0fa14e21a66dd2204edb97a8fb8e64744d2391aca64d2d1019031b0538a2df4f98f52a791f395eb6247406cdee51685f52e7f402e7ae95764c7c545910a346b1a5f015e9d5acae6e24897761ca21ca100342bed4d29bcf582aaf5040cb10a04e3d8886171ec06c283240965c5bd19a44954d6d0d15850969d2f596a2b86d393817bf897fba2238286b5122c6a0d2e07381e6304062f718897109cda80402c30e311651c81709c5ff48d21773cc72187a2ab262ccd49446628402139c7c016f4aa05214236ae43641944e89c617af8944e9f4d45071989c4c5a7b098afb978253f19f98a72b828362092d6a042e0d3e12d20c0304a61e111a97f08c0a202ca2029d7c166b56944269f25f638d83f2a0cce29359b5bcc819328cada351d957ff93456c72221228abcc7442bb95559bf5a63f586c8e281d7ce2ccfc4789009e1dbc17df1ebed91a6d0285e8c0b56329a51b7814846f0236a3e7cc762a4760f3bfca4e459836547898714f29166a8f4e842284b56c3acdc2ce6173f3d50faab5c8faa7c93b224a9db785d39a6cec0f136021d4d561ae7c672b81849ec8da916ab38005a203ec2a6ef9f69f7e117b158728b28cd94960c626b7973cc41a96fe8c2844a641841422634682e119dfd9b2bbba9c435c504eba861420f9073da796443c12a3a1803128de4f6d7b243a42db611240e191b03dcd6d276a2334bf5d8c37e145cdce6921f1f6d43c70ed9aa50ab8d42766a2d1a7d6822d04ef6dfec68360587a85bd06a69d9dfba1c596a7550024dacc3a29ad9bd1f7a99ead403e70b3c261248b8745d62780bdc01068f77d0e53cbe5776e23093132236f89a85ddfba5c276da840922cb4595b4b6019b75c88e41870d08aa14849f8bbaf0bd33a99d4c81ff09dc3bf40e667a54a92d9701483e3a5c54df126d30586b7163df7568997d9527c4e89195e5aa5128c66d601858d80d38492bbfce4854c92c3518926a5caf8245d33174fd7237a735c888852cd96c6ebe1c381a4ca8ae01bf4c1bffa90e80f8a2cf453c5065abb37581e14713e3d3311b754a9051307ffbdd74d79068ce17cb35345fb4137baeb850519af99c2744bc73a87241c2b2944a68d1015954aec046ecbdc63e944b874640746b5232e8882f4906b9e75d1754770a4724f01ace10095f41ce115be534e8f09ea766494a8a66927640e156bb590350330d9f834ac463c88d27c4c86fffeaf585efc666abb4bcadc82702518b0ca6ccae2e88b1764ea5f4c5635519a25069deeb8d5a90f8f42096653e2d953fc14da0759a30de5432867c3a7000042f3a9a98042906315f7586a264bf326cd1e1851ae05727cd85093d9cd16baf560479f7481ddaa2ca101a72e68790624d0fab73f7f019fca41867102ef7ec236f380a1eb5e4bda998e9a76a403bcdc924bb865c9e8c39c2d0be3eeb95c25d568dccb300fe531ec645a22e2d1c50965ce8f1d78a79532400e2a2cb4b24fd407c5610a8713e0de24574c70f40b1edd953ee501d685273a1908c00852b0ab3ec8076b35946201084549eed02a06095230f70421559e7f2f021060dd2fffda96b0b746d3a16e8d6a69cd2d49024f6618369aa87614f8b34e737c90e961c8b4c23a07826ba8e224f6e740cd5389bff5ad8454a4746f45ad6310884ccd1bc8c660f0878ed604bc910be66b335482b65d87ac7e00485e9cb9200f072ddbd4564fc18d20b967106e1215b6fd92236c57a482d8fa33c3642228de3d2c4d189368f9592407c4f96112c6c3a27af623abf36fd331a4aa02f16b7e1451e60861713dc729fe038149857d5104d309341b3131742c5449851da12988fbf459d1b87c284ed6a332888558f5fc458ec5818cda3b73dfe2d190102d19085c02c9f17e20f9b6704a11a3703a5eb96e9ba01b08adc90df064e83646cee35f3b5486c7997ee82849672c9c5b689eb54e26c38ad53b9a4241e1727ee9f1d0dbb393fbd76324773d4d81e56a62825435cb6a81add12e09ce74c1b9de8bf2f6cc83fae32faa27db25f39468a088335b4dd4e40e5d04cfef18819c5094dc10b32d06513465b5563398908d78178ee54a258c231b74b0472052487d43fd3ef57746589db97893c8d4700bf76229886bf8e91a744de9892ff6e7ec76c21581664af80de29704201485df1965edf6fe9a55411f8cc8901d7daf0a72e35da2983e254c4e83e22c53e1095134eae4edc04d160fae35fb80e4399f7c99b42d28d558973a2f61622abe08deb1358b893fc4fc24001005ac4258a86938041315e958e8bf8b05ca0a67081bdcac905e17e0e06ccf272b3e92567f733545e0842c7f61778f66f117c2b2e2d3f21a18015ba38600a9d8b7e8079f1be751a0148f36cf23520f6ba49f44ec6b482a7fe2172c98a938c97ea3250cea9140eaa4e6b26722dc844e90682f705677dda06634073eb0d21b23d1df3585ade8de4829037121e7a8e4367458f7be1872df36f9b8dd8c8bab51c7b542f569ae71b9a4bddc068908acedbcaa5586c1232883b9e37418cd58e2dc3400fd08f94bbb56dd0d9cbeba608fef1c025189e61f4660ecdebe07777b7fb3bc8effb3c97cd4da2ceea1fdac694c2592f1ad0e6c58c58e06e29d636a9179632881a6ba2436019f8763eee6e37e61bfee076d0656ca859a8d626b2850bde4a1e5e5ab419917b30c4b09f8ddac7fa904493b67fc4e739b216c97c1a87543b4045a995aa7cef5a647f228f94a95d997991dd007de07a46aa5f82be9ac9135a63d8dd84f2399092a6398b51e2c2425b9a67059ebf32e1b08fccb8f5843a127ff0f289be177c5b1cc0dd7e8b2766d698f4ee45f2c00bbd8fda626af0445e6d8cbd9d108d03d595dd6f7707f900692c460c1eb4877f6c9dd364c7acc89714d7e5f59133535a100038049c9de657cb85deb3bca3aaeee7e27c224fcff857c75c5902ea27994a158daef7af43bdf1b0fa452536fdadee67192e5f98e4361e867d2fd10eb22663e27bf05518a0fecf983e3e40395839e6c3c67433059d4846693f0e63502c8b499670f8298356c298a05c308ed74f505124df869b327781be98154f1f68089b2f39e50a7044d02caf88e8bd0e84f2109fceb0a60c3930a91385e4b044122461a16044bf61966c5c0485b2e424410f1f36520e1fc6bbf08ef0a5ba4c0a17fb943c8ec97d54520c94fe048c6057c728876971f742743c61f2d3e6be45f9603e03dcf57df77e8e53d3dc0f7c60a4ef52c606f6843a25e9f52f85aa08c92cb46853593d0c0a15998d972e1280fcd1a4e3c9ba3b25065b21805ea68eb82333cde49065d440d195e28d8420a8d00bd4c49b029b0ca75260c0e32009922cbb5403cff45cfed97a6ea62bdcb16083ddc3ecb39fa89f22f969c0e7394b7fa945a4514e0c1b520786fe91ab66aa067bd2403e9b08b65188b5e3daf341c3b909c5bf4c223bc549c2a2c31486adc95a8f34654371046dd7cf582385dd08029610647c0f0d6bbd0b7fa7552a4b1e517f0dc128462c1ff5c4f82d20dffaa2e6b2913c1bc4e2e8d86e6c35850229f1404ac32c9c507d27137a5e00b909104ee2ba9b78b9fe4a7666bc5d21af354fa418fca257e2f0f021bb3de13b732b44629ef57bf2a680b4803bf93869ce9d8c5f3e0cdba5197113901fff7eaaa043a411e66f3d3ee8867b025dc09485c43b6a59a6adcf06175d995a70d8c11eb8dbd445cbfda3c701e346cd6052435dc23217a03795392df18d2f7eff39299cbb170fcea2e11d158714bd41a17941bd7ffadbcb786497a876d312bdf1f9a097665e8d95f6310b278a5d8d337eed493a002676fa6d4d3141a741cba5b4ff9d3a4b566589da8da384d68a48655f694b1581a44d4181c3f7eed9d7a5d84c0c22ce325e5a33bdbd26aa02eb65fd2baa693be30080968f084206251ae1d0b94164e4374bc0a613f4a453850a94de75d04ae3f3dda35e01b1917e0a6374ef65c092e88420e1b03b4624f8fb17a305f95a8b2b3ea7add4606e69d73772fe86709f84433c0d3a70e28299eb51629b960b4cadd2e035ae26384870fd80217cd9a6541077a26194423ad923a298c2f3f76fd304aa32cf4fd7e2382194e52abf016a1b8bbf29c9ec9e1c31d0ad527f99a3b0e24b6b14b80cff3dd8d41496c7f340e0405dfc118dfa36267a90624cd279f7ba689e5c30ceff933a9a96aaf11502c72735174cf3ae950613a249be10f7884eb9aa06a58f4cb7f499ac0214ea7d929d9467a36c9f52f576cda69e57912c92b25ae6411842880af330bfbec515be9cdc5165a1666dc198a69c05c242ab076403950a48674b800718f496749062e95103de8d8507244dfdec36ac9983b74c1e7c8c5430d80a0793992e536f0d6fe21bdad3916075bd8b056a0b4d3b49a9cb05d1b132ce2ca172d32ac283723e8170230b835f8a9ac0883f42d4c4c01d9dcbe7836b2dc29f4bd3a33fd54729583d238c239651c9e86294b0589a85a73c962621002be46120546207550adec9a7362a20b4ea670498249ae45a5020d4999e537f648a2d3ee4674e1d66e64176be864465e42238a413c5cec95ab737b869b01fbbf1bac0e6038547f4543f476a6401808a4a9a4e5053f1f454933280c398b228438c5ad46ebf00c18b800384b9865478472b3ce6fbe648536999ebdaecb78a2f5d04715b4859808f5027db5d73848c545e2a13fd447cea42c2f2e51fddcb87436b2f2e8c8a1430a98bb0d3d27f7d32e85249d90d17542418a9a8e0d8c08200909ce606b42e9ab9d918bcfdca46bc8e311da9dd64c6a26d7984344d2f9123611a3882cec5e2e99145ccd3830610d65ec7323c90b5570a0ec4ecdc27eba3c2525add111870a300e401094f903ebae430511efae0fc7cc0393658992a893344097279d0b0997787deb806f2ca9919df7cda400c617533a65be831b8f06c8d7b48d01c86b92ddbd5f2db8148e6f999508060d010eaa79f0cd5c3ff8f208800c2e928af7de673d8e7a70e076cf98c4c1a07c3b84bc428a86b09d7c49a949b33a1173a63f7e003e53ec6d6af7c2f327d7de4a7265d5006c321d28404cd485ee7224f796bda9af82ab29b14f4b7021ca4004781f20766024e1a56759d0b6f8e277953c786c62dcd30eda1ebc12d931d19306786bbd41daf516c134149291ff4a3de4d702d1cd663d9dfb6e6bdaed645caa40705e68a766ef9e098e8b1a978fd09c2963b66d7208fddd91c81eb014c7af012839daac3652a1631fa619fb77215b3924f96daad2b29ee610b76c3d78ade60b9a336e0b4170b67a72b72b152d98d3e2d4e1b9065933b6b45e1c69e01033746bbcae762eb1bbb2c908cff31390514f6d40d3cd76b1c6a8d6ce4ebf47f47fecd27e9f46d8c3195ff7efecf9a36129bef726f5e73fc55975d230b693e49d2b9155931b695bc73ca25cd1a184311f61bd31624ed47b590b9b846d36c8c9f78b42a6d8102c657874f9a2de25df58e2a6c71baf84ffb6299ef515b52c4c61a2bb38ba3693e0ff91499a20717dd628a989b668272dee5278c2bb662c7f6f8199af74371635c9ddc049b038018135f9494bc339243af9cc7044a9ce3b158931532f9368bc81be8cf454f06a9e8cfe6d30792c227e50d5c599c50fcf7afea512d353c172fa7d2761168dd9039c718e5ca828286e7ccd070e5497c3f21e1f60fc5052b463026affa3319f5709c29453e72fb041504a8ea1496da8486a296c19ab1ab550fe3012f26a8684a9b5a974a066969f30bc0d79ded0838b53b8e30fe1482e1c7b8a0a3b1c828148250f9ef1167d3c4b178f526b9b231b8c08b0a18ee2dfcf548893caab633ce0e77075d99019e1119a84fd538d21a4c33a630265179a2d6481cb974e5790df54bd66b52bf4e29750c17b2b0037eb6eb1690f0a454dfecdddb6160d2af1c408da621adaac7b88c3bd8242dac64043444557c16caf415cdb83cd7f4b85e7c26f2f771d1b104a4bafec31eb7dd354a7c925eaecb60dba35dc8f155ba9be0cdb04a8af8ec895dd770c26f1074b7fdfbfe7b23f2f1d0985d08b027449e7ec587316cb9ce7c83e48c10822475d3d18da90ae990bbe807c7c5ec3ebd1ec5b28b7c20ed4cf190069e6cdffa50a24bf1494003db9a7aee9dc4333e38bc592e0835f14b56a1cf2bc947de60602d190eb398cfa3227cd5bc6f05a649e3383719038a6ea907f0f32ac844e42f28c89c0240fa619831042a9b95ba0fb5de6a5edfd9f9b3d0a0e5148a91c4c94827510ae91682379b3ce7a85dcabec69db4dae1089cc3a643645437338f1e97307f58616e289442123822c6810c49915465441413e2ee49a1a052e21029e18de75977ba3c12c21034943542583bda0bff12a65aa71fcaa85f051bb3caa0ea1d2462b1318f93a022e8542af5daab42675a13664d00a19121ba86c9f5f9791a21108acc8e9ba78e513a708b24bb342fb73b4544ab4828fd8c9fe344fc6a04e2d0b66b9f0cf549f1f3d2a2351afe954b1127812895d947914f253e0483eec7f8f2357b18a0fe0fdcd0b2970cf4445a9187884e6d0ef3ca0e3fd3831c60261c88d622f1af89449ad7114f18808064f1efc294fe47540a82f03026f4430be940cfea33c7772edef381ddaecc0262e0561a0209e0a540cbe6df9ef5893bbd65fb26cf4b86b2089f70249b1b72c7f3bcea6eef58f784e4058c1645d84b25c056e200eb117077f25a502c6813fc9115a4d4f94b251de458233ea640aaa5ef43601af90b511f63c0d6c27545bd5f619592810512c64dcf4cc2c6fde43a54dccabf5d7cfc91a992d152516584c62c380faf913d66ac8fbf59f2cb682d9fbe2192482977735e7390d3ef2adeb64124c70824562447fb2a16d5964df6f691703a4e530a1b15c9925ed3d6c521a9cc8594ba6c9c1331a0186e44ec4cac40e58aa6bd1a4631c97f5267eef0a633e615ce4fa1fe3627e9a980c9e4b1ee0c67efa95146ed8b1d2f5292d2f5d1691a49a11e0952f9eb02610ac85e5c11f26620ebc06c5938bd66a0df9c786ba07b01a452864dc2d4dbf44f54dd8f2051758067f5c29d888bb94ad5108895a030d6539db3404350e2e6e6971c174b22773d22978b8688cedfb8ff689b5aa9de91bbf331cd310b4e61c370e31605c0437fb28348d44524f9ed894939cb69bc3d562a2413ba8d770b512fc4a72b62559be9a9256c749b23d38eda7aa31232ae9a3f66f5fac615834fb838940aa5f337baa83d84aa71116f2b3727bea8a8281281cdcae6934d55296e8cbb049cd518c420c7ed989513e5ed92ecc277bdb600b9de17daf3d71028bac48fe447b068dce0c573b0f45d666f687b0863f761a4c51c18dd3a853f59e39483043523d4d562610eb93ec06e0193339b18add93ab8a3fda27a075c547daf4a420f92ef9a9b269331be60a2850f6d1019fb0f1652e8ebfd6446e881ec99a8bbbf45352d9fc9d782e276aeace64c615754d7fe7eafd4ac253019e3c93970dc24019d74f0978b3e50d4d76452d7d661ba89ac3b913e18a27913db0e090fccd3ae304533cc8362145477acc8d90db818a8f5c623ea6879cd9064a7eae733ece8724dac1173eae3e2fe51a860865d9384689fb5047fa32ae47ee198d6222489ab1539eaabad0a12f6ac37a8859f176e321b04ad0b4d3ec8806abdb845df80ac3d04c254ef3a1d7500f8d1401831cba120a1c1149ad4bc7791bd01f639e4897d7a144073493a3f8d67c704674569a161caf74e3ccd94dc27bb9d4ed7cd28a998b6e25e202bba74b8dc764442ff5c254020c360a0cbd844a2e3c57b0ab2e248fc0e34e5223974a30810837e252a5291a078e76b7f1692bac80927a74f4a6cc982a1a8919b04371eb4d2aefcdd61a0f04c594887bdb80c37d16812ba5b3c14c9cbf02517a58c99bc16f1a24770f0e154a2707a811a2e86a649d44b238a4f19dfb089d0071f8e1dbf588c77a07be1a87217cb170c60fad1f689de51e105097b69d3d1bf67a0d813865dc1b898b7c41b5e43875b2f9e38205508ba7979c365bfd6d0c9c8ade7b1fb663b9d7ade2aa59a8cf69c14d9b6682891ad95b92282070462046fa5aefa07e8adfe1a0fbe7adbd50547366476d21041e4fda261972d150c06398e70bcff647c7060b854f0162b67781db7a42cd0d41c43699e98f0cea68c32ba4b2ebd8ebec916182f9aac97a2fa2d3d4a8c2eeea52f51ff028cc446c6cabc4376f2314f746ef069c41b24d95dc6fa12d1e5ba91cb45d774069293a508242fc17c40b67cf2d46f4083008015d38f9f197597d862395113e428585337f213a3ecb7080209a2527b4726a358ea27541aee20dc9d8a0222abb6a0dd827ab7a0fb2ef51c043edf06941cae78fe6d0c5678f65a9cb0c2310cabd24bf647bfb7cad7ceff64826e791cdbc8c85cdd4c2a2f1685075d3429c1d6d4e83e18c262153278638801c4d0ae81694683b7ae2421ac7049cf0491727bc6d5621cf2c48e11c23ce0bca3705676aab28fe40cca1a20bb80ac84376c653b78ba1b5fa6a5138b0be09fa12a1b10923f6a3b18fa9487e9b3be248990c7016e9330a34f822d70d4d70415a9e29f21e75f364210ca91f5dc009a9d071d7753cd3f9779606e886c05f07dde7521172ea83827b41ddf2f62537a89a5f3c72736735460ee03f44a208fd9d6e69fc477f9c73f094ac90f7a28f80db7e17966cbd80e744b409ad21d5166f8c074a5368eb769cacbd63d8c48b8c871e46f7f50f33babdba084af94f3809e80d764152a22eea1520b9d28d4a007ffd4d7c84ebe3608f76726167d4e358980048c68a661552dffaa182885e71323447638c3240be03bb3dca1aeb6413fb1d06c30c02bc77326eca1d4844e0785e4d81c115dd594f4522d00b73b9355093eacfcb7ab865c150a67661628c83323f4636bae5262ba94753ad9727204c88c17abc8d758895d2f458b639a834f840d7207399c904b15e6f255f876e10dc58d42b38986d9aa8aac762c975688b63ae7dcf200ac1456c3a50dfde50df45d4a763659f65dea23650c7260d34bb23ecc5c1be07f584d1d3f37cb1296a1ec6e383065727bd4d63c954471142a1dc97aa889eef5417f3e6737587c4fc5dd64a6dc1372f6c82653b6a066a2596635c4315bb3e009818c00618dc79a901fc4261b31d1549e785dd39832c6a737b01327a3709510ef4d24b90f74da05e22dce8f8bffe0b62c810801aca60e64451c91f55791099bb2281f12661c45e4387a441b85045b47936b3e5e8d53dc4eb7cdbea66e1be4bff0f2b805a8f12b3756e1751d0a585bb502c44cdd9330d1eaa70396d176d756bfc2d4b9f4ca4f3e33d1217810c9d1582ff949d20eb0c0f18d90a375c925f82ad51f30435c4f0b7596ef176442058fa49ce32fc458800625b706a5f6fdd34b52d92ce952a675bc4ee2647a140525e8dec28a0e10e3eeadada1e151b112c12eab0df8f63306ae8f0e3ae361598eee6cf2d23974783f82c73aedddece47fc8a17ef31b6cd2f0c99bb516fbe764d2c7a4f9a4296a942d32ff885fecc0a7298acd0caebb7cd574a8714a6910de9046c49db412c2056f3a0511b1f749eb2bb0fe47fa112e340b1d61fe48bdb9146f3c357667780a3b1025a645e941e2021bbaf7e80066c0906b6a1d7552e4b0a63ecf5e67b9afb1edc5f7b9ab162b6935f7e47163ce8c0a43872252613efe3fdcfedaa62069e13dbc0082378f7ab10e9017d5ad1383bcd67b71340dc9f4f49364e407533e62740e5fc9f9ae644e62647b76171117e00c7025c10ce3da9c2ba904930fafa35ef616c9b6b8925ae8d4f4eaa80e60773d42c786871f23854ee74f1f34bfda81f63df483cba4d359a4a40f5fdb1a062ce463f8b95788e255c7e4d292586226abd68c7a66582fa71cc443c75ce9d54ee3c0eb4a073b2495b4aa10b9f7f3da73c8d07d180e04f73ee67516e3e9921863d51e0cbbdd5f386e36e5e66b777ff33086e7ec76c073b401cf54337233a1fee7205b40cbaf158e60d574073a48cad4b5299c7f495a3aeef1dcf7efd22365de74b02c565bd8caaa14ba976e8af523c5a69066fa1d965283337d197cfea37930a73ed50c0a85659ffdacd18d7b3143ebc25544449c2913bf377894a45ebd70bf642fc3c7028ea1191078f8f6328adbd5764c1393b6bda9ab3a08dc5d053f1a9adac9bb6af25e17ed04554863eee01f4d780595430d5641ecf0a99befe425aceb8b38c0f125c5a545148270f7f37f426fa3824848ec0200d063c23b565803ee40e5e055099b172908917cb78c4b25341c5fa430824c25fc17f4c2bd2b843b34d27e3ef18f7782e9d98e39239c8b7caa81a3abdc62507930bde32a90cd8313996ca2ecaa0768d960a02fb6fce4a8b16dcfb479eaeeebf9e66dcec1afaa2c3c111a21a2d1e2b379a1046e4fb0b3b7c3f330d63971c4d26f74905fbbeb950245ffc905a6d1a3092a79a00e9d323ccec41bf13f3a9e4444882147b4f8b4cccd034d70810519acd9694a7197c0f0c0915d83eeb2c2d8bfa1c4280d4c46772eabb5cf0c3121cc019084e5fb7d5414e409fea04e64215bece25a528558702f354724664322a040853fabe33f6ddb9acca88df0acd25c1c3f108d2b8e20f80def6d29c1cb0f0bcfcec24e98310b6d0e072b59f3c7ae58403ca08a5b33a4687c049e3c824cd5ef2a767d9214c6dd363fa0c95bddb227d9040575d70a038afe976d83df0553480e0b8968fd12f7a8e904616717d6f9ece5d510bab8b781b2b888779d37b3512468ab4c1a798e0b726db67f14b4796861a0a51eb834470e4da5adef559e69af3fef4255c93d9eb4dc490fa817dfe0cf920e8f2895ca7ab426040796824d448c607672a41996b1e4d7d0706cb03a20c95a728db3f3ac70535567fc9630bf8ee476ad145e2602e7b0227621ada92584a5b0659c55309a7e46f2468f513f6cd3d49f185a790407b49d5bf1218e854c23206a9141813c45b84c4b6dc56180c62ebbeef4a2a70504f007d892d223ed8fb70831f770268283ac05cd861c05178fa000084de34a8228dc165080f72f91a624b757a8c8870e8d02485cd1fe2174a875315820e7429fe4a70601c50747e63d5aef4d9c374dc7379095decc2a1a1e23910c26df3e1d74335ebfef4533cb778d2f0d5928e7ab28648c8fa202faea06ff31e316957f600f176e443f9d4f940795ee0b9bc9bfba17d23420ccb2490a3bbb69409cda6e8484674715c886d66fa2f02721869c516764425d8e95f36f1554730b89a676abf183abaf69005306d8ac537da61a894cb355581340373d76335377ebadc6c2ca40186a8191c1ae543121c2fc671cbb6dc2d8e9e811c110024068047e918e372e5efd2398d47fc554a4e9a5d0696b9c7af841f9a78e817705697fb048c44e8f0b5e7656f582f0f46f7b0bf04d41f4423910516adb42c0a800237805f09a1337dd36903032661a4cb59ebff934757e4fed696c42513946352b82f4ef1e72cf0d09c743eec9d472f9ce827e3e70f88a4ef80df11b9d95b8324efc5f88612b795c0d54f2681bc5799c50acfb92a72773c21f727202e5c1744c0c562ac922ea977ba463e6e96985490ad129ca0cbbc9f92941b92d9e1fa20621be3d58e9e9b6459bb19f10366c6efc25b2593cb04638980a44c67f7b680a4a13c938a12541376bf879b5e09ec931f1d3509ba1eed1c777641335af17d30aab83717a63cfafa49a80047e97f1d3c194f081affda45def21714c8b6469757d978ca2e2f555e62596ae5e6de642e12f92b360de1a0b0e8944933d3d079ad820a2b7f8add09fb88d27d24c236ad269a5008c72aee8be60454a71df7c98045b7a031ac3716b27affc041e30af1e101fb140a2c295e0dfa5c539e9b60c9e00816c9d69b2c41d06e625723a54ace66de74e30afb4c55df569477d4e2a65d686fde41c8791a06a94a56b9734d1d16b45e1bab5941615180950a3b342000b28ce8774f260f7fad919c54a0a68f46aa79adee5b1d2827e5336969e82ee9d457204876274f59bd080a441f9887c72aa844072ac30284f325c44c530c0bbf3c157345afd6a0517cff64f39a22ef4a2a2f265c4235342242f060de6e5f60ab83a8340b9d611009a19d7abde3a0e7549b2009bfc9d5c0c187c49b5d34c72cb31565e7e4549e4d75de9ca2b74236f26dcdca18c476b82d91daee0e9c73ae3c681fbb6b913dfaea7e9cc98fad16b2ba492fff28732e4d76012c08745db36a55243a9bad9c42c372914e0b344fca9050c00224de8d3b361ba1d0b47247f32d8c31330857147ed5802bf1898acf3adcb95718a0f1070356118ec4ad6b44cc0121f1960a09b11409b0b87780b303206d2ba2cc3e860e045fa730506e620702e91a90493897ba7723ee97e4a4933da1b42014237ed03ad3a4fd0b00e33155a4a32fe773221f0f711241def33c700cd23073ba3824452d00fa48436aa3788adb13333482ee3aea76002ea6fd281fe3ca4a18dcddd81fb92ffc434d699b97fbe33f51178308db2c8e29a64a412dfe25f789f11ca7681bb148806502e40449d22b6cfccb172aa76f65d2c9d03a964cd5f81b5a3d51e968c91e09e6ea6290048c3e2f77a34d1a82076528234ce7127aef6bba168d0654e128fb5430a7f50542c80c3b7dbd316670bb171b10ade2c35a37e1668fcf6635b2874e0b986da8d4ed01a6b549729ce561a51df2a157fe1f0bf48c17a8211ac1eda76ed7b77351d86be506112bc50a657d058505ea585f5cc08f4ae6ab7d41e9a2b84ab0515c9c192933af1b33ab5ee8bd8190884801eb558fc0fa00500a6d2b77eb3bf8494174f5296356a16b7002fcbc95961ba5cb16b4fe3627d03c7dac8ac03ead71ef488a5e6bfc24c303b4a92cbf9add3b1ec998ffd4a9ab2397b5378b79c37ed7a2d2c465b39b8f40645a74ee19d9744653e873340c41577e6c0bc3ea920d11416f32a8ed083f22faa2330dc52ae17d8faf8c2dd5235a20238362ae6d93d84ab00c4ed0eda5bced726718fffc53fe2068338f95d306c6217c8cd7d2609d86a869e4fe05da0d7233331ca6fa495e6efab1beac02150e0ead5d0c0e5d630c836c7c9e317398a814dc28dddc7e129c938d86e92dd05c35a34633186d1b77e1a80878cf52913805422b3ef9ff38c2225cd76519df8b9b1670b60a700464e04729d3c86ef4c3cdcccdc77529a186dff3d4b9936e3178960fc07603acb9e247a2bf4f39d9316320c88f0ec4cf993b08f0e5bc05be59bc3d5c28dde716a2d70489bd3e3fbed55400f9189ab92069f1d271cca37eb86d3c2946b5395ded0c4516b7690efb2e61ce9fd458766733e8b012a3b1d36183ee5e8c2c9144450ce86090f545414b4d059f74f8cbc442eb254a6ed663113810c58ada52a7e2f967c0817baecf3af661ebc145b02e758e1dc6de738d3c30a30de32832115637701f306757bceb977d7fec6dc72570c88720b7c102b4ec992da961f8ea8d51f327d386638981018c1875e62818961d00fcc3eebff2b24e6603709f35137843db5106a720f2b69e77cb848da1a141a9abaf6bb37f4917a46cc239044a7dbccfb7ac488f146c9408929ab063adc5545abd2da9613d3d90222e93c545917e6992ce0243285b401ce04af218bdb800c93571f1ec2f4c7284537b10a9742c744ef05002c0d08b60a1db40ba8c6e1f0f73052c1ec3072a4419bbd816eb328664f4db5e64d085ea7e37ebf557ffc3f30e7a457fa6c23809473a68de4a16dabb3349cdf5bb43ec7daaec0731e5691fe4973a9c765796c0124043de736ff3210af3a1e58cc6d176e64dfa649fd0a8aec989f9466bfb40e847a436640a19f6e6606b081f9569cc01ca1fce8b87e9adc2c2772f4d060dd70ab01da155227252744328a1586960d9613f476dff3c25f714c894fa247ffb0d8aa0b08b263f842a8d76df35264b70a7e6c086f847aba2baaee9c9fb4a178137dbdd15b6374d5e1f51538aedad1cc5e445d0b5eb9c955b79cbfe35ed76f088397e9254c8ec2d1cbe2ba3cd329e2f972ed26396f85ff682eafd77dbe7d2c05c730b4ab688da2678802a064cdb6b7f70e3fa00620e71134a51482bea3fa0bdd08e584fda1401ada1d97c9c88e1744c057e02a828016e2efb5354008239afc477f507d3408323a7786ce88df6edcf3bf602b983a3d9ecb76311407e2485c51fa1c7048c3ed24a10d8cedb6d1e0a9d669c40e9e84a226c7b40e2b711eccffe9df4fdbaae560c51fc266712fd84b12e8901380b59ca0580240636703bf2bf022906c4c62565ae022e442bf10773b9ab85633efbdc0acdc43e93f886787989ffa55758b77f8a804b1ad79c8895a2ca20c6b165932f48f2c9bf1a8e6a53c49299d91201d07ee6190e48257176b2d96a3240c66730b9dd268d8bd7c0ff198ba2dfbf8fe51b879177ea338e28cb787e1984c6fd40c3576b1e202262fa254290a5485a13b2fe5c60c0f009be384acc42f439f0380de2e59c44c5a52f3c9837fa9ca865bada370efc07865ec4677db9c22204a9ee98e7885b4d4b55a3ca1f57e991a8a0329068556caa88e106e080a2f2609ac406313ac69382badce6514c3fe55d26a26cd34452e5402a8fc957b5ad0a5533fd70fa8ef7cb5f335d78da6e058816a50830a73c1960fba6f0b4811050167a88b611a5d6198fb3fc774df55f2299f252e75305a1c3313929dd6f865118340c54c97930b578229d89d41a5fd94f3acf59b98f5317ca1e34933bc2b8b26a6a526728889426e2194ff94fd48b4385adb5060db2a57d66fb4e653814dbd957c5be54286799ed3592e712921590dbc2c9a833637d8af19da5f655362c1b77955fb331b9fd2be1bce009acf4f44e2f05ddd11513aeda48c94598bf073633dd8a20469026e0b3bad5b0ebd493092d0f6e042307e576aa897657a407b5e435964a7800cd30910a199a6954cf94b9de04c5ca72a842f819625b6ff653b97033a625685d72c115e02e9790b104bf160e2c103769cdf4b51533c9a53e4ecb38714468352015a8cf85c821581f83825cdc131e4fd4d9ed2ef7d7f2a3cf36e9a6cd102ca4de60069549a7a35de5e615867b8ae2239a7220bb3cb126bd3ee72db0e0d3b597394e9c09be51b02c5a4adf96c285d5c9edc21ab8087b6454fdd25617812837005452ecece036e409eecb111abb5e1e53a9610c16b64feb372ec777cfc892566c6c635631e3ee36228d9059e0061012058caeac81e6a51ed27c40854b3a9f7886bc2336f6d44b347cff99082fe55291d7f12c2a1af1be9cef51b042c7165df022dc1bbdb1c81eb448e2b8a03e6225c2e361e4800bf3c76715c01a4f86861592b87df1b20e2a9175375809596293efd6a697cb847ccf9d148d6c801ae2748ce5efa637ce9c05a13aaaf49f53ee8fa4f6b45a5391956672e29e3d91df5882ce77ae7456c8ab7f66490830e98a260450caa65052d0d68290aa89416add0c07e81a88d915684828724c0bccd20fa40d137a40f7891a2cab813b637a4207fffef1261630dcd2c0b6d5fd558681a90471d3132374f2445c686fb8305fce73ca7b0f3acf1782a2982544f16c514d37587a6ad39266dc55b92de991aa79803a055de2bff90fded5ef1ce1aa15e342187669388802144a9c3fe41b03baa666825630a0d1a6032d1e79bc7bd11a0fc7be18d69fca0c4be140c00f863e7a631aeeba2acdc673ee61aa44bcd855da8803505021121b6e2cc2efe53bf37ae7124c7a7573edd912a87e5114fff926adedbdf7965b6e995292010f08fd0739089f065c8e39c6fdb8b8f756b7a4efa5c6ddbeef976bb90c59ac61238b599178c1e22b8735e55f76448b9b8d2a4cfff56a444d09e387acaadaf2127a557959bb97b27aa0842ee57b3a90f8caa367bb4560eec7f8037a3b7415d4b00a609ed93da7e7938fb005012a04e8404e3d346ac9d7ebd7d7f25daf787b4f477c620a6700c3bfd755127c8c5542fa3c0ac95e0266b34367c8906bd8a89940aaffb1fec0903b4506bdd730d9a13fd80da8bbf9f42a75706639f1ea7987bed1c720f613fa18a4037d0c9af43168ebcbd7cad733af290fb11d16db21a3f505ca78e232c6dd5c2e8cab411e73485f16082000a876be839738c7b31dbc963cf47a3d842e9be5c4db9f87ab38def21db88a637329a7cf903a3800b8134e07ee3d900957c25539b9f7401d8ec33d8dc3a812415eae12fb1252de5c2c263e3aa4954b3c4ad5accc4df7102ac1c410d6d7202fbfdb1ca944bfe49e95a32e331be67a55f10b631656242322f3cbe563c1bc6926abd9c1e86b90fff3ca23fdafcef3d773ffe738fec7738b22a1f29866abc8b177e50ddf2e842be8ddf7aa4a4281e72f571b003b68ff0139ee9ed6fd60772fece52c608410c2f71e8410422a053854d08a10565ebb821508843056fb2af8500e2fbed7d2a20ddfabd0b5a84e9676427bbc9a9a3e3d1d95d7688fb1dab7ac2dba26e605513957d2a2fcd96a16575fbeaa3c76cdb347df37d4348545a043d86de28632e892ec981eb54c937a86a64422914824122909955487f293c7a6a5635a2c9b132a75d3302d22914824128994047b4b4b4b4b4b8b0da98523cb308967684a35a6d168341a8d462412894422919278a9977a29962175854add300c8b388647a3d168341a8df64422914824120975c3bd3334a51a93cd9e46a3d168341aed694f7bdad39ef6b4a79d917f2361a6c813e3a34e664921368d46a3d16834ba193d370b8754521dca4f1e9bfa4a6c62139bd8c42636b1e995d8249ba5e59c1e8f7bd7750b8f44cfcdf242cfb37771ba248032346f93a941373325fd39cc24dd50a39a458811cdb1cdd93b09af2ca1c4cee13b1e9dbdc5f08210c17c30bc04709cbd4dcd62cd34885f10575b33cf6e7aeed34635bf68fc68238ba979f48e677173e9689a67ab7534aebf88b4937077d1ca9aa1f98bc2df687fc11d016aa7b07e2d76b84e5245fe0eed244fc73a872e0164be187ebdc1f08088bf6518552208cc6b5c918cb32c4e748c46ae4f4fc7fa45df67ab35aa4f0d5a6f9b50066973b7b51ffbd449da2259305656189273fa765883ab2f5fc3ad9a6601c29f4c8530cdd2a48631cda2c39fc351b30cc09ff7a9597ef0e78d6a96ce9f77aa5972f8f3be691601f8ab2df194f2428ca0e0f0e72acde28357fedcd32c3df873e715f7f75e101f8fbe2f08900d8f5c45c2aa4bdd3fb47da02a0dda2ac57ba0428cf0e02bf09011cee3c929f58c07caa168da877e3edbb40fadf1a134b88ee7a78d767232b50fdde1b312ed436798681f0a001b1c8684413a681f7af2d989f6a13accd0946a8c4ce0857e303121fd30004d7b0300b40f35a19165980d76c25058490910cb2963d63e61361f5af273072d46449ae1d0a4e6c4302c18d46e83360d771abc29cd0f9d9f793aff03c54a580d666a90c78a6950bcb160b8e3704e6cd8d832669d190ded43390f04c56876f0aea8102044303224ce0c8726a61ad425a9d3b60141bb7483360d84a9f1d4d03e749be1ed03a0d64807b5623833340d6acf21001a6f48dd1d277d93301a2dae6f191fed43b547a1456efc405fdfa01f9a3d0a2d72c371d0d103e0860f348339a5344d6636b40fbd3e547ea8f5365070681ebfa2428c0480532208cc07c02b148f6ec33314ef61f3f17e413dd0ea7fa09c5183da3bca9169507b0f54480a92e8c17f3841d97097653fd078c30768af685c32668da9f78f0f3e649c8683a2e8e0b569bedd078add34a8dd2986e2aebd078a9d2866736a96c71c991744c44edfbe7098ee2e250e1cd2298ae3903ffc50bdcdc50695ffa1f033aa55b4432915e5100fb448e51cf5986a16cc06b3e91c271e35deb9e5417b9b9428283c6c2e9173149ae2289b4b0aa80707f5c051f94ea9f340df73f4fddb382e94f5c0fb7a801ca7d42bfa4237b21406817ad80004c0070d0745f10f7d9f656fc3c1d597c7e19f8f475a4d70f3d125ad50f4d2f70df3e3db38288a4b6ac33f9b8b8d0f15c00d17c00d2e0814858ca0d840e17ef850ec77e371f9faa3d277740dca4e83d66cf4ed1e5abb1d68f519b4aa7c8d00a055e584562cf5ed3ad0da99d0caa1d527adb243ab05f3ed9c482b96e4db355a3131be3da34b408cd693af988de5cfe1dbcdc52a52396f45441eaab82096296404d2d0f3b7714eff780852bd7010f81283ec8b27c8beb0fce18b2134652032c6181547b6568ec1124671051ac660e612f0327aa8d443d10b64a9f9686459479b3df6c7208619e6091ba415b58b535ff83d1dccc93584b106d8bc708178be832b9538c390ddbd9a7d76f935c833079f0e29a7cbd5c1326d4b497179ee41cd4b9658b1a482cd252525cb815256cc1cca332f335c87b2c213b8db153b5f17c63453c9346d635a670fd62a4c939d0e1b667d5df8e06e0bf627814028e73339615621fe79a6696fe3854f47a631333384507bc8146adb3c823dda9e705c5c4a4cd64472eacb87b161ccaa3de7a874eacbbfa7a38a96dcae0dcb606fbc1c6b01f086ec71967586ec2a819725d49898b14c69e08d31a92b5262fc0deac4e38941c8e09370b5e5eddd094f4c808223307877a33642a181f70cb182444e36379776712e932b85aaa1b1a159e66e08e365c12a46cb9212bbb66bce4b87cb73ed700d20065906061860a0c112233b7159d9c53fb72c53c6c1419605ee0022786567b49dd1667c37178d972b92396743d45d6f6faefb0cb1ff43e55f3e5bad43c6ceb460d66773e4b9080d18b181245c3e319e3d07afe47015c9d5f745151fd0dc33c0b306b87b498ae018615629a56495aff25baa345d8d55b102d329754a560f66bd91fa1ba91d643aa64e0d0e17744a9d52e7080e17f8e0c5004803203d1dec38603aa5ce111fbc18800f5e3cf760d60ee93b24eefa4673d5b221c3ac1247c7340052c7646476680e70d331756856609a6049c90124d689f4eb92160790c42638187b619e1dfa7870b9cb6ba0a0e25f19ff6a9ea0420b2c94f102f8a78589c86752dbb1a3fdf28bab2f09ee3ee0f91fd7d2f71705d28301dc5910c83a13dc01218257faa5f41d6c49afa4840f73f68c882234c02baf024570179348823b26620948444b39a7c763aa7307037c587eb9c62bd2af6b07c35db8dccb7f86d8fa01cfff80fef2bbb9405fcad00052936c00ee26afb465591ee95bee2cd980ea21a771623097805f67369b65433c84a50de10efad2faf26b714a587fc29dc7dad71c155ee1e58a545e718f79f2e4c9b0eb1ea65b03830f272bd5a0d7e9a283a463f3dc3171c763cc2a616e583796bfbc95aa56aa872546e70c8f12a9c5058ecec94a5962eca0846787387650c25a489edb939c7e39cb66c7e081f24adcf81bbf9c945b0f94df25f62b0e918d5f4ec23c1dec71665ad5079b678779d4fb708a42f656300f131f9bf818b90add30f73ba3c06a5d98524ad99ec74e2ccb25b35c6e59aff497e42830357e16172d8f96d53d07959ff3f2a69ec730aeb64bcf249d62ccfde51dbc1b84aefd457fb4c3ba7f221d328be552aabc455318c4b0e2b4282327b9e39a7b2a55b70bb2ec79cdbcae61eefbf38e34d1c27c2528689ec6bf1214a6cf2a6da39f2136e73887ab1cdffce5330ec72de77028ffc6d235da9ef1467bbce770b88d79ebb1791c1ebae48fbc7197866d3c36fa5ef24bd768fb52fedd78d0f719a66db4f678ff0389e89b5bbe711f886e619b8be5d8e6b2f5e81e8f3bcc33ae662e7d97d8a7433a10f8efe9906ed11f995b7ee4f7f7b36762335f1670b0e2dfbfcfb84f03a25b6eb9dc5c2c97bcadf3bfad07f345df6bb4befcc5afd19dc35fb40671e22f98bf5caecc217d9f5125f6610df2eb189db1825204f2997b0bc4cbb6110e3cba0001240ce8c20980740009240ae84209de0792268cb8c08ef980b780f7de7bef75336cd8b061d793c748c8de7bef3d0a02984dfd06f87117f1cf79e6831041f2ec9d047cb0391bf80717424e10297ebf00229f1cb2f7de7befbdf7b8c83a2b59475e8450dbdddddd85d0ab585529b08a109e70439758c1181fc6c978b9a11966cdf14a96666d12b842af41cba148af2084154c911e0d9b1022a1c1934b5ab1ca60675996f1be0ea7be3c57c9dbfd304e6da26905c2bfce181cb2f7de7bfbdedbf79e11b2c7d5f772fccba13df9743c5fb629a2c5004fc7eb87e49f06b813e21fa7371efdcdb53c1dcf0dd0c34bc87d96db21bffeda09ed467cbbf49516088222dd6a011ca45f202f1a248c9132be5d0963b60adbdddbcb2fbc475425cc2f5a85f8cbdf63815e09f06be215f44b7f69fc6e8773f2eb96bf6639e15e834cb8d7a02ac447cf4ae8be37cb7bcf9f73f572e9259e493b1c2ab98bbe518dbbe81a9ddc45cfe80977d1315a5f1ef3aa25ad343e3aef0ab141986c5ffe7249ebc9cb996d5e67023afe3a5efb77b98d6a54bae6d9d2cc355ab5ce1cf33933bfb29971cb18ad7289128ee65bb6bb5fc2d9348d62f4fda44b705c8920303f5de395cd33ef60ae79766d2ed9ee72e87b3a36aad1f780a8bb8f55cdfb2ae9d1e1efc6435eb42dfaaaea2464a4b758924d6b12dfbed4f215e9d12f8734ab36970bca4b721a77b0a2bc8f03021f4b5e61872f72d9061d06add793f8ecd573435e619883b9048c1c8bb7da5ca0b5fbfa05f14a4a3c289ed2590a8a27c28ab529334babd7bf925faf25ff68fc7aa591d2e550d907da7d6c7381db36f778e55d520647b680c21e29030b23aa6b310448d5544261881a247733b6e4dc6d8131f7ab2aaa1c91e4a136c02bb2a565599665ad8a071e88dd8947c60b43e5089315ccba312fa659a49cb3973da664593731e0820631e082066cc85e4ac531f36e94ac937c61c012387ab0e4462923a3448af90138dac2acd6c93ac15146061ce950d33698f5337af6aa43cd7f46d6098eac930e35386660dee3e9b8cbc11d7be4645f8db5d65b73bad31d3df32ca31eaa32c6dc8f8ec21db3b0abf04a87ab2d1caeaa749dbb0aafac6885ec1b4048d7dd595de6ec2872669657ffacfb4ce5b396cffc3d961dbe9b4b06f37259b6050fc49ec5b3635c6d51c2b35f5c5529c2b34bae764178768babce038f0d368a676fdee5aaafe8e960ef3461d63599d6a5ac6b7ae6d19cc615e9b8b9a9ec9a42c93442b1008552430ad50614e7a60ca8ec06851aa1588042a1501c35b4007593a16eca80ca6e50a6948a02334f8f715986f9e5d945259331f7b11e185cebed5f34aecbdfe672cdd36b4ed0b064303f6099becac2ac70e60561997a5c3578e95573a2b24ccbcdd1d32184594f66467f32c3433e9c793a2a9c79f61d3d472830d85664c89462524fa4526540a5d490d2506a306db553659079e8444cea89542a95d2cae0442a43cd2b66cd4c2835983694a96445a7f41dae2adfad2aeec7fadccf5cd332c728b7616e8fcc35ee387a6f3d382fa3fb11131262af813986754a0f5bf0ecb5c65b2e9895cb071af5cbfda83c46afb8de7a707e2fafb005558f9ba7c30c7333d40b623dfbe55eefe0ebe6d965869adc454e839d4884ec7143ccd717bb2cebea1fedccde5072ecddb4ee4b874304a12ca3d54d8332fab140e69a6b5c1c71d54d83784331466231ab451259a88f6d98b58ab9792aaa185ec11c7ef40aa9888f55be21ded6ab98675ab9a42ff4b658238744a505217c3b8766760c667d2552a31672ac90bd94aac944b1cb0d61141db31573c38a5aa72173ad53cc560d836e58c50883d69e6b319a1419e40f7377777777773bc3aaad242f985612eedabb5b45a5ebdcfb3514b353ddddd68957aa95b292a036b509e00562bd3d835a3f315d9260c909779fca9f147070fafd541c0ffeca9f14a6e8e29f4b12aff0b34b1b998459e4895d5a7123049aaa343dbba482579e145e00f32c679ebdca9a17c29131f2a4f0821f7c95489eaba4a9f2888f2431d4071864a80f3010d986e0f791448aa865969649edc4dd7bbe0f659d9e857a4e7bfeb8faf23d645628ea1b4f02aeaf1e6ae6bc58f2b8fb1001fdd584a18b7f3561a0e25554bacedde3991372fdc4ac92f462898f307cc1ddfbaf92f4ec92c42b75570ebfdccd9f0861eaf04f0a50887e0737aa9d63b840ac26b33c14e9620b53175b6c117a30fb5400fafa724dbcaae4638113849e437f096590beaae4c3a3bdb916357d2518d4fcdb7abc120cb678e62a10fe7625b6048323bf30b0a475037f6f9e7850168bcb2be426777bd113eed60908a1b082210fb92a3924541662be13be971c28010d2ce8020b344dd042086af1d0a7075edcacf3e594f0c11b5168613fff4a23235ff2af349ac2aa50a0f2594704f0ab96b14be041010d46b8c2cd18e63087304290f3063114a0d005183250600614cc0006a1298067f76689801847e0c20934bc808c27841e1454580747e4c00a983184a10b98244f9057c440910220ac41b4050accd04588b3e0a8508529c0c10822992860f1bee0862f687183171069839105ec849757b1f2bce5550aaf4808c550841fd0e007271acc00b362ee20872bcc2d0ccd0633f8c2570fc3d4fe95668085afd32f0e42cfc3195ce117e671271d0bf379b340c9794e2613668af30a845170e1299c7fa51994befa579ac1155f5dc5aa9ec84017e09418f078bce86edeee6ef6a2bb211762c4a1695dc7cbfbcbdd0c9b9092527537c36d5e2ff072ecae2257db2727ed456fdceeeef674332fec877aa8defe26a8a8c488a3ebbc1089fad4a7234736b5292f082144dff4cd0ed921151cc19165b24c2ff5525ee854a7a4b4b6f06c9e0d736b5a6f570f21908ac7ba120b809e058f672b1595ae5b9892b271ab135640909322968b15abe5f5a27b7b3b03027f9f077cae76b9b0d57215669dcf4be59fb002d6d9e71689de1448bf4ba34246aa76f80d77bd0021dc1d41c65a0d1b5bccf5adfd6d3e389071476fdf2a8390b7b53141f768f28b0c6459969d68a69801c984e497d83d07983a6205c2d82d6e902e8fe0210477ecfbb6aaaaadaacda52f67cf7c34cb86fa75e50022b8631f47f00afb12f07dd4d4acb408c12b52f60ab558258b5c5555556dd5dd0dbb827ded6bcee4f95297171d13192211628c11422274775b3664200244c128a946ab3fe6dd556e5e2747bae42a18f333c4e51def5cd2abfc2af31dcce1aae7e3c6d5f951e35e2ca17674e66fa17873d9c11d9c7d79b79457e496d8bfae57bdf4b7f590aec402e6308739bce43e0df8c8714770d7fef21537693c162418d4de7e44b3ec6850fb0a214019df5e414f8c6faff4db3d1e29e796bc1d0f96404edbd67a41356322a223c6ac2b648574d630eb3b1921bb881ab53d7a16291169982f0f23fd0c11dd728bab4b24d20f8f7ecb8d10c21d143d6f12e05005f3c4acef4444058ae0958d711fe4d15dcba639b8633166cdf1fd393a6ba860f6895925a9a69ae18a065911444854c8bc8db1ac1df25047500d3434825776214743435315513f3be4eb7e56664954f8c9f3e6b22524ccfa504b5365111a3002f5e2a701fdebfdcbd54f8ecf0e11c0ffd1dc0eee98a12f850b77b7aa1c3eb8f0713589af7ec0961c1c1ac8241609b3caf7b6f8f5cdae10c9a8a8b461d657aa29af790baf4088e21cd120d654521def18a12232804c477666a7432f9f944954c84c8a79875696a98e68e7898229df2b92a90ff54a525673550cd0c22bfb5c71556a6d59964366d96159d139724152424660d78659e5cbc00af04302610549dab3cc334946c4dd10de2988189955ca6057ea861837cab87133c6185554d1a1a2634567668c31aa88534400490490c47cd6d1fca235e52f976c757b6de23b4bf10eeeb6dac232d6166b0be3bad71e44797922637e76c6615c9df2535efa6ae0a36c008eb7aeca07306e80a962aaf00ae434af275c8d2e3ddb7ce3529151e907a2cf58db8d470e879b4bb519b1691abd7ca32ce26e08778cb946b36a3fc254d1c25bad68ccd20299abca2b3740efd8cc966a73a938eda5da5cd6b34aa43dc3b0e8793986492501844130554c98ad64115a84f0b1c57377af1b63d61695ce89c508ae562ebd48195f9b86575ea98818cfde5870d78c7a8be70e0df3334411d16b97c37b73314283d7d631bcb2db1432bcc271261ac4be7987c3389451dcf1c97730df709731b171371add2f36c59de7b3bda9dad777aa2ddfd22cafa5b6bc74a6914d239b463a6f2eb23d212371c7984dc31d7369d615692be2951d32e2151712af7cd6df573bc54ad3348b117c62ef7831abf6954f9c844fdca1f86639fe823bb6f9ca42d88d6896159d9e574464663e666e93c4ba903d9679790669b57fc2a0f6074b7c84618a187adb2bc9624a2e72c0d8d10e77832db92296b7c505d14246a2bfed01ebf4c73a3b33166b62f1d120f69a0e19f3e4db8918c11d71b55df34ca33ebe989f213e0d804c7c86880ed921b7300ed8cd65471bfbceac154bc32b1c675f2cb6b447b666b768e2e29a58185e61e7d0a5d923ec126175710bc31dbbe456c85ac11d16744bdc9dfc46eb4af1cfa659a49cd3e371ef3a15151fbca239076110c2dd7b08df7bf0555b5567a85e550911f21eb731a7d91ea1575e21296608772921dc89482419c3991512a6aab6aa397e8a6a14ab1cf517a9a7a347ddb00676018970e9d9e114cc34cf5b3cf38e782b38e4d98530887d2984e18e77e5d3c1b0a407f32d10d057767cf374308f786525cc5a53c85e4ab5a4f8f59ae3e11028da7a600f45156ab62fc7af1d8a78857f1dd2f0ca917528c5c2995f874316927e2116bfdbeff9a6708e327e5d0c06a5b843750d663fe71ad5ef3deefa5f08fb4e3d1deb156a2e8abb85a2e66c643177b0955a2db2976d7bd3f7d0a5171179e8f230cbc54106f5be9cccb22c97af3fee96a27077c25d91e8904206555a6f3cd86137759941f685b90934342fc83a5d83ae41d7a086cc6856cc862482a96027c9bc8f5ccc950bc7e1f4b7594d61b63bbdf691183d7bbb33481c7f5b575ae4c7b00ce6d9b11b2cf5ecf28b4dc36c1a84d9cc903141c20760b7680de67561198659feb6ed9bdf327e3ddb3a838a19320d5ab7e8721d914639360d82e1a4501b6662b3d3c486a7654db7e625afab0676c92b46c8e94b464cc6eb9a41c5f38c196d469b41c4dfd6b45fa69e9d43438c67cf68dc3cfb5603a68f6048301b21337236464df690796d9133b1d9dd5c4c9070c74cccfc95868b2261994c4edc99d8d4d8014761625363079223e188bdc60e34ad6b30ab15e3c2f11dfcc090febab7095c218de3d4c0c2ac263364264d62619cf6f76ecef0acf8162dd2d9ed8c9e395dc4889e7de3a03a3073868ce43826ee5044980d86043bcd9069968eb3cf90e9701c530d2ccc8ad9786253eb2535913121424d28cdb337a9f4ec26a6679fe1988e704c9dcda508f65ef45744e421cc33ce8484928289d9cc20c220f66d7389dc0c19cee59ccd650611eed82deb8acb2d8a44a766902e3a43863b131b7e6256ce0c9967e79c78a59ad83c9bbae0d87090f08a34b17941bc7d3ad6258550c49e6d9be47c8d20d0f26188164566be00ffb42062b2a830b3f5146f960dad77b32406d3bffabf2c9ef0c15b253ec02086269730ab7ca52ab2acd3638cd17063f5f65591db5a14778fe7443e7e295de78ee279efbd9599cb7577d3109d783c736a52ae26278449e93a7794e719738cdc9bdd0db518778cf9fc6d44f1f59cc0aa1a32518f65e6e36a2739555a24625a59152d8b43b7b59662aef73684f5350424d2f3da56c4caf2fdf8168c14cd18cfc865ba8f2a1fb35366ca6cb6b06aac1af8d8f21578a8f21a29548d8c9c33d9c88a3f007b539ab72ccb825d13ad86f061b3cc5c025ab4fa6ac90b5523c3359d040b06b1451386593b32160d159647195e894478a549bc12dbaa99432629233d6732cf6ec5183b23d2349b82bbc8d53ecdca8a61185321094975c9ccd27a3f2b833beedc3c119cd414dc8dba66a36c6469157da18bbe9045ad8742b291152339929f599a45db8a67ef5841bab08a6bb5c5a921f8378323267b29158379ee2b9034cdebd86b7bf1cfdb6bdbcc3ce94b00918f79e5f7b6086ccee1fad4b4ff310b885a31e1d9f87dc9f1f7781fbb8836f3d2ba893735f1c6146f6ce24d3c3ddfd4a68937a266b1666662cc4c1ccd449999489a89333316ca42553616aa3a59a80a65a15216eac64255a3669152a69291321549ca543352a6a291325549ca5435cf0e4fcd226d20a959ae9806b14b1b94b449499b1b6953c1489b4a246de4cca4f194bce6aa691a15996ee4319eab06c6e2a4c7e3de344d339ad2e38d6c19d4afef8c85e2995f670b1579e646e6b965aa9b92cd339436b0b4a298e72aa6571469bd6a3e24d7e16856cf571992b47a2e4e48a322902ffdaa6996a6a9790b44e55fa935cd3206b3950e49c8ae2bdb0bc3a49452fadb30ec9aae834b6c0763f2233df39750a603dd7fa512aff3e79b52ce120ca315b82ecf24165798781593b1f41dbc5207fade24964c8b74651b8783611649c3b0064929a5dc8151de5ca05ff485a4945256b1b22a4d0a30cf5710fc19dc09c5845c3c96cb9f69fdbd950a4fbfd08b5f096bb6c29aced6acef8eb8f01b85e9378906adbf8d88231a84bdc462aecb1dccfa163ac7a199b04683e19682494966a24c9489b29866d1b84ce4f9f7987b8865c518a565edcc445535e26ebf45625598e2146a22c886f10451c888f43a555440a0a75f238d367820f64aa3da2cd26032b3461a1e2b3d6e2d37a1989968022f14615231295126a28111d1885244441512b936b4b412c9ac2513b598943a3bd85d2966d57ac88c010de00c663d815268ff6465edca6e97834f8795691be74deec15caee9eef2eef22e9f30efeeeeeef2eef264d6967797774f362273392803288319d7e979431b7a0f54ddd07fcec3eb569c86e5afbaf1300f6fe5d3a99d97dc2f980d218451d910bc79f60f14e3c908e3892a27888036f45381268448420551a8f29750565158d320fe58a0423d7bc5c11a78b2f1aa5631ed15d63c4378d970c7a7afd5cd10a63f1d55543155148f05923c3ba5c7344cf6ea86575e29e6e6d9e3149b00e8ec5519cc823947211f873c47299e1d8a9a05e3aa281e88fd925cad6c202dae563c8022ae564180a22ae6e96057c2acd54d15e3be4034aabfb84e1b251b3a9c4df3eadfa97438736e1e8fe6de7516e98564b368febc4e6ba659342e9b53721669022f243d7b314219ee7ec7d3213d8b5cc418b91feb9667cb9b0bf4c8c58cd6075e74cb651317a9640a351164bf200653c888744c019957ebc8b3570b8be76a59114bcd1263a6f4cccd3d1af71a248aa5cf224d847b05dc78f40e7e28ad37e8926e287b5b8c95473a3b4eccda3d53cb2337a198d52259a46651e14d021b8a22faa980f4cc33ae89cca5bf049dc1a8444c3776452d959a1901000000c315002020100a89c6a3a1309103651f14000f7c924c664a1c48845916e3308a638c21c600420000001043c0d0100d1508dc7ac9d01179fc4056674398e98a52485274f910fbff4b336551b86ba4279a71b316c3a0feff321fcb89f5ecb358c6736b0685e450b37eb5bce7131ab807e1ff4509cab3baba12ed56827fdb4c7e79fd697745035f7d7606babd8ac586f2520b14b553dbf0c5537e016898b559f4e104e928874b9e42e92be0eb81ea041a3ccfab9593d49c732dba0e1d89efcb6ea359e79520823ca0a4f964da930d4558579a454dd5572ffb1b85ad35ec4dd2fe74680f3f20e384644831db7b0bebfc5f79580cc5111ca29c65f89a3301430b66aa69bd4c88263d7beb7191a514e6f68ae53cf9db4808177a765de0560bf93693b31638fdeb1d8359aeeae23466df5364eb3fa63587599acfa929dd8753664e5868f49ce5c6d74cf97fb6cc7ff09033d07c15673434d797a5b52300240ae9d4a1dda6144e165ee51454bfe3f50144b336da653fe1754f43b06271bf9a1fa334855f471de0a0d845cc7f708ebe7ad49ea37c54ed513314a1befba598715392cf03bc7f3bc3c6f15816ad5b8b40a86984fd5929f43999371a1b03d893316ccade10da85cd6b1caa3008789dde09735113c690da9bc1b5ea2f1578a7d9deb6702d377e26a6ba8399433ffcef400a213920614fb7087b38905422bdf0f85663b0ae8d5ebc523d8f77be21ed8b8fb70a6c7094d6332dc23b08d32ed6569419093973a6682c10763cc6eeaee71f474e47aa6d550be90083c0886af60169fd8ad4cc6206359d0a514dcda1696f479774dad0bd1c9377c777671573901f83f53e7837cd9eb6a6c83759b863ba8de2b506cba42ff4cea03d76c272e5276d0a6d539b350913b9a56284c5316c5fb42d28cc6db4e5c88fe30e3ac8dca46dcb1eda033148a83fa2bef33422d5d5be717ba4cc8d13cd5cc0ca32431ddf310817b087724f8a18279dc9fe7bf366c3ada8cea4defbb0c742eb9ba1b1b50edead71c7f67bc444dce3305582c004fe7abf73fd7ae68920cb650dd8a2ec9d05273322e0a2cd438b3208b529776889689205c2b85f3ddd3e7b8151513a46b0b8fbcbab5959892e531d2799624cd6725e05c02209b97562a8295478d4d75c894a38b9275e1d8edf5e7ad15202131017fa9ba71bef8ca2132c43f4e55bb474affb4fada0a599840e88e34bd09f979d9cb19d4b2382f244f53d002ef13f309b71c950c8b4e8dff016c71901b08e716013642e72c9af8afb89c1b6b03e9b9c2e7201000774f88beb81b5441ff36cd299f9e00bc3721e8451132d70a2875c0531aafba8b469f0f46fb2d1c893c9f8a397c02e4d0bb4be59ff8d020029291491b50ca2ff205a2ea1f1c1c7fb027bcc198615e75904a84f8fbd00fd940ed8d8d08b2a169c9b8e4002656d0b0f0bc77163fbd549d216a85f44b930fca6f7a037499e9478c1ed6a5bbd74eb1e38c3d3edf1fcac921137d1bd95f0e63a154a116ca95422370be54e4b8de30103b647bdad05d3865de73fda6fcd65fbe77b03bebebb9c521fa3d2e8be4f3921b0ee69d2b53d1d52919bd6d430810f3ed590699f08fcd38e6e84891ec852e22c02bf87632fae8302ee4833d5ead484bc65505eddad28c8676434ed6f2f2b3334d7ae6826b0755820e71804e69ba94f955173da59f3645437434a1721784d714fac5c73c29cc2282a7062aae157a0d9e4f1f13b41f37f6378f962b2699063005dd838075ee803b67b08acf785e8d0f9c4b06468763c07915683b1cda2feeb56f78cd97bce391b19f2968d037dad82854b0da858ba1d86e8ceaeb673fe0ca218157bda709464a8bf66aa6f672fe880947d27b1bdf9bed9ebbcb7bd4bf676ec6cf1619e896a9d499b6e359135cd9da6bbd090c284d4c9b9b1823f11b264508e1d24d12bc949afd811559c85177f628ff36d9bde7b7ad0104051778ea9939800cf4cd8faba8daad93f11e43a3fef5058060b8c43d21281edbe2716215eaa87ad502dc3a392ded311c52f95614c465ab0b3ce95fcbb4b2fee525af316dd960d694d71b4df1ab93ba70b57afda0614d9716b15e1fd841fe057d593e69f2eeb669713fec2dae20b30174abc16191c40b3e9fe162300dfab41fa114c19a9ac0645094196e768c0abb7af7eb4ee232985164c34679fbc91e1b580bc193539c70c11ef17c28e1b1b9a294d7bb6780533291882956ad61dab8ffa23ca7f3df1f0c3042a5b591bf992c83aa100cf403bb8b4c725194c7d2fccb3d4685a8f606f5f6a8e78cd7a9c5bc28976468945effe906326d7058cca463a9a91b99e0358c14ddb6de8715e9e15d12636340078a9c415a981406f38a1de747384aeebc5f2276c307e82fea753d8757899e6614cdd2ddeae8ab00f790b60f4f6262a73ce339f043a39e9db6b6b784659c08a5c8ddb8d0d117d2cd8fcdbc438a6768c88bbb6aa527e3bdc9d8702b2be96efd0996a282d7f36898ca8b468f756f11dbbd46f117ba08f11df04961101f2d32ae92326a683a304c089402e7b105ac6f8dc6c042c2413d389472686ee0abd8970c575b6a7a300fb8f6575cd00c9869351361c8acc98acfe1e26a34c061437681525dbfed4609aab678cdd1f18836187b64fd8e1ae8eefd76b76d6a58db1b0e2d1e7193cebc4b6a1f9ce5db9f64b2927065b89334d37afdb808fa66cdb8e4728e07413d1fc7e7d925fe0c347963ac2b257a1821a3ddc5a35e84d6ccf64f1202a00496067505e13e787d73782f0161462c6f3625d7d18bb736e8ec36c98bed42b909e2225659133db90244d43f804923691112b37ce2ae75b13920e6bb3cb9af7b4078b34ded96abf95427e0ef3396deca310efc07df9102d48eccb64cacff25e1192c917929c289a610f9dfea7de18102688420fca97777db085c7ca78173db9481abb50ea9c4d7121e1b0cb113dfc3aae48450380e2e9eada3a2f70566d70d8843de6e73e00174722f7409d11e84d6cef2f09cac8b265d9c9d2154c9755e7a9f40e231afeeceedf0f8cb7948b65f6a1a0f90a1dd49107a24b8d60833809e2f42210484fb2ca4588226864cd930c157c13bf4d1270d0f113ee770ed2167ae51a90d7179cccabf5a92a8d0432fccecb40db66798b7a47e3aef87289c8dcfe47413e9f2ad1b2b2b42890a9526ca83a0b8e0bb031812a3e95e735e9c567b28bd3d35cbc9899e067d3cbfe28a2b369132560fc5317f90027d8b9c3c6f24bfbfea9fedf6b2201f83576f276ca6f8b9f79025e892348161d4b53104682e17a66afaa735ccbf8f34ee70aa0cc519b5e46044f4c437f372b3c44523f9731f3654cdc82ea29af02c2a8ec46096315921d581b2573e0a48e824a84fbe21b45f988222a4cfde8a96a01a6a76c22aa82513ed944675003c2eb27a0c663888fe98be637a16089889852264f16bb549e98b0c6626ba80ed94262ad0ed85a4375c3192b78384e4345b8c1b52aa4e2fffd65446422f46f350dd4951a4a720657715d7c2b2ab3bbeb027cf4901f052c53b56148abcfa894ee2f348a05c55c24a6a23580641bf7f6eb6b288679a9cac6d0a02e151216621c4c45e45d614a7b8ab3d2661e78af265d3d2fd5979ead6e676b6deb6a9976fdd9d2bf0c1766c399e0b2fb4a261ca8ed03f545ce71b563aa7f1bef58e984c6cd21d4678e08b98c0b88550b31d1f7989bc07e0e9078601aef360101f7f4eae473f86f7f473cef035b812e9c03c093215e501aff06b9cea7d64f7e05bfe7baea51b7713e667a7b49c197b28fb82b311c63b70a82093e0024a6d66a3a2afe22cef5e6a1079b7c6e029b2ce2b1a488966630c430592807c22187da20eaa70a4bf390ebc02e284da573bd95c42b186844368846d0d45b0f14a385c25f5d06ab09040f7e15f6f8e66266229042783ac09c474d47ad00c59de871759d5d2f8778487d98db0d75afd0895ff7ffa176860f15c6830accaddde0082cec0181a785bc9813e55bff0211608c59ddd630455370119c744012739035a210309ac9f3753a5be87d26d60fc3a52e63cd73a77a8a5b3513a63b40cf9683f98978ef44e4cc04887cec89867d4d3d0a236a192352af24cd4b63eb35dce22b60e895e121bef96ddf369cbdefd3db37cec7f463ce9c7b1f0fc3c4f372a0cc2ab9029a12d44edda7bd33a949b89f75a72170806712bd07d0460667fb795d0e0eb05c36acc9a0adfdef1af710960717716c48dd4b34ad4938ce4483757fb841b406c4062814f67db5dc824323ae869330d0f19e2b31abaeae41c5142332b4c5fa49d012d2ca3bb9684c171c1a4712ce001eaa0b6739978d1b12be9ba495a10070f2fc1c006742611fcd7ddbccddf7d405d7dd51640a70a854bed770b1afc67595fb4104140874626035b3e2c1d708939614f2cc7c1692647a41a2e22fb195a34d07de3a4df366d51ace00ecab57de43616c52f60e82790fd5ef0e7e005e14c84b82e42eab918afca5b4c0585f9bba0e8cb3beb624083ed19abc8b58a79f9bf705bb999b16aaa93dbd23ba3b5403cceb58993dbef259d212e55d0632fea0be811bdbc5002ed7555b653e9acbf142ee7258208d4871d03286a2a291b8cc502e77555554561275e5ca9643c266cc3dd4b07c9e2c62e38528bb72e91c932dcee4c62eb59985fed729b910b0c8ca3aced5885d5399571529331609b0e3422b1f2792223210b7b6d94cab3e8795df36d618230ce7aa204b7b2ed773ad92a95fab6021bdabe07755bc4ade0c0288499a837839b05676314907161e298b27b933b4b9e0301e852eef16b38f4507406089b42fcd068b39385095d9384b4a3d25312458276b6a49441e6b23ca4dd5a7dfa4c5d3c46c9b316b28bb9f26152c0cd132b259679dc2ba950d301a9a1ff2bcbebeafbdf4a4c9f7ec8d88be1a38bf682009aaf46560c3752735d9eb16f5e0d6571707386f014b24da63277abf44c57807e0ac30610f29f8a0f60f706e9182b92e1071e65c100dd839c5bbcd73223e87471ecbec200887207fae5a6976ae30f2bce3b594afee10f7a1ae2e76a1a98406e2c68977e738c958439fc566423ed8223296f578be63a6200469eb0749c8604444c9b0cb5925701140e6f46e0a352a9a39cc3ad05785d06508e238c6aae941d51d10f7fdaf89104c02f9271ad90966e6efe3435e47752a4d86f5d596c5b592b862d52e4bd3a04750ce84d7d6fc0196871cd21ffde7795a37dcc3b2c5c6f98eb938bbae4073207570f426cf052cf686ea893617c8a4ae5b37c1876a222ce755f720c16f5d38b3b492f90f66e6805776e1162b16e3d2fc0d07a9e790718d8e0f32605e2a8e4398df1b830d6757de645f7918f875b27776182b879b64c7446f765ef5ad155522ffc2e1840035ae1fde0ed778c827ac620f27cc89fa76133954c2f58fda3e21c28dcb2dc82b0f1c144dad0273b7f7cf1e2675bf267a3ba80a5f873ba58972aa824fa2b499401047cd6e81dc2b8ef8de8722bdcbae7469f85e3f36db3f4438f20367a13706c0f06f5ba169e20c557da9f3c940a31bd24df490284171866773e0387081e207e278cf66e8e9d7a5ff00d5dc0b41967060c6495819de7c0f071aa28d990002448e9c5f4ee67a5e02ca8f7740e922509d21f28d85ff2ca6f691ccef71dc4f4e134602cadd2e0102426014da2fe82710615f53532e051093288b9225a082db6af33818dc847d1611462e0753824d8341830454fd2363ded04d867e4f0b84d4a116763da865c7fcc4448e461da4324840315985a3a3bbe839a762fa47ffc0a407b4d338601e940a2e22b642b08d428c2dc35adade78484722a5498156c44319a546ea44dcf7d7b92f236a088855de28b2a0875afb331d55d2520725c54e6c9e8b9b905f2e0702cdb53f59e08700c9bea5e247e0ddbbe59148b50215ce611e8205e73e58e2f9b8f857b43f729008b421fee93175cb3263ec022893d4b7ef7e7c862650fd2ed1d17e9c76a731171504f2592b1f83e98a2fcfb501dcd4acf7e3dea4bc0f68949edda32857afe0e18d7e6190efc5379c5fe8741e17636f08085bf0b3a869ac1f288ee091e4aaba60eadb1d524e1edf7b0aa20ecfd77d52eabe982e6828b24c78c8c288d71eacdca9a1cb4b5c10c643ed2e1a7a889fa98f65958280da271ad27c5595d9361076484d1f6b7ada555e0fb6c9d61f2371096407a5ab9300ec4ab0fcb6cc5f8422835623b437dc9b1e9566f4e2c4dd38416db714a0d640c3f3e7bec16ffa3e31f4bc78022f95abfcaa5511e7e4d5f68a3c643ad0f1412408bb1322c869614e9297b1ecb93f02bd63ca137a04658f5a0bac54db38906f69eb1690122b4ffa40b0d690aea7e42a84036147feaa1efe95823275b078749738cd83e22fc902bc9bdbab6c5f0179fda3b6ee587d87588a2cf42f85b30ff98adf51c6d8f6daf60c86bd5d54dd8c1a24dd2604b4daee72695ab3d4ba3c644204d7e45f7f03ad6b1fa4ff30edc8d548989f681deb9e7c398b026e0dea1eb5ecd4e91c0601371d7462ba5658693e4b13f71d478ba621c40e30091d65e1a7620030637250caf393d5981d287553befb053cf25eccdb21145f2467cce842c872f2585e1283547536bec17c9bf7a1a2dddd1833890f209c1f1064e6e66a9e7ff2edbf79eb66e1e73240d6f00aa05f57bdc2601108d9337ce13ec12efb7ac3be611ba8093da8bb59c301376fe1b373c035184638b2e6b7215b92352d75aa12a74e2912b00745eb7506cb24c226e7f618f607fc4112b0ff266b49c021cce81b5d2e21b234d50110823c6cfe74f68f0e0a500571d6dd269cc2abb0123ca971d491c1347856b916a71b2aaf235b28bc9a8d6d9101ca62ecc2b600c5601b2f2f7afb6183f8cbb6ba3ee16f4f5835c1be6aa1ba71673dd8afafa5349512cf2c7057d5a7d337d537063152f1176652c54838e74e626f26a3e406d49289ba747b3bbac6cc7536e865ae3212bb461ce2fd76c3023675e643f61e120be7035c43e2e8f31102728591146942b8a0f3fe674c5495777e6e3c743900686015ea6219afd61048474161df5707a5e9fc9d91f25fb4008e9cf9e1a11e9fac0704e1ee394334f9d02f0a53447bd4b83963c37a5543a19bca3e2c308cad88e26646f4e04e849bba2634853821615e1e78177e4a9350a19e810f1b8e13b049e1e6983813e54421386ad874dd4e509ccc8175eff8e39127702d1db70779427935e2bb06642a56ff60e35770db692b950b24b3b337d6fb522d56a0242e6f057c5bc74941f921b86de59e48d43e1f37d7094d232470a806945fea9224ba5f744919761afea77b8ad3e9a8bf8498e074530c451cf01e079fa7befad8e9728f19c082424ae7688090bd1efa6fa823f3ff99384fab03c25564af82187809825e378cf9e168ce3fb91d8cc2bfc2b4a4aebf01593e20533b665607b702aacbf858737f8e350832359af3187a2ad3abb1315d015906ac6120e46de5d1e5de24a937db0fa174ed89c622382033c368a0aa962669ff4a5341668a63b76850b9653aa6387db81b2600260121db1c921d6c9682c83eea798113e360cda4cb908066a2551b67e7aa880980fd9a25140224cd652978920e3bab26225fd25c9f7bb7ba8ede63f452217c25b43d36bc9dec45c4cfe817c481bab2e5510c9291f81f592424c1312c7c232441892ccdc1570f8bfd51fe3d5ee3a60cf7afb60c6156ac5f43ee9046c58f5346700945c7fea236654d752692cc87b155793bff00a96ad0447d62b107ee8dd6dccbd82a1ca258fc55dcbdd9cd5fa8555627422c4a89dca1e13cb129e7cb902db0e810fc97e0c6027c3aacc55ca437a5ec763a8f15f4823ddef8af604665deb24ce98abae0fa215f0504332753c7a4ed8119e05e2443b23d1d83bebbacf96aa76d147d341929aa1434b2cb6e5a0668b17788817897d814ba1d91b8f0ddc52ff6b8d9fa99b67917ad3826f3a0047287db3b5d93d6c4b267c29cd231bfb8de2b914d63f602f2f1cb55da7b97958c716ac9de256a233662330646412d9354f48bbaeb2418504b177244ccce2dd7d52998bb4595b78a3195eb3cf0698ca5cb4045f11afbc5582d082de85ede3d07982a1097ee55476436e1fa09109b3d6c8080f974a8e93c2025f9d08df79208b316501a4207b55b6e0f620f0e76c06f119326e7460615d40d5886fa4559492f87a709b12b28437065dc2d81e07311cd525f93df84550a3bacd46d3453e84059bd03625c9a1ede6be6b003b42c894048c4344fc54dd1fceae96f905f2d5691222ca00e6f9b57eaf9803104ec0ffc52bdd2e4fdc12f2d2aa13d3e7fe6ae1156532c0129071c0437f718ed1cecd288057a73f350c2b58936950406c5c025b060dd214673d8f58157a228a1b63ec60bb07135099b6600f6b16a20248a8824967c9557e63cf94815ddb305249399237e10f3bfe3b254cd62707cb1b53667c6834efa2ab3cc1b815bd4bec1ad9730e876179de22078d7404230efd470aee0acdd1d6603a8f982096a5aaa5e8ba909eea068bd2a3942f348afbc8300b97d724ef68adda31081b0c4a2d20ca1c0551efd57b756e83fdcb8d2aa34433f7ab6804cbb18c7a4e89ae9c1cc3dc6be8797dc5c88447b7f941083e453d14d5f29b9c9c14fe4a0d70fd136e7528c8d1d2834b7a829111324e43b0da59b354400462c04374522904bc5decf12d1a559f6f0e4273762ecedd0eacda3c17d61fabcb032c52188055774ec3743ad58f7a1572a2509a4e36088708f82a5e0dee8692e4158147d032f7e4f2292b2180997c2002643a7b4a8e42d77c546820f13c50ae721f06e6e61c4c6ea11f9001295516927df5470a5e83079733faafadbd96e33ad94065bde302251b867a95a37b9252f397546c40c6e0100708b8d64a8956e522b08990ee0e2e767d0ae7ce7fea5733448c26f17dd4a0ebcf5fc0bdfe2f793918866e9608552742af2268b01d50cab6f2f45b7c78f70f9754ebedf6ddb3cd939eeaf4934a7a4d1a9bbd22f7dde24563ae2edc121baaccfa0450502fd33ef3875080b763650694a48aefae44dd2686d97d3be3716162edba1e91089ecb7a0e53fbba49e6975a24658aef92ce6c30c91da66666b0a071ecb0d8d22964caedf33e4bbbaa6bb1536aa5758aa53717ebe8ef1cd88974c1c5a69207e9554a93b9cc8790646ce122fbf93c9c9ed95526f9b3391d1922ea30f842a964eed9f58b25abef3e997441eac1020d6e281d17173cd767b849fa2c2893f0b49c55fad99347efa40375e93290c56df2fd2df82a82653bbef91aa761c901f7dfa210354325bfa1d02945d6d4dcd2b822a0732ac4d075782721c0cb2f64f4211dffe1e89b3f1edd907de35853e70808233437ecd1cf559271bff2f18e73b0689c1834d147ba435196bbbd3a6225a7aa8006b50aba193c4a8cb2be68b7e783c51428b89a3e88796d007a7dfef6b5168e59d32b19614633ab1ae2f339bad88694078450d22f7eac131f5322282e70c6a65066e98d7b774408bcb6a7afb483b99676a05ade670db441fdc93695e7afa9e29fec1d336f02a69b436198213b0047db8e8bf544af07bb9d35f6df76317b619565b922ec25414a5c3645877b9bc09e78413b300b09055d62859f1b824ab00cda34ec61f7fb3f477b59a57a46a296eeadf22fc400cef9e303c1f8dae4434e86fe600d0afae09106b3f7772daf57c7995a3e509abda585a24d8e9663803244d2cc40f6f8c53be8cd85a69d2fec22c37817ae7e0af6f2369825d6900afb117fe09276ed7c605aa23faa045f689a8f6183ae3c1d2395cbbf5436b1ff6587bf21221abdd603175683128ab90f7b7fd78b7e99740cd0f3891b35aeb0b016f466b6d02c46ed5e227bbe618ce908656155fe261a69ef05b061ab94e65cf98d7f7103ce476a3826ed71c57dcfc43d9fd8cfa0d91c86b8c1322a586f0d1125c0be11c7597afc235b57ad04c944750e50321fba0e0f4c0034e37dd44631a101c4a88b63a7b9ba524b83cdc5f049c3b88a2ba9e4d0697fea7bf760732d41f07caabcd7be24f82ecd9e17c3275dbfd5ab187a6a952f4cbe7057e27499bc06f986e00155358c017ecbe5110a92b377af09b5fd8905c8037cec2740a23e22a06cf35b45909c80239a0c98c6b3d6033945de404e0aef4aecca8b381865728143ab24a81cf6c3aed42c59cce48b5ce324ad1111d2858c82b7230f3c8a052072225db2a5ce2da56fb5052720ca682fc49afff2a2adeac3f2ca3196ef3c8572d68115eb1c4acd42e9128bf690306271af45a5c29eec4d2df12938e135b63f505e3f8e6cf2d25116f71e1a72bc6113a1c017a8d178e60f50116fdc2fe638ca585857d5e42293f4ef682c3a7b7a4c038b62e48f0cca593067dbffdf92ae8323352b0fac18809e0b3e8c452cb5c99648539ef46c474018a25247647502569147ad28c802becd65a2d56b28bbca218555e9cca5fafc42c68242abd5dc98cb8bc88f9bd85039336c47592dd3cbeadd10f6bef94d2db75cec4888cd9d02f211f264c1093b42d46933721971158ff1ced03356723001f63026e5eb1a278f5ed3915901cb9b0d33f0abaa21560012531819381189780e066b0426ca6a69eb2e21091cef1e45a6882f64cb054fe77fe386f51c2ae1313a81a1a8085990fd9a7a3776119aed0d77202d28326392ce30a1dab63f230b740b1774cc67630a86fcc83be17b3af3131c4da3b87698c2e96eb2e2f8e6e79fcc199972f0e6c1d862b089668a207e02534f65bb1075b08fb51595c946f0143d8f1f4d6ae7ce894d67e5b08a0fafa40e43f4a298ff6231939f6cb6d7b7aea29b43e8e608db68d343558c990979ed93d83f6ff585c3d35deeefb3b0e730e803351aa23e57cc1af2486e7ca4b61fae88b299b13af8f51069d2a70171e254c1ed2b28e53816976487655e1f1d025197c421c817711204ac773057965991a1b24deb9aa4bb3f3a35a1c2acbc869f78511727e7a64a4a8a73fd3156778e014b77cc88314ea0e9c694da126480c62a8beb2df58bbd1cd0db9572a88398c7e04332bee33ec6690371a327a3b568f75d7b0828c655fc590b71bd58bbb3adb05e2b76d860e928c1c03e274c2012993f0d507dcf2fcc281724674c35df98fd2b1d6c377c6ac666c2fbd41ac0fd4700420a96af40a973604511d61456b5ea3290f4481ffd54821aa59d6cc3175b805e531886decf9945b7bbcc609545af5f780740b97ff36606e8b8fe84ae4678f3a6d31b1d7423c49d382ddef4854ebb54040dfe7839c07bc7d9f03a60e34b6c49ca9c7a7a22549932d2840e38798aab893d0430c749166a1fe3e5f15f1656a36a9447d61108eab0dcfe8a892a37d5ab522fb1504d2c91b257047dfb422a48a12baaf7c7871367b16ea2c025ff6cce2861b326f6dbb0c06a0831155188cb068ec811fb48319e4decc1e7f5f02af0d7be3edf6e3d140eb31913aec3837b099814a03ba712f86fdc551efb7278571f0b24e7bba95ac5ca7026a9ee17fc8ca2003d15133ff6b4c2157adeebdd4c70b910fa7ab48d1ef34b2588757247b060d785b153f9014fc90481490fefececaaf3f05ab9f8405c4645b469c93e79cc601a9daf72a3f1fa31b3263d970b493258c850575853864f3e5ea74268d0766f47464b024964a646b3080b6d014e120f39b3fcd86d61326048804938f0d764aec6da3e2ad71e2ae64e7244073e19ee7342fc00ab961afbe8d2efe00ce5b314324dff33c6d4ac1a21bfdfdc22f102dcae8cb18cddc652c1c18b6e00c58500a7f196e248a633e717e76546f26379c843c7e1010418da1272b2137e1cafeb13d83073deaff0331b983628ea093abcf914e99313a4deaea9703a6f26ac6ef8c104b301f04651f9c753e03dee9ab29cbe054f56e25c2076a13d78ddf21cafb8da2e8029afd281d37c1891c9bd5922e38f52d3182ef703b51f9b36b43509dd51a81fd1aaf4e56e8015e2abd5408022603077994b591e6298ad544047afd4cfc29a1ce652491b069391b0910e25a89cab76aada5f6d659d03331cc4cc450d439e60e2cc78d202995baee4031a24ada1547e00907e42cae901d860f767958ab7c2978a5e27140711b8ec4dc4dd7e0a34295abfd71238f254980c3d01c8d2dcb49c3cbf0e3283891730961605476ad0f9ae79b8e3164bfa334449db6e0a24442d4a1d6fb6bf7e294995f84a4c2707a9cb61856444b92c749464dabd374a7065c671c5f9180756b12f8519d66153506eb2a73625afb0b248223d6bf81cf300fd9602e6fd3438b8496598708d156b5a06f0b9334c43de98a3b692da60754ed8c4b97c1407166b5e1aeb6d5cb9e823f695b341758ecaa195ab8aa14ed193528c2b47576efe67a7f643f7d7ac492221fb33231e78f6f52c340891ab9838f1b2bb63eb22331b82f23af318a1a9ef1ae1c94e22eacd0a308bfc6a9edf7bd93a10b32c692dceef9c8d2c17ea82d4b6708e96abd7f98142e1fa5911b7517a63c29f5d5a2646337b23da0d9d5c3ae4aa58d687b8ef4f9ba98b0ec17c86321bfc0cd2488e2c3ea69ca206fdd0125ed189efcd05003cbcfb6fd4f6e6b02f7339a9cd388b67a87d19340f9060109ae5ac04527ce8979a8ac8359ba8f448d75ed3543db4fdeb0bd2365ceb2ae209917fa5fe3c7b9101849e40827d32a262c60d0539eaf17d0ab65486e78bd7f368b29f15bc280d1db86c0019272ddb8a09591006f7e6e50f763c9436d13390a8c049fdd8556945d30ad44b78d41436d5760b18a171e9ae36164d2d7e164b38ae75d5dd93136d2a59cb6e38704eb189a3c12a8b2d76c7fb793b06d0ade6e0e62dd5b105f7f8433aef076462d9eb1a53b989c435688078982e8f1471e2562b048d3bb2113cb5e3c5c7e3f16d617523dfd3250ce588a12f002f7b960fe2e742fa119c9e10c4bbb0560ba50b2ca70bb1329de1cfd97b44bb68315c4dca4755f955103e2203a448ca28f07a024c41f8532e85caacc6bf146415a70756b5119ab5281c0cb44d5bf4b46e3923e1c77b68a39bd9a03ad756fdf2b0eee7e1f37dd2c002b5e4f6ff6495ff61feb25a5b76e5043aabc00f35aefe5c094a39ca696804d505a547238b6d114f175fc07592ee5df2fbea496c16edc53b6b4ffc12b2853f5a80dc7d0cd781c9017c7616147747848cbc6b9aa5da9ae2296a9aaae49b9631914d9bd3d048cd1fced378dedda8d54d04f31ed116087891b48f53ed17aa4477b62dab8a162d86a1e464c8d1229561de3df6490f64cab2eb9524590155a53f7146adc6e6da0cf8cfec0226de526caf2132910b0aab6b59f4135e80f44c5b45ad47f38ed24640d41a389cd8160b05c887f3df727c25d54ecd42e98fd0a1d698c7903b196c410908d3b7a782ebfc7b265ded161ebe19c87fd5bc6739c2e228ca6465925966a148c0d122094d84fb20e674e0c44e6f22fae7d9fa6fa09b62c3b6bfea96024d5361721da118906bb659b38a8f493ffefde7e093d8893b315dc42626eda7ffc1d43fc2ecac77c21dae7dcc3bd7faa88cda0309127c4b13be14418b1383a3066a8c558c983cbfd86c9bc8716fc50f47a3859f3a7f6dccbe1be66759e1f59dfc3af82bd6f08878baa8e06db43db6f2aa3aaedbdba129749b0d76003c8ab177031750ff2c2bdebc611a4b7422cf910ab87aed7c0fa2b185f7d3e3a1059b5620d3eb6794d8a2ad0b2f8be0f0c615288b2eca123b3e0960ba6c517b8fc3e416133231f62fa99fd2259bcf9e116ca427c404e1eba62e22650e60a603e1d20bb13d72995cc02b877e07145a769d13b47a82d5274ef4bff3567389e4bf3377b58304f4dc1e71ce13f82d5f707a71ca877cd01c00eb7be4d2f4f89a18a0de64acb4d168fd50a72cb131d6c4ff3308f9f3aa4f29d67c70e102c8f7cbb83bf2fd8ca67e6fde3509d620c28759ac6ef9377a5784adf43c899cf161a98686c8eb95240ae701cbcdbf0c8da8d8a5c358c9107473ca0c6da6b5781507d303708c02440a9c6bd1485f0d0af1fc04ac6fe1fcf1011d2b605264307e67a0078da234bbee67133421600d817280ecffb27821f270dd63a053d4c63460626abfa8a23f42a18cfcfabec5aafcff992a62116833cf7d28145dd2cb5863930736a798127acff511d0f2c2d8823f07187ffd1235afeda8212261070f8939cebfd8d5bf9d2051cc6edf0d2e1987b35890ed66325e3e16ea0a7c4db4b255e25dae5a9bb25ce50ecd8d06803ff0b32aed8b2bc81289db7b682a85bff98eebf694144b7890006204b021b45c6d928bbd867386438b34e1db50131a57c6dfd2b1fac7d4a793be5b409dff0e27f47ef2d444d916c88c9e05f8d9f51986a5a96a08170275b211367029fbc236656467c6011e86140fe019165db40f83bfef950178db6ae28f50b1afdced3e3c0df86aa4e3e6b0e90e12ed670c43d1ef714c31ad15e1de8c596783b43c911c11e3b569a653f98ccf0423fbe5805641b355b2a4ddf06daefbb343ae23775db442375f4839abd67f7c057850321eacc57b8430d080e708feafba1a4fba134fb3913b7ca138aaafd52bafd9c895a8dd2ece74cdc1abb890d639397180d11196586f5b50873696778739a6e082030401738dbb344a51a6614dcf372d74ecdedc1559fee5248fe4094618c1d50d2181c7c94edab02eb24cdd25b297b21138001907f6ec45a27ce6732461d4f614f2ed58642e5fe69dc1500b5e1d0c5299be450014cc2436c501a10769266c6a3a46227d446e44f18351d2bee4ae74a63de09cc973f036286c1ec9889ff6f236b182bdf016ab39994e70c7c1bdab4e4e5bf20b9ba093518c0a409480a4bf14e77d3384c2af1243e222097086dbed50f883542f9f447d7511a813d1f1749743b779573ca66daa2c0dae9c8fb04013d12c22d997a67262746b32547706c1abb3179fd17ca26680217efd5a6c20768cd1544b379eb2964ce8c3e230173fde20c0c32991d3f5d173543009d0e50418dac0890ce457f2b3de4965991af3379e5101df8599ad089559e6c94fd589e0882f150cc9c2001053a685e00f4e51d12194d787250e79e2a54edc66b5602c4bcf157e1ee96108d1e9b1f78e2f6517d734c95a4fe14492a043cc30f5f0356c23e03d9ecd25f1c6e872e77434d19ee3b75183c949d1fa736e3eee369e21781da3d1381cd479f5d4a8a33150e2584468741a5c4137b2fb37b368268eaba8a3321f0cb5944ec2357add1685060b5c9df834cc7ef481dfcc06a6e1dd4b3a4ac4f42df528303b7a1f42d6447ee427d90154272d24928311541f4fe7d6ac98daeea5281533b585115c078a869303c8ef3918ae12d1012dbcf3883206b49330629ad8db48058f536f77293cbaf5c206f5377b5783b2946d8e77e0a5706e70aec6fb7ec681ea34edc9b8d45b24140be5f1ed864e6f66a3e76d653729e1686be8b7b217224e8c880e727034b5606a0c3b7a9da9d1fa319d01b8d8df64bde0d847bd9f04f3b4960fc0090e5e8d57a24b3b5292645a18bbf169052d2f67878491c39c3e880ef1d3249f4671e607ae4eefa530177120773bf69c088d517df057ed71791d1ccd987e8d011a134cde5a81ba6bd4889742d00ae0b0bc0601973b519619c20a48c924419cab5f9456c7473fcc298b95258529f63bfbcb3835e37d840b91ad503266efc767827a83960ec7416d01503f12f0efa8b4adbe3079c6f444408406c4f13308a6b8a5de310d35e9a32055a8b72a238b1dfa761a8b008805c164001617c05589cd2fddce1f38897282348e0e0d9a813a22d20829fdd31c3b45b1af14136d2a556214fe911203224ac8d9fc5f2a2a8b4bb7230a2bff04a17ea031499fa67cf22ed30fe1de3a602d233a668f1420dd8e64c450d4196bf52f436f631f148192948c11eab012ee08c6094794db611873492c3c23c849dec1d22bb3e8a24233791a1e5b064811ae9183c500632cc6506c4500c48311b21f27a0144a4782a95818b9486fd94cd586c0a0b6fc91de736e6fedf49180188132e0b8be3ee33b0419c303bf9c32da8569d4618bdb0826e22b609ace870fb04592c0cd4d8c387b5981d35bfa29c1bf3479a6e3e56c5ddb18f9f1e1dfd43e5bc4c7abee72388b0147cf1c5f22698f873697ea69fe56e1a667049e69220e4d413efa709f48b51f63b42a4940852baff980a89393d2d18fae5e8475ebf08f62525670f4320fe6dda24549073c4a59b94b85dc828f179531afa0d076cd2a03a43986766ab7fd1f8469193ee26a04115882579070bea566cc99c802e631d7bf01d724d2e522d4bedfad2041333c9c8f0c88432cdcfae8fe2ac64df1416b60e91e72205c99d98a8a05004a78646d7a4b48d83a8892324b3893b26621669cd484447946ab14627ed4be224d29da900d16c7d9cd7e0e80d63f9fd6eec2d8c398b326f4e0097271a62e9937370988d86d3c8d06308bb1f3ce12a8bbd4ddcc843cf2596a0977ea499c4cc38b6992cd19e93c82e44c7a69a5c169eb16d11ccb1854c411654f40d3c5753c1c95b1778ded4331c93783af76b1f46765c2d09597b5c4cc2b33ea5ee2d0d8c77d2d8882cc4f7f1f52913a0f25b4e44d132caf4484390ae238d6a5b34d228c7663df1854f64cdb12d4165f5236329aa4ed8535a7ca212f18c2c24d07854c2dcaeec390451c80fc9e11c1163b952feb1e6726c9934710747db2bacf91d3af2d58220d932ed23f3c605420650caf0c8034537104e932ef768ca63a1afa6740d08b97cbbf03daedf5c1c6ec23a662c0ef0477d1aab617c61bcecf4953346a471c67d1ae06ffa392d30601505736b06be90ab913ffc34389853ccc32da3264535ad5c308424899c30c88761a188782e6ffd3949bae97ad2e9d26d0d0b93b19680c57083cc4518f52fce142da96f41b4e3cae7b44a6fd0bf68aebca4eb5c821ea134f01a4bdb8684a4aa8704bd423ec49738dd0563df0569217fc82c4428707ad4fd8cf07aa7a079da8f106f17614c4c7a16c1c87cc102dad644923b14048bb47e02ebe2fce950f8703cb9630f473069cd662e48f2309be1b9e100cb661870b889da635d7d9143aa4706f22f8ede20bd2403e1ad3fc75e54caa1d797186900fa2fd6b4b45d89f86d54e01157a7b36a0653ae1818044104723466b5aada8a061ae380fd21c389cd25f30815a8dcd3fdd3160a6d66108afdd7241a0e922482ceaae9d07c6a2690b8522c163ba8facbfa08d9ebf19e1e23d509ea2c2819b351ba8c453be5b462cac181f9d0b76baea070ca1f356501b46805e7e805692686a61453bb1b77053396ba613beecdd3ef12e9d72f61399cf768a613ba05a46891b9c3418bea8ab3c38114ebb646ed61848fbc3be2f6079033b964b044123b52a7eba58fd31894903a08eaa13f6c717a97d6355ac692200305d89e2c72b33451364960fff0b7fd714893e97156d5aae677c42211161a15877cf46dae54c72ff40af68006b10cef5c925a857bcb0387946419e918a38bb1def405d6e95b0b346dc1cc015f9fcc27ea22a3aafd12028879b523c01a727d28f994d9ea0a9004077498bb0b8ef4495a0f917fe930c0127e8a92c627965f3d0be13279167ede1fd26cca84df7c7a479716dc9d3377e69c490f3fe72f01d9abef8edfa93eab09a0c9f572607bf7eb4c9b965b9e309e0e60fe123831160313c60a61b85923b79d9cd3421f471807e563d1d3bb347da349b394d36d3eb64c11fb316159f9cb4c560960d188f2351304fa37fbb99733d18c21099baff61d22f633d55ac4405911f3d5daa7c267cb466267658b91ca6b0d38ee2b1e1726f35c95535d5eafec05840458c0e30b4c0b570d4c64b0bdc04cba2ea0ab050d4b26efe3c98e80a5c003ac015977de32312b287237e9736e4cf26688475701853e714e29ed303cc5f5ecaad15a6d74f02ecd15f3eb902a42fc680fb5ba9af7c765afad7a6e1fa07d452b10f304e14cfe85531e998fdc1e3adffd6eae7d484fd8d05c1e6722d0b706c8cf2238df8f8826b91e816761169df8db83ee9b6a8dc2afb57bc456a9fc725948d408cf1afc012d5a975a1637dad3ac6898eed636d228a873de1850697164a723773560b3216070f5fffa5c0b7121930b6816c42d5e38bd502e1984980279932287c8c640ea698f5133b6bccfb9d2d7af55740f5d3f5f6d7ca60a77207f826814700a53988c0b8e43f1d6d5cd1df1355a99c5e0801b1832996771b2d393a241ee664d45e5feb29a12fa180cd0aae4d2cafe76650042a6a95ee4cc39f105b48f1e6b186b722d916d97cd91e2af4375e9af1ef6e9fbe3f3272f5093394d4731922eb7ddfc91cb3921c60782b4e02ffbe4345e85f6ef091d47be22d358b58f4810078aa8436066f67d311c13b9eacb7b18b377c1813678fb820b318223cdc1677b1709cbfac419680eeff201260c66c1a9bad1abccbabb7cc45cd70709b274ddf0a3f174d45c2e803bac54bdd0e4ae858400160b877b12d68280a9d6e66ccd25b18654b8231d61933aec341afcf2e84b69834683c929ebecb5616ad9e98ebc73326909d922375137e59f7c8943d6b21e73c730fc440fd612775ea51031e1d6ea32c148df20522da0cade3a8772c78e19baeb60d4ce0b9aa9a4f3bf21bf0bef2bac2b601ab24841a16084e0127ac306827311457f7958ded0e069d42eea1f05818ef4aafc8ebcd32ed7371c5fe30cbb00fd1118b40abc463384028358d24003a11ffb041864d94d91e4fcaa6bc520dce25c89751cc40056568bdaf01a68943e7aa6f02d748a39ee881e17a64d778a0abaa20c34fc138f5b478411b2785cd590283eae6873bbcac17d73ffcb178106632b605a58cc6b862a82961de13f7e2134b68b64b453e0d40e750d0945f0fd91c6363b3747068cff257f5b3eadf921f63ce1e87ba20e62403792af1542b966f599aca838a6bf4970ec2afa0a3ad4130872c266ffc2eb78762851f18128f0d6a64d353f8a0fc2531b7cfd755c241299f06c302060f4fc95bda5b84fad5a70b04ed6680607c6f81ed896130f6e6f246a79ef701d617c9fc8055a41d8814a85e84a8e40d8be2ffbc1ec0a97c54ba573d7f063fccc5e576d9de69e201aef88afd9cfd8efe7905ce6f1b512d8abb54aeca3b590371f3c408291252fc50cbc6c4a694d4e36037ec71a6916af70fff58d22be0f70d9755e33482f6246c757df36e02d80a5c2586486d1e0181892d3f0223ec48fe9587200cf366f977ef03566dc65ac06abd91e4b991a0040df93b62fd85ca1b187c200493b6d7c25b660d57cd1d350a99a04e41d7a8cde3d05c954065a3d04b132fd5a9041e129016e46734807e2e84b276b66ab238575caca6a638a26adb6ae488b92f84282cbc75730009483785a596c29bbad7c26653af77f276a12d30b2db8492ff900bfeaa7c2bb46ccac8a354addb763ef927226f6f6f087a369c7b8402a45ccb1e26ed9d6a5f8c70c33c2d593300c5299f28f63f1dde9c5856d4de1f8f0b833a643a7e6986814c275ec12d72546ca20395cc79cb659e12d46200500a424e384258b19f9ee5596db082a685e3bbadb2ef910c93327c1211c7fa766ebcb619604fdc954c200114d2e4159cd767b83b2c30ab971638a9d8582eb0d76febe22c71def299cd7fbb451ecdc7a41e5680f542d95dc9e650b07370477b1425eaa72890a6502df6cd78187c231ee986de65fc1e912c3e4490a08249aaf5414c52f01afe90d809f979dd3c6df03cc85e8222631227c8c30a28f532f2a6462c09a85e36e26c85d217d41e17d4fb676834d988461c28e6820b24a07bb403d1761a3f10bb835a2d74f935ee9ff8251e6414128bfa00398d5021f4d3df81f173264bc4fb6f74aa1ada4af77a00abbf3e83ddf3dc934f50cb9dcb731fef897b3f6a08f00b538582bdfa0b531a322be0e2c308378d868182a0a109a623c11ac923e61e75853d5e72587c70a532efef8cb1811f29ff75654836e247a8187a6ee92300df832e205b1bc87074a733196f60ce628e53fe507be5a04dca646ba164a4a31a060002fc34667a2316f493a306f6edadbf3bfe66b83cfbc694968ec0e34cf78cca9f66633c3d91072133c587f8a08744788a45e06ab13b271b113d71b90609d33a64984c6c32e403f8c0c4dcfcbac23701244612e0b967b01db3b87af8c9a618840e8347de3aca008fa30602c14374aa4a47d679f480e35b4480ced6cf025f9eb0d5f973f4b9b034650db121ef4fe0f5e47881d28a2218208f6dda5c0b1d00112b49503cedff7157504222dce97cba2dca0e6fdfe0e4667dda14e0019d78d3035111e9b75409d3362a09b83ca44647cdc09e9c588d0fa3d9039428e022bc85954f6c52ae0478210b59b455c3a1804443820574fef1cc0563476fa00281c7820ada20589206dd14a4d90b9684d5590c468f95c90cf68e98cbfd329faca3698b7fd6489b67544dd78165ab0ccc24cc4f9e6d48481b0ce0409ea9f1121ea53cb7e04270514cead38ca3f21e4a32d4b58e96b51ae624cb7826d88099d408b7259949b624c1cdb278be48abc7b91d7dc00933395cd27950fe26c0a570baaa3b346768c5e350a83a468ceaa63d6cc727fbf63a3a96ea82f41c4d33b24db089d08582897e278d7beb08fa91ed9b932a95ea068c86cf3f7c21a00d23dd2cf3cfb4cb3cd7923e594c00d54250102335f9d27d0ed9937a00d1d3f10e69b5b31e6d7d8dc8747905587cf340d1ec4e3c24c49dc70aeafc71b84f10214ccb9782e3dccac4364f5ca90d91082e9dcb81c9335077279709faeda3bc3acf7b6f493f5cc24dd345ded056f46f0e65d8a672cc25413076381f9df6d95c38f42c54f8297c085232b6bd9bad62d6cec4daabf90d0e93aec7ed60657201c0ef51104296033fa7998894fb65a89fff1b05a85685c6607421a2f09e1a62499b6d1da83b56b9e35a1b46e41039b990149fd2224e4dc476542ae5ca7997be803a2a0ac5a83b008608a002297adb39bf8479c9e0b8cc88ef9f120bfc06004cec94f3310c741b175030dbf2e9c101ef49e2ad37993e83ee3187cf9c7e62d4c2640146941fb9a2e7548253572eea34146dea844dec3350d1aaf4dde4f03bf4538871f10d133eb034fcd546cab89b94ced3297afe201a298526b4417e8fd0be16b6798b8078fe694e587a87ed08b1678b2d50d8b018bd674addffbacf4a0cbd1221d6e2947c36289524c946ccdc1658e8b001e2cbcc4a3f7efedb5a3907eccae4e58ccd6f1855d11edb819cbe699cbe475f654733e917576ddec68e9b361cdf73fe7b70a144fb7b62696421ff1e7832803d5c54f6534110730e1e91c384527502a4b3d09901ff89c076a173a7be2c677927c9b23e18e8f5e1fee94ed30cd41a1b88ceeab37f504b092ab4d999462d314e015db475602f93a23681c78517a346196d42f08efcffca2f7e49ef1eba989cf13d546e1897d5ed9f177ed4999ac15695dbe59d948ca5d7f76e5b191d5f9434f2f2a40d97076b475152994e133d0d40f01e90ecd7700e5294e28b850f078db3a6dcebb0712e43ff28b3f91ce9d23e0e578c2e822f606e5ad90f0bb09e990eaacd944b6a1783ecf741ac30d63f9c71c003f182e817e9f0741915519c453c9b6d66954ac37be9ea7a0c18b94a62de7210c6151acdf09cb81bcab44cae0f8bfc6d5e88fed59a753b38c0ae5dfafa990aab4820b3b8e34ceae6d6c6792a7b8da5949425cb03eb50d10d96d82faa2a7d8d7d6eabe072bccbf7bc8093397d64ac59041d0c3e482b9e8b621fcd40f3b2e3a91d335808a3c0b54a188669976eeaf6b45153da1cbb92c66824c5ba6975849f88d5cf9653560390efd0c5edd2e228b1653079658766a7a7d848cfede2391548d5b56b27f6668dcc3e383e52e561b2fd5b57dced45eb5ede410eeab6c007f67aa82feacb7ac58816bf6f25411a999d020c1f71fe9557a8b6738624dee0994e1a59dfcaca90cf6b3ffcafa2421fc3a3ce295f874e27303398147f1054d6bcbed8492b8d46fb55a00755414277c2e0fa53e0931ad18148d04231a49f18912cbf3c6bb260b9d02b18d6fc697088c5d09bc1767d3dff491220173efb2b8d52a2eb9804b3c8d6a8f10e0b4623659263fad4423ec03ec4b24bdfa8dadf9dd8b3f6310c1b78ebefa788e041d160682634362d688697613b207e88dbaaf733189b2f9c0eb85a07ff58355def7d7e1492c6400b1917f70a077e70cf2c34db1314c4013b3f600f3310d3669c3956b6a14e45b20b1f0630aca194806b5d69bf4ca07dad282f1cec27a42dc2491b88b9526d0cc5961df8bbb742800a5d6f31656d192eea385752bd95c4a0b6ee80209bbe1e6f8d22b1e15e3b92a7739ff3b8f7298214696067f53e81890328acef21b254ec33d34707231d5c74cd5fc9d0d30b83540bbe8d286bd640343d64de907c0ecf68765449fb77612feeceaf361f08cedac63fc2944de701dd1edd27d6d688683746a144f30c686e1cfde3b0e1001f191edffdff9d95e528ae281750c2806fbb324ce732c8fc2984c9c0f345c98a0e030fd726b973acdf73772f6bdda20a03001562485f869d163f23f7a52d4ebb3040bd580074564e37f7bf8c884f4ba60ad34d9eb64f4ed2f1417c9c60d0eea66985c61892486019fa6dd10591de84b0118eb928555f3a7a533fd8c38ea4ec693a253f3f561011270470e34ce604a5328470ae1310bda8f89f9b105079942968ce3b8a5c6b81750bb2c617302934fe90ce7633f988f5da6c2500f6f4376e336220366c48174563a8c12a42c1247b0ce43e2291abb8a1621219218a29898f705cb2eb2b89adcd68b5c592719b633fba79e3575ecb5c95c7b6faa2e2d424663d48211a66a6e60f64af079327b213984ce15e2c195e9dd7a1b8eeea47cc32ba737aad86c7cc4c29f22c2a875d6d59b8d3edb80d91580e1e6ded51b02bde875cf6e4400c7e1e7acd43d9607607cf85a4b8d788f788c441112a7ca1a5d384f263d12fd900d46b7e95b640ec3486ca78b64cca2af1177d8e646c7f57b662eacc080f9676fc586d709cf6ef505d8eda923a10deae67bf73ca277dc7a53c5f8c346d796e2c70442ceb3919505c33c496540496cd9a802da79356a07ee50aee6fe39b36986300a29fac4470fd9b430754cb28828869f8b5fabaa067d5475bc5402a673c27c394924a0becf05ae6e018ea327533b4292e42d7d1f8c90ab79505ddb229ccafed795732a00ab9056de9d4965fc7c792b889577c35802a3b455f5369e0f093dddef9c3a31052976c34d2a5f49f4874cb97e0ca8aa3478ed08619b24acc21a70d01e5c13e966a1fc42c53f61b5bc233312e5696c4bacd2336d9e16969e83c93eedbb8ed6e8646c9737cb8dbc2043a4989939f94041a69c2fe805f4b49b71c6da9a5f4d6a15a3b8abb54ca2c81d5c1ff5b7027743f6543ff22b8a71bbaa953f8ffced711b2844c6c7b5df759736f4a070b27a59fe6d8bab85db0f20ec1a0ab3a470d3d09de4ec93e2e06cfa4858cc79a0cb604bf9daec60152630b8bfa9160b4477fdddacf96da91c60c22bc952a07f027c7b6405f6f2ae9b1a6301b78404d70a07ba205ea35c5d39e48238a4c9fd11de73a2a36e68348a88e522ccf866ec758955134107c40b916f9365ab141a54cfce2e54c42d3eb5ead65a8c4f01b00cf6315f9e5cc763bdade00b0dc381cb68d0e5bd5b73e5b2350352d5bcac295483a611000614640092dba3a12f515d6112bd6d0e80cb1e8afcde7133087c7919fbf5b745159bcc85f86efdfee88f654715b02cf65aa26338639e2d4a9c3f1e35dd4aeb178b336a1abbeb254332ea50d7fb97d8679464d157cf09a8e97b227e9aaa971e3fc3a769602cfcdd93a9a7695d9e2680f5a714e1dfa4d3342da7a9b48dee74f819364d5f6fb290a9697ab0a8739fef9b02eb4d314ddfc1340956d3fd10bbb0cab99f6277fd6428ef9b347ebdb054b4348d5e596755b034995ea38475a56983ac00aa374f4165091bb7f964ab0c4d637047e90895a6e83137f42a79d6ed50c514bce047a610509afac63b695ad138aa4bad490faa1e2a5308264dba15a1a4a96e239034e906d248532901c8cbc442f596c6dfaadf82bea37b88a3e18c6c8ac798eec811e49ceaed92d3c972d30fdcee0978f8c687a48b661a1e5483b655e41789a4c3220efa5398c4292df02bc5fdef8f4ec8c933677e240d4fc6bc3eb1c3367c15022a58a1405c80986dd30191c51ac0d9893b063a912522e39197c2ab848cbd4cb80b5902c24a6c46920de31c9f1de555bb8c6f79b79914728bcfb3d1bdfb1c8669b62b16c6dea8e32ec7b96a81b60159bc04f5a909428099c47713b2e59629a59464f103e103ed032f7ad3ab3c8dddf93276a3bb297447745bb4549bdab39467d162821cab3335cec92c15a7bde7ec74464c9c98ded499b0bd1bd49e9dbef15091d68b402f7ad18b340c10d50b38ad4dd4b4f842302bf645f52e29a06ce940a26e27a51083580f7a507f9e871e1ee4c383665006d592973ae57976aac45e11f9afff95f43850f84ff84394ff06e5a74179fef200e89b9bf7024ed0be801c2f59ce7b1f1653cb4be8ffff493fcabe781e1e0b9eef82f7c1d3f2132ce72b12d27a50e9419a0883bc0ccfc373866883d4a1f4d537f6ed699af6f52bb69d11a9423f1ab912a4ffe8471d14791b27caf36b3cf7a695273d0e0775dd75d75d77dd75d75d778f3da604f9a3d18f7e54853221a840ffffffffffff1ba9f9422e8ba1ac165ce0dcc60d2e7e96d2e2b9e8a96275fcd49f8fc1c3a9871365ee331f71df69d2444ca436261d41e04e250cc2f3b7e742eb8fc3d7f88941b8fe3814cfc3330aca93e366f0ecb960caa7f7c133fb2cd49f566116f19086be8fcf3e8ba0e70b0eb84823ca88a228aa7620ada8454ddb360cc3b0ad468988240bd1d04e30ecc444e3ce8ad09d2addd376202dcc463591b6f52762d926c2235a7fa80ea489300cc3302e894b4483243482551999c9beb7d7f5f839f47e8ebb4769fa8e3ba72931f0c2c20cf9d1e3014c9838af8058563894b68de4b184bcaa6b27285ed575711c8944faeb49703ce846a9fb11930a8934dab66ddbb6fe78ddb66ddb6aadb56edb56b7bad5adbaaacb6309f932992aba2226351951ed4fdc4675239148ae95540481296164605030214c283e21ad18c2c4501cc5d172b22c1bd930d94a34518d8a926551464489a1d013d2c27098d028c4f52782fae2e84e4ca83f71843d3b49e886765a988dae09dd10dd9d296419a654e9a08412180e83c160aa91b4e28689db2872342399dcdd37e388124f626de658df07cf6a242d4cc5d4fe444cc54494330da66e946796615c55038914a2282a96d08e2411e34e5311834548cbb38d31fbe93b7bd32bae827b77777777774fefa6a89edb293d77bbfbc122e484b37b466c678c523e8cf6f48d3f507f3a853d3d7b82deb2f89edf3d7dd31d77ba9b8519325431d173a96f366437c4d4cbccccccccccb397994fccd00597d78295d990f83a73763a314ae9f150083442f6b4622996fad3a7147aa74a28544a91c18ec23828f786b8d26436b32a6b0fc3cd8654597fbc72d07366e4c87650153574e7ec745660c856a16fe1e6855459e6a02aabb2ec7b27104b2523e44e2b032a519e19507f62d61e0651ae32ca71853ba15006ebb0e1f25af80fa18ee8d8bb73efaea288f40a283bb99c3a425aadd22192add25d09c600eb6e9493da355233ba489bbaeb957577f74ac281c29d8446374434284f7f5beb6e97509e24ecc1b81328508bd69f2759300b8925bbfae3e13e2d0dbcfae3c1715945151ef279ae9dd657baf3f275aff7b1135658df84e15851d27ed272e2b278082d21e8810baf086d10424862d829c07371009e9de5589dc3008fc503e999a1705a6f7b41797207be0fc8f1118723929a715a4ef2248ca041784a3c1fc2fbb8a83da47de136fc0792e80912181cc074773bef83bde7c52ffbd6bbe3491d17d9701be8fb81b2890807b741e96e1c853bd8fbc868276e161521a4cf9ece59662164cf5d4e9fb8134427ad588a1e9dec9440a242428a400821a4667bab3884eeefbdf7de7bef3d7ffededb8e3b2abb9c078293437ef60a774e2a2358a6d57fd4de0c4f86583d0f4f2d6a9cf83ffa1f752f62e3548333ad907e343ab5cacf8ba44142f13eae11f1a866064d06cb473928a770e7798ce7e1e93c440f0a05e89a6f46a30b14164ba422f5ff98f7eeeeeeeeee4eef5d4befeeeeb6a58ad4a5eb6abdd4cbc4d44ccdd40ce6d26dd9bc90ee62b5bb14b6b332425add3df622e7353c8d465d2876470e1036840d2b22feff971bc2f79ebf363dde8a8805f9e072f161a4fb084738c2105d822e418bfeffdf53dcddff537c902d9256f4eeee1cb2a7ef2916a12bac415a71ebd3d6595883f41112eeb4a0d7dbdbdbbbd3fb1d577bb6e3da2885f4939fb4135fc9bcc34c402396aa59348bd61fdfb66ddbb6ad230769f909c4206fee7c8cba0a83f47c11ba8ec2b42b77d64fe8f67beff5bfd76dd12c9a45db2cda66d1368b56992a135d29a4d571994896775c166df3939ffce49b8c8179e75d4511598deef495cde89ed0bde8f63605bb5e7191eede07a4602c7167230ef6ec849b14bab1144b1d42488a5addc5d273c1744bfd711293d22e16a3941cc771cced942176efc3871063bafec4956a4456227467f73e767a2821bdebfae318d6611db73346aefac189789e9d48c4253c07dd90733e48cbbbaeb1dec76993a6eb30e70e5254e1bf7777777777fbf107ce0ec342daf3811cafedd959fbb35548cee039463106f9d9d3a7ef6e0686768c63fd711e7aa03b5d8402ba93395e57a4d55d770cf213c4203eb7a6f05d2b66790145518f7a2ef47cb3da502ad4893b554555b1dac411f65cd52565202d6a27b5cb7177a7dea3dea462a42245518ff2f7dcf7bdb79c71808552271948eb723af5872a75cf93e9a26d7567318287093c4cd0831eac604f1f21af4b4483648499998f90965fd77541263c15deabbabbbbbbbb7bbe6a9bdf298aa2a859f15c0b534b658181ea18aaff87f3e7fbef8e01b394be59cddd545bedeeabe67bd5e3b4a9aaaaaaea6e07547339560b175a58516d380381a67137bd2f537134d0f4bb9bdab4a9eb4c64152058620969f5e954691405618c52c6100f15c9fe22f77e8d549b3755932b8e8396c50acc60a6d137008f70058c210c21e68839dcdd3d2e01949d5c24bb4bb8eceeeeee12d8238a28f8849982e39a68e237e514295855551561d5847cefc33f5230e59459f9ff7f26e4e3cee54ca4984e940dde2b711c07435659957995790773aeb91b9d0dd2e9454a291c47e2388ee3b8feb8c6711cc7699ad614c7711aa7711a0761c88c88cba2286e71143952c571c7338ecb54cc88b1ab381a855cb8860ddaf38d465e6973e7b9b0a44fae0c62e158313ac5791bba330d1fc37efb1a5fd23d9fa4fb43b4fb35da3dbfe37c8e3d174cfbbf8a9b065c3a36d94184b47e64c5151206b17cf4a2e7220b757d8c851ec8150631f5c76b84399ea7a1a0dd2337bd8f36755d791f8d3db6ec01d8191c4830c762c8dab5bfb7bbbbbbbbbbb7f6767777773f2c86ac582814c2300cdbde8e333adc999929d1c321ff72fd5fae8be842e3427209d19d97910b76a9171997ec6242773e9dd4ba889e8beda06f068c1a50eb9255f4cd2801825a97eb06d2a70278ae89029610e750a2f6ec8c38e4e562ea389d1451c4b28906b51d96854813f5a755de9aa815894c2a345806730ae57e7c62c2ebda0ecba267d4fad3dac94bde878b5c946d8ca2460d4a853a45212dbfa8d38b5150272aa2400a29286aabb8bdbdbd3edd247bfa7750c4468dddddddddddaeebbaaed65a6b4de10e53bbeb61923d1a65586032c1cc440562292778c1920e8abc3599b8a3a2e53261fd5a31a40bc972592c2a3a32988b4545470673b1643019cc65496b3ac1cb843989bbdb52bbdad5ae3d4ad2a765f6b4ded49f1fb56767bf900f7567b26c7af3a3d18fdef4a68a8bace20755e5bbbbbefebeeb4104c9ccbcbbcccccccccc3c97b9626666aee0bb255a2e8bb9ccd9e974570f636f134176678e68a2892492d04ada45856f886faca9a1bd79211427dd7d378fbabbf3724e79c61f9ca8f4bd8fbbd3cd2c652e5139628cefdffdf031dcf919b9436960a918341ee3c6a089ddbd17a0716edcc4a0a11fe772ac16715254e48e06961383867e633ab8847ceda9a147dd30ba2f0d23885a6bad75d44174f76e13bbbddd9f225f7b4870ea8812fa9047898f3ccf4e925862326a8ebfeeeeeeeeee7edb3268a3b027c49d0ebd8f9e1e25d2e7ce10d71f1f21e13893904a94ee27efa34fd5129ca8b5d65a4f27ee7838213b7c324110415842b0c20a49100744811cdd094f60088ee00d28823438735dd7e55766b3217ef5c74591f31c0b472432993ecb644ef090b3d3e2040fa9991dba1d39df931cf96a08144266e0f5daa240df044720f6da6baf993ec66b6e7acd4daf99e85a3044d7022b1cd1d55e73116bdef4939f2dbddbdd99cd0bf14be497c82fd13581d7da2384cc4c0b560b0679789f37b5a73e174bb7f2082fbc70bdf082c78a006860c8a963d0e9c495432ce28d47ccbdd75a6bad9b81d33b9dde290002c0a0a0c2966aadb5d617388ee338ae6badb5d69a820a2c6016f4de8a76dbd1724bda527396655996ed96b6b4a52d3d16b28ccb38634e87937513e47c9d16f391e87befc45c07a7311c4b5a38966672382da8c5f3b2c1602f06928afda9422a80d299518203fa98632d7d0c084188f546b4e7049e8b7da15db0210753ec70e2c1076a0801825a92360268cfd782419a63c5f048342221db5a81ae46094079c3e107fa6e509e9a18f40981be8da409340194b94315c0b1b17fefbddf44aa9d8ab2338fef13e7e35870ba6f9e54d1a23dcf7a81bed9c2aff02b301c0bce869382d077c2a900fe6f28e6fb075be3bf4c83f7de7b2d5e785b675be31ccbddfd31c7d2d07f9e37dfff9df2b4fcdfd793b8ecb3bce7ef79470b9efb6bde7d4f45470bdc7be3dc79d8f1b8f3352ecfdbbda924c89d2fce903bfd018082e578476ef7e6089d62c0272f8b37b793f0fdde2b71b944ee661b94034cdffb6815e8533984958d280798f6e3c4cbff05625ee63de8fea63721811bf137e3ef23ea4002377ae166f621611f8b6ffa733b407bee94c00d4a055da2cf442f2af657d068b8dda9bb2fec522b4137b04e9de3580e18a4db7b8594ce209607debee0173e1d079581a19f896e809fe3d8494620360bf7a639d0fd38b6fbe286fdb4680f83b4d881b6b0408bdf178f233663b760c33512e24f2317b00250353903432535386431aed0ac2057dc50a925270c2208351f0d7f87d3b9aa2a2472506b5e4034a8608690157d1b0d4da8302e927cfa361824b8416bcfa3e0fbd285210475fa361b88f012c429e214de0066fabdf1bacbbbbe7119d2f2aa522b05c4ffff93a08a4a45921d1172c821c36d24d7755dd7b58d8c6cec2b35dc4463e42557e1fcc6b67577378661188661dd5467ba732499da35544575aba35a6d23dbc8b661194e050d4e380104204c211f779e9031648ccc0d3237e8d8286aabd8d5c6ddedddededdd1b2497712755d6b3bbdb779a3e7b13954ee92ea1ddbda65e8cf6d59edecb45ddbdbb73763aaf4dbbddbd5767ee2ed79ee67ac21b3a3227abcafa13e34a1491231a12da1d19ed9939f52772ede9498a2569d29c689f2c17ed99829bdcb4eda28ecd4304a112120cd36a6f23b5921c070a77121add10d1a8b584045b4dfa5c0dab23b562a1384465a3b2914412223083191c411bd08437d628d7a05c29bfe55dcfdac3eb597f7cd416ccc839a3ae3b4145470673828a283ba426a39998d9b15a74643a381166d3fa50f498d60acadfc9f953639068498d7f0feebf035fa83dd46028f43e38d4d5841e1b1045bdc7cb3b9d91f408b5470869819f3d173ac01206696842795ab0febc09a33c2d208b085b2e06c9a2077fd71f151cd7e1c5a03c3baa5fd49f179275975ea8946eb8e510b2490000d3160000200c0885436381244e65c57c14000c587844724e4e30938642a128c76110064110a30c21c410608c21c6284464c60100a85947ab21f5ae119d62b3ab6897f13768bdfff6f108a8354b9a4763eca3709d27f0689dd0f571529a8b2ad0e5a54b81952e7f8269703d2828de0b70f5241098c76506c69189028b3687cad5f71d38f990e4d7af3a988938080dba3a9734bed9373dc639e3f498d4f5f438a616ea316d61711853b1fcd902ba708aa4912b1019b69d9971858a8d47c9248710599aacf5320376a6e302c52b53719bfa8452469e2eb6050f0d9d8ba128d4a5ec16b36a6d0780ab0536ab457a7e68377e940f295da8ecfb4539c47af6918319ed719edb19273aece21cb9469c120cc5855238aa5d7486e6b9b3ef0d1c1665e2d4af450f5d28fa4019e173f487cbd8308f3b4bd39eaa7353adef44f69864cb04e60cb95ec4fe182f3b70bc1410e8ad03135b705931ed71fd313371d11e5f931f507da0d80ba1675387ea0d8ada900c45b1bca1f79bc04b84858f85b81478ebc7853cd2078ef5c8a7a8055be0ed4c121dc6d003a57fc376815c34ca8516d7886eb1393b974dc9a88b2d804554f24a040283358b313fa673130cc6a9d37bac99d060b0c9f2c4f411eee11f70208ed936eabaa847fd0e325172bdea3ef3602c4637e385ce2f03ad9c1c014082ed47c5a102ee46601430b453c1d2e9c3cbc71e01e7b37cfd3b7200272566d37e6a8d968ea66ee1857c598146c8a67c57bf7b84af7e3153c3faf53a21373e8395f58bb254b28dec93c7c4e1f1406bbfe722bd300f59a21417d9e3d3fdc570439ebf99d297fda95d56c3502e769d4e6f292840b582b6bca1b22b06247bef1d79e7bb712096d8f7d02ba02d41847b88e35509e59252774cec792f2c385f74671d8818f29c59f15238a5841155f4a5bc19b2752331a137922bb5cbd01df755f7b8aae2130583cb059b71e33d864cf7115d3d67c47809d45917d10b2ae4825e168479f5f1bb9ddfc8a1d3583bf0d094c93eb74022125097c75cc7a590e7da6b16571501f34f87b784d4aa3a9a4f801a06f7eb29400687c1432559983dd534e718f25877f74ec89ce31cedea1f6ce21ee464a7c2d11487d65b17ba05f72ac2382250f322e233aa153ac7a004e217d11f79db78459ba4bb07382a049a39469487c51a5c343158d791848e20f66a70bc45477633927528a9a8c9a665ccc86d1cda47d3dbbae2fabbeeb8378b4c3f405e12b9c95783e19762f3b08c285253963a18830a8547469dfff3d786b2065774cef467ba586428cdf285e9d6cdccdb8c333f3e7d9beb619ec6735bb268aed45bb3fbb38cebe42b94b62ca51d23803b1a674506838a87a5718a4976c81b6b893ad3a6d3c429de1c5410e66fd200b721a423b523a7dd45e8aa714b159b6741b6dd224b776b3c73db9eea197f95904f0751130591c6d971dde906e26126d7aa2454f8eedf5e731da97bf6a7b958f11c5337e998d449cd41d10d7e006bf6f94e5f29e22be13e4a1aa71459f9590462e183b2d05440cd40533b997da6e092962fb4d2aea3437064e78463f264adda3274c7d2c2bc18fb1525bbc06d4d4a614b90de2e3721a62bbd7453b50fd3197925485d87796eaf05f84fb574b602cf9000366020d14ec452364cad8357d1f4c849f5df64163d791939dc9e7707cdeba5d8e6077d9b44624626aa5f32b2b1cf6c2502ea80415a647a32ac35c169e18c60c3303b8c790576e6d320e6627e47a151a8034b70165f00c1fc285e0944bc46111681a5bba0252efafcb04200b4ef72149b16d6aac46628f3a5424b731f86c968b8a0275d081b94d4c2edd8abc2d4cc76979d4b60074a6326b55aa75a90a96c13c38b92ad74ad4169acc0d19488035b405542b786f08a3b2c755b02dfa6854020a2d3676da8b08933bf0f44c4b316fdde7fd698a6be1bce7bd05a975264d7f4dc907c550858a16ebfa9784bd1e35ccbf3d662b903bca54bb8061b498f19011841d57ce8686ed0dfb18bc1c45aa6b3626cfb428b768f2789d409fa71aad9fc78eec36122555fd344c830dc829e612d3ac83f4b91327142b91229c99ba09490d906bae17bd11f9bf4b645737cc623a8d2f48803e00b901360393b0150ed3a6254de291e5b906c82f8ae475dabd4ec045b67cbf30aaf6a9587fddacb97681f1735117b5297cd466866c8a38ea1c5a4ab94d608326f0c9d340f7b430d1f7e2db38dc9d79b739a72256cd0b64fd960136e8e2f17cf344097eca75d318686953476b0552dcd759ee5a9bda138e734864606a4f2cc08971aa56bd7aabc62df71a96d034df4ba2a85c6e2137738a5512606857485a7eea929d55d87c116525a3c5e618c960ea708043143e902b876a2685a9d53c0e57e6faa75823d501ae1ffeb44b4863d259704d2c550155297cca5209408227ecd4b29ad5710d247a8efbcb19c81f1e807be9f4319951014ee24d5a193014ad0c5d7c38a64c523c2d52ae1d7bcde5687ee5ccff12047d415fc67a13868d7217566ce950fbbaee4c762a0f814778faa75fe4e70ee0d3166372eb748ba3a93302f4161155eed820b1aabeef5a21bb481596802bc99ae5845b7c58bf05c189d86339d3b861800c80daba04518952b99df84df404e55ba4ce3c7b2f3f4a73475a7c845352cf655354b388ca19f98d15696fc8b7ccdac477fb1ca09000da6f18d0e7865fe14020fce0089e24fa1812a20639d15a527458bc9b4afe8e846010536c05e041687b627203a49d3cf0c18cc6a245d96b9d84cde3b1784fdc16310b4a6b936664ccc7091ac17b0acc44d74de06e3ccf4562ebba2ac3b9699d487554a73b00516480082ebb2e4a207b41cac2bc65cb4ab4447aea56558d05f7ec38f2828e65a8804bbaaed846293e9ac56755c91579da6f399bda9104e51f48d361e2a6550eac333563ad147c7cd3aa1f416094be7db10b22919443040d1c5b13d86d60f6971e46850413310bd85af2f4dae7281104c64832b7daf35d53c97573d4d2a47e102891f412190b2d7fa756c62e142cbc18397a727b72a1ce91a8477521c3843c53b4baca822c3f5884df26b9a17c01c9214324a672169c775d3bc723cfc9baa9b68832371e58f9392d14d300b2ac88f6e32baaef70fa7274306a6da80c3ec2409b744aa384adae3a11a4838036e5330670edaf16b0f697962bbb28d29ee3a1af2261fa35cbdc6445d4a12d79e09d13e9785d945b8a6c32f35a62d0d919a50e6e4d2f840b3c23a74a2d03121a46dc116381215580b7c74a76f164bd3359c523b058e7aea2f35959529a3be06694c5676f9000e9ac6c727ba9dac0490fdb8a1c9a81f9396ed1c82842a32f783de76e9c844f0a8d63657bf092a873841cda4558ab5f5dc96fabc43ab9452c2850dcd063c7ee4e0d31525caa342583b680b48033f454710f35541f2330391242b24aa084eeb47bead899c99ddc4dacc83b63f5dbb30e7772df16316e6d8c7915d7a7e23581f6ab335058f4504146f909a3c3740f8734819c9225d044c3a265978ca8252d521dd4fdfe3f07bd8bd23f9fb0657b5320ff5a962abef8ce47f5fae245f1d1ece35686c2b517f1892bf45d2a1be1e717cda4866aaa97f1cb0cd4f68539e69fd22fa1add14d818d99028578057bfd1a94dd68ebd439dec9f11125549e8647599d16436671a06f66c9168b0ba667807f84f1afdc8dacdc32f938958f43f09ff132be1981823e458dd1b36992359420e49f808182171cf56a4a38c2c89418de6fbb5d40297313ca47dda3a62cb1e85a8dbdec60e6c33ec874814f01824c16b3c417690bb59e2764532c64acb8f8ea38f982dc5aa511f664fb6401fd0aa1e4c296d1794b964d0134e4c74e94f84118544c640e98789977e372efeca7edc8064ca8f999dbe921f37da11f36f25575d0282b1d7cec94760c11bce07ccbc67a54bd71134313dd76a5dcd51cc634d0e7e7274427faa75e88456744aa952a354e5af22d356efdd096a38665e6381654a537408e8a0d9c387e11c1d90650d6cab12f67d1fd958564b4c2c9e4ac3d41d0edf2d4bd31b5593fc63ea5b1209bbf72af2d92c38a8b6916184bf2425d999b295b438d1023c97d3e07f14193dd1fbdd90a9b001b331403bee237a92a0728e9512bf2e4eaa6c2cee3a746af924d18fb27d440cedaecabe21b63347d8a602c3a02ea58948a3a4afe7975f108843c628c8b632ad501b9968e7371ee7fa23b97da7e61a36312ecac5578262db31df81182da45cd4f2f3e0d2cbcecd37416305740490d65b982c240cb54d514ae13648f00ef8c03af04dc89d5541208a18258ae413f283e829f607b55028a021f2f12464f3b825c7906e849759172374ddc728a9ce5108e5102d4e11959fd6d89f205b84b0851f8a0da842891ad02af53bf9e393ee6b00c33e1ee65df24897250c865f86215ef9ac9b9f059198d06de12cb4addc8dcd95c6ca4a1b8a6fb1a7ef816e56412feb6c1c7954123be2a4510bb96db8a1c14f40c3cf385d0132c46879f9860695ab38ef391a57e49417abb0c74ac2acd7d80ee4829e990596941eaa5233f82799290240b3ad7e338e5e32fc647b3273c7da90031c35132bd857427883f90dea7d0a9380020a26016828e116080d3fc83e36eb61ba3ab413114519904d0d92fe06444e9504827e893e984975317c580e36c29dc74c5012981d3b2e7e052235df3835f369eb144fd6bc89c28a84d6dc38c2458b48e5e56479ce90239c8649277aa37a112e9e816f00716ae7a794c231601fab79cd74013c253683a3ee4016a4609db60f829b79907b42ca12d469f616c8cd9dca78fc8c7f06a1a245ce502de3497b831e41cf5972622d50619f1121b141e3c5a32ee852217978ae5096391051b9434f5062b6b80fea9eeb83a6ab05a1e8d438641c74f76a8c56852a7ee5c220746fb46579fbbe395703bb8d530c92513d1c0e6de164167d19675f415feade0dd407a16a67b0c6e227d6c8e266f41aa3ec2040862148c70b3914c116433e9a2892a1f2f4df061e0f1cde1c684db0a3e32bcca106390e34326eb38c29110705d61612db11a615ebe9db79f6c9c472c661a31b4c71e1bbe9bded872daca30f5cdbe1c067c5abb93e514fa0af2d8ee6eb4bd17fe554c0c829c4e5b4d13f6396a41d761174125d57e65e6d533b9f6d6212cdfd3ce3bd07361edc52c9ca780c0bee350aa9d84f4514915441be16fdcb1deb015c43826ffc767617cabb9a3062d871b6250a7ad078b36c1ea531ab5c6e5e769518c972470060c58e55da7461fd2b13931e189a11546b61540f0018ba7190cd2ca12f40711c6625d2d409cf83e53ede45827a3166da6138a055bc27930a2f0906e4ae225557999fcf0e9cb3ddb8567060e305c182191a998576018d9def0f16a1298140296b1d0cc7db2157acec120ed6ce78f74fce8717d048a63d66b1b80da1592161aad0f4e3746b4d67acad602f882fe8f6329375487f12dfa004a3495a1310290a82421d6a604166e6641fdb01d5163dc420fb784294e3824c47a4f42872438ad9cf00aa17b6ef4d2f8b13aee1bf160e137a81842480ac40c4ff21008c3060c520162407ffeb53e99bcfabf511dc8fa0e59abc2b32ad12e0f7404849715ec60549105092ff66448f3726e0fab601182009059985f282c2c39b545318e6cee6922e68e281f5ecb9f113e3277c94e14a1e419c5c5d46651ee21c8c1bc53d42bc44d87941e4df8c3b6f3cc495fc1c71461e3292564ea401bba68fb8830a1ae303c9810176ca3ee23a4a5c076fee58adbb88836b94389235fda29c383ea680a8cd9ce07e66c5beb9ad25071c4d7220f9a68d20956e514cc043c1e810a40f9c5c993372c68a23b3aaea1ff96bb3be91bb01f3637d0b7770daee1160ba82dc8b716d115e75c0c72a8d65fef23c7da5d3a9f1509c5f1e7248f2489e6ecfc8b2785836b70feec2c3cc571f9d1a42d95e823d617dc1bac3691b1e5fb3fa666217283c4b75f912a58282a01c9357d6df538c05b7081341f32920b326cf89509122b46faa3fd20d4a6738b657fd3b524990702994db0c144c9806eb443226871244e62abd9ab2182d465a7c371b12cf86d8b3467b183e3ca135bb83bbbfefa464410f660560262ad0330c67b2977afe3dca8633728906e59c0d06d688682699bdf84349d0863f6c23821a1880af0f5828f6f410a91239a44a3733d44dbd113c15469e032956e9525c2743df0ee0953d5f1fd06951b47468fbdbecbf3584aeff2e5402258e8fd328463567fefa4c49cef721012e17ac9a2dd0e9aeafd4f22b05e41a2ae7f47278a4b6c1bcb6538230cdfeec4fafff7a29a293d02988edb9e44d418b48e58dd7b66ce0a36031a7927bf320e2e8f5b0f29096aa7e42cfd0c693d9f023f177e9f8448263fab5ebbb83134171f251226457596d41d0d5489d7d8dda9c265f403019e5cc734f6bd49e05182c405c5f30a4f5fb1b9a804f13f1b1ee329d8fb012c05c839317e59afd1f9d22b2bb4a8dfb5e14a8b88c36654a23ca7a762b4a33b87a0493ce48132c6922a78de594d43a736a92f95939f11eb1c88f79d0654e1b262c4b3a464273e9f9b4b7ee3bc58bea34c0ae31cebc1ecf8970ba8dcc4368de8ea1247da804abd1bcd20df05c8d495413e512f3160970059b3ef68554188c8752785cc14d49ccbd03157c11c789b432c6d93299379614f285405a90e806a83d53b02ae8b373604442506e20033deddb09af20e630a7cc44e2822ae4b8e96e48e81867c2a63e2cb2b6e71867bf9aeedae38a9ad1e7e1cbb5e900df4296052be43b57f25aa115300173b02b855fa6f8b42513d9b8213101a415f236a724f4d3b7dff7c5fa59181de30911c485c94d15ee6e24cf724397a017025ba4c21739cb5b68cd03be492ad5599838cecb44a91f472c0ed88b03d33b82025779147776530d503686919503830718a613c86ab312d77b0946dbe5cca4c1bcedbd70ca221d7c6e32ae3ed02492c08d9ea928992aa89f0963e3cd7506f8ae036b6f17a67880ed64d03d5fc01776c932b191b95f4719c83521a2ec71ad58ee535dff4bef11af11d97227976a4f3ca4f694336ada54c320b5c342f5ca378212c68b5739452f19bc808504f795357c0667f0a7d5b5b2bd201a6f9adc9bd49d2a85f9212f96927d1278ddfaa7777aa4c07ba4344655a0755736650ce9c13ecb6f4eab004abfb35551d1ea4c3c9a361c2b8fc1e817b747e59e149530277499eb3fc0a44a4022a97af8e44ee3904aab2093c5c818119b113a8d430e407f841a8c28efdd640114819946dd5c96d6380d08f314b70627ab23e4c06db874930f99d1362287cd2db7ec7d60adb294667e0c6836f4e0fbebf9ff35a73faa50fdbb36be7b31302800743855441c331cbe7701b4dfe02aedd09c12f20d36c7a2097177f8bd0834dc05a71a8343d3ee826cec196e7dea16efdf154fd30ffd534349b8238b45e18ccd6a8eaad01b141dca1fc809585b1a96e92737695ba548d25d9b21f877f493888340c1fef7b20953ba22c423b639decf7110bd7e409f6a713168fb20fc9a4ffb7e2926d8d003fb73d98b1bb1e896c6f567974b43282d50e8bc615fe5d4b458598b624026fcb560bd04be782083b9889e4410bb3c6e6f75235f24f817e432a59fd564320cd0a7ae3fc5ebe0fc121b7e15a5c7885af13e9582b9f021ee9b8c4700bcb3004e5aa5618ec85dffa9a4e15e24f484ecf92b3b8db6f81d244f61da7d382d94553f86c6defd2a15f8a8064f6d5cc6db271b5df691534b852758affb38677a412c3a7013dc379bec1f5e05b0537e1d157f1a27cbc3f7941bb6977e19262326bf396a162d54f09f75b9c6d58eb46446eaecb1f2dc83f6280efe570bdd331a7f2cfd15f8ea966ca6c115fb05dc14e51b1f597e7ea80005f9281b9f4a0a8fb38969f82e36874be6660b43163984bfc0c0a4834c4fd1e8457112de603336d481b18d6112ecddff464235452cdafd9f0a3c272b15c7981dd1904efc015f38bb3893a53607bc98ac21351c82fef048fec6dd89475d49306ca139c03bf4d2b2ae69938caa5fc65d70ef7bc3c3a8b1f44dd2ab4bd3bde86c3cdba2458db7b3c16c62a1929d8ffe5e5d686a52c11373d268283cc657da9e8aa156d50b34797962e915faf2aa611c75b27f33f0fc68daeb5d0093b302a2b3392713d8ac2f1b92403641d20aff4cd610d8eb0e633ae7b7bd49ab0645a4440964896ec834f8d6a2f7842d65da7869570923c05804702dac912c103b6dd9c2f983062b34b2a7c9834f53e39a9a8480db511c6af10c0dbd1e2c0c11cf99ce8891f862c82021333f2a09bdd4f7086fc601d3764781d908e20b8366f25642f5bfd62b09d540efb60c55b6199f389e2a57715b388fb09cd7500b47c96262ce5f0d008844f9c8346bbe8899b08f90c54828e4268b6b0fea84874441f653308161032af825ef15b9826c30fc5cd816a341ee353358276eb24a54b85c81e8e19633a286b9fbea47e9692d8979e6580c18a0cc8a11fed9d78056882bcbd7b49592c246f8465e132ab916775e335de4af1d7626699ae775ba4c6babaf55b9911fa2ff171dc02e74367370946ff1de6eebd3615ddd00acf7bda0c1cae8f3fb37a9008094c75ce5f02b7934273a1851655f3cbf280d578022b3a73670f729cca920d21c02d192520da7e298618999f2af8befd984142651af2e184246cf7f4fcb73d592dbcd2364e1cb0b3d92d214e07382bffdbb31070f35f27b62ac17411eb0c4fecbe6e4c4fea614fd33f2bf7f36a8b3edb493c88355b7649c286e54536fe89283211f594a612e379d3acd0864320f9a40b8fc687f89bf8231d03e2577fc23d0ffb2390e501c287215b36c2805ca3f70c94458b9b4c6ab0c0ea3276f590a8febda1dfd4c07f3af18fa5206136ca191bca8d3ed9221a1bd48413e4d238e8af9747438938b8c9196af515603a5836a360ec966083751f1f53ec341d8b4da343bded4f0be5abce1608a01966b6b7cd0d1321c3522244908414e6f82931d17d1607a75645c8a70ee97df5bae211a0b1fd0a49a486e2479d036b6edbf4f7fd48fe42690e791be5d55f909c26d988c7489cd0230283ba81a890a73dec7524c27021cf4d9a2926bbb51acea64cf1fde7bad40529f0325f39557d7504eda9ff32935b34132b8934c0585470946515ca9669df734b1a3b6a7fe89cd0dd21393c92a1b36f144eee31c72f6aef99c8832d2c771fc586b89fed82204aac40e43e43ee5f31c733138ffa9a5493c4991ca19953691498bf439b88514f50238522e0e9d20e706c8962f7c0670d8a16eb7cfce944c9f9aeae1726db940707421072b6852525dc28f105a67c6a31b9aa1b6b7407ca5d4326ac7d1f10110443255338a3b7ced85354d2f5a9b0c8c9466158c62268361e3ff100cd3af21743dbe253813a68ded1043d30dec3123479177c857e7113eaef11f100fc26d17d2a06c3f64aa190f78c6d5c4bbfc7a56652ef3904a13f1e8c9f9c87fd8436a3c27cd2f41e54712064b4672fab89ba1b78636a46cd0fcbb21e2068fe00d8342b88ed5065558f7193fa5c1ea7d66de04fae0707b10545f2334a4ae5e2e53ce4d71be25d5fa1bb74f0e477ddc3850fa689ece0f6a18f88d28dab4c580adfc4666ff7d485f7795a783125ac672edab8e4cad924e6df64f8d236ae85d35a2d3e69115c538221941464c4efe373733cd04254c8db7784ed76a5bb4cdf0921ed1e9a406f160366e550472ca0a9360861c199c33b252e1e6e1769ee86073b671e6c463766c3aa0b68834ce540060db095b67b8e7bfb109e19a66105396eef2684f210680d2b4c35ab2369d86656d6db07ca1fa9dd3fc9aa87df46ea8ec3c0a44de5fe23e02cdfbf3f4d1b0e240429b64190cbccd6af5255b6d43b1ea6711dca6749a6ca2014cd5372b0ceceaced10fc5b402b4427ed05fc10fec80753520c56bcd6e24758178b318f46c9027e2930e1bdadc2d2e74d9a20d8c1bb37d6813041bdbaebc718b2c6dcab7c1519af9fe1b5b7221be8c25716504faad6f3089a83e32218682f0d5c54da9a4c050921bc7f55f19f571f14c595c4f9e41bf841799a46c1281ff31090f20f66e1fe385e8f53deaed439f50da1f7758182921f4443be7e58ab0e0472e36550ee141bc52c4d7f40cb76ebb766faca1c737474e73ed12cdd09b69af7722b1eb53d6a10942002a12c65d786ab168575e24d2bd0de7139c994eb2d54a2233dcac1e8bafe0ca87d45ba7baedc297d1aa12445f463eb3bc9baa2699e7edce4c3f22a68bfe9bc3095e4c0b35f8b3374d4b55e3974527cee2ac601586db17ca6cac39aa023b287b8478e9b4591683ba7613206c4e626e7bb3fe90a8dd3fbd5fb40c15650dfcc769725adb5ceb4e5f29c3e335c30826ee83aa510c5411f76f7db8b5f5c635158b2c57fe50e90a82b222ca651ca736ec2fee0902469288ae391526001126085dc44814cfc14b0b186ca02d93b52ddf9e3a00b82a55216bbe537a44e35d53fda9e43fccc054dd65be069581b7089c5e5457f4c159bb80c4dcc0364734ac8952878c7130898dfc53decfa7c12b35d365e890101421264b805c08c1399a133e42a9b907f54be24e21ae2189f8a7e33098465b6bcf5790c72e9b83e7f31f0707d20d8f2dfb471e3ca2268bf4d4b2b5f85250900974f0028598acf0bd1dd8a3e32804b8f0c5e4465b738f4f346d00245811fcf3e35deff2a02ebb845399c03e7677c952615092a554f876f8c9d0fe73503a8cb7bddc3850cb03498147eb6eb1d668f83825cb55a036f8dbaefcd4f5d916b79019a7540313ff5c0250f5d4f2e1eb8890b6095b16a038eca9c79f6a26ba7f86fe492c6b06758ec839a801557a5289947550c6b7cd17e31c4d697229a86edfc80acabc6a0695393db90dcee475111b4ced5104aee229d94a5227e19a05a63b4b091d709713a640ab598d63ba01e255a49575092075991c3459e79c260468459a76c7b12182c3f4b46a8d340c182c40846311cd8ee7fbc8f2378182f6276eb4d7bc125e71948b628b76cb103a31296f8a1869a943cf0b6d90ca42d645aa034d0b173ffa882a0e6f356161ed3eff4448d93544943d8134d5ae70936fe926a7b60fd5706fe2fd2dc24baeaaf88f09d7a5f55c38e6b33814bc33a8b255986dc226cba1e8d60d77f4fb64b972351ba5327973afed0123b0ce12ded2b21ddf97db87b00a87fec696bd6166912e186ee8d54bf7eebc7ffa2429a27a5bb5ea5b111f019ce0275cb35d30e381031731b1bbd312f76dbb683aaf6010cfc75d0f9ab6be33262bd79c1f00b685c1fca6887206c609451835c3a2034cce0171e434b25a8c86cef7d439e4aa3d347c101f289361bc5e9a6c2bdc00f463ae5aece0c5664024e693dae5911da3bf976045b914249436dabdb84817f808b4588c43049e152fd01a424375a733de0d9d20476a6192d0c5349720043c9a9a81e5f1c3bc1d1ffcb22b5f9c5b6ba77e3e0358a09f6d1b21ba30294fbab24588bcb7a231583f65c1cc58e63126f29c8184bdda34b40cb04bf78dbb6f1d935f5d7201d0c7f49302413104c4767c41335ba8b4c358976b6be68438f84a342900f33df9c9090cac6d76312be9f185bdb285947b46b33371b1dcec344ed8ef7c3308f7cc155f5fac9a92b8bb10918c01f4bc9e2a5be765e5c54413118fa6a6d5eb78b0a7c143ec3c96f13872b7ec934fb3d994557cd24e230db29332ce9a1f3782948a8152443195bf711f36563d2837343c7c001b1cd52cae571a25b1e0f17386a13d7c2afde50565560fa43db509957aac5e41399fd9c692dbfe23843ebf2b24ade9d94160ee38c3a27f62d6b04a6206f99a92851e932aab73bb9a0f83ad55d220878cf6bf68f0fe76ab04eb22c6dde1edfd2db5f47366851100dc0f4ffcbf3d45643d05b8144dd17a7274a2a03f7df40747e88d1b5eb983a753327609bbf5c8a58cdef4475ea9b1a59bb593c30bc010d3a401a837e338209546a8d70d2b1748d52040fb09150118d276b095622ba572f4c0c591f924b8ccd8fb07ed3b1144249485fc77c66f5b4af98cbd77eddd0884591d1c347521f60cd791a50b9b0dbc321b619d5ab5697ef871025ec405f4580fc22f802826e59c95e7c58d44124f16c06845ae53727a4a7f1113d0b8808b721124c89d977949993615fcf2b8b39f8f157c368f894c12d2245f84fad38f220db3f4fbe270579806d9210a08f3e687b63698c4faee99eb487c5fe40755d0ab746830512244ad6740b992fce221d0c8a800363c8abeed51546dd64b56456f488bca629607e7eaa705c5a8673016f07f477399470c97d4331657647d2a90ac9e367ecad36e09f83318353fb8fc0fd0c2e054216c6f2b47d6c6f8d0af6fbc85d44f170192e687a0a28fc191794aee07fc03cdcf2b7d093ee3b65eda0046257165433d972084ef8d88f21778517165a78bfd0cdbd8dd6d2e69ae8b2dad702ffa6039aece32aa4f3e5932e642b227633fd528b19e3a211e941d510431e22861c0d1a4cb15e857ba5363033aa733af80e613b771585117bddad4ee21177f9650f4e07e97c584cbd22fb0b62a4dd9892962851136a1b4320a788e3657f86b669e5960f2e6a023a28ee57243f35dcce121fd121f1e852372b0a2fcb6218b4694513f314c733f445ef5304bee32c5392f94aa0909da690c82141111dba4d37d0eaa92a1c37419baddc00a7ddfb57f90f8f0143e3dd8f184c6df2c8c9ac334bf63d2a7ea9073e69c064a7d5e8af1198d8438e50f40cad52274114728dac1e55ec4e4c924f93a75f7508f10002f503954e80e4182f03033323dd47fd58db1192e0c9cfd5e92cc9178cfcc275ebaf51c8a9e89220547898de36265c8cd4996d89122d980b59660ecbb68cf5dc7b67b7bfaa66b286220b5d4649c9f6aba3088f2c6b8ca16efd6662e657d51052b5615b86a200b8299463a107e573b378c4fae140a0ec574f1ff54991e724cbcddab84694d336104267c1aed95327a7d1cdee03770cb973fc61283446a834359f4be0d324670b298590643d7ffbc818fe5ba05baab1d751ab7fbeebe2a5943836f6e918e15399b9a8119fa784c7c83f41dcce5b52c30913456a82688558549dea8ed8cc3f3f880841d1aaec50ed8125b2526d529b79aafe020f475b6067bfb7710fd63484566ef535d42877e0525ef5f9c9e824ea1a89ee94a6a45ed7ecdaac766bfbb452e344c5c11c250f342f9c63f8ca6e8ea073f7b1b7c78f6e0872329b90119db59f3755bc407799f021b0fb55589260d8c303ec9a85fa09c15198dc8fd145f2a9355dc23a59969defcd9e58c1d3bdd26d9e08d27eff9d8ef6c25f316aae72e6b704c7576aff49d194bb198d2fda3efdcd0cbcb49cf462cfb929d5f6aa721c6da2f73fa346656ac91b68fe6463fd664340e1c2810242cd93556824aee853a2aa32eaf0eba5cba1c5d15dfd91a4416306419fd4e1a6218b81fe2b7432fd96be28302670c81fe485b7c593e6bbae112dc36df063539223077e5cf131f7014766c747b64d81c9d6c8afbf62bbd4f5fcc73eb6e32ff4afe663576e4368a5d717595db679718b44c5d523bf2e92050d61699462bc022bfdbe12e6b7020889c2a914f1bd9892a73075e111f5e69eb3c4bf8109079ee592291367762b1fe0f2eac0a78e4f8e36abda3a4880717e32041081aebd9eac6bdaf814b32f077a6529d9572fd13b17b4570ee2a73e026a0a8fcd03002f0fd73cc05452086f208d2a3f540fec473ff65f9681d7a098c6d07f42783b10a48d816420dd862003963521e8858a720654008c3e5ca4f524172d29e162a19c8841e563a1dcab7858544b8466820b4400e2a4c3c12cbea8d99063f22b3d40f0c8f0260eb91271c867d4393c24abb1752fba05c20a3315106365f6ee0cd183fb07c43ee7042072b686485aa9a2c94c2253c365bdee725789fe66bbc252a8f8a50ff3817b2d86ed337d5094d2ea8f549f4f84b6cf91d7932ae30d95dfec6ead17c5a8a7e71547c78177441b4e29f1c3befeb693ac5915c80d400e59dc34e563b893ce73a910486e4c78bf6a620bb4cbc5c9e3a36a138c6db788c8438de5416221f5ba5c078dffc5d56b27306f8f8c6a497242cabd7f29556ec46a8162d88e34b4df88c030329bdd2c8fcffc544a46651ddba4b4d12ed85bb5bf87517e2e7954ffa7d49130ee30e08de2bb56d19d9e7d218c6e94a7fb06f0254a4f5e4e2fe20be48c5d589dd2df4a0fe3b49a935bf31969fdc41a5d9349aebfc7395d76d1d9ca40220861d07e2608a6a5c4caa954f91d50a51883eb3d8dca940fea71104ff658c6ca17f69f6e985f9b56ad971241ff31242a46107f14e3127f827d283ab39c01f182b87c5084337afa56c0f0066edd3309fcf3edf2998df6750539c6aac3c8a613acc00bd9018473832c5480c8612394f1ecf1ee8fc83ed54f6142fa0a18a250b69f2f7a2be8d4b83fa5e0677f79d1f99c0eb5bb04adacec98c421ddf150656fc4ad44c7474bbeaeb41c1621f4c601accc012d3dd874dff3620f1ffd1d0b1c081a301c03f319e62f21d5ea389ff92071baede5d482659d570e941a6062ce044487c9449b8b6de65f6201abc1a5110be43cc34fe962574f6a65935460b1359c56a2b06b0d139ef3851089b505036fa315a5823aa9ac66c6418bde355048a8d7364ae87545be5d030eb369e8b2629211f98369315a1bbdea08cb997c03e4b521148b54f0c1492b04b031c40974a3c5d02a3143d86af8b600da2e5125d28b9c2b23553544d0368d4445b102fa8b0ad000cbcc5878a48ffd9cefb25550d5474e2166cec9ce3094157704e40618affb93947f0de1b2501fc926fe257a591a321d681c8c0d173d15841fff6f808a0380206101aa55dbd1e5ab5283f49725ed70b0b0850fcf92a1c7295188f1b8a9c71e94eaa231090ecdb5a339e69b6411d50df605c80953e7fff66d982d19db747426267dae411ebb0c064d0e229b582544890397186cd4c3449ad7790dc1b9ce0bca06a3ddce897463cf5366cc4c4d504e3e2fee7cd232585221a28ae6022d1f3cc7d12c94a6ed00c32d41b48cae97714c4c1197ebf0d4b86c87d40e2a69860835247ae2b7ecf07f912959f52697caa4594bb2e71299092c3aee0a0ebe6f12d6006ef571b3f4046e63c653417c7c817446a872122162ca200eed0363e504703a45becfa96616f232f49e475153586933bddceaf051f4c1dee934958e2b32333284866553efd54b2a54d10fad05baa1597132db4ef9ab9eab635d23e4af32415d4f0a744cfd3c0af09030ca93f0ea2161080161ef69fd10f544a27b968e0551b4f7c858c9852938d3554c690c9ea9e465ee89dda5c0049970713fcddb2990162b1a533cda40c99c73eed3e5bc9742106de12df357461d5d15828e76fd14b7bca06341e68cd26576b8c47e6549f8e6e971ba4830a85a26dbdbf709eb04b64d1a77894f38b620b652957a274399ff69cdc183a0d85b1a5ced0e39a835652ff8dd818e3e3d94d208aed91d047db1d1cfb915bf27cd489c35cdda5ac8548f5c5190d61ecdc989a27dc8fadae0e167824800e1a20f9693d008ec2bf042ef2e704cc50419beeec6bf5e22bc01945a7f5b593ee14ee8ca463c16687ce96e2c33f9f2a795976783f41323e7a87d972ee16e3eea011517f18defdbb5fe6a0e927b871bcc377762f23c325f61132aba49d13514ea9b94562dfc4d2d9eadb2f71766c2c5f9598a717d4feaa486105dfddde57151bdf3744a2eec5206d97d251cf42968cf662ef97a59d342b25d04ba8e3a5ef0d82241507ecc800f4746fc6ea579b144b98e5529468efec1cb8e0e84e61cc0e9a177378ecdaf4c48857d22c893487aa7f353771d2ba39b86ac5cc42fe0dfe3d181e41019b1354d78d4f0da28765f2e3984ec445effbcde8792efdb51c5384e88dcd1f6e7e0c8490c90f1ad1ad0d987cffe39122ef818f3d64b523816b9a6e5a40b2375c61dfa041c0fc30fffaf61ac2b00ded5b9ac3429366b793ef84f7163d619c607fdb4f20ede391252cc93c0b93dd61e2b6e1e159ab28f2cdc3bfdb5235226c719c046e7fd6ea427b93133c4ac8b8ecea8d96ad680983881280812778cb144888b703e22690af581373ea1cd5552c75b46363b30e3f28a8287d78d2955389fa50e47270143a54ea79813d62e41aa4445fc5f2e8f44c15543fa549625aec2c260795de9559ce0e9298464a0c916571c69e64abce7cadff3a13556e8077a8f149b8e8661e04c06e310d2a2d1de4549d6a73c6c46cbd65494652dae665acb1ca041d49f5de895d96af8634cbb751439adf770eaedfd001ae818b74246cefee2d88b62aa1dfabe0a3d64f6e74a588912a1f12e2923f6c174e75b8c7aaac36bd28181c7d371cb730346c73d0dbe401e8ee9863bd3f20628c1e16f341767327e13e9ec529d61dce6f314bf1433054870f1671cb42b0b4346b5012513e76c500173de94518b73e0aed66df846dbc7c7b54f9e111b438ba9b7bc7b9b1430e4faa07e81399b2c2af6163c147a810c04688d3df9f91f448b3a33dd2f4320e78c98f88df1d526ab0839df9f6028b65adf344de22789c5bc7c9e39c1ce34b5d49e7418975641cae013bee60d6cef19600c188b15c5bda90f7c05b57a3c70ac9f6c5e802cb2154f86de16e78f31f8b7d76f5a43fabaaa3d1f173ffcc70e9bc34c624a4f53b6abb0ec5680ad1e1fd3c94e4858ebb7ea02a015a8c496593c9b7d3d04fa8c0860b9011a5ca56636545af49dd720f8c5786982855197b13056851259551a82d4f6b396272696a439b395e2cef917381485aa1fc5b29122c0163158b3e637db6e847277fe2b52710c322f99be648eb101204438d44ef6b2ce1f9030fcf65ed63699c77309eeb8038e53aed349498f1130f125a68e3f11c5849d78cf461f566d189655ac5083f5aa3a2d5390aa0c287d86e9f616fb63aade82d713da44095b127930426b67a5e32074e5da53ecab254f8b4599032ffd2378a20864ce0e114cb1f490c48554e96581e8761ba6a403e60d8b3c3dede5f5081d00b1dc6407966abde2c2211bcf13a4c50849ccd16a1ca108e271a38d8d01b51b8a07634ed4456ef867424792da35f95435c7296e5dd53833b703cce876b87812b8efec7852f17889e77f2efe33075ed4bedf58a33617d8b87d088f93898e636eea8fa2af3c8fe5f3ca6fec196c36062b67d67815e0f35338436b1e61f01c9546c5130bf2da0356aef238dbd8dd8ef8d76bbb42caaa6e4ab4cb449f12cb0212d811e989fafc1ce2fadb27fc39ea667dcd5434558387db6b0cc2c8864e49645723894b9254837d3811f926f901f7ee8604d93ead9918e4f536e08b169301d951f1283f5b52f0104c5529061dd40140765b09b84af0f392c6b21df6f1853872969ff13caf77657931db4878376abca1c25e4546ec6bda6def3161b35a4f98b657240cd3b3ba4ebd2813550d345dc1cbc546ab2186a91d03a8eaef20314a8b95e6bdd4104794ec527240ffea616fbe265ab61a5b5e1de9a2ae03ec3d902159765d70071eb003dc829aeb6bd40d37ca57d5ce27738962b9c703df1a07fc570105bf1b8427d6a3ef95d6d27ca9f83f79dd9ace79138fa03c58758c6dfdadadefef94fa17ebf96c9472b5d128bc0091ccdfc25c5dd60238cefd62a4665e5ce02d36473068cfb7d2fe75e891775722e12cc5aa76c7ea0fa5e1177979198db4858dff19c9aeceec60548fd109b2538fa24ea028ba9bb0aa2f65bf786a6d9de2bd022c0ed5cc3f0c09e9a1fbdb0573434570a0bdff9409ca409badd125d14049b42ae1b6a56c2145ea30fa1c1a1a1f0c88fa423ecc03415eb0049cef54df067d2228bdb1ffd2e309b87141c08296b9c4d8317ec7856fbabe6b862752dbc8228def8f9e1189067d4b4c4b4ba8f0417531db441dc4548dfd69007c5362563dde507459e4a9a88f0a2fc357ac0e9dd7c99320d26404339f127549edfb9da99181af6f865e211021a4009525557790768f5a07c2fe4ba145dab9c734ed5e3ea812bac6fb3df1f10cb821d113a552115453ff4ef0b2141e27a82a60bc37ad882392c3ed7907884a4968a51a44a8ca911c066006969eccbed9069047d8df9f3d1cc0c6bf3edcd5e320e2ec6e7bae7b97873f479a17e8da87d6c16f39343440ee6bb81f23db3dae977c2376f51d382d4729dd3f302369b1cde6647ebef7e22b5cdd95ddde6c419f171dafc22575c9469030a06d39858209a59493ad519efc384bfc2a62314b0705cd137f916330e62d2517f09198e58a21c0fd9c4869c889568f342c38100001084cd449436566efd83b32096b170b416aca550ac9bc1223aae525bdb463e69a4914d08d952ee1d62091e09d9092c5e809109b3666c62afc725bcbaeec3f5392945a1fe0f16156598135be6f9d8ab09abaeffd0aaebd7137b7d52d43f58641397d80b652f54b320cef5ebb3d1d11ab217246200c4f1a1559711340af1771dbb7e6191bdce52c5754873d52062ebca629355a091c8c520b8d8ebeb140fa513316812831fdbf51e6123d1367bb015031f1b024ed21c5b60530238c50f98d08216563c49411694a0c3364a987f4eb0f2386c9680b2040d4a20edd6c166d940155f1b1bee5f1b9929341564c6c6df5853406efbb77de99d3ffe8cff4ef3f1eab3421252e082ed9f57cd92386d896a2c6cc9e006765382060b5b3570823559d85a8287a708522c6166d865c3c2560d7a604b66c85a0a382c6cd9a089a55d90974461975ca209f18685ad1a8cc1b2d84b2fe98e890b292b590ea6146a44ea0a33a8246162306d61686693c6ce243cf1020b4facb48543723e6182ddac3c4afebcaa61e5bf275a58791c36f23a78558395bfe1156c3d918295df8157989543f634270b5b4fa2b02c16b69e00d97b1b6c051b0b14141e661b6cd6c4810b5148c2c1a18b2e2cc14911e12272d869e1704d82b341ee861a4bb4e10945d0c10901470ca4885c4560bf9e04e78202bdbc9317744bc50f87140befc305983581608b064d2e9462737bb4b0b3450332d80b257b3fa8d064055735161ebe26f2882b9ac8830fabb037e6b4037a1816b6bac8828df5eab0f0b37dc35368106909de017740580423a420f108909051c6e005449319bbbab19a04270b03dd648f38bbf6c88e79370dbd22ec7cf42e6c7936c76a8a085644129c9b9ede153ba390bed78f489bbd3d2330fb06b93963e4cbcbc72d028fac7c63f58834713c13723932bed1f6e00e9733dc6105dce152b324608ee6cb09fe9a28121151c994e055ea337e278ddf8c89edff664d6c3f1245229e39733934ce5c8e4c0fee7a8962b133128543356062b1730d9e58ec32607e4fa85fcdc69c673c12b52ac623972363c6a67e51316c2a95fa85ab865fea5095ba3c843c20b421f52b629e8c14d33485423be33d6e67bc648a5c4ef61b76f1aecb6b1c8677611ca6b54489c5ce346860af318403200b731b305eb435bc6837c8e5d4432ea7c63718616c161b30609ac8068be635aac7d6c637981a87e172ea61b89c1a87b1719792cb21d7c3e55b0c0ccac8ca111748db0b4c0def465bf30d7239df2197a3fa1683a8a934117f7db904bdddba807abad5527895bddf437007b45de3fdcb095ed57bbf53f57b45b1ddcf7a3843996a70e466a9f1195eca93325497c1e57c97c1e5a82ea3c6d9cad422269be280b47c239de5ca5597d79cb91e359f71c8f9a839df4ba56696aaa920359ff11935bdc32b1bef374fb3686eba4c8a5733de8f557845e3fd68c4ab99f7a3155efd7d95d79fd74eb4108c12d7a3c6f9305e8d6fecd57cab79fc39202d0d1a333468d0f8e9d9311a33353515a4c6699c468d1a04ea471886e94617ce47ca48b430ce0159e3a7a78c445b730e486b2422591b37d2591b361ef38b1382bd46e540b430eae5bb5c7242606ea37220da9a7af9a8df740b97c39d3d685d381f5c0dc2e5f341a07e245a186ec9b7e1358dd74c58d5afe17513fefad5eb1ffefa9ed74ff86b2696fbbd9834e3c52f687811c98b5c7851c68b282fc278b10a7ffd182f16452a51e88ca77efb3364a4a0b18aa5ef7e9b28e5c5f88b77a37df9e4b21e18d019355bc25f3f860c2f5382bfbeb848d41355efa43091c8a5c6a8598ff6dfac270bb8c34844e2472144bc3abd1fa9f0aa08ee08829d2dcc39102d4cbd30de724a6f1a8607ed8b07ad8bd752e7c9a35e0f51bc12bd1bbfb0fdd29168243bc319ce70068b21799d82b2c9c3962e286cbd8089bd7e8b92714facab597e849673aec7776b5c4effc2b297e64ac35fac3f99f8933636b2bbbb4a948ff38c7ecc891c257ff23a42dc11f93abce2755db1e3149e100283eceeeeeeeedb47453876ecee8e1c59885b052db08914a5245221d484c65271828d8a1e48b1a898203431a594b265b7ec96a62329a594525e11e690525e2ff4c5a55b764bec325d414a2825942809a18c50052feb0d7750d0f84b764b1a931509a584706a1a163a211a1ff9ba3c84505e1b66ca5eae090bd70b0dcab4058d52cadf4b4a2ae5157f655b1bdb9f7d59c9706ad9162de575fda0a4c5b509c1349fcdbeb06c0a616a53d04ab04ba56dcaceb097222f73ce6c6edb659a523099ae73996c0cc3fec32d16af6912023759bab5809159eb18aec7656ff87302bbecc6a6cc93766bd3256715ad94b1c4d63048c50dd4014258c50f4f68f4d2bcb7ca886af0736aa546c59ca6d4250f42d54b9197974ee386c8e94fb9ea5f1345d1564561cbbcb66cb7364d0fda6c871c69e208a5cc4aa64d33611f8eb91d6aacd2ef4946c9f3fa872a77e08f3920b76dd96ea7abde3c41e39ba19416b2bd365e7926feaa4c2dc32ea96948199bba50853c1292002f86c11c1876e9d3aac9d2662697b40a66d984701acde64b76ef90f4922db123ae6b48ea308a0ae117c330cc13b25823450cc3305e41d81076d744c995358d6f3985c67723692d56c25818d6c55e4a2e14d092ec6bcb3039bba4c9ad392ede2459684fca04a4eb4281694e32f4c0090944618eeba401db87aaebf012c25e44d87eec2a913842ca2951d84ca7eb88eb89bce414297ba872c49323aae87eec2a8f987cbd18d14896332e32a40c296646a6d87c544be16fdb5a4336213e3adab266491f1a9185ca664496d4893587776037ad047748963109b67139cc0199369b444ccbd3b55ac5571299514794196d3fd976449dccb9994e17773459668b94d208c8ca240a2c6744cd425522d451b3aef33ba09695753bba2aaa557cba04b9433bfecadf0975362eb623c81835b5127a6a993026cc7644efccc98c8090196546462e13c6848999d176c4db510391d6683be26f3bcae6ec90ba5fa26cf2c2b2a9953e4bde9d17b692225051f7744f64725ed84a8a40f1887db8485e5836b19914818ed8e7c2b22b6b2545a023796112c256520492574366d84a92ccdcea9e6086cc7032336b405b27041a3b21d0a8492682828282828282828282828282828282828282828282828282828282828282828282828298d8784239610d62348a572cbf63124bde39b27ccc0a7f1c8dbae34f8bb126b2fc6c8a048a4f34a969cd51d33496f8836110292ab1fc1979b423a5a844928f688ff0c742944a570715cb37113187034b151cf8631ddd10f284e216ce4774993ea29530240c18cd11060c8d05ea80483fd1e80cf4320cd8129b61233e424ab27052c8bda47dfaa7815aa85b36c32ed93a74e8d0a14347843236138b89b6bcd8e8c02ec90147b62ccbb24a047f97d1e19c5a15a87cb3aec3ecf7eb1d5e6593a2b21a7df8bb4e04af88e02fcb98288b36a3bf340e09c1dff52df388b88266bf10e94825225639fdbaa83bb75f7aaab10a7fdf55eaea9d36cb5aea45d92c8b55784585879ac5441d057ae3d08c14d0ec824676625e3cfa69561c6ad5f56bd2a17a51d7b52da88445367b3c1b5939e215f7eb8cc45ff0caf4eb9cc42b965f6f9d8dc5eb735e1f831eb444cc24a8f6ed7ae4894ab6639e566424b3de4d62b3b813795a87bfcbe7462af69ade90bdb2eb5c93a25ac75e17a289b001bdb45ba61f3069e94089ed2c6cfd28b1b0250a2e2c6c0da1656d2c6c0d81c86a54e887ca8f3d5978042a4a582116cc44bd2badf6ee0261aff622284b8f416e88eea7df70c6e5689ab6bdf3a22d7d8611941e1ed21ed7ef11b6b442fe4af5bed8ed37bc959e7139a567255a3a79d0765eb4dbe9a7bf5813b3240eed0ebfd16b5c0e3de47a10a1a3a323024bab890b345a6ddb3c7ad87990bf532d495eb19c527ac8e550faee373cb91cfa8d7aa7775b9b4e9ef6cea3879b77d9ade4b19cb2bcfbfcb6713993e525963a6737597eea3ce6ba472e27d5d52097a5a73fd5c875a7def452f4d1d2973c273cc769398be7a4a5a628c431d10dba6c2e2e5a7de10fcba12d3e7442a3693a79d176dd2197733232df7d3b791afdc9bbd36a3ed8ce779f1e6f20da8e0a3d622fcb8b982c3de555f6eed851bc9ac72097432f3dc81ff5bcfb6221ad26fe60c6846eb7345fc9b4c56c4aec3dc2b6fb76d399cb319dd6d40f68e97d404b6beaf420aa4c153405847e9e7efef4d29358cdbb26ab9dc5bb472ccb3bef46dbfd44bd8d4d9dc71d722c5e12cbe2153159ae9a4e106dd8ae7957dacde441fe5e78557a8cc5682c8663939182ce679d6126e6a8b08088733dcb8432a1ec09be0c19a7d3d5eccd842413d82cb25eb58f8c8ce00e8f764646567a98302b8611174d9232a1be72a4c3a3045226c4ab4bb316af6e9745c9a4749911cb2d3841fb10864f13294c364833611ff511dc01616ca20ce6e85fb661eb063bb6a16565442d1b7c61bb68c77623b5110c2c877403217b251396918bda56e1156c826d2bec6d2b3c48a20ceee0b70eb8468fc2af3fbd09556da4082b8d1061a51752a448d981572e4f6018431ddf256d86a6886c2f9cc2f67b441efcb6691b2b433f5e70a04d7135d926e5d3c891630f1319c21f3363eff3907e9f087fdc7008f47c8044d0075ec1cad0076f08112222f043b8eab84d73777713416ec6b8c01c638c316a9aa6698fa55249d3b497be69a5184bb1a4c5d8dddd33ca31c47c386cbeefc301bda39a40ef87824de5d16c96125ec12b52fee027cf6cb66af2ef75c9eb92cd5e920e41e48885177b0313a8cd0dcc7ac1e9f8f24f8a9edd32da68b8230a1fff830f438628fca1591042088d2034a202e1140aa5123e4df8ebecf03d29fc9df026fe28864d186323351254f5a369c28614ca9f253e17257deefce1d5954c6493964f20521749a0ab686e75b6aa4f4dd078ae43f8eb8e1d7578cee71faaa64ec71d5ec533479d66459c7ee4691f7edc0ce12f5e6007881f90626cd4893a483c7127c9282ab1fdc3637a30c6a69cc6e60629a594128bb1b5d6a094d7342975dc865a61e6484484572dab5c91734a295b50987c01a560e285116684adf944043a447b4e14a0e0278388a620d9eb9b8c82f214ca903d53917d367f5defa3ecd7b718e914f64e30477ccbcd80e563d76bf6d3aaeb5287def91321b35098236ac0f22f9992d713c02c8a743da6652f067a19b217cad4830414ec8552ec757b5181c4127b71d8eb32724e09493e11c384689999b90a441f0e96bfcc0c312c9ee79c31ce189999d9e6bb0103e577efd0dddd2d284aa6d422dadcc05fff66879b3d66bf7e63cc1eb307210fb90b2acf87fc48a936a18aaf7d63cd8390358eb5fea83a6cbc1bfe9a881046d4462bd507fefab10ee10f4609e84b1354082322888ef0eac2a30b898634a51c759e70d3122c7c0cdc01a36cbee18f7f1cbbc1bc1fd88f0bbbbc1f373b74f1c30a93c73c686f5a569b9726e885adabc3f2bd61870ba75cb9817f8385ad27494c9860a5158ca4ec4bf248c92379240f4fb3faffbfea2916be9100dfc2891eb4f2baaeeb3a924b240fccc14378969425c11d10e668b882300bf8f1b356b1f401bd59d29631e9e16346bb7536fe5edd0de123fa90f2e2e1c15aad9c0904d45d4bd0db3e36feb6cfb5040331505252ab1579220f24ba96a0a5c9122dfb88d636e7a36b843920430bb91e10e688e7bac5761965d156dc4682cd86b2a1a1217bdb08094631b2602bac511ceaeece5a8d64b4fdf057940dc11cfc21d0c904bdb7bc015d57a4ce150da50a4da4a96760032db0d801bdd426f595a653eab41509680123865d47c5c08089e5ff20c22c1820d88281127b83657bafe3c256e703831bd88b5db2063f18f4ac139ee3748d61944441a3de02c84a1891e08e00c01cf2f25b6c1e269dd6bd8544e2615f7c59c7cadf88640373c8bf44a1fd2333d94b5af2587928e523927c4c92671dc94bac641f2bf9c74a06b29285ace4969511c94a2eb2928dace4232b19e9729295485306b9dedc7daca692d8ec0854fe6aa0ab8b6d08930e152b66a0620560e111b0d084a5c2055f5848450b7c8c2ca4c2052bb04d0477701230475f1e5b8e896892b3f43e2f6996e97df6e19e1e5ef1a98552f414c1c69748338e087caba2d7e78fe883439f0ecdc93ce47ce81491ad08aec6ada688944cb554b9a755dd43e9379c22b25d4b82f3eb174764bb568bd07e45a38e38f3905b40c4295554abe4bf56c96f44512eb12922b088364a82138de6214eeaba7688d3e79e66a5ae3a647be910e7e39e66cde31fdb3f1581deaa800436e628217a5156c87eb6e7250abdcd3db67ff1348bcb10a547a7e5d151abba5b885e604507a7df45cd8238fd36eac3be4df44519c4304507a767890f34b2533421093d3a386d05952648d1e1a184265a385712c178d4ac26c2c9ea651eac1e5df5c624db97f528883c7f8b10c66661aca66e692e0fdaec08547a2f5228b774742c6f41c4848ebdb22417774b30d9addb0179603a1626c1b9f4d2d8cf42782fda43b82afdf235bec61a6fd7e69c9bf6a869875acebcb81c4d48fcfc0d5ff3a4d5be7dd3bc4c7ba6fd86a7e919339bea66b39734899331979359c801998f155e803f2c3564b60abb3d194181a83ff087b15441b1431aac060191ae216c43c01f9936fe8a5e2a087c76b66d61f5c2f8e0c20099c036cc4f06846e29f2369f0be6e7bae4617e609ec014c1588171a2d3819102030433044304530546461d201e5eddcda7dbe99410f974336492666d68938734b7b66ca42972659117cbbdc88be704fbec4210dcb35f26ca452c77bed172875c7341f4390fdaad727f13c2f211cb1c44f668a5bc5c89ed47603ed50304813c3cc4a9f16c1ce38498eac7df67fabdaf889a4c3d4cf58b0b80b75193d37deb3cd9058dd6740ab2bdbbf48a90aff90671a0b005a4c442fbb61dbd131a3c98e299690131b1ddaf68024adf75ad148f97eae1af6b75523a1f580ae84df16016eec0ac89a65937ae7a7caa87bf9852224693be4263fcd4183efcb14c81def88de1633acdbbcfcc3c3e864fb38a8838376a8a1ee2dcf80d8fb62afed404fdec2c942209275800c84841674eef791df78387ea79d14a2e48f7999a0ad27de63335885a372b97a754931450b376ba67055b3d6012ad8c9f94502a0a0b3a21a504af600ba88a8d4f2d99a19d8b10af6e0c1f9728bc824eb0f1317c683cd288e1c3f9f05df5c8f550ba2a86953e292235575d558b90354f82239778414150f3cfd4b5a857e3f3523dd878cd6b2a08e46d1ce234d7a32d7606ca8a3ad1c80af53623febaba59e1afcbe984d0eedd330e88d4d119e208b5f411da208bb01d90b6f55b34d267b862bb4f0e08eb58233dc40cccc121985c4efda699b8ab117ef4570744da7a8d1322edcc39c07606368be755236d672a8439e88d1ebf59e155ad3789eda857e31897d3bdc6833846dad25be15557e337235ed578fc8c921a5eaa7bb4dd69f0525ded5a382729686aa6a678f89358509a0af9eb6efa4df14898a3ab903f54bdd29e6a3c88d3f1f77a4df67426a6d8ec2d4c44b1a6f399a8626558d86202c96e6db2e1a57a802f62dec66dd4226aaea31d043587d76ec3ab79e4806467c92d00bee6363c78c819d940b4dd5dba999999cf504ae92137f36ea6de24b4bafcf0176d86608e160c7d1c6a55ec5ad4839940473ea475110202edbe752ddb823ba28d9f39842c1a4e0f21cbc6bb43c8523dc637a366a92a84aa18ff66ea45a168a0f5526aa342a88af13ba19551d0eeb0599c0d67c3bdf3685c2e6956c4d97680e422757860048b0e0f6e802232ea807875533c9d10afee44a273a28b2297c8255ac4f089e153e4224405a3cdc826b23cc5d3aa2c28f7c46f33602ee35d0be688cf80406f0c1f97183e367640f2d43d3543df55e9bc17fe5233b507db99ee5d2bbe9312df0df10ac6a83b8aef90ba2fe2bb2bccba74ba294ed8f88ea8598c133f433b17211b1f3b2026f1b2493ce4805c2e2db803da7817211729bc323d3e864e07349138b508c9de52217fe7816f3ab4351ec49132bc2b69706f17c17877da781745c38bd1b56e8aa707f8f96bdba2e9c5e3c3f06478f8cbce95637edff499ea3dc2f6e55dcf5f6c215d3ffee25fce9e10d9f9323cbcbad1c2f811b6309e72e2c6179f13f28b27fcc52735a4b8503de1d5e582575c659af0177f6a00ba913a52a590be1f5e5d273400f1ea3a9147bcba4e6ade55c627068957d7898d7395f9e1f9f1f89412208f4ff52020c8e353348f4fd5787caa3e3ee53d3e25c4ab2b80fb787c2a0aaf6e00dea3c5ab9b73192129bcba3b5c264a6aa8018f4f4d61c0e353440b787c8aca90c7a78afef8549599c7a78c683c3e65a5e5f1a9245e5d9cebf0f8d4155edd9b5b9d03ec188047881205f4f0a04402969c98509fae098b10af2e0ecf210aafee8ef3787c4cab008f8f91a2e3f13143bcba308f8f99c2ab1be3f13144bcbaa8c7c750e1d595f1f898225e5d99738f8fa9c2ab1b73d3e3638c787553315678751f93c4abbb3aebf1315778756f38011e2fa3c3ab6bc36d1e2fb3c3ab9be30078bc0c50b38a90380378bc0c0f0c0fda0d7230ea4d6261bc7a3415380def1378e79d22f0f6380f49e6c36b50e0468def70e3f771a3feb801e4c6a946bd3f5e6ff8b8b1030d0adcb857811a35fc3d6ac8c94140bdf53582783935d490f31d28b5de1ed98fe75424d347bd39f3868f1eaf376abd34f76e54ef3b507ed4ebe4c67dd49073e33bd490b3c377a0f4a8b71e0134f57a0ff21a14f869d450030d9a1a6ad44053e33b505eaf931a4e83023550c0470f9affa871209f91c067803b731d2a92f9ed4069c0c780eff46fa6de069cc66700069c24f0bd650233aaba03e5ea705b91cc7bfa010e40e333435aec0f509150da7d070a8d7a75784b4592d16859c00f5091cc06d47b80f90dd1e1343e1a34eafd5b3e1a2ddf81b2807a9d7c1fa23ac077035424f40006a0f105bcde960ff98c046cbd3a9c01aad3bb8a64aa6c77d58caa926007ca77a0e850af13d5ad044eaa7712d0c1fe0d9839034ebd967507ca2572753c878a64ca1c4e9c02ea6ddae52075d4eb809f2a122a75288042a093678900a5a1ee40b9422e8f99030ff576a7158929012c3954249447bd39bc003cbe03a5ab3701199117a022990ea8b70053f2908077b2ebea3d9d45762cdf8142a45e27f23cd05000791d15092d808eef404940bddd7938d5cbf2049c4240c81540430e930605703fd1406938d1ef401152af131aae0008e440c3794020071edf81c2d57bba907ae91570130e1b00a848e624c232b50dae7b605524d4c6038870154966ebe5de36ce1e92cc3af1c1545377a05c075c02dca622992c1b930c661601ea65dda622a13504e87a51590f976103007f4045326dc840bd6d74b38de6ef40e9a15e27366e5303001b9751630380ef4041d5db47f165dc549164d6098e180e98d6490d6bd61081798c9a7a63dc5491986c25c10e14cef41d280ea8d749cd89e060d5eb84e73835274045422d0976a0b008f01d2830f572878951afe9317ed30d60c002860851000f09088200203f7c7802780f2f00cff16cf80e5e8eebe0e158ef26e20ce007f06cb801bc1ccfc1c38187b7837106f00278365c8797e32c6f4500ef86221a670075078a00aa0c107f310055c609fee26d3c1baa131c078097034795116a557c0d5ecd6f7836aef26afe79364e835753657c6c54999f56c5d37832afe1c5bc7aa97bde8cdf93f98c17731a5eea2dde8c9f3c99532fe69d973a8b37e39c2753657a38a6ca2891aa324bbc195586097ff130bc9295e161598820095f58949755c1a345133686d74b8860a80b16c6c3502005d216306078b0f5b9784658ce996a7b37b6e937cc793ed8b29c7bd7c6da081136bb496c66f28c64363b0d8b07eb11b6d98db40c0faf64846494905962a30c132be373659ad828f3d3f22bf34406c8c6eb58983a027ef1262f9502f8c57349d8789616d8f86e091b4f6560e34f35b0f12d1e84df4de120d5e2417bf2a0a51e64f1a009da131428850abe10515eaaa755f1a5948f8ddf524045441cd8291e9884d6147a7470342c053e3890cb19923afd80dede2ec573c55e6a6fd7eaa4b02afe86bb167f11e7a48478b2500a14f4c0f28988dede140fd79b5a62638aa7b66866921921689310216c8d339da03127a98f8e5a7a76a0d36a2ca23cb902d70cae19c06c715fac34819447d8e169517941c5d0972140b19c85ad21f8d84bdf59105245025ad0ce1ad9e2d90a396283342c4ca65cc7b296f397773fe7b359afcb4aefb237adfdf2b6a9d98959ad9af893973de48c402ca731eebee10fbe250637c45c34170e7bbd5cd7e5c1d8b1c9b0419af86d3ab4899574340b881f33061ad99a14af6b5ed3346d6a33f26c5ed4e12f2ae1d5f59e8b082e82a505266b52a209415f2810cd22a26112121d7a230f548257178a216a4862f843a1e67f342bf2a0e8bc1e83f070d5c4b3559e09d86bc61e2051097f3c343caf02648a2519c496cf95411823f60b5ed7855d879e1188412a10070bdf3ecccc45be4001b14411203ac05a449f6645a0567544604204f4c2a3c804104598803b30ac087f7c1dcd71c9f7c1a32320f863ee09dacaaad0f3bec8d92a66b16ed8071af85ddff5e1f0bbe03501f9f77fb0dd496c7466b35519eaba0e5bc551c6795df292f2e24b7637050863a6a355f0da16683cf775c9ec9b33fb5a05df4d81c6334c124b2bd820afda6e336698bc2e293b6b78082133336dd59c1642d63533c81a1694b06913429586646297859f3ce4c766292f2f42953cd4ac44a2758d871c8298a4590e65f292ac691a12429b17a2e4c0de4311e505518852822428cab041414b16b6a0f0420b545ad882c20b61a099852d288ea030ca32ec92341f8ed30801c9dedb38618334d705c8ca6f988c97bdb71d13b4b13e9ffb49702e4d32e9a0ec76c5a453b724fea24eab62277941fbd96f27c59a5dccde4eca926a203fedcd9078f505af78326f4b32edf0270f75fa0a7ff2377ca2824a1dc93205ca2c43f46e4936c9cabb181123fdb499acb9440ec6600617708108510c610a2cf6dea0022822d1134e6c7fe3727a6271c3c5010ef14b5c8e94fd44093cdb874f6cdb2e073b4130811441185a82900b602c7fde0046c001108aa8200a82cfa51b5f995d6029f0c189b7d1d1acf89b6641a2f81f4145e8671d0d8260302d20850654a218c39012295178c1c105842d581b6c5f9a011ac537a102cb4f68620b2a3f78020b2790c0c2892d2c9f06083ab07c1c4d93ace005312883d0144e20031be0643be860fea8a952fe4640bfd2086cf718e887c30737a033764d64405690903f1890172b6838e51cba7c40821230164912521fa040099c128bf6c10b76b8c288a28470049f10c3d4ba809a529357c4e0c754058d4182bdf4455bd8fb185c7902131694b6405116b698fc685acb6a4ae068f21a5b4dfb35efd3be232aac8255a615ca05abe0d117acba114ca8b4404af99728ac8252266b072c4c6115b4976e43b4c5c216932cd86f081976d17c383c0b5b34d0224a12ecbd4d3647204f53406517712585f8cb7e6518acbc6c4264012193e4c5a3852a58791859576a61e5e590b4c2267ef27228f2c8ea954375f3626bd66875b44a5ea69217711806470e350b76776c8ecd62c39f3c6582421c29d4ac2172c8fba155f258c4b06bca110ca2297888acec88c49364af44da80a638c204d462573cd24174232f9b00057b4df6da582dac1040342be2c84b20b8235af943b3faf2439af556c9db2978c84aec72885749d70eb3601540920aaf608b0927aeb462e5a19432649487523ec32e1b5ec9cb03c12bf922bc8259f0d0981726c925293648631329ea2589de6e43a1341bfe38d62b9f40bb6db27a6fb0dab7ccd3eaf46e1fb9e90b822226cf09f60b9334ac6269f9a8db1cb66c3a48d44ad8f8b20a94b9ad43c5749ee671dc21c71d76dcb56e7681de9e8353b280be98807697d4436141e7b55fbabdc4ab1e085979ee5b3475fdb57ce33c26a2dc5bb80af9ebaeb45dbdf4903fee524817145a8dda530e7340ae9f322844815e6a35296b4a1eda548f68e5d946bb490fc21cdb6f7abb4cd2cba6edbaee14ee80b6eb0e3b6f765d9dfcc94bb8c3741944be3be70521df7d93da5b0e3920da5b2aad455e2c57af3c07a2e5ced2795c4ffe4c5eb4a56f2518b9594c15c21cf21ee6a52e7b7929598758c8f58887872dd60eaceaf78d12e8eda5b74d69d4b290a209556c0d0ba5b0420b4eb2df300aeba6d020faf240ba06715dd620ae4f59e488bdde98ed6bb6a51744f79833461b2e086cb81fb0fdab59ec5a0f6dad875e1473d6d334ee17d7633bf7de5c4e2e2edd0d3f464602a211443d50c2f2bfbec1a53b451e9147bcfc8c3ca0e990579dc976d7bbaeeb3c6602ed4c41a8e7a4e5f1d0b697a2b5475f696194404ef128fe849c2a655a51fcc11b669102bd7e5192cb71d2f2c80539557a162f757ab427164e9d4e52d057147f57d0fe75c9f1d067a15ee751d8b159267f1c067ad53b35196d908f1e166d909f300776d39ca5aa1d6aafa920a9eb10c7c42a4e5d97f6b35c0a414c725d2c349053e414e905394576414621a39051c0d314d02a445656d4b3885718d218b2a32e8ab4609b04f64e1b99995966118f12fe7822d14f1e25fcf5e30d478923a0b3c55fff0a2a349f68bff140d76310f1f34996c45f049a403f168b3c6eb4fcc869df26933802fae432c9287a70c50ac0c2560f865a4638b25c8fb0bd1ebd00a365cd8b964b40b16749fc65bf1b8439b6fae487571c8555ec453b7f2690e653e712fefaf20a7a93585e62fb19c7838c36c473c5a20db1080f107efcece155acb387bfc863468936b410acd7378d67fe4e1eed373c85a2441ed076ec2345a6e7a474cd9b4a78f294bcf984552dede46996c4e9cf9ef983047a7ba7508b85522071033b856417aa18d906c3acc25f4f2b5632cb2cda92f8eb2bfc350fd9d4b9bcb6609845b6bb67959b75416f1bb5d110d20e21b9ce22fefa4ee89d4253a8852444c11c94bf224a7b6267c406692eb72c3fc218238c0db1c61a6bacbb0f3508638c313b9c52c22f6012bc523ad610890aab2203a88454f88b45962b108d22117fcc5fac12a9f0c751683cb7b01b5c31e914276218c30cb490e2042b8e0054e481560b6c9045125e1881cf13342638556690858f0ca07011032c28142576eb26945f8c800c4c1c818531d0600638975e612fca4a2f80c18b24783094842b70eeada4f262ef0d560ed9815990a50daffa524a0b210f4902cbf667eb7ed68d83bfaf25a4c1028d22a0d0c45fcc32288b986234dab01b9803072ee887618f7d5d18761dbbeac45a860f2864193ea0f12c8dba3be6853f282b27a4699a8683d52eb5d6aa6c29e74afb95b235a8d5fe67a3e3105e42b737a600e80e0b2bdbcb8339203ca39899a7fc895a2943425eb1b4d272d71433745eaca07d6861eb8912f6b217e687573703fae1d5ed60849af00a3681c5386d2f4c94ed09d0fc01bd303f9d0ecc4fa7a3454b5111158caa5106d4aafe0ca02d0382f981d1016469efc3fcc863cdd22a8c0e60a4c8609eb07dac42a8e29d34a8148cf67545ce3a85686600010000c314003028141009c5228150401a09c23e14800d8ba24c744a9788a32007521442c82043000000000000008c908c5400000aac11190708a1d133537602071518797ff5c7f633d2ee17e9d92c6f0d5b080d5d6a264d90adecf4a2e14e5779779115c51648636f58ea13629e07049e93c3e76372a6b10760e2940af415b10b740136bf64f79775bc627da231401c5202bea1613318c8e4fc18ebd683fc1dfb46d7b6239d1a0b4b2e15953776b6ca50a1e625e732a2acf98a651c3e1436ac286b3912619d96226ad91e1853b7d5d8dbf795e9874016d04260ba0840c7e355b558456ef937961ba80dcad5cfb78653bb64440d4e1f7a49da4eaab12300789900213905b91bba0cfeb650b082e7f86ef1211e29774c22f7d24d8790975536a16d064d937158d85375be14ff2f74d55afdf658b16cda1bf941e3fadf08c2d939ad61b6900ce01d0cb8169950c7a155b1588bd494d6aa4e8226f93fd720c4a23db8f5f8a4e98d862e741508eea66bfeadd76d10c8a226305373a92e3f3602e8093945a7a3b5b65510b71b5ce387eae221ca9d09dc10ee63f27ca10a1c56c6df226198fcaf41bb8fd10edfa9d31e2673f3080c2c82ec3fcd481643905902aec1638ab43a385dd50f9356a0d28b890a791575f3a844027744fb3a0b56b25514217f7db448e6baa17a3fea538b24a0ba2e4d5002e9647a0c048f92f664046319db1a9c079f2efb550566b4544d65fefe505622fa29400cd4dcf4ffd3931c3522a30ee29e5c8c500deff338a111d923ca03117b603b07abd3ab084fe4a16fcb118160127dc70108bc73470a657d992f87bc6c53f14f0cdd001507e69b4261030129e4a690b20d8522b6299497010c9b4282870ab3ef94507250d8f8840a55d74ef5144c9c406f6ea0b498c2f60d56b4d2e00c2a7d8100c3cf20b94c98a3a142060e1cd7447a5e9f3326b429b0b24fa8671254642e41e53cfa7087c75ac54b808613918e72b8c0df46b874e74770223ec011304f1f88b7e39aa2b0570db454424b1c9fc4e286e8cb2cf3fa37fbbc804a53a74fc3807dd4e22bb0ffe06b1797c0ef24752e147603d0183a44172ce474a05b4ce2a4e928236792762912033bcafef5d17ef6aa903c306691e4f8639beb924e1e3a1fc003c818c260942a02cfb3a625191e4e3a170d0ddabaa410515b7b1531322052a8e1df312b03210c50fa7e7348072762f7f0a407a198bc5622d653cb7fabf3ed1cc1af681ab562c6332d039e27b483cbf2db6cdae610327d468089c167d62a23ce7616d180c1fc38a0757c2cba1bee10f4629f3dbee5afd58a375e71a7eea88eb1f9c066bde376471f535b4770e2568d0b41661597a697d5473bf2546cdfdf137e1dc2f7c9dacd0c3cfb03b18bde78ebec0d44db55876d1a298aef9765d61a36eb4da22771c25b0d287a0a58c823c69063cdf48d15a5a3cdd9f98fbe4639a310ea071e4b6f873a6ecd620d1dce99fa3c46816d256cf77d0f386e44f6e489a0810f71265555cc63133bff7f926f05aca00e73a22ffb1a33609c340c4482f880e7f9f1038d3ae695e95f01ba7b27c3075af5d721ea5abd526dac7d532124c9113b398fa014eefebb6d6bc017f2622c7adb62dce393e316297736326ed56af7ccb73e7ae54c4ed11ec57aab8867ca43f31204c40949748e0228cfdedc4fb00adb1cb72b8b548c999065fd1f7dd6d4e69bd68b5aeaa103dc00e49e57840914528f4907f6545558d2aa130a269cd686a266b2cbae53990c2464e56c16a030d562e58f351f8aba894090a197aeadcb8ae0e2c25ac089168d9c166ee20a4898ae007193a7f2a556d8a8491c45a83a9ecc30c89f485d0aa08d97151e9fd780db051d53314f38ba98b4905842eb3f84dd38b780dc68846c74b06d5dbee88b28e1290118b739be8ae39948e688b0a97111d4aa3249b5ae4207e345eee200b88027239097aa159d22987055eef9802e099795bec409342a53e010a13b9d13b02da31cb72c6d99b908972e7842ec56fd4f8969ffd761796e15b4f7d8a6430a6afd3d89a5090eabcc21be3d13fc6925f917dfa0a00f80df6845a26f4a59ed5e85db9c73ca21dfa10a8eafd3860201764505db700555310deb36407e62e8398c6e9b6ea3fefdb2679de1463737443a28b54ab685e546b4799b4ff26052f66a021a7bcb98570d6d825296bacbc19c0cbe067b0a5322095c1bfb44c6f39d2ecd5116c680b29e7ebc3e1e549cc192d649cd060d46453a207bf7269e9f31ca2b43728d9df6c581430f8c8b02dcbef056a325e050788f2d4d869d65aae75b8e9a16ae58e4d3246f95e56622e94f875e1b81b8293a7e5621ee12c831d50b8a47c9522ee559534074fe1ec20526459e0ef870ab0c83ee733dc1ac96337ad2c302ed488c737b76c7fc2c4feab1614263ec84d8146e66fc87adcce7205c4f5f27a935a8093a85eb63a37162a499a9a1ac5b0593a16e32a8ce7b64a1a7b8944f8a38a134176df83158e6bc8e995c43f7f1a0303d33844a721c84b6cad478d4c924b34808f03259691ecccc945ffd04282f558fcb3680c14e53c467764a8926f01d1710eab4f3168cc07b5a21dffbc51d77ccfffd039adf089ec6643cfe879e055cdf2855f7fc5baa53458bd2f5c8491b87d39d04a4005d36755b0d2d2d2ec71531bd5636cc62f77cfb47d445a52702895e68f7eafdcadb7bb351026bcd4790731e696fb04e20c0d43855ee94b526c9acfd2de00820fe0233b92808d643a19536dc9da5aa2cbac49f518e94b0dce5cd00923f2356ff592e1daa2d80005efa4b42db6098390525e00ed491a1ca6be0b4a34a73a67db575b69971acf4ea029f806d284b254eee1a1667f8f894976e4f9c8bde1e3e66bdb535de53df654e82dbaf5f9440087b2e0e5b3ab8002eaf2c0cd87ad5873913592edd0b7ead530098808eee82b5ab31b1e5b5464ae0a392bb4b25a1aa709e0a1939a1660182ac51db77c265b9e1fd00bfeaa3167a69fd24b6df3fa930740dccbdb6f621d4530ce457274c724aa2b04f98e68357f652e2e9c0276b23843923b35493acf5e657e7abbd34d5e93ca884fd5090b83d84189a2a54fff5949427c45e2d4411a0d60f1a951ee3172b06c4f580caddf7f0b43f93a16642637af092ad0a3adc40fd94065868379d1779a83ab879e87c2daa12805332eda58d002a55ea5900b2d6adea24279eaca09c1c566e70b6fb86760d4c8b8cfa767e55d792270f34f8105940d4adb3eef27cf51b01b9fd12d6d5eecb47e322aae59540e05ceee059c805e58b831605719dc33be8d7dfaf694aae6789177a5adf3fe6b828a794a74088111a2496c243ed8f5ad5e825cbb953f0f8a907b8a8c327a7f6fe7027e329a841f4997dbafbcf33a247ff5c2d512137a2b38d3b10ba1feaee2f4bc10f6b3f28f4d3bdb67470b524779a960840ef4d9b915ad812b1a92998f3f4be80aa1dfb24e0c37f9132805bc78da6c5249dba1c803fcd6fae914e635d84bbd2795594c5bbc39557b1d1d49a250e615838f69ed1d940e1956b19e577f2ede01960c46cf4139cafb238be7a3121f111af3fbcd38c4fc9375fa23a2bbc2205f4090452ea8f5108f45ce59edf26c3f96530f3c9e0ace48265f9f181888003bf9eaffeb1af003f608b7c931f4587770539c4945a51baf77d2bdf5a370b75895f5418ee398fc47dc6db1c894b8767c56eea029d379fc86a05d573de0f8b7fc929fe05939bf2712ad2b20ba7a86be4175df34dac143d03f22ebd2abf9a77e3e734ca18089d263fecc25e0a7c53355d401eedd3e2a5f41a5f7bf19401eca81bd4be87a7b18de2cb9efbd3dbe4200a5c66d70da94cbfe412fd51151673dd1789cdd0c276bc25c504863d69e5e84ef00d285e64cbc1702b57658c308d303c48e53e0ed98095e598bf09f5048a3e15b7dd3f8a74c18c4d9670f10a7bb9d238d98acb1910ab0f9a4d807b808dd3416d1e28eb3afc77dd481bc108d48065097bdc1357da3a16bf400170c40ca8d10e29dca13b994d5de3d747f21d89521419a9a6fcda272bb62dae8364302835d95fbdc622d3384d368fdcacd0ace4fa52e29080efa5ac9c3a71995305198d4d8f92a2714888a4f4414693abf9329cc68e1a863f8eac840e243b5d46f4ad26ed518541cc4f8c9d9d46f8a4b5453102eca1078e9881cbddbed6e989b131ef42c1ddebb266b1ebc4f26e9fb823581f6780f3366a13babc67fe689f1f1ec85d662a512ad03ad269d8054bbb29a8008568039eb56f9374d73c3c8ce55df70a3ff6d5b47decdf62ab1c76562e063577603cf3e86fb4543eef6cf44b513526e8d3d9cbdc2d844c072a4d874ad9930354865c04f8eeb869bfef858698eece4e4468fa795e3fea4977792e230c1e151343c95c70e299b73186f4ad7618cb15afc3777898f4f0a05aed1650e9867d13989efabaafc3db9b60b455bdb80e12677d0b97595380f8f561c0d0a12105baad79127ce2660de478dabc881a4e119312c02f2b2bfd22c33b7023db6c765844ebabeef9ab2536fbb41cd67aa332ae98abf0844c4f21f5ccb999596a951807638dbc9d7c50854ac90f7416c79c8d0d8693e05f23b027153f9bd4e1259dff4055104b53988f9a4d94f3dd5b46e92e69315df6af219c7848879efbe4f424461241881055a67fbc77eb5277ff64aaa39f9aa538839a9a413f044ebcf8b4928b1c66bb2fb062a5ee91d1925216a24fd081e9b37e6b861ab57893eabc36f78508dde82a91e6a80fbf7adaa1a45a44328eed12f7374858fd9476d75b48979db3ff1e4efe5360abcbb144e0a00baf19aea9842ed26e0b09322c26fab1cd60f17485716a47dd999d316add5327837de74f880be7588c03d4ef481fd9f9db4c6cfac340db643e1829afb5efa77eaaed05dc6093c4c245f98bbd843b9a9b8524490bd602fe638500a44a26fc324d917e1dd3f494a5674863ddd2a7d211a54358ebf23d3f76b98069985ec8281ffe1f7e9bfc3740fd9f561c676a14cf8e6525e9f138a8423113201340dc4e376a469357c92268dab8eceee08268718e6a4bb1bf629e32150a064826cb1b8561efd87af4c2613aa511ca942fa9a70e8314010f645db917b1345e649d90ba53647782b1484f14c6a6105019841fcfca8f632f8a63f3d34f5058e37727d968ca18177dc971be2ef72b4f3aad3b691327d0ec867a73d4415ab3d1ac278532070eb1bbdecb9b01e05a003c75cfd5b9b80155c79a0a4000c1540dc97ba30e0f56607163b5d0323d26e48488cf06c651f555a74dcad6a8f35385a5f330d2d946e1db7c605dd0f3981b42177d9e6f4ffe1c41dc535c87110f78ced320cfb9de5b87eb24eb7935376edfe000d5b8d86b2a153a4e7adaa01766708778433977d572a5814c78c27b464ec5b02c09c3be4651b172859ed218b6e3ec5f747c898c42d3a907e716b2ca166c40ed5398a98b2adaf745b6f05c677f68107e9866b53a403c79af9c662f9a651e4461b3f58f37a1aa047e82f6488596afb0bd9cf80b919007a8f00a0e9ca04883a44bcf427175c0c1497f878cf6c03e06d1bdfa7e60770301d1d57587fdfee848fcd94c89334d8f6d9e9b6113cfd82b2365994343e76b636c8dde5449797488ea84643327b91707ffb380337b7d93d78e0a58374912028b10a026b022d0d628f775746debdc6530585cf46c9b354558825db3b029c602ffd66975b710754dabf9a4e84ae475b234c97aca2f6047f8fb65b389cc2b36542636ace689120053fd440769e8577197a7ced36a9d64f5c3057ec7b6a0f6f4f2e5a419e509effee661e1dc557e80dc45ea3bec4ee78daa18f32d605adb18f31896289b3fa1318aacea8284061219b3f995b188a23b538dafc1aaf2b7ddd240aa2804c723a2f98fb4e4b8740ad4b4e2e25d99263df38739cce423f117291de8936e0d318fb5aa2ae4fbc239234ef3d9aac1eb99fa1126e61fbfbcc83ddd9e8151370875e394d839231c6224d7e24723f6d55b64a81a85c14fbbc4180bf4a2b6a5769c8eafe0858b3376ec58738e76866926d0523f267e54cff98e50cf8e9023367ed13ea7e06d413645a557193cdeaea6748a388509a9039eb3550238f7093faf9d84646ca507b1f6843e930bd27a19c97f22eaafc84ad0d2a47ce9ee981d14186a99885ca8f122e514c8158c0503b52b6426e1cd9182600b944390895ae4f029ca5f1e01ab7291be465122d007dc06d04923ea98791237a82825469d9a53e090a094b2113a255962afc29d464451a3d0ec8c0fe18f40eb5ab4772ff0b0e5a003829d967c7ddae7b31173d0567625fbd7ff137ac99986c13fc3aaa8704043d2f746f7bfa02401400612d01cb309c969ced44e08e4ae884f77d9b7b3a81ee1f947872563fe59a89c80fadb7288cb6c70ec6d6e8087e54eba7b96db621fa5eb5404dd3212ffa361b1dd93a068ccf1dc7d88cb9eaf6cfd5ca31dc52b808ab84d007c6e2c82ec0641c465e3672b798eae53effb9c43bdd139fca813af0133a140c434c2b9e2a52166dddb2cbb5ba02f1d27b2799b31a74a502e384cd1039deca53db48d738e81013ca131a397f8ba5af4929f7206bb47879412a64f917edbe9d393544382f1f9df6d7e70cef99b974e4c2e4a06b5677a6ec9446beb10359fa44f11cff62eab695d7c58221c1f290e0d8197e92349abbac210e81d7b2ce28287c021921182a92218a48deb54c0910d23b8c051ac18340286bc3261e89295456858fbe0151be9553c50af6c80711b9ef6f6b858fc00b648cc0809dcc2f8a6a1810ed0e77bb4cd4295a4ffcab08007f541a081eda211612b15b8cabd186f67154711e1e81bcd91dd5acfd59cb91625ca709c8d1932abf547d7ccca35079359deb3fcc1876cbff0588fd7ad186b9f7f42e728e038122904177a7b4172c128fcf440a2148edf943c986c73af934c680f61c4f902eb7c2be0ee774b53692d4934128e62e785c7c7e409ee80f2854803f7e6304e4fb2c5fa23eb571e516493603fc3df780eb2a1219a1ffe3b9547e8da9bb2b7f15116f807d10b87297d557b9358b32a6d7a649621098a12aedd7bccaec1862cc0b40ae85453a99dcba2a8e28c2e72f04e84225d2079609617b7352a81dd161ac30bbce53eda71c68c3add3dc8f5289e3d68ff45ba8331b9f6952792734847cdc89e78aac85c33c4f825d993fb08a61edccde0c961a9859ac49a9d2ce30b4dbb5c1fa1ee0a57e9c5ee090ad63e84024ddbcb753e3042b43d25baa30923913ed10b7821a5ce7df61a61c86ae62fd709df17e8ae57c409b6168a53cf7139cc01acb28d203022351f0c52d404d01d7fbd0462488988882f76a148ee1e40af5303eb5dba82008c963f9d5b245a44b36a1977a4ebeec97d40ac13aba61f3924333b46703c261e2b68c4160614bc1eeec3e38728833e7501a721f80fc0f4a067962a4692b7efb79a2348f7022527a66b43ad526506c20bc2ad652c1d766659b935cfa35d1eb4e03d11fabfc9c2ff95194bdf0f388d77d8b897b02a0859785ba9d58b01876398acbec0c6bc97411507b4d1e4a13701dff2bffe5346f5481870e64e830091572c5fb5299fe199638de805ad8ea54ecf76ed48300195d98fec4ce079f8996dbcf6f7cbceed1328a40b2c11798c7d3e567f2130ea122d5d0847287a12aa5239a52184828fb787422414c2c2bc3120cdce49e3bfb374374f76d3a9335a1cbc5e78f1766789d9d6f73fd6eb709b552e9c036cd8a3d942ee42110a30e52a135a5bade25f7882bbf85558cbcaf5fdf8e6b4a9f02f52e2b0d80869c673043825310318f4aa10f613875a29077cb46d38219669853677d2c0b2db5a77c7e75fc38d9335d48e40ef8f4e68ca04829979b3e2694d4c4eed89b02295a205487158a7aed134de569182bb35d476ea0d249d6ca535b5b38dc9471682bdce6090a690d09365940378059ef424d827d02bae0eae7f6d7b8dad333776056195b96568b2be859f60e40937066272d5869b3462f8edcaedb5f4e55693f65335db0a49250a98ef98e62889595db69bb02ed35023837667092d5da9de75b9254fb6e93a595e4679b9bdde7903052801e653b70cd07b0cd4195b863cd1f93004adcbf4e0c25e35a41bea8e00d58ca1297e1bb9458449288489414a8fcb4c8b1e8b6150b01a1f0233330817a2b03ac799b47d74a1e14c70355b53d06c768d58c0cd1dfc16f70929237a8db88a3a111661140b68dd22b31db967f6cf79b6168a6f5e51c641af28fa4df5e6e7fb91bc2e82d470378af9d1732b86e22a6efa9fe167f40543f54392ac44f61689d85684956c68ca103120976ed3da3c31d4c0069aa6ff2d238d8dcb5c83a9d1e7011ca4700629f443481930ecbb1feaef9a2405dbdabc97d06a53fcd517b6c5e0699d1f8c84464aebf8a98bfc510d98f7d3066c45f20debc0e71b045f25cffa06c9318921e209bafb74b504e787a650fef76c87a16b01d1eaaac6c5dd59f6c411c9a0eca79efbc3a1044064f4a61a82a9d9ac45a0d26fae34aba64fbe5678bad0fe79f6a265377a0e17127d7278fa669e6ab96b760ab069a1bd0b9d8f25ae0b56911b965a2b2dc94e263270c23cab1491ae5bff4d6e5756be18a16ebb2513aceb2da22f42b412e698caed3656d3aa5e99e7cb3755e7002e565ec237328721e6e5d33886126e282e5571fece43878aa234541900c0bccbc50923b553ee3465cfcf61c9bae174b28d15a031ed0e3295715463524c530d6657de9aacef5e2a18867223400ab8191d9e018c48dae08020a74de738402da885584507784b26d4b8331e6c2a6f475530cf90530e1c1829843063ba3c0909c6470a0c27a48de79ce620973382025c6d4a5e46939d5397617f6016a3a4a7f7d857343e46182d4e1c964ef78ab7d779f55026fe0ffb44bd7d801302752aad3e9afa2e98fa76273f19f870105d1d1805919d0e466d8d0a3eadbfac070f0fcc7ffbb53e1a13284788e3f8559908ec59cd54557eac8e10da48a8da839faa9ceacbd22ec4812a3edd6f46159ebd989736ed8933b80951bc107f2db6b318a316312b13e44d7475c8ab4e2599c7a2fca3aff3abfc31843e48bf8aa50cbde9fb40e19ed154bff13610f2304ae9353bb661c524b0872087bf4982d146abf505536cd5459a2eb4b355aa2e0376aa6c693bd09019e905210cfdcf80a4517a7e2dd280bcd3fed200b8cc78860518c76e92d52b2b44ff23e4c776526eed732883a7f6ececad67807ba86003b315d84564d4a11bee367d116c991895e7e9d92f4edbbd69165ecfd650ae005df96c14ad94fd4e09becd8d11f645d8dfe22b148b87aa45821994be16494847c4371f860d134ef895a5684a6e252d5a3bc2564b4a38630e82da65623c40f7251ee841570bab2874e304e12ea4ec13465e9a6e282e9878f84a22b1d1aa699f55ba46045b24950031034ab7a1971286ac4f480d2370329caf0d4aacb984aae8b808af0054ef4b1e1356b1c70a31eec394a9d5c6d492b84c5224f49d1e84ce16f4445ca2bab9c330ab1323d35915a8291559291966aa80f22b21e0eac4f0bd8af1a598800ddd1d53929907a9da808578920902398c0ab9a2a7e5d9f35c8933838dae542c6923702e0a311a0f83bc6da40a813127086382a65e3d602c7e216c0cab96bec9a5915f5da7488f833937c17c3d51ec301425b44b2eb58bbac2ec1eb746d049e719e8daea97ca348b32905b698b3f4b505799f95a1223b49c0294a934cedf53b7bfa65f13d261b76ac53ac1b09b7704dc530820f6c101da5208514b518742904e800e1ff89276656a1aabb257a562fb3e257725061444838e91c5b13f82d2551ab4f3fb8c6d4f022a6a60a845e9660048c6ed8b77842ed361d275891d82c910435f81e8caa653a43108ee2bddea5e7adc47be6522b2c327906c6ed0e28c2f370f3eea06bcdbb7873ab70f8a30317f8bf24d6ca0e848133b43790f1bd2d4d13b2d895e7cdb8a15d8a60c28cf1603066dbb9fe81c47dc96135ec35bd3eab6579f1190b60d8f324b90f6eb480d6e3fa543dbac2c008e9634119a6113166df4b6778f476b5ea8e1d22acf397171c74a8cbcad39e40bd841af1a292b308bebc3e55d5d12f92cdfc46d6a73b3cdb54aded6779ae2540cd4261a5869c8b0c67edbfb2b2c1428f72419c908d39ee6c1af9ac12e774dc3dc86c0ec84a26d948956aad2b8ca684539a158bb5a48bded92c225bc634352b6b9e1921e068eaf6f53b8f7bd6f6b7f600486fc266473f8bac553d2446e5ca091b3a150429b67ab211bc976e3255e1ef3cec91d9ef3f94e1cf46d1408e4a4f37cc56f69196a00b4d009b5da2e7bbe4d28c89b6adbf6abfd0d01bcf0f0ac1969055f4c627eb3874bc3ab2174d809171cc0b1c1ab981045d8a384c4062cdbe56d30b14218ce231c902c251b59c9d837530e68ef614b26e287e2603da889294485e425813608fa665cf62d0bb84dbe94a8f8cbfa067f741f39984a7935a678bf4f34890b9afb98a4202d8a6c1586aa9495e232deb389124e9ebdb1097b1a1e78f8b0ca959680c230b360da528768f09226c4e341bf9c42f237348250a34c4df772b52b42cadbcee17b4317c9e289199b99885f9a8b74d4575832600f80e7cd901fd2d3d783e8822f7b541e8f874380d52f8178cba9c44dea03b330ecb56dd30a4f29e43a9754ab006019a45fb69e0f912de0bee66ccffe67f450a1bfe075fe67f978b20d529ee289186729ce4909f70925972abd2911a666b90cba37b0bdc9f379a5332fc4e5e18942dae14aa63042eed8cf68acefec03de419e3a6d945bd5d0c339263cab3c1ee0eaebfbfbcc8b6d4192d83e6002d019675d1c4fe6bf1c74cf35e8143cd4bc4ec98e96621309ade2c764d8fe0338847254b93607d7b7dbf204ac6583bbf876b3419a2db5bd84cb40af785e51c5963a62d842b45f77e099ca1b7f5a61199318a0ae4425f415bf62ffce8a8cf93bc64d015dc4f596507c5b178abd60316b60bfd862caf41a1295251e1c82241274e7bdc46ec08989c3e34be45cadd6d2f1c3ed66716f089465f88bddd857f18caca1459d96793f87b6d67eff05f1f5a1fce983392ee0132982bb209a4084af2fe110a8ed1ca159e46a70fc00504451b832ab60069936b48469df358ee9877fc6d49b69127d747842fa894669c573a0fbd3b94a534f9e86d4fc7def2335078f3f83d45ff49dfd17c77916f59fea996e94f4c12bbea8f68c4c97505c20c18fc1b4f4cdaca7aa50f4d6786849070e4e0ced6539239330ca2c167778e3de2fcb9a4dd5e4fc57778110def92459ec1946bc1bdd200502a2c657b4f905b6846eba2bb3d89dbc1243ddf23d778b354a2ebd4648a54cf465990825b82b254224d2df08ce2aa735763ca4154dfac4d8f4c5e0f353800b901778f6538a65a7a0290ede2ca4da4386c35f304d5c3aff1ec293071a3a1ef1dd264961a4219be3511e5cdded3cbbc2170c45a00ab682e2fce4953a7994509013ca02dc5112227b5b6b17b20d8e02af0dcee5092776600c6a5f20ed514afe620374a285b93506a9355df02cf6848d0efde91b084824e5ce42ada2cb5e28e989f0b011aa9c5a1de0cfcb4d6db6f1bbc146c30e042704a02ee12d32a40b9c5b29948de532de1e3833c1378764a619633620c9fef569d8844624cb563a4a391dd032d5cecf2079c06fdb0781db1fc9727fa7090f6bc58767816258d3abb002c4fc112ec6c7f4287375d7602fc0f05c633642d4e7761e0cb7cb1492dc7c3589015d88ff3e4c826961cf1a81b5ac9eb72cdcc6fa82dd6a47af8f4383f09efc748cfee30a3df923028778a11b025a2bb59f090b1d4b01ee4075496e735445af214b853eac1addd701a291d0b52d609913962fa0ebb14e0bdd6ea8ad014514f6e0d2441841eb99343eeaf376e4247681a61379dd42696e59ea282c68928028c45e4e286a05656cac875a89846e26e898da4633027ea4be92c17c7024fee767738666f86563bf8d8cb648dcc8cb797ab3b4d3ad1ca403ac4c2ebf35d36df5ae72536334cee97f272353aa8f97c25e692778cf51fb983e414ec270b1b472b80ff12070cee45a67143d26486685e9b542e1b249461ca40eeb63beb6d8833bdf8ca442d77572fc02657e9f8a515f0e91b70090cd18f536347943ca31f95e9f8a69e1b7bbe9835b90020208c30971b3a1b3fcdbca8d8167fbee4307ddcbfd14501d559817ab5b84091dee7f43993887684af21c94dca072e52f37ea9bed1d97959b6f0b182ceb7711d63bfe2709f500aff8895d170209efa7dab3f6d84eb33156acee8de99b62bc43b0a1bd926659c194ef106f1d5ada377fd46299e0acd0570c65cae7bcc3cf3e71235e1014c91c639b2b448deef3089768d2fd2092307c8a5b9fd47cb609448176b11666cc01eba5300507b8c6817806e01a039e270a4cb2c1a2fd6edd6d08fde0fcf4927cd722903746c1c24319f9123727641fdefc392149eb8a439438e780d630464aa5c080a9741b2ad646607d90fc9dd2384704604e459586ceb6b7df968bd76d848863c400e9d69c2d786cd07c88c09c05d98caecc4e2a0217aa5935296d24d4873c900aa592db2a8144a67f7a061261f43cd3e6bb5356de626d02f64b4d7356623171abc16f5236efcbcb57f6b7d4db4e283d21cc937e505f5c77c90fea244f6965dffe7e50f7f1c9405133482ea04f623f24ea633e9bb559770d660c1f85c71854d4175ca854530aadfbc1386a57fbc0da35a4e9aaab9c2172b4e0329c677f68bc61a9df8f991fcf54e24c47df418c0d14843f00cd7cd818d2f8ad231424282fc24e0184be53fa5749da648e8bb1206e891a1164c48e2bbe2b51cf158c99a9eec91e70dd1dc9d0203fe5161c174ab8cf97f5d6e8dc6dfc2e29fdb20300d05f68587b01eeb1239ab8c0205fb47220f59f5ab79bee42828c4cc5772b38940e96dc13f727293df6e041704c2acb26189a368e2b2d87291ce83be7de15d39e256efa7ee7c8075979aa19fc228621a1b8d28e1a92a78a7eaac90db57296a605a753486e9203fb9ed8a104cc960bbb27d2e7ceface6c6cc196b0327deb6b291f8205e8ccd70ec28368bb7810fe97b50063e26a29c2e16bd6ecf6f60fdb14a14ac53d077dea54f324b86a7e60a3b28bb94941822aebbc2a09fbfef032cdc32e8b0378061f482e9450a7bbbcdadefaebc031ea2749d0c28131e37d876de56a1c8c75fc267e79871094c16cd6622db496c69e834b1b3106afcb3eeed58bcac2bdfb4fce3c22003a1450c92f6fc7249534ded2b3a051bae80a53a0856c2ddf5db48ad81dfb9027ab7b4846a4d07655d2efe17073f8e9afd7cfab545d434ec847d4e298e572b9e8b51c494d66cad0927bff8a2b10f132898de37ae37c0daaaa278194b73dbc38e829e6bd9d043409f8b1b6a122657ccef03be8c32a4ae68bdb77bd820e711212711e18f821ab3f8d97ba891c9339d4231fb6cc488e047fc2281a14368486c2025e14d6e89366be0f4367888c4caeb4f0539dae2d0320f08423aa9058f89a1e3e11232b8175d02026524a27f6edc7ca27af51aadc43c478adf5210cb3e3fa17c6ebb1d9aee1e84c920d6963f3baf5d6a13b01483000e08487c539304bccae5910364fec7f96b86145b9e5afc1cedd4e944b62de1f85955f4022ff8f3005c59f4a7254722ee0aa3c6be5d8619119365a19a358f25da01f04459e5c5852955566cccadb0de5e67828274087e8c48c1ff5235a92077720215c4424164a9e761efa8f532eca0ae5aeccd06cfe2ba44b509ec38823d8dbc0ce86d2c69cf2b073297fdb2786fca8d233aed1b812b7aea05365d364d0cf1782cf8575fa11091878e7316332cd847d899f578cc4c467aaf6b39c8393075dc84cc5cd2068f5062a04189fe72f2f4cd5921dd487db8bb83eadfbc3bae9675d17043d9ac3850dad196473f7474aa911984a98cd2fd1d18391ddfbd91234a7804a35ece2b68c2968a8ed1b27e935a0c8faa0e5ce966f9a683e4ed712fd77c443abb74179b8e9de80435f58346537cdb7a3582d9f3696a05620ee4418e220330a9201bce168fc30a0e285b6fdc9a8bf8d8a2fa1cdebe0fcb5e0734e4640137bc2f128eeb73913f5772af1e0538c214745c0c0d5d99b004880becc5dab4048cd54dc327af681b516f2bd6b790b62a8add66c6599dda8c31dc49b476c53df16e77987e3ce4f18b53d2856eb1ef56e4e04c8b1d4dd3623a5769ac0a3c312cf77418fe4a96fe95627041f9daccb2d21d848b1d0dee353ae2b5eb56239e6450c41b95913fcd2473e8c346bf5a2269a13a471c7a8daa950de7cf9c7d1b50195749a8a50e664ca8b072a97f2990d1ad0ee92a582e5a1efeb4f95aaa50125a8804a05001124db172dd82020ae9c3b6e95514a537fb26b8896c9eff00be0fc7b99973b91e045a48e080897e451ca5b0c537e9d0679f3ea102901e03127156659c4a1139c6e435255bb5f23eeab636908b312f86cf4cc4156b59f019222c4a29458d72f7df3f424635136e1f704a4f04fe4a9f592dcceb40938899163442d0704a9d051582b8694e3e3e1215691e4b38a664817f3c88d4e737e7bff722c484343a99563ae1bc5c2979b1e4b19e46d9233976f174c74cb247506c0de70f4980fb0fe35a12ca0cfd947e627a5fd5d01ac09f12415fd1fb62f7bbf68561a6d5fa4dd60b14b68df4b0993f0418ea8e6dc4bbf83cdea9940d0026b48074d0207cf74e3bae6066fb2231a61350e11c55f023a5b8b2ed80e483ead11e2d8776dde021aecf71b53df39859a94abcb8043989b90ba7809213b23bd63eb091372370c08a2cd01879f6838719548e0dd769f170e7fe6df0c7a6be66d10904b144e26a25b26934a6870dfeefaaf3fa91a6dee01b32729f8e2d0465e88bef6246f51621b61f956e08be080371c15363ad5496bf910f2925201c32fb5ac9ab1655ba8c9114e80f62a40343bd55bb46e4f6f649effff191836a9e0559d4f4eecc2b173497ad5443846656e2d55d57aabd3c3143fbd0d72434c93ed8f20c43b0a54ae1bb851c62fdbb640eda0266328bc2f63e563061c418f74a119e202fb4b31b5b59cffde822b1e0cf043b8dd8c009386873d842fe21addd910e8f605a3007de6517d0289254ad4d6f0dce9b1f20ebe6256769927fd1002ce14be4bfc727e6bcf567d56b9ce1fe7a2efdd836db936bdaaa4818ecc9d20a78eee4b0b4ce7a6a8e8f861cac57e19915e1d69b9845f0c876079e8651891aede979718a54ba88f1ec788cc14678c83cb9e2f07f02cac11e38b9b7b5f250e3feb42942ff72d501178132a285d809e3d19a9b07ad4a8a5e098921c66521232a887a89dde2128c040b5c331121a76249ab58ce9eed67260d0d4c257ae1beea749559e92f0a789d97460b8cf536c240b09387c810ab44313f04fac574ae4c3a656207e4e87996e7e7677b4bce391ad19c87de9a1b07ab391599464fa9a148070ef21f8023390bb48661fee530a44c2c58222737db5c1907a08c1fb7832b55f8e6df3ff88751b506de0d711e9160b5129c4566cd840f8ca32631a8e2774c0998562203503d28602132409e7282eafa10080277f43f633fa0786e3011ce50f67df7b2e3c6d19a676acccc1410b51ef7393ac17f17a2dde7f27987e81a2d0e983d8f36a0ced6774929394c56da86fcad1db96ec24ad5cb4fce3e421f0c3ed30b498f3c14d6ce8c95ca89ea791420e8d6060ab8066cfbf7d84b7f4c264ceaeb085ae1b1c2260578360585d8b39b3a2addd85d50a70d1308ef24abb44a2f6aa228f1e5cc2edb934e911e89b3603ee3b1b88e70ff5fabfa64909eadc54de82b0b8edb93f62840138ad756e4cdf10d5f38a0830870bf40cf90c3d984cdface6d6b6b5ee75040a8343e1b5ee73560b29befbf746dbfb67101001401a2937c83501b835cf33a07fbf96b3cdf8d2afac962790c9758687f2584056e0d022a147839a6beacb96a6c5f79d1328f9fcd5c6d2e44cf91c4ef60b5acf5e34f32501df8f4f08292a4f387b8d1eeebdc6f1fd60c9774ca257c4faaed2a34cdcf7fd2ce7778c45fbca7e57239fb5a400c66ae4b429768002ed4e66935e01eb4d8c5a971b1a1503db17b2608002c4763cc79cb218a1c4e95dc849712c535817016a986a73d08e9377aba930b76904e406fc7da9466c81d10f8721448acc5359330ca2d92440d2dee653a1c1d63dfad66aa022c1c657bd9aa44b8761580eeea625f92c1541d510ff60871aeadb8e34508d5309ac4a386e68cfcf8fc257d80788fa4f454a7655c4c1f8ddbc28bc6e43a33347af0d89e91e07ddb59d52085d639ce746bfd0bde218a88afefb935c03a2ae6891e5f2fbe41f8160b50b262150b4a56fb1db0aa627111e22854b6b4c2fd9980eb64fe61c9917ba9255a7a258e88b844851089d494f8b62b52a0cfd562133d882c18b22f0af9326a2d0fb96d9fbed83d338fe94628acba82f6f7ef6b81a220b8b77108d61419147972c32a84460456013d9362e51af331226716c6ea1f7b0549123d7e97fbb830e2c65d000a6dc16209e6e12872fefd8481da7a41bc4f8565aa0fb22cc97bb909f35442ed575c14ed4739c8d648af53d7b0d509b9e6dd479c088fa7527a52d1a942d65d15a5979345e059541cf090a6401d19aec7591e43c11157b61a72d9239c7728ea3aae1a79c7ea756bf91b7c3fa038da6446a928a7e1af420c98ad127e64dbf68e2fbd05c8b0beeda811d21029b15035be00b726407f3e2247c8726a02abeed13f1d96a24fe55dc265ba744923dac3a0cf246d78e93ea988285de221c00a94a1033919307fc7262d30ff1b7464627344a2e8cc49acf2e4b0648e3ea4d283220a9c711cf4492feb9128a05ef7c9be90e8aebbb2615115b34d207d1113524f1db8ff1a87f604034e816b0fb14b3fc19746a5e02908e796c0d25d220ea420797fe40b28199fa5504e55bfec03257d3b61c0c20ef65632c22f9602bdb70e81bb214702059328cd5726e44d541cb9ab33a6103fc8b8f90ee61eda02a83020264204578c086e7e9039cc3ea6f0873a687dc3467402d1651dd8e97b6a6faea8e42927a17a258e2fc3a15d1a781b53bf8764f5559c56b2ac2562005f87454b61624053b1d55cf06ac668f9bb351fdb2bb39ead03cb13e8fffa47ab762b34db759ba2eb06e6a8d78603b4b60078e8017e767d07dd7cc6a1d81a04ec28b915c2a72e68bb9c4d118f1bd03adeb6cdceb2627ec3929e47f9c9d7d4c61dce19ea857a87265544ae9ca5a45953cd57c64d53bfaa27ca6fc1ed2b0a0f3ba3f5037135c214f3413526bab73e440b02da9a43220e4e5dc77e54b68d559e2c733b2213588207a32df59342a6a5ce2aab9e5a0c2e3a89299f87462f71eb5cff8cf4bea624e5a4926ba28eba92b13319e211bc39808d7fb0a9a7846cc42ba61fed824b7dcce00f27d200a1711245a12c7f210989bc5dd29705055a1bc8bea9f3f9880aae6d4a22f9f41e0ce3ceae912ce2f5d657a6a0e402c57080334d84f02ed3627d0521bbde60208ecbdd044801e12a0ee0408e19fa18aa7f0aba5aa5a72d808211513706b1c4ecac2378c5d10bddf39c074ac0ce138bab40365539430a661a1657c22118ab7e693da630867a2823aef41242460713b727220fdf36850ece87c9c5d1a007ca2c72622407102b0cbf0baddb65af025d252f482304e0a307fa2199429655000874115d898d23831795fc6a29618ff538d8cb317f5b74a55e45e09400a2b21ff4f11a9d07b1a9fffb4dc38a04618e02f1a0e30570fc8aac769eefe60ca5ce2650067a8449ccfd62f263aba98bcbeb0199d5f28d91a8fea8657b95247a53e41c987136dfb4863b2403eda74c6f38da29d6c307fa93bde5bc22f46e984d7803637c52a479a8881028a104e92f72d71ed6821a5f853860829dd44d6a69100eabde4b53f6570ad68d40c3c996a8286438b596deec834383c00078590a9f69fb72319a5d5ecadcb5b2d825fe04305eba47d0a947a8e321509cb6845a7150d004781a08428d2c03a9d69f76a8b3bd1d7cc3de44c56cd462444021a015a3cde21ea1a357597e309485113b7a98f46f953fdfd12697f8caf0f7eb0021e902e6a2fb8d47a7503456848acd9f9e32405014ccf00e71196b35e76dfbe87c0467dd9f6769bd2725588c561b8ba430ce1957299170f3a460aac5a85de92ea3937799855c7fbae01a4ff633807e7e092dff097f53094d5762f628de4c1167ed7a017da502371fb64c7f0b901bdd666499030feda624b8e3e52d7ba0faa2732a82e08eb86af4cb2bf02f307772067086463850df7f36a2bb588c4efbd07063b290c84fe99101a2132212c51f802d03096f54a26f5af335ea6baf6b96b0a885b86801b6019016c63d88b9c808452a4389673b26bc4c1cff98b2a67eb434d39cb0de44d27d3ae28d797bdffda116468656dfd83f4ef785761a31cd72cad8133242480580815106553c08b4d13aaf0c830bc06c5e760697089e513a28b3640df8532d06f16346918eae8b4c7cda8e20a9d440926976991ddbfcae05920ed0d6760b7b56335ff21e6e848fde405a0707d6021bd026d45cf2741ce0a4f7f3b0c7b103d19e4ca2cf051ab45e7e063ef30eb6c867aec2c47d1f3db56430c6056264c2325a98d94a1093c53e5ab018fdb4234e238210f082276dcd3f88c0f06f5c7ff37861c2ca1b2788980daf24f6b88b1aa291ba654570982084d05fbf80830a89339b17be9d97cc0ac77a4f7f18557ca03e5112d4da26f3b3faaf6a417bf6503a429c387acc30a6b7330376e4a706fc0586fc5826d334a71a6d78d66669c7c9f29d38e1ea438061f2bdea40920c519b167d265c5e9db5cdfdcc35da7888ff8bf47358314cef4bad132fb85592bee06c4e0f079dc75d8bf2afa4e3b5dec40dc645ea0cdc089ef1f133c3818975accac0874fdde1651ae96d558800fc7b6aa1ba978bfd81ac7971fc3ea448f037bc9e6eb50c485c7f6c6e93747ead8b28113a839d7ba5dc6a33d8ca3b3bed0ebd63f7c32b336e6e248ba981dbc3c22d5ba59798e2f08847b4794947af7e47298c1e1dda6cb32f56f415faf9d9788b0d0dcaef5044fdea0ff46bd4e2500a2438d6793bb63d4d7aa540f9b79eedf3322e503f54013a3c8839241e48b296f0accf6be429def0a67fd5e914cf6018f3e3ee169f8df7a952d7e9c04356ad290f1d8bdc32061baa9e16b27aa2f8c8cdf6ac5b77964528c34dc083e12e59a2ce2008d32750fc90708ea666ca0a908741d5d95d9e48123d7f94e33e61b366bdcbb973566d516681e8d154493d5a3a8991bcd343d67eb5e394e323cfb420dc37fadd7746be4b25f18562ee1ce343efb7188164e179948ade5f38f3d9e460da5fbe224377923ebc9df61fd0284222800fce10d5ae0f65166086c45526ca3f629c39a65e44aa3168eb24f3d0b052e25439a694446142ed509381b3ade91c0562e00f562a05120f866961dc595980a0431bba701dac9196dafff28d631784028b4f34570c5466cf42b120cd1493dd5c958daf81e619bf050b63c2984c74fe1f0427029640440a99b2cc21e4660a3a385e29475ac11c48664978aa91ee18f1ce8b738879df5ec8aa27af22858c1bb4437e67f2234c08bb4c531a0d0da61e19284df41972264a94b0f48ec17f5cceb027ad64e8b746fa4b76fe66c658eb3a86ea14a7ca1755acc6049a1f3b0a8c23f92685c281f84c50037c33c03f55c409718c4c63002791821830df605c35ec16726b4a49c8602535ecb1a7c758fb532d4b10a0ae1e034fa186aa8535e7c7aef2b747c3fd81ad4c08c645bb6913e390ec1171606ac034424521c8058c2623bd0cfdd75bb139f3200bd3f2b803aefee820e18e397eab4c5b6f19ea66ffda2a37f353fc16cdf39968a9339102ee8c51086a6801a230e669f134b11e0321a6e1f0c6c0053fca3e36fe62a7d4576a0b8305e468a8bddb501aec6221eef028ecac92e7e95bfb58d1420518be7df3bed4275926e08d18e9b274c9611c5946bd0cd4c5000485ac2ef50e60e8131e067f1eb83728416a7b343d66d7e43b4ecf34d9b0406472650f68aebffce7441b9da67565f34cd8984b1aeb90bf5ee119130e174d33ba017d5a18f42479e6c12bfe7303642d35a21a27b4946464a76921f59d2ff1ccd975a6ddc5a19d71724e7c8392e0f7f39a265e296905d69e50394246d16dca5c25e727ac735e17d74d19c1f0c92ac04787af64a48e0cf876448f53e956521571892589f95564aaaa471a701979067d140ab0414b2ba33ffc6a674ce9c711ab8031bdece8da37747d9a9dfeba894714836ec515c3079a4ffc7b724ad2c21161db092ba108e5aa5e99e21b601ecff7e9e83f7fa91ce26e943a43154582a93bea407969bdff70b74687cf3b4b999fe093863ea93e9c3ebc627eaa36986170f536ccd6c8cccf6d16b6b50299339548055095e423eb1689925a347cad61161c22641bd7dbcff5486b51508fc0838810add923ca47d771225abebac2f60ec41cd6a2a436e6ffee8a3faaa71475e29bcda30679e5f849b9eede9a95d625bcc5a11f70e904276614f2ca6cc55b73fefdd1863f3723cc2932ed05f72da645ed3943404e0b23e71ce5a2e9c24dc37126c9f9669393534abf7ce90dbf1ac7ae05dae1078678ceba171459c6a7e5e17ba099d704346d33c89ef02be7b9442a1bcc81ade35cbe815d116afdc43913341b21568e8d676e13846191dd8ea4b0c6fef476f4c749b22c5a6ddcfc3eb73c19ed33e8d8f17cd92ac6d002c48f21f33acef7fadc8ab3c8fe13d45a8a6f978bdc471d3ea641bdb5d419e1005adec9acb6c300cf90370884d2d6e3f48096b20167cb6561133e501f5bd30a1930f6a0fb9543145c140bd99128aa517cc1f26fca9d1d414a892a4dc86d9350946b807d26ab76951413aaa961850b14ec9b5ecd1feeea4899f1ef4fcde3bb06102f9a4375508297c9c858c7a3a263d5a20ef9117d224a0e8df004d5e982d0f0e09e4d2b5995143004e8ec64dee13824eb6956168a94535155f8f145f5e744428833ac0edc321cbbea43d3d519b29809a9e54e78355314b7ba810519fdce1b15d7004f32ea3e2893a4cb6582baa75b234f64a1c7df5cf11b7eae13b49fdb77793ec97cec4dc28fe525e5452df54dc8dc61e9658e38ff575a49838c21f2d318eec829ada578c5fa42a5826be7139cf1af089ca86b17605cfd6397380d4448873b6421ceaaf6c2878120e7c5a8fa1544b558400d49ccd7d2a191ce89f280c66726bcbc9038099d40642532473002f3b0e912fa89a0c77fc3f628c66d6e1c84c61009d3e0d886a4fc544ef38a631adbf3b625b190a42ff5d0274716e5f624d0ccdb3239a18b3dbc6a387988e75d977a2b460e4f1c2d2c103096b1318714ad8e26934f24f4e85936f4fc20b06adb5de236067b6bb9f1f0d4330eec721f73d01c6375bda08244b9b52228e312c964dd8c172468c3024b8a562b76fb985ab2d0db2e13a4012377260d0a70aeab061d0c7012cfce3180e723e0257adb4e7bed9b8865d219bfd4b0432ff7bad2e47b23a6d84d48c4f9561257610d77a82299b11ccd34c77b653fa0a1d20fa5fd204bc9acc8c794a6c833c736e4e0b526b871a20b389c745b29d88e0fb12cc6495bf14723a8635476f1bfa47afc537d25be41976ff14e75233b12724d0996f7563a08c9f24ecc9613ce9a54171e6d54b04a8af9526fd4274d89cd8c9f503d32473690409eb486e3ae8c17cacce8604a577116f808ac9ee6e2a8a58f2923a932c424bae33131fe49e8dfcfa547d93ad9457130e220d3a2e8eb48eefeb20d87b613c9aa52769a3c3f0b91c0ba99f9c42ff5ac2d7596dbe6e32352a7a1a3bd0e0e46039c0ff9ee4b72a5b4f1aa4f8e9ea1e98b3e40c0261e7d23a6c2dcc51c3e324753f23696f507a2aeaef0d5807520ed168c9f0e4ab79a95c8a8b124e4f02931d7cb163ecdf0c63faec2c28da1cd0d8d5828a8311630a26e9b50fe72f13331daafbf821d0fd252c7d73c2b0d58fc296b524f2adc9339b96dc1bbe75c5130cb2fea6fa26e5e574568c121544a6c1f28c81938935a09f580133c8176a01868c44970e3a0e89db8c9ee5ad6a5a2982cd8b3e8b23fcd784de78ea91c147059aec9c97897c55ea1d673590228ec5ee5affc5fbdbb871b8d05317f5b62e7624ca29497c85fdf062c79245a74f4b6557d1f5b9e412e9afcd53506bf90c1cd52e78ba12f23808a4c993636b5b1a96d250cae8e25b043d00e0cc2f305eb7bcf506fac061e14f64a145ee9408a882a650195e42e0165380676b697762b44b31f5a2c816b7f114ec653b229015fbad43666831edbe4d32ef13bb8050d71651b4a2952a88e55502e879d6d2c77a9b557fe4acfb071e876f251938c34e6be046ea521ef177a69c88509b5ff862742f4c2babcc13ae724168f574824e4cd9c68cc0100c660dcb6a79a8e12fc66a2971e5d5f09307c929eb0a61935745e136b398a0bad31cdfba09785c1085c72ca51e8955a00536c0de75bb0234c977bcc2644e04094f270b3abbd46ac8929b72627820d9aa90b2d8890f3e18a15741a58bd1f0f691cbca5f9c3a54c8bdbb1c9a955ec3cd8f75bd7d7d1bcf8a88828c36d54c1ff0d0959876bb943e58297ce5d786aeaad569ae11c060d317445bc6f72171c1fc38642c47bb4955f377d47233e10900524d5a2fdcb457127f83ac3ecea3944a95798c5ff3ff78eae1f3dd38945fbc755c55a25843fbb11154a92ad2c8d36ff0f0baf48818a6f41ab90ad20aeda23ef43850fcc316104d9ae610f371c55ab5a5a489b8702ed0f6896a11b460122a331bf7e653a9861a5e9f4390ade4a7116dea460ee80ff0d9554750a3a4e035785d52d975583d0be05bf0f1393c75e689cf097d4f2df94b3898a493760a594c6347ee2705033c101d5c7a4e92cde054be932afb3dc86abfcd3f208ddaa59ca87cacd2c5a8682a45501b5870dc9c8b88d6e252e9819e7f94f41b465fff2ccec62af37d80d7dd5dd88113bcc850f5a63393a1c0c0cec2b4e406b71da6082daeb71c0ea515f87bb97f7367869dcd7ed69b2040e7406d3661acccd4fd59643d69079460ef2e1fdfc4f80b883a280acf4ec021c7754d4faeded1357491185f7846ae027d04ab8ae0fa104669b6ea36699b3e864fcc3f44175a4a0fd5a4f36a78dfccd42b06b4609f2b44897ca019d7b688852d8528a64ce37c448840ec4b034cf0334db42fdd0d603830117ff59da5c643a5816c4822c43513b59bb57794d6f78ef4982dc08a71448f4351c7a8c3642d1b17349fd185b1e8cad08a7a8d4c73b44d93f48112886a106f50f1d11c4c452472a94264eae702b6ea82fd8820246586c202839e8e68277608e9f00957b53921f8dc8365fdf677c7706cb91cd852f1714ff6c267cb8b6f740409dfe0e42c54ef2764053dbb582a4438bdf14c469efac12a308b75fbdeb6331bc5a8b712ac91db88770648b7521d37cac20cb431d2246520c18c3ce80e34c33144628ab636891357655e9549bd8b2e43afaab2d2d8939fd24cbefc924625a1ffe17ce0a31a91526bb4f6624a6f4fc3983319b80b66566cbe494c09efa90b5d734bb5b203e7cb5a9abb4b261947e8c26b790d083a8b9324f1e9eb53a1641b956ec021ef053846141a4ff744ea42f3947678fe71a1575ed441f437fad287a2329a93a1848691a02430f3442365806a652d2fea753cd50f7d9657e5d39df6e5b0638bd0fdcac0f8d6d8acac4066ca114dfdf425aab0916565d1194e5f817e196100dde8197e0d8000015b69e832ea74c348456b488da720892ca56e8e17586b2eadf9c8e359bc1ec38c562969ec1434320caf5ddfd5a89c19fb1bca04f646637cfbe9f1193a61f55fc186ace4f517a201d19e4a19cb3a6c7be9a433c6499b39b0b3cce4b4bb01d42bdda3da3c54554274a87839f326b5de748fe75b4d8a00d2349266ce1829cd39de9158214a7caa0fed012c69875ad4986d9e54fc10aa85b6423ae41757a518a58d3c734616b3949d150a349acbe873e69316a96da9473c73ec9074ae93f63722a859b3229b8cc8ed23ee0cf921442dcbe35e496d25407da3a67d82171d871e56327fa0526cadc07b4a002b65b435b57165aaba6d5a1a9283b617fccda346e8ba9a3f16d94527913c4979b0772a87ddec7312d5cbc8fa30f4d12266dfd8e47ab86875f290564f0ec662b5a3353ca2ce2883c375e09319c232acd38e049052d0b4235c2bed28b6bc1132b0dc4422f6196bbb33b804c2df071c7f1b9ee536f453521993cb8cfb2b10a8f91c9ad206f543bd974a2555e9055e0f066fef0fb508e47f6a30b3978c2d626616a1263643c9adb4913c64bd7d6c873a01a2942f853fdc08254700af1597a19ab4dd4a259bb27ff47854f19cadb446874c66c4bfb02f33c37836fba01187baf4f4b0fba42b274c9f21fbf73718ed359a1d762b592f338553513bb5bd9b85595de6f41e6930fdde50855b1eb0beb430932bde671e0fb8ebee4dfa4e1503968e36e3eab379ce3666287c1334497f2bebf37f9178943903705c7466ebcaf6a98ca6005ab7dca2c0d824f13e443371fa3e9bc9b4db381601a1418bee21bd6c2f88849f0d6705c4f6f7743cc9826efb204d4768eb9f0b47b96ee36e2802108c40240cdfe9743539ad8bf8eeeaf696d82587c0a837e39394c7f14a307cb9fd547758221faa36d2bc26f4746b0b7e8e365c428c06b05d1ef404eb5e95a137538a37545c9b55c99eb88f6f333826f4f00563206b440ad8262ee01a589f75117a86469abd54288e78981ca33e9dfd7c40daf178789ba4230a9f321390b05a8e2094f745f8d6883e213a3a3d847ae6eca51b3b466f1f844b485f173d821e9dbd07f506eb1554f146f513a2d3d58ba0b768af1d164748bf0e1dc15ec47a19511c237d82f485f56a9d3c043d9d74daf51aeb8dc2ee8af5dc4ce8cb629be18dbf62020f3ec2b6b918eea3daaa4956f7246c4a5ac0c2af99f183cd92f42bcae90012642da73ca90f4de0c11fa2b46662f4f9be2da4783468646659cf468c0da7270db9313a0065344e29b14ab8d9a1d229506276b398467ff95baf53dfcf3d692ec56fdf5152afc0015652530b46f238d4991567de65003ec40b778fd98f4646f2cae69d77876a29044b36abfc0b1a6a1f9c37f4d0764d80308f9a7cb0df48acdf110db8f80282aaec45d2515ffa367ac0784300b8122f20044e6ba22060f9d36459ce177fcfac0787ca939dd9ad712e4371dd7028e3712401cc857df38270846ec9ae5a80298ec11246f64cba1b4ab3d7119e1526308ae244ee23c3e7bd3ee69d048de83211c80e3b3894ab5c1ac5836a01401d7d0f0274c69a22c80d610f6ac7fff98bf4c2aec5e6623aa00f51669c96af109afdc33202168870bcfce517dd48e6928e827d30e5e8bb4e0d3c1bb5f9595641a99b2b62fc86c02d9d1b427ac3c67f377ce80fd0ed11c0bc25606c14904e2fe0ed0ce8018d42a086841b234c45cc0f0266a77b71a8b25638959d7cccc0f3e9d63d9844a60c3360ffba00ebddeb15201b902dfeb5fa95c02c505a933c6dbe1024726f66fc70cb78a56b99d77111cc18bbf2320402fa74d1076af07047b4833e170321ac9df53d541a82e5daa450038a753e7c583058d6a603f1702e1a94a6d60493d56531dccdb3a06957b2adfb678f114312388cdcba6b9a59de1987710f62f71d0b63de6743d05b7cf932f07932bc0a4ea61482b5bef96a56b668df87352addaa7c6bbbad4929654a29c99307df07af07fd599c01dd9f9db33e24bf78875f2cf28e4faba08fa7a04e6af7b1a2064d1dbb6a6a06b49b385dcf549bbaf57aec8bd2c85e2acb7b6f7fe5c4b6348176ae721e3ef5674fd8096a04752cd5058f46074d5c70c5c794ca354f547620d4da4d9d87a2b476ee82caaf8252282fcc731c39a06f13026464c6b3f427ccb154a27395afe2e62bd56ba97c05e4013140d0ce55f46578f0c477ebe68c2f3752ed2dfe7359a99df75476d86e2f8dbac3bc92c97f333130973da9347dd298c7909674e8c10cda51d00f340a97b6318df562e110c5aaf26b3668200d170cb68aab35a5c502b26283eed6b5cb59efd56a756bf55cadca3fa488bb7cf0159024352e48e1513c06d2a13896d0feac09732ae678e7f5607e87b591ae54a3c905f35e3e92d4abbe0d86487cf845e2c37f0f372350de5604bedc58465a951f490a49ca552e36f4a55eca97783df8678ab9717ce7f5e04da7666707a76998a01d57391e1e638e42dcf0537ad910854de5d7c0d462b03cd69a848841bbf7b2815f95df86087f37ddc4f7a7a47fb061109fe2f805feb5a1dd8b7068f73eb81bfafc02ffcc0eb0f2e0b5339069a65f184058f224c7c6c66627f5de0afabab7a9c9a84308faea63c01d48cb870f287c2a7f0cd98b89e1f9203d2dcd94625a6251c34151a5f2f3a0a41917d669895fe0e714d08e93423b4a9d68a48e7bcbccf1d05853a801144f6c8022899009bc1ee7f133dd1d234f7e3107e317f833d1107487addd1409413b7e31eccdd7835fdcc3a7adbc2227b4f318f33ce669944f7934fc5754a63c1bab1dbf9a255202ed1eeb55f9813c00e64cb13bbd5afd547ed2ee6c93286f1405ed58c5c3a7d6aa98637ec22a768277679b30c72a5ef10bfc2d46d06e778c40bb5ead1ab539dd2bca4ab8c9e6d0c5a91dab769e0c41bb595955dbc4ce45760325babcfbbdf7ef8d2ff0cf14d0dda690ee6228c5b4408176a5520ce7e30918c72386511494f3c1834fafa68b61492e704fd0ae548aa124971a36a59f1e9e90a2f21b995accdec0de7abb777bbb574e39e594b2576e5a0f366cd06e8a6840bbb9391e85ec26884f3974f10b2ff083d2a0ddc6444cd0c7b1d9d84fb7b1d893cabf59f8f4aa3496ce92493568c73fbb3fccf1c65e0fe657a37cb7ee36d6b08d75ca376f4926d06e3e874f946a92fc8c0b3eb3fcef1c73ac8309dafdeb391d2afa6a69926040bb9f43a0dd47e181b9203dbcee7efdefc1071f7caf7900418b96a03af0e091297de2a6f2937440716a6f621cc2071fd498e3b8756b5375e8e1b9c1431c02ed2616463dffd4660fb24dbd19d10e9dabe346ed5667f2a9639d6e71d2a8fc5bc4d4623689929010949f6d6ab73a2698fdc7d281d5f7bc838497109695ca3f8167853f884ff9d794680b19c22ff47b19b47b7b4fc0c08dca3098932545e5d74a313c4850facd38293dbfc01f9750df607ac3c1022e4b0781f2b3ba094bc525272a7f4c1194a038c5ff60b59bb9599b7e2f60a9ee243f9507ae21f00ac22104cb0d7319ef60a9af0a09a3099fde146cb48460c9e1134cffd6de8460c9a9cb35f4d020d605aef1400d174b183a498234110e1f754359e6f22d0a82e35b14a4e54190757d999b877e9ab6863698ecb94a80ebcb672fa6c71ce9b327a20189122b1f9c908414285980917a8fe6e5a789b4bd9842a68e871aea8c54978d64ca41ab302d8f63a35b7b8c2d1b75c27c5cf62ffbe54164f2ce7aa8f31f973d8b20e035f4998cdef3b2d195bd998efbb30f3841414d0a0ac75cfb0746d0d58909e0bf1fe01b4162f2872620b22722b2c17f26dfd6d41db1a9fb1e4867ab41222f157f4062c3dac9c1b949810f36292090a4ba7d7e1e957710b1bb6a140edbdcde57c0f7cd278cdacf7da5f6efb69d51fbd7255a02e5676e82a0d037d99546060219e0f3cbe032f8723f1f75482a92dd0c6441c514cc5ad0fdc7cc6cf2165115a654e8fe4ed9ee963127afee96df3de511e2c7678653b614e0c65db4a4b474778ba65065ef63cbb1dab11555de3af67a888cd03109c3c95ebff75e47812e0b5afadf4ca7bd4691d879a3d10dfa243077b0cfe7d596ca1b0eefbbe7b32e1564efdf4c1772d57dd58fafba4babecebf1ef9dffedb3c4b1a1ef3b89b32117fbc097e04c70227815180443253008180454022a814a9421c333c7d5d4cccc2c919e935216cdc0a4daadc7c4307f493443cbe0a2197cc80d0562061844860aca33685a14cdd00271406344325450fe15c9d021a93cc37c1334da0ad1c8625af0040eb1fab66784d61339ad276e6290e8eef676effd154a0f80eef66e67dabdd116ef39656bbe8f7bdf752f6b3edbdd12890c70c10d4138ea0abbfbbded0e97ea401df6ec612e8c1182017f2023dc54842c80602c4e73f3e0fd90a6998702c2a3028961952404c90932994c1b70e928f99056971044820959ca9da6c752427628646fffd5a8f80b7fbf93af0a4d1d334dd96a548eac1dcba14e1eccb763b121e83e73c316d07db8cffd693efcaf61306e431871f0a619defbac1f6ebb1d6547d8deeddd9ef1ced70dd1c89efb3fdf2afc855033a37d3433e82eec3b08a1d6ff43f7bee359256493d765e62415e88971eb167c29dc7d1b62e1efee6e0d3df01908e9ea56065eab5b395a6439fc3a4d86b65277f06aca5a6b1873bc92a757f2e050e67edd28e984e4f1c07b2cca71254c2811680c96803bb42341264e044e064102544a1797cb8b39f89d8beb8b1d46b185612bfb2451f9178e62a6d1cf0cb0ba40a19d8bcbc5e56265077f9633ca69d4a6e00613ffa5e0234971dd46b1519617c221448c283fa31814b4ebda3e504aac322cba76864c2053ffcc177ffbbc6ef8b46eac9ba04dac8de81d886d7e3016e616860ee31960db88368dfa99995661472885720ee4a8c43f835468bfb6618da56ef758a9fb56f8d4ff824da1fb5cb757f55796c3c6ce12dd6945f64eb04a02193390e20220aea4caa045c0201bc01537a8fc2151107677cf828a1ff0e025860a585270323c87fb1139d5ddddf721a1f25f713de9b902a705761f2c7aacc04100aaff1405713fe3082ba8feee685491450cd53f8a82f8a4231628f1ae04e9571541542baae020083789eda8fe1a1543547f92536146f529aab72841bba839e674d7dcdd9df807bcae6c95a900a1720685eccd740460d549854e79a220d9432a704a77f65ab60e77178642bfef85a0667a50db0aa9d0d1121a35c982a11f2da113141ac1464b68ccb0d0ce85b5f96c69f00edd7e5ab011653975663b7a76bc989b3b60a325d4474ba8ac904a0b2b6801874fb2ce1656251bd4b9449d1d0e1d563c140b730b0a469d9b0e33ea7c9a030a7ad0773a5a2de0e868356ac76bb71c9069aec8c99bbfe3b5a3276bd59d3a5a8f66febe74bd1f38eabeb4f2e4eba15ec2f8e4c3275e1d543cd4e6b3f920a1ced744417647c6aaf03da751f1a19456e44bc25c589b1b3dac6a68cba0f0817428f4d0b4fd3017da5ab0616e3e109edf2227b469e6cb1dd06efba9f3b79fcd0d5885ffb27ae1791db1f74354e1ebc8c2a77df83a7e54b0e113578844cb12b23ed48ed7a3990f5fbabe65e7fd78a910ea68c92e1eaa059c1d63d4f9bc84769b4f9d9f8982403806ed5c58921503c4e6339a23589d3b76bc5c5875b2b06a9a9814d06e14836350f8a1ef58805100fefe0f68378ad5f9239fd0cf1f61e153f63347025c7554616eea6831373fd3d18ab96901a75db2ea7cee660116270bb0a699bf1d0bb03a77bcea04fd9ca04d47ab69e61781763a5a75b68053e7bf99b97d80002c1578269db4a5f5c50a3426ab518b0947643570895a6f1011da81a5767c348a33046806b08c0546cc2572424c8c904c62a02747c4d70c021070091e39a5083a29266ca66c919a41ce9433703855031d9fa20611db248d2659e8143788a0a0140d262d5d89914a31af29e47841162f9f2c1400f5b15e5390a05f1feb65832f280bf5b15e4484904057a88fb545133420b608438c2db888b245145911b68802842d565ba866381e5a7c2125092db88842b6a4abf022e2f7c38f4aa4b1dfac76a6e9226a2d250b9f3ab65e0cc10df803ead9038572ea6b0105ecd18737f9d4930cda3f79b7d93a06d8020a9b943606e7ae1d2be44a89336af77a9ab70a17a1fa3e7b0ff6d0af45c0a0421b23c078474a129a8d1455730c0b2c2c0c311a897b3e65500a99b7bc417b58b091928415df79895852964041890a5c4aab588f13342974a630ebfbeee62fc548b1a9ef85146114c75853ec3c1d30550d4d4184dabd2acd93f45a892654112c0e91c97f33357bdb72ec3ccd23de60e6bfca5f19470ea8f3f86a6406edb83aa70b39f056b3f960ae5d60aea594353e78301785b97ee3bdf3306f2e57cec3f1e0779f524a29a594529aa6d460b8a01dc7cd8eab9dedf3ddca26ff276a297f72fcdb2093ff34c16727f157c4eaceaac85ea3d078551ebabed76361004096412a6baca1513a7d6a54445a833edd96fd1815c8308363f466f7cfa1c46ef20a376d81f4131875233728b035530887eefa56e6bc839f43a9c620303e9c1608e1f1761aeb3c5df39e1bf35f22954831d335b799e1b85feeb4a5db319ee5d20b0db22c09ccccfc4a70865328ce4f127e3aea9ac769a4d168de1b64fd6f26dbe853a8d3da5ae611085a042c541e58a8fee00a1e81ae1ad6342d57edff5e6d198539963c9b5cc16866d36f64598402ffd8c80b6384fc4ed1e119540a74618cd0fbc16d369830091299b0584c82ac562c1693203b3b3f3f4c8244263e3e3f3f9149b75aaf471559f66228186b64c992250ba4c2466422cb1ab423c12c900ab7445c222ec12c568b7cb5dad98935a05de7d48d35d8ca3bbce3e3b3ab5dfdfcb0b63e51905803dacd39374aa142f7b3163885eedc4a1a937c86adbcd0876cffcd74315d69b52f91157ef1293ea945724da13c6283ca2ccc398b39978239a72d16f3432b684759b4c562938cedd05eaf85817d20b93ab7814788c59ac63fe6546827332bccf9abfaf30eed322b357331275f734a1773a0da915c304e422fbf3fe32a6015928bf482f9547f29d215242cbca3434839249da6f16fd314424ef5d75e6e3379a0bd5c8ddad48a6ae897920d3a7a83ae67b185827619abfa67ac46edfb67adf763be7f36e5fd70354aba32168575e6537d8dd6fbc1594a69682f528bd4621aff4ed37a18255d4de33f354a8a31d121288914abfe35fbc7f129ab51d9460a6daced35cddbba12a9c5a7aefea42a7c925698e3ea58aabf483dd5ff3baabddadfd398a4169f96d01d7c0727b5a48b397f516c456a412a28cfebe1df2dca8a55a7aca6f1672c286555872d54ffb95597ae399b9b5ddd1aa442a7b86bb045e1670fbe651fcd7fa9ec797cef813e9aba1c1c648a0f84a911f4bb926a8b8e7445f527b5f8242bc955bd93b5d35ed51f4aa12f6e4ee4ffebe1dd9154a50794e4da48ad118cee77a4568db1d9e12467ead09d92ea571c4fbfd784519f528cb3f1b133557455e27956cba5f289fdd8a81847c5392ad66197abc60757f35ce969a97102fb4e54537dac2f74bec0a92dd41c9f1c1e7ce1535d7c7aac2f6075bfad70c316cbee505657ca700819a3e30156fef75f3b5e6d05fcf9a310283fe1136f221ddae540aa1a733b57c8a1bcaa47b3bf8af1b0ea3ac171e5bcea2eccc9ebb1cf38b45b27759fb71dbc3a793f5e7502df4dbf3a70632ba6adabb33bcbae0ef28040711ad59bb3dfacfed98e5d6eb8dc256fb2d0bf996e078c0afaf28451373fb44c610a539842aa41bfffa2e2d3dc3427fdd91341f8314a19e37c1641e0915141db07e2bf9a854c46de13624086cd0c3b6a4b8b0cea220292f2bb179548b4c19f6f64a7e6d01f80bfd5f46ac8044a82c23615619afd3904c715946bf7a2da22cc0d616ebf08a39c3544abb1a5a5a7ae8be69340b09514031020ccadd6455a5c5c5e5a4ca26fad76f693b9111211c1400e18a0966c6a900aed9657113f02d57951bdac5e785e9c90d94fd3ec673f2dad9696740208bf9a1acae3fd584a326dc561ea64ed5a5a2f3aa8fb2fa64e85e7c28beafd20f27aace62e84544063606e33d1db18b8e103204c8d5001c707c7bfa85e56ef47143ef1a8c6b4e87e4b8b54da2816b4a32d2f4dda15b451a2df2f356af4fbcf27aefbce6a6951a9235fcaaf69d4e8e58a6880912f7a24a9185b5ad248b6468c959a81e50661c4a0f1e10f7c982f687ce82c91c947265f35cdbea8ba179e4e851c4e0dc901ed6a62e093f6d9efbe7516e5dad5d4d48ab4cfe65c50abc5c5a7d762a56e47e1a222156c9a86b68c44b465248aa28a8bb97dda0245b46524da2accb1a4606e69106120f4bec114f117bd6833e25450f8ddab2dadd7d282b942b9aa60c3dcbed48baa692414daf98baae5b7b49f8de67423d057bb1795efeb91c92694da1efb2418687749acba2d124fdd7f51edbfacf65f78f6c555f7e555f70556f7c5a7ee4baceecb4f5d524e5d924e5dd24e5d92aa23ad1af502daba9f5b576ac59656dd777f291c47a0bfbc75f445b503e64816058c04a28091b0248018d99be91cf6840f9460c663297cd4fd75bdea7e5ff131e912e873978d8643caa91db3eee2fcb5d161734913253b4d94285192c40b1d2f947891c48b245e24f1a208f88617395e24f1a2082f8aa8bb53fdb398167d9d4bd66e2c3f4295ac46f1fbcb967445f7972b19c5e3c7f8358dea07c2508a4bc97a42b276d80ad49c5336ac69de472980d018b1c8bdb5ecb5f78070c76eba8f99ee104846d8308310ce198aa0162c733e098a21add43493364dc3b7dcb0a76f1474df67d3341569efa1e69cb25f4de36a19c1285535ca6ea88162cfdf733a7ab159c852c682ca70f9ee72b28c2d307fcfa1f7fcce379f7273549cef4179d3924f4edfa0fbdabacb1fe8fe9482b77b731b1a19eb1a195d72777708dddddddddd2174777787d0b9ddbd8371e6e08442e5be475974bf9ffb7bef69cc65dedbf45941103ea13ec0c571832cf471964ade9a08e49082b28d4d8c5a9a68a14d501c10eee3dc2b0e7723ee2e2e2ffee2aa29a8a88b8e6ec2e525870a0e61136f22cba14385f54745415cd52a1f540e9bc001055c025442193cd9a1d6a050e8a12c953ad340f46b2aaf31ab883142178de6e8b5c86de153e4c7c13741ed4a714037e2dd7a3fe0770d0ecd5557d4ae5ae32a1c1a64c3c5e1ac3073d13a05b405478e866b50174d074756411ad0fd1ac80405e578597468300bed78bc9fbaa2fda9aa56d9d0e50199a01b9a3bb06911d99bd9979aae69ca78a17baa9d9da0410f172c4aaa8fd5232594a52707da0f3d31f0e931024b8f4da602aac219585c89a28b29a6e8224a28085d345183cefa585d28894217484ce1e28dda3d5d71d1c610b88871e133c3f1785fec951f27accfa6e1c3dd69546e18fb87b650a8613cb7e686bd3628fbbe22f368b766c9ddcc86433fa19fd660087dc7f5bdbae3fc0cb4030fb3f2ebe11fea2321d3be1eee737d6ecc4eabf0eb016136711fa3a072c3ef1123f1ce80504aa245165a6821a5092d8a30b58892fd8c1636888d842554a9a204d593ea9fa998f3385aa26acf56aa46c956abba2f4109b49bb559baca88ff22775fb97bd97a01ede4abf57a358dbfbf74ad13100d480526014e9981557f39b965549d29a7ba0cabfacba8649c905955dfdd35c93c61ce65a25497e1915171ed42312ab4cbf10385cae4342a874f0e1f99462309b49bf5b9df7b54b2f83059167a19159f60f59779a2a4facbbc64b0306a8188c944d1a288ea32395254af9dccaa555dc6555da6a7ba4c28ca34e15397c32767a7c90e9fba15583249f89400176a27a3a4ba043ccb110b59b135c6df21d3a2316e397cba1c3ea12d472c8d1c3239a80ea9a08f85c5aa8e72fc54ff6d83ce97dfe5f0a9be53dd1f640a6509fdc82d144b827632aa1558a1d8ce0a2e3ad5fbb502abbe1f3c5a42413480522c237c6c7a28d634ee04ed6454d5bf0bc5aabf8c6a0616454dfab32554abd9f23ed2a82b01a8b6d8b46857825f82a526b5618b4da364aa7b04a3de2eaeaebb500a15da4957296be236bbdb62235d2d36d2552ac11612b1aafd3032c8ba0faaa21d950cba4347b2623c5a42331a40a94ca7697ae453db65c54458c1b5cbbbdba2ddddb7bb6f57db7d2ff46fd7f458342115aaedeebedd7dabed5431375fafaeefa5ea6d9d7c52e7ec97b68db08c602358bf74e0e8c071e1e9d708e6c2e3c293e5b8f06439738ee6afe0ca8e8051e9df875368bf4f4c8b76a32c6714e3937fdc76f0ca3beafb111bb41bc55cac48c11ccb168b39684574befdb94f5dead6f80032a5ee3f40c8048ab00d7cc33e0e7c9a755f8724759f073e65757f6f16a70723675c51e5bbfc280a22675c408567b0e084aa308b0adf0901cea7177c769a9f28c83a1319dc8dbdb12af4e15354c8bd1ef0555706681802df02ef141ffe05de691fc2312a8c91e6d1c08790e35e0fc855e872d73aabe4cbaaf4b9937103550abeb842882adcc791c0b952da6dcdb852190095d98c1fae650666ac68aabba00c20d402542fc38cea53aad3a0f71fcc8deaeffe53a3a452cccff049c48325860fd583a8fe3e6200f20021131832c611d5bf88bf0d1ab88108d5bf037c0a557f1c72d0a155fd79e093a87a1859547f237ce26183841b3ec9e08ca18222f8d4394354ff4db23aab844f6f678c58133e3d2b2a2c523ce1d3eb62c5a4fa6f143e3d2ad51f8b8c33aaff3ac1a7e70ae2ac28449c638493f9960a00a645e5d00f596cce4c5bfc187fb7e84c6a7c8e1f71e8c67f09cdd7f24efcb13fd66efa729bd8d4516842cc09ef343f7e3fe19de4af507a899299473cb49b6ec69c35ff26a5a4524cc841ee60584142078c31886081b18417c0604008e1002f76604738a00b176ca7050ef88245613cc022a769de84b58ee88935cd9ba4524c8f5a5013e2a285044e4b0637ad264256e8a83e566b089a0dcdea63b5a8c8745a5a700d970426d59f474d8f13a2c8fc3ddefef5c0a1168880107f09bcd3e8fd2bf04efdde45f5518fa209a63f9baf7d0df1e36bd906d39fc1f40633447b1a5e4afbecb5ed8811283564db91f8da6b1b4c3f7c24a923f3617a8321a27df645b4cfbe3fdb8c40e9ad48f6f08d845e7b24a9977aa9f92f95ad6877008104b68e9e869782bf4390961f0243b0303b4d30fbf145429ac6bfc57f4d3044b48f5f83063ffb2330fbf3e36b5f43f6723b02b7f9f16b900fff453ba469fc359384a9ccf452a1697aa99712b22dffee4d8fc69f661ea0ba02de6bf96a22d9963dd99be9403955be946ac88e907576a2c906933b2804ea87ef3e4326ea732ea8412f7f1bf4f15f770da08f1b0e4d236158c2f0064324cb1e3ef356047edc8c1c097d7ca8bd9123508e6c308f24f5ccc9d74c5cd3c8cfa4dcd7cff0d81be6a68035ea089422f1437f04be37ea48fc100c7f117ff845421f7f4530bc11f1875f833fdc6a087ddc6c681a99bdf6ab89368c877aef25e5aa51a594d20873f2459a497e66921f92efbb36cc41f9513e3d82763eaa94cfa7ca97cf0d237c92af43a3e2cbc7a151f0e567d1f45236a4e4c31b1ae52fdf864635cc1023508ac007bd915aa47bd0486293026d46faa1039ef6e3fdf0b130ec3300bf7c185e03de695f4ac9bbbdafbaf24139a3242889b97e58e3a3d4429a2625a4dfeb371f08137942ba5f18b5df95daf08130c7ee6601d584682f38c21ffa3685b623fdbbbb903bf4f11d3a74e81e3d241f084308210cad8076313737f3e3df8886841e864c38e8d034d23fe2401f6648c6746d04b38ec07b86d04c7be0a166ff83e1d0bc14076c786a9cf17ae6389a43bbf7b241037ceafc869c6598c47f3eba1f52558f1b0c11f9a0af617e683bc23f1fb41d8152847ffe917ef92fd5ed6a7741fba3dad5f3c1bf878541f515540ffd94fc43a69aa689201390a6f167130e36348dff3409a931c1ad44d0eefd948cac8d0fb9b901bdfc9bd0cfcf8664de834dd3f8833ca73a8e1f28c79c7fdcfe51415337fdecabfa5a400174c9445cd30c7371cad06f687786640f84638c31c6c871a7e3c70f4517ec27d32262cc814f1d4c8d1f77d4f831468718981def87cf9d65a7227b331dc8a6c6cf5cd3007391d55816c2876da3468f3b190e1b9462dc2b53e2b00105bdff9587f2d134b13f42df5ec76df1f8d829c55fa9669cb3d50fc607e31385b6212023f68ac77bc68651e3951a63acc6e845988b0f324d9b1a5f9ae2afc80624e2c7df2a7c72f1a953a1c68fddb352e3c7df169ff8c41ffdbb51fef19f0aef077c904d23d99e5264f2b39614500ec11089cf5f037c987d13cc6e3044f8b3afa1ffb36f93f63032ac3fcc56aeafc2a4d804b39a0926959960521d0881e4af69c86c1af96c7a2d7f6e3730277f44055d29b70f3cd6813f330e1b50f8f137eece10f91935020438ac10d57da8feda98ee1e63e2d7b7807acc909bee9f3bcb6da586f7703b32ff7ddc8e402972e4f900e2c3c7eec0388c6f3044f6df17d9df8c40f1adc8fbb81999ffb6f846deef8624f5dc3f8c3f0f5b61e41789bf0ffaadfe47a0f41fd98f7f040a682b02fffd9108e31b8cdc88ecc72fb21fb722efe11f81db9018044c07b45b9b463d327af0c2811194b8e20b57aa3e8cc3f8bfd4be89364de3c00115d5f784114e6a6f1dbdd97f3086013f5b0187f6001fe6f8d7a3d72ea47f43f8241fbe06f8047af838342a7bd81386608e8db475dccbd6bdcbf6538254c43d2c156edd4ba3c2d0fb834020506bb424654f2b6c529de0f580df75099e014af060601f2a0c411df812e254f83dbc1ef0c9a0fe8f057d568d24f66c227b335ddca9becb711cf7b63806ed1e6c5b37348a01cffffd08d5271ac2358db71a05b79aa6f1e7aac31fd8c643c117fc793ff64b2ba04254fff75e3ed0c02958e10bbe9e6b1a0f6d13b4c92a7447d0f581649848a040fc07b4ffbd1edda461cedf17b44531602d10685ba0cdff86fdb975b3b78f3b730a18515c4f5e7cea56a75dd50a9f168c269c62336ac73d359edfa8e42d5556450bd58c40000000b31400202814108a8562c158248cc44dfb14800d8098467a541acac320876118648c31861040002100000300666868460100c3347648cfbca84956a68942b7181c57f62a2eb95e94b014d346f35ccd43903a651fe4bb154241a99ac4b586486600dbc010a147e17a1ffe10a11e1ce49bfd8fa618bf8c698126d382ff14dd01f45e119487248d215b6c31330442a47cdd463a5468f2939d1cd7ca9c95f3606514639085445c9f62993354b3e00ac9242179914dca9b40f7b0903c0395d386ad5375ba649c269691594296e5aa38804709405a06801d59bbed1970ebe243e3f1b7a0b13e2c8a27a3ccc915e87df4ae3248df4c6300da31d17a7d81d50350b0f1ba25618f7c3206e113de0dae712b3a8c4c538047ced5a7e6d2ad14dd9d6aed84437cb1720d9e152b8178e26fca26e72c29b57b3ecd0d6e06db0444003391f48d197706603a044f951d90147039e156be03736778bd1b8ed02654e958135d5af3d4e547b0bc8bed7a80fe22763ae67902ddb2f0d79ccb02ca969cb8b7311e3365ad6072c1e6d156f0ff16597fa74d3221a3b88a4becfd4f09fd5a0447d752128f5705ff390b201625d875605aca4ac39188d0ebcae2420b41709914875f496534986ccc5fd304a2ec816a04a3bf80fdbdae166824d8fa2fd42d5dc6aec9c099814553d846a8f769da2376145c99622db8205e3349b21e16e8061d293e0eb60932c6528b48363935dff27a701f5b5003295ebeaaa37b31706cf168617a70580d64e0bc4601a4302483f2131997b85133889a8780e468d520f1c8489c52462e4f33baaf6b123875fe31c592ec5a89733d847aa04f202882f0c0d1414b5779a1f4af5ec3838dbb1d76059addf0f3675d9710dde4a6534c14074c4e31792238c5027706df3c6ed8b1156788a289466a31e1c9c03b5c1250c46d2b9939d67658c87cf3ccc388dfc934bd93527e4c0ddcdff1cfc311b8f901c42d9be08c66b2997765b8c22014dc6a07ec892080a78eb1a34fd52f4862258ca7add2aa67154d26e024299ed85068d658bf1944a24a3582972103e448eab718f527a4467d03d5d3028104332f0e12ec217acb9ac160ff46ded99d0096db9f3f38032a52c142581bb8673613d09c5c362a9f2febab56e8569e7adc0b573cfa58b004d69cb97d054115b2ba389d0ef8a06576a16fd5261425ec6bf52841685b02f137d9757bba81a896caaf5529e0a11e70050526fdd543d3f5002c095d8258708f06cdd93e12cbe6d7ca8804517b3cb93d883b0114f00913c94cb7720d7c8e033e0ec0cdf9796603d0201bac3d40f45d0f08c80777ac50f6c55c93470fd0e2e0813580674c8c3f28fb37163aadad458738a7e57c326ede32417ceaf98a593b254858d4553e85e015f8e6063a3a5204c0e4c889230ca8406b40ebe3e2e795d4f2a2d761d50d659c2d0ad3131705041ad3451801efe5dc61c68dd833aeaaae70e7e70598522e4ea94f06e2905f9d9683eea18c40aaf61d889808d94dc3de25f8581241a78a1829f8e3f44aee1c9bcae3127cf16add649e18f03cb93489e046e68722f3706465dc521a67a22aa3a419cb0db7526e9126682b8cd86e99e4b090f638168658c104551a5b4c4f7d2ab83b08474713db1108d90f578d10ac25629d0fd849db56049b3beee4f0a3620d3a761126f968795abc60627360d9b5a0bbdb3b6f696e2a54b1cce61c2c3b0079331a8a187fcf6b739eb47a563a58128c9382e042194abb09e57ca390ea1ec93a86b0d28304348b9240af3179945d5bb5da2675ca30c7bde723de6ace78d4f9e110073a12e55e0437cf6adea9433a077dc8d31de953e9c5cb26b087eacd8e8b214ae10b55230ce94d4009f054bb756015abc5d6994dcd4d851e6335eb77703bd40f66baeeac7e5aa06101268731c0201ce96b473ee0d45002b7427ac52f8a40f9bf02fcd5aa1603517ad677eef21d740b25ded34d216068322019e08003f9cf24d0bdb22e4a35177f16a2a128825c881fac3424e9cb3f02a1d5e371c89561aaca8152ae2b11ad60872ec1c7c348981cf8d8851f908b7dccafa882104a90409175256dfd75c9682258916fa906af0821e5fecba6ea7d177babc72f070287a01fb3e0ab5b76f4c21797b35bc4cfc5bc0bdb7fbf75d49fc85005312566a196df871ecdba9b46b0dd497012b720b8e3c20db268a9ca0b7449b96d4f8b9ae4fc0ff723b829c821b3241a085e1e0d0c230c44f10e4f4d52979aaa30386edaf6f21c3b1579bc7a52e1c3654dd722b82360bc841746f480cd181f473818500eadd2493e2ccb33ff902255c938664f063beb4fa509d6f4337970505d63a1e4fbc5821304de98c1f275634e478dc92608fc95cbea70b093315832cdeae69271b4bd949eca0adf281f598a9217d39a2efba20f96bee9d4ad62b2eed23e408b09537c709484f34f8f20926ecae9081c1d3feef041e34152f8eda6cd65a9e919b73a531dc2a4ae51ebf41cfa53e54dd8e0ea5a154c91b11c791e401ba0449d014abc292eb3481c0a3e8e9a009d61a60ff0e04688846e832a36d64109405822d99f61c4183df5118d2c16735b612aeb54ce615c1c1cdde331eef2cc42a47f49c41863c984505e236cdf1c6fcefe1856c455810c95ccb226f5446848aa8ce7258079fc7bff2dce147b9b3ab2563d8a3757a39ace4f60a5c8efa767cda38b38a71071bd8e4efdbbabbd5665d6d28b8c49f4711f755402aaa23095c7894d4c6e4247e2e4c95995615c2630f84ff5e9f87c05d832aa920bb70d486298991800554c68f7276faafe938eb6131e518405aa95c5ba8d4abdc864e6f8479f12a74bea644ecc984ee601fba997cc7199b2882f5c36a13bc7813a167df65691406f3684b8c17a2f5926de1463c364b362b8eab12f3692ae6cde2e25f83be324b9bb8e6463976ec1b11aaacd122522a7f0706d36dd1df0a8f4938b64bc180a16acb5025494ec9c04de965192abc67a43a946893e028f6c23f9e346443733e531a20cf92a417846815c4f505838a10329e79656cc6d4832ee72ae7ecf11e66ca77fc4c5ec450503223e0f2045ccd28cff4f9b6ef4eb9b0d7f611c7c86533bb52407190ac5ed22563edb7f51191689d3011d5838c132f80b0459132546b3c0e968166f084025f9c634872ac79e9ebe953b01b138a2e14fd9ba19d38e33ead3f829558a439392f55efe810f689d68c47ae37739144da6497f0dd32932bd85326986fede31c2e39ea54a6e87b11683f2b8bbfd840a110acdbe1b71f882ff6502a78500dab83f6cbbe9dfa8b9f6e278f6c8c4dac919397628246688802daab5ac99137df1084c88f19fde1e2f3fc2ba8821e32138ca85caed2408bd9748df22636435c7d73da016397a2356cd76568dcf05a632dd59b90b7a05c2cb01acfc4b117e431b29d92b1310d73f95dc33855594ddefdf7cf83f9fea85e1b33b8c0c1300a1fe9bb4767f355219b512dd25fb3f2ff101511c32c738807dcd1ef2e456fb140e4a1c8e142867123f5eb3715519f3fcffde265273da1ab1c9a1adfb9f40b750b8ffac55dfd070a0b08becdb68459291a656ba27a11372c0455d1d43ddf3a3e1e951eb63684ecea1c67c422e9a93371e3c3cd9e179ae1bf00a5f120a470a608cfc56fa9e4e5d7fafbaea5bf40f1671507ec2699d8cfc4618cca658c8a6cbdc8b024ce33486a32cd3e853c9fd9f4124bf9375f0edb5fb642d64c82f10ec7e5fbf29bb60e95985bf1b6a74db73b752fa86b2c761cfd724962379c094c65dec5a2b49db65a77bdd6fdfad685c6daf147f7804384e39f5f1bbb0a7261c348d8708f1e00c3c124bfada955777a2282199a3a81738612ad08235cb94c892ab97fcd2a4355157189ec5617e2437012fcc3427ae84b18940c20f4fb470a4f74e57fa4417523a53b868fee8d83a02bfd714da4b8bfa2f04127dac239aec126113ed5dcf15b9f70ace70ff5bb0b6b3a8f530032a893568b1e47c8dcdb84c56cd0bd352b32390e4f7f538b40fe07a531da0f732309a0d4f9514506eb300d79fb44a7027b744082c0380e9b16c41204bc8ab4c95800a064be9d8514cc7398bbde43ef068457228c164a40fb058d5c8e10c7788ab1a3a9696ed475cf1b8c3e1f880293a6262b49a4e020c2c1dd0e21776d95ccabe37adb7a5c0182e930e7c688e7ce488ce5ef767e9baef3ce7bdde5b003f21863d007f85cdc985f1e52bfc7ab806243638eba6f45be1b3f00ba0d495498f728d0d35ad838d4224dcd58174464d4e972a71491e49e4f66fb737d31d2c38d2f474cec58a0773cb9ff1b163f2b48b882dca61d603d218114f37d7f6cf07005be9ab21fe4420d8e81f5a9f71be2ac6f842635a2900d4a54fa3daea46ad95657f073dffec1c3323be0dcc0358d115d9680e6ae3aba49dd9f08d1c5118c3897e65c320d552fcd49fa1e236da009e09bb6a2a751d6f3a885d546b8948b4cb1b3ca8b30e484098a8441e7d5961cfbc86bc9eb59d710b155dba9d19c049208593864fb60b08aa2abbf5dd4374f348cecc96e757fd524f2369ec6e043f2f44311fe580e761e6ac5f707139be0ce4888b0a54c7547ce2827cc21d4ca3787a10d6b99d6df87d094415cc628b1d528f9f2cd381ea699b62ac857d886712d0061dc1a193919927163f629d795d7cca009e153e934d5ff1109c19c0cb863c91eae5f136cdb0aa4f2ba09ddce2fccf83a2c31ece3c3b785d90d2c6c5dabc4d8a627a3cea0db88511910ce8bddb00144215f21909c7bcb1ea7117d20989a9e079662ff1f6393b373bfac905e026752592a70384dc232ef1a96cfd6721fb495107b9ec27e5e5f796d90fb147cf43eee79419c861d4980fa7d4364d72a1926009f564932caabdefc05f7fa80e30e5b4ceec2b3b905a3f2d1f8145f26322e97d62ed775e4b84fec06a91450b038ecdb08c4933d1a4c58c141c86b3c5a5971bdecbe3489099706eb387a2857f623f649ef3c50dc7b14ab27b80b140828204a664294f105ff03738599352b5278cd94ae64aa2ff93e30ae7c9d0baf9e405e5bc07d75644e3c668044da68b1e481d42135b4999dedb0b5891181cb5069fbf0cd09d4d730a7b97e00ed497a953f464dde138ca3be351239fa520312e76dbfc358e0b6d9baaf90cbe34b74b72757b4d4d3db5e270e3e85a22135d581de36ee958a59f6b17101f97b96855a3a9e571f151464d7e6a6aefef13ec2bbfc3aa1c5a5f4545faf821743909cac071e0331401b547223ddcd691ca525489015ceb771c6050532c8563293180c37ceca4ba85767ea953c36488eadbecab224bcab625716dc6bc146aff9958a008a2f8a5880b93962d810b52949513844644c975b1d8a803638a602dbb1f7e1c8a0cd10cf531c0a8cc259c84a1d4cc9e2a102dbd62bfd9678aab19525c865cea59ae1cc37fccd29c9496a8f0a90437a1e409392d39e6a85cb0af9ea83a18267b56e03421eb1177bb8e2782c85b984765d15d0460bbf5a13a0d4e29dc4d68e9f83375a5a32634a96f5f60c56bd5858e36729990c32ff6c0adb6d521079612e691d20753466ced2ae54fd4f7329abefe6d733d229ecee13b84f3e896c23139e85d979009aa6504c851a8541b8abb2a58786346690788ee3b9cb0ff6d113aa46c11af09c3d8e00625a5fc412f21b97f666ca94c62a487a17aa2d79ce30582a5047f570e6e11ddc32158c5f4f50065353954745e4da6514993e1db386e4de2835429505654226364063f678dcd07d7af9a51fed712c9363dd46d30e06de85891d00bf80237f2f24cc9c9ef953afe1801abc29b81cd9fa120fa523b0a428a431e120a009cd2396a8f51d27859fb8133eda9e7ad3009d218cc4534ef572a5f847a5a15425cb5ca75c5baf2dbe77acd2a27d219e78fa511250dbb3667c1f88a2c8b0268eedc8852eff81073120937f927d4891753976562e637f54468fc1e970c298306c82076132a483ccc52579baec74654023b9e67b5303256d370903d3dbaafa4da730025ef02319ec7a7c8941ea46f5bc2a7cd1c4b23309d57602ca4ca76574ed4c1be24cee866cebe3d1c75c9553ab626c27b69b470a14b13d76ea9b41e5d71362e38a76245825c8daec4aa99eb9c2aa775e4b62628b7b85dfed6a5ae2353ad7976ca92d527370318109e422885e4944dd733a88878f0b59ee93141a278db5dc5720082b0c700d523de939df77c92d10e417d1908e53f77fe796e2c58870633981fdf00921d54ea7ae7ee5c844a0627892fa97139eda8e8ec01d1c2e76fd26bb1171c5526c18d1b0e76e3d8c2cabb4a833abc778b5275ab69280ab98c9b34fab4043ba32bc46fa9407ebdb07cdf30ee46a28cbfe79a18ba423f1b4160081f5bac19083b7f4f049220fbba0e07fd92c08ce2a4ea0383d5ae777f01e06296842ff5d3aaa99a9e9d50c447eda659f8e345504cedfcb19b9832bfd9d625d760aca424b3557e437832810ad154e994e0cb53de12018091ebeb0b6cdb0b7b56e647655a856abc217e2629e018c0356bbb6fde42f5078a29d15b40b364bb63679ed6a2bd28408b2926983950ff818cb7f2dacb2cfcbbeb41dbbd6a18351bc2f317f477fc504fdd3694d02ec046b9b01f0ab11c32caae09b7ebe86e0370e29b20bdf3891c770b41a8f27daaaf5a7baceb96e50b41a991a829308908bce34e13c1bcdd297bbe0eb296f723bb89b6b4c4d91c2d6577406a2f69710586cdd872d00ead962756bf9e9c98f3da20151e01bd69748cd93f433e0467de484a6695ee823a5b13348825d524f876e9d3d7df07005e71988cc6e8a2bfe0d4d75d6d095539bd9f77e034381ed23825a74ab06a43bc47d68a45574cc61ea78c442972e27df0fd487c49b2a70ea41fc12cab5cbd2e1c0b0365bd588a168ddc2b271637e0dc08443c45c0613beddda16514ee2ab7606b1550101b51c99695d50b7d308aff9730e53171bf6ff1177883fa95c82ee78858aca58b861746dbb6d4c6664098094bdbf551d9e0f99f191a38259fb334685370b960c363907bb31ad29810da5933e2cdb32bf9e0bc33d1488aac27976913c379683f0af67fe08e1ee6dfa5ca19f8a17d6f98c6f64cef4cb22f43da6fb1270aa0a47104b7de0b830b1cdae7b905d2177f1f8995ee08a31cc91e892636b1894f646aeb04c8c5bc22938ca9dfc8a8476d92ca8a5dc01e8629cd1363d09919c2379088b71fca423b5ef80affd2cd62a97d146908a61fa50cfa7a2610fd0e8b9eb09049b563dd67bd1db8dae5a408566684b599ca7b7ce0c2638b768781398b081f12b7bee4876eac0a3cfb1c99586853483f2a40cea6fb529bc4aeea940ecbb999cee266d8f91f333d0e200043d0f53a550f22c4f348ce6e71a0f8e6380b449e17fc992f15c8075cfca20343b3d548792cd1614070ab80124d86e997f642eab74c4a04c13df891df94e4f022bcfe01440667049618a8ff6a30567b507ed9696b4458b63d193e931e6c4123cbc92ca294081824be4a0b82a35026e3220bbf0206164cca159901d9e0d232186980b9fe5b591c114aeb14184245e53db6d9441e906e1d780f11e8770075f43ccd144a85f6854ae7c59891f380606979a46d33db82f11667faa9af03fb961f7371a8af2d8713fd2674f7782f0d85f65c68f790da71e57c1f87d9910a12cf2867bbc2fa07d32d33b797cd3b064dd1421ded94a70612e960d7726d177d2557333045020878cc0116acc46bb4fc639a71bacbefcb12d9cf17689cb10c17de401fb986f28bcab9b3b4dc22b78a4b88e895b9bbfa598a10d6a293981a01aac351d034519e2b6523b1ab5e2d85845a0ad9a678907148d57ce05607946d7cadefac18403d09f6717c1220402d1408a11d9beba25e144a81d326b6a82bc836a415dbfb0a04b1fac82bfb49fe4640c7107661308770cd4672fd03cf5fad0d0368a577b120672fad8a62518a3053234834660ac9eebe7f103b4de716966b8fc6aec6a9241531e9872cff00788e968d0f58728be599cbb41fa75b732216de60b67482d98b90c3769e5250e6adcfd7d7f0de30955b62cbbbf816a7dddfcfc15b58d0524a4870587584df40d1ed544b6f931c587dea58006c470fff663297f69886aa5733ce42e7d28743dcd54cb6057a096cce8ee170906dfb9184b074d354193a38af99196a72336794086e7b488cbcf936ce0fbfda594bf342082ce5dfbf4b69cd1b7cbcf39fe8400a3e90eee560da8c12e047c3746081a1b0df3ed5b8b44029f0af18b0501fbfa123292fe6c1df27441284afeb412c0a850f01c5973b0c92268aad796ff7cddcd0fabcacf3039c351e613d177731388b83d019c256451552d63c2afe7640c4eae99b4fe570b5cb6d0ead568d90629644e5e77fe681304f0e0e7a13208c2bd6614343c2c17dd2202764111b4ab80ac3778d18808c35fa1fa55be915a7cb8f5917fd22b8ebd3dc0c6dd17886533b9e0d2ad001ae8a905aaf3be459179ece894427b2610879798e06c768e7e0ba3155f05570882c22fe724eb67d3a3a4560cb7a8e36c1afbd1bbe6683c215f355abe1a6522929f6635cb4588023fbb83d6584ebdb4a09dd0ec3218069ee04429b8b296b6bbc4533e447d4cdc7023999f9f7bb3841d9b2f43836a36094a5fcb6af692b0a6fcf6f75ee05412b5408dedd67b89916f55dafc07191905ed985ee2116d7d20a271f28e904a7d58117d0f5b5a16f7331087877f270e9f77e7a7ad0297a38eacd42558897dae9a45818c1c4c1cb9f924ea19a182861e2ccc74b7149d22645e4fe1895bc9fdc7d2f5fca3ebbb8ebc9b6deef7c578fa0d6a6aa21b6aa4b3f9c70896a90d4143e62b3237359b6bac3f2e085586768a360c492510ff3f02e2336174fa51caee98a501db997d51251c35b07869162b4b8e504107196d4ed9d57217f8b901458b7676c9ccade31d99241a8c4869f71b1ed46e8200f0c861f212374c731c6c2a0bdcae2f43a65c53b0ba49e3c6ee80d6b72b2992838b28c0e5f9afe3e70b34fae039ceaf046e380e1c7311a62f43e3dd4438359d0e5a2341b17bfb3bbacc12488eae55ec91688602941180991db17a973512bd1e74cdc4222f754ad5d5daaa489013ee1e5b3090434b9ba3b6fbc9e83dc102e5e38ab05fcf281998bc81c23fb8050c745cfea77addef6537bf5750114210208025435040bff4e7f9863d7869cf598a07f4ada9d32eef59264509fb2e263a3982e2733952b8faada522dc3b9e29de2f85db07ca103544b35a95b4e815ebcb140f19a53a8bb5fe14cb9c22b62e18a4ff3ed332de9b4850d08aae2556bb39239009802eccddea4b62bc55c7181276232949cb0184aafa54530c588346ce74def3f401e2b737a9e6595fc89cce572a21201442391a08c4859f4e6865a2f281de16e2edaf823c34352e353a01e214099014430047183bd96f435d271cdf96d1b7564daa65302f67de985411da189671294427ccbd510f9ea2123927831ad468aa823b2bde0fbb22c06313de45b15c229131b1a10da80a5f1347c5b10fed5fb9ea06faa767248ab6dd4bd7e1db384bfa9e6e9f54f19f3ae6af65108fa53a362044498b0c996fde5c8c357114ef71ef34ca81bbf09d683ab53ec03b952a5599335b76d945e0e173637fdceefcf22c22c9ffda4aa1df0d75d4f89920118c430aaf812006b64323e8713d8594adb872691229bb0c509ad810a7f5e19b2f15725491c76e6d607f851b1fa3ac79744d8f83905441ccddfaf50fa229595f9ec326e2491f897607c9e3b97d228112218176fc882f4e9f5ab6d3cdeb70a4c1d55586c0d544b048732b70c5cc02c1413764f775d54abae534f02412915254275c68161459d45a2a871c40da69aa712ab887ea28541efdc597efb2dfda391cdaf86be9cfe5a2ff4dcd34083a8011742c4df3acd2d3b85bb7839d3dd30531559594556243c5a20f2674ab8cb69012b0d2ce3d283e81f0146dde4edc4a51d55019a22c9fabbd61ebb21ac197d026ffc3211a9a5a13cca54515999fc2e2cb32680e6b62fd7e11e0f07d54f260857d71610d3dae91ccdd8ee0365c05427df115c1457b5892c665664d8c4f292eff25b0c39030d212d1fcb58774a7be4331ee81efa742b9f3b6bb11f4c12e7872ccf350e04764184a4cad6deaecd1bf346300e5aa20eef95edcde5127058d2d2c847eb7aeed489de3a406f448dafb701732abb5a26ee5b32775cad9a8bd142fa3e9fe6afe2e8da07fad9ca6f4df18f70ba9c1fbeffe2b7612c54e9f2884b57a375e695a641bbee48a1640d7874cdff8c1815f9bb8d9590ebbc162743ad27662b8f5d4cfe0d03ee636403b4ae3a7918e24a49c7386cf40c20c513eaea2176ca78848228b3a48529a09c80b06cbab8bd200e1b23b2caf17c4bcdee21d49618ba18b4649d3702832dcf057e60cbdb83505963ee8655f321247a78de9b58a2a237e6551beb60b9c6461a937554cc7087e87b23c7f3cfc09f108156a671bf2a081994864b1b0ff8519c14a0cf2f3e3a35cb0d5453a73a189acb0475d3d8f063cb15ac5f5efbbb85159c6ec930b63e7b5d768e366ea676107f35999fbd3a5e2e080eefb0a07a5b9c86e759696b8ef83c732bfd0396e899328a28a1f1baa717375b7d0337f519608f0b1050880cd5132e8c95e856dbfd2134997196202244da1368e9e8593933d6403c1fe47d744e2e6305c83651c0f6f1a750e16a3f1f7b2405c26ad7dfbcd3a5051343c7b8be40f790c80255f11b7a10702c527720bbb25c925574eee8237f15082da074ec6c334ab655b619034dc7170b7c6da0a18599c50aae1ac7bb628c7921d315b2ccced41525ee73df50ab44e592cb2d3bbb6b6c7abc353849c6ab8960cd6ec489527efd9a0ad31c122e26d53ce01b9300cf8544ee1c78e1803e6d2ad824e8539c9f94b5970a7dc8c831a3e508232d9ffe3b99752c93cb27dedb734e8985ec14c6b4c82512560b470c2389c0a70f9ad0ada819e9bdbe8a3d64d58bde48bce7c00ba14021cf1552926aa08d081d886b911e712aa3de7d2d06aec8b7feaba0c72c523d8fe2bd407db16cbcc99cb907c5d680b480243a7948ab51cfb647db9edf8a3b3ce4b4d98f4f94bfd3999b63f76fe7b57958cf364a6b05c4e6b159cd2e2955e105218e014825449316fca606d446d6688fc1758ae118cceb3e69090da9f8690406064de13190d9487dce2c940c3eaf1af2122d08c48204b366256df2868659143f8c0a7c966b81ad3eb5508a95037860f75a18da4719cadc10366fd149093c30de56f57ef7f1766b4b88651603749431a0f57512eb3be4764c29cd5d68d93075edc1ff4b6555312850f96046daa0bf7504f3e83d3ba774af9923e2cdef39cc07180efdbc978f5f44db90542f48bf29b10c20efb3f73cef39eab749eeb6f5ada478cff849cdf8a928f4060f1b98c0c3c6026070739de26bef2dadbba2ab9e22218cbf86c354f799356fe683b32a0f861bd62e743dadbec9596eaed557bd56c079b5625824c51a4c4dee65c3a3d035ceb746708cbe5d3b044926819fe848eecaa07b91045a69aaa0aff6a473f5eb2308afbeffb99b9eb816fadfd2f83d98392260e6d688db3a35c372f3aa7cd91cc80796e64372f7a0731e248b2e88d268789ac01e757e37005a3c979e4ed066a6b1006ed46883238f7024e95d4a28762d1db023c85d546dde688317d0f213f7b2e4cb57563b11305bb765dfa1864819b4487345f31ce2ce0ec5457079db6b0294558c9a5bf3b589565bf01dfc7896d02d73f4d21b3f0bb449cd6a81dac674d07a4097e6208f1ce9a3f33cad3524cd9b1a7a83ae99d8c026b9699a78abb01200d4dd4749b310e8179bb8b470cb84b9b0cf10b0c360d61cd1c8f00ed7421488dbe558491f9598fcd87783c2794b501a40eee09c1d68b18cf391e757db603148f8f6c08098eddbdad8047f71d981c5f047ae4591e1036a56d2c3e05b31963eaa85fa7cfe83527ffbdfd3127496d28795b12861c4c34e0430a7243485e24a53c916100ad0542f8fd4e911a72ae166102c40d9cd27891f14406edc88e300619d10948fcf005cb1807864ac5b0f7f428835558b7634fd1ebcd677632176eb059232c07ddf12c03c969c34880f60f7dfdac395ec1165045803ec697901a41092c85f83888d43921dd847036eb14e1b05d756310630504a039abcfa6aa816a38541fb91da7da5b5414f575b4e70873d8eed13b6f316deae1e6463c0aea19e55121d15b15fd4088bb239fca9ccab15d834e847faaabe20bdea6a57a8e4212b2bb5613d6f329ea0702e443cdb6261c3cba1940358f6bd50b5ff264f89c050ab0e078803362211ab8292cae84595c4c60241ca916ec2a490b4b51d99194b7b0e635f074fe9863e759e45760cd462ec9806b66cd3872e3c282d76208f13f463c32a92ef39588a844b2b33da6973e80a098905e98a7083cd4c60e16e7e9c8d9c5451f70fe80de7ace633914a1a8276d3333236ef5e48582197589fcc40ac1513a801cebe1c2f79e6329830d5c53d8372ce8b08db2c8fc038fcce6f250f66a654c1e063d40b00850a75fb1a26419d108b807c929599377de14bd26c4f2e90f5602a6e1a2a58cc438c465a6f04cdbe4f8ba9a58e373387d850d17683f1a455ae0c91befc59d3953c242061ae86642247dbd4d9f05324db279bceec1911be818b95014de3658c6df0f24e2aef1cf98704941d092c6c852c653edae891d420e45c3a167cbeee26835af4320b83521256f9042ffe1f7eaa011aff88ca064f5754c8c315b87163065e0f436acf4a781574f4385ccc4071d5d4d62ce4938aa3b118ec0b22f05a5aa52160fd0014f26526cde41119e87ed912c5cea1c5d23e9d3d8b78001c29f0bd9ba8873bf75c5094e88478c4fdfde61481afb84f0088b5372c4c4ba23ced509b65b4e7a5f0c95f4e389fbd931d0d9773d293f76817db061f7317bc6f1408832f28a23bb5709d7881c62298f799452f64b44718b7835da601d70dd2a8bec11a99192ed62d5eb9f595fe365b07585d6dd93e2329ff3f7df1b13d61ac3abbb40ac97dd556fb0d208628fb178b0c1c039b42c2416333e9f165a4c994c47fcb13646a7821f46972e97b4927f9efb6174b6676dcc77dbdd9e58a32ebea56c7e1f42249d8e1769207dbb6d5a9922d3dac39cc9303980697c18d217caf02e497c05e8d908c88bb1b54ae1ccf389e55071073db89f3a30983c8015530db6e96b841bd2bdf4057570d743554bf9144091d91416219a866bde805b22d81f2d340c721e65481766ee4849ff4130555c2c2cd3ac976e6622319632d5edf0ea53f213a2593320b09d031fd6d65bdaad8224d4d027d559d4d35aea42336872bf77f692c07d3a8082f42a429b2c910850e297ca018354d465b2cf40e9cda65fe5f9a4de2f4929b109fecbd26bb99b795756ddbd7c0c9c67e0b6ee46dd114089110e8ee6e812560acd538ac1e758907cb1e9f284476a910b44bc84b4a3bd63137ac5fd5691e9010d0d1e2c0d5922d085a5014ec0ee63318188c4a0ed6e034acf4e373f657fba8b49d2186f55b96ac0ceb54d855ad83f7908ce28f18a6cf606de9d47e3ee5e1c66b2e605689bad2271cd5b80b7c6f8afe76585e71221292e48170f4f3ac5006746eec2dd48c89275ab116003f01718039c42e00e416d3ee718edf20fcb64d11d01f386e057e653651acd293ea26c554e388092341ca8d237be1367464bb864012b469d8393a749429223a156bb9790a8411ef26532aeb561f7208ec9a34c667b739462b19779f3d5ab11d6cdf1230f82c19a42714b2320b8b342bed9bebcab0408336b62d4d8917c42b7f63825e4169b4636b7694216af9c95345874d6584732aabfb299a8f3ea7fa430d922705a92ca0ba68ad1cb13d9c43bdad217d4d5d75aa9a4df71d7c93d0e6522bdf83461efaac07787cbe642acfa5c017062a9ad3ed1940e977a0cd527f73d5f0cc396e35e98b68052d9b13c7881aaca393060c16ea2b3294c012043ee21220225a470605cb3a9b1c0746414461464b4f05c1f24f8404bbd740bd803b49648269f3a8295e7a5cee6736e7c00abe91277165d2a32043fb2e251a90ea7a1dea66416bf4dc13a5bb02bfb692a323fc45cd1f63c63d69634090b7de9f20f14ce006632701cd617772746c02a28b13dc67d2118a8d4a1a2df45b3c607451b34710df35fa083a17afff7dc214c3399517cd0def223aa42ee1e5a7f60bc0d947fd70e9de6354529f2fdd460664cd2208ce2c5f52a92be515049ed6d65d93ae3119356b7fef9860661bbc1942e9decde3b5e6df168089812962c20c37ad946254437ca725600ccdd123e607141552e6e60f6c3f5786b6d032459599012ef98ed2106ca8143a7a1f27e49741df8c0323d5c9c89865f593a313a2a3ca0c61ae647a0815cd94faf52981b446039d42df8640b681d281bb707fc708564201a3ede254dc9752309505752106e4ee3eb9d409b916c241070879c29ed518a4f229a54344bbe50d9c1b1f8b85de87cd6876f504dd997ba8df68d293bb7a5804e1ab18ce333689420f204191c56054581061ac08e6105c33fe854eafb813681110fd324b83ac9b0ff52e7be540ae1ecc5c2f30bee23119b8ea0dbbc4a30576167688fb1b7a9b4bad09579861c6aa94845db0665a3e24c15e2c2b90a158ce37a44ec289bd0b6e9818e14331c088156b26a5964440605928de5f000dc8a17b8317fbfb6fe1f174d48707fbcdde69736a142697f2cc635ba26b918b6558711132473915c8f14fb42123d321145ee45610b91c69a24b929d42cfaef863109d9c1b1c23ec3c23cfd6015f04978441e61655e8f989e20c9e9b0a208a625317693db83e7734337c0c7db039f5979d4b950628f8185a560e03941c24b9247462b3d1438f909e863a8d0785d407dacfb4b410e2affc8a89d2b4288403cb43e7880a4411a1620565644a31a078e65f8e9c02c55212f42561c6b37c8588fabaa8ab8088af43c4db1e8a14c53441b91307d4a63c7c6e0b5604f351dc484f149bb3963298f864c460eb8ea206a5238f568b76ee695fab0497a2d7577edc06b83c9b9148d91c05bec413f06e37f366e4255095cb4be0be481e16c10dd14e286682c7dfc753a464d0ef3e34b32685ea73d3d6d6cb003559e5ae48e82ac3dc189ae11382b9e1bb5dba492399dc969720dc7c0ae6a606d14d8a344659ba2149dbdb36ae4d0ebdcd3d40ff8e708366956b91469216fc3b3b5d63ab46299c40b8b9c3feb2dc7b1617bb151e7ceca713adcbe4a160e61e07b54c8c90737a716fc689605892181db872091d4b2a990a9ce1bb1dabd62201a60d09054627afdf219cc11ff7177fedbe33ccb5f8eff2a175b222f0c68993866da20e281f0a6df9c5af00b5701ca70a2d1246092c38872e26139d14a927960c0525a7e3c8afe922da6dd2099b1e1650f652be0739d731f817e2fb11446b16fda64fdaf499821f65d89738d0acf7f842de937ffbc747c51bfdc7056b5842b84ce44e9e484f0d77a3e0c6bc057cc922dd559b081008104bcecf35c1748d67b0715386ce20d4ce3fe67dca21bd42f30d670f67d11e440f5d36a15236e19770690c9d803a004ee479b0d582e46c621ea4b3ac623c4e6f6ae8bdb2b165dd7efd15582a8969d72b9cd3279bede2933c15c15a0132ec74aaa808fa50bf9c6250e82c0b4e7950a68d43f6bfaf1b4b324c56440244302d72855a0d93a4353030600d7db8908a0372094bd9b6f3633242bd0dc328c3e4f4fd500fa71f0eb0dad5d3c59e324c8627706e5597b34781052a859947b27f26fd37a45b1413696e9533e052fdf4cb26413d331217fb0805eec3e6bda1c821c4f45a971551c706dd16c95dfd3567d2f54b93e80b65250c64e9dd3705df1ba12a99db602adca09f5174258141b5816d4644ebd051e38be4646b4200e83d44271ae9d6350da74c9220e4ff8d3b256395abf5eea9c670ec16a562b0248294bf53dabbeb0b77b241d66c6381f01aec6d2b79ff4f24fff0eedb632f5a468b5dbdaa5846cac4645dc9f3f28a93c00bfee92dee1572f1ef35810f6741039ffd70d4204399f235a137255d120793f2a9bc2cfcd60b87178a83b37dad43e2dd0b72f9da0995c40b272861608f7c8cf6a0201219c5b478c40e2f4a1485f5d879954a27d19f2f4ee1f9a1d77d444752dd2b0de44978fb119bb33b128a843f5a5c3066bd92aad52c4e39c51d0f2fcc0824fb1ff104a60917702e2d35e0706461855d855f45afd854851e938cd0d73d68242d05985972b988041073df76337422dffdd11f28c2071331beac38991b52236513093254d8c551a8b656443f8df90638444cfe9861e6c852c35476e31ca74061e60e0b58e18ab06240eeffa2add0ef775d5090bdf8ddbbb18184585e992d549e3ccc259471daf62ac9b16aaf64fe44474b94f699fc14f19ace9b6007352eb85b87e711e94a8c8f767f18959f82bc58e49d8a2cf46f54dfe52016ec45bdc2e61d3c7a41ed790c7cbe215f80f89c328194f7d4c74eda572d763fb12dd9599686c8c06c4e575fd7c7cd795c7efefae9d8c33dd28b2491b4ab8fcf3165ac16c959356c8acf523653863fb95125fb869f79656281115f15a8c120c7b077f47fb1a27a434bbcee80ea407c0cd2449f4778c3afd83d9645aa51f31272c1e8f73bbd6997df1cee4bc6141e7636c475be3e06b42d50e7041544716fc79748818d82d8e42c06723829a3e3e7d4951a8af08842f44a264487b87b9e0f8fac4393798f18f164f2fc647b71bb722387956d488e857332e9cdd64825be290da4100bec4e6f6cd09f0d0d1c741cd2c9b44abf89ffc11316a65c1932cc41f1e975222958b7a588848670dab15ce96494d1a27677fb499701b937f516061404cd43a8b7bf54998cc2e39d4312d9615e524dd01e863b911b534f5135de3677ceaa8a56ba722a9316c1a0dc445ee4965e07ad6df722d03bf2824c97b30d940a5ebe1f5398df0f3c0d052df8cf5249ee0cbfc481adda2c5a2526a8e17e0b0da8a28eec4fc345d4a5a50bbaae10811442977929e8314e7c677c843114f81241a1132f42ce8698c16aaeab9152507f771548e2f91c79d64facafd066c4d44b879b16365c982154d9a46946a6b7d686eccad1132bda4959ba4c8b8b8e8ec7ac9414d34d5c8f5316a012e37f59138aeef9253b77758ea604ce495b9218c9527bc09ab64f25d9020c3243f09e8d4b067a2def0ee4d1b1288b8a384e6ca4299e4369fb10f15f6d7fa47ddefa9703c99f2b180272fe0108c112806be5ae2e7c7f3bf0e40f02e9e6f3e8f8fed2d9d24e98a61c758b43e26856d850e4bb985f24de5dda16fea9ec032008c13054b6e21271844988fbc26ece7257ac369cc0083c808923e838f149c089c08e803514bc74b2b6777758dd916af526605613413b448170711ae8b6098e241beaf70e58154245ac7f943be72c045c5222392e66b753cfc217102868a0d68b45408a1a4e280b41ec17a9c0220fcb400e2188417d4dc3701ff82262b8f1cbde61972519009359f14fa0db3006e2c88f86490dff247e231a86f6ba5df0eca4d1395e1a2c7162219ce53fd78759cea99a932313e877fdc081ca3e004caa84c6491eff1738c9e948a7222b62be5c3e23b0cb1501bdb5dea7f745c401c8096f2d9d84af4f01032c052f0c5dd9d6cf723998623df081553ac9f7d40ac26eebbd7a06434bcd03cdfb9849abfc10339f3285faed021160e4cca7d4bbacd5c7a042f3fd54a8366372c85f515340b64de23ca7999821f4610ffdf3528df1cdad8e0c1e5182544dad608a3f5dddf2e8f1b3de039f5ab565bb9d89aa6b3fd790cc6829c9b9c9f45483b74e96aaf087fa6420a4ec374eefd8932fda2a61117f8e3bf454630f8502caba47b8dba1a0c58e8a4e08963e047eb68c75715d7023a7077d24b267330b0499a5c7d44ca305ed351f1ff4bab974bfa90fd45bb8ced9b56407b306aa29c3f909c39630962736bb8fa13e8492c90e49ba3c83843f84bf25bb3887ae622c280d450ebe5672bdb94bfba207922eb5bcc85007dd18e25ec710b80acb0350d21fb03048d75fb2fdfcc72467373b3d5ffbd245b6621b189eafdba3d8faaa91e683118088bdf7be45cbb5e1580ed2786e74367287fce3fde4401f22ce3045bb7676e6597073da6de137e99bb8e3462bfa8ef9dbbc0ab6667d97d0ebe982e77a8f8b13b11aaf17a4d2b3b9a7ac7339c5a4d2d3a62c350f0359bf21a086721033d22845fb8f1b62172cc3d32693fb4b7aca2454f0393f85e9806d8c1b01c5cc326cdf2951930d0450c877a0ea65c50e85e079c4caf16ad548ed5e6aeb700429fa9e2e61caa414d17810ccf48abbdbf898b403840f61d356a064b7caf30cf9369ccc1a71b75929487f92b4348a110968747579bf0bd73244a252b4671b77ab5efdbbea3fc7e8f10853953094595000c802f50241a4a0801a1a6808709aee775831a18ad3e29b4dcf0010e3ba357691373e774862f4757d2bbc6c00272b37c743f3b14474ad3cdcacaf75b39d2266110ff997877f089195936de834b82324ed23036b9ec21df051c216392064e9d07b2f772030046f0a96a1e5947fb786d7e34f1b3bda3b0150dc431bd739475d9878607a67c9d2f9ea2f8ec395825ecc5ffe535b0840389dfd0ec866ee5874a7c31b8983833e3639ec2db7838999920f4db196fa263e68812a0688a82a2ad52291ab14f9989f2b8ac4ebd53f5fb8058ab8e898d51d90367c46d954f630dd5b79777cc1b8e9e509ac3fae98e618034805480d2d9f18f2069cd89dc3c40eea8847ba435f82677e1261a34494c173992cea0b5e38308ccb20d664511a6b075c7c164ebeea81ccce21109b0accd1fb1c33e809566c31cd76f1cfe4da253cf725687e3e4382459b23145609dd958b2db5c0a09104fb5d7705d57667da4307f8fbb7c30610b72d1df9caae946022d52eaa7e2d2fea4082fe1e9415941959f0360e4a65af85602e497977beb2fdc5cf06d9e34ef7927fd8d10d425794a83b36a041f680fee213106e28a1151e03198a92745b25b846f80f8d26a720e003e22925ff3144f4c866a0b59fbfe97496b0ea4537d3156c53fb41da14da7d13c432e8ef2f213200935a838f21ae21b86a994c8920a5a5554e27c41d936f35d82eda53bad9ef1b34881372149a9a49671ddd38a362ac5ac340314564827eebc4df572c8752347e5fd34f5261b63aa75e179add02cd3803d63e56f23027575797707da787fff15eaa4ec13f32ee4c47c8346c155314ba6718adac545035c25c23a1422047dc63f58be6123492bdc2a4adff8e89d42249e21104b9ec1efea03071ea1c028274ce8df905964ee483600d17dc8861a61e7f917c1208b93d3d4b06af5881a05b05cabd5cd46a00ee33285890d4d4f1df4c083d4101e75d8f18824b422c1b169d6cbdb61cad61e6d8c6aa6062ef42a3ac2143d7843f8b2ea03948bf2664f468c81eec45e29075cdb0032fa573a5f3acfc730bf1de0e4e4144d0143e552c94346d45b06408543771456a5175aa6990555394546d039985a215ccec894a68e77b50b020900a9910c68a8aa4c23e28827053295196fa47345aa4241c56c35d8a86035d8f9926088938d7d55802bce8dc3a3e18c2c7ec881595014301004e2c4e7ec8cf9cc6045d5206f218021b035069ca25842795005e5920d9f13a8c47e5cf99af78300bfb3989d210a43a1a3efa78733f5bda998fd154cda0c158540e2360b0d76a930581364c2081d41e720b7544a3cfb0c207bdc7399cec599c017aae96e0b9146ac206c68e00cb33c97d33587f36d4e953d83d883080d2d2663bcb7c4e8525e5587415a9a2c5ffba256fbbf15ba92217db6c715a2d26110e4b4cb8bf9f19aa2561f4cfd3e2cc64306c52932eb03163822f5fe4eaf11bf9fd9aa8c303ceca8a5f0f199c9916d8a3c9fdaacb6176bb1207eb7ab821302fbc01923e8514ba214277460e7cb8a0cf8363ac2266d82566991ee0c083022d21d8c7b5a0feab0a44cb5f8cd922971ec378d52aa3dd1551e67c77590adc8389c0a60a62b8db2dae742dc009296ef6c1394d6b17991c9a93db8079fc191c0660e048c6d67d0891970ce5fe0d44636d953d934a13c0e25e800a64367beb278a529b1d06ebe5481601a44f7e34610ba1e38c76f8f6893afad3c2ffbe8476b3e7ed31eac4b732d036db6ddc27902123718a404cb690154f0aba73069f9e1995754f4e4812ee24f9ec57b01eba274280e48539498778d5dc3a22b88f9955d57be9fac5f97deb48a13377e81ac9b49b31c19e4d08f96943d5aebb34782bbe19044ff9009c8a56891ceccc6ba82009428bb8cb109c15021308b0892bf133e325cea36b2d976929e4043a6b1ad1751e8ec205941ea476bc1996c7855a271df1a65d638799512a588e2495873b84913c2144b794386e270de48ad35a32cd28180d80bec3341262436d8a056e7d2aeb4ab012e578e2dd1c018458114f8d04c661f8062d3e9bb2f074a7308226b49f0479bb15eba8a109f2a1a9f1c7ddf18cb3832bf821174c096a561e9197c00904a20a022a9786bac7afc9c8b84354c28e59581fc63fd40f87a8880538c5bf6931538526697ca6a08234e08d30c35e6bd35a510972a35c01f556cbb537113af0f8b12001c4e04a83ff1bb358fe446ade836e284598c82c17fe0cec8ec02efb004e8b03816c7e76ced57ae49226da54cf81b96e8fca289242f3ed45f1a7d1cdb761e36228152c5acbdd5f1d0f6d7db04908501151e7ee97d4fa619f4243b128214725f6fe4de8c6840c0fb505aa432097c8d7b7b1e53dac96c4a594b92d02c7f3b877a04fbb99994ceb62fc21027ea0bef1e384138a91049b9351cbbe6e208972a42af427a6d36029069f6441a7c99d65122b01c3a538e283c4440f23f00594a02d47d33924f3cf711fb7fc44980be957e86f7971c89fe611e0d229196dabcb195dc7680088e968d4a8e9c94ab127904e8a67b3e868d51857a58db654deca908e686328e0e945cc9a6b750d5288e12893b25e45f2edb93a3845961308e7899a74e135c55a27d5071e70e0023fed5449a1b820f904f281779d5ba6f9ad016e2cb364a2f6261b3a3a95002955554d4f553dc0dde959bee28b7fe0212469989808c1a76ab008560c13dcb6cdc53b4fbe4f12cfe8beecea026ecae4c4a6a734f7c2fc98d33b8ad35dbbb16ca8160255a72b46735e76e681f5ee1f3c94057facc080e17ae304757bcf678a70376779bc3627c38d23d75ff9d14ea138380ab67b231e34e2540b575196c77160cbb3e15701a4a41b97315edaa1e895f9099fbbd8e4b7b3ddbcc3833ff66cf76235340e564435bb49a52981f179b16ef1d65a3fa708ef4c89b03a1a3ec907b2fcb7b0923141f09c5a038c080c7d0e88ca0944e9b02810091f7fcb07f27b5b1b5a656f5a56ca834479898ba573193c4376cb620ab423f273d46206423542043922620c9fe33b6e75f92a2073568e4ed89ad0a4e95f433b3fcc88ea68cbc4eb94e8293e25e28709b190ac40f73ffd29b2d11b986e58c8a2d49bc649882b76e53923be7546034e81f4d67b2e9b33cc872eeaf73907afb1cf590a1e30f278e809b17c4e389961ab4aa00dd22733ab9b97546a9550f000b0e255829bb34c37f49c77181d86531599129bea28df3e42c4688a86816f0f6054a70c470ef35f1487e7e1cf191e57e3c3013daf05da1aee83ebf2f109612883c161eba2c81a92cfaaca776a0b1ca22a801b346a0ad5057c448295e012a7713e3d01085c462596921a3182a0fb95a6a7e866d28f8933e064739aa6442a09fa1d461f24a1a50fe32995cf17f162f5d659f720355ce965cf85f5ddec41850a2c0051a7a44828483a25ad0a116bc053dcdf7ca90506ec9a57deb539be999ea55d59c911b127a1038048fcd467423e8493bb283587a9a6c948cdb981907aadae6daa82e0bdfcea4ddb799cdad36671ccbcc101f0bc9dc54ec5930b6de9c05d7aa9340e24724765e340601a9dce2879fea8e3946d29800fd2c26c443418f6dc87c688362d45b5b294e9202c7e47e9d448099fc8d6a997c6de2199f97c0ff38aa5adf026be57824c14ebbefc99485e34a2163a5f8a9449384ab125f1b216236eecb37ff3b971862efc79d574e41d242cfe30cee80062e2238323fc08513b03f123468951e25a099e8669a1f441f23b352cc6a4061ea827f16345454280cb04fc75e71d8b20c3104016b5b2a789a5fdf7fbb1e467705cc6e6fca6a5a84092b48ee83de56eea22d11b3df545b19c92d58c0330c90d90202e6f6701cca28ab5f81b080d6d33ad6e9bf422dfe8445686e3b7d5970a888d1229a51d5480ab435306621a5686deafcfdb41241dff25e6ccb3b43bad7fdc962d6df54327d956ae45ae0f81dc81d476de4a78df81044880ace9f9578d7d75fd5e9265817ad711eb777b0ccd1e7ab00065db3f7220a0706b044c0c1a7ceb27adcaa7b1db95d2510902457d18a44247af42a95ed28955da32d16141ef01dd177697ab359369a2045837d9398c148423951c1615ba04e80aae79fd7dfdf85496b8b21b4cd1a105eaf4561619dd8dc5488dda707951d1a9e6e2000811e1fdf01c5016a9e19e558740c45c05ae7cf96ee042fb623b9243c3a095792fc5d2377e667fc832e0ba34b83904e2515433859746b36fff4541f807ebbaee278b947ac83029f7d26f73fab82b4e1c12aabe4243ae21f9b515ab886474d829a664785126a2458505e5e7090aa8530e00a13e0ecce0fd210fd3c2b190ee67a46663551ae8029af843cf66b14b4687d0030fc3445c0f35e178fe1c8a1b5fbb9b4f66c1a7d5198bf196ba8ac562cb2d122b93fb564cb712c14bc2f1b0d1c7aa24ef0a332eb2674daedc90b52d93e91b17ab3042d7f8a79d9a45609477364809a83a86433b350076cefa9c4f8eb1c02b21ef60d7d26ad4c046b2e1092885987f4d6ae504ced218692391a1f429048285e4c809d6d5dc1b7dc89abf02ede69a8ec3784b55143d8219ca6e92354434dcc7a9899b956cdd6739b1a164e2a001def55c87267427829f2ff3e107026c3af12e43e5149963c1bfe18744739c624665c61a76149cf9f2d2a4f8f8b106297554f024b68821af22919b76238047c827a7aa1d7c4952fd24db41907609ea78b3c4a101d80c80b0e72731bd16d5789440186d23526ad0dd8948c4189cc363e095e540a925a70ee91b10038cacee974fa4296f4f4ca88901186a12ec033734a051be852b2c115325dde20461384e3a60c8a883d7b14041cd123bfc4ec41c2a0c544cc496a1d71758fd15dc57c7ae7bc89e26e65827b44472eecd531b2964343629722b5841800f4530006eaa96aaf84b051bc6475113f67c7207111d1fe8a00d3b0e3fce0a4aeec30ec43d637218f7bd01b60f33fbce4c32ae639fb2446fc699d4a9d2a6244a2d6f7e4e1d3dbea998ed709087f76bc6bfd182ce4569e281de0801f1157fb693de5337722212a5556b4543c3ad94e6c317031e620737212854dc4eb7d10b41b9596d70d5a3fdeebc7b5c538dec84b199d2ae6e5ecd98a1310f87aac081cbfb4bc33143dfb0dd4bfce5ba0889ac02d11847c8c54853405c9c5dffd87b594a9fcc448c994438515413ac5512a341fb2e9e6a7fcb9bf53c66ea6620d31891e576a80b8533a0d08c01b42326d52d030281e7b69b90a47530258834f8c606b7db6bea3a37396cc86db282876548a23f11d6193e83eb76af0cb2e9c310848f076c852dc6c1aef243b81f9fc5eb87d27fee15ddeb06e891735b22eee461f49d795ce100998546ee45ed139182da46c614479e47ad55306300db0dbf6d997b543c6a0f0714ae49e3e6a332112f4827a6b23f15264416a4888a96d0970e804c2f3e7266742503125817f241913996e3d2e04794201009a5cc6abb41ce9d4b1e06c993f697595805f45426fd513867222585beb4a378ee983abf0c7cce63237006525b133c9db408829c73c4ff167317d836145d086e0a6b9cc23885c8d0c40d5923ba375bb28e5dae615fd8d8e16583332a634be3090e0831798d75130345d29a295c9c9db834126fda659113d35052421cde2a58179b9a4862682b4a378c13cb8cf22901f318554a4d583e884c4235242504d922fff9b93b65624c05560a626311fccfffb2a0ac4eb97f1e3f7f4bac8f48da278973a2c46c994192ce7709596cabac3198aedc1b1f21e940ecf0691b8bddad61c2511b994b0e80135da4c6b47fa8db2e40c17a7b835608c19b9611ed459d8566691a4b01c8b5bdbf8d56ce344e0d7dab6eb318273451070401d000a0e9c0c355116090d0e358dd05b9513251864f29f110a6f0ebac1bc87e8220cc456fa7eb269b2353d030c18f56cec7e9696402e6c7666c409a748db5b20fe7f0541113813d2a5cca73eb31b49756a8bf5fafd02fda4ae22d649ed83fa3d5015cfacaae9e620cf3cf3f67985b61d103961f21df6473b3c6ecba3f3d7e5947b7570f038cb16cdfe980dcb81af6ca50dc1f20765e835d0e9642652a38c11606b2c592304ed96decd46b54454c9418d9aa19a9b468fe6e66a2f68b619954a601e3bb3832e89b1edacc3bd083be24686ecd997d02bd9ef9618d99a7081eb38aa57a5a204791a6c8b06045a266ba3bca7be039884039cbc8896b4c087ad92aec612bbde941f2fe0d7c13e58552914a55cac00ccd04431d6ec3a0c4415aeaf4dd110a0a773695433281763e5d423862d90d31ab7f852f5442c417544332f8e68a566af0c7a1094ad3832282c30992da38614d8babb25dc1678db1b99e423d5ddf7b3229d0be4d81d40b8581e9b8a7953e34883cb29a0399bfe1637e4ad766f6c82ae3bc8f6c4b94555fe6e495e05c79c1492e754b5a53427a7821b396248c828b6e3f07b917760a21b9e80721ddd69d7813531dcef7b217bca3998adf390f75c9f522c906701f592c037f00101a84e97e1297a45c8f5163ddfe2f29c4dc618cfa13ffd76eafb505cc57a7d40f6d05cc56d4402d6f0b48e51e609078c69a6884e04a734ff9c1cd8ed56e50a1f12770faa2505d77ab4f67bc93d906da23e620b5a44c712a0191f939b35e77ab547903e2c57cebbd0d718e24981f9e880ff356188f4a0d0862177fa364b363c75bac4c4d226ed94d8386f231d89c1e049517ae329ab0bc71eb0d25859c30e9244d791c5d73dfc24bdcac1ab2aed10ea16884917451cf3f1bd54c4a14c09af2114ce1bb1a3d4426a87df8f207410f491c14ee2fee56a14353905a6121b29956c2d2dd9d9a18f9520d09a22bad1d5a318f7f1bdd03d9e277299eb62db81ef0ea7a054602f53e7ba38a45588b7c188323753e886e0a0144e8fd0f7773f3fdb1479763de8100ba02ca1a6891827d12c3a5c41c6ec9803747ad46c77dc0f7118a8a9c60ad4a0c892b897251ddb75969288e9d3cea3e0a02266d3e7d4160bb3673365abe091d14a9633c63ffda51b95b330048a570d831ccbc9ae5d6899a799337e29cfa89ab88c591cf8fe347c7cb5c6e463a92eb16b1b1dd888e357544c32134a25849257f73fbedb0e447877362d8d6ce301c12856010d85ac3015f28eef8419ca72bef483396f1d1565cf8f07367f2b68dc9a7b34e195dbdee7eb9d78da62e17a77c052352b3f79f77c428b0ebd4cc84e662ead8e7d1d6aa795f1c6d4c9a7cda03d4242ee123a60f8db6984d6504297eb10c60673bc18f25bc7d89858d48fa69c257544070c83aa33e566620ca8a90ab402fe862e7b3d323610b9fe003b8a3023ecd8805d04742da752ee738fca195d0f620d48db6291ee397f749acfd624d189686d58d4a47f2a85154cfacfc585f6483a48c0dab3ba9abbe2c828c9a084416bd56516d22cfad98b31dd21e05d859f18a6428d9a102e30c718df8daa6b1d4a4bb37929e98048d7824be1bb84a04f39319fece65d2e183c65bdda399bdb8188d9e2ef497c9aff1c0a0af1174fb2a5ac12b5be92f83d937c9534e50591e40d0c2500f09f6e03769cc4ff3dba77b89cee717f18bda381f856af4e8a7411d91680f300e355c85d8fad5a0298e34746a38dbca577f7c78c7b110622d2c8cdb40c0d2571518d7199c7a58a24f8f6a42f3e8587d99a19ba353c7ec99a1d7257a52de987441bdb2b754def79c51c988f6c81bc8b2653ce76eb93d1c444d30cc8b40beb83af9d020107731e154453e4786d9001379fd2b433195076dca784e1b6d5463f128fa1a11d2b6eba0a45834f09e1ab1d77f2c515049e33236b93e919673577bbf73b5731648a28b94cca9e36dd798c8e629e052804d645720c17273ad78ef311eb43e4e4b1244b9b6d6be5fd509831042819802d01a77defc865ef64ca0122ad2ce786482ebea2613cf762008cadbffc495db77e30abcecbe6f310f9d9c5ae6fc67afd2b949b4e4d09d4b5eaea7790d0267a1258ce163352fc372077e653641b506a98e31cbe2b85c08caabe557d8f3db7afa26853009b37be872cf0036666700d15965d1efb87647473dab2122a28c0f2de2122e941ffa2e0e5b9f7d4b9d48d55cd7bf9adcb8c9958a341f382d59418f2adc657dce4da8177cd1ad3524e9cc0340d2013d0056436b7b4d30c005736f5fc8797e8b4c4f2c677aba76602afeb346748ed36a38e138d91101cdfbb07c2cad48c22ced5a3c00b8a4e93f2b0d10564155ae2d33efdda9b615857bdf1c3629cfb7d4b0979a4027a19729061df488823b427e5628d73071efaff51a5689592a7b367ec9a03fcb639c4869065fb57756db246a07ea720487b6c9feb2887a9f19c783f5375422ea28cc66bed0f55d4356b5329011605cd436190b137edba44df9705c0615265152e9734565efa4968d0d710119d34e9822270ec036d8695c4ed22957d79f44b70f08fcdec4628bc7c96d03484c172ea23e757d8285fdb379f9d7a4ae6e7099abc473a6aab6eebe7db5c7aa927fe670907c4d004db5cd8d48c3d0e835de346e53803204ed65b7b8f3395eb39b6dd9509e33932a5dd71ae0823bd688e4589fbe68bd7d59b3c65c4e71b522657d06cef45faf69d3ea90fe3a2f441631f18d25fb9b59a0c8587a6ccd342e68aff9f8a0d7cda1fbcd7dd05736ac13e5fd6a040134dc02cafe75645a3054324e079929aeb32e082db8fef3108bb2421eb22902a99a0666ab51d28f916f00404d735857d6270250d0449c80e7c7ed01a0c9d762d7f52daddef800eaa99f422f90289ff561eb9bae4a5e3034421a91ddd6a49432a5945266065a060906615c39be34e9a8e2c1b3026d7621f975f3154cfecdbff0ace0a7b90592d9ddf140a7d52549179d2ead2ead2ead2eac27d4e5862ead2eac2eac8f9b67aef4c36dee148ae9ce6dcfaac59cf33a4aaadf00aa6a6b313ebf6a1c0ac23c74b937aeaa26df96f78068e1eefead85bbbbbb5b96bb9f5c436d13248788c0011aa44f2729bb7d4c57a918c2303d2bb5f0dd2c266298ae65a2164d2842b6cc5c0dcb902b08b3165bf7559b6591fc2707b7a54e1e63c7d4a02e4d4c1b5383b82861c4c6952cac16f4f0438f142b3743288b2e4e6ca60675d199315383b84801c20b7a2048057cb0c0298d2a1e9c6232c8308015293d0819e15225881597a165e9810e3c30020e845e5054c4480e5830e5c70c31b808ad548dd3a3081e8e141d01069520563ac6d44017228cd1022746f8a0062b7e16f846c1b0d0a448871ee040058a25565f8ac4a0b544881c8c081384ce8adf037ca35e26f3cbb788af1b293e1c41424849949d2e90012d31aab0e18b27360062c55c76238c116259bcc820c3c1cb929a548e017859327dfa9f48f01283a9324d0df2c2439723186100539cd1022b8c40638ad0ab094c07308b4059428b16406cb14317596c5179fa9a548e548eafe1d43ba292a2630514166401e225860f3cd3b56da4c5a09aeeeeee2616f8909cf8e83b7224890a8b973fc292441985cfc4223ec7658c8703a02127653c71f22ad230b88471d5d770d962bea9415c7a30b7578da2b8a2892b9a68f72016c8c595660e420082deb32facc25921fd31ffd13fd4e86109088ef9be8a497a2c66fd34538fea20bd0f5e26e466ea99a44752d541d27008491f69b1673a1273ff694de69a7a70a050028263ba87570230f7d5009ae9dce3704e0b40d0b66bf493e970d00aba60433b61ce70af57e9f572bdb81cc9b61029f1127d9811823de9316d6663dbf0f66cd161e6f8ddee3e1a8d46a3456d319b71db6fa7331699cff5fb68e6a185e42c183f2becdd1fd995cf05b2779f69330478ad7208f05ac51a37e89e2aa463c5dc7e36115f6c61cdd4d42031b04c31a64c15b2c135754c0d0a0368ca1a8aa302e2a181142294b0e28b0b708ede7db3ecfbbff74824d203d149d2705491716e9b64925e83c2f8994526a3b6b81bbf7ffc51911951437a426d91ec0e7f1ffd768bb0f7121a2431558acfcf9c2ac527689a5e6b62786d1ce21e650c30704ab3acaeaabace5a83418676cd1738c5c20396b52d46003f0948c86da12c94d19629312623b1628ccb5a160f6d5924fc48161ec037fb25863d98d6c06d387a85ef4a1318ade237aac8eabd1765cc4e7f2ad5c86a904829556ae38e7e7e624a3ff694356ae6858e376ef0eebadd75bbfe6e9c90356ac6bfbfc80ad3d9c9e9775e441e1e3eda86a3cee48f3a71879930e48271628fdaf0c717a81e31f9a5962610532afd70de5dca4ed92b911e7b250a8c564c5a8b710461e65c8cce9f7bfe9e73eedc61a51fcfcd64a3d27b6c54a2c0e887074de9f11fb79a21c24c10a4ffca17e53dfef31c47763ffe43e3847c0f699ec8a7a8197cf3e97034e3c0810387afe2f871d413cc60dc7374ac2548881f2d403824ec91332df074cfd3fdd6aefe26c2fae7d65b170dc953bbdc145286536fdf73562c10af2ac2cc3ef5cb9fbbd96468f8e600b39d0cdf6cd6ef5abb869e1818906756a916c8b694ec7e3a01a180ae80e85c2376d707406600020488ae1630c05869e14d551d541c15221e0cace0304f3492dd6b0902284c10b87f2ca86bcd47544bbe90bac848448242c222b840dab8c2874a14421913923435080c26aaa8c10ec060d204183d5f93caa1fa01c3dcd97bd4cdeeec1dbb19ee541ddddaf69cf390106ad2a4b564a16db4ddbb1b32f7a3ba613333c347a19755719ef37677fd28288f4e5f545555559d6312a673ee2978aa84e5dfdcbbbb6bededbe3d77777758092b5b9bed3db7142909b61f35294dce39e79ce34e355f717fab5ac2412ea64ed5794a3e2adcfdb9c3e78eb83be79c1f7187cf09c1e173479ef3e784f01c7cee88c3e78eb81084e047dce1734270f8dc9157044c6b38a5e2a141aa31a81233b73f9518868960622dc889b9bb8b37f0b76c7bb6676d98bc509d730f7a0f4b041e70653f78669fc551eb15c5c229c404704f946d0053618ea9526233f5532c9e0a300902057b4a7a7a36c334566bdb46e1719ac6e281a51f4cfe7df0e0c1234a8c25203c5b3542d2487bda867b2c6b77f06f6eea9346a8b850808058db639de80e7e2c26af9527aa835b5ba0520ae4feb640af7587b80874992c560354c8f04215c73fb6cc620c1efa654e3598fd343dc696d956666b10194f668301524127b62c2104e698ab4236a7380716c43441713094cec54171768bdaf86febca94c502c01cbdab7138a036fe5f442e5a0480a9230c8ca8991746f1475ace1ba206585644a06be5f3bec464c442db788c4f5a509c140baac20e41fe40ab98ee22da1718b9adcbb52fbea92277eeb3ef0dac24d3ff5111a3afcb99b5ad416dfc73104275f8af6bfabbdc956e9213241da746e43a652cb0a34cf8bde4a1a1383c80a03827c6c25cb411da3eda4a3410bd43a7e00446865184f77e857cbff1a8409b8cc8e8990818124de8014e416c9ec00fb6a4c88d8118a871627c4027b8dfbff1e0147c186ccfeb84a54f58faf4dad784dfbb5b84dac087f0e13ae9511d103e9374220f4ed24bd00ea5568fc90b153d643bb462bc70f10386434fc9cb161e48395cc9bca0a1c3088717d66ac55611e98b4eebf585e78715924cf9720410455f827c584187265fac50c10a3b047de942052b1cc1f2e54b0f2b20f901634467851c8acee89139d198f15302cfe9882d3f536c79c2055b7840832d3e30a3494d2ac789cb91328c60ce3733ee75aa9353a5e802cbdca27c538574869834496889b57d027978444774600f7293813c3ca214dc01eed08fadfb671ee36a28d3d42b0fe0145f31cd057a00df38cdb40b8553bd410b14934573cf1298a3fc190502f70e64d398326c1aefb519203a59c351651be2260976f24ffe21b2a009512e6817407466afc4957e9072de13f1891f83c5a06050d1eaa1360543c0416b057d68ad1e4aa3b4c04b93156a043b4f9059d7ae9a22531ae1207fdba1765a49061b8fd289d940e9c474797972e984e7ac4b273c63bcfe9a5504ab7b98d07b548715a92b5d6ded7211c9bc96e48fd1cb726afc8cfc9cf541881aaeac88bc2d7e56ef73140b2068c15a11795df0ac9ee663a3e48ae08cd0250ac4490a099d0ab9b996d3691cd3c3773c7c933d7cd7c337eedf93f0374840dd40c5a0546d647e734a26743098d0653228e7147c8704bbb69da2404d62c27f5648f8ac63a334621dacbbb33dfdbe2ae4d6ac1249e6491a839a79e17dccc73c2d67a5f0f1d159e51041a16715f344483f3a2b9ff84cdefb60ef310102e037f76542574485e204713d98d0016142578409dff9fce6a498d03931a15362c2773b6013be4ba22ab0116e8903e26482b699a6b79c2788095530e1b7ab6de0bf48333e919b6bc1fe4271547b82b69dbc0659c6841a9709592f89dc2944133e1dc84daf6011c435ad24e4bd0f8663c8ad5908d85ae78a9c19bdce4d5fccd864adb32efd806f03a5d36404b5131b790fab8085601dafc184ff58c7cad62cd76a56dfc038314fca6ca076fa7b9acb416de043c833a1e399dc82097f5d4b75c07f3a48d3bfdf97f92dc91c9f174cff4c1a34d269a4b1f2e1df620376da40edc462c63a7c639a703b4193a105d66468203a536f022a07a7e03fcd35e19fb41d4a0140e302880dcdb1700afe967e4c81cbc329f8282631bfc329c83c9a4f9125bc8c8dd20f619c98872f02be193dfc208d5382e65a6d039f044ddb4646835296e668e55aee473a35782674bfb91e8c34da722c3bb7adf5c91af6b2942ab54e6742d74c46e4ced53097d54011315d59995e323169ad5fc568259497b25745fea6621d4ec1c750bca3a364c27f54c8cd7b5cab63742df8ded312d02c3346193a0b82a314183519c1b487741ceded6d6fb80d7113fe7bec7118ed2dc0f78f71db6c51706a6914819d230d479545bda9a50714f9371ae298b8d7a82a02d31af824ca888c8979c91cfcef8334ce284a025298ef3dd45e07e95a8ecf0bf1479fe3f3827ffc1c2d073ab16509d62a6a39b1174790d4d546d184b5d2950f09dcdc5098af86df43ed39f53e260bc94fc337fc43dde4798c52faa778a67af4f3c2305dca21dc87dac6ff9cf21a4ea538e5297e1fec2fa703a90df4f2a3363ae13fdfc077d7194a984e65057b49a47f90c6a1619bfd1a2c39e66e0a7357788153bbeffba7fe3f9d82d47042b6c682e68353315904e9f016efbdc70ddf7b0a44e7ab0e7de98573770c68a136cf3925b0871187f4ca84f45a828046999a0c8f9eafdabc5782e9507bcc2bd057555de7bc513f7777b547c139e7bcbb074c6f362e849a0cdb480948dee5124b591d161e0065ea9b806f6e609c0e7a816f740a9f24a66671b17caccc4d5fa52b482431370d23a70fbed9522bf08d9e3175ea0e9e29a88800456f3e6e3f8115f1d324c74f6b50c8a235a8ebb6aa2ad7c0832ebbfb4617eaeefe80162b48c7c1ae8c10954a750215171d44036ca3602f4591fbeedab9974fc87da7ceb976ceb9e67e41cd8946866df87182d04899a705d1412f97a2683d81ecd718a41b3871e5e48327a4279c0c41f254211b98d032b4f0534f15b22189994d15b2a1499477558daaaaaaaaaaaaaabaaaaaeb04a62eb5e577776df95ba170aaa5a28a8773ce3d8fdaa6cfdd87bcb9eec415929999a948666696bb5848fd2eb5a4eeb20e564e91aacd494e7099ddb12a2c10c9cc9cbde77d3ac508df09274c47a292b981d49bed738459e78d53724a6e316772977e388e52d535c87e7efb707fdf2174f89e5b77c2868c91d9d5ec8ed6685c9f9c72f2dbb031b95b1b0bbf5e771be43e2f1643931f915c2dea5c635926027b1a0be4196a2230e8708699164cd3df345d9b7181c90998b06684eceafdae9ed6ca564e6b1b77e7d633a5925058c50b091f7615d5f1bea9e88e374575bc7720e91e7e53d11e366cb066575115743e6656c424e9346256e4a19f987fdf3bfc6ad818b2a169db3cf85e1741e929be8474df3ffd3e4a92b6c9d36fffde8c10130d316f7a5d65e15763e19b930945830da6979f23b51921312f5f6a34c88f795de5985e6aa5202613aa88cfcc7bd94720b9c5f9b6677bb6677b44f07abd5eaf978f521683300dfad679f114a14c4d135ab2a75cc1f22269dba9a7c8b0a63e0fcdf73cc4373aef9be77df7bc6fa017b5ed04755891650c521333791162e77dd97d07868b14df8ffb520042b4c8188a99fb2c238f18fbdfddad6d31a4a6197265789931c4103b3a4ec8582d1a73ff95b051a437cb82d13c0dd658d69994a1bb5ff37921577bc4d727aac37feb76a23b4c68c92b8d537a2f454ffd493a5fa9219348ad774c5a2b81c1742426900335cec628e5e9f4bf71cff457505050505050d0eaacceeaac8eceea0c616e4887543193988ae4fd52d38496dc9ad54041538646401168fa37ab5b8d5364e5df3a8de32bff6ef29ac5ead788312630126b6a96d5e6930431739f0027d3090027144e8aa30c98ca63c7d4257d0696a43179bf2916f7d8968498d248238d23ac9c46830deee1e7c487da8c104843d4b47d66e2cc560f559a80ae9c16db661fdb4cf2681248d81b38d518501dfc16d01d19e042059166596d4a45057ce4b696c5a9182ca42bd21d5bd80c923557977986f9b464673a8723c82d49329d7326e77cc90b5ccccf122ace3dc3c0bd0b335dc6370cb32c8ae77bdacc0476a5ba9a11f26888daca45d5f14395dd15d80c43b07d295d104d13a64ae9e2cac43a23419c32c0348ec09afdad3913d29f31cf76345d09999a80ba9fcebd8ba4b9284522d741610db1b008d530656e52a886a06fd2dc6721fc390478ad5c9b511fbcb2872ce6c62c2137d941f82c84584394a67299fdde1f8f1065f667691031db07697499a9d98a4380574c8124e20bf51eb2e8d51125c62c5ac78a8d3568446d4284eca9412f2ae669890ab6146c89ac3135284c159d304f7c08730419617ac2f09cd1a49d7b448f7d7ab3cbbddd5d0738d5dddddeed519eb4b95588d9a1a6ba8d33dc5d9d43f553714a5f8e1aadbb9f7677bb1c352a8db9234cb50d6cf7473304b91fdfa18638efe1bf75b77bb73f0806869fddfddcbd5b42916fdbfab979466e33aa39e28829df6cffe057d4e63b9b59536f97c3239cfc70e4b2d20f9efc5896316a73931fc34a19a3b69edced583c175d950256c32455a24c28487a8e9422bd7a0ee627d734a886470aaa1c2913e0730db73522398461c277e9354f739271134ad566341a41d2c8b551cc8804d1902594d31489f40edf49a477f83e223d462a02dd83c199c88b79ceb3d20f6fd5406d5b2e3c07831625962fc0b8a3ab5270396ed4b011a34d0d544c55c03535c25ef966843d1de590684e27d54c98bace5529f078b5198d485a7201ce2763e28884394dc5d7d18c591cc511293e4a6724999c4c494a8cb747ffc633e533c3b237aa815ab531994a8061a51fa38f792c263371738cd4547598de14a36d45a2e61c46624e53a3d17b4d8d4628986ff4289d23e88e8616b2acf4c39562f6c6c9cd6b26ff6ecb8b74de31486fd797894d3af049aac8d80253f128e386d23e0c0b45195662ca50c1ecd143b3b8fbe83e73454fa67b19bed1dcddbdedbe91a7bbbb1b1661c129865782c0296dd347c87ec1a98d038b9a1d8f4b8b0b4836998c1e16054dfe299337a91559c15caeb689d9c45c3445b85ce449e2cfdd9de4ad6642fa287306af8161e01112ea768cc935d93558d42f5f58048b60d18d2dfdda6e6c71eec61655414d594c434344249286b9fa25bbbf74d1d3fae53017e672ed5caa8262446ec4831131021e94b9615fb017a7a2fae08884dc220fe6e2d4732e0c878ac179305711efe0a07391a771460f8f6855dd627098eb21ec2fdc2fcc85b91a27f2441e187964243cd144f86238f7c1ad2230bc28460a8c56230d73b50dff8c18a6a1a8846d52ddddada5530d44bd0c1e21b77ecde85ae4a179426ea6219ec9278711718a9f0607d80b73f1f0f0d038919b69c8f4e29ba12c7ce33211f1cd068bf6358a248c57b31873e3f558c502ecc868dd7d092072204283144668270ccc4768270b1213423b543028847696205921b433831808e54004a11d1ea19d1f7c078281814b1fd9200414a50742da89c65f6847052cf44319f3c654a11fbc6082ad96fa7d700e64cc54a125acccca1060603b4877068686970c898444a4293266f981c47890b5e4680a129084498c216b4c1552f282202469aa901221a890434824d2345588082d8c20df542122b0709e6a9aa9423c5b4c9f2a940311c6e86d54cef6100446d18ac8d3c25af5200a1ab45644483a2ff7fe4ecbd128c28c31b422028578ad1a8b225071ad72cc0871fdaecd08f17fef5a0ef4a1b5ea7fefa196e3dfffb41cd78898aeac5ccddc27f2bae061046c9967db286de685ced13e81f90ec2ee2eeff2aeb77a570b4c3a6666e7bc708e1d333be78573ec989979ddf739c7cdce39666676ce3976ccccccec98991d3333333b668e316b76cccccccccd3c626666c7cc9c357f89e5e91d7364c72c6b3866c7cc5a124c75d939666e76fc9899d931b3637edded9c7b76cb218057266b2058adc8db1b687821f97fb9bd57eb224ebd346411fcc237aa034482f3625440eb57eeb752025aaa95fbcd34f57901ee755b71f53498856d1a0e0db59ab0c0a176f5abb77418fd8522a09fdb5512921be672b5eb95655fc8bee1c8af6e382257f0dfbba1d926216801fa1fca04043dc00f1401fd6dc2a23afa31177cc1a2c6ca98fd0e73a98efe9290dce050f713d9dd0c75905b7cb8ccacba906354f96f043147287867b35cc9d2ba0de9d9dddbbd9b656746d4fb2cf39a32e4a6415bca874c71aa7d93288e649b459265362abbe25c6c126c5bdbe325990a1dba3e6ddbb748e0bfd76d392f12873265b413a34e9c521a33e4a652f5666ca3bebd4926a34e1da5772666f277afda1ea377afbf0d8930c2f85b026426d4b621ce00db63a46dfb4a2e90666b06d81d51b53d740dd03b516644b5ca8c539c803382b06e294c774f415f0db03d7667364a724a5d5013adf953a5007a228593a2a99a2a85932950a6112c730053856c7022c9c44cfa916f3007df0de1249365e636044e7f7e51dbe2d3a0b62d2cb9409aceff4a40de67adeda1cd3af9b3247ce30f65ee2c4faf92303d1bb43fbb3d4d945b735b1992edb15335c9d4923307f120a778ddfdf6e4d2a3abc3c8a9ee566f2b98f6e6ee1e238efb6f8e52c965605ab3610a7956480ec92772eb2257c75e5c820043ca0a9cd55215f6737061aea852c8b965fdda96bd3052ffe819058246614dc2f8579bc11e041a8e2a72a605ecdf630fe1675a7c217ef614889f6945661ae0cf3fd3823f3f107f8ca46dfd24d8e98347287e19368df9aa03f550f24464dbb909232cb777ef76777777f7eeeeeeeeeef6766f777bc7a5f93fc99c64bcb7bbbbbbbb7777777777b7b7db7577cb7ee2bfeddddddd7da38a6bf4ecb4ccdd1e86f3c8d33f2dad22308abcb578926ee7e98d3cc07a977977334924df6ac738f7fc45cf9ce6ffb431c6cc9d55934a3dcdd3d49c46bdd9caac65e47c4432cbbafb63b24724777ba5ac51a3311b36babbbbbbbbb73706d41350078804cc237a5a5e154fcbd3a2031286ad47f4aa78448fe855f1b43c2d1087a705b6200e5e4cf52ba850f9ee5ef7fd76e721104c89d2012952ec6a800b29a6e8305873677103d2a3727fd9d7ab549a82c8e50dc0267ca98e2864af76779c13a8a44d78153554884604000000a315000020100a888462813094a7a2b4f714800c6d8644765e3898c8634110e3288842c6106300210000400820c6d4d0d0090a037a073f68c9c5ff92633588a453b13b9d1cb5d2bf0b9e37506b43ecded5692bf1c6f10a6279e2ee1303426d09db7f8bffb63758a46e000605d19892eab7883cb17abdffa7656dd7bd97f533171f71db4f504f1f386b99e8c36086839a143c0a08893fa42deca9daa521ef3c4a48ded876c3d3df8e99a86a467c9dda392b40628d9a7af3105621079afdae07ec33e0aa16c6a8b1e3586557b76b190766b67c91894625e303dcd86e571797bb17e0219a01eb1febe76d9062d7c233acdba23db7c736274f23ee51d8254a233b8fefd90c71edd7334b25f67ad5e69e832b40c483b6ab5f86221aa3fe304f56bb57fff16892aad9efdcda16ee56d84316bd00a960ce740538988898b64431306ab9914c35bd4df2d210484771b455ac9b7beca6d5d98d44c67e4984e6460ee5947111e6430d2a12e59034c532d055c439f04102fb8dc06371bd043aea3a51d931cca85b06c8b375e3134edbbc5254fecb7f1d177c2e184637e0b578988f6350eef896fd811a93258a591658602f718623ae0e084fd07cd5358efd5ab2416c2558900d03a477ebe22be7b000bca1e927e9669d75f4eaea410ef816d30dc251978c74bc6c340533e852192ee5727d6f92c1d8da950222f4cf36c4bad9304e38bf41290de6dec81a14aeaed0c29ac97d2d7af0d453e462e92cedb0939b53a4f84b2f5cdf2482aad63e46c30609b59d1c034b385a3626e276cf7367a53791c466130d3c5d30db9e74da12a45c7909ec260e10231dccc326bb395c4f058f1f02b35e6676c3aff068ff5c258fc4743c6514f79a559dd5c1a46f7fd9f69a9d1608535a36e34156c13620d43c0013747f486f9a6e49c10dd6e53e7deed1c95c13056d9d9dccc6fdcb421cabbd65cb2e95cc6f093bdb091b9d798d6dd8e6ee907d15edfef9ee4254be7709a0c5f1b14501d04fbfaaa1054ac0a5917bd7a0653e694f8a68097f1c5e6759dacea5f99abb386ab0103d7985068b555940ebce9560f4e0f2cf742024da1ff5a719a5d1577142c49a28c2ebb88c4573981a3ddfa914275aa5af857da7a7acdd9f3052d0aa56395c4bfa36b1ddb34ed804193fd8fa4261439aa0ceb668e2e74e66e5e2513b2163d5fc2111785dd53c3b14f4bf54dfe5439c2fb2a32f994f3d30ceb2352b103b62dac5df924f5d8c5bf9056efc9675321e54cfe655f7bc2c1a190cd61dfb23ff4e021b1e4f0f129728a6d5212572bdaafa01ad7612481840ce1073a51f3e388fa87592b67c584c55e80d0bc97abb317e9c1f913863f839e7654164deeaf4922c3df53b0c6f61c60de0a91c049014924662b0b724b72a07c6603dfbc006b70627a8a7115798027a66b76ae0e3a48c723df84668c154a6279235535cb2aa78a5843fef54f28f54450d2a06c22199c58d6c737ac59fcb6492fd5bf138ce33abb716b78f48707daf58b14252dcd9875adf90fedc058a4a99e20b38b1f6e1ce2e9e330383b0152301909fde4c9af55c8a15028ff78f8db904c45de1a4d0e8a8f4d5939bc7f25872be12370fd15a512876dd31b9ac6e3a06283957898f594c91966dfbddfcbfc9a0ef05d0c88a6bd0fc0d4f3d279b8a096a7844ebbc5ad35753907a92490bc026f60493f8220b7001cc4e781c925e7540af0dd80d50641d7744d53fc2043046401b44eda9b9af1d80eb4151e59c3d58f78a5c5ed4b7f68c9a6a8fcb18b5072b560a0793f69430b51c692613efee0fea28d219e336d808f80a8acbdbee079a8591ac0cb09981beff76d1abfd43ba8d278616db1f38db5b27f21a67fd7acda2b60a4045a23de072ae5c7a22d136f658982f87439b40f95aed9ad54e7438702282c0f6da20d0d061ab7d90e17a3a346cd4cd427ae837e6e2841a9c744217c4b3b30e33dedd95a09c110c1fe88d34b6a595922c0c315539f3ed10bd0d2184bb531f69cee9c4437d3ee81e9c44867aaafb48e7fc0027ccb9fd9a70006b27df13c919d9187c308c11d2dd0777803023f513b18f1f1facfebbea046251cde4d5fe587b57fa6a27a7dc5ce498a52bb139e89b1abe3faa6891c819a8f5813a4398913a47a543ac8c9912f32bad10e17fa4a25305ee09c00e21942e7c5ca052d19588e79ff7a81b1083667b5a9188c36b937090a10f6ab44bebc67d2f579d24587c2422741b402a0b8f6308cd39005fd90702bb53471f9e2406f2f2c5ce206fb2735d5d4cb5892c0267566b92f0882c17668d7bed68ba868a8498ab93c4cd4a8076bad2d334fb1b667af7ff8a54ed5279a9492fe424414e035b455a471d457e01ed857e504f5d8e5a34da381c83c42f841c34e0957c66fef44194c2b6d67c879639e2fa05480138101c9c054b5c0ce77200c598778698fdf1114ee86d72178db2077dde209d8bce51d9853c5ab0ac2bbcf44a379702f0d52d8fa3a62d69bffaa97b7d32391a9d2dcc05e7e224e003540aafcdf18fc1bc6d50873d16d8242f58788549a1995f6c4b8c202741dc3b2775b9c2273825ee271f1ca736ba9e9fcbd724a2716510133e436dc81172cc811966f43259e01746a2599a5e859d758ee6cefc20b431539e65064f220bb6758084c7f2106e865b257464fa3b140c26ff17335b6506f510a7ae71c81e4150b8f2c41a1050f10b853af78bc0c9a3059811e4bde89bab77014e376e3e8b2da54ecb0b8830df847aa4f40fd702e1308c8c58d983435824cb5df9870d2cdc64a51e48dee9af079137106269125b0ee7d01369e2734d3cbc04f46782e4964f45118cd9c693a4e0a6fda46dacb094428baaedf5eb721bb5e0e8e3ff991d252d43fd47e0be09844e6031b05f061291a817fb1b665e8d01e37a24abfd3fe10394f955133b01cf53159bd8f71036c83e5d06c63f147050b35ba9d7bfd5f770deff760cf5241cf4d6fa2ba441deec30600fd74b7b6719a65e4ca13515009dff2c295207b8cbf1d40e301d2296f9824760dd3ce910dbafbde26f98caa2b4db14712aef0a6a81dd6a5fc8ebef80e32c4dce3991f445049a85d4e5140dc3f07f3e66a9c25530f7c26a13e88a05b200460a23910be5bfe350c247807710d93a3a8953756ab04e2e12e0c3e7e82e943b70cb6185d9b114d3e3ddf8946504a1ee08adced1bd211d32b4184f4021b3c6946d4a0cae0c7592563af3d0e9e423222d8ed83a25b1ce33e7ef1b4962a19fce8690afb671efe0554192014fbaca09d14d6c1da0f42ae577e878143d35f039e1083cd2c4b6321cf7a98f9c6db4071f5c85c7d4c018a2221acacd6dff00c4431b54c1d84ed669ba05297ce40836c8e83251c8be15c5464695c3b60c7f775cc5f6abfb9b304ee334b062d5677717ddd2553f58277669746a50c0754e4fb7ca452aa0c88f429b9872de4c0f333372bc38fe8a00c800ba41e6a01f2c668147968d29e8d24313a9a47885d0e202301530928879ddf464719e72495fa27a17f9bc791841e542600d6ddc455f2f6193de31a865ef431444c7de5f5e67837d30ab19131ddb49e873322b3a67e6b92816af4bd18992ea8802c6ba7b8e53acaa06584bb6bf540066a7a0ffb88d7687c94e5bbd57e6e81dca8b6cbfcf37611e9058178984123447a122a59e8d44d6351cbe7cc8a7abf8b02750a871237106632be62671b5335604feb60b63bf137be97bd618913f91d1d417649047ba24487f6692f54688806b59d0834fe90d50dac1a2d7f827373615664f24100d436060e33c6eb018e14e39f16eef21040391e3a418856fe654ee5881e5aa326179bfe0f3339451e908547e776ccc62317d0dc19f072f06d56e64917ce646ce271b4231680e681e9a12e73ea183c36103ab823fe52b98c4d377774599e94fd6a58590cac57335d520841b82f07d70fc6abfb8f0613090709d8d938e7873413376b53b1c700ee829ac0b207f32dd80b5f2926af2a8e936f84f8ec22b577dd0fec0e44d20d1fe11072c031e6d09542d69e5bca38e64f173684a031c7aa57bee8fbdc376f3adbd5971ec4c994ef98ac6bd4de7e9588e0cf91c9e2d92d31c60fcf9b7b48da41334922345f9f21de65eaedfc697db9b0a6cafd715d0e60b69de42ef34c8914693532039bf8deca86f55193e4073332347b50e630c9466e915b8fe22577c70cca8105ac95a94070f45f8f5c139295e209c1242c70990a8b98d1bae71ff4cb710d1c9d6aba4576a40cb102c457caab9ea4f48bf92c76aa0aefc8d8f5283adb7b716f37937db4761a149ba253d4b40d4e1cdebcf5a2de70a75346444124d222411f9127182c8f09164533e23da7a526a2e58f702a4efec876b2a4b8c27bbd19cb5387062c4318efbdef2370a0d9e15abbf4f5148bab2e5a4cb0e358824812cab2c92d523199910338eeee771243aea1e32b86d5604a3e8d388dbc5f84a098b9eb2dea9af9162eecfb77dd6fb41ade9f246a28c80b9bda1aa5ab6c2b345398bbda3c028e5d8180335d30f8e024279f27d41e1e6525de03ad49e241b0f90266c8758fe45b81bd8188b7b2070207d31b3829292bb0c6b60178406fa4059b0702e5582fdebf1c45c00b7d124ebf25a9586cb6ded1aa961830f68657a40b46e8fa023779ccf8558d6d0c113aff7744fdadcdb871bc8224006f3a8ea5a9f585e9c1910d2fe4a2b6e4fb120a74194016f1e80f1c4d68fc5bbe5bbceb0ffdeb673bcd7f27cc3d37fb6e94e83ec43d6652b183bc82002b09c180b6578d77195f2d4dda14d9f883e9596c03e099dae869003ec706b9ada5cfef7e2d8f65cb6a531c94099941d110a20092c1120f801301a0470c8807358e0f0080e0f598134b080160146a2d75f111c2bde645ce15a52af0b6fb8207c42be4c3abdb8b8df54badc4373d7bc769b24b765210468fe1c5bfafc4552a458f75b565c05d25e68815e6e2245cecff21f25eb64aad346025251a45151fa446961d83888e2142966413ec4dded61c5f9a4b57d6bc2c30d3fd9eb85fe6befbff52a7789d1962a9c7607c3f8ab21f5db857400cb40c39eee04b3d5a51ebe57cd2d2224957b458e452048ca35f759ad8ba4e9f4d833fc7b92d78ebfe13891227aaea34361a0470158aef84b8066d47a63e1abc4289418c8210fb4e077049308e5bb063a386a5a9aabc4b14a5dc68bb5ad160abe103d73a5c8489beaaff67833176f0538c0c079b24bb343e670413bd69e9ca1acc90b653414703a7bb34557e2589e5df9eabafb6f149ddff824d3e0efc0bc844593014d9441b3ee5711754ab6527e15d2000cefa72b49f6e5f373e853012a1c921a538995d6f8cd955356211ea61c8d734374f78e219bcc7e0262b7f2a90c2c662e51da48e249a0b5e9bb4344f2606a1500fc1295b1f1278231c2ee1bcd1e55827b0fbb1161e28f84ee988c16283dd0df55fa93909217cdec254daf837383f6bbb0ce95b5d206090f08c8f3f39eb5902b39bac1c41a7af6885e4af71f50829262406040d26f3a5945ac1681d359f4fa35cea29af7b28f491a2a6750be08a376db324e960ad7acf35883bb15951b8d3456526a587cdc3388a54463aba22ae478af64995fa1b1d2bbd10ff8509ef28948d81108575ce8ef83ac83ca78a0b21c4808c4ba6eb946f51b3df14b0678e376c011554faa1f84f849858101563572218275b2762077517c5c6ad62f87fbd5a0ab5ee08ad7d3cd48e43baa33b04fed2918fc0362e6e28bfab07a8356c5ff42b7f90f8ecd1cb9951386fc05cbb838e817cfa9114cb362c7e37a6501554380526546fb895de85b5990f68561dd8f55f6cac6c4a653c9674c5280c94304e7edd2122bb4a7a7d23329c623bff20e4f36aeda53ff886646e333a9e29e3850bba511fba10f4a92f5fa4b8243d709c2cd34b2052c3dd007520ebcd41f9312fd4a328c9918bb40e9844148e904e4910d8cf7d1ffaaf12a9a0c6fb7be4b46ce863a8ef608c2cf58fedf13cdc6c120b2ee7d3367d739cf0853a8e10b075d20634576e119bd3e10e4c0986585f53d6064bffb8d65c1ee0f4910068e37fc6971584cbbf07ed5a98015a5368a8f53c2a869cec14c7568fa15f40e602556588f953a98ed21734a77e3fed49d40887b6dfc4bc4bdc96c517412e9d27f9fa8e9ed15639a9b5c7c275d4571aaa2ca1325618c034f3d7c184f8250742d75f253097d444887485a2114af49750e80e3c7fc15f49055ffd464ac2ec710cac8ba7621bfa9edd0788ac66a1e7f77b400ea3fdcb4668ac6dcb1255ec74cd488572f1e6a38daa9bb29faffaabe900dcf8c3bb356127f898eabecc1aefddc3c2018609d0a88f546cb3256af58346c42be611624651d5c258d5043433ac08a82c547a2e21dab8ad445d8f1ede03de39da6f15e72c10ef86f65b0559fc417dd82317c9367b634658bdeb4944ef0558ffe4766ff2b06258e0bd49833978049a5600f50286ec1c25d206de7375d61a5836d44bf2899b865a8f9ce07067a14f764d3f53490ae4bd21a7ead4a2f8b83daa817ee384b2744bf067ac51af1447c9da67be1a9512617a32766c0ab74a3b691c60b9e2cd270ff6590e1c931ff45910f85f3031ecc1cebf2ba8affb8f4777d6ab29b9d8265bfc7391fde904195038cdc34f6cd758f1c4cbe429683faf23f69538b25b8cec301dac9db99cb7fad89f0c23d50185dd2fd23ba17d9315fb6f9d0df56dc9e2a68b1142eaf5e1a3b6c232c013123f7885954ed1e408687328b9ad522fa1664962aaf9e89391f062ebaf346dda66a54152e364f3163a3c713244bbffcc54af7d45797dfc2da9da12fe1bb5728210e873352236c9f771667274b70a4695447c515b351ade1902303a69fdb162f7989985a74d872f04367fff83b119eba2802eca8b16bf72091ce53730d447f7adeda1d10723aad652d074a05b6f21aa2fc5eb54594426ed02940524bb7b8197686cba8b2077c5b2783ac64f506442948833cd3c6be61376f8444e2c72ab03918a476e88fbf7d1381bfa5a5fd628782cde8c9efa9e22d6ec85e3244e8de1aa23d37eef50dca28d7702bba429512cd913f2c3b57506f6405e44b2076526a02633c0a18843d3eb31223006bc7fb5b09f9f64edb6d1ceff1dd7c1b63bdf54614cfba52bb2dc696335e0a2f9a286398c5d58c93408332968a61b24838cfc606c97032ed8132f2d8328a4498a576be85c4b1d688fa13d276891f81b9646fc415e99d3229b954df2130d8a7570411ed13403c06f03c486e86a5b5f6343a6a5b05c3be5739c08bb9020a80ba833b49113cbdef1f54101c8795838ec9b2a77c7d0120e47fabd091af0f96c10104f3ff7b0a0e625765d4792fcbbc1f003d79c02f7eaa2b20a6f23b009f5effb8e8b0d891332218b18c2f9ceaa9198300ae9ac57b5e72ced00ac188cdb66ed6d3c5b0ff3e04157b56a8cbd8fc44c7cc2f27dc205eb9a0684bdd2acbbd15763df6f04bbba53dd6775c8c195abf740f08d4342a7204ba82269f14bc96588b907e6cf5f70a6cd79f6b0a9d0e3628c4549cee7a6e09407ae94d51a46e166c6726cc98a5e8344c47785d3729b676f5291640c62780389fbc8ff88da23d1c2a5a09c44ed5f22624b77767a9e2613ad1a001efe5abb8e5163726436aec910c32c3070de08f8277ba2cd273c86a6be31e36f3462f1318fa569da622c4fb78d427bc415d0f3f2c92fe2500e438f959ca72fb1e54605fa8226f43d708e64ff4cd5ef8889f37f879b03cbeb8ab57f6b4a152030073a011d3999f822619cc3b994748a23f264729b52b3d9c7cf15dbbe4457d3d66447f800ae754bfa5ed68165a12e0b60e3de70c232280b3fd9d51b6f1e30342a22db0b46e45e7e620cc462a2c7490db15daf46f1b62aebb313d76b4c9466577cf369a9ff3c4dfcc58c1cc6f9aacba9c764db42f91f662ae92f67c59c73320d634e03444e90f570a11167f7b079dc6ae8262d72fbf826e51a41bc860d8d677087e19befe253bfcd94e43669d5e0210ebdab61cf00b7f071e6af57262dc2c0cfbf716e694ccfd61718836ebc859ab2b60137562699aafb06357b94e66a14502501d82eef00794da35a1e77f2a81bea7c9ff198215e7d95c230047267f62b6520a507e153a710ed2b8ae88952734b8f0c8eed8dedc4cbeb3d728c6e9665a12f32f462c0f49d1783d583e6c1a5677790e07c158f52575f52c318eb6d822ea74446c9e22a6d9a33f614b9bc36c1b1517bf83500aced7a02c2e6244793e4d7b53039f12abbf21d7de82d1e2098d7923168757b3c7335edc85ee67dec9e2a07a7b5d1277d179a95b51c4bb5950d5ff97695113977ca4000ff6453a8ee8d97df1ac185e2c4ad279ec8b6fac24249572cfeabbc2766f0fb2a14734a0b7e86a04e4c60c264de0c5872905f38e89dad5ac6ddfe7fcbef44be10f919e257514cd7165162b867ad97f40aac35501d22eec82537f1bd61ff88d3efec0548305651e52eb02563397cb5b4f3fe6e615d503666902181930612765f9476595a980ce3fa299ebc7897e1715f94ae628c4c8216ddf4aa757147ab9d53bcd656c7e98178209e840c41eb2260ab698b41ef2b8e4fc34e3943bbc180b562dc629d4021b3826fe0fdc2329e8568ea206755ac4c183711d43250c0b124c290454749cf0965ae0987baf555fde10a8b1d3036bdaff0629aa5eecffc9b1350369c065815dacc821a9942bd5bcb9f93be07e2dc24be79478f13a4cdbe76f1d88ec8d4644a4300c748a93f011c9d414e0fd8657a8914008ad3df536f306ac8650ce25ba8858898a29fb47e9ca7b035eed2c44d1b58d92da949b03a1f27dbcffcc7a2ec0505bc8a5dfd5538f82e3136f1a826943b5c5c4726d676689786d83c0e7e70d0c848c807a1ef8bfcf746c98c60677274e25806b1101f8f147911229d8c779e9f894e3b4f59ce3ebc9013ae1ec37cb1fa0236cb63de633144247c548d854d0b78170a50f2465c56460982bd3125bba24608b2118340a488b066d29e1b94dbb8e981fb78474c1b8bf5bb69a770e5ff15aa50c41e071eca4608a42f84abea5fecc2215b72681fd04fe38a6e272f6218c19b0bf5b6f9c15c3fd8a5c5365d87cc5f81b3b911ac19a6773acf3f323add63ee392808c0767095fa8302741a1b8f7265f2b2c0ad2b6404d7b01f920042e91d0b752e408cd350838e278b804e2b1e3be82f97805eaad5350499c08aa0b1d59be2234ce546f7c14775eb1cf7ae42b0b3ad92d54ece164571d04b993ab2bb1401175ea7d4964fe0c154edc22d913987a8b2486c20ed790e8e741854453b5f3d2ce2f5e5080a6935ab1add43aecbc713ab1aa79fd9ce7181eee5c2ed4f5caad0670e3a93ca71cbd9351675109b4ce0304eed10f14e6c49abfd9b2cbf0c333f99e90c7451c5dc8f6cab681646a838849c7c315d32f36b79dae9996339536f21ca157fa911a5b09dad237afabc9596fc4881ca92a383a46106c693ecf11e18ebfb88ac0fab7a4402c5f8218a743627a5c873c5fa354f063101bf06c567fa0707eadb8dea372f163a3b72f7e3ad03f67aaff657249f992dfdd1e7efb771267a51a5e2e30343b5f8c4a850d7fb394b9b65c377afbd2ecf661253117a0bd3788f151090ab2e50b1915496340d1256e8c93605f208cacca98b48114b5c44ce20f3eb43d510460ae2854506175ded0c51df6f5c11501395756f28612cfd3b3b7be26091f661eee36ef42752a33a75d450af71b8860fda5f239824afb849f6eb73311538c10905573a846a1dae80efad63482b1f282984a23c20f8141299b606c5874399c17d9ec438dd80fdfc7a42a22aea870a28955dfc0966eda3a2f55a13be7eeae96dbd8a212326e7b46649d27961f5decb0d86a7d5db9a6ebcff42b7f21c12c50c58ff93c69fe716f807b8b2406573eeb013acf60b6b5ab3da5b03318ea4eab6a40662ee05c8b4c7e0ffe4f9912331089c35073942106e37e2342d9c3085a6a23791511a212a7a9e72c9e2ebd6d85525e25abff48c8bf2eaa9fd9e98487709671d6c2ff974d75ccdcc6d6ea6c64789f20d22d3af7813692d0b0e9b6381b894a42e23f7093fcaeda239e2aa6f04bdbd4ba06f5a839acd7f013993d20b4bc9cabac268e2e14b3f1efa6ec161e4dbf3ca16c8dc253cad3d5a9ee80b268452c57bf9a6a4d2c6c8f7dfc6df2101f72d50bd2121c78428b1ab959fd47c19a0df095f038e1f1f34bb2c2b23044370f649276041985dbd7819079ec31431844457119e9f8d17c2af108f4a3c59418d3883c0a562bb16c7a27e751c84fd01c22224783e8b97b64b52ecf54951fb179feedf9c0fee81eb5c7c408f3defa122f7e151cc5f36f616d7dc7df42e283ed9ca16b082f8a27f6aa756aca4eaecdb1abf0ba885df91583ed95d0ee520a54479e20cc97bc58c4146ceb132861ccd1d458c268c1473a1c0eeb1739081f8987c80af11b83c6c71928b6d526345b1841361f10d1a5193e86e621c28d3b02e5197fd3e215c83e5b85c8f866c64cfdfcc44cbc0d915866bc88248b433995a994b33d5b0ef85d15f7b7e2eb23c8a01ff932791a442f183f6f7470a0dabc01cc91c9a16859d8c27b88fef51b229f529d36c2f077a8a810062dc86c1724a367b7248347255cf9cf25f6e24b16d49fe15daa2b38ca1c11607c6b3440e2c49a767d04cb93cbf3fa2200d1f25582c18cecd80152e213b251e889675691598266f53a8ee37b5e662c3c582084e3e6e91fc0e9fb39a25f5bf96043942a349c1a0da325e3d92aadd34175fccc4c0cd0fc85a455a71e565dcd604fd1174545a0e5a75f3a303c6d822e713a316441147640d643b6664ff8ad137c5293f2bd7f1f99ad7c0b1b65e82b829ad7a3c13144fe2c784fc9b663018c23e3d9484088e86efa7bbe0631f29606b7f77e161451719e44efbefa816260f49e0048c8723a9bf2094aafee6167194017698a53b94329cbdee40b037a95a1474512221f52c735f62dce4988bd177da17863ea70fe3a2dad19849994c92a3b130813cbcc4823b124d5b761d6b84e6990c96ed645e359ca5f901fab0db24622ba99c10f7355529f0ece39cd9dd1f26eca3e3c5a15a81a20280149f3a3cbd119c0d433ecf2bbc690979ce86c56fdcb78612a8e2b1dab990bc26afb669d8a3ed96094e209159c2881d012111b37797ccf7bb465971e4813f99096b6bbe61f7efd00d59b3cf9dfc0acb94ff0c9e5ce1531a40a9b746c7a61232ae7156049f7e2b0eadad6ec12e597a9bcabe3ae9a89b10a8409d0a4f85db2d38039a9208355560601275ae46a24ccfb3b97d0f09022acc0a780cbcc015893c535202641ebebd3b426ee98fb067692b3e15a1cb4fb38eb0122c9ddcdc98a900e601ade7ba9a5db7814f8fecf5682bbec70b6ce27f39298222261c495f09797337c78077377f494a4e4badf3d5210142ee1ec657c4f546675399b92c15401bf5ab92a68fd05743d34e827193c154342abdf5caba09b433fd2a1408557e8147a0d715480269e8bc7bbb243814c632b462b32d827477a32ccb784a7b87939dcbd9441d0435c14643384a43a02dc0b311cbf495a884ee428380dae84e0196d84ca07f7681e11391b8d818c71f4d8ae80ac0428d60197787c4abf0a5e6930f9d24f5770550c873ad2b0b84c464af64b28c60f01c9fbd1e223c57b25820099ed7b28e225114c3ad60d4c8e981198a6d4bfc7db83fdfb75c37c67cf240cc69097fe7552c6fda1d179ac240856ce908278513c6e334ea40ee1c6b024df0804ee0af03a142da0766156c2ca780aa0058a06c1d191bc4b8a82bcae819476edb7f3852115eabf60d05fd341de6b1b5b9a29141dd2eb9e96182767f30c8938a73598075a16e78525e893dbb1899bcb19c1d0da19c19402b553072fc8189d27387d8eecc8f377cb31534349d088d3f090c37f7a8c70ee389c2741a144c2d067dfca3ae7a4178b5a56a8e648963b93df691d12c4397b16e507f294c65041b380b5a497624fb5c9cd9522dd08f62d0631dbbe5503bbef81c31472fc482e9c71da6705902576b4b718991298ae2d12621654d820ced93e1d7a0572022d7046bab266d498ab1c6c1aa618f11049779a536f3b42c7d6b926269453a04680e4a9a006e5f9498d91bfec680c564af38f4c1651d094de4731234c9308e5309cfa22489aef031b8c5b4464ba1ddbaa32a3c6727335e9603bd491fb3f07caa4cebdcd13e4959667e4622e0131ea476e22ee78f8adc404d3b477ea5b23706fc37deddc64efc62ce2003fb0be6f2ee13d97cd798eb75b72356feca9bae9f90bce546fb44e5a093009dd3f7c017b34ea1a782f7b69874d9ef27e082e9bac1105780953186ec2119f3eecc273b7a058910d6a234bbfab080dcbae9e5fed752a4a553515776ec93e4b7dcd25f10bf80da1821e3d5de3dba726c9d2bda634a284d9bfe841afe8038d3204b266db6eea0931c50f1ac8ef0d0916c168ad417802a621826ef5291569d27e3f3e6f344f0935f87d30afe05ae6b5a637e8769d6db4607a467ae2cf6da8a9d81191f929d2c81c351fc037e7d376f134892a92063b49c364f62565923a6e43bb160dc0355164e852532a2c55fcfe6928aa56e1cd0f269e238c3cbdc752cd28a953b33452d1066ea41d687f36f70415ade8a0d078301d1a3ac4d3bddf8893fc6a629c4401febac875e359f0eb05ead779876b93d3f67c91343e155703d6449bb5298f13cd028e25474f8a37cc837fb559bec1f316b336e3920770d2dad474ca385d666d1e4dd5274e21cc1215bf57a86ed985a6ca6c16b2e614511cd572831517feaa97d369588856f441cb3173a35c5e646de42ebea26fcfa9f89c481eef5cfa0bfba61981f70cfd9c3b6675e038e327e738ac0020248311e36c135da3c9ef4671d895d2ced26ff7aae981640f26637e49e50ea8a3109ce0686643197046baeecab8f142c780414e13c6055d3738843ca3ba9a7f07b99c89d1cf3c06aa68538b18cc8fdf3793779eb969dd6659604eef4c0ed44b08a0b34f1f3e9d74fa0490b9ae8373c01741d5ffbc9010a0f9be6d9e4d2498f792514bbf5175152c4d8dc0cdc031c7b3cc32e2ef7039ee13e8c0bec52c9a6c4f2ee26bb6cadb008c4098b0369a8cb8cea487fa550b55e29c3c1f08ed0b370a7efd4b586006b8057200cc97039ba2bb9082ebbeefbc47066fc48ec393e3fa66a9ddfba140f10e7831f5a2e7eadddb2f01ee8daad542367f26f8fb0491ae22f9d462c2975d5a2534ca1b40d0b412a91b0becb42efb59937b3176709300b45e7c54195228fe7dff425c637a278863d3267afad499d8108a94611596bdf5159130bb5185a5222d6e7437e44635612102f59714294fe116b3e45e4d1103f0058beb011a8cc877ac91f48c9ec9cd0161b1cd59c7d3339705ecebaf227c4dc427d6bf695309606a9e24ab437b2b536697414bc438098384bd934ab8eba418fa76652344e0b8583a4b6ae86362c10fd05bcdc078c9b88d42c2b5dc0296ec1bc26de234daf41a29c804350066900d995e14bb3590885b6889048c3b847a51b8e853b1e254f8a737f4782f35c782342ab5fc0d90e6d912fb913dcd001122056df071047962805b855dc8a5943ceb34bed021924eeae0bcee39725854474c3930682e33b1d1304d8b97cce081abaef8e5f4958a0e84ff60c1bf504238e5b4ed530c06dd197644ecd8370c836afb68ebd2fbfde2f8840ff22b960d4f230301a283737f079cfca65334f65ecadff143285dd4af461a44a29ff21d26e1e673bd59cd8f9fe03afae3b209b1b163187290f8433bd24bdfb2254060307fb025e31d0c4ea1b028d34dba57d06fa58e4a76056b45d70a0dc084f6fd3b830f8cc6b0158afc7b79592e60ac44ac451cc299892ee74a2df86a3619809b3d6d6eb478ef5ff8d3b2751620f8057599920700de7b5ed273b25a140b9e8ad9d3895fcaee0c50b005e97aeabc8ffb2300f90714fcd6fd3562f8591fa12ac31471e2fe434fe48a7b869e8017f7077a2247dc33f42c76cf07a5e3b2344eaab492fa4f4278e2a010470fc19313944e8298fa170110cb107cfc391d83bf04beb9d69272f683b85088dac595b2ad1a996c7230b70138ae9cb4616b86c678cc9cfb3f572494413f0a7fab0d95202f366c47059583e25b5a0ec863f8cf7ca964d7a0c8b2e7f01ac9c62bfb863b41b263e0efeaaa85aea7732b65203745ffc3fb7da994087ed072160dc03a7245404ce3740c5a1bd21fd99e6a95edd02a8ba7f41ca218dedfcccddaad5071cd601664aff365957cf6d2dd24c059c2434ad9894f2b93695cd2bd5a60d1e831e6205058c0db1c9a15edd1d0f32d72f20d3d6f4d0a20566b907a89bcb78322e3fbac1a2c1be9be0e537615a1c476ad91c525e86b95f7943290262918dc31b4ff1542d2dcd05490d42c9e93c06eba1784e6464839487458ef1529c0b3e210ce3eab4340ff3cce05fa10f3c0967c4ba41d7c9c5de3b1ad4317867136aa4a49bf98530463f51030bc2dd55c28f376078761eda42a39eec07901fb1d3d424cf79c58de07338d331722e7a0f9a50ef947aedef83637aee5efd53b1e4bc2320a7564ead382749a1eeba42981521e48b4c65b5940586448981fc4039ef9170145cad50bbafadb49e0b7a6fac0a517f9e240ebc5f28680cf61ac744e5ba507dab202166c6bca18feea4c872f047e5808dabb0a70707b0c7857007b5722d4ed1ff51b56ca583f2a067453d7d8caa000a3e2e1ecf01836351717f04c2a5b235aa72e81f6334849fa5d82121a0e6485489380c7c6106d24d1c9efefb8ee7ed9df823d12cc73b0429cd046dd217f8debf289d825403dc27bc5d7350bbc3f2d7bed1e433bd6b0567b69b42aa8e92e02da2fb7ddb41d6326b5f7aeb891a51060e7ededda130ff8cecd531749c788b57bdb46c21ce0ca0521c6196dc8accb9838de2f6afa770d209b27724a8c96b503f8fe472f7e48683a66346ff28883a4ee47fa777e51f722cfef327a25183a1f0d23a75f0eea472dd2b93ea7ebc519b90cfe097a2778c0f486d5398ab60a7e65bd3068ffcf17665882b0c38c199328865b85663536b368637339da501ac17d09f84afd03745d0e68277e4519c1c7426eaba4e7b4a450fa91d044140f8fe6343c08580955ca57efac0a8e35d0c5167488419eb204c9e8adbd6beab4b83674e91664f99b00ac09e37136f0d122bb05622e9497b73b788b5b4c7553a0a423db3ccb7465f30bd7568c9df9feeb5a442bd87b0cc619305541dca61cfb74f85a713600232bae0d079dacdd6bcfbca5687e4ed62044dcec65f1aa7b2c48af84fc70985c004831e9dba88f6ef09b20516af284a05a311d6f317030e463c7ac5a62bb29147470af5cfa82a97b81b43441838a0bec624f3f7e830e8279e1561303903be8bc25279598330e6eb6f62635ed6c05ff4ae530a49743251406b10de6dc1d237aff14700d96552464be6d4fd9a6a416c49d8cf99f499c9f814d5d3f28f93c43047678507a1037d888ce84748c964a34bf9bf54962e95776691b6a70098f85d9ca54842c74306f255aed15f5467633293d4f481733a25690861d731d90dd0a1dcad50b55a24d847d6ed158e9bda6ed8f08d8ab0a61ca62f358007bd041f3f27944aff3715a27802d7707edfb6f43c147cba4af5df8eb0d0e76ca6467deb3c7ddb23d48949617c54e5d6702b537df58e10ce5b3360e861161c8b9240fd8a7063f0297a1fc146589672321d73230a3368028a87c8abd4f3106eeb7eefc6930c8173c12fbc5cd85e8a96594e5ea0d34b0082d9a3ac58b7c91dedffab88996429eae7a81d826daf5c25fb8373b6c7d41ce5518c5af08030da1cecda8c5a681f931abb96552035981e582b3d33ef7bf1cb72d0d8264937c4c7e6790c0df08bc115c372c3205bb58daab7c4e8d39baac9d6c2d2e04bb7472c9a73130b298feb8f5d87ce79c13e7d710b8028d7c415a577ad6d4000938c44a8e17583ba5bca0e23d1fc5f243a3039ba49d44c33c60376ab1072c1a915c1c95d05dc8db0ebc0d171acc2e073f23741a456216cc622739ab4757333f0f9bd7fe16531e547fa9dd205439013e2e44d7f7d24605883f70291db0b1ac65c28df91fc95792141bcf1477cf43185eae725fead6b55170293caf3f8275254c7d302cc46ea03530ff0b64723ac650d080e9b294ab366cbb1d081e54351fd7d9e33e296ebba69424a8bf524a55d179f78f06641209aaefb7f110bbe11a6f0e2a3820d438833a2602ae6db469f0d42ff593c9d0265f72511966f7fa1d06ca728036a6f3177362a965eaafcf2659ec7829d60510560fd178b0cc1d1c12cfab88fb015e2cdaf7a6fd660b6eba9a1aca2912001c091d9dbc8b522469bb946ea3c588ee0d87b7a1c00662e8ce99505c0865c2cf1b7b122debd6e9ac4ff8b93347974bd0ed59e873ad14ea97bd934a70094a3d1f1e139dc3c48999161989b096177cba6bb4cd6332d06f4edfbb066576bf7dd02f97a2c876c8f0d2700b9ece0ee6b06f2109a7257cea63763ec57eaa2877c8887d1301aa3ab468743aa8d48b85c6cd99021dd7c77c2e24ff4a99e29429d6efda3925773fda46c7e304908fb09c30a69e0947786c28cb08916d0044256031d55241ea94280f322109b0a13dede2bed550e28cc0b003cbe16f439b7d7b94602a64e35bd8653e6bb1fc8f495ef5de59915d01de6cd087d49ed2b36fd78994397ee31041f6360fe9e93c56c194a6b2e35219cd56d62fa665bd059648c2d32c83a55184adb84e166aa99c870e4ef3430316e0344dc509f0c5669c215fc8218d75569660a26be013a88092b9f6c1ee3da849b6fd113ad1eb90d9a7a92916418ac6f3dcad499c3f03d659ba967432a63f776829756c95af1560b9d572c3a343b17714fa1063e54637c7e032c3781a5418101edb5e20c28f20c997e008824c2da0de48f29a1d902e107d3792e3cee0ad1783139f32cfeb94f8db7f51ba2c63c7e8fec86fde5a3c786620f22a649bf88e8e2f6b71cf4b6280731fe849fb68f9e3b579592a4bff4beced32b4178ee8f832b406f44848a82cb4a5a82070bfab1c0376ef484a5a182a00f524860f811c987840c268ecbe88b0d41b94d56db42f4f4c645cb2e207bdce81d51a2d48bffd19db7ae3ea85de77a1f7e09000329906aaeaed723dddef2429977136c25d3b780450e26733056e9a6e17f8147f3ad357ac9393541194ceee5a4e02130e37fc54705db7070278a1b444cd6f5dc7a655e7dac19b0f705ac3f6c68af787001bceaaeefa0642c5146e9a1bd7d38d19750511a9d3f352bbd1373e8492b62e7e68845eb3a472d5d12509dc07d09ad9c0ed9fb835136f01736e8b27d69ff4a683a1925d8f201213aa75da5430b0e2974d5385be019294e9687d1ab833f6b142e864e14c733e248637b11a76cf7441ddc96128e2401f24f786bd081d575b3d45b2ef25dfedcc20a39409b7057c6ed933e5e6fe4bd95da1f1cc0ef1307c712a7f3e74a9de7541470e3c37f030761a315abd7507ae78b6b3746fdde7615a07c934bd4060dd1265ff35eb1658531c6a1858bd729a19d1f7e0467fef5f3630b1b700ef54b11529536817002d157be3371840831b34d934636081b36354c48ee11049826993cc76e533bc7c8b175e6c400073618411ed105a3930bd3e1df4c65f5868653f85c4bca10da4a5697c3fec1ab3891b406d89f5e6a268224bf2848438e8ef00e7a02abf6c28a0037a093c2858114321915ba4a646642fe08cf7814e38d29e6a9902333a8cb32a3d6f91f3b67ccbee5b4c9c771bb5d793cdd48bac6fc2293cf4125543530384b9054da11bafc05ab2a0a491758b7712342c0b1904de98b5a6a96da4c2aba846f215d17b18ca3d567c7bda7fb8a0d2eed6b41ccc1cabf5f4bc09677c9f0bfc4b9c29a200f21b2e9eed8289e78cefc003b204a4cecc61610e021f1586e53cdd398dfd2446f2920c05addfed556b565713b760e975cbb3d9d5a8ed36066641a610fb26a525ef8ff2e8934ee0b241e5c925fc5308e827a48d3a8a54288921d82afc537c02cbd6dae02a03ba2ccb0b95287e20828cd14a1ce01b4f97143d27773865d4f17a240688f497fd585827c964107e01b93ee5677b99519fae43ea6a4ab64983c53bc0a2a2ac77b53dcc98f55a1e4514bd0757099671e66bcece0551e3ea0d2e08b3ab237820be83785522eb5055afc273dcf72a8960f93fe6914abffcc83ec529b9c9085f7d1185b48da6b4c31e48f2f857650b8e5404da3c1b50f0f17a40fd123f8b7813a7304524c28dbbaa44b423c28f2b37cd8509a6fb8125873dc7476d49e451dc0afce67abfca4170114ae8d23cde8563510987a8f9315ce0419ad15cedb93ea8acdf4aae20d0b27dd51ddad02c5b7517e4525588e7940bc16603754fb977e68ff8ae395e37fe0963b3d2de0f40c6ec195824ac798b4d7ac1d86785d456e24fd258caebbfa1bd917d34530cd0435722d143c966726481e00e6fe82ae5d8e84cb269dcc1289a67d140f8815df42f082d5cce8f6b92fa8633a568afad5730721b72736b3b402b6589cde50f354d0fda90dbd98e825d2c87b8fe8ed24a07e0d5796f3bd7c24ee882cdaefc0a02be7a3a841d382b5393aee779eb07eb86ea5e11f938cfc1f1a36589fb00fc2cb183102ce032960a2bc795f346c6210b1f463135e9d3b059a9714d08fe432864d410d3134c351c3897e802bb14363b71235ad8ba6631ce8857d2f2b0ea3d428d5937a4c934174918eed2bf3a2e15f3e045dded623115d3db8b81b7c12d78463daf574e0bc01e84293c05d9578ec2a48662bef5e622df3cc8b138cb1be9709e851eb02c72a180fd415efd81452fadf7f9e99b3ae4ee75991caed251f685173a63d2ce87bc915ead6fa7d0dc686f3407abde5dda0e398a6bb2d2021e8141b1b5a55b9dc82a2e15a9808d9627f5c675b7a88edc86947852845ca1f9cd496b747764612e784efc1484072b55b84fbdfb365ec626cdac33cff47f82ca896562c46a9f70a68ca38c2c3350d2b68eb59deda71028f88c3a1f1da9b95ccd48ab9709f263bdc0192995804466b21eb57c016bc129d0d6d0094b23b8f25df7e493d9ef643c37255e63d1e0a31ee950a2a07052a3b48e4b08b888960c50477a496c4dbb2f2b9cdacd0cd433e9b73093105722a09b5e91b78c91f0349495c61825a3beeda2ca27ec9e6aebae73af0fb8fb967b8b5f03b7fb65d8b1374e6dabed97c51fb8d33c4346159f0f40c7bdd4a7d96b67790808c8f5a323fffe14cd7926f46b4a3c89dc28d6a1b6adefe56be33110144a085ce0a916e9d102a6e023f609a17afb29f18188b0698b37952aeb549668906097b58641ab1373cdaeb0f9bc2ac592309b9e67f9c9c43e65915270af8f44e32d5f4b95b9c551d22cd360b9dbb2e84c1923c5f4fb915b555aa7b2bb5a7ed4a7ccbc6e81b25e0f28f00e8df35baa4f769367111c64998a29c3d22889cf8165cacb9a8beee7cdeb7218a787065c84aa6cf51f938b0258a7378707bd48ba5c30de6fc174fa805837f07c1e1047d7de16f570e231b92aa88607c9c67b9e8a344aeaffa07abc5c342ed82b69270a03c3c52309ab4f2d8e6727dc8fa34197e54f89b4a52422616e3290e1e740b327902963a6694e00884b6c7fbbd888ffe140026288e401a8e4d29f7870c860506d7bee7f3d222cf37c0ac9effd8a216939d6e3a86a7575a22e8ee0313c2b146b37eb6a0b9bfaee1ef88f9c576d55276a564f69e6024d79af8c118992b41311951c6a0c443756b6976d7360f33bd15a43b3ed294f64e04dd7ec2fe5ece8b55ba28a577bcd91955cd08192a17cf6c13916c6f8e1e639c80fbdc8ee85292330467400f24157d2f6060a74e7199ceb421570ef55c636ded05cca623c8ae3b3981f9d29969f3de216ea2b0f5d38968eeb44a622b76b0d24e5df883dc0c16d66e7cb8576169f3ad32cb8d5d0e2b8834252ad043b7822039036fb1b019214cf8358700ebd0f5dc37de45d795ca34cb0ab6640f09ab29bd084a569fa1f127e52d74071b2b97f18f6d33ca60a297fbb7b13cd76b56a6ae54f5a7327b2d166833a39b3d55a7b7455dbfaab598b36d1ee09c2ddd8d7995aee2ce5688db125f1e7d2ee9b4e07f51be120cb1bc0d95b79ca2d777a5dcecce1d2159933c8001216f548a8b296d59a1a873bd3c08244789c28d3976dd55487c67c3311cdeb9f1f6143887af53e405f7db76b846ecff5252ca80465b3bbbd3f65a1eef97572de4acac6543b2d003d4c7c50b758d9564619bbfcd8eee60e429c792390bfe2448a79f7b3954cec13820096088b25e702281bd0434c38425d3069188081e032c949f1e31b9a3727aafe7e14d21fef1f70897e20ef4a567542ec9c12401903d28090b9aad9401fc566279c041d48b726336242598b8b42da98cf0fa01dce573132157ba6af1d018708b3f41cf090ef7e0d7b2b0ce6c86eb1b6628c38687c5c3606a3b30168666b5a1537d0d91b55c1a245e79aa9c63d09aeaa8545be1f29f6bf0f8e792c91a938a06d1af0514014746d4118e25f89e0019806f9bb3c370a22f9f1d1785a4381870a0453a9e0d1a0e6ac3557a0e7ce70012a1186ccb86f665d781399d17743f2368acc60fbdd566f4307462333324147661ce6366fca6bdc2b0fc90c1bb60800c780114b161e0ebbb35d247e535f264a116a6aa0f0581fe607ae4042a898a49671165e6f1218377b9ec6f7d99e85bf416d98335de0443a7df5a307426629ca04c3280aa2b5303c56014a200271a0e774d385b78ba6af7e0003203fea7dbb6bbe5c90261e323de7f21f42d856e967d1807de42c1c72a0c1092fe036a9b8916e660e38655df283d0216387d708563cb8db61186e27d8115a98e05c1afdc4559f745d420df7419c9876747f55909c8e4896f7cb4caf41e1955aafbb4aa43e865af31924f160829d3a8719deea59d9511bda9817a07f8c05182454ca21dd229900ddbc67cf3425b12e3ff1bf9675292c1a8bc2bb8577bbc87a65620a984ed85d23325a14893280630b2362bfcb3135d1ed676204b5738b284318198bd551116e589e01b3dc104624ccc36d76418beac9cf9a2f4ed4aba3f126d3b4cf5f80846f0db96e48ce31ba47b09a50370bc82009794a68cb698d24d8ce464444b795a86c663cca50782e7a60d0f3375a654a3a10aaab8a125c27e51430b037b4707a9e40d724130200244dfbe0def1d9b767a87fe277d4c1f1051a0a1cbac1d494076aaf8adfd78e7624c60814b53b45c31ebbb86a8a86882bcde2fb5f376078b85c65e4824e59497968c1c8fdcce32c5d6c6506095489b44ea93ffe9e43a7c92140deaeeb5bc86bc8d0258012ae18be02066a08f0c7a06de2aab9a645040754a231e3301287abfeae1b5c5ce5f541675ea11913fc5bf6fef6818ad7e7153f331a50764699599afeee474e90345cf876c11cfaaaef2d16e86e31577cb30628c10575d4842183c73e52f4f20b1a9e9f57267327072d18a5265e310e088bf24e5b8e12796d37086e42fcc196792dcaf0eb67be10f3405d4a7067a0a3c4167f38e1fbd58c09f067d9cf0ba93009e2e25a1c0f9413e360de60c96015aafcef59f322a3273404992af6bc64fc321638c82e141664570a8ea583ec5ec72b1163a8cd329e806a984ae7fee1b4156e77bbb0a252be92dbb13073fedecf613089a9ebd3adb95006437529769642c1915b3aaaac511dfd6ced7673237256d83dad9b3508e7aec9862a52575eba8551f728994277792b4401d8f2065b01521e09e436544b57d8acf178b7914cab1c659484e10845644db36d8d5d80a89b215e37d46929d02b094a75f6b25846c0a38bd05766574201b111c09784a8abba2454a7955c23cd40dd9e6b3f9c02b7b63b0c7a313467078f2cc64497204a5fcf90ebf7f950023bc8e0db6aa8945441415096b3fceb536ea1d66e28655249889aeef62f6760f87f1ccb2789bb5e08fea0da9225ad31709e97897f2e734dd1a71f9f46103d6efeb849bb97c0f6884456a6556392299682a29106fedc06e4a480b387ba3a3a896f0d757f5eee3db80947340b10f995c096ab8649cd00cf4bf0caad4392a68e6232a6def2b48afb0b7b89eacbf44e2aeb98bf041bf7408c502b0f08c6b32d21f1f56278172ed67fb161b8382d71540712db4e2a9637a0ea677ae17ab37b85cb3f6f550ae1670659df942c3b4285c3fba7178a2c74a0559ac71930bff2bf9e02fa6616b70d779a89c28b63c50db3303809f962a288b887cec2b312a520a789bd6cc1649503103745f6f7e62edbc75d932104c0910f098c2d90e02bf333f5a2817a4f48f4dc26558df91ab022c09d259710b8818b60501b897b0d9b4105da52b675fca75f12a9895b19d5ccba6c725044dfe9fd84643a81f2e554c0fac9c5f3626cdea0c18034ea65478f3e202707a40a4bfd7dc29e0ea1e70352a8c6a3c6b52ed2d73089ff2b6f20723dd94a4fb7d72f3f445b86407318a31abebd7002998868c344c18a9ae5ec51056323de57bb6ee8f9c4f51b82d97cd892a9b37cc32e285cc2bcde2bccd5c6e4f356b461337dd3f9351c6d12d1e87eb6a60e5350a342b95044bff6d54270023fb82b2332f8a4b4ce3337935b46e5fe69a085ca11663bf4f829859e376d76ebc736805eee83c8ba416e7791d30d29d3d49235c261fa625c0c45ee73cb6e182002ccb5841f5cc3c2a4964c84a146a66ec26c11fd34016bcb99cfb4b8bc8d393604594c7a12868ec933b31d01ec94ad651fda0c0769b94ddad8145ce2b6b50678170af22dd9461201bc530b683b2e0ff0c97410c912c8b6ecdd80f3758706ec9e01a12c220c1c4d1284a48e6f31d2e01215b405689b6196166201a9265c94c078a651a5502d632f530c05868477f89af5458b0be94e9fbbdfe364a8f422568f07e860cff5ca6cfeb761391f4ad50ef9deec9ff0578a11c5c4163bff7de16ca68a30ea7f468348cb593fba332a835827ea73a155e879593503ed1fb0ba06f01af58a8ddf783faf6030560a8ea02a35d7fe3820c2ae2ea034e30166c078a2c28b5ee5a7417878ca5efb43d755ac3eb1e9309ffed67e5e545f6094d7b58c0add5013b3e4504360bc25a1f63e52c1bb87186819e812dabc925a505325891f9070e2883cfd7f7cc381a55584cb320d4acd34e14d29d5d827f6cee9fc156a22aa649164fedf6ac1d032ba58b33ed7df4b7fa4e1b20e4454d08bce037cafc6d597462c56d00fbcdd89f3185ada7ca08021b93f986e8fe64a6726e91dbcf30af47b6c497ecc5171fef0e09729b5e0a6ccb0a3928ed41dc85c4962b7a9903d7ebce4bd4639d4766b184c8368c6e833aaf847cad99b173282b97045daa36ee9eec6312f521f81fb863ea3cdb04498d08bacd1879878a1beb4b3d508cd47f9268e8debd3effadda33d39eaa83a17f1dcdd62799bc32dda62b2edf8ccd4e51badeae0d6a2074ee1ebb451cc0e431cc5126594df1249b4330c4234c3943b1119ca88a6aed0563b2603efae09c0b06b8621634c076087518a91b17133b054deb45faf681bd35b45e8601cac4ef5eadba46f2d1b6ee917eb033b7d864f9f827070ae2a2218eea2de431a76b85f0426ea6b1095132e9268766427d80c6fcf01684b8c9ba632c3515ea26a90e3c9b26629b6bce2699cb0e43b09ab24107028ce3559f715af1b1782c3f224b32282fc9f5f25e69958a5b85127f8da897c856b31696263a27d57554cd79ce39ed0f5e18973bc07e13e8ca88365da0df90a12a5ff561b78edd75ecd04acf1c41a56b25634eb7a4c020fe51568923691dd5ceb74065aeeee0ac76aee42273c5c48cd8ab0533f61762e66c918c27e48f818aeee23ae80f386a61fa19fbd4910f856ebae3013586df9a8c4c7f83b947063364bf49b18e50ee16a10574d6138b6507f0f831c18ce634782ec510483069c409b6c566abb5d9961bbbe9304d9a05ce9addff41bddb2beca21052ce6c7291919164d872f6f457a48ac0304b5036a86d7b55510302b4bd201ef86d8bc296d48e34fc901b723346f8a735137654faee30e7e87511663204101094352730b23c6c3def0432d46d23f7dfdfde136a81a350559584d290f4a4ec4d5843a9f1fb5461a218410b2a59401e50a580b8d0b55a435e644d7026e13410862f8a512c28a86dfefb7bb1ff77db293d074a1ebfbceefdf94cbfda012bf3d189e9be05dd3f571e165384ad987aeb983eb21075bc2bddbf109f60e36e6f0aaa1e9baf1c9c56c045106f5f8fb30fcbe77f3359f70ff462967badfc659abd0292f1abe9b358882e74629e048e528f4e4137a22a5c871e937ee94170d5db5ad29501c2f65a837d66fe0f649a56081fd96c8aa37aee3b626c172ef9e82cbf5ee16707d7bd36aee230857c8f775dd47b5f0f0bf4f6a71ffe6148925b562526b79fc422cf9d511b9c6a2551a80436574ab34a08419d13b237a2ce46444a23b567905e322c27c10576ac921bedc2ac1abea1a264447a804a2f7fa41016150a0307902c7981ce23f6d6307006e3e6dfff613596a79564cc3284f8beebc6f3f0e0ceeae47e15cae87e315d728b4e1af70a3d08e4fd275a4da74cdded0f0be5fcb92885c845f5ddff8312779575122af6cbd43bcfc8fc596f1945441d8ffd182086c08911f63d10af13e54515464d544687de3aa50297b10360278f04afa1b2befacaf11c0b1eeb7a5dc46b9ed8ddcfa6ab7ddabad02428d0d8890bd32c4d9f68d52181cc3effb564a15ae5e8af7f5fe5d89bc17f2ab836d3dc4cc2dca2dba5bce8beebcf5deb4eb6eac6fb70aa9f675cf825493dfbb26526dfb959542bd8d51e45de39595423d3ec96faddb6a5c087a20f8819f9c226f2cfba3dd715840204060512c3a42898845df47bbae6d9f1c3af28478ba2db9de3a20d4444fde1b6bfda2fdd64628ef036d60db2922965b84cb719c10da1b37ab906eb9c96df3117adce6799ec77909c31fef8cd8a26c23d2b26e99907e074301ac7d5e7b66c09d58ae4dba5c2e57f3fe744f1b7a5a885e0844fe9224cdd3faeef9070871f764d0ea61d11d7f50899ed5c7f4c5868dd68fbb8adf5ec9379b908087937849a3f4ec1564459746e9990d4cebf7ed9cf15b22e6c2817f3dee9e907d48a2353627244284cd84a7f5dbf3a7802d8add6dc33a43626dfcad4dff94bb4ec69ee77963ddce6d42b68edbd6a34b25a60aca5f13fc94651c8b717b190a6999ac0a47f753b61bc41b6e373f952fe356d2ada4a998d060327672207033685bc97cca2a50ee3bbb37f2dc9c223b73e122174c376e1b7fdb3aae63b1d1901b6d6666666666f6ba9eccbd1c4b66e62aae10b6c2872aa1a7fed636eeb9b5ad6d7c24cd16859453dbc3b1ba40c3cbd9645d2ed7a8a4654d446832ab70544e254de4941c9f9434f9bff02fe630fcc2989c767f855c4fab70fcafe85f67823ef8bb40b9abd0338f0f8e505aa68277efdbbd2a1ce560dc95740bb158ec8bc87d1b3faf0a47b73e43f4ce3577c95b4c2ac6c403561744e83a87ccece28727f2228ef6797fbd68fd7e03127dbdbe28ecb0c35ce74b292573dc7952919f28bae817d2f0ae29453e7c285f97af2f8c89d0cfa5f05dffe1bbce778d5fcb6007ef336ecb602fd7b923d1707e77cdefb2fb3c2924bf51f96d0ac9a2a922abf0021c8bc5625ac4af0cf120144d715d57c4953f8e5904a23c137eb225a072e4f9d47d8ad69df3d143bd750ce8034c5cd06dd4b26d1bb7c97a65bdbdc4d8265f9b5442c6c221c1aa3bad1b63a10c04e24bb6462eda07bd88af1afb7aca8b4e79d1c613c4794288fc64eb5021275ee5ee21511f3122b16fa32c0af1545eaaa656031162495114a3c48edab08947c6a296d99922e2c96f0feaa3a5d78e5ca961bb0763d1949258c7450cef7a9558a15029dea71451f0e0c3b9126cd808de588bbe59795422e9476152b4c2e298641b7f2dc68eb4ac8bec88a74592068edf77d77df42c4acbfa9fcf5238558052472c8a422c922e29ba5c2eeedd7fe64b6c596f2172e7bc317e2ced85f5b146ae7f7508edd602006dd7e8c212f920ae1c8afd44891cfdf101f17b38ab0885baa67c4fe0b9f96a1af8fe07ce233dd4de473f49fbbab108880d96172a685d2daee848cbf89bb7813b842c6146881713c50a75645b972a235030157a522212f350f89ab0235caf5ff8bdbca92028ba6d565280494b726805816e4b5134ec5ce1744d25d2f5e49dab9e950cbf5349343c73af8631e1f0b225cb7df9d40ad05da270acae775f0a7673ad361dbc28da383c99055db94550ec2b2b3af25a23742b0774bf314e223909bfbb71f401bfdd225dfdc4716122508cc341978b348ed9176e62cb7a8663652dd5709196525ca4a51440efd32aa78c5c728a6e9cc4fbc245fa9e114ded8db569b8049d25ea074dd9c50e69b1b2384bd4c731e5153bd4f78cb0827ee124d26a8b34f54c4eadac2f43e07de13aef9cec7edac9a91f0fca1b3d276f09cf497c02fa8e38a41a9662299853d349499164690db2e3c7bbf1ddd2f796d688694b2e4d5a303b9c9c37defb728e84d3b31ff1657c41fb03b47fe3f5029a3fd367fa6822b2ca15a3fcc92ac86388f2ab7ce34571dee7f386c23c3322accdcec0854941fb30295852852d55185385355598538541555814edfab2aaafabfac2aaafacfad2a2f5b5555f53f525555f51f505555f4ef5d594c424755543ac1a66d550ab865bf59544eb6ba9865635acaae1540da56a18554328da50aeacead2aaaead1a26d570a9864c5dc725a667dffbae309b449ee122465e5d46d0be6bcbce64d4132e2eb40fea695807ae41fba016b8b546de5bf4b92869b2aa89a46d1d9c83b17e1cbc68ac62d18b8c3556e41b881b9c68243a1191c83518eba7c13318ab98c187c61a1bba6cac971d83b10a032949dbe6c7b1168db760ac320b2e64ac17f221638d0df90563152ff893fe2063fd821cc858c51f638dfdb88fb1dec785c62a13d292340eaaa1248de331d6221e8f8d55b663acdf711d638de518ab9803c758bfb18a071a6b6cacffcf5865dcf20c27e9c4709127a2a4a23022cfd07efdc41828a3589914909cb26265fd2876d629b13229d5b3cea96572aa671d54cba4153bebcc78db1726695d540763fd3818ab5834d65891b17e03591545fb44632da25556755944c6fa6930563183b1c686c67a591206499e931ceafe0563fd868c551432d6980563fd2835a53ed62fc8584520638dfd18eb7d6c5a42a396a47d4c1c96a47d453dc65a24e33156d963637d6cc75863a28eb18a3946a82f68ac9f8863ac62ec401cd6c761fd8cb54809100e7525491a980462c921319c0494b3459c7a06be81ea19d8663b333b03a55859fff3196b4c848df56092960c2a298a36a8057e411b7c4d309c60d512f55d13b4924357139ca3468cfa245397459bbb2cafafdac9a9a577c565316d35f755c9ad246eaa11b95750aa8252dd414f8e2328a52425695d6787fa9f580794b2816905b5bc2ffdb8cf1beb5687368fe0d208266db48249b40f2af5c1a49ef19610a480326f4b3c5c49b4b768835a0d6a812a6017102e1e687f99b6b50ab6417b1ba910582b5bca2315a2ce1661ba8d926118b0678119cee3441ca29ed28855d65d8d9372ebd06d9422c73a7456196dda27b2058da1695b54525212162a2d70bac36e2d74e8141c5a77cec6d24708b47df48c4f663b9a28dbb94d0ec196ecc65dc0305c180be0bff18aebe071888af2dd355ef91e7ef383795162bf6e5f33f702f9540a6c09dbbb510a37f21dab2d498c16d4a6e414a5468a8d0bd35695169e35b4b4b4f06c4adbd29664f583e0b95c5e17815e908f5ea27a0a42cf9a08b94c0994282d1029f2e416146b9928e45a2bc3dd803c21d7c6c573b9bc6f4d78a80ea6cd6909daa6c06aa9b2e071819e142b8d405caa2c5314bc77ef15f6caa158cb588a77f0d503c7a00d48be2f047af7d1b3a0960981e3084d4179190f4a3c28d1feeaa0fd2bc1a894ae681f84a6ed1d2c2a1e38401bf4e48c77a0fdf631259ef9eeaf9e75cdde9f80e3c68157cbb6298f877085d0bed7af134269370739e260f186f283bae0220bcac741070c39947f630c31c2a07c2034ceb043f9629e34ee50fe4fef69365a0fe5fb68c98285f26141fcb085f25f4480e942f9211263c250beeb890932940f3a81a60ce57f6cd6a4a17caf8a29da507e77851b2acae7e260f186f2b72eb8c882f2e52e0755d23152251848aa9443593e41c221872448bc5d69a2bb9b79f613611b85fdb0ad48263fb2f74aba37188c09c7ef46d86f7389fa0d5bd2524ac90d050d7799999969a2115c68f7b6935ead0d7f6477776fdf0bcf1af1e6447efb28b15a9687453128e6e3f3be8f8ca58d044b92bb68fa7d5fd07a70e8f73da8695bedfbbeef1319fc3eaa22ded0effbc63a45481153de1049422127dc8ebb44bc29d94f1483623ebeeff3be2abeeffbd7331cf4bb98867e6be894a2afe3b69818d46445abf8324a74a9c048d10ee8520d6106950dad515f52354dd1a502534589d0a56afa423f49e3b143f23e566c07817eaf1f3544f621bf58100f629571972f92b4ae26b766210a2775efc6dbb6f9106999c4d18578ba1d40811454b615b1561b5214bf7a1c298a86b3ae92e6efe16b0af9f804f2e30790594f7ffee33e665d38f4e742b32e16f467ad90a2da8ad6296b3565ad5ecf721d877d9b3a3878bdaee393431cd7160e1581c8fd6b1574a073478a62efe3d6aae3be9b18f405991172bd340cf7754569f75441078d3c6ab0d1c69edaeb3b702d0b526dc9abbdc6ed9994eeb1fbcc0a85fac47adcebe1f5f07a783dbc1e7b288f58f3781886fdda2828b729a9d7d46bd8e68d157cf8fe36c1fb5c890427141ace5a44bd3d14b689a7f26da3151eb0b94b24de9b54bedf20057cec52c0f795b4f889dfbd8be0c18be04865133a0ea1073d0b50d03fa15945fa2325f6a53bde63c62e26d15d221e638d8d7df1e277cc0a858a47aa12c18be22b78f12078ef3dbd7b63f5689f00820fb7b7ecfb812de96d4f3e7c95dd8044fbdb762ab0571cacf0a03eaf7d1809483d5281bd7a7f7d8302bbf7aff63dfa1a77d81daade48c5677cdaa2e33a5e3ac62db15a961b7f8d5bbe5a961ccf22ee501fc7b3043dcbee501fe859c63aa5888a0f3aec4ba4ca875f9a2368c6e4903c8e99e5c678c58504993561c054f101a75a0e7b05c546962dea70d1069a1ad028ca2128341c01897e97d21d569168f86dfe8023fa9cf7d00abbf78f32acfb04d87bac3e236c7c7a7d5f630e453534e195b49013ba512b0ea84894068f5691b48f44b99d7cdefb5e095698ba46a1291eb522e91073c0e0a1dc5f31ee84eeddf8e272e83cee469d90e3b6ef0e1bf76ddb5aeeb6e432c21552b92dca4c62cba4ac41d2b656ab7e599c6ca25f5a269b5a26999648f6961c925b52562775522bf56c89d3e2d6c31c3373ac864765191f38022028913b2f58aa60f3b8ad0fa41a038756e90eeb5e40875830d26d56a652c27ee4065bb2973314a9fc8f048275b0255b77b7ed8af81ac4b2894d7c1d07b024122f41f97b4941f78bd4cc27f88af8c27866bc33de9d22c2d4f081f1cc78773c339e19ef8e77e6fbf281f9be48be105dd8099c152a4cad50d93d94bf6150869de0511e6b05e8c644c298802c7daa15ba7d93bdbc713e543c0aeb5e0c5b126e2f0fb6c493122647e04e85f7d06e9c4b24a9f01eaee640854678d1ed4b99bcb6259258a10d4c2465e2a2eb020a6ad98bdf4c86e96e4d591ec80a6f7092bbe4bceee3d2ed765774ddb7675d27c729d95b874564313ace83819feb3eaf1026a5fc812de97cba4e94ddb7adebb84e52eedd8a0d03a3aa29eb0d2f116feb6d526ee26bebe426e526c664739bdcb82ab66ddbb64dca0a647d3decbeb76ddbb6adbfe9108652ca5d6e937293524a181c2833cb52b6944d4829a47c62047213c10b51ca4d8ae085dc44f062934fb20db989e0c5c62ce776967293b20db989e0c5268230fcf1ce9cf1ce2cf79745ac1bd3e77ddf077e2e49635a103411007308b6c434d2e56ab96d43db5db0255c0d549e19e6e4a31c0e54c2467851910aef8c18a7c993a5bd92b4782549dab784a67bf2c083f0250271478a8a603e40373622329928ca6fe95b92a20f4f8807fbbd3322d0566d4c1b530636a6adda9836a61b37604bb80fc7d2b7248792445e7ac1be4fbe986e64a097721f7f806f9b1b6edbb428771c8747e49ec25a9cc60760e8e1c286ca2a4e1e20e40db95eb650790f7ad60f81ecee962dbbbbbb3f6eb96d6bb926c461820c2811d1868c311ee01f828258f325894b370a02139010c366083582d07ae272230825c4240b5c40dcb9182a68820a13d0c9a2cb17f6a11ea1643419d147acd35c4e49c9058aeeeec6fa716315b7713b0f1479115a4e51c3cd195f4c40069b0e700f4018a0524ad95b52b85f21e7241aed8618a2943d27d1ba6fab1d28c34e602c7491e83697bedaf66e46e95973a85636da5dc8093bd16e9463cd218a58db8c6a7721272eda8d547e28373e6ddf2e6811ad483c3989eebc9186c867ca302a17a99c43b76741148f94deb787def4b9eccc5041061c7a06fb76ee618cc2a6cf288355b1c656d284e4bf23d5b87f92d6ff1ea5ff8d57d0c85ff9de6314f04a1f1cbf2b3b22d5f89b748197e358ff034a8c1ad14401dfafdbd478e53b38a2a94ffd14f8046b3c90d4630e9c1564cad42c90c398d4dfb62be9ada7e695e7a9d0c2b6cda8a5ea6189ad2ed616dd98cb667d0bddb6255a89d00d6bf3bc905fd2ca4d760d49f24b543e1613453ebfbbe96b6212e0e1a4384e4ad2f8fb44a9d8921f1f1027ad128b6bb343f254596fb82c26e5a496a8044e50796eaef4610c2c91fc934ea2ddf825795b7aa41d266f8da67d35d9c3ca4a4a2c0956499a27c12b2a2b8845e53d26aca6df11abc7444bb044616c1189b54475c4ea6d619dd558da6b87b452b09c6767dca556ef40bd3b225d6f03b43206bae68a1279088194c4fa814edc8042f4983042acdb7650db11429b16161244d5960d1f7858da66f314070bcb8b2c9a6a4776d01255bb62248d2ba95a0e30282bae6adb486a10e523494e58d596bb0a4189aaaa5a538d81a26ca5e24079ac22e9b644fc4d071da8d8869843b3bc4008648611108c0e809e32e8be18927964554c4e4f90cf7b6d6a00d96ddbcf0c1d406de4d86d5b89c4d451e1e282ba30ae178349bcfb24f2e56edb8672588b863fcbb02571abccccdcd911fb3e66c43e4c8bd867252a6558ad5a4b2d1aa6f35c61e8f23a3b9de70a4397d77dc1c4551aae1b34b8ac7c9de77529f03aafd3d3811d78c29c6ddbb604507976851c38392a6937db456fd020d2afe9b6bdc0c9d423d2433d25d649ae7939ca31c3200611d11f1822b7e1755ec7c4cfb6edd0a2035d1ce8e2baed424fa44c81e702b9eff330c08d481bcfd92437e713e39911e2886f8c58833e319e19d967c46744b30f1019dc4760478884af572cc65a4c3259511105e7c8ed5505d4c4c6c109abaa3a39dc8fab888b483cdd8f27f95202942fbf8fd9937d9c8c7eaf58ece7f27ca0b7ad00ec62342df14b0fc9984908c3fe5dbabc2de480d8085f1b11d913d1872c167bc996a86b82f970af1188bca1cfcf4bb6447b42f1352593c97a88c65a3459f77ddca8c55ae212e20fcce715ba7c409fcff3e9b8cd47fab40fef119f5da2dee1868936cbf0dd36ae7091fe7eb36a9052c2963cbc23d686a2b2c65de8c92865a3dda3a1c2919db4be2b9c84c5ec1af4eb26dadd4e4c7368e53350bc44cb9688cc16e92bc1475019244dd664fb3c8167580a5c03c72b39d4beb16168c408c4689518ed1a95dd43e5d8c9954c9ce4ea606d2c040a5020850653193c4eb0962f3c201fa0e2025b4f71d46083a7b6dd032526a0db45682269248499f282059d126c9551dbb2a041b16474a9b63cb1850cade247f02672886f854539ae9b48962c59f2b968c900909c1b5accf841cd7ab9d27dfb5cca749ddddda321f6ab4c26695ff580f672009c413bf4da956dbb2b930fe5ab4ea15c47e50ae5de2dd989eec5d3d8258dfb5efda011855888c7a73e4c0b8d0834100553fdb6b9b54fe81b4768faa9d0022f7d89613f6f563d88b2cd532228f1a067350602173934dff9fd37c817c8f7c7d7c757e8dbe3cbe31bfbeef8eaf8e6f8067d717c6f7c81bee2f7e7ebf3857d2fc3ecd1eb1b7e5d5ff0fb7dbd6ff7e5ce6ace4d25def34e7a3795988d731bf7a612ab715ee3df54623de7151c9c4a9ce7bc75d754e234ce2a7838953805673c7f4d25be7346c1615389d1386bdd672af119e713fc672a711967332e4e25b67326e3405389c73867fdc6546231ce26388ea9c42538d779d054e230ce24788ea9c474ce58d73195188cf308be632af117e7398f4d259673f6e23ca6127771be7a8fa9c45c9c4570a1a9c45a9cb7b88fa9c4599c43f01f5389e39cad0e642a311667103cc854e20f9ce1fc5389df9c3df03995f88a73d5c7a9c46ece1db8055389ad3873e042a612539d37f0215389ab384ffd82a9c4539ca938065389a3384b71d954e236670d7c682a319bb3d433984a43cfe01a4c250c2e3b91a934e4179c682a597021df602acd8f2f329582fc2f9a4a3f0ee41c4c25a1fb78075389c77bdcc854daf1d88f4ca51cd771245309c7833e9b4a40bf71da54fab9780fa612ec3eff602a857fdd682a81773dc954f2fe1d84a9c4bde327be30289f04d6dc4a061e8134af12f51b9cb80d18381534afe1cc2160e6345ce00f28f3295097f2f4dac46760e2322c710728f10624710690790c4e5f001287e188bf30e62e88b9028c78028a3802c2bc85a61f8088b330c457007315bedc00423c052f2f409747613a0182f80080380a3f1c0a979fe0c34de8e1256c39094b7fa2e502e0e14eb2bc89d299ecf01174f8122c1781931e80b94b84f4dadc25cac10257de494ace7b942839b741cf6c507a5ea37656a3563baf2000673d0108c0794b84731e114438ab60c9398d254bce784638a7608411ce286072bec384c959abc9198d264dce2770723ec38993b3190238972100019cc97872b6f3e4c9398b84f31824907036410967314a28e15cc78473094c30e14c8213ce619c70c2190bca990e1428e711a07006030514ce730670fe620003387b4180b31c0210e07c15e5dc459428671114e0cc45010a70de2285b31629a4700e8101ce5918c000672b15ce715450e10c8215ce58acb0c2190e0be70fb0c0c2d9030738bf39c001ce552d9caf68a18573071070768300049c399080b3150948c079030a3853294001e72917ce55b8e0c2998a17ce53bcf0c2590a18ce51c000c359037317c902ce6d16b080b3d4dc4512c3994d0c313c03067c88010cb8ac01c7a0010df8050ef8100738e04264b80532c8f07186cf1966f8eb83d47a2052fe438a94fb9872a12953dee301e7f180073c46c377d040c37540e03920008107d5701c35d4f01b540e4485ca451bfe63830df7b9e1b01b6ef8abcac32a55ee8ac0c10844e09f957b56ac2091c0b9d951096c54020f95cc2ab378a3e40198f422ccda97cc007c8429c299cc256f3247b893c9e402984dfe643a390953002f613eb90993849f304b389469c25198277c0013ca09305178943980176012e029cc2837c02cc05598297c856980b33055f801e60ab7c0acc0af4c0abc85c9c211300ff004cc16ae808980bb3013f017a6020ec374e10b982f3c8609c3193017f006cc18ee80c980cb301bf019a6035ea70c973267f89459ff8029e534cc2987c07cc06b98349cca84c06d9835fc8649e555a60d8fc0bce15666954b6046e039cc2b479a163827cd1cce5826d25987c949e71d2663392b4dd6e19c65f20e671e262b9db54cce725e9accc379cb642de71e262f9d7d98bce5cc65720fe71f26fb70066232977310937f38334d06e2dc657210672f9399ce424cee72fe32d9cb19cc6421ce434cfe722662329873d3e421ce612613712e6272d3d988c961ce622617711e33d988f31193c59c91983ce6ec34f9883399c9489c9398ec7456623299f3129393383331598973139397383f4d66e20c35b9897399c94fe70b4c863a9b995ce67c66f205ce68269b396360f299b31393d19ca32663e09c66b213e70c4c8e3aaf999ce6139838cc18148da41f4223e935939f3800a6b45aa2fed19421ccade130974e6032ddbae002493792be046605adcc0ac46a46202e447e62ac1f8dc0ac3caacc3a6f9875c886593998f5831a665d2a08ccba6f689875b378c0ac2b67caac1b869459d74e9d75efcc30ebea916156c6e28059794b0366e52e0c9895c3c4302b9359c0ac5c06865939cd0bb3721b1766652a05ccca6f12302b67818059594e0bb37218079895edb0302bdf596156d6a3c2ac8dc500b3f6961466ed2e0598b5c34499b5c91060d62e3380593b0d0ab3761b28b336d509b3f61b1366ed2c4a98b5e590306b87f164d6b6238059fb8e93595b4f9359251626b3ca2d23cc2abb2c995586116156492600b3ca32b559651a3aab6ca364564905db1096fe13c25108ef7f6b84c3fbe21a490084571808af3f407b044292d71c495e77f0d8a32446af3f8c5e83cc3d32fae075c807af180cedd1071ebc1279f05a84833df280f68a84f64afb608f68b3d71066af00a07b347383e475af70b24748b038f2ba7150d8a3235c1879dd2e56d823236074f0ba745ed8a30ec4e0e075c798618f3838a3e875d1a0b24745691479dd3c13d8a3226c6cf0ba7bb0ecd10659885e59cb963d22fa81c82b07d1658f8880d1e0958908b3471a8cc9e0959120b347193031f4ca4f65f668088dec959d48b347b23518bc329b367b84c11417bc7215547b74819b21af7cc59b3d1a828590578e93c51e09e1c28257ee42ce1e5900c6f8ca74c2d8a3518cf9ca63d8d9a379c65f198d3b7bf43482bc721ed6b34741d800f2ca7bb0ec11902c3f5e5bcb963dfaf1838fd70ea2cb1ef90023f4da4484d923a1313d5e1b09327bd483091eaffd54668f78a089bdb61369f628b666c76bb369b3473ba6d0f1da5550ed910e37395efb8a377b94038ba0d78e93c51e057181e3b5bb90b34738c0b8f1da74c2d8a31b6200bdf61876f608e80cf1b5d1b8b347621a3faf9da7f5ecd10f1b3eafbd07cb1ef96481bd4a2d5bf608f6c3eb5506d1658f5e60c2574944983d0ac7b85e251264f6c8c504f82a9fcaec1188e67b954ea4d9a36f8df72ad9b4d9236f8aee555641b547dd5bba91571c71586caf324e167bb4bdb9a0f5a32d5f6517b47e47f256ce1918ab1881739ab1c6aa9ca3c6fa1bce4e8c5566c31903632da2724633560f6a389f19eb4e41e06c66ac5b45c3f902635dab079ccb8c75afa69ca1c6ba5852ce4f63ddac7a6e62acab35c39989b1ee960ce725c6ca490e382b31565e6ac03989b1321303ce64c6ca4d319c9dc6ca4e0b382331568682e17cc45839ea85f398b1b2940b673163e529059c8d182b5725e05cc458d90a01e73063e5ab16ce4d6365ac039c89182b67b1701e62acacb5c219cc58794b85f397b1769201ce428cb59752387b196b3315e0dc65acdd14e5cc34d67622c03988b136d400ce408cb5a35038ff30d6968272e632d69e3ae1ecc358bbca84730f636dab12ce5bc6da57249c97c6da584fce5ac6da590238f330d6d67272ce32d6de6a72561aab4c6272de61ac726984b30e63954c4bce58c62a9b4438278d553a05e048639550b5e7305619456f81b14a2925bf32563905805760acb28a1e9d02f59bc0b84b84c3dc2592c0dc25b21281b94b54e586b94b64c3dc25a25203046878c0142933c8e0800630200628ca5f000c5294ff820b5594af002bca4f0002b028bf8503b0c05b94bf820a4b946f0026ca4fa10051a0289f000390a27c14a05451fe0956946f420958944fc2132dca17406f51be9324ca6fb244f94c4668a2fc252240517e00a228bf2645f95409008e66083f301076e44812e4070fca37c260c8a4fc0f8a10794043c201e5d30010c207943fbbc20d15e5238983c51bca3fd2051746e8802187f23b18438c30289f0334ceb043f94579d2b843f94576cfb2b17a287f032d59b0503e51103f6ca17c224480e942f91a2031260ce567f0c40419ca1f72024d19ca97b1599386f231a8628a36947fc1156ea8287f481c2cde50be902eb8c882f22da003861cca1fc710230cca9f689c6187f29f278d3b941f84f7301bac87f28168c98285f27f04f1c316caf74104982e942f84c4983094dfe389093294cfc3093465283fc6664d1acadf51c5146d285fc7156ea8283f94efca237e7b5c535cc680013ac3c806d2e9e0035222836ece90dc926db0a909a4756e0541b63580c85d39dbd7e678b76d943a6895fc03b427c70da5b033c205eac04988fc96bbd2b5151b0344d3b7c59268f8c326f0210b0f9c51db077511790aea75c1a2a3430accf08104b5ca395137553c657949e2caa9c652503e27c51a6d94061995f2bd5f63513dfb1e14825fd71fa32db929320eaa6523e734b9255ac6efc610b9a4e6fbe8d91917860be3b306edfb98e183c7676b8d8cd0becf95a4714e584e59b4efe32469484e6ba2ce0491859da7246a7d1fa89e7114b4ef132569485eb0ec90a76a0d31ce88a0d6f791ea196b80f67da6246d32a971b3c69d289660a2d6f7a9ea19b7a14b3526a9673eb4ef1366679b1d3b6268dfa7698d3aa07d1f2e4ddbb4be24f97049b40f9b92b4d543278e1a5ea0bca0a1a6d68755f58ca5681f66256948525a78f1858a2534b0d6a8f561573d6336b40fc392b4b5b3670d9a28ba40030d12b53e2cab670c05edc3b4fa303c3dfbb6366d286740fbb0334ddba6a69a604e2f2c4933b2450b18596bb26c20abd67f65f58cd7d0fe4b4bd290ce6cf1401b4598d14614afad9eb11ada8725495aed0463a4c8401d2b7e38a3d6872df58c9fa07d18931ab40ffbf292b3b3adcbd6e53587f65f576b3444fb2f384ddb9a5e5bd0fe6b4ad236a82ada0b023677dad8f2658c134fb5fe6ba9679c01da7f31499a5403851b2db608810f716afd5753cf5e4e92b62598c3c417619600438d12b5fe0baa671c15a5e625d5b397143dd3b333a9478f195ae1d61acd69da9614d6a1fdd049d290ce9499c28b9caa3c49d4a9f543a89eb113b41f46491a8d8d2c5940700599272e50eb87523d630cd0e63127cb0ab688e24b073450eb87553d6334b41f5af5ac1f6ed134afd60fc3ec4cca91c325fc1236add1a47dd796a4492cac3009cb352569484e308165ea8734b4988203b5beabaa677c86f65d56928644851caa35aa8650419ba85adf75d5333643fb2e2c495b371e40f3c515747e88424eadefcaea195f80f65d5a3debbbf0f4eca37d579b9d492a2a9714b4ef3ae352e3925aa3d3be4b4cd364956b09da0791c47ce112c68bab33546cf58ccbd03d23290bd616503d3479a9319317b4effad23457ad0fcad9992443069c43fb201c700bf06a8d82d03e282569120a0a9c824a92b465a34c1a3b623e200604666a7d70a967fc44fb2093a42121430f99103cb1822fa66a7db0a967dc04ed834e92d6021a78d200024a0360c0d4fa2054cf9809da07a37ad607d5f42ca4fd4fcfcea4c4b28619787ab65b6b0484f6bf2b49934b72094b2e657169da579b2d8dd1fee724692ee0e9016b045a7638a3aad6bc04ed7f519286f4031830572b9833078e10b5fe27d5335682f6bf2949d3008e17659480082fb8d8aaf5bfaa9e7112b4ff59f5bf2d7a066e495a67657d4959f48ca7466a8d765c6d37495a5b397970ba2d7ab6576ba423abdb5af298fade974e4ad25a4aaa9b92ea383cdcd61ae5a0fd2e49d22600c5192f3f889162034ab57eb7d4332643fb1d93a47979ce7c00ce1a2e62d8a8f5bba69eb193a42d176b5420a60a4c1c2db8a83112b4df45a9a1fd4e4dcf3cdae7ae24ad9d9cb0382749db3a4d28b843674c1269f0d4f888284943eac14d1972f664894203766a7d4eaa673c86f6b929495b14f490444619ad32563ed4fa5c55cfd84a891910ed736176d6581a8b981953d3c4a6350ada92b45eea252ea997b825da483e34d10689219aa48ec8aa351b41fbdb55cff68acd1a1eec3041ed90448d8bd00a83a7672edadfdaec8cb3d8a4d628e4ab2b35b4392b6b73925a922602171b487a020b8a3959b50e437b7bd637664c86cc1cda2e7e5f4af19b49078cb84a634c134a7a6a7db9d4336692b42222a6c2f880070acb13b5be6cea191341fbd249d2a2b0b9820d95099a8093a7d697503de321685f46a9e9d98cb7f0963568bfcd683c5bccc494b5553d5bab2dae60b315568e18daefa6e6d23417e4101feb4b739fb7f8b30f2a4b41fb3c256937a44146134588d941cb12b56630b4cf57593d5b0ad23e9f69da57ebb31aa6dc24694a56d819b85b41cafca5673fb4cf4c5e7ca18d020f58b0d1c66a4c1a1d6a2d04edd7206956405006176ddc90c0cb17ec85761c203600c4d41658b839a2d634b1ea528535da1b8430a3068e17387940d08576123f7c3122a98c375c98690b3673b04071a5c59b246a1d04ed17f58f00d511c1108071442024c4ba4d513ed01162d78558b7262ea91b7f9c3632446e893484a0db376e2949d2bedad7850a1c545e884c7697f2cb2c03ba2d1717a05d2761538855862156a90251b2010b23d6264304cac3713c7ca1dc837a2652ee4264dc633eb8ef0e547efba0a0f2af9e7d406507b2a041e5837a36844a395bba6d5c1bf1860ee20d2c2218b11342e49c2a084bd5a58a72dc4568da56e30e65eb50a89e6d87d5d111eb6e89a2938884584f93283785c1181c90106b3c00fa61ebace8619359525e5e9e73eac090517c2f1906135b88556d06951b9c6e027d71bd6406c4307c7549625dacf18d5817abea8e0c81e8c4124b9434b921e5d7cd6a8db8bc5f506eacdcdc9688b388bbe217e3a65e5f9ae338ae1f725362999942ec683d5d29c4ba5994b95162b5cc065ea27edf2a0931516c55785b7446a00026a60338b8060991506c1fb3b1bfcae379df52073b0f5fed3b03f15e41d81108d5fd5ba3f0fc1d6bf4baf19f833876e03d35ef9fa4f55b72b346fae094548ba47f634a2ed648ff6786534b0425a568794fc25e2fa09b837a5508ddb1b49fef83ac91cff71bacd1ebfb229b24040f9b5b7bcd27d8c3f9f4732071ca2bbe1a0cf6be3797bedacf8fd20ebca7f69d87af06fabc5fe1dbe5bd7fa6b492437d1fd89453fd70ca37bb465c233897c49af7276fe9ab0d15ed945700a1bca30bc692485cf731852ba4c651f628c32833080c0227e1246cc446fc017fc01eb0074c631acf78c64818091fe1236c848d7007dc0173c01c70111771112ec21bf0064cc4444c8489b006ac0167c019f0100fb18c658c0163c017f0053c8487b01016c216b0053cf2c893279fcf413808036120fc837fb00ff6c1422cc43db807f3601e1ce318efe01dac8375700ecec1411cc4381807dfe01b0cc4402cb2c83ffcc33eecc33086f18b5f1c72c82e7631c8207ffcb1c71e77dc31c71c6fbc3118948d2670667eecbfec45f7e04ade648d6a80c0f92adc85357ac0f932bc86e3704e3a2f9d99ce4d6bd400a73562c039ea2cb546309ccf536bf4c2f95c75b63a5f9db1ce5967adf3d63be9bdf4667a37bd9dde50efa8b7d47bea5df5b65aa313de58efacb7d67beb32e972e992e9b2e9d2e912ea326a8d0270be945aa3daf9726a8de859c9f9d26a8d0070bebc5aa3a3f399999999797646723e723672eee0ccc1b9e85ce4bcc199e84ce4acc13983f3d05976c6e07cc179c859c8d982f3789ee79f839c819c7f9c7d9c85ce3dce3cceb1f38eb38e738e73d019c7f9c619e82c9e7fce3e67d8f9750ecfcccccc0cc554f2287394cf8b640293a912254aae44c97ba664ac4814070958d9ddad0c457777b7f215ddca5874772b6fd1ddddddda57265499e464ab9ca25ba5158ca178fd09e13507dd6fdd41f707dd207487d0c5802e115d2474697443a04b5bda2e1674678b6491ec91a543d7c88e41b783ed6039580eb6688bb6c816d90d7683255aa225b2445683d560335827e8aea1cb86ee147465eb862e067bc15eb04376c80a593a742dd831e88e3beedcb9df6f900db24016c8fed81feb637dacd00a6d8fedb13c96c7c636b63b76c7ea581d9b63736cd0062d8ec5b137f6c6022dd08a2beecffeaccffa2c18bab07ded6bc30dd7b54ed00517dc6fbf7543f70abaddc6a1cb2d370186e27ba03d0ae17b1e7b04c2f7738f927c3fb44746df73b0471f7cffc11e79f03ddd23daf74ef668f63d0a7b84e4fb15f6e8c8f72fec9191ef67d8a30ebea7b2471c7c3f813d2afa16f96ef025fa12f96af0cde03bf4957d31f85ef03d67b14743be42be167cc79ec9a8644bd634c2ac64cc8c00000000001000a315002030140a0644e28060304b5369f60114000e8b925e724894c8b33446619832c6106000000000000000109a991905014058c444225fb40741c70982d374eda13f7608ff91b132fe186a9d7fbda01f9d1afe4d1dbf4c45f853b3d0461931da8294d449e342e9dd87729e38b0c7371cea83b8654d3b33f00e6c4f724a01721a47ec7dff2dc7547dc8bc12598f8481ae06a4472070fd989e4098252aba3c3473225ba3221e6bcbd7af424b53e19fa1e2f7d0017ea672aa0f20bdfc2365550477e4570a5bea972e070a0a97e0767944fed94bf3f78c8fa5ecaaadfc562a8d8e067b2832ad5559e744e7a5c5306e92087a15216038f5002a3bedcabff9726ab445876883f4984866b1d678a83b828cf42688bd61c2e0fb1432d827c60872ca0ac335bcf699e85991d52e652db72885cc493d6d0a247fbbdc81f8f3dd0065783e6c4b1aa8f453c95a9a6e70bf20923e9fcd0862d49ccbd8ead628f0db738b0766fc0e00635c4318d75c5f720f215c6ad6e8e9b2b50763ef86ba65e80f26261b20f62541f301e47db76ac3f450d9e8a6bcb494976879ddc8c559a76891e2755354a7c52a763da41f7636524a4e3022d154c6d5322d4339ea54a94f617dd98796711f41eed957796f53d672a7f4e6647e6fb7d4b2d6b730fdcf5e03e18176cba3f7120dab7b58c21a36103f904585a0011066a33e62536e8bc5cb4810e438a7b4cc2f2fad7a1fd1046459c99fdc3c8785688012aa5afb7c100d4b01feb4f2214ae038d7fae718eb816de0b81e5d4b32533703327cd76cd7227a8d109b75d59fe2074d77074bc660a2b543c67ee10dde68656d0bdcf354bb06e4139d5d9c3f861e2d383a6466b8a86f86856f6e205be7b46544447daf5f2595349e670bc33150a479e013fb6b5b13fffcccbda0b840a085becba42e2b593712317abec0b523b1aa63e20de5d33522d2431317c247bc4da3765b3d8ed9be8ccd99b168a149e4455873837c4a4874ccbddd9694e6df3f65d3ff5bfd73a3991656dfd57b7bc6d8c05d39ce4c090f80ebbdb8a6035b13dcca86863ab025c004202a08888614c49ee4d0f91fe57f154a5f9121198bf0ff47285b2fc83491ba178c5f560ee6b6bf5a2ea88b9844e62d1dbb51d9669244d29b52326cfc37b28a49c81e24ff3fe5182e6f39e7958cd9dcc728962d72a9b3179445432760b4513473cef096b321a21a48a9d49fd8a818c5b945510a759494a0e0b3fe80b3862f969b1426a07a21ba78612bcf67aeee1f3e69426fc2f9b2ec8c6fa19356b391f1419712222737726633f9f86a209e00b293fc30244115efa4dbb109b4db7b98c3379bdbc698794f8054e0c93cba863e4ab880fe5d19e3d0d9570160dc34586bd5e6a0427300ed52da59ed8ee054796084576c1e86839cdc153c40e7a589c8aeac64fd2536d7127aeebc6e76f1ac654073d834a1adef14d0782bdd469249299366ae332ac76449853d7c6a20552fa9e0ae3bff6fa3ab2901ea46089a0e936def8cfb7a5a93ff5c9dcf7fcb8c845362b426bca8b735687cba30d4711a257e3b2548e9136e49f2dbf276aa3204eb4c9ee87de6b6cf8499bb2572b63dfdb556e0853d69b86a7f2d41329fd1057aa5410713a61298111b27ba542e97895afb6440f3fd506a2a79e9c2582af72ea36b18ced2eabaaa7b31c7391282e45c4fcc4e91a3d5adba0d661b361e03373fb7807e20339edcd2e35bd590e279a67d00cc7b57e887616119e77df16f3cc79268782ee48da586178719a2987263b366dab11a0161eb1a87b8afa5cbb86a6f6772eb55c3ea7a3a65e347c1b446b1799628146861a2faef880333d10ac711a21a86784ea958d0beaa2a72f2d36d2a9f88205f7500a025d69202a10442b89df16d79ba7b363cfd71af6f50475309601137b0f63ee05efd8e05628bebc97b27027c44d2a1fa19ae774ca9908f0b45df21c16651e27d855af2bf53d873a36bae371cb429c8167caaaa8635aef9300b84f70d335694c0b474877a12fdcfc1c34f8e9d3704702af5dd4685b1c4c278f39d4f5c4354d2c83e841f4e08c91e2332bdaf764eb30f449234a0b739496ccc1c4ac243e86f5879b2ac942060b02aa291a243e9bdba35ef820c3ed97e967953229dd00161d24bdf5310b4695ac80e520323a51706663cfa0099c657ad3ee3658c84474e6a33205e656999fb61afdc1abd90b3a53f422920f5548db76b7a128515fce82f8b37e6410b2085a290ef5a768cc58049e550b35e9ae5611b68852d73f7cb4981bb13ccd7316746d104747e060f1837f9b744bae958781d06de6d9b1ccc74e881fbe3e9b185db4c660d3364e7799a1d4720db9723c5a36a9f413c3d79c85ef55469c54889dac295589ed7baf9425a8c2e21d03074a1f9c90d30582d255b0e5578687807d8b6dfd836bdc15a71e0c338c3874c1489bf8b5c48542d2e2d352b7f266cf0eaf795a21c97664f45292a76eec6a4450130ce72ba82234935e1da2efd5c0c1b51371596313968dbd22985ec228008718371074675ceff12d9cb1df7299668c9cbc3685a5ac9e22d21e237e1a81f77c1d9d842e32799c83e661055b73c7424e780f19df417c026504982f3968dd99c35c3dd99b30982270c163d165d9197faa92bd43f3749624cae48b373f01ebe647d2b3a0caec00f2398b3c988e345031195873761eece001e3474716808886ad930bc86a1791588db3d7c0ceea0ff62032f3d53da3511112fdb3fb898d80c7af80f4ee30f95b66d484bde82c22375d0fedb19801644e5fcb9d76fc751dae9c5585dcb8666a37b3a5f0019c7a7af4038540e0144d035b134a975c98c93729f55ce83892df84dea84edcc0fc42777388c9a026bf54b795ff209e2b82d11e6157ea9a3b06ea434288b206bf61a48dd60b21361657112ec07fe207bd50dcaf4aeb34754edb3b99d38c0ed7c10914c73a5f0d20c4ba3e3ba1ee7ad6d1b8332eb1db1fd701d63755e893987a99f644739338fcea068aed2cf1dde0e084c4d01c5f6be695860c9c915d078a90516d6d1ffa87e433bc74054762dadaa031bc68c5b2b751deb003892ca66b2e2edafaec900d7f1f330af092465314ec72da7a437e4e0a17c5319e0caf477f8b27c942341d46968b86c1808d037970a49b1ddcf2de9f2df064341fe94bfe1e7d44264d1e2816371e94eb254cf6301e3bba4c38a4077488f2d82de501d5b04bba03abab21fbef884352ae103ded12987f00563b4c3210ff29bdee8063e12933794c18bcd58a71236a29d9c79881f28621b1ef8103fe9856ff023117dc214de788e3a92a131eaa99986d88562b661910dd94b5ffc821e15e807cee08967b8a3191ae1964e398c6f10a31d8a5998bbe4c56ee853817ac10c5e7cc61b95b0016ff48c83f88231dea18807f9496f7c071f89c81b41a2953d285a6b14b9e4d7754e17f3a1c944a54451a45611fbb40889bd88146374438b469b751c5de91e2d312039b29084a4482577a4a86b9264f8b770502128c59c564a5ccb12aadc12e977e97680697d89c903c924cacd5408698aa63531639b90fc4d6423a7ab45a7c56b2707c79300d95319d4a7480682550fd4a521d4fa33948b224a8c2baa081a158d1ec5d748a1f74951c35237ea84a9e5fed73c642d9399d5f60e5be969b71c7760e74d7fe0309df8309f8a1f9f4cf886743c70b3b411740f58c468c0666125761ff088f180ed7227ea3d6091e381fbe242e83659b53fc8aa20e2618c885a484a9d92589309cf7582bea190f89a283e07d534bd953c8e41096bf8a9401528cc47c5b01833ea5f1fe9920884cd5039db9cdc6a466adac9cd6ca41e0e7826476a73c9dd78a45985ef441fa9a5496e2448fa8404634442693e86e048160e12689424f41bbabd26b9e8a34680929a0d0073a684482021cc4af2f09c20b224d19d02854b9ec6f743fa925f2744592226b53289cd0eae812681602355d6249011b80b6e72cb4d1311278743b6b08a4e6e913b59a0276e6e810a7d720de6371c8072c7a02cc46b588da13ce7a28f499477bee525308a2f2ebfdea3dc01703e95a4d4660158540a8342eb0ea6b0231e65645336491e65e129599c478d85ca739401e9472aeea53ea85132a88a73146ed85a857b1aa1e76025893df7899b95eff08e8df134e5caa7a83ed7e09522775179fd0a2d5e9431c2b2805e94a162c9772f6a00b23c368585bcb27cd52c84bc6e32fd2c99bff371873d4ed38e00515768e1a7a1c2ce86ad678781411ed2c94184618863c5635f182492ee2442b64edc038ad79a635d233e76bdf771c7a8c5c51a21875689fc3456e4ccf89167343446392c3940bad11a3627937c9e7c728c32969d944dee54ce725619ca0acb2b932c63f9b7dc67c9659cdf97a13cc0bc7216f3ce72cc7ba6ccfc393933e63acdbe6195c1312cc9355942676fd9f733ceddd8976f13759eccdf396414cfb9a13ddf66f83c33ede7b1a99a676e820e1fdc34875ce8235343b3cc123db351749e3da34dae8da659413aca42a43dc7934e79521a66e9d29b094ca3bc35ddb2b969cc97a7617e3e3db90ff56653d42b53a5bedc981a728fea2bd354d3cc58bdb2697596fdab5d8eb066d9cd3acc86d636775be7796f0d67a5eb95c1aeb1dcbdeeb3f435ce57b0615e84bdb926f666b3d83b53c8be5c241b73beec9b51669b4dbab6d7401b5d2f6dfcde69fba3ac6d4fb9b67c7eb6c18ec59ad1759b7de36de66f709f27c3dda13d7b90006dccfdb903dc69ad615b37e783ddde72b284697a0b20090da9ca8abae351e834893c5e828137ed09502711a96988ca32c2ac9456ad46992ba8ee450e844129634b53d9c1ec6c784cb3a2aea9c86d6df85b20408e5ea1832ed9ed33bc03a1ded8ca673ffba9d1013b84c15048211174085d4bdc77e0e2b9f971548fb415289523960d0933dca6491a72c20d527fb18e782c94c67bf93755e31181100cae972682e6331a310c5c2c8fc48d47143914b4589c899b4f24423870bd3012db4f288460f07ac9dc6eeafe03324c0939f5c65437136df0bd7c4131d4035eca583f31b486c9493077137d0bc28ca88fe32a1069a3400767eb17d0a3f02387aa95d7a3a81b672a23d5a1d82627ab2ad34e0116c75424a157f107ce542fa849617fced42aa647c15c4ed44da853a13e8eab40a48d021d9cad5f408fc28f1caa565e8fa26e9ca98c548762fb925f912edbadcc61deaa60d417d73666392aed390da0ce20444196fdc036ca0b1b61164f0dd5b2351a43bb401b912453b3cd292035832104b5f40bd6681eec08597a32ac46d881071911390a316776319712a599a507976e602c4cdb6b8b19b4cc34a96b73fc35d3d8b2fb9fd615dafe3cfe20245001b8034dc984add3730ba6356ce43c18ebf467b1b70ae474b527dcb92ee478f65f2b4dc461fab79865e43c1f56198cc1e46f31bb08f93f59311493c19f457691717ebec62016c31f8bd822e3fb70bd911846ff85cb2b30d6c8243644ec0ac7f8c6a77bf1d6549fbefa1b24808f4d08244ed7221e4a542db9da724aa95e0b0b5ff1d4c8d52f1ba5c4cd4f5b76f296e33c517a933fb60bb9fb7ba394b8f06d97455eaebc980e98bcc65523110580107f3731f8514c99c0b8d13a93bc58a83e39bd9811bc9b60bc514d91b878e83e9fbcd8289c98628c11bd935c7c684f9db8f8689c4d62cc289d905e4c48bf9f5cfc28a64c60dcb4cf21bf62224d985e2149db9fdc7a38524ae06c6fc940de2d5e4b965ec80cda4530dfaaa2485c337593475e60144e4c31c688de492e3eb4a74e5c7c34ce263166944e482f26a4df4f2e7e145326306edae7905f3191264caf90a4ed4f6e3d1c292570b6b76420ef16af254b2f6406ed22986f555124ae99bac9232f504635c33d78aee5ff779e57c6ffa4894236a1ac6e062fe7e89122fb9573bedf3d712f26df1a3333b813f3b96327a954b90f0dac4209b805cdae5689763f1a5c8d12712f1a5aad12e70634b08a12e25e34b5da25de8d68623525d64d686af54a801bd060554aacbbd0f4ea9740370934dd5951b7347d6ad2590432a3585f3204bc918945be0cb197b316827d5380f678c94fe2725b9b0648002324d62d5beee59631f6c24a83d46b9e547b754ca74e6e3bdf5db1e22f21d8552ff68fff9cfac5a2bcbdb28af79e5acffb5fc65ca8b054f343c1fbe9baba18e3e5dbc1dc0be59bab4d209624dd79e5cb1a3f06449637d5577943194df54bbe4ca422a3fdb9474d2aa3375ec760f7b876ed22499b5f76db1b2c27ad98b8ba9a8f452d2f20794192330ac877456f0893123fb99e8e760c01c8f6b572b2ff6849ed7e6d61b21d31e3c899362afaba92325033c43e13d389584e1d24397dd527f1ddb69b862f82db204f047d03cd83a05b836d8f1580d986de4773b37146eba0f581f322cf0152b1a8c5dc61b6e3b1e18be036c81341df4073b13847f5a1a514b1251093c0bc089742f6597474ed833163978c6ab037995f386c7983b84c72462317d09e8cced03d697f20bc899340f01dc2e1b44eda1f80afc49ca025a3daec256637c65b9e782e835cd1e865b427a33374e289ac974f6d94896b062fc6f745e76b2bb7ae51ce5db91da558568e46424da25abc216bd65ce47bd949a0ccadfb39778aa92aaf4b6dad224c5af09ae9c14cab7acbd3de3766c275628d608fd5dc92b65cc2b07f80ae1f45578e10e040b56adecb81888b7021016029ce55fefce7d9892a2e5ec9b46c61465c0bfb8ee77f0c7b7758847f2caf3504d24c6742881a3f00500481217f0f70dd00095160aaf3c728099ed42b5f7047656d58ae4aa72450e5d0f0798dc8659f164cf162945a66467bad1556dd91114aecaec48fc86491d9d8286ac17bf3e9f6c2c77e35f0b19cf2b24c5329457c3aeab80d92ecf5821122f9b6fbde027fa3d2a6b0722d40b16f34dc59a9860cd8fcc1ec167b93932bc2fc327609f7def807efdcd6000bc4a00ca4a68b8a4641b64c79a28ad7481d94562e2d8d97258aa846f0b04a37aba2dc8056598149dafd90054789fdfb7847431a2572fa46bcea6c807f0721fd3290b9a968d03b7c13069c06b557f9b113463b64ae71125266c8d261e9de0e88e4b3caf9effa8849308ead8ed18dbd58a1cdc7c14b36c4ba346ad28cbc7831893d5606f6a86065132cf9f0c907876524efd546e72b509fbf3981b8a32a2c6badfb2eeeb88de4cf3ad30bd7b358796f5101d979f295564f0d96a0c8f3dfe6ca7c557993dcbe5ba3fdfa5652502e1eefa2563b52805743ce4a037b96e85ed72748468afa09b91cdb5c0e49a9ad9312654c6e99bb6bea36a1ec5fd7257e0b2eba823565da604fdc4598eb36c793a84ef90d70795ed8570222e73c76a982fa07741552082cf991799d64bbe22e9e86b7d95bde94c340b3b53a2a35f838d9b1c0317508f774e92011eeec878c917d3593b1f815f80270fed84467cca3282627746ccc19b661860967f32c732614fb8ad8eecf9039f7f5cd78cdc0e40e1eebceb91b28bee58e00787f18046a82538a6fa04856104effaefb9f6690cdf732b157fbd569da90295625b996308479e5223e5d85444825250ecf2bf7ea339a4013d0b973fe4acd8f139b03da03f5d9329dbbcbe9c0ed7c34821ec9c260ab84e5092d4c35317e20c3a8bd48ead328cad07688622614e1f8433d4a8d44553d89cded9b83b8ff9b514cb768ccb7801d2e3612271a2d0ebc94872730c7e524a953419f73ba8cc32ee537a31f8ba8ae91c1c8ad492b336b2e1836f048f30f21046a118b852b4623bd66d8ee6deb41951d2dcb26cf1454e0a4628c455c0d2d7465cc054240c8b407f3ff6ff8cc7f586943a4b129c3e1b6fefa8a7d6a314e5a08bcc819ae1f2ca512dcaf2c84e615d92f6249e59b6e5cd92c0b43df6e6a246819f6ce22e12e2a34566a91ee354b4c308eba042c2d0f60eb2e69308c512658efb2b046cf1c4f64ec755f0129b51fe8fda0285f78615adae8d2125a7405610efaa0cdc0b406fab60127411624a91aa35bde572077e707b874f96ccd7d09a5df9466cdb4c310d30481c4ef38e79fb5fc36dd0b2da3f02f2db1f0005155afed749d251383f86c1a868a3be1dc00b8226751f7e3e37bfe20ebe9d37ddea03a5b6315140e06791f281a9cccfbb25b9b976b351736d3dd8f4c39652d97adae5b208b9e79981af5c789dfb82924b9f3f12590427530eb79d7b62eeec70bdf0e3a9ea56e8f3e5782fafa720b110b7d9c3bfab04e19249e311557b3fbba2a186d391b1d18bd622ba45193f8057c6fb55b760de347aa3921e8647600757c9ba25f22e02f4997f9009a4e5ce1257e42022aa6c8f728941f0e8e8e1b4fb06a942e1e42d7a42851bcfaf4e4af88c2590a45d103c9b28e667c39c113f778d48a75717530adbe74111d4f88a24cf8fa5e62f873e48208faf08d391f98dea6297b0242c57ce928b3856168400e0839cd11fb2dd5ab494ace4c76d7ad0ef20c3dbd7a6b3f889113ec259c3af237e089add3100d6e0fd0b00e6a8865d666ea72d0b86584e318edfc591a58e2da81cdac44ba54e2f31afa83106d1dee4bd8ed88fe8b75f16106490e613efecfd5bae756deaf1d6a973ab562a2aa5ea29e6a66f50ef449426784756381cc5877d1011c81a39f52ba70cd2d440c97d3e0964b311ca704376c3de46a2d24d30faf2a5f9cb0add4606528050dc79d55555958f620b0d3d18454700b0d68973c0fc6fa986c7241d8f9c864c0d954d3e43a5447233cd1afd22edf54936ace26a45f299ca69a0899b5d002ff700156da27677e8a5681d2f25413d2a48dca954df4a19d6112f8dcf0f7a2f9f7b5fc962e13039ffff926ceca96816f88aa1e983a2b1cfbe689d4a61cc9f7f8f4af532c510d13a8269c3ae32023834b82fe24527b4c3a6aff42e02fe085ac913b7a859105f4c966cc434983087ad98627edb67ef2c19e6a80d40aa8096a6591a7fd0e8941d0a7cbdd21710421b23843cd4c67a4b123c72190579276d98e708c4c4aabcc817e87c2bfe2e8279855f11f5679513dda403e34c128b02aecf43b779f140879ad0c06235d9dfec297a6512a0fab56dc698b0747a53ede6341c34f6b6c4d12b8b6dcc4c9ff73fe0684c07b1086160ad582ba060197b8a8a7035331ed6cd894b6b8fdc2a0c4d34a4a8c06e0b4c3ad815b4b54ac42c158637f8501b9b0082e3a26e3630033f9152e2a5584f6c599dfc892328067a6a760e9a45f75bfcbbe8d29da85d6c01dd9df67125fe9a40f0c61c21f3254c0495fd778d41f450eec169f4a82237206d3b82918fe6cf1e2da54cc254258004330a161ae527344995a4232ea3eef2d2135a06ef97044fa6cc4f6b907ab592d6028259148ceded4a8e5fcc36cd78be2710a460b6deb4305a2504d701a373723c560fc357d1082d46debd33c53b8f1c0c06f55eca4f49bdc2ff3c496c9d80a88abec0bae211d7f00e514ff50bc2e1a827d6a94772f7081b7d70d48c6eb4057f9eaae26d5b9468f666ef37b6b590e4f60bf2b3f5c4c530efce20dadd29355e147f8ccd46c10b7d2b01d481eb71ee60f537e63d3532ca6fc8c072c815ce0b2b8b2b6de8103be53eddbc6b4d6005167d62f357a15bbd3115e053b8bd0d297ecc3b98602e344a027f56d8c84077db41d4f85f65bccf2d478249cd050daf991b48f6ce6a7887cd9d47cef12a63e06b4516fb9b08134bf98b185e772af103e93fce694b9c00a0c77905d0b39f1fe890a626697ecf080718c533e563e0788ab0dfea9b4f0f5870550c0fdbf87dd9b814faff33de9c48feaf9d978878e4daf4eaa15495c1d1bfcfc0b2efdbf40dc78611b69854632dddb7eabeef9d1338cf568c7e7b37948e24adb9b1ad8d29cefd4d1cd1ca1202d5b0ad2375f61ff855860b754babdde6ba18595915baa12b8beb66571ab378a1cc46bb64cfee702ba4b59b491bb2bb51ecdb83ac108f60eadc393c58e56096e185c1c2f7916cc3ad4b80452e6f021ab5e8e6945bc6e7f9f098637e87340dce85e441454837e8d607f93032724a49a888cc289e739e287bddccf5983a7395387e9f7f385fbfc3814753a4d8c61fdbee73795904eaa5df59d298d53f238836773bce83850a39b1b8db7dcce5bc5cda846b244c2c32d48b75e8f7dbffaa9d1f8aa7fc850810dfe5164fc00f3aea9e34d3b15e0f0cb29b6b5738832fe4adff227c07e5b8d36a0f96916641493e0f874a6d511b5a6c6754a614f0752c55c5ebb9aed293509a66b6997a997c789d37a35458e88c936ff48f355aaa7775806b15619b43947ac3080cee93b3aa7ccd5e4b0109702cca1dffe0cc0b1c52ace63282d1964649acbeb2e1909515383db0ea2219cae1f361eb0803673e15cdc2a5c971fe13b88aaa04c6670db7b5e840ca6eb07ec5b75b855e9d50bbc9b61022eb92a69295d771e2df03976710f0f7a6274a6660dd4c130d1b5574eb4af9cc1fd7c93e45b6bea8aa62dbd8c4aa562f535367d196f199105070b3cb1051c113ee7511c0e99aaeceb2d26ec4d263be7e45a47f27fdab39463130d80225d54c4e2d6dfe79c120484bdd08a0954de546c63fad827e0da27a90c3176518b1e582b6ccc7b59fc51c2c738f77a36eb8467b5840a5097b7987f0732a1ec56e5bf087ea2373ca5f9ce429a26dbc5e3de931bc5654ee953d49e346d6762260e22536d1c8c6a6a64915cc35a272a1d62c999ef8bda727c44ac6809054f7a17419f2dbf52ccda9be2be8f798d1f16df081400746bd4ff7e7d49e6e3566afcaad430df1293edf08fa0a35879faf479ab3950d0233d974f6ddfb781cbf94d41f297a50a94a001f9a492fd1bd3e956e22edeb968608b62f385791b8a63a4a0535c30a91e6c938adaaf90c43db2339160dd7109217c0b9be0a0e02113cb44cb5ae4e2e288411a547cb81879aa6195f05107092d3557f6e6cd5ab9b2079f19a72c084fd9c57a76a014ecca8e11f4af8ab0bf5772a4f7340826cd7cb4b232bbfe4c86675b52cf6f8c372650d6961d77c52a74477a52e18536e4f18b56754b3631327a94bf692624b7e09d40d4d06648fef7c3a51d0d660825429947d7b98b3080498183e49e100f455daa465978eb658a81024357bc6aa4630b75a4a1f07aa7d72640266891c09804051e23beb674eaf1ccf920458ec7a4af2d0def3fb0f7b51f442eb3301930bbb9260f0506f40447f12b5c7ff19d1f02791ec99944c2526458ae975f077423fa4b169fedd29875e46f38557ee2a7217a3b29e033542582b1b01f36a8a3da89e5b10994e2d8936997471ce75a4bfb2df8c200157908397e3db872b0cf395dac8dcb0ff17e8b6d1297dd92c0f933b9e8b8d84d41e3ee5c885a78642fbfc2c49aa79a66eca5c57106529151c225aa9d599ca31abfe02c712bf3d874f0113950edc9efc0682baf945900d1d630638688a5dea2b0feaf867f444a3028784daccc2336884370b3abdbfca51b12363c3566b32d3e551b7c375cf83d2422855bc3ab0bfa57013928e29e1627be20abede673ec6aef849d8b7577cc652c52f1143d56f73524072c76e9687a469a77069cdca7ac12e00bf83cbf3710a63802b908cc6408c2e1c352afb27f048afb6a78eb11280a75ec3eb6ce2e609dcf60643870185622ea975e1cb4a603b4e00c9c71d248382b78ad5387a9dad804c3f160740fdceed52d3da80441ae8cdd6dcc00e986c663a6023c250a806424d42f2423912fd04c96d6db968a4cbe0c30e07f29ea0a372415bae55400b4473265dc25d43c90ece0d9c62c46445404d83ffe07263803166cac0bf051a92542d6020cedf7ba548adc14ea62a81ebfd28f10c0d9ae0e568f2a9d931b5e2ddf0b84bb59b38448c0b0ec820f02a32115a834a636acff0de4af8189d16991b6cdf8b6015e228cfc24c71cfd27a3f0e0240a3ee83368f98d24771cb4b69cd479f3d693c787e233b64744dc55f262a0f0354159f349469b6901709fac2ead6f3e3c5f1435ba2525dec26baaa744016dce44cd4e67cdddd08178cbb08c44f6355e7da696da9a0c09952b530878e455d68e20c01498589051daf1f75f5b1fae20f38e31c41f949a960c44f6e8a01e795efa5bf1890ab92f0785f51893259bff0b2b07dce63be82bb926e4259076ebfbb8d08c52f607c3f4a16a7d73ab827215b9b22c7bc48d6603b3fd9059994520fda5483506faa971ef39de784a8b995572212c726944a0deb22d1596f8646f5f484f0c39db04172c281dd3ecce4c6afa4203df7acca6d719a5732aa33deb68633d2250223b6889986e91072db37bd9bb1a6315578e608126594091edd84f84a3091223bbf85a7298c5544a2018991fff8cf509093081030999b02d7a147357aeb160d1f045cc89a9f952d01997e92f7f371c47d479656d751dd401e911deed60f79f739f42b660065a4152fc916596d8937cfc96005144d6f0e891d45cd280eb7578903192660dc57e34f3b1714b09fa45b8d8d31d21380262ab5ab10ce5dbbc720d20ba1ab86ffe0489b71301a0dbf5a820e9a07dc18f324fc3e3830fd54447039006527cadae655fbf153b1caf994ba2cabc49f4ece5b0ffe3267ca772e270f6e6a9d8c879fab54f0ebe158a7237d1f63e6100bde740e124a21f72ccc9848d9c9cf5c61463f39fecfdf7859685f85e7310a49518fabdee6e3044aa70fc890dfe27df27608d121d348a5ba904ad04a83520186fa81a250be78e134afda06ef1fd575e94691e7548342bd454a6dd4fc644d3cc417cc2db17427b8b4133300c2ffda69503729344bf57913897214a8c2aaea20f2130c9118dfc090801b14d8cc6f30822db55bc58a23f202bc68f3934a87ba4ca2e7cbc57cb96a82c6f43088238e9579d7bb862d0239617adbbe1dad24ce813d20db2a7602e8f593fb265b36fc57c5c550ed72d303c623fc7581f5427a84a95b0b9f4fb7c48552f4652c85244e600d584c438b6d5c8b4394ccc339ca6fb2e053983abd45f2161f68ce9283a71c00644954327d0f3373789101cb57179a94f0072de0b2c3f3bc7485978215070ee71197e22fc7c2ad571b91607b0a2e8c766e38d5a7942c90db55146902d84c8edf3558919104760e5128befa0ca03873287abfe938f2cfc1a7d45f506ef9bb344198fbf908438cd989d1966bcad22e01fc8988efb6dcaf39c72a35528f794b85372e297fd7afb789404028646ec668e4024131c8a34abd82d4ef5e45386c3e48ab94c835f69870363fc63deefa0caeb383d40b408dcf822e480f9810093f83253deb7aff71b81caaad9ab6a56b76887c8a10f0711f5a0770cfd11ee15c18599a50423d950313c3b845ab0dc9c00fa938357e3d3b69d9ba24eee809a1af913203124fc27b981204f242bb68c34b7ea31ee42a4982ba5d875945e43aa928cc1d2f383bb9f53bf97b45dca4cb90e91a5d36185162449931c7b7e076faefb0156680c50a48de0098da7ba55a3123bd4fb67f294725101d3c59069217c4802503ae2beb3c2104029b5317da0fb612ce8354ee1d199c0a863313ba3aef9b69dc3e5e274baad3c6018a0b9f8415fbe63d613454a0b5ab7046fbe532a5c64fef927f541a30474a5a0b3ec0ea79b762bc4d49d387fca5953e1523ff932ad53e53a4d6e58c5e2b3ab03acb5e71147a8e984178a559cc88e530c116e47bb189aba0f1c7105ebd119df624c4cf58d3e02155166d775e3f6448201b19a6a8ec60312849262b3570ce1db2493a24939ec95bc86e359826f21e38fc5a63585587a20e7ea7cd4429ef27f3b8d4c1c28a7c69002c58201fa05c6d0ff68abf8d840acface196e4c9cdd549deaf7a327c59f180ba3e0d930320072e2ce07ac01567a41fc76a3361c288dcbe50e9475ebee8555826e8ef3ac26f349079701aa773a9f144f9086d0a396f64058360190fcf0b28402f9ff9851bfdba9e437cd062a2f4fac23691168423eef9701792195d35183b10182438a83c7f9dff336641d36b8029f0bbe519f17e01614fb4b3a3ea3bd81d70e67b5031ce840ecffba9853c9f6ac72a0831c987d96d943ffc44d87862823b6806df69cb0a858e12d4f7f01e0a2dc7e62ffabd20cdbcc9bfea58be2b13ea4f34822f5a39fa9c4b427194f70e7036aef8c64863f91b1f44df593d22e087c0d82318b9ed81099e7330cb6fb6507ce8025268977e30f633572d9ab1959b4e6a746e65338b904edb220ad9fa232189a02b8543b41831bcfac537ae2bb2db2e371130048d2bcc393395b6d18f44ec7b10baf6617e1db4432f7dd0a0be99ee8c688409c4438d646e36503232bcd7ab632764d05f40cc5f2de97129d7ed2bcf960ddb3c20738880bc428de33c99c4207ead58cde48305a8255a47328c489e9ec9b4109d289f410e4dd60712d9862dad8350ee3b9ff2a1698ad19661992931f9498e7358ee14bc785885abf5e68421f5abe07e610360925573cc9e91e86bb8bc575429c2ef658cd63560477e7422b81e780fcc33a9910cceb80781fa3e305d583f83725cf80e5d27013cea68b896db6f490dd66d298fd9537aec6a00bb857f3ab4fd0d2a5dbe500fd0a4f1ac84e781a911d2ff4db17cbb1e6408fc1facc84a25d648513b22acd3c46d67d4bfa911cfe986acfebf681033461228fdcca5122b7dd22130e51d640b4565f63b8292b3bc894fbf77c9efee4b3621205f8fa99989c87b65fdefe8b926996f9ca2a2bf9617ab6fe092a9347ec63c3caa2ab268828996fcbc632a0d3bdab6a11e62a02f5100e3023a8c702c7c0d60f4e0853b4b09d4f813a1b77ed37f4a7838b92c06e96c40366f6252a74864e5621be9581baccfb5142a78fd2cc1971f8d530cba385de5e8ce9b577644d571053224a960540a057cec6ee2b7e7e743491dde071335c2a04a7b5ea826b9419c8f42831c9cea4106cbc0f980c302a04278a804350af46845e4eea109563471980a651ca6e6838fea391ae574760c56d2f07fdcdb716ab290db1d6af34820077b77e09e8e68beba75551e15e254e8bc815828e603d0f7b6c3ccbc7fd29ba15a4c4e1033e113785871dab4d935f1a34e983bbd0218545bfca5c85d0829e5f93689150f3b79ca1cdd0d63dc9d07bd7652b58adcb1065542617caee2307b9f307617e18c1b484f6ae9ad03f9e3769c6f3de449c53abe9e498551ff3ade2a12234c0780695021c043b6338ae1ec84dc006ba6ea24f8bf0e9a91970ed62bc470c1d4450a610ea66bd1f6c57450d5a2b045c3650b7b86072347a3185c71d6b474f8a4524b21e0e3cce7ffd60d8b11e2267e85aedfe0c28b5853c7ce381b4f5652f039a046c49f0496d0cd25d286117264418dc70970c14b743209ed2ba923ee088b09db635b3912e5a64d27ce16bd7d1fe49a80621ed428af2ce3897042a0eec9f0638829856c0a951e165feb91a0412c9e9734a901ff13200c57db89ae7aeac8a9d056e03514b67eae2c380aedf07b9e276d5ece78c68828ce22cbe11fe7df1d46a4c0e9a973c7bc36750aec3a4d66b6c9f1f1c7675da3a6a2546022cc8c46947b243ec0c3bd915ddb8538096fd9141020451ca571545caac6dedb9ad9904ec101bb1809cd2c99d2ab6b866a38b9dc3d80b3fc512317a8d1c9cf3b2b4c9fd945ba14bf8e045971cf78004abbf0ba9123d966169b54094a89cae8ae246b5b1875540181898f5a5908d890366d88b823b85273218770aacd0380b32393e16d3015ec8c1e790c5e803b6b6a11f48a7706d60e143ee2d46cc6ae1fcaf186ba35282f82b118c0293a23753eb0b317107e6ecb7b7d6d1b8e1dfa1bbf328f3a7fac2e1a71b58961ede6ffe37f55a0eb41ed671acf98c2ca07917a5a70e178bf5356d2b06e188a5e4fd87703eebaccfeae2e2eda01598a7581eae0552f3511fcf83c6333dd472680b0b54c4d6351eb9fcd92aea8391038bf5e43139e8e91c737701a4d91784b372a88c6d9bd9bf10bf5ac8a9cb3da4d2048013e03f60d843062ff2e296451baaedda696ece09f59c07d8298d72c8414b6facfa04610e8ef763e757a3f7b078e2c80eadd46990e80cc483a4f2d5c3aaa659df6f480821d963616840493f271a42777553fd554d484df1540b730ba236023df12abf3471578d4ef816186070917c128d08edcd396e2f1aa7992c0c24dda6b82352cb7a0fbaf499e6fc01aa0c850c89db9c84e021183d909658be24bc02c042a4701ff657c1ae9d677106f000bfb2221b8f77182605161488cc7c702557f4ffee9406f0488258dee0d01720ac9f94aaa6b6a43cc25c98d3ecc335cd1d825cb6100ce4ed55e1bee683a2caa5e7742989904f2b021edc5aa9973bd4ca01b0f73cf502421eebab826c1b58d4b91a79a33847c2a6a9be5f073646400c6ce89be55b0a499dc47a9d6254cc2dce928b82f2aeb6505d8b4238ff73cd326b0738992875aeb33bcc060a3618dfe17f6c2950e6a606a67dfc5f93294cd95987fa2403b031c904918a8cbbc1a38f5207139bafb0208d3edd66dee19afceef4eb4f595e9aed2f3c7d08b74fa6c8efe7a5fd7ef3be5c16e3e345c2ad5c9b2629ec9f6b1b0464f0f27c0f9f1c18a7be4a0d30f86094f9cb1f24ef3aa6c449b259431b902c1a264c1693ba1410c606ff70c72dafbba9e656ba4d5e7d807e06ecda1694e198270180a3882b1ff1092612a3d8748ddd40228077055b0ce6bdba5ae50dcb83d3f5a12b1ff2916a0904ebe25d8b6ac24bf0923be48983d25c30a3eeb7b0dae3b74e12fd09626031a27ed2f11ff4212f457d7c57ea3d29091c510e56a90486c8367dd19955740d3fe35b042e31d60a4ba6879f3d04bad3ce0c9a3f885557c16ab01681c65d976824a75c673357e14e97f28f14a71a5205788cac2ae3fb713804e7da1aa8489b806493bcf698048338de98fd1c2d64f2d3fc80050c12d4733b84f021d33c40c72b8f38bfc7ec705761ea1497348874db595a777d82f41eac74f4a147d2eba446bb42209ccecac4a2cd2522fa68d3b0bae97f9fac4eec06292123ac18f04a3f0617360d32f013842875b68e52ddd6b45c35cda375da00b7621711639ada60de168419c3b2e57c5da827cec9b7d0e098051b0193c78e5af142a508053075f6fa594b8c16c976e272fb50e21d62b013bf19bcdacca6bb3bd64226ad7972214a2ebae6147306b82ee43570810388b8da46a41fa096bbfd0cb8ca56014ddedac5bee3e97cef45f327880ace46398eab00cb18f4425cc07da3e6b02d8937fb5746e13724477bba659392436879a599a61b1d85e57bea0bc3e9b78afd1d79fc8fa29b6c53b0e329ae3808ced2627f18f27170a60c5369a0a070ae00a9833cb9ecf0097854a586538cd608ec0c2f53f73fb0c2a22221f676fc6e4d043b08098a762ffc0299e5aeebd5deb9645bdc64ca7baf6947c8d552bb514da37e9455b4b5c822f89bf63083175437531caa04855ded889557895aa812923b75b8dd22b1846c98bc8dfb9e7f726e5958202b29f81b0d76de40207d678432dd99fd681c3e2ea24c01d1383cd1ab9739e18ee7825499229b4a5c7f6d1676adac24352261796700d8f2c3de5a84633d6213c151c96b926cde6a999274882ccbf962ada4bef652a27306b132548ac3fb8e5e4fe7c74fcdc0e3fc021ab9571c061c90e843afa232a39f3eac4c1667fa54190b280a8a33124bd4e9b4041b1c9bc499de7ba19db7488ab7e8e1c209c9f953007ed9c03f890cef4198959080504cf22ca5b00d69f1d3e6633cae8375bb56dc2da3eb41dbd54123c5c8c0dd835473c0e9a4eddf63dd406591353ee9fc1d875134b7b6244e5e33ef55da933f1c4f3f3ae092f5c4a039d2d903fd20ff0dea4985f030eec9fcbf016f548b0d67b21fd5961812cef3bb62604575c6e9d89b00688c5875b117bed849800d453740bf2ab1fd908d54d3e6d0fdabcdcdccf1333defeaa84f9c54fb1cf7d57b1c934d91d10868011c14b7fbc9097374b0c74bea9902c702fc99ed0b2710aa58b4b8ef0c1139047d14f1a9fd54c73db413a93a56c5faabead0c3bd17d69919ac55e03842342cd74429683c406a7206fb4c3f75c2afd634b223f46fb90eabb046e66e5dd0874fa077dc421fa8fc2a542f520b02abf13bec23e2ced64cd427b44b7b729147de310691ccc0a78d4457c88f9c19eec8a88c35e1c78bacc16ac1bfc9dc536d972047d703a9345fb070fdbb7665fd870306b96ee8b9bf834418ec1c9f443a8cc565fb88587cdca5043d3c3f4ae253a54db1609ecbd3f8fb4444fda15d7fa0cc8d91a7589f940dfa7dfaf2de0591bfd1ca2a8f3f5793a6d887a9ff7b0859f0a43baaa943f7500cbf6ccdc30434bc94f5580ed880442ab91d446ed29ad81b70bc6aa622ba46138b39b310b90556e0ebc256dfe8b6f274409e5acff6b51821ccbb2d6a1b5b65299848bf394b475baae38bd4d46afe6a1ce7b8edace544e163b1e4d8b237ce3ddce007a77a68975c6d8293d642cd666c694103ae3d65de8f66910e0c6b53c5d40af3de439d014edc0a7db5468eef6c0cd47400fccb9af8111b57d14214547183f781413231083dfb7ac6835fb65bea00924f5801985df1211e6a81dab4e5ba3f9e23636001541cc1abbf37b58c89c3711575fb06239a9870103494d2a6465440278d756536ebb69190aa5d8df2e22e15708d8235bd09e2f950511d6af38d9a44b47eb06947cd045f31278d91e4c3635b9a9e10359935ef322748757703b39a144ffd063dc92a30484f6307f9c896e18cc8556c55eb183f2cb922ee124c9c584c60276517e0cfe4e6aca9a2d1b9e5460d31487aed5cb573e6b3eb4902c128630895052341e6536ac1675024ca5f86c3b074b477cb093b1a8a2777e9a9768ea2113cc8a4b649c7e9389bf4902d114c1a39117b1f5cc2243dc291461e99942da7053b183a71247364683af1f61c376c1b775ca66073cddd7f48b07350bb75a4b472a47ae5da9829a21e748399a3c3ace7e6c0a57e98ba2abfd59008abffdb71b3e26cba184a143884375ba7e64dafe963c86813c99ef35627dc1e55ff94d5afe9836f77705c5e45bd00bce68c0ef138cf2dd10ff14fa9dc336d4a229156249cea36bdcb0c013b246e50aff4fc2a3117f2a0dc8e8651c363835c2759b38f5bd2c6969394909564ebbcd0baf04db17b86b6f60680ad55deff3261326f5476502178d471646bed16acef316cb2535ab403ed3da0fa50408e0646c57c29bbab80281c37a1f6e18ee12b9af984d8301bb66d5bc6c713e33ac9bc828b757fd3be10cd248960a71be2789795c06c43bc95c85426dd245bb2cc96f70da9723d0112ec53eb9b3f66a0661fddc2c6772a068159dabb9aa974ee3ab250ec28095b61daf6de091456fa18cf1abb95a3638d83d0713cc27686d0ef5d31b6397829469ae32d70460be64580e8e4903439588542fcc02a08961ca65c252af29d2be5a557ed28c83029eae1468cb46f9367c8376a925b6982619c56642b6be398aae158c5dda8eef31261bff4a6b67e1f44cec421aaefc7564255c98cfe4c0421e1170bb9a7c8c0269235cd288344f7cc8cf87485aa9c4d1f65c2c7c61b3dc99babb7d7c5ee826fa5a13ac9149d41fd20e4d7f324c51a5c2a87138015d784ac4efbf90d22cde757b0ed97c0b3614f821d61b3ec3f91fe61715051081b3c5416259cf21b34bbc87f75982ab449cf348b4c1d0b85b3ba5125277128d7d440d6f2eeb980854b0227e61e1d38074e4a8745a299b7698163344ae9cc12bb9a78ff6311de1398727d6e3e10031432f54e2461563a4c9c9a6f733cc9b58acc36f295eb8966eedcc7c6caaad40a5a1f1fd34910c0a8f7307af7ef84b65173836244641e8c8240d419e0235934974242508228839a0d69299a090389fa120da842a1a13e38652c80870b3d041ca7d8b71f61104e134393198df431639fe9f2698e89d104efecc01a12f02f77535d17be41e46a823819196eed47f742cd8848ad6f8d689e6649ff90fdb503081114adb05bcd5b39dacb6c153549e55bf4c2b3bcbdfecb510305c54992179a54098f6a14ed1adcace3486e07dc77d57b63a0e208edb60de717d50b0ccc980b03559d8611d7915d6925aacc7ea34aec6bfeb9e81a65b276f5041d9b8409b1f3a49afe8bb90f4426f9c3524017a90178fe1677e20b0af91469e2a743c089480fa189d47b5685ce72dc57ffe6625cb45f40c042babd7e6924f83ea9917fc12a7aa8c062908f26682145ef4ac25c6a5092c664e6a3e7041434d749ae748b238ca4f402d131c5bad5b4a06e797a4bbd5a0bd36a56f1cdd3540778ccf1e20ad2ebd54b4b7f981311f4cf4e4750499488a6bc4ffee1a855262537c461d412bcd947de283f7a8fa206ec6dc59341f27502d70705ec2808d6ce2ed712ad61755f97a6833572b0b9494ae8235c29ff38ad43087981ae9ce5e61447e33aef3cb12c1b88bc9e26cbb80b2ea14041d14b019f2d426c959e6a7deccd71e4b3afba3fac4548f0aa2dbbeeafe41376af3795dd335ba6674eafffe8495d088c8da73c25d5adcca1560a0a92a01195e45ee6339755b1fbbb3aaa99380f9b4fb22668275d9f68fbbb4df2fed0e6a0403d4baa991c8b86153a810d7f06cdbcd754e786b3226d61adc38f6193b40b257286cd9e5e1429d624e9c016a30119fd9b319a78083648c13ad81cda336506145a1bc31926548df66f780148761a1952d5fb0245065c9e5887559cf2328efaf4b49bad36d2649975b20fb7e3c338eee6bf9426af14713138990533387307f779f3fdb900a9210fe3168ebb37a0754e3c19d7c2815e4059ec5b619b038b2d58ecdcb931499d444050955971707bcc7a4ed0af0c6db7306cc00741179374b531c1be4ac59bffceaf72635a469188ada6237cd049b4406ead8c090a12b294109a77991bc0c8d7511816e72acb6d4baca375a933c651013a9d136174baf46bbb4b442e8ea59c217b2ef1679099e91337d7bb87e379653cc8527fe90332dccd44aadb4b9d9c8270d748092556e0353943e506b7c1a381d1cc6dd1de3b029b016ab96081460b869a203e03051f64e9f0d04216944207ecf4d04a23a257f23f2f2ae293173012bcd842d2eddf15ee5b738b17cd4b18824aa571bed29135bbd850d0573d87366936200c357283566954f8b2b13344d15572dc0f91db1d8d967b3b96ca4832bed5ac6ba192181c1260065acbeb080db8b77c225f10774da802b4fa69391c3d945d57638fb2b65500c3ce120c05d893c7870958c8c35f0520cfecd6446268c268f25b70c3c9b33449f9e5db801e3b2411e87d4646d32642889d04334a548b1fd3baa1165c396fcc285a66cb24af7d7d5431fc83a2252590662a41648b75374f01f8281a28ac11b7cbef194a8e83a0badb3f27e473ef3a8e04b774e4a24f401983840eee658b5ba88123a5d052bc4d67649d18f0b45d8a0316dd7e5dc5dab0c240de285778baea85a0427a89407eab7770b4a81a3d9cfb0f70caf07d8ccaeb171d2f0e58b8a27200411833ea2c64d8803d3e0cd9a3cd4e4dd0a6ed47cd5bcaff874b2e2c6a4c7eaded6b4702dbd4a6bf8eb954589668f8ca76bc8f1757a1c1aa181b0dfae8e03d8e0935348d6c2efca3db767fcf4e7339ab571eda0842c415212363e4a9463ee3b1c509b9b5b07c5d6c5452424a4f01002f9b0a1f4b2f5717db140706df924a42af3e6b8c84002ebc1613fb3cac2a10a8fa11f09a4b8d0654b00a0f83d2d7575365efdb86140e2880f5a1330c8442723f3ea449dd4c32e5fd479de5d71413c77158d5df70c83ad4f179d2b819c7fcf605b9dbe778d2a992d1caa42f7c9f4790f839ee7473ed70b5419fd171181fa0cb32c97ff26af0066c23c1d6c2ee620c0485e76acdbdb42b5ebcc3288de43dfd0c0bd992f638849ff0c9cd68a3419a4272c50764d3b6aa0309e95cfa85d9947f99fef38cce326ab1ae3530cb1df11f8508446d7f7171b901d7f809d4f77fb139499f3587609476902898f9d1f68e24a34c2a810dcfa513ddd703cc29276f9126e0b22bc12412c7cf148405f0ad4c9bcd1d0798b061e123ab92b6275489eabd0d64756e730db83a7aac48c6c2aa53f0f1582df40de6db0106e0cb8e49c81ea5a486c1fe07a309d229b69890a48b08830b4155716bbe819e665858ee64ec01a00fbe1781cd2cd5720cea02d2d51ea5689c01b121ef6ab82df5a113086ff828b0ba1b487fc14ff8cb77238a22ab2fd3fd8d31b0f417237d94892255db1da57e878bf01466e4c48a25db63396e6e1c90cca4f0d7b3ed8ab3603789da8516ea9e628ea2116ec0396196a066d6305c5076ae793e205528023b02242a70b39e3ccbad19d84529b15e6b7be4031c59b36768bef96f71d807b301fb4cab592e84a4c84f0217c9c19c47755c85f42f4fd6faf5ef5fea15768a30d373dd3dd46bf975082a88a28b00c9fd1ca8bbcf05ac9b2b1d370fb5d3eb9af9b6d622061268c8d39285c1870ea1615782a25380dd6726840771e13c3c0afd4ec38947764b59068c475d9fb28473211a8386c8fcc04f5dcaa158736a2789ecd3da5e7a83f87a56e6aa9dcc33e0d21c95dffd559bc5c08de153f8e5d3253c78d118353391eb0adcad0688c57e97e2ca52e5d1c12679a9859c7c983fe72b32a581b8a803333b2531b79c2dea1971182292c74f1829a70dc1d3b2fcf79e3daf8153a109409602912b6472977d36e3e9d3d0a2e7e406f852e8cb206eb7c1241ed59a387da2845a884f0cf6908f90735fb7eaf51fe89674cf68e1270f9bcaa4d3c56f9cc7864294e0543a5fd15b6adc88505b54bb2d93918225ad62fcef4f555aaba18b2630553b5c24f7c4552535bc479d01bd4a841354ed922031193f6ca629dff118ea772084ca8a04c1cb6c2c4a74d2e68a89fd398b2a3a8b68b367ec4d00402ba58308c144ec1b18fa15bdc07bf1d91ddea43047ebf435fe74dad84933c002cb1c3b6abb7c0c119b366b3673731ce34e421405afd4c4d16dfe53851fd3dd28b52cc0890d7fa592b1e68bb9e91de16bbc5b248d50390ace947b60e798c757b53b5c32e34b33de191563b403e3c01518d7bb2d347393a952eff979992fa3a73989329b3279998a3668d73759bffa255625114df9610f1c7379fdd8860700e6a8c24096301cd5850bb46fc54605bed9af264cbb0f576fa809aca1423f842844eecdf596e6437a045de2e4850a19f467c3f58521d0675ad38d9af85aec171a80c5a569e247d9194fc07fe8cfe1ba7fb069ed445d817bdee8498005e050935796ce8d1075b9dfc236e7b8f3306602990b95e8247d582a8e21f034c3830638bb06e6396047e0d3c86d13f0b43cb364184bb9b8f33d41747d98542e39170380186081148a131dd8feac6867fe6054692ca61a388bcc46735392b608892c3dcbe262b9b3f0472df062e1f22b0c9532871326a06915dee74aef1c0a984a5727d6110cc12babfa4f92905e31ea0eb7dc01f5ed0c360e67feaf5d67fc5d5fb7061081decff42e6262a708797c6172a8b95f5b4d0144ff317786376d319985fa9c005f7ec076b0fd794948557c6ed4b53d34d6599f232b3a4847ba297f9066eba5e8328522c53beda65eb7e7d3857cf37fe7427f70c6697a016aae5cd12c3433df1591471ce5f16855f2ca34bea0419544c79cfe0608242a13e84b0c0fc6a865852c3cae7c6cd22f566c1c28007a15478d67969f1da87fbc68d4b136bc8a6978ea270bd3c29e1331293d807d4800a37d3c47faf1ba445a9d2f7f8096f46dcf4dfb1c10ef70d7245b8e6dd3c075ecc5d43b0b628249e1cc81283fdac977289746dd038bfd718f3bd902c103cc3392c5678534984ca484ae0e1c37e172b66398c309ac10e51e834b244890af8160ad27e2fb1dbdcce0f7ea2d97fe861a55e83a951348e1b92d2e8a430d38d6c8497ce5b83a888a2f44e51ea2021351c98ba8c84674f21b7274fe9a4404ed22bacf115d0c896e9844d786a26c4891fca648a25424f12a92c115c9088b6a3220129f6d0de9f046a4a268535146aa28bc2a4ae32acae41547fd0aa0830518c402b0b1002d59007b591050660ca1f0cd15f336383d1d8cf812bf9f7130628c18316f8c984946f97bbeddf04448fc6f215cb0d9feda5c39b62d18f0bdcba295c46897a9dc2e6708bbafd84e831a095331db824faf9600034d0ee778ea9713db1dec2c6ca74342677ad72345a9842a4454a6d8352a8a11eb47578de6a3a2865ffbfe88082c3796ed9e12dd049d8892ef507e106351a0184f0ceb8a29221c09da998f87f8a444b0d12f0d1db9e778a3b79e6e6ff98b5a9d61f4c3ecc970457331504706fd280d0b229d612a28b76745d5a858ec04c56a177519e47dc67ec94810d4e5167a38855e6474cf53619d2b7bfbcedbaaa88f87ead431f621efe648344f7bcc9c823fd7d57a33ad3f0f35fa4fea50338da31e58890a8276ab454561c6500dfc0789abd2358bb090f354872b07b5d2c2f7891a9d6b26cd6fd750d5658222e922468586e112ca0f488b291da655f4bf8940ffb42ce712bec580022cd58c9eeb26f15d11a2b965e365c679c919407b9213ec7e923eb483832e578e7b3af59dd8ec5ab2bed97f762555c4b0ab3176c9ec27d54494acae78606ae277730c2064c30a4737b6db6998053d9207035d4cb453a8c9a17cad0d0b03c3cbc2e9062172730a836126e593236440177ce33cc3b27b80e2577998e1d838fec1262cad59d78cec75ae4905f19885585a1dc12f03491443ba73cad4d1aaa7c0949bf508b09551b20e28d4053833fefcb0acda10f5b502c41e5a409d349485d2b279a8575f952fc03c4dc272f5ef65801d69ff777abbaa41e014499753ba54bb420ddffff169fbabe1c1c9b06b93a064ce1906d4141d93924198f118aeadaa5f9561a67f3baf4f8e959f97fea81bba4bf92f7d784e43ff7380d10d92e148a5fdaa33a4c17da09be1054a5d3a8bda6771f2c792297ea80c77e0d152c4aaadb7a3dd32bc11a719bea2f5b8a833fce8977e97436060bd4a6540c95d3629f19b51f19ad0bdad210b6d925cb7641d77f466bcea53828fa67c1d4daef034f885fa3ac83c44d4bac41550e4b35605e4a0e9c62cc376f2e5f8101e1ee72e7e14d56f2ee245e550e9beb95446f6fdcc593693469303156de3f81bdba8322fe7dab9c21088ec92ad7d24f3a91b84899a1bd1bf3891571d8566f1fad412c380753c137f9706a4c938ac78d8b3f649b426626730cb65d289fbc1f45ac8b90df71e82b6eb0676650c50ad64fa1bd6b05bcffb0b082dda461c5915a5ca9adbb0838cf5146de91300ad2c61b0d6900be0096b31a6d31d7f7c313a11341cf84e50c41da50637e35405491a800c11f02ae39d8368b06c89d253e0fb94c55a0c237d10f77c13271940884b42d8c42b3d2c73e35ab51a522435c2ff20570fd0fff3f664886890cd7862968435a1de65c1e54af3b1de238629f6e46ecebdde58994f9d0badcc42b22ef32ab847105f59a748b9f25162c11308792ce43e649c5313bb1b7edba5a534d08cfe8e4508916b168a01646e99dec8f74ebbab50ff64afe8f5c4953dbf77c25cbaa73c77438605e57a6ffc7e1eb35a6122f4535aba982b524f0fd990f10b48376ecd783ac1c1c2a5a87dce9553c0f9ffcbadf2650933382c817262f2c2685d19f8d919c573715faadea18ca424c2ef49ff2953086b509a21db1933b63d7b20a77478999cd839bd88d8de602cf380ee35cd5aaf10c7ba6103f88847d526408c1ca0a8eac2a8d73032204c6a586493d88833c8dcb85336f21a924fa8b9b3fcd6fb38d659749caccccfd072055fe1e2ee19a9bfc4390876077367135de0f05a4eb865f9abe472b15a432b918ff8e1f6c4eca1e80ce8c12916fbc5623227d945b0f1fe11f4284a71bce3d675609363d88b33ca3c1ec2dfe8d77680b96fd53f730f15ddf100b08600df2df44041efc58fbd7f94a2e28e30ec14ae17a89bef0d8963d7df4311f09c95fe78c30111c77d82bae3d244ef431605e1e6f45550bfb6cb7d2c02e47610a6e7329ca0b5d1c308a9ec1f89d8562a4f6006db18b7f4ede6eeb01080c66b446631a2cd7ec8f1ced95eeaa9e5103579d741b14ba055c0dcb54b83d5b5129bfcd35f1169e0ce2811993744a32dd84371961ca34d223e1d731b8293f3dcb7da16397f1b6b601acc94a41e09b84a33740af2dfbed1a5a9dd20c73ee196cdc39fbb333eca44c62883b0de345c496e48badf5e9f84c11bec5245bc7a57d4ae367d8ec212ccc22093facf03c584649ab66d03d177bbef0f4eff93c4facbe1dbb5301556db4def61ff332f4f5e6b54a00d5131f7fbf3cee6cac13ae286fb7cbfdd2eaef2a709067ca20ee84bcf390e5470d6a45f1344ddf4d18390b33e611ffd69f4a0107228d51735d24326328a80d06e3fabfbeb89eb7a3e777cc2f603a4ea349369898d71c323fec2baf197e19dbfe65fc7345c6f040aa1bbb15840d811a539e5e6645736f6f4f44010b387307881b39e24212d4f5d4c1f3c9185c05e99857df22088e39493f0677c57fe0cedc77fa3bfa77fc43b8377f9a63366f4721a14bb591633360b84acb5b6bb8990665b371112b203c00b110bff0933ddafa619d02606fc13ab9603924106bbca8c0add04a3bbb16bb56aed7911672a941da123826cbdd2628c5145478c37c6d78ad55165692cfde9c6698a6d7f743f1aea8da222454dd334cd698aad8606c315341c3048cb012f6110d884c6126f4ae3808739541c3046531f1602623435e20c835c5954787a0017a4f6dd8eb3514897867449481fc2b78d3b91a74b4276a230d225789e9d2e091112a3388691a6e5805555df15c28d942ce9e952dce9c130c3237807ba4c0a77838f5455ad425015886fe91845655b4f1c72a390c39bb6c37478d8446389cfa32c833d6838e03ff142212d077c1482e1692c9caa049d8314568332b4262cd1051e007eaf77e84110278620c6185454d15f34a8bbbbbb5bc892dbe077d1a8075cc0ef375e8e0f8a5003bfd28c1248a8c28c2d88810325baf0e2881e0a0a3370bf0b21383a707f6a64e48091e082e302f7a1d0c18186aede7c4fe75d4704de7b0f00b8bf01327c20833038610b2a3882dbb16a84e09430c1106f1a917a8486a3dd85445a8e3e465321ce90c84c0354029774a9e70ab584bb710947ebd6d371015805b81f95b040cf63b980c3d1efa8022c54156839faf1469b58d3a56b0b35c39d9db603fc8cb20ceec08ba3e1e8777db7d4dd8f37b10892d46f15b0baabf7e79fb7f4f4cfab720530757d40019b6bce35d7de4c4778235b4a43d87a70d839ec6eec5b25a955d5faf00ae9de2d8974c95149b0e3c1ee8ee2693998a8f9bd9e96a3bd5d89d334a8728401075b2e0d42082fa55369a1e6b784e249f258dedbf134d7f370744df27169f40512e12f89c4e9826c1817b5e5ecd02cd9a92da78bd90511cc8bda72ba00821ba381fbb05b3f51d39ea0896f29f9539ce8cda21b73648316753aa42fd59d5d9ac1ef8f565d7a33d3b34ce338a94063f4c59370364b6b7d6a0841d0c12d270a47dc805b0e10b0c0a3c7e28a348e7e6f6185148c6002e066c50e1945b25081888a2144f0909d36a2b345976026060f10aa27083c0fc07d77a481b005dc7768344be6b6e89596334409eebb9df81e0e765d609cc7f28408c1d9f1865c43a8f9d108a1a9e995f7de37bd025b099b2e75ed120992207438ae48afb49c20f0e007e097f2e2831076095eeae8525394f5b145582762c6c5ba7c96ba65ad6bfd59eaf5983e9f4f8cb74d0ee7c81257a457e2759c11ec78ba27bedb4abad48d060f6a1ee5764270763a2e34a492a8372438401a13439da6d16ba337aa66102a233c0a529082ef3df7de9c87ee893246b87bba14d55efcab0db7c37938bab9ecb6539da5d137f5e1b40d7eb357de4d97dedf13add22ba426cd372caf11c4d3f4b642a20e317512d5378d835e975e12bc79da66615b549120c04745e318d2c583594efd9b505073df549bc9b61b9bbee91b1bf870a0a402101ddc72642044063210e1276ea8a0b099396184af31c22ec52fd1a59a2e29515da166a8730520b8bd1d288618bd925f0dcba37938de81bc9aaa1a8dfe5249e5bd9a22b046992e354f7d69104e7666c253f61deabc27caa8b8e578d104bc032570cbf9020d3cc22dc78b2f7076d4344d325dd56a06bae78ae0f7e9c5dd1e14ecf91421abaad6d1a802b8bd6187038c7ba94b30dec7d45e55555555d707553db1a3e4c3dde86ebb3ea667f71ea7bbdbdc9ebb3ea80bc57b54a9adb5c803d91e8bc321e586c8fe534334c2394605d30be3e3c537182d09a08ff72c2b9002e7323f0f8b2882881f69b8c01b31e302af11d527f5cf5bdee7fe28a2a5e112a4860b14d35d017c84173e3a2360bc1146c46b04bcef3a2a0e41b614394dcbbaa895bf2c09e8a575698ba02762c6855e2364a316b06eaee05b1eacc838123a0b7d5bcfb057ff10fdebb183de9a853ebbacb6d11d32387b4b836c0e02676f94020dbb99089c397a81e6f2316a6ecfaf9e0caeb7a8956f34740fbab9b29edd5c6fae00aed7db885e5e569eda22e489987191b688eb44ccb85cd7883bfbb9f18e5ee0b534457b5ca0b9c84b396df54829698d9871a96a975aabacb7747319ec01c911bd42ba3d2069575811050d4dd5039223aed2a5141c6e7ef4277eac2049188044b822a2a0e3123fe3022f113fa4e8c3ba82daaaae548e40838808d717ce5003b79c167c81df6bf80533c2a071a9190337f5e1701536b0a171696fe40596f786f37397c2373b84f501c333f81dc2eb03c32db734707eefb702b0f89b0ed509447d939b5c224cde1f1cec6e62a912158da80ac7e370de5e52716d07bb76a425693d77415c8db37137140fb504bb51c5d3caded2544905bdfef379f98ac475d774c01e7a4b4f4a400fd1d60e61e78a4fa6877e624dec7b3c4c17bde5510bfab3f53924125d990983def4057410e856416c05c45634167b4155e9953cca32114311e42efde780befb4b18761323bddb6c88188dc3513cd9146a6eec4ed32b5705a44b59163537387e12033c552304ec280dcf929d1e9d243847687082e8d4ec381b1e9ceb34c8f3a07da3d1fcb3948f873f3e6e986eb63e3faf0ff897c61052f10ee164264c7ab7a271a98064571cd10391e0027ef22947b0ebe2080e3cd87d07ec4a6e073dd8c814614503a4571c17d891701264c0ef3e882b086e2e1f9cf9c34d221dc87c590ca0da175888e9f28033404e1347e076056e393745301069d4ec8810e9952a3e9665594a60eb2de7a68acfc7aa5c759cb6028e1a6a70d410c401c1ee52ece09623850e7697693938205283d4766a0bd5d11dfdce765ceb8980db01c2d7b16da4aea8ef0e0131bcd1be7eddfdea04f3fe2cf5207057f86763c95d1988a73b821b444f25f9d087a4f7c603744a5a8e0b76f0bb166a6e3d42c05ec953e5b10451eb68f4974a2a2a3a4650842127b8e5b8600778881b22d338dca7e8881c044eebc9bea08291b0a2918802eeeb26122565f42829a38c9c1c949193032415183939489293833272728024270748dea6a8141602ce14fc86c405d2c0b7d6570887dffb11d21df0e56c54039ba2565808582a351d78e0682c1270385ed319858173e90bfc4a3db41cef991455c99bed3d178548217cc85498fac75ace00115255a4628cf1144555d4bbea6eaa5f95a0ab2a23b5bda56139b10494532cf1f97c3e9f8a095f802a9062898a3a03524b2a0b7e240eb8b0220a2ea41802174b7071821b4008534a449e3ca3d6c02d070a492c28ecd8fc3b8a80824e5551534c29e190b3050fce57a926305a91fe7c3e6358c2064d50b14413560069c20a4f29e1f094eaf003e10ed6b0821a1ea820053d3c400209d10806441e8e56f1c0063448e28607531c01812470a2206201a1d450f3a981c1b486215513474434682829988068f04c59d8e0eda01912a740920208a1681401352c89c01a681a47c3b9aa5e50228d9c29d610833468b6d8c9d1c1929c286a2e16389aa784051042d89cf0822a30a4c152094cac01471124e707555411c42de7074420cf8852410760a0051454f8020a466801852a709cf07909baa0882c8c54251c5a5545a3a7a801e7ab4c5d4c2a684e98c112b0c28641113846600a2c01086458b204670a646c21ea950cc38fa013a2f80286c7210a2da2c0e162622107ce90235cd0e4e0800815140d24080c15b68ca26c0ca33ef75ef760383d49781e0d13f306070c5a50c9818c2000a171699cebabaad1a8e163a7a3e168779315540801bfeba06be71a75713a1c7cd7b143afb49c1c10c1ed1f9069968c2647073c461a8e0ed893a3832538b7239f9c1c28c1b995f15a058702144084c38d141d4d07371dad82d1545d9014165ebf9b639ba65319f55ca7bf1eb270f9e88e09e2f4189e7310767777dff696763d4174a9bbbbbb6184139ce004618b97136aff55f03ddb601a9e8367c849a4c2288c544b8ce984134cf080091bfc407eaaa70305a77975aa8a8aedd34af15490c7422b69430626383e5335b29aac216cb7529c486051f25a3d414841f8da7dac73f0d3d5a5825041faddd8b0a16a82504146a329c8148482d7b51c919a6e6b39e21db458201f278ac863993753442a2cbc2325f7f68e7cdeb83f3fe22acabdc9bd2957021c5d051d0f09c0ef12c653cfc508a7ec7828228f2212cfa8ee9922620364e1d60e4f5343f707e36b172184cd5eefc2aaab2392fe2001d919af4868d9d3fb54b51ced37a4d15efb4b22d1b0ac782208d6914a9531ad4012856a85b1852abb9860d4cf1550548a8a39839a393179501fa07949a2c3803e2fbaf3a0090f4fdff2aaadb76c9e6f97c0c9416f690ad4d3c7c3571b0a1d73b407bc24d1e12b49f4695d92e8f6d030e93a8c75d12feba25b5774e7eb419f707eaa27197be8da9053b1dbe3e4f5c29c1c7461505ea1cdd89581f8e44214f7fa4879a0dc46ba320fcbd3d79b2f34c94eb343991d5e66103b566105c179ec3583a710bb10743385b5cd4328a1ad3ec78ebd6a96d1b1095c87167b664536a7f010ba7906875ee128133d135dd1afdf821ee2f1441fd9aa7188de9a45f4462530834921f8103c3dbc6efbbc309f5b9fdbf24036cbc0aabed1ea6e59af07dd3c8341c72cb539085ce3d75bb38c4edffa8a5e43c4827d645be3c0b2c9a7834ee685a9b7dcad7aab07948b0e7ac8e62030f6cc66874f40a7079d5ef479140b23ba5906d6b71df55e3fb1d9311bca6ce390cd2697b26cb61e82190cfa9424d1af8b3e6de8d46207d9ec30e8d5e62070bdc862a7c74e1fbaf39785c12ebda33c809e816cabd6ab6736ffc0167da5afa71776097bbdf3baf907b64e6f96812dcf60eb7eee0e2b00440e02fa684338ec9cc90b35d1ea54c51b152cf1c8d61ae8521343ca8e99235197b20c7e317347c4ef4ecc0c0ebfe96e60d7da7513f27515cf3d2c485018aa7bcbda351424080cb571cbf1e26a8d8565faf4473d5a20412a97f80f15ffb129d0e102298a2255b702f00d63a0bac4aaa22e141123e99986b08a87b1b8d6decd8e86fa80b5f65a93dd0ee0856c292ba4ea10572755ed73bec9f6520e7f2cb5cb50ddf373e8cc81fda9bab8be80a33fd95aa41ec39e20179aeee88a2a3d1cb1bbbba7d8104238756c081bc2ceddadbb75bb6ed80d5f6badbbc5d8551664ffbd9e34b599f05a8bbf61846143d7a073d70daafb51dde3e16990b6056e201be8a0488031c2490a1c08c339e79c731c08630d154e21a583b335935163713aefa163239b38a7a3e374706be71c7c7e3d3db0c6f9f02c6c41bb37458d535487dbc4a6a82a264954b1bee3cd3a66a33ee0d0a5aa6aeae36df174e02e451dbcbf23b55de52f0ecb0875e80f3c96e9da86e341956606fceede2b34aaab79fda8d758a89b92c374f1733d341d40c0a3b16487e3fd04180df8351d0be796c48b0fb41cefafa60d997ae0bc188271e096e305102c7bca215d7a8e0afca6898aa4b3d3a9a594ded989b64824ea1785bbe912921d1e31f0234274fa5ca7be71b9c34d6febe3bd2436f524eb27c724b6a41e21df9225a05737ef5065d565d5e8a8e5a85e53f3c964cd64ad1efa8d50153f71ce795db3fadccce6cadeb0209b6376c026afa01995d4baf46ebcc63321541b58de396df6cf8d6717155133b4b1914d5e44536b97e6ab2ecddb70cb92eaad3b8c59523d76d0a505bd6d7e4b60dc3fce524c54096d72c06e5404bba36c811d7ca24bef008036a3371400dc060575defd19e9d2bbe995b944aff43f57027f0ee1a7bfc06833c440e0187aa32f3138bb19ec6c0ca6ac4cc4a18b006780cfa37d977d4b6616e1f96a85d861dd07eca00bbb346b8c2c8a0580cd236c8395375c8dfb92a0f1761ecb53a297e031d2535c1393976e529f0fd5d20de63a8ac352de1c23c2a494aea52feb6ccb9bb66194878e0232e37af625adeda083dd413c44b0bbd583f2364308ee571bec6e190922a59b16dd91d9bc20b0ccc330d60150d11f4077d86db8bbf9c65f0dfdc1babbcf06a63fbd1f79ccbbbbbb97194c1d4618213ce9e5731bbca4176a063e740960a7ded214e86b43cee86de5e5a7b7cd313ddc257d3e59d2e7d4a7392fe97379b83eff72cdf9cf5f269563700c76ef0c5f435e1b72ea746344a337da037b5f18ecd485a98f11e1e9c6883076617de813f5018547bd0d0057e6f5cd365c78e3ca3c487fb07e00ddecb065f30feca63bcae3e13ef570a33d20763f64f8e959e661eb661360f77859cd8ceec8ee6ce3e9c22bf3b08b3cdac626930fbb3f77259e4d97280f2bbb65730cb64ec9fa5cdfb14bfb997f993eaf087f6630e4f1b07c4b43eb30b45981a7b6c2d8ad177bfccb3483e325f1e8c7bf34963df47867e485c92cca23bb728c88b2d50f1f2c9f59f84621a807e5d7650399515b4e1492e0eb30db2cc2d37ceb95fab135c64fd3a5a87be335de7608caa3b1bc30f0d71df501e5d7afb7340fd86b76909ca06c3ebe6233f4fe7cb2f39695f9c6b571fd7a086648d4499fcfcf60ea92645bead1da1c83a75b565a1e3ded0bc583ba7d477980c7def2a6eba46336ffc017693a89479ffa4b4f97f412e1e7e61ff87ae853685e37b32827d91c011cba0d9b358043af61730c0efdd53c1bba6374fa46e9100ea3bca579986094fb7aba14b22f891535439b2a7a050aa9c1f9ed602d76b45802bf1a2d8e5080919745918b5b4e1637393b4a7033825bcece0df6c13dbe2d8cb3d086c8cbd4d361dfec3e84c9db9adc35774732c638d34bdcb8ea2ded7a5674c715834a3dd71b3c02225d7293b38e48cbf341e139a70f24d22bd72bba43bed11d266f694bfabc61ebfacafcf5f9cd7c861603ef26f6087eafbed32bf18edaa0c5abb1796e5491a84ff4841ca1d66815ec4111224b655049d39f1746be2842e3429fa1cd3b7c90da92107e9bcbab792cb0064de077214f0896a21f1d52d3b7a6a6853c1cef5547d1a511d4c292b784be5e6fefd5bca4a2238b706e51dfa062cf6eef3c1ccfc94bdde932a1665fd4b7e4927f7f4a3c1bca85ab778edd9d9de7d17577f38b6c81df413bd0484f0197681cef7d337ca2aa378b70863615bb195281df855c37c32ade1da553610d5a0e1b2a9e10c5ab79c211f8d5e8a0e1681e0b5ce28a338eb8c28c2aaee829238b9a2c824c38c327a0708fb8e570310696d43e251a077d3539d55d24301249e00c8550aebdcbdd5d58839683429b96e33d34849a1d0db4e9d2ab21f51b1225de74d981c6f11ecd732a36872ebd2b797746a859077e6f0cfc406ac111e8d2bbc34095859a9bceb4139036875864aaaa5a47a3bf92ca0caa3b91f89b3804bf473b0157c445574db0aa93f5d1626c6142cd39e06e9d32708636393a48a010e71eb4997eb8192bf6a0a948d4cc651cf8d957d375ee5551d55aab111c8daea243c5e970184be5baa9d111681825814513f81d8b2fe077d1471d80ac21a1a4a6e970c518f03bbca1aad10300300a700513f8dd06bae355306cc080064d871b6e0a5688a100f8596183df4974c7abd6053b36a850448c1d8a1481df6b5493247a608451e770c60ec8908112b0b8420d15faeaeeeeee2e023ae10802a0506934210bb8bbbbfb277447d3179cc1a4d48424e07711ddf1462df822848026d03020870bfc0ea23bdee802334882064ca8618a2128e0a90e062ab86c2a1683e68283c61719ddd1541a6aae98c04503705a40051c2417810e90e0820a4096d0850ea690b5e00b0dcb82094070ffba3942b841431576f083298071e2821dd0259c81bb5f45a31b4f29e1a092c3126a80fb53c70ccd14514883093870a20b44a4801d91459307a802a70a4ab8411494100602e454f102951c34d001164a869ca18622cec8a88786864605356298f56305dc4780026e1e24ec8084041c3192b044159260063c22a203d75a758d4e420c47352c88f400bf4fa228b8a8c30866e077582de10946a8e10927ba8041122e0add3debcbc10835c0eff31901097e14bf372de051d6de7bb3de18614910e1882910210bb83faba80827c04d05dc450803cb12f5ae2309fcde7b6fe4840003dc879d23841edc170de108ee2fe0fe7153a1458e2e9c00b70ca9ecbd4641cd6da7fad0dd4e0ab2a56457033311d51f0190666955c0c00deedc7a565a0e1084e056d290503f380c7b05a644fd07d825ea99ba9ffeaca30e29f807e1e9149b47670cf94e4df011c643ca837b55c5ec80e3cdef433cced6a5c9dea8b222344e11d97ac5b9be9155af38a7a2e325ea556369eddeea5637037f74371259f54aadaa8a7a37882be8f2c305364fdb1ce5e1baf5328f4007c76799242d035150a86637da198cd94c11a10d9e806a05452b46d0e328749447fafaeb52c6ac077dbd3de6e5ebafecf298f7f2c65f59863e69bd3e3dbe5a0ccb44dcf48897541f3f49f5f419fd94a742b55e98d0e763a2cd3474dd117d45b9d084821e25485650ad580561b5b6aa6a15a494889bc7d32ba15393d32bfac9a5c852d0a9c85ec74037d76ab3d390b4c12722ebf08935b14f8c2e51fad0a5d7aa97524a69b5f9aad76bb54e3d9b52caeb7a86cd6ab3c699cdd68d794728fdb4f2b2f3b53eb33ce6757aac614bfe73ddc98373cc3bf2b1790444468043c44d7c477a44f58c386b0cc5985d468ad9283f298dd100e8d2b6ecc26a28cbe20c06d92cbaaa6952ad18e30f268fb78a4eaa5b317951517c8dd9b15f36bbb43906cb4bba1e5b1ab3a4eba04b996330e9ba3d341c0f9aa72ea7381f2dbd86b8018760064f29afc75f8f97cf6c9e27cf1ee575fae9b2d965b3f849661746744c94af1b238aa2b7bfa63c44b7d5a0c76e1edd8c524feba3497dacf1baa28cf2d7b11a4fadc778c919b12ad618e3ab2ed518e5adcce6189c5926f49d9ebc5e9e844e2de8a48429a594d2c679544facc323ac3d932ba2d6a595d91c23baa4b4a625e5b1cbd27a41d7754a43a0439beba967d8a57ce8e618d0e7756ae74136bb9594d827769dda1c83e92f4b9f4598ce46ed47c688e8cd33d33a6c596f798f11d0006e87a2d00e645f3603812f59eba7b17cb5ae75acaa72cd23205aae5bb67d1eb5ac0ba237fb5cf4c1ec0cbe6c7e84ef26ef99a33e38fc5ef51bbd073acadfcd27ff9cfef3cf9f95943ef49ebd9bdc07ecf41f3b49d6dfebe55b9a5a92f5ebb4aa5afbdc0c042659b7de0c04109f967cd69fbcd9c7f11036700866b0f54f7e55d53ac2f33ef996f7b19fb7473a01500f0e834e2f1da580c39fcb6a7e40a7b407e89f0b033a766142a732715e9988411786e89bf208dd36a237a35c7822ef4c5ef6e6e925b59352ebd33f9fa713e5f1f0bc9f2b1fbdedfdbdf7de7bb43a66331018fbac42a31a6566e5b3d765b5ad3decd236a6cf446f2cf5ed5d939babeb86e4cd234c0f6a8a83d29b65e2bb9f6961e83f5665e91ba56f697ac30d0000800d36dcb84122d9b051a3c66884827272626222128542205096d58a61d745e99c525ad607cb0f7eb55e0cbbb9ba9e291d42afde9a0ed873c42fab6e9eb03ce821db5a0ed0cd137ebf2c7ed9bd725c178b58ca92cdd7e327f6a6ff7ce83f33592662fa762b03412f662debba32117fa665f347de9240d8a045bd749407f9d9e2b4f907febc999b1620def5f180077a36d200813e7a0e61f8ac31a03903f4e11b3c39141d9a1c5a15bc96bd6a3dbc6c0843a19084a1cfbf846e8b18f639c444521efe459ad47958afcb36b6aa0b03ba6b8e011083366b06803fb170945d8aac89ad2d0784365756c27f2ee12dd151dea8f599a2a31c45344d0e4fe26172f817939bdb21a51956812ce82d6f6473e306750d134877546df21b6f3fd46814d2e1cd36dee80f261d92d262a7161ebb2ee51bed113a7d11610cc3eae561061f0381402090f5cf5fac7fb26cdaecf38fbc056f6d3924846f7402a25778b147084d6ad8cfe7217949f0f2d6b1872c091ef4d075c1cbc38c852f08e121847fc920e965f4134a419f34f4d1956f14c2cb4322e05fe685a0cf60da83fb846c9eff5c1b72eabc31a27808510e7fd91c23c236cf1b23c2f2188a0f0ea5c6e5e1cda40b4d2eefe80f26af71b3c32626b54e3843d8eba789947447552f0cdd2ca7acaccfabfbb12e6df557e33984e5b3c680e90cd097f2f255afd8b8fcec95d1e56bd301e5d2e4993cb5f29a587a0c9337c760ecb26badb556596b8d2722eca1939fdcd6a5d19c977f992858bdcc3e831b9b586f6913ebf0740c906f2a6dd60c206f230be1ec356e6e9c27eeec726451ec9412c3b06b4e79d1e7953719bdc61b36a127afa3d7788d110acae55f502e29e8f22f207a6233c45975f38c0f1f6c49cbc254ffbcccc8cb2ae55f2ef9921df439abbc241e42a1cbbf842e59a59c55ca57d946b1b7bccfe7d5a584315884e585cd29e59b15965974ea15f4675d98ea9f4ff58f4b633e148365b5212ba725f1907dbee5982fd96d3cac9bbcd1eb0a855eed6559775e120fd7676d39b29bdb6768cebf60370687a8cd33f4d2d683b090e84e97f552369b2b592d8987ebf52d47bdd7eb5fae5bef0ca63cb283dee8b4f87ac86687493e64071d94ddeb3cd4cb9378d4cbbfd45b5b8eebf2d696637e0637dc68bd241ed8e55fb08bdefc03cb37d9d2ee304603f0d5b8372d133a9c13cb7c14b2b04bb9551586d5e6999889eb6366b5dd5da37bd43dc40d1357954c55c9c8c4cc9819336b8cbabbbb654e56e8e853f4d189855daaaa983965300d9dfec954313366ca5431b3aa6266ccecc007306e6f15fd31dd49c889989dda90cd1dc021910928deeb325a98f8c65252c76c4ec1d8b178e7697e07f00c118c6136f459df4397ae37cac3bda5e3755dd745814ca82baa37be451bb239252605bb6753fc49bc08445d44fd445254143dd638798c261f3dde8c227abcd5f5ec57e8543d75477b64bf7ad0cf5f58c42216b14baaf7fabcd7a947ec219bafb79b7c5e9602d8e327ea57e6680fea92eaa94f523d7d761dc3307ae7cd1dc0d4b1eb1566f296ce6cce30ecc2987c5e18d0b198148c9db239bb3129d804745b8d2bf3f0c94717a288443f9c5097222acba86b52d73311f5284f51d9bc395258a4a8b8332fbfa4d167565eaf367700d7bf93379467d1c48fa067972093b72e895ce8208b5d64af1877c0f145a2c97be852769075b83e16f8f72ccbb2eca39babec2837d797fde49adcd6a54cbe65f4c2c84f3963522edb5a9a4a9bbdd16cce67d7cd331dc0d831166fe078038b46318b7034c1a2c9cd55642b7ce8d643dbf2309b41af7e85e885c93e67f66962627988b2b763af96dadc81ec5e8f963e646b06ddcfcc6c9ef134d263b903383bb53cae8be1f81a9382e7ad579b7fe0999267a87558cab73c3ba3449e21d2010c5b8a8b1426685c86fe20b430f48daf5b98cd33985eecd2ba1908d0b11ed7dfa53a5f6bad0f5df7e61950bb0c440961d8b3104a153a9c37db40c944af310a4dd021ed216f9d7eceda9a745d7aebb6c34feb209be5db25207a7d4b5b17d1d3cfc7c3530b021d3ba5f5f0d6e7e53152bd3ce4b52e95960864591746f47a61b26312a3a29961990d94cf633546a1cf104a28448f5d62966298c4acd363a189514bde3cb1297b58581eb39f53fae88e0fcaf3c4735e6616eb219af67a766cce7a4cf477297493bfd04337b1b071844247b9a2d0a7298f8f9565a085c16ebd61127ba31836e7c94126a0eb27d79c3799d9a7571086894e6de822cb23743a7fb983ecf569eb651b579b33cb66ebb2623ce4a5f3d7c42e9b7ff0a0b77549423cdfe6e7f0fde819d0cba278bdc8e620b0e81242084bd8cdf5e62030bc199bf3a0df8a5eefe09c9fb70e438fddc24050641bbef20c8f86d63f5fd2e033f75a8f029f41981d9ede4c7a9387f0e4360e6f3679bb553df67a6a1dce1e3e2a1e8284eba9cd355738b661f7e88e868e34718fe7fedc8ec685d6ef55d1973d61e3426d78849673648997d63d1275e9bdb90a1f15644b51c12a871042a80332de081e4b106f8a10678cf7960aefb8afa1902de5c3448d30ba485875836f5cf83f4ed4ae7047b61547b5f639fd9f176d65d269a57e9bb4c0fdfc8cd8dc081942044727488d902144707476787a2ab7a4d28c82bca66423a46f5492948e9c67b45375703be27088d054416acdc8e637435496947a9e6474a4edeca8e0e850291d8814f0d573a533513bf14c3a91271ae915376d31edc418679c6a269b27b438e94c3b9316d316d313a627c46967d29978269d185f7349c15da4803ba6072787a30b5555b58e467fa9f470de9287a35f55b58e46bf8eb724885755b58e467fa90487c0244984241122042611029308814984e08e3791e7e1e8df1c893747e24d7447e2cd91c86313796c224fe4b1893c53cda4a2522afda3aaaa2fc8a41364d20932e9bc16d4f869b236edde12aa8fb8371c32b5909e24b81f4c127b1ade40222ef2e08e91e7399ac96a41cd959a93cd13bc3fe0cc046dd06207c306dba5d38142112a5dbd571c0e59058b2a14c10d8b2ab8003f4b72d60d805770b542182856f00296cfc709b0ecf972d248d2049a20d85d99c63e281c0258033c7f80659ccf828c8049d41b16633c01537f96445d843fd6b202a6feece7b27d9a75f9c0b03b0c5a0e252cc56d1b166370017f6ccd7ba5b9a0e6b953853c96e971c99297e41dc1f1332eeead4f44fc744b3b18a8aa3be3d23797da8622d4b91397c03bbdd23c184e244b1c993b3d776c60411502564b304cf270c07f88d4083457b38383f0d1d3330118b41cf0f016682c2e0987031ede5c03675733ea9b9d0edccd166e3baea6e580a786507be8d288dac046a04bf011c39663461418dee1b82d9ac56448cb19c37451389b2139383b22181ec931630c9c5d1197d73b457874b698467a450162e004e03c916018811e26b0e3e2f4c273d13d1b707cb164dfefea6e1e8d6cc82699e2a6437b397efdb6f8c21c820427bc203c27a230849a6f8c2520d11182f384b421382f09380ca1a2571e0b0e733e2d5454ec80df0e2a29d5e79a4f0c35371c28e4f50afceb99440e19687c72c8589243061a396428c92143496cae35d75c6b6e9a260797e4d6338fd0549af9764738205d6a25c02bb0c8098275acb82b608705ce12ec8ec30ed88d60a9c5c78c70c601b7976e52868a834a0e39643881f3081b21a309acf21b4e099d43af6495d66ac0fd9a03dc1795d1a30323476882a70642703982fba51bdcc7a1a1bd31ca42cda551d700bb188b90cda5a58886d43081832157c8208c0bb79351c4c64e0e1955f49011468d183736f042d502490425a40c4758e2f2e346125b10e19238c20b685c7e38279248e2d25800a20511971e43e704362e5dc410c8a0e322e36ceb8eb8220d475ce434dbf60bd0e862c745525970411097e6042eca10e2223fb3ed0a147482b8486bb6ed245680e4888b94a40cbc8d90820c3a2e7d4919e83f20419e80e3f20385884ba321032d6e5c7edc70e3d22539675bb7930616745c249d6d1b1896e005222ef2c23a892cec1c71f9d1aea5b0e4898ade8849e7a4d68df8589f4f95d6b44eaf1b212f7a39e98ca7cf4107b5cdcad2ff627c13f5e28b0f5a1b729e7baf82749740ab92d4f79c734130f8dc836dc48c3228a1eedc2dea114ed61b0f77ca392b9d0cfd63654216443d14b28d7a28e4b216ea1fa8dccdce51ce51593cc127d7c7c36e872e4577472d47fc670c35b7247874f2f898a603f57803ee9114f5ab935b7529b298dc0fdc5cef0df861cafd03b1be77e57029d8e12cd7d165f30db49b10ae5fda6394ddcec1749720750abaf6aea9b93bd71675add5ae5d9fc03df83ed07478b89dfd546f9b672aaa2dc9876e58ca38bbddc739f76caefe396561688f9e958dff407c4caf508f55574d5d128f97461a69d4543fdccc14435680104208218429b02a8d4a38e8a866e9876c2964d4201e4b6b227ac5e1162a96fab56c760a82020e372270bc15a8c6784b1bb978151d95a3c9826c29ef753f09343cbb2405b80279232c694d975f417523a88aa22e57f0b911d5a7aa2ebf8279233ef21febf2ae60e4628425c5fb3f6f3f1570704e79cba18c9c2908c17907dc2ead65ab8743c7b3b1b56cbef7eb1e905033b1a311e4836e7a7df7089f5d9f51fbce591b37f57516b25dd7755dd7755d9708b326ff651dceb22cbb2ed0755dd7755dd7755dd7755dd7755dd7755dd7755d57e8d7f5502874cda63b2e384db0c32a885cd575ddc48a2e28040a8540f5baaeebbaae50e8baaeebba4ed11d57d3cb5d1745795ccf2eaf2bcb62d5a5ebd5b68b07781bbebea30a32fe4d6d6ad3f4a667c308b5ef5e73fd1e698f181f151f15d525e95274ad3bc6cb097ac8a3048617f13c818fe3b10bcbde17a98fbd61907cbb59f4280f782a3ab4b9b1e852da21aa790de0ead30a31651c96f2366cc8a19496680f8be37ded1d4288adf8165bfacfb57759d695215bf1084fe966c3f1a47e7d3f534adf78c4c3d01ef130940689aebd0b446f76385a529ffe584a2b2fafbcb4ad0b557491a8b9767d02f7e06b693a3c0c46113096e014dc72c030826fd0c0f0b2ca515dda3cb343ce396725a5351b95d146eb8cea708cf32d2fda5cddfae70bb5bdc53120f47658ed10dd0cf1100e872e89c74b230d4cb5a9af3c834197d4cfee701930f33216a692b7e425bcbcec59f97016ccaa11ec4edd9c42915a453c401ace5ba650057e8f40055c18f8bd3404bfe3d02ccee5895acbf16c4c51aff969a2e686d31abbbbe40af78af5cfdff49ee3e7e9214cbcbcf581c1cfc789f690873a4d1c81e521948faf2aca4e2943381cef9c15d58e4cefa4089445aa2d766838dcab5ca9cf13b5071b2bf0f1325655adf14df02ad3fb04ddcec3b10982a7bff710dc97ae0ba7e36892a46078032ec1dd335d195d723d2a8fb7e73da7456399a228e0763aeff12ec96c287043c8d2370d4743f80e6d2eb92429373e4e4997fa87f7e94e47de7c8afae7e65a5d49410adb89c6e294b443e3079f22d4be89b0f5a504bbc798127e7765501f30fcae4be272e5da7b57fe81875468b05a976e3851554a5180402d065ca2c106ab6d9c2e41233d3b3b183b28070c2a30e8593dc88923989ad4e39947a624f83ddf30794e692cd3ce4b3cfc7b4582ecc3a8a0e7d173506b1128a457463576401fdc6014f487ec4221175261a3081546c6e1225498ec320e836e830835977a8bd6e9d22342ed17af7e6e1c1e22863b5d02dd2c5361d0475d02dd7749e7429c2ebd5aa77a6955592b86bd62d8070715f40c7760d3e021d5ab21ff3051611519ee54d91fe8ef90a7e980fd5d62d661087af66776ba0ae5013a76311d277ab0e8a08b6426b2397449005894d929b343389c5d0c5c48a44b0f7ad1723c0a775a8ef7cf1235370e184fe0864197d674f24d6841bf6c6e7c1d1281556476760974fb98353904bda5a79d979b18fdde46d40c77f2b47303ced5901b303584aa8654431a8e77ead34eaf88fe321399d9864516e2d01d15856e4c09679799ad5862a01a1906bd350cba6d3a64071de402ba7ccef57bf1aacfacc348b07c6e62c0ecf5799ad6e90365b6735a8e8763839a5d18d041af9720cb83c3ade500d956d52142409ce10e0e7effd8ca0e11c2e10c7784883897f08538606074ab06b700cc845ce809f732c46da26073fde00ff7e146a446a3d21dc208ee49b619f25686d5ac94e57a1ee1e65ec54e965eba53ba54c2e6db6615951d7ac0001031230052b384102a70b6b82c102964533fc0f7cd175ba73fa46451a94bcfd159859a4fed10e2a5611f6f0d3438fec5e1a9b175370525b8fbf24d7d3001b65eea15797973630bde943c84c32d3d05c7809623577755975e757d949a63409fa05f3f17afe994cd26b82a36872ea9b41c9817ea53647f6cd0b1bb5bc7c3d15e29a9eeaeb173ae9f0b83042245abb86207e17db19d736ed4723c77d7d081e18407f41826b3c7d063b43906a792a854ac76d5410d3b4523000000009314000028140c888442b1603c1ea9a2ec0314800d8b984674501b09e32488611053c618638000100000018091d10401004a4a3711366515505acedcba6bf6c4a2c74dc1e15dd1a60db96860abcedcc31e9d6fd1d933b580d7480763c9c5b1b9120cbc02cdc4afe0025ac411f34a8a0802f9fd4ec82ba030f51b6e33a7ede62de070559e24c84a960470be91ca1b69b93199001f44ab0e6c7cbf3bb6f64fa367c86393cfaf382ed02f778ef459468c9aeb2421dc3533632702bd3ac4a0ded8f559f759a411754cabfc5c8ac49d4cc82bc4abedac513b243cecbd148ce4a3bf2308d72dcb017c6453777e06f5645349aa0941a31de5bce54ec634bea0412787f8a4233662da26b3021b63d42bca7ddf1441e75f9fe272ec10a2f293481786c04c8f4a25344737a67251b927adc5c728ad13f94a4c4a3904ba90cec4889c0ed8ae2677a8624e789b098eeb5888c91778975e5e7bc1b7aa4bbb46326b1e847688a3a3b66fb4508c798131708caba60f9d395a7436cf3a96957a47673cac0a30dc0cdb0e8911d6d5059c936bda9600a76b3bbff4cc1324d3c40a674eafd4b05c6e1b1472cc45e929f281f65dcbc31c7acac210d26d5dae58eead6becf2660a69885565622858c645c04399e2da4379aa82d43089bcb643ebcfc6859f7d96ce5095d4a92d234893919b896487052820ac440af65c35b213d9becca1bcbe7770350195515ba3ffb1745a0e1f6181ea44ac4546c92310298e7497d452f42caa9e2745f533c98c637158648908240999e12d7667de30e5b6c513853621b941f9efc0805afcdc7b21cbdf93df202cef2f81f0faa9605c49b32c8b1258ace36576470be22117bf79d31b6f7cfb23caeeb375e42db8146c3a9686c9b4bec1f6713c7fd02e817d881b63522034c274ddc4ba63fec772f849f02c38099d5eb436909caf6131b50723b65aca3a39df10a7e1538b7683d3fcbaeb178e2138d86f0e34db6b20c662ea3428bb9ba65aea0c21bb65792690330e75a631a9a482c612c17cd95c1aa667b250bece59cea53c3e3a93bce540c1c2a7512abd46d1dbff0fa4266336f99e922e50b072dac0c850575ba429e84ddc9eff8a2866cb0c13c9524ca5039ab04d818225d86f69d7a8c6088082650853fb7351bf3c92525e3714f6ac666064802fdb57c1514578f1c3fcd6cda0a2ca33ff70af434c2b6b71fce412e1044a9167a92d76adb8134f70c00d29fc061b277488e9b1f4fca27d8312802c4007b367a736e28f108fd2926dab009cc116efbc45fbd4d2c866646633ab6c585517132d966e86076a09488f198a3a8bf95efbb50a7bcad4966ed98a3e97760a7e39d06c15d88d8389bed7a9abc82a2742570b108d270b619700b1ed596f3f1c55dfa14c082e40d183f3e72aec69d5228ebacd3a52fd64cffd7b232a10a8d034292cf408edd0ffb7f6d3833b371223f69327080a3a72bc574c3b696bd59883f6b48a287ac4ee873e3f8e9310ca6210608fbd955737476bd72aadddc14f7d15ff75c423904692397614b63e0345976cec98705e3076e73368adc07d1a2930b44753fa1ec0710338902b845b80b78f72e2c30cd9ecae1345a0465a37d26cccd666463aabc603b97bb795b5b06a522264f0a8323f34b0eac42a60df4603674c17ef34c0e4e030b0fd36724df30488a2fead564021527ce73d51dbfcba925eaefe4cb4550b8eb21b5f6d2d3a441d3d9c66eebfb1448726a4e8f1265b0fbef1119d67cc825584e90bf450e7f4842c955c18acc4126b29fbfafa2b304205f770e1f95164091abc9d805f161d149a272dec1f34708c29dd64d1d3a884b1bdefdbc5e4404044cc8becf9eabf890aebd8b31f46ece395d7097ea609be3330e7cc8d1d96309ac94f6aed25f4434efd119c82aec5d8bba90b43953c1a0a940f19424d322b4911cdea911d22c456a95bbd8f88f24f8766dc9240b81aabc6c998b3f1791145bd773091ca3db600b4da9a8f2772de5b177084e4090cc5577221aa549e560240f43c15ff9008ae9f1dbce0a2a4e8cc0ca6a4a9062046e0a4d2be2880b6edb0522a17fd2aa0f42300468c6d24f996cae46151441192a5b37628066a07d91e60a4f2cfe80af1e4c0cac63f48f0ef00791221cd239d5ca39555438d227a91c5e112365286c279924957ffc3527a255575803891a4b417fe1d83f44141098c5a12868892daaa8b302ed340c6206ad173b66b4f5e7bbc88d98b16751832ad743fddb94cbbe5ea9fb44a97241a781e6c1040c63ff5af8327ac291782881d0f598c179df2c0bc689e21751abc6be6d9905820812f31fe779f881490a1e04270c8cab3289e6edd3aefcea498aab01a2e63e1581abadf339b20a65c676a2c9518deb0ffa57b160acc84ba7ebcb58f8949ffcf51daa2375df042e12f56e37573e52065430199c6047b3ea80dac8211e902de0ff6e25319a371e8a5f5c467e7746b9857ecfe3e114674c911db91d181d8d88aff96ef91f74cb46efd3862bea194a32f4fad33fe16bb6343b793ee733c5a045f77a8c7ce743c77c3bfe4182f0146bc264463951641cc6ca27c1057b74a3ee68225af0ff5ccfd17fdc8215b68d365917a1ec70d593a3afad0dc0c28652b02d645ffc7fe0cdb0cf12d1e63acff779dff3368117189557d1aca3ebcce09d13a215e8efeb876fed3ebf860586f348c23733426f43b9aee8162488501975ce40feca3945831e85fe94425c6df2b6526f83e83f5cd785d06833051b8ee778857882b7c461bfaabc28d99c2a63ee34aff8749b49e08800ef1036d7f9688879019a7ad5802ce3eec0073f2ae2719a6f25fdc3d3c99dee304ff1142cd1368c710474150b9bfff8a3d0d3e6bda7f4f952281d6ee8ab89204ba1e5c13008e15e27c79641fdcc32c8f93d59b948a20681f5ade1e28d1c5835c59072f0f2756c2293f64ab66b79bb95916cee249fc70b918dd088d0305af976944428d85f37ae29b7995e30c85761b7d322129bf47639256c7418774917e5033672a35e3e4a4af641661489dcf9d8b1a085e6ddec3a5b94c41969d0efaf983f0b20c8cf614f1f1e8f52ab2fa7a07e9c5e524e4a19105591326b131fe029cca0e94b28897866351ad7d7c69e0d4d94cad954651ada4bf031e5c900a860cf4f3cda8a6c976b23a3891f9efaae1b9814972f0370bbc46e703fa96ca6ebe05db4383b2c95fd6880f79efc0f953955978adc13857019fa5452d34e39f472ad39db80a87692896d688ddc0aae34e142f9c4a79206deca6b07e5fcfe6ef44971a06dce914eff4a72b818767e921ab89503cc3b3c209505f39324c40c25a16ef967656c98f00e162fa1fb3ba013236f0a73bb22ee53569b6b4a1e9004f92f18c21d5655dd8d8a7caad79d74f24df349f796eac80ded93c634bcbbd86b16e81fcd87d8ec326a10ed018b51f29b70b9dbe7bed4425cb8faf4bc2abb342b1f0ca042f1401fcbba3adde19a81e85d8f869762ee566de49e0bad018a3694bc318c075173f34d0275fd06e04b440f557ffea32dad649dc81c6e4ebd9bcc620f33c71e36323145b597ef87b7f6f87dc27be6686466615496cdbb528f49e04fa46910ab90ce0ee128823cdefb78266f590ec47c6d917ed94d8c60ce7ea0baadd8fb3ae27416990b565204afd40c10f0e69257772f0a77a0b9826853eec8a723072ed2f3ab8015bb51140517f6c433812b2137758b54212920fa1590e2a0104cc440eca0b0c133c1a042ea49e1dce3e67831509e969c342bd68d740e9c31b9cb7630336e7001cefe3941d6bb5c88fe4f24c3c521f7ed0b78c34d367ec1b54ba195097a344f41c7d2ebec5f00669def9df51015b41b1b1e80e8adea0f6d643fcecbe89f6de3f74d438a5a0068825b99c2e70c3e131a2ba0f25a58fcbd5c6d2c3732ef4ec34fa1c99b970a066e01c70a997c28e8545d80c80ae0fac6c93344b3942a36be7f16b4ecabf0f72d6f801e4ae7bc5e17cb663fcdb89f8802e1e249d476f196daab81d0a654905b620d538c2e20dd1ed03f4d69c3df834c2b2dc7d5abc9b9cb8218a1c1709be72cb8df3c6a493a2c8792d445fbcd1144b4681c6f909d71a81370c63095139536832ff9f7b8f5170b314726ee00733a686613482a7b6494fcbd6f729050ce98570e84689ab48fadd3689258075bc49a2ca1b5d97b54914e33e26ae7b1a8040039a330f89d7eda395e7e282bfe2fb1756c116bd53e3d8f4e04fd37f2a8fc4a1b9d42fb0d571645d4f3b9d4b4ac6567740e3e56acb7904641505eef89ee10e866a38ad0053b34dac1d35bae8a3e082255bcd515eb8a3e11fa398d9b778a3fe54eb82b9e0a7d596de20c0f21368dd55a792cfb105a1688ba86801f9e408dba0002ea71664564ac6ef4a413950f8886fc2857d4cec8c2c5098c4a0e9d99a55f9c576e35cf91d2735110d6e6a16e5de3c922b3bc6148b9355051aac8a97edc8b68a27177ece23c08dca64c23630e1ab6c3b6961df274e0823cd038909ce0520437b156f50c5b73f98c97e6a28a866d93a2ad4e1c6741a5473a8c2e9a00ee4f19fface1d31bd2cd9de3f09ed48abc97461d90c6eb52c3581dd8e7e6bc778e862aaf76412f3a0dc02ebff51efc2167619898152b3c5cff807d5ffeb9d884a1dc8b36e04c06717de1c55ad48a7e040a2e8ee2ccea3dfb85936723fbb5fb2bfbe15e8eb619fc64352974c74f373b10a93c9562e3ced026a97b5c523ebcb71a4dfe227b92037e63ce693c1b7a2d4891c1c6af9592101ec7171cba894972851636a0d7c2b10a473dd936acbcb90fce8a98b6cde385e34cc14285cfffa1cdca522005cd873a1e03b998b3d038fa610f56094321b18909bbbb9c2283bbe087b0f484a81051be7beb9a22c7fbdcce8886e60bdce061b9b740a4a97073ca1f25b03a7114ef8f1918f4297761e9987333401ba421d98e09547994b6587bf7d6694b064d63c2124d544a235e0661f91abc22d3766471fb75f64a9cc884d7944a9b938541d528d9ad616484cbcf5d0e2b6867653af0f52f1f665c2e458a52ac2ef90a130680e6447a7deae7e900a854433089944e909507bc341c84c4c178e3a198547dcd8183cf994bca0a868a52890f2cde1c2befb3c73380e1ccb76fb77adc5397bc952ab16351a4b14d8c98cf34354bbc5bd6a2eb46ed1977a48317995d29bbe615b041db39d6fd6167b03b6455b8f6e7b8b77f71ffea92233e7df7df0f90dd38805e131876daa436a1d391990830fbd66e7c84603ff3255988aa4096ae0df4aa110ae54301fa656d3a550c6bf82c79f99394f9815ae35047faa73b30bfb0054a78909837bcd621b6bfe32c4001ac83bb75c3d113f5a0a3b1509330cf36fbdc0f51e22e8dce08e8fdc523496db9abf84501fd8b933a1c4be3ee13768b0d3425b7d2afd8f3cd829674774618e7c973c713f37db32f80a6db76f2c980add53b6a9b8b2146798c9869faab8305c4553aa801459efd1a7fd39ed0622ac47ea3d524d3a74fb00cd51a9579d38e3a0b134a04d4826f40b377a2bb0428a7bd78b76bb598a47081433781e5e3abd304965f1caad8a3c84195f198bfd9aa0308d333705f1e817893e4a0b460d219be987ff814eb40b91506040dfb3e570d4150114afe1d489e00a8eea990d0fbf9e809e623fb3acdca0301cb464e8c1f9cca00e7b18025d33016b8a104be7874175981c1e46e0d70edcd9c9be1fe5f5640055d943777152a57a991f48939b98abb25f756966332e0e38670fbcb2f8508b862502c8d4b1bb39eb6499df0f06ded9bb9564b7a8f219ef305e827fb52e64f39e6633bb9b9d7373dd0fd8367aa29a55d9a7872acb441b12b5e306a2eb452b95a3b943a441415ac98c691fd5bfb8944d06aad41b61f1833899428d006bde71253e7b19d29312b9e7b48587e9ce6f581024ede399b7d247942a37fcbce2088494e681749793117e7efa49404f26ba5677b37ef42b6c2debe413edd4f2ed755c984fc08240f63c4c9a63f86885573bfefaf94c65122829dbe4b7ee9b4e24d4daebdde9efab5c8f0f196c25dca4d52b333e0ef0c812ac13f67cfdeafaf211a1af11365dcff9cef0794016162fa53efca9d75499cd58902e382aeced8dc4ee30dbe388dc3382e374bec291ce3b0552046cad0db7781bb7644bfeb51ed5729a13307ac3ad9c431dae4fb8af7ae0da72b782ce81008c2b5f3cd6d5792032e0f3e4152a2d4b4551e1af2cb7308cf73a175eedf7140616128c5d658c60440d1cd0f177f406efb7d920d5b2c22749765ed3513b9c2bbea23d032d434711a2b4f9e3e4bd81707662dc1d8e7d256b0cb713b55d31e39ac0e96b2a3b2c5164ddf8106ae7b546614fc9b33c561d0d76972eb604573e72dff8476d2ea905d0dc9a3f275f1ca88fd1dc12e64092b89886fba8a446732e8c68ef7778fb8dbe0a016a6229dc1170344f86ed2c7107d6f4610c65e46de66b1b435e50e7451c094c5491d96a8e3251fc482e6fb1ab6b51cb4b31e72edf18ab1e2f0d7de69f25f133fc223d703dba0dbbf44cdf12468fb9032ae7f03639ddd47da4d286fbd11b05ba102a34973d61cd41a99b699a702ec0f9505d586212816af6236a42b98610ac6109704f67ef348b087c356df870875df8e155a5fa04ab0adc3566a8cfb158b328f121a5ff148683c2ffd5cd973594b90d6223ea4e5395ce5e9bbad5e1ba77cb4aa384d542e54deac3a877b66325d387fb7412f8f0359e5da032f69dfe8a7051cc97d335e4427ad2bd08846c26fb7821321c2afb1c3ef26290f6c4c2248d04fe335ec687fb730dd6dafdb207892eafe8c92785e9a096d32ed4393215cd74040b3f717f6ef78538d6a130faa5cb822364a21aef62329aa4215a9951ec7c36afa9e0bbeed7cb9423159216ebfdcae672c18987d597af0b94046e00c2c9d87c40369aa1931e07a20fe430187231402a05e335928436086527dd81f7986b08797f44e98bf9abe3c0232c5a2c6e74960540d2645dcff2fb4bd0961973c7c2b2c66dc846f03c6228dea88b247834e12b2cca4ed9a87104bde180f44c9c93a9b24609a49657141084a79a2d746be1388de6d587169aaf313f9b2dffa2d5cff3432c73acb13483406cac257699658c65c7b248de651d0879e33b8828edfbc2440818efd991e7cb95909d9014aef3201e87da4c46724b3637aedb4f5c1faadfd94028b753149f3b56a1988d6f5445982981544b352cc83df294db370933c3ed413863d4fce6bf195ec65d97dd76eac0db3af4fb00582822a872416cd8fd36f40e41c09d10ddef2edb55fe5ab6743cb16a634b3132c835489bb1db82176e6cf1aeb28644a55191f6dd61f8de895faca12bd48d81fd65cf2438410400f91608af823c6899ac3fba15a604d174bb5a584bf4552aaa09c1c162cfb0a9c57d1124388b03f60a053ed46cc97aefdb6659350a9839809d03c8e2f8557a982b7dea1599fecf055ab80b390ff821e928f875ca83ecdfa970cdf5c24999a4fafce34db5c245e1ce707ea98a7204d7661b84ff30ca8dce1f8f05555e31f56e3f8a82e3427493af629e89c896c087803249aa18ffe911605339ce5ebd918ebc3077df7de5edf875e144ca008719a7d45c7963d3c54a5715f467e567b08af5e9cab9e972ffa585f3653f50eba876183c35c0a674479dd9000b65fa2f5e3a5dc5e3346221b5308848766539218ae2052d31502449d245db9427a58a0337dc202294880136a615f01fcb474aa05f64c62c5f7f05c7c17d7ab917e1808ebd903a7a7f9ed80df3ea8611c6a7574efa3d09e684d6a43bdd5fe8d9245b723d380f87bd762b381f31dc9fca8403d8810a61e39cbfe9d9befd4ee9df3d137a2c7e68eef7949f098bbf2fe6aca8ad92c352072c70c33b4d6b1f813409b09865f25ad0b5339f6103a81968680e39414c261e7b2cba5462467888c8a2e9138be9ee8f648029af25e83858ca2316f9564dc9985f9aa0e3d807c165788e85f92f9c8649673a5a2d31910fa30b2c5cdcd59cf697c93bb6bf630b0e99a1fd6677d303ed1f61edf293029ebb2691622bba37f6b68c4f462768583a16d6c342fe1fdb319c90d983ed22dd5ea50e2b515e36fa1a978c047ce1415479a69b9390e44dfd4f00dcfb5cc7049663450157f918feb270dc92968520eefcc3937982a794b05be920d6f7d6bd9b61887af2665670acc91d6a256d67dc38d22b3257e462b1027ad3fff98d70b7279957684a4108f0dace29a6618f104628b7538e3b8800048dafe920333e475c1172c2cd603b72d172cc1a6fd2dcd1031996f05c9486a3229f0da5ee86e9f7d158ea67a319991a713df5695940b3bbb67f41e7836b60f93a886640c4b033809797e1ce994600c2455b87a93f6580bd4518cd5df7a245fb4c5c61c47995b054db66129ccc761daa53790f1600b580c540924139dd4c1d612f7687e8fcead4c66000a8c83c647efe0bdd64da45d821c87da5b2d9e96a269ccc343018c02540ff5aea467e0b224cc2a35a524459a8c295371c4cca066c59584aebd6b37a7b09438a0439fc8e84f0623637f252534c170bb324055d8534d668b3461603f068b52e6e524f31b783976b965e61e41e7297dc93d5e18c5e84e33b75ba181ab9174a86ca9afe4f35a1fc424f1e17d38210c917bb0b5cf843319fff6858653f210010732e7fd0804042f22ef7683f3f183429042ea3cdb7730aa4107324e536d5a28219c9af0e8123a240d9e5c7066f456cb90cbc9306841f132f714398bcfe2c7c1005e44e16879d641ed304882e79124103212b25cceab65c8c17319a9941725cbb64a140faab41c614e6b2bf6128395bf195e22175257456e160fb674777bccf583449595c1f5a9073437746132c78291520bbfd9a3a1535ad526763fe335a1ea78b046ba6163bdd8d223584ef345c3ff994fb8457b34dbae2c8f7c970af1e78d135c4dad7444bc39921884a5682861116a81014388723342f855f320ecaa91f85bd2aa7af027c7da6c0441654522c4fc483a01159e09d1d5c45895524dc80359f421a5d1e518a36072469f49cff862c4d03320ac01cc0c801e6e20bccbc9e445f93b2f916807b59040e115bb78481d2ff9fc9a6de7156fd58d276b872c74b4f3939391d31b92b5ef1f326332a10316fab16c960a033767a507c09198f3b3a72273d9ceccebb34f2d9da2cd4ac7f58ea50dfa757dcd9324addd49c440c49ee0489d017f43086d1e697e3ad38cc07f6b7eb14fce7b46d5a7fc87218d55754b932d0fbf20d3b1b7744fd4832a438d5525fbcd96356c8aa03b002f7cfdf709930a28e81cfc588e73f654f7095eb103d93cb0c19be3c9def73d091f0fd7ba59bb3114a10daef1627a6a2633f142e1485bd056b3942aee881272a26bb6d415a768aa40d212c7f5ce4760d3a9b3a97d466571b9ad31d801fe168f563b54d20719cbb2b9fbfe46dc08923aae3230bcdd34f6123e84b4083fe6a94d2f4d062afc9530866fad85d0f9934d99eb14b65971739be583c2362d39949a8e536546604a024f716f890110d214b1f6f7f0946ab48a111a99886822c00ab4202c09b2a1037996ced73a88f17af27230aa1ffa35dd9255b81fc1f1c1ee59f67c0d65078ce7d2187d2d1568ddc2f6e1f2b13ec9e19a5a9635dcef851f6599dc0815f6a9a47dee55818a68b41c43a8e3745e0e31732c08d2333c6dd945ad6a3d14b8a20b4f4a24314f3ec1dc1fe0a5009da844faec8e2621adf4591fc702cce907681ee5a6e2317bc06c93a0f5e6f56f08648e53a63983223bedb485c53944ae7404c1838dec456e42c0b498cce97d73a6b83442029f78c02c97e10473984394250ee8c2684dca29e2556bfbc0508e8e76991552c1e7d106e0faa2ca9e7ca12b4bc24e605972c1b5fcf4f82242e8911bd6d52d08b513d1e7ae8636802169993b45d30c56f466586997c2c08d9657af11770bbb2b763a75eedcadbe6f906ea576996415a27d99809c8f03858f7af3285973a21360ab7c83c97a6b1a30ab7b86aa42eca51d84ef486ba8e2b658b7b70438aa203eac6ef1b29a5fbdb3f7f4bf810b7049638f4c4815e1104a79e72e93a09e1781d306d98ea28041f742a4c28209117f7fc8d807b73aaa6db2cbcbeff6bae2a1bad6203947540f2dc1eef9188cbbd79f27fd3ad8880e7f5a23a01df1eb1db98e9b1b756856b987c84d7e05d23fe76b4fe3b4fdb12b2a7ae714ead66f8543fb831bfb29606996e90149e8ebe655a2c642177d36259b77818e714540cdc8324f90dd36eca7b1dd9de69c01e5c4676e309c792322438657d48d8961f2d8ea5c1c64ab63f4730c38530635d99be3a8c6866b8b8d0bb27bf8f886b47f925299b14a57594a81e0d011ae6a1106ece9dfa54a147701dd0ba6e2947e5616614d6bc591194b15b75037ecf2d9aa6b1b427527aedba7436867dbfe9cbb96301c4e2007e9728f8ef58f2590889ccdb18d7b40950d32f990887b522482771b170947d6f021141d4a2d489c60366e2932a69f12071136a3b24ad61169407f23bbd93eaf0ee40909410350dd37747f3a77d3b1d20502d7139d44c8a31186bb2d9ca6163c98cb117a842c34b1617382415e4d8617639c662f09c03222f3cc6160acc589ab120748a14397e25ad499bd51a031bdbd5f7ae9f3ed153415f1ffc94b3ba006498bceb88268fc0679929ed994495cb7185633ea92a196b037220ecbcb9765254603fe29a28f192ae0f786ddfde253c97839208d504f6e6c0024935ca739a59a1e950a980f604bd5f3643f0bfe9d7edc059a5a7a14623b11784d9394074a8f845cce9b10c56752f4e035a840adc9f7a9a183abbaa31c206fe94908e51fc1b32282473af2591c9bc6e1733a4c2b3e091579ee67488016943af067768ccb20273fe3314dc4bcd61de5358d68caaac2858e469163dfc1dbfdf755b8e02db584b9d5b33d6210a0a20e34bb3abe9149a2a53347d86758ac5eabb1d39a17c88a5e95ffdfc28ed8ff4829ac262b8d93d87102b263e90119e497cf5e793bea47ea65664733ee425323e8fbb136ee74c73e4d36b54caaf9c6be076e7034f9a4dbc909af9c81dc229da2982088040f89f802a4cb9cf217a02930263e2ac37efafa3fa9c0d870214ca99d21b2c6bb54e41df798568ab151bff8497728da6cc20e01aa66b50f904f340f5f64ed012e4bf7ea721f84ffa95e019c13eaca5334770e4335202e95d3ad2b1a417ac98ea1522b668d1df91b0ce362b73fdbe96fbbb2089b615f8162fc1b54b39b1411c7722c1e9a9760f4bf6cd2b922181abb7eaf71e7fe0d682790718fe4bf9717765919e442d3ce6d001f2c7ca4988fc4088e7116a8486651687897b408ca70fe3dcc84129bc9584edd6b7fc203be9404ebfb63fc4fd75cd0319c80dc60b562a1f40b3ee0f2c4a5e26dd01ea24cbb58d5e7c743cad82f8d14431a659271d7b043c7168ec995681752d58ce6acd41a57f0d1c7f8c69d7436b3e909ef7b812b821cc556e0fafcfb0c3dfe446466502f820ad167e0a7c00061a104d431f1f48f3ed472e8b51b989191bb280e1b69cf62ad6fb4c1d8c6e397ecbc00417e6c19f5befc59bfa9d8fd6404c9825aedd916b1236df15d334a6040ae11d1482b0767ad4c3cddd535856ca6cb8546d3edb214484d6436831fb0820cf07a85927641e868d6a91611594ffd8a4ee740b00a35910ff2875f5ecada12d8526273748512a2504184442787927ed5840d5b5b3f4ffe228a02b4b63f322ea0a8a9f0e12a52249fbd247fb149d303cf2f0894985d7568250238b664b12a5d63f80e138f84e59838df377cc4af915390127eca612fd28441de6f7127dc56fb72bb1cfb236eed4f4d2a09b365d5a74d2a49f865e1a74d3a64b8b4e9af4d3d04b836eda7469d149937e1a7a69d04d9b2e2d3a69d24f432f0d3a4d73bcd2ae585019ab75c2d884d47753392a439e16d3a21ea1a592df2c9e17c81a0095126726842ba8fb3ee5591fcbd07c07b71e7304259c8c9d82b37d2d7b07720bb1b1396d9d5f5432f2a1231843e017074feb762bb52364912d871e1dd75e2a9bff219470121dd90c3e4fcbc7d78e3c76e85ca9529b187fecd97185477c9ea66b23be2d2743590c4ab83a3ab56e558319d87e1b038b1eebe23b580bc3df9494f019651c4d3511c2bd32027fadc8308d94a0bc778b8aefc885b70b3f2b3399dd913c44e8999b2d4e65382a4c43fe21b1f79b4f53e09827f00f41b8dc99f77a44dd968ae189ae45d6004700682d4eca5806a3c04093eb1c09ee0300137b1240bcfe261cf6571a57941331d27b88cf97d3e48ba0e7c1fd21b454c06780040a9194c59c63221bd807b884e82a3c80d9b91016b8e0bc794b51ce94e4bfbf5f29183d93e617908282309e57030f1f920464b744ba09339e6be58ff95cb1d8388edf7baa49e5b72bfa211b7fab4f1b8fc54741d743e23fa290e6dce5f47f92866a27219fa77f6c2c94cf6a52fb94e158e0f2e30feb90af7f29f8ae780393a322e38f7a01e53e823fe08d33d7ba331cb1b46b2690348ce2f387a8444a24f55348297eab6c7d170d00b0ff0cad63a84aa5428f2390842cf3449a97f262aa46af89829b952a8faa1dc69a7257c979b5a4cefd4d435d9d3effbc12ecab2ae1cea424bf589d12cc2460c25ce88545e5bcde74238684af070b33af3cfdd93d88a81bd256aa5ce8909d7f98e5b389659b08ef60c97b74ffe0100ceb6a8eb82776afcfa689ad1e366f5134d78a15a48293b13781a82f73c2806ab8f163a547e37ce6a1d95fcfdb0ff340e8e52bf78faad9f4579821dafca7e03d440868d01f4587b9730e07d739bab1b0f2e6fad3edf06dba8cb4cbc9daf19b4244683f86e43ea1162f1f0bde0e6acf718ca93e2a6907100f171cf7d07e5be2a4ff8277a8fde468620849e2ec57a214dac1b06cd824a5a0cf1a1231b430d8b01d9de43cb816179f2892d43f50b61f759dbfa3596b53b1c636bc0d53ef2c237927473b732be036d89b013f8d75756748595f8f9941eba2bc698e767e5dd91f79e3d9c0ecbb1186f77175f911cd496476b64dd6bbab39249557ff47651126e34657a2ca373c7e5304cae51864e37a3874c8a17c1e5435d73e46b4f68bf04392d3a5593439fa3a4fd73f1a02bc3fdd5c355947d88fb971a21cb1c087388d219d0621196750528df09f75c0e6f61294a187743f286706da035c0c36cb50cd6536ef6bc3c1f2ed4c5c7b40926f2382ee9428c0cac0578cd3920ad57015973c68b79f802b65f9b91f43330083e5da0b4cb485de31b5d7f50493a18b63d3d5906a1164ac9a8140da7ad06e4c3a979c551203c3b594ea8fd63dd18b7ccf8710ee230c71b2777bfa7221a91d9ae694214d31f87242eafd6d8e7879a20c020dc63e0b60ab7337cd10fd9e3609c4e81d1d755acc0ca8ff0844500b80947d276d7ed9533834e56a880f13e9e1f51f06392dc97907018174ef34d9d164702d94020b2412d983dbace096bf0a29a3c1df67377c8b05cb3c47a60886fc76fb1ba5d437447c9132757c753e4833e61162acff951a07c282d3384b98e5d587a386f0c988d8b35b190ccbe4058eb2478d65a1c9750e6ba2102983ae660c056c93bdbaa3d6034a9934993e964e0e50f536b215771e78defc450d076b4db62c245caade5cb0c4ed5b659f543dcf2c7ddbb24e86d2d9fb6860cf71dca9cd545ae6e7a350a900f1d45b6a658559e99b7bd36301561a36524b0b69f88e94c1a9c7664553a90259ae276088b54b52816691bdde4f74091a1a7fa24c3eb47a054939c8ee6e4e025b7353e644311821de296b3bd867fb8953f38a672002a84812b5b7e834113fa28022e6f7ff5086be53f36959ff6dae2234ae296ae50ac8a05cddc891cfd8fb79ecfb90321bd0ba27f9ed6de0d4f985fe613c3bc6fbe34fff5100a129aca450c42744589c3cbb50d1d8d937ccf4c9e3017311aef1daba0465e3c84593402a7c1ff97f5cbf67c16af290d879d431328f7de35017e6d8c4ba0b252c5b638e36012fe87136683232d6652be152d3f36f5c253480511e43ff500a4cff65ab8c50e69963a9a843cf99f3d78d71639854f83faa7ac83b69a22b5c5bf9dfbb426dccb0137d514a3dfa73940ca6114314f7ca86602bb48833ca546c28e28022aebe58cab35a870fc80cac5548578557a7d28ec3e005980c32a51094cd20d118a235ab9411c5204ef0af65807fa172ea3fc65e30c246eeddf60f50e2c8044b29d09528c2968488b2c38c8f6ec918f71494d71b1c4228e28f842423d9ba3910a68155cf5ebb16f47515a4537ef1d135b26bb30aa102d22fc21c8904230bd48e724929ec855b452053d971c8f1119ddc3ceb59684606ccf820b84ca857f99ee2eec1f345fe8d646a3470def2750596d85d879306aa5185225f81bf7855fbbac587eeba82a7c5f534117649799fc8e39fc3aeda36eb8bdcbb05e5731ca1bae2d7b1062ec8090b4a4dad83e0398f154a5243e5c2c19d39d18f1332b8cbe1dbe24fca422616e871d7d228410b83bd1ca046f4029cc1972a0bd1a50781f50c828fd1f717b6cdebd0b888af4c3355df473493642a4b3bde8292831d2283be6529b6b54b598399c7a538c248008ccae4b398adadb008dd52423e0ffa625d922c137e09d472532894d67bd07fd037418bd4b375162ea420aaa6e4099e7273044ca612c31450e3c6f80a9c182a40f73048504b586c54f73b5753831c0d190e1eb00a6d0474735fa18471d1e9c2c21b04b07cbac1c1cfcc769c817fd1e907fcd59459a50893f50aa72ea5df8a9792eb8d781ee565062ddf9d060f9d5decfb47e58a96928cbe0cf6e7c9311a1bcfba0816f53845fab07c9b09ab87d064c09c70bf2df2065bd185f7ff1b9d471d8bd5518e2abc4757f820ccb1401c23812ceffef06c3ccf2d5e8c1227d4646a390eae1d16a52134394c46e50745c7d3b22d168b1a08dd328cc09ed266ac628bdd78076488e9ffa21fbfe81ce587290c13c8c490ce0b5314f72a07c726c994db6e9b843d047fab3f8f58ad3082ba5394166a272c63738d2fbd33362045aa038d0b37f687312a792d925bced4d12974b4da212a23e680030f77315ac07c288db964313ad2c895a5871e0cbc043d2b12ebc7292ec263785edab77064491ea26d02561bfa1597f43e3d223249f754f7f6dbc149acc671d46c9c31c32f5d4580e5f412bde9e5452ecf03fe341b30671394d4a4ac001c79a8e6414c926eb7da44b05bbd222c32605137dba4e04f93ddd2f4fe11235b3e22a2e787f7c626adc7eb33deb4bb0c5565ff3a64e32a2f7e3d7cd59067a95b8f2d182c5344c6b1f13b5a6fc9a3032e21d73fe9f6fdd4c18d32a7dd7f6fe2dd135f60a3f9c993ab9a8be2c48996cb61a7db8f5f1aadf3fc37a69abdc391e27123f2edba89595a5b387e822ecb577901ea8fc0deb5440d66cf0f0921de1227bae2fce53aa53b3a1519110bc4bc561a9d8a24dd9f37bf11b7dbe734267f46938a800466028aa560614feb5a04342ff1894adfaebc67ee35b7db3c311bd52c6976a3e8afc42207d1ec6f4de3a5b17f348806a14de34056aaf4d24cdc9ce37ea512d862793f54a9b2c620c4a149205afb295a197a6dbd82c306b531337d1de370c00ff2e3cc0a848f3a61844ca3f4a8fc3f3d5c9645a6aba2d3097eec9bb6d53aedc01ee3e7cd2c0fc2f240b2a65e4190a0323d35f7fbb02c16700825ed8b743881a918a61c8ab34a3f16ec549c7816ba89024f233c885d19e1d7013babd4e8bf7b5199ca5128a5ca41abc41693aaa4d52eda81aa341f33925a055dab56facbedf9d9eaa70b0b9af047dc9c2ad3a7343e3b372eccc94348520eb69f20822e6d50de66b6298efad9f250a3c8f0a7ec62ce2911f8854e248c82ed361015e1a988e1b7125656973dd5ed047de22fc1dd0f3456050b223c604b28c7e3f894f23eb392b41720a687fe36c35b6ad63168c91688fa9259eb94c00daf873738fe9c40f83bec0388dbc4158a31a01510ed7d033b294b6aa31019d09a2192fa67c6c7de9957f55119d04ab437dc40233bd07ac6824fb408adc0f0426c59c794ded961369eca81cbdeab526768b6f4d2ca5705d609d24920b35aa55c743717e08001e4f39ea3e47dd59acb3722adc7515561bb80309776e775de9e365e55c2dd3c7acfafe98f35a16a9ee0e7bf6084fca8b9f7d655a2a3400b80e28d10eb3fe61e91a9fd17801d545f3ca1ea4a51043842a471c81051e5046ab8ea554df8cfdd7a4622da87718baf0c01ae56302aea71597ccdf333679f69430dba1e21c3051feea999cc41d38cf8e3aac5972473d7b572c165c27ec20a868f5f0b05f895002dab13591e468cad9b1f5d14fe076b851871cbb8bd3158cdfabbc8197b6df69bad4797aa4fc2ed76eda738753a9947b21932852f036518b5750de5bc391b4d65ade4c55eaae5fc80803bbd114567472ef837e86c004f71c0568c85e02d71e7e51f9aeb0a5bd9078518c59d5016227113d770444ee3441e8b9c90e917fa7a31f81e9d771fb64db2b79221f60cb143fdfa0cf9aefe76db30e4f8c7fec2833dc89bcb6458591255dbde7a46ee592b1c9e343d0a2c8d7d8e51edb12cc3babf69b3ceb2282d6ea7210047b20b752bf94f5ea58b5f03138dfc04ae27f024fd436b4e06c9a92b9d44f84580a340860e071fc79efef14507a80def7e51fd4b7ba7c917450afc3c2281a708bebe0a42727cfb51d2fc4ad94978b0adf8b436375ecef5ef95eeae3faf737cb9758c80d0d1ad3a7c300a1e91468fc8073ffca7b157fdc9d07a405c20d32842895ff516989e1c3a7c4658fccc2da4d7f97b84923f3cbcc695d1e4cf08dbae920bb23189cfa83ea03f7aa4ffdae9784aad879421354a22018de85b0199350204f608e0401bb242e2e122e0dc9fa1aa89008922e8c79666addcef5a4580dd3679200ede0023d92913a930cb59c8e102d299aa1cefa6f3e70190022a570d06001549cb61bdf5bf6b5843719e650760a6c4abc9f5f3b9337ab8fe1a5775854fdc06567006a39cc8efa6e7fa05307328aece732911a60195307155de6a135c74a12fb122c428fa41657e3b89593e708dac610709acebc8084a91bfd2dec1bb390c1d259a5cc9a723299dbcc4e51d789437861d26ea92e165fac6d50619e5abd1a4bf5f8109652f18be0ad2f7a2722c4b687852750048dcd91a2cc4f383dcc0ac25a80a044b062f060500d411069bbffd6b4e8badcf4a90167efd93aac294585e95a0c3295ec5f33318dd6e0204d4610e18205dcc51763c706fea2bf26d25eab6604d55df2ffc2225fef9bf7fee654995a863cb2a95e4d170701af34d3e0b36c61119fe9f63e368a3b25f185fa36e3655225b77d4d7f54f46a84ab70df4b2dc0f9b5293edff89e9c2cec31792da865f580028c88825acf2df2672d7484a2a814aa90333f0cd78260441395e661f90c88d8150c743bcffe372017b8d0b8affac076690c5180d719e7326ed15d5f2fdab46239111b2b7356e39b52cc5a807cf05f25a83718e254310b199658619f2a52a4c7250bdeca8f03533eadf44641611a3a8be38db6646473b8342fbc457d5bbf9c4bbdd12424bdceb733f7c0e42dc75c8a16adae6025e8dd3b15b8b6937ec83b259e0ac5ce924545c1b0cae15a8ed70fe7231187da3f9e476d5b74274bff2a06061da70b648b5cd3b23808b2cd48019ccd8aabf109b66fcd9fa5acbafdfcef38b657cfe872d00c272a98ed936388d189f4d8a58e256c5b3ee0ddcd7af2a42752bb2df9a5bc380da649d3f22570dbf24cf30dd01f7c87cfa7024a50b0f54f993e97b4dc6fd5dd54be87eaf3632f036b0567d041072b68885b3f50ee88f279e28eb0545824306180981e1aa6f9d0924e6029d17acdaad346e3c155e90a139b0ce2f41343a763f42411e6bd229c0dbee28bc66a0fbcf4f646bd11dbe133cd903ee17aa199238bc3a2ed2d66b88b89168a8407d58f8d16246e0d87f6198603b0b67e16f1861207b248479011b0af4146bc88a4819905fe99b37851b78486eb584f4e98628d092fb9f24250a1adc0caed5dea457cbf1e564013ad7446bc7e4e3383de0658276084e699c40189166bb5a94ef919e0dc0b9db1b6d862e06b03693ec0d8d1a8c8708cde8bc04fc60607efd427dceaa935e9786fb251b52fe4245c92f01785af764b66faa12fe71ce178ebd4f83b7d1a599c95d928ec49ea4675eb465f3f67ba8d307d94d97131bcd80613deeaec0a7d3e55bbd4b270fd72f86f4408b73552927b539f693fc4c5740ccca0f02119982122364f599fe8b7aa0302adf54a0d41fe88053348121238d02618d5c9496107b8dacd443a03985d32c94ae88ce5dc01dd914c147d1ce38a2539e916cc07f7b255099d598efc13bbe3863613d9198db36cfe28b8d8316f43a8bd1e1e7087fe9b63c6d73948921900a3a37c73c77901ce454fa156ddcb85848c39057b7c0c3084b08114beba056e7fe31ed6d4951153594533f604918585c3df6c88f5cf8fd5edcb53841a749ac3b4505ea96f21a450227946ef4a5b560b11fd5045d17d6bdcad28c29d449fbfaa0569f93c386afb62fb70d5800ad569c8e6720728d392151329ac4ac8dbbf4876ec9b29789b98eab7cb03efc98c05113df24fdcf321535d72acf5364c9edc5343158006495d178755e88e3701cb97dad407c69032c8edc04cb1e159ec37c0ea1dcba84430969e256bc226355419d3ec6db34ef7076f451782a645169cfbd9d28c826adc508233e86ecce5f4d6819253e9a854836841e0fd2aacc184f923c22d1b7d082e5f5aed000fc5618168b5ebf93f2b8cc7b3b010d3ee2138c2b8a2994acce011afcd960bc5b1a27205a66fc691707d0e09054fda29a25210b80b28ae490cbbdbe0110ec869702c22983706d5aa5c8f1cc62eeb0f09f9e8fa5904b502fb487407101ec95ac1b87d575c3eb41e62ca9a235891de2a57b1a70518d943a7363303d10d0ed7a7cecd3221c348412e1c6f5326d6d920b8c69da771e7fd8b8f55a03f4ea33cccabf6fad78214041fad5c03b7fc5455df2ed8d04f759e644f5a128cd30b2d7fe3a13db1c8edcc8829a08de79fe69ca18e9831b93cf6ef9a799a814033a6c8c1d4e63b046c1afeaf37448b0cd76190d4cff8dba5f734abd6cd50b3d71a3d0b6f2e2b7e406ebc57c9f1696c73e322ae72d3450a6747f30901d15f61c1fa4a1d186b233e6aa37664a2243da89fec65159869caf73d83a280a6ea0fecfe5391f03bea6c7b83083f6312404c5b1fe0b078bc9abd3342243272a5a4825ae2602c8144841c0ba9130d9862611b690880e943c4ea6a1dabc61d0cdcb5e66039e25a37d7aefe4b8015d3442fc5a288a2e7e22e787ba8351d9165ddb8770edcd77082958ddcf2241a8743b638f359d7810ebe9c04f22c1f13113eac197fad827567ab244b3d4f15ad727a8e35a33064252ad0c91371661313cd3cabcc1b12ccff0215badd5d9438f0e29a4012cce670010c0e0e00f08911b4a0a784bf6a571e3d87ca4c2ff019a58970a8a6982bbb0016ce932bcf9743fc705f27b0520f1ceaeb5494dc9fb3a2701a0d33caa0868ce8e57541d235f8a0e3e8348310d6d7a56f4d5148789fac474e36b702471a67488591424b05d75811478c1d188d3fc1ce50e16a64bf940431e73aca9c3bf0111b282f19a4f7db6890d93a580cc0881f436c28ad821042793e99c171b0406f3b69b0c084bdec2088aa7a29b8a8d8e083d131052e7164cf35a26655ab116eaf335490e727a74e57f81c2b0ad6e0b764a2454c1ebe14733afa26c4009070f71567c3d594b886248d5eb6bd71d96aa40c2b8cc91a1e565bf1f02a444419da714c0df60a785c8864c54f7eaa405ceef7d74a8b3489022f1e1d57d8799984af6d7292a87438c8408f5605a51acf3b36406ddd1419ada4a136e1bfb2bfccce9c503d3f4abb0cc69597d02747f3cd19ce99319340acb1709ada174c803c0a71b2fbdf364cc7e38e1a43db5f63a94590b6b42eca47018f547674bb8d2331fff03df8fe33783eb9841b6216da1ace1521aefd3c44389323c34b1316ae69984d731c95f0117b88fd4474af1e4096ae0408b8b2954553ab7f426f1a3e8222407744b6dc870e2136f37e7ca69e6fce6b6d5c70432879b73d4e8bd1d724efb9e859cf695064d441781c0a78dc26a4691a65861368a31e27f9d842334de6a5720569698c00804b73f8a23948b8792a1ba9d4b49b2bdbad1fef28bb9fbd04fb8c1b1794be075a08fbbc9c382a2b704b134ec42b3683303751e2af5006ab5ea51b5c9ff463fc31adae4cd36a986ee6a08026e4f4c201c11604a1820925922d243c2d371f31c0400b3b5c352f853f8fd05437e4dfb32e8085395a6b5e434db05c9074a2fdbb9b12f0e99ec76740f3a8b825dcaffd164337d5a32f7dd6f5b8e8b9d289cae3068b3201ef7ca0e6eb5e01b2882cbe3e26e72bf130b92586e17cac43ee8c5d1f3ef204bbe26493a32ff22c53672a638fc18efcabbca4e12d31461227b33d83729640a192a2a7e9ae46b81ceb56380fc5a7a5bc353c47350492e5f44c56264eb9ad8dbad4b571febebb7b6f6a4446d1808c194dd7812337ce9c5c56ac47a0729d42e16891a330192df40cfcb5887afc4df85c7cf81ddd29ec20f460edb01fb2e3f36dfcf750a1ee04ceecc133eaf210ee33c8b2b5b3418dd76f726afd9edde112498129de5b1981b017f06b93a54ad2bdd2f09d7db62aea5f8588d933fac1b15b20aae1cc17aa8b724343913431b43cbdb64a1e928883c19003bf49dae00385a13124d37e25ec30bdebf4d0717510642482b51f35e5abdf41e8141e97ed80cdd26d719e9add945d524615985b5d4acdc1ba46a62bd1c3a7dcd7a525fa0040cfdbad4ca1196bc02a407488e66f50556822525bcd0c6e5933f059f9d8a47733dc57fb566540d18eb33a41634b944e9958af3b587a488f13aa51672ae8edd50588f7f6fb377fa262fd10574a8b7d64d07b887eecc1d7941d18907ce62bac3704dd5a7dd508e780d5599faad196dc38288ad1e4c422c196afe742491898517aa19d3f26211874b8c2abe4bbab5b49e7bf0148e5b1ced8a35f8c3181da3ac4fabdb695fcf802d1b9009742213be9eb333a5c6c862ef72d3b522f8b50ecfe3d5b1b1ff66484a5946f8ff5d84f79fa90e8db67b86156c70e1e9600927d719ae9084c095437e3652405e5554b6c7e4734fe7b566056605fe1e2c6df5c3ce4c24a3d57e01cf6436fe746bbe5bde65caf616b7c4633031edb91247c61d192849659a4823fe49c778652e272fbe3a3a66184636f7d65023ba0b28ef512a341df9cf28eb0a786903fb8d04b36fa234c7126fe6c006880dfae0947334216b394de8661c141c3e926387177f54792fc181ae345f39accafc1d70029cd1e38cf97e7b0b037bfd60ecb5a85f4892d3caa63750ec459a9d18cc8ab05aa4c312f8cafad95aae82aef7204942d6d2b5c4282eb560e718dba5ba6d57126054e1897d68bcaa45c92b32174397c5e28d351c377945a119573b65b31d9fc9d093ae5e1c17c2ca7a7184b67eab2accecb123ce82db4174bcf704a52c7bfc2b317ba2946805f3bd652172eef249230bb57c976dc058a80d2f7b807202a1685239d895e3224a00c84cfbdf61119d6f83f363f735dd2e495437917a82d810c52d1ddaf07e3536ed6cc44132b398fe5b935c80f1f6183654acd30c998eabaeee3f248e0ae48f3364246a0a2bd3154afd6d682daee0175a1b759c06771ab34a44828f2e830d87270b2b900921f819bb89d6e5572b66208ab179e7361019ffca720926d11681491f811bfdb07e72580b575afdca431fb754e42d6453eaf747f32a0828b869031d1a6d1836dbca24f3f677436eeabf2baf9c77c5c5fc8e11e3320c21aefddd9f42b3236f2273721e16480e92381c8411ae1bfb2078873308ecd650a58a99fff09ab1c88c1271ec57c330e084714a6ae880a5f1be3e02f1bc8cb46610b318af444ae2d40a4211a5d4ec90b5e255b45cd19b9c09408401746cd7d8d48a5a72ef9d71a7c475c6d71896563c49749bacdd215a41e8c811dc6f000f1a6f34a13d20d1867376e5e56002367f9e1b09f0cfcf98fced14e02d586c967577a4728a42a05f531d7366093466230666124daaf74dc446542b9b795b1684915dec9ce4ef4a3fdce5c051de41c3bc482169ecc33c36d887596cc8dd302670529a4b0f5c3c6d6dcf1e3c7f3565683ec97937fa9aad012bd3fdbc659c05855ba108fbef389fa24d7202be24ce60392be3f973bcd278aa9e986598fb2a0b09863e1865f3b0982b194dcb358e41e7be782a78dfdde1cb603253a9b744fa324c4a3809f0089705adfbfb5a58f752d7f7e8c3e6dba5ed36f3fd62b60d97bf9e3704232aa1f2dd8b74a5b27a1c9c48a697fd7d6ef70b990bc3acac89d3cc05098f06dfc18ee958a77006fc54f18ed2aa9bb4ffe0154254bd5036ed38119c5ceccf0bf538c40fee124a151117945c06037d7cfac538aaadf588919a8ca7e4fce90a65a61313af0bbbfac7b6c3599d7fb570152d205630ea4420d80f445f16f0fb2791832f29cf48a8098aaacfbfb7d70076b9ee8002c7c6e70aadcda9ef8e093d1fb59d3e980f5941d491e6b0845f957ecfbe828f183cbb73507966f77a926db501b77e0b57f91d8bc87b4bd83f94c388761c9d0531f742847b38fbbc570b4646f286e7ae528b82f448c50486c69f579c7f15bcdc9f345b908d67f54406df177df7c5fa165f71434f5a8876886b8983408f4c96c8ecff4ba36b10ceab7c361e5887149a345cbcc220c59fa5f59bf7b51593030848af28a014bc4575cba4c82262567be56af45fc3f0ae2387ddddf7936e4b2df4163d20ebe6f4edfc5b730ec4b06c959719dd7f007d2f801fdbf5782f2d139333f0abf3d158727a690828ca4f3179ebb67f166f72128c94c6dc760b819629626cd7be1155ee3f731bb27aaff856e00d632c23e34edd1c765735f4450dbf622830dacdb60485b39804d46e183b860460ca17bc005ed180e0e3c05a825e67191229e63726ea75bf3979370d3a0b5d33d18256d7e8945a5c2d3f88712bef4fd7347212257bf4aea5adacdb173d50aec8c114d4e4246e8eff89b85a96981650c14a6dfae1bf54deea324cccf9da1ace15cc3b3ef0926ed4947ca10c51e3d9ee8c4b76c7da8a48efaa2157a5f5f5d07d32ae0c46abbfc30d327aeb6e24108021faf3f87bee4e37f20b493b0eaf99662c136ddaa83dd0967abcdd3cef253ecd94396c375587817b67d06c306da67c597192f2c00676f661d075098208d9e0f4bc40a0d2347123a8aa01eedbc1cc779b71e002ce830fdf0c20e223ad55154139e86508f6bc6022ed5e3c720406b42356f699be0618b0cfb27aa2ffcedeb356ca616d562233e36293f62e30b2e32a9b811f5d91ded9400ff43ad6317221077a2b521f14e73ad213c5ed7a2761a31172a41a59763ae575b820f5c0537eb8913dd6ea10e3abbd137d6b7ff9191d2fa8c1b9f750c631569fa36b4f410c97a24298f55540849dfcdf373bb8057aa26bec1a3b45e52cf1abdf2f961706505c19f30666aa77ae5b325d501e920224ec6402d2b0c865b8b6c3dac98b5371e6c81babec51496fd0c899ee979ebe93148cc5eae2ef578ebb789f9d495b9a9ee8f96d396e84fbb88683b09c1e8cf764aa3b27d25cdcbd2ddcd9230e288589cc600bd43d5a5313bccc2fa113e738533347e6a37c7f7fdd7d9bf393489eac74b5bdb9b180f3f712bda9c7ae46b6e1df6418d27b2f3b9d107ab4614494fee3b0062dc08ed5f907a1009411d06b7c398a236ab12ec97e694791b03611b9e40b52df49ea376e7bd50acda8ebb7b76be99c5b0ac0bc4699633ef5036f72794a10b7df5d3e6a3994161ce5129a148b1f529f01c831a1e85dacc27e611d31774b9cc8b3bc853d2c38b8f0cfb17ca129785fa9fb482ec01c6cccde5a8d8ed20f2cb3ab1e4904b40bcb7e565aebde815c032da89161165a344f553c51fd9f6ba6d61b95fc335320ac71d83e0bb8b3e96b396fb61d388289a12e8a109932dcea9d28fb9f86fc731e4fbdebc4208a35208fdd273158dc6b3c6245bad2273034154c0c3e1519f378024ba63ebfaff0f46490af6b270eb095f85539867fa41db0a8b03e40ee422f0de0f60a69e415ec72bc3d351eca585a87160addc163690cffc3a6d4364f55d53adb46d81592d25a82c9027bf1b483c9abf2d4b37172fac2dad70fce000815c26daa8d63a70b68c1ee5b1a8e39e410dda0aeac5345e614a0a37bd72abbb46c219392f29e90f3fc1e008e73b3f22d362cac620da1ab0f47868fd95036d8fb2b06069d8583eb071f944860890bc3f126f95bbeb78f6fe8f30c805cf74941fbcf95ed2a17e85672a332d255aefb5dd76ba1cbee358edffd7fb83a2d1a2f9875be2cadaade23570d7d773bee5c0e44a8ebdbec27ff9a14ea5c7799235711649452300285fbda290e4fe4ffac1fd07386b34d027c98635db1ca77a204a5d532ca3b85d21e2638c76a19f4e6352a063243379f166bd2aaf7189b06f026dabd89908e1522d3a8f10685082952e258e1ae6f909409dd34c46e920fa10ee2b8e22f77c333d91ca0afe34f8c8f3bdb20a9932451df040af4079177f61a09a305fb26a3de93cf3aee3a7bdc102933279d00fde59befd4fb669ec155823dc3da09552e4c700b279f1a31d7ac216f7be245e644c24606aa2ecb1c47559d77380cc1c5acde83a2e3c88de299a37c2b48c1f7067f3ab99619a7012296c4c7e92c181d83fcc7561d1b0c8e1dab0e235d96962fafa4b8c8fc66d615a4c1f09054e755690203b902e6a04f8c551b41770206e3b2dfcd819a397894144374cc24e8ba41f37218224757503d4158b95b6fc19e22cb18109cb24b3c0d0151f1f88e0fd9fbea11316ced68d04f1e3c8bce41753a15a24bd2c61a19456c12c93474494e433dcd2da6541c68274a168c6596de7f6481d12241b6c7bc098de8059fc383991c71cc17d0037d58ee403ab48b3581199228ac2a4cb3a9f2c9fd24d4a12cd18c294c2cee32dce2a2f21dea72c909c22798936cba7a62e568793338ec3a6ea88d5217b8a93da463aa889a78f9975b4aed6e053ed61d2679a18f201c2270398347cbee603882fd30355b0edab5e74c375513274fb2b468ea100ed97c973d2766b2e485b5304a8039176241c5654bd243ca59dffd112837c14870fe0be036bf86ea8eb786e3e4a7ef7b21003ebc5f747aa391b467940af195fda7bea56ccf418a56acdb654ccf60bb9297b6cc66fdce094ae9d82101f3fdeb8af96018316856b9eb5bdea7f9f7af4ff029065b62561097f243aa50f072a04b5886efbcc1ca105cc051a9e770dac886012577deddd7c4563baa0d7875496ef1a14b8060af64eec8530c6a71149e18864517d787918fe4a9db121b69d7f14a6e6d739e262b30fd09f05bc78c75f7cd2934a00430cd595ceb7c5e773519eac7f334a66f87062e194dea8296b94e727bf3e3d3523d637d6e3c9f973c73926b575f46ab1be065fe0b65881da3c425c08db29434e4647e2542c52a30eafc61afa85bf33d21dc6f68f57103277edbcc6f9588f0e90507f06eb3b0649cc1996548a180c934b02119e6090e9b7a4d2c61f62fb3106c458405acc34fa48a95a68204d14358154b47b31a2dfed99716ac83d50d415888df5cdda41aa5753981d0b8e04939c7f42e6abf003214f3f3d34342725d046e249b160bc8129df41f2566db30d167a0578baa0545bf387bcf5fc0dfcb128590ded2498ca88a6ac8899647faf746cf8dc369f54be982e87cfd4d7d252e7989f8dac3a122c1eb2dc5248b76007df2c7a5fa8aeee0c07926ce5d114fe10defde493cc22460d46b575398935dfd08c987d662f648d814c0e080c76b31ed629a54b5821a13262aa0c5d65528c34ba4670c39e8fb6bb39ee61ec2657b0eb4a446ff141f392e20a062e860d82c56dc942db0db010d83a3f69ad06285433fa1d02a20d1122e105668f36f26662cd60357003cde13d8269d84c3aea5332e9080159590041d16377deff8e6709ad3117abbcae5585cc7876f5a84982eaad8af455d5c90d90bfb50fae92d466ae820c5ce76af2e298da51977fdb50095f3ed5b256aba411f8434bc9b648db71c7761ac18e65014ffa05aab1fa34756589874478ef91f38c032fa672af462b61ca268f4087ea42a865a28164b7d7724e32b5410899a38c94dce8f2c4fa5d79ccc53444788dccf2d68c7f85c2d793851225a5153f5a13b05afef5f9105bb97a363da329008cca07ecb6548103bbff626c89c892c7b091a04639c772b1b02323d8c695b25d64c032ecc5c64dac0491888841bdb09e5137b3c6705a3666dd5383116dd4f62b57d0f0f509603567eeee5b6b6e7b6c67006424e807d5ec6d818f54518bf1875af0e8869c08cf3cf15e194178d46a648fdfe5bdf8db3c0b644f0bbc1d8346e772d0343b84ba92e1b2682fc3395f972467030b10f9b5fe45e373e9a3ce8a4746750c041199dc6d7a5421cc8a1238476b2fbdcaea05f7376c0e760f3436f9cd951cd238706c73e4c58bcc281045682bcbe27ca3bc8985731572959d08102f2139b94752076b864a54d009fab0117c64fdd6a73622b0d6d4f5a50d3612100c9430689f910e2379670b84c4ff6dcfd60a11793bb1462abc21979458523989fe7fd74e24d0663e6ad808fb0fac6ee2504cd458d2f4be950d2e2122256a23724aaaa21c7155d374610cd47bd9d7621adecb9e4a102b81067472797cd55697de673e10b22e39759d6546dc1dfe9a46d7678771dd2cb1b54335da82ec89934902824180034aecd5ba9ecf9a04fa1ee99d91d6b59383326ff770d7ea349e603446bc0809f5ab29b02ebe4ec90fb3b0413b22826c3026b7cd2802f0bdf6d3e4f5f0d041a908734f043f6af279de5f8539542d1748eda302f922de4c1d9a3b11f6a15e1efeb6bdcd5f28daf41fc487e51e1b7a134ff426c054508a1f8454b828187f0ac3681b43af6b8ee20a021a1929e54960859b36968a38a15bcc7384e6aae36e75ea1a27a2504114214f1d4b9e75f709b3b25b7ab8d658e6d1cf82b5ce262ed94e008b5be7714a9a23e1b24ac5e8e0c71613dc7883162f52ed8c485f58e8bd53c542f2074229b14fab687076e3fbcf1e16f7f531678672319b56f775b537a2c2773624515e93f661b8956a66ea6b413100177c8c8986f4a699b5923657cfe156677a56ff81c2de3e7326c958f1ca48d14997c6575bcfdec41b447f6e56582c06a50979c303f16fbc0b3edf503c50fea69f63ac354e925b45b4bf6f53eca6315144706c459841eeb43d24296f0cbef737d75c6ee9ce635830f690c5ec692ad09820ea70d50ec7bd423f36b38faf8b40cd7f04c018b3806bcb64d5bb51b4bd47cf9a68a390e69b3ada864ff6bec5c8ce1417c32729d4e8ec3274c3d58a59cae4908b1e17fa728c3652b880d4095496df0edc3295230174728a98c518eff43b4c525e2151114ecca3c2cf951be997b24bb6d5c3e1c5af82635810443656b60d879765b19d89b3ec41908a6e2a80e11807db6912f9c36e175e6a9e0e479279f3076044ba68a98198b52be8073d4c9a265db7352d7e23e235f2d4b7197295840f2103aadd3e171efe999c7ba19d5e400e04dd746f905a8e2bc649d64153bc8882bd6f548f5cbc1a726d2c4c62716937b74c7ac46d9e48de8f1e4cebcee79ea4d0ae49dbd8476374b757748fb5bef43b9c72a93c5e5118eb951c3b4326611dc3560df34dd28ddf5099ff2a1f37b8d90783a1201b4d1732ab282def1e3fa08acc0c4b57f9977bb46ba38a5579728f6ac2c5b82d7dadf3a507c7284c2ea91f42a449f3534c85b2bb2bac0174fa5d700a15a526bf9b2a39ff229949e04941373ebddc0c8eb67d14edbc79358c7ade49bdae889dfffce9843656e4867d0d156c1d6cccbb0ae3cfa9e3545c5d46cc17a96fcfe2e5b7ef78e0e70f710dacd264d57b97f6e6c4f21c6e09ce2a5b27c9a3d5585ea004b7d9cf0545c884686109dba4fb3c5e9b6f06854abb39bc79b7bebfefd366c44822ebd9c5f62195b69e931fb5da6cab991e19f52e44e3ffdd0cff268e4e188ae3c9f8962e3ac3592f9e807d524b40b313c78a16b2cfc4ac8da911724f65715de4d6fff5b388ce1aa7e284871eaaae121946a13c4dc2975643e61ebfdc6685ef6367abeba60b43b06be71d7d8a193025254b662541afa2c426d6b850755accd631812edcdf095c3a8692236bf8e74d0db7a5ba566f03ce19b1898de1874545e4bb4b2886ad64851170fee3fc08aa96fdd06f4a310447f276994ec1cc65782d4520cb10961f234738db56b77951affc8a028556af69cf08c59a1503d9cbb01d4f220dc3326e36aedee39f5d76cc014626b46ae6cdaa55de324f97e885651b20afa9fffdf1849d68e6d65a62182600ea723a501c298ff87829a5baebe9c4542f32f22e21e4ffb59540b8118d76e62c1349fb2bbc403aa89a45b35f885b92fe8a6ae3c37fb57dde92f2eae232cb99872d414c666ed012ca089a5ce4a8d88b8f373bc892f89bdcff214e3456067e63564fc742b6e8780dee338e32fb2a53ab07ab96780c44997286f65299cbf0989d6e9a86c260b4b089d53f90553c558900376386f55cdfea4041fb91b88f8c0382c5d6ef44105a185b1e810e545ea6501fdc8110ff401741597858761d54d2cffc26bc38c750501c2b872fcd7b3737dc71935e8398c86535ded48a52e0f72332892e43391031720a0b4431aed2cb064b5ba0ca1cc8d52cd263b1c0493c6d87dabf47b5ad5a050d97d789801a0406626765afb57a6626f91bbdc18044b231b804af1aab4d0f1d19645422a8884c6b57ae077e87ddf2b389fdc973d2a4dd08371ba3e89b303e58d8b037d784669b82fe07eaf919e2c0b4688bc56147a3f4cb7d30b25b7f4eb92bd532116c35013663efb6069c4c91cb3c19a9e7f260ffb8cab8b103f3b0f03a1257af78eb5b7154a37110f86d7e9b4f50186ea6376af793f284a41644a13cb49c847ef274a0e5053d2217d9a56840366c458f1d371f43f17679e88f1a39d1dfcc1159e7afe285e209eaad5d7296338a7fa862ee1aa38b10f0e8151d7084d09a4fd566db1caf1aa24a6cf1213ae6656595ea2f44e15b1db7e06fe297b57ae3b256f5311975d31abd54026f81794afcb868d219812c68654c6dd4d646cab26d1ecac42a36db11d683e42b066e2158059b6cd29885f528fd7523c60642bb06c2273f765b0f8dcca3ee5cbcf0acaee5fd3383f1c0dbb7f4eb0d7530b9b7076009bf16f5810f8478084cccde7b5070b34e15354eef5f5bdc281833afc49517e607db9793f3fe2f16ab2fbd64d613f9d06197a43f5bbd44d24f976028e5cba3026ec02f1d7893e60aa069a51cfd78a41cb52e394c74c1e4d9cacc3f702aa1402e7b0be977da4bdf55877cdf76f8f7b0b7113163aebf992079013020b4090b9d6a48ab98d033e4e5f2871aaba45322e66af499b13f62f219439c9e0a95abb5a83b08f5262aa477bb48b15b004e598c30623e8c516bf48098fa8085c51be147209564034dc0f3cbdb50c73ac083f3ea77ebeddf00badbb37372c97082269c8e4413fd1a6e5a907be554bedc6cb603aeed5fd72084df77916429a2ade8f3b9f47ab6826ef60903fb05da9bbdea803e7c54211a8468f3c8cf475c87f59a3888fca2bbfb0c93316ff47f52aa2e461357c53dcd94c3ac5a792272a13d116b664c55b60ae021b7b391c55c9fc14a11e3c3d7e52ad066dc0e9ee02ef2c15cdc37f8461e7b0a514db7358a9b007619651ddece0d1603b2903d55f03bbd1de00d87a9ace2d30bdce331225766bc19b65ec2bf7300f3006f53b3bfaba9467ab7a8bff2dd8220bf197ada57e6c5b379f34016ca917029d3e759ed7923156c5e4a09ac17218aa7837ebdf87f346c83746829cf470462aede39c61667a9fc0989deb2da2582ab4778d7d9e27ecb207bbfae9ff9d511eb0441d7da29ae1fa1fb353918c46e478e64f2ebd2804dbf22d809bc7335e002ccf6c3b5394bfa3a31fc5d2d209756446c64a1611e712c67eb2b0989cdc87c8ac77edcaca880c79c42b9e823f4a16756b8c0b885df2143b601c0d6903b19d4a148824b17814dab8f8c78d1a0c8c583eb8e419adfa019919d9e378de73f2804719ab2b924735fe75f37a71ab42fbc8c342d74768d847b2773b74dcae06aeb9bc0dbd530169b4273f3204442535193073c83882b49023d8a5186f239c01e34de0e603e02c4ebe51da04cf43730e72463768957cdb3fcea4a02908d5da8a1a4639e7adec2856b702e6eed812da41073a5dd2747ed0944257d551169a32cfd118910853f3efee07f8d887509b78b8a129e3543664c574680a7b06cc71c0f79a4667c635250bf4db9b9fcdfde66646354efa76dac4282dc0975186306ccdcf58a1c410ced66efb6a7a9eaebc10ae9cab393d1edce21ca4cdf744389db58ef47690f5b9e3848ba9f4448cbacc0f80a62dbdbb9007a81f8d06e9f2ec5fc00ea5f6548aae8739dd68ec3ef106704ac177484d2eab5d7dc40bf3fc377e1547f1fb5d0b92604655b0ed16e712a03a9fe15abcb88b52cc143e3fad0c971d84964e2b0e26e432e006e52ab4179671f1be97bcf2cc71efacdf3bec078c5715555c068e900a19e5b44ccb485fc1572de706682b0f2c5ab9a0b980afb9a281daf4794c93f6f308d4c90fd92fab1cc3bd123f3ec43786d9de40b7aeffc0e9333cfbaf4b0502c4efe599a8d91edd6e2f3e9221dcf87fbe0295eacfaeba551cd262fa02eaf8807824421dc5325a42bc101156f676195c19792967283c058ec197bcd8d466a6b2fa57d38e9778c7d80aa0986d1141e803ee40ed42b5c2236a40ff0f8a8714020df0955ea57870e042a16dc7ac8be8204e17189ca7feca3647f52a942ce49f1f4ba3ae55e1b315fbe759fe7f5bfc74df8571609f81e724da6b72a3ce253c9c56ce032505c4402724aa8a9b1b854880909af7bbf435a4891975f7abb1a0b3bbe37aa412b6864aefd6cfb7ed0492af59714d48b8bd3a81895dc39e564622c008490f4d1201d649d95382f6896f6f4a7ca07377eb7c35f9ac000b802d174f09239670b19c917e70da8c64665869b319d53aa8b3b40223d3382c028cb9d70c4dde3b02b58c797a1b77b83ba027eb632ca229d3212ea51f11d9487f3bbcb6453e999a1c2da407e25a8c40ce8584d00d1f3e5e20fe894c89bbcea4b496e0f2b42683301cc3de28389af43ed9278a9e453033007d8ff93416bf4ba320baa5265024c10cf10a784cd143de08beed9f26794209168eae145c93db9e731244f6417930e65cc2fb299ece9ae6b1ddcd6fec0ddf1a6520872ef616dac8ddd3843c64c5b018a91e800aa87abd05a93f6e150b2bd88a26e8458ab6113d17813022a651737f48bacfbfd5fd73b0b856b4e463f73425a9b438256ede3a423fef3710c93a6a8ec8bcf92b23315275642524afbf15d5f39ac0350b30889c97ccf6215a624a08ea32bb6bd2be087d532b46baf1264f75ed1ad22a0d059b99a9c9770c5b96db398287f911b7ec81f1d433c725c261e4459289deb387c51adf940824c333f0fdca0a2e341e9e7dd8db42a7b7e7acb622dd72b2a30d040dfdb2105f944e929599c3d9e41d5563355b587684d694700a06ddf116430ffbac805f502a272bec09dd9c399cd580e00b085921bab258eecd111cfa5ab90280771ec06769adcceee95ad250ab7fd2af3b550a96e782d21a8a9d474f42337c7029be52a2085cd7e2891118823c64a8f0f25d3296c305c645d0531e75b7c85690e905d134548a0f734aec860e45369bc5a2ac315b14b4e63b9172cf9a69a032142e58d19468a90e13e8bcfcc1786805fd97b0e57a0e23dc5614a7fa16c878ea459291b7227ac9cf3f89b0e06589c4be8e6a8cb1666c8f6e523c46f1b179c8a303b5faf93449266ecdd6d6d3b8d4c233edf4381602c90fbd2d4b1b10ae613f89a09cbdfcfe81ddef68f6abe55bf33bdebae53a66dd8ba69f2632bb4934910cb494e7cfe339c187012374a7c2cdb6ecc39bb931933c13ae9159971543241691e05a9b5d3053e88782e244e4ad8bc0f5e7fd3847c5ec61c8a1822d84d4ef4e3a9cf552bbc3fc02d26f60da1d5a001b7336a5fad6750b355063c23dcc649b9d5953fe7227534c9d07e58fb5d53785a34436e9cfe22e1f91d39313de6ac8ae98fcdbf4120f86325325b1323daa8f17d8b8edc8f1904f62cee4935e6ab96432b9f0aedafd65788c81d5859194e4b3c5f44b541182b1726cd780fa423c47e03dc38bbee2d660af1408e80fc051483315e21f07a024cbe1ec9fadd6b24f7e0bd325fa401ea55a5cf06ee0d9ca74ce6943b1afcec96f4a26cff5e029705a9dc47065ca9685c01e17936c37fed11ff10b2230baf6222ae10d7617ac34d34ae82036518ddeb1c58f4677eeca83ab8ee703f63afd1604ebbac4b8ce0dd6357ca10eb730583307adf8783f974e0631e38d9889ea1238352861a19d708a3db1d1098953eac4c9437726eba4f397ba8d4a7a7735d3bb91859897af96d21985c799c4eb8b8455f08199f614683defcb4c84e928f7e36a8763676df4421bbe27af64bf35f8ed8be3bb152e03bb95cebbe177dd8ce0be7f7779d24fb93008f734fc1de0cf4613d82477ea5c8742b82f2437472432c418ebdad875da64c48d895d680f91c808462d13c4800690c84c76286aece7742044eafc4f579689670f9eb6719e8ba60381164a5fa73721740efaf8cac0c305ce27ce5a4c96537c1febbc38bbaac617eba695f85e1cf5f44dae93d9290f77d189316dacd80087d07fd3a7727063bc7d3be14afb212d8e79f84b4d7249289823fc029f57f18efefb71bde1ee5923ddcb627b6cedebc43cd44c754a6253d5af67add20d415dca53ed1ad664d14cd46255d5ae612dd20dc175eca9b28678a178a6cead3ce0289163d203abb1a11fae3ddd1f90c9e788cc0c2e242459a61b88a2a809670de1e6ba2db721ba6b6bb1b9d34ba5e83456a90777de755d177b8d5fbd939e7298acef84e11998c32a554a847bed1d58c6f22914533b15621393ca3518ae6c3aa46b40bdc3e4a350eb3999215ba5889bd608637c600da84b9086c17ecbb24fefb668698e12982968b06b1ffbdd8e88ad0376d8bab7c437bfacd3f3d943a4d2b65f329a8d205c6dea35fa0cf595dc2024bcd593f7ddd5c71403b1fa398434a2055b94ae7b5fdc5e002d581fb82829e1bac06c10b29856590f195572e208c5f14cd9256e04ce6c72c4bfa5ca10a71b23f8947b35ee4009abad362e199c78d5e729bab5d8c867b78afe48a68fa815b716033d2992d89ed49ec3bd9ae5af33e880147ad33d29cf5434e608a7113ca4d1c9a5e41063ae7891506eb42efe4f1f30d86253bdf80302b8b54698d0e495bfa16e2138e4fd9fc43a7fb8b463f8abf69bebe6843365ea6ac633c970afe11533c6029ba51721f8f2071e93ceef6f4a0d5607d8efa4f6b15c7ea84372f5f223e547fa32a6a6686dc0584f5c783529d6209276db34876dbc89bd282d03efc9b9f8f9c1705e5eeaea5317d52ce999876e68d789db5501523afa796337aa29045bb26efa3f58d7227fa5da66b5f4d258d7b7719249bda0fb4c75226b56ddcd8128af7a531ab5594035a514e6e40288d1bdb072475e555fa87baa0407817e1a78a5b514a9861021475ddafa3e18a55aa99167b546cbc18c42d8f19954f3c13697c4ac6fd58387c0169584a30e2a24db1aa89c24edaaf6e97ace47b1d3fc0ac9b30a358d4e54eecb4b0cb0c7ab43ba90bd970017ec49ed0cc8396c25421f5aa4397079de3c8bf83b1bd2cd96047c10efe8e73e997b05f29be23c8a381bcb06b8119cf4c54a0495f7380f58d29cbc5a1321c060e8d385a996627692b442806b4e49741ba1948bc31e657606f3cc891d4d5afb033cd7b76692e8e88eadec262d82e483b549e77fddef04c843a62c92736ba7ce633881db46c3af0e07b70a5dc02e9cf08fe3aaa62e5a48481c1566b745c490f414b1d3623771eb66859002e7508a5b8b55ce020c6fdd846b1acfe051c2dd419a5bb515e65b65f33d7270c797bcc14d71dd0dc009238c831fe21cdae377865bfcf824348c16b749166e130091ebacbe780bffa5d18a72cee2696d6f8764d9f621b71559218a137c8f2bc668e89c206d7136a00460462175ab8677073631dd297d2665169aed7321a67ffed022fe36b0c7f0cb3ff269e817f388a010b44d449df25e32d459b0a51303ccb8d880062448197200f0dd3218f998a3693a109916a46042bc455b90269770c227431d30b2495bd9cfde34ac300375c438c01f3af6e18d304fd0c1d1ed03cfe021b8c0f394a573eed8f75b8367322a207b525924d37b811790f21a1385205ef1e94be1a5a6b974b5979fca85ecfe4821d9bfefe2ba74397ad3b364c5f7ad403aad5d978ebd30235536b9d715a794b02ba7a3a7d587acdc2f9d321fe5fe5e34a07024980285e82379181ffc65bc442adb9001b82ba65a181e0b85636d33c6dc76c34efe064cb7e6670b625d54fba364e007ae78cca71e47101836e3fba743c6df9c91f4453d33ff979b85db80a9e715621c722d62445fd1d5bb0e60a8ffdf5181533ece1d1370bcf5165116f2e27b861f1d063d3330901115c2235dc358260f8cd711e50b8d30725dce64d0dc6dfa22034bf42fd9ed4d0667cdc136e5ea76e8f115c4d509b2b522600a0e54c4b323a0579baedbe6d5089acd7b53361338816c617dd0032b197205081e0b22e6f68df0e346ecc9d7e518addce22f9e605766fbc2b53c024d2b55229d3f88cf2aa9b2047506ab083a640a8a1011becbb0e38f1ebf58b792d3aeacee8d381c9c5ba9a723702ec5b24b93b5134126779edb51bb4be3aad4d1e3a80e7500f8796672427805c6398f441b051a18b5b49485341d89ae1a1a1032bd2f8ea5860efe8ea8e02fa139db11eaaee46b8d3333b23a9612257c5459d25dece801ebcf69069259fed75f43ad7b97d26e2082d5f759eabcfdc23306128caf18bc05650e6a76a9126c37bfac84966500b5b534e49608a3bcfb9f3fd116ea8055d842975e058d2072097148b9484e02f461bbb6e20eb7a13dfc59feaefa670fd37b518bb9734e10c1042607cb20a9fef3802ec603f96084d967e840e49b80047fd349046ce302ca2d0e6e5b30181aa503e92c0bc1d120dc8532e0d8b7723d0ae546292170d96452d92c5291dcfb4cc40d10d13cce123b978cf0b991f38353202cc14f715c77b187c73dc316b4a64729bb6a02f7c2bd8b0ef55bf79784ec2df7965b4a999294010807b706be06ceb1fce52302f01473a640dae25611052b07157b208e2244514b262b2cf990b9a1d607e3e076e72306f6341b1bd932ec573bc2a100835653735ba04bbb703f5710cc0b8c2cf29e9c4b8be683a3408bd6e365c20b831b47d16706132c94501261237485840387485c90ac20916c04e0859385009c8e524b2da7ee1d65c29592b341a41e394ae19c734e5113f7e57b40a0a78e5999e432da5dea984bed0673cb653c599d0cd3b4939a907e26575f72f0a3e5c42c31cd74389d450a4ead7d39712de61e102a013e01a7951b1fa7dbe74506edc6889e1e33ce978fd32dc38e92a748e3a1755f5d80f671fa9cdee33d3a320c9da63d34e401ee21e25925c433ff90ada11ebdee224a07d115f7ab892c4f5c1a3a1f3ab0d73a14bbd301e260ae1139a1a64f0e8034ec4fd83494c28af73134a4337ba8db26aec5d16257f5cfdfabb11d56eb756f25912c77e979b6b3eab593457c784d435956774a15555121200d7522aa0b2e2d0271504a5741d808b01eae299040c8fd5cb011603d789808301158a8cb894b83050ad7630f7adec6f230c6c854f47de021c4a1bd2c12248766107b1d65894b7fa80f7bdd2e72e2d2559f20847405e90ad255a533bae5d42517333dfebc11333b3924aff449820169da7bb83f7828222e21f0c8d6709ab8363eb943aebc153abc814b152d4accc0be103659438a28495df1c41236bde4b0a93269c2a62baa7ca0f8e8310a9b461fa5d82bb4786bbdfae0ad676cf2b78e6937f6627e693798bcae68f29757ede6aa6e693755bef0561894051e2b8630e3182f6510db48b5c04a5809e37268c9411fd00943f51ff0046e0c93d9cb0ceb2e7b6dbfab3974cc06699d8d0df519fd078170bf1b4462af3150044b751bbb1e6a0f69f7d56049d6a5b5d6da8c9be1b9985bcfdc4eed26c3b0311eebdab2f674438761375c356ad7937b7d241c4a3f49312885b1168485315cb8442ae747d00606b914cdc468c67707e0bb83f0856fb78a703f9b18f834bd71f0fee3000f9ff7b5fba4d549f6ec11935e178f46daf27088cb4e3b873b32a6895e3f7695a5c9f5ff6c60cf94c2bdd56b8f9f154081841a2011042354a4a027280901dcdb5408e20836c041175210e387295c8af850c5125ebaf4a01ad81550115485105a9e7d8e6a10841668c0540c31831744f8020c11a8600839e008c4cccc321f23b4e26fbc94240904d0132b005151e2891e38850c9e9500523db314f5d69a194d1c7169d22363352588961e04bdac84b6247c5c4660846507aa1624462e123fdb0c8c18f16008cb1229d10e94dc29b41ce88c78a4f842880c091d510994d81ee8682d4882e94028bb539240c105abac3ad849800e54f64e59c2486d3204fbf141aa8a2078b0c333c50b223b4a7a006227c80425c8410a7ed8c1aa8813eca8a8e4109144ce67a1735de6439e2aaaf613d4b8bca4bc302717e6210f14848488e28731ae6d41779d063ed84bba2ea41c9fc6a0a093351185932898384175cf4b5e0d8a6446b82d4de0c1ad562889828b24dcec214f1460643bb89304ff5d970210454421889f28a4e0abecd46ad1894516513ee4c1c28affbca6266161097bc8128034fd134510630f1580276f1ad8a491541053f0ed30462048607c908b6e1a6e3c267ac4918169fac785ce570880cd00bead87f25ae276777777f74f2da204ea59f4dd03d2b0e7a03d3737377ff58b291c8883d9f971fae42372ce1e7b73de1597fd73ec71200e766a820b77300c8448c1082ad40ef60f8a9ae01b2a9d46ea258e35efa9a89e43b096721693bb3ae30ed36d7c08d924a7f7004f36409ae9da4f1d46cc9aa6995ec54fb7003c39163fddba28e14ea0252f5f07367d8e9a3ee1d00ed36da032f4d32fc0a7de317b35a9fce7f2cd02c53d72654743e7833d235c1f34b0090917fee7b137dd860a0f54656e915083f9e5222d2ee459417966c1bd8e5ccbe3e7af39949c0d3ab009fe746abd834c1bd874f99c3a8838b735ab7c5db4de81bdc9c91471b54e07f6a60270d89445cd5ace3a5803039baa631ea14b09e375d5f69207618ef8a226ae4b0f38c55b5dad160bab895b9bb8f221db1400d2f4c353b5814f40c884bcf1c4adf1d88b3636362224dcff6c1e7bee6c208e761113eef79fcdb5c4fdaae5325add02d8299531c470e7dd609a76969daba3b3113171f95bb06a4731363642b4094ddc8e39c01bd8a47dc71fbebd3bf5c59c6f175db9d6bb330c4cb98cf9e537f4e972ac03e252b7fcb3698d47fc236ad7a22af78341365d57c313d786873c4ff4fc0dedb5de7b11e106111316d0cf9d12b7bba577b7e4e62a1517063553217b1d811dcc225afea32fee08cb2917c31e9ffd08e9cd1d6171314cfda3c7ebe23d190acbcc31c7ffeec7a75476ec41e673d2254692444c5cc8512cc76c59d5b9067976c84dca59ce1d0e59b5587ee093e3017dba850e3b863be48e33c42191983172fd2eb9760b68a7b206999ff5bcc19d52abcbb0a923df25903084e7eebbb7068c117f371e96bcd891030fbf068743c5ca100f3d6153a4c2c39fe170a83ce9e99e286c8a613c7c190e874a941ff9c3844d118c871fc3e15061a233759ab0290e3d7c1a1c0e95263b7407884d710a0f1f86c3a1021464052d6153fce2e193381c2a4b726a8e1436452f1efe0c0e878a94d5b582c2a668e5e1cbe070a840f1c17ca838615394c2c37fe170a838a1a2b254544cd814bb78f82e1cce14263a994e1436452e1e7e0b873325ca8ff653854d51e8e16f1cce942a4222a1276c8a5b3c7c160e67ca939e51cf1136452d1efee570a61c5172952c6153cce2e18f389c294b725872a4b0295679f8220e678a94d5b632824d118b87af7138538c48b5a49ab0295ef1f0330e674a931d971d276c8a563c7ccbe14c71a27a5101b129063d7c8cc3990214242308e2808f33050a9b62150fffe270a640610f3ece149f9fa1e5101f678a0fc401ff9b43733583a8b42c9f8d628fe32b565529d9618f1d0797765fdce91cfa83fbc52172489f38a895c4a13e6540417dca7e2603f1e96ac234dca72ba769d8ebce17857cb5414243ea0e75026bc74e6495bbc3a62a9ac73c5e703321d70e1f7c870da20d38b2753fcef868913e32671f99db3e462e46c648ec63e4a4b302208ef61b88a39d39ed231cfd344a7a866213f790ef23df5ee41bc55ea33222df3e03c455f58e6be792d8b3a6dc2f437d7b86d2f1833bccf11c3ced78c2083a90b832ec91543a14b0811df8d4a292a1c8374a4acf0a06412b3e198a4dfdc964423222243645463d5c8127a645d7fa10bab4a2b834d8d09072d5071b9843020580a709442e7cae60620a8f85c485813d3abfbd86ee2dd55d047ddb58812b22df3b640d01bee1936f69628fa9d44803e242ffe28b6870a1478f5542087f70c76f02cb459848ea19ff75b38410c297ff9aa70b6db1b6ca725d6c644599a665223bc2eec55237ab85bacc1729a3219cc1107677c36410428621d110358b9888c25636d1185536d17808f3a49f413919fff21637218dd45e72a06a3dea5397b7356baee5ed65b1ac3996b7d6665973a3b722d15b51d69cf67664dfb2d896ccbadeb65817fb923547e7db195973f22dc9c264323031344412e290fe2078f6e8edf0ec91bba662a3db1b6265e76a9053ebc1c2dfc05ed7c05eafdec7b384156a733287434d0dec7567a10e66b73cfce51666a86a37734a9830ee177daa471f36f5d050c5276c927e33eb940d33852b3dfa8c1632647e00dc6119e68b2b3dea4cc91eb55dcc699af6a8498f5c5c22bb989222a65cd8837e7196d7c027523c42440897601586407f3dafa989241ab81ab8b89c695ddc8ce7899e9897524a299986aead3d6161c94208617c0b83ee077d2c1f6cb22cb71c063e59965b1cc35b960d0e1b5a6e59966559ce0e71587e490157482c7141eaa73bcc71d3eefdacf55e6bb5d5ddc526ec4d1fd2a798034833bd07457898f8e93a10c77c010cee8c43b5decb3fd37f7e3a5b9f971387f424bd8d11c6a65d1c8238a6bfe06e31b8a549abb0b064d95a99b684cb6e6f54d93da714c1aec9a4b858f7c5b79023b336851bdde3f835ec51a71e7b94adb8c11ead6153ece8ace1bc2e2e0f0fbd3ec51df4a9c7a61b1e63782ec970c69e89a2488443d438e370608fba572954d9d8d4d4789e5bdd472235bd813dea35b81fe929a99d3af5129b628c5083cd72439f7814d1c334f069113eec41ea36cadb9851a1a0cf2eed7e449d165858faa0d04fc952cac0deec70b623aeacd5eb530f48335d09b57656f7b4c3b9a4103a818525aff55e1bb85b76d1863ec51f208d102e7829b716b0e07ed147c747ba4ed71a85ac3eda0069a207d5a18f7ebde04a671485818525c923f4e4a5fb77a9a6634dd748d832ca08436fa9ebd138414f5143650b1c08dd1715643e6c1144932d7ac0c2b899174768116499a04513a068a1840de25e0f79b4f08125420b9dd72287278b1d295bca969212a124bdb694cd1615708ea880ddddb4bbbbbbdb296d092985737a49464ad9523657d952b6942d65cbed05d121841096e6cdfc9ad6f0b0f93feee1a4d894d4f24b8fd2ad6b669a68745944a3cbb2b58cb2cb32b7161796ad653a6cd97e722ddacd6c6ecb5e3cf6b229a69591cdc8ba3449b0cbaaf439397e08b339115122dca654e3acad5602ac0497ac96552965e2469f944ed80da5848d6937d44b322428a53fa54d29a5744e4a679651616157c5aefa951ebaf4da926dc9e6e85c47a9c38ed2ab4ed97133522a33208f5e8128a5341b8dae28a308d9038a1e5074fbd0ed43b70f73ce9e3967cf9cb307abf2c2ea0c6ac56620af6a0314138a19458d94d6a45c8c2dbba384424251831b5d4221bd9be443f481d3a935922107c7aad01f9073731590a3e3c2b42cb3d5fe077db6f007402990b0b854ea13628e46024d34aaa36bdd2b0c085bbde51aaae1c54119ee8baada52d8f45d191c7f476153145db75cdc359616b733990c2ebe4db55ba255d3584e22dd6bd54b722bc335b4a0855efb0c07243ebfd02e5af56924b2c2a7a8e39fe8ca7f36be452bff1a1cfb66f90c075f46a6cab8a8d8b4b9e5347a70bfeb2217f9e5f189e6d646c6c11c6da399461b5324c36338cb697044de7218cb49ade42d9fc1ddb05c06179f70fdd27d24978dbb5c26e26ad4c93a9545c3894da9de02225f43bde59f4df173732229200e6b057158fe89566ff9add955b5b406846061a974e306c411258fd66c472ed9481dd2d9b061c308999bb0b0f4437671a53347dad1d674b00124e40e123d526109f530749e7aa986ba0ca5fe967924712be6d469600eebd471d01b4f43f0ec1f0cd4edc5418823e6104557247a761b6f630daf51e3d911f0963f1d1f8339fc1f570cd631e0005f1d080fa8bfba981e07f87a8067e741086f614c8cd5bdfcf8501584e5019f83508a780dc21881628ccc3c60582141f6da872784a828048b974809cc378079c43e089b34c7320cc338731d6c4108a3b4c21ee6d9d0636eb1aead182fd85d6e799cf39217663189494c62d22f219efbc195d0067460af2da0efa020ec1f1d85ed8019420861175d07738dcc1ca7cb28a38c324a191983439f597035f4367037c0d505d8bb7470818c10058c27efc2439e2119bc1dd5ca2c3b07ebbb2d6e3abb85da0cec93cb86c417da6506447ca17df2e05135ad39c003beec78c0efee79b062db8046d72046ce43bf62a4a4287958823360a8ab0a580fd718971318aa0a35ec414a4730e79c734ee628a5ec600fac2dc912848085f1467663c4fd63f303c3c38e013aec261718580f9713580f580f9713d718d718d7d035c605c635e4458e175e44b7a607891ffdeae242f6ac9565226d24f2e8d6c8f2ea222dba15dd127196e5d19a56b4ac68750fe412f6e4cf8a7a64ef1fc3e7dbaf30ee07c3cbeb62813432db610758594aec59ce1e7b08ccf1f10f1f9d46ad4774dac1ead16377ed6897c9c05eec6acd223c310ad2481f7215e11294fb833f4eb127b98b39ec411b79c912d7c1d711f7e3a013ab9a463ae6f24af471c2a64faa765e02c11c75febc9c223e9db50318c741aa3e7115a6912eaf3c5b79295d7ae5671d36d1266ce21d364594476550355ef9a24f0cae85475c7dba3a46a1dab3f092c1fd113d0807d148e2b2675ddc8c83bee8c3a62a6caa3e242828a8d2d8b9acf2a4d3c8c1dd812e9d7b982382e21f6077c425844f57c72866c22836828f7416a5f460e16314f6a476c34bd8934024bbe07290f45a775e06bd747ec2a62fba0ae6e08139dae58fe8dc559b81bdd99b6b674c05f763d4ce8a4d3f54bae42e466154f51bb3fb4a7e51318acf8dffa24fe9bfe843aa1281b2b884ddd26e9861d8a7683a735ff6c12a6cfab226d39250884422cfde009b1ca87fdc66c4ad3f72f8d11dec612eeb22a42d2c9f5ffc1fd683c4ab0bc8b7fea4d1e46251739823f3f60be610b9154dafae7199e5d3f2392dd7c199ed407cebbb9e01a5b724cb2cf60dec850594123616b14a29254b295bcae6141399873c5e04e185cf439ea1282d0f79bc70f25e5cf1c28a0894fc5777784450e414bf68f29f0de2f982891d5265917a7fa8aa528448772dbb5bb64be43ef9b94422f148ce6432954c237e2ef9a9843d16b26163a8468d9e99991f19199d98981d1a348260607248a4d58c193e32645051bdbce8b8b8fcb4b4086d5b0f0b8b927b7346a3954894d2b49d2c53591b0473c0c71c3ece141f9803fee5f04548ee5777fa874d555e7a55f95020d9f4873d2ae55d482eebac97fe40ba7a21dc8f427956620476050bc2aa6056b020accaea7e36083a15faec6a05647fa4440360556c0ecc41dab1f9afeed49c3ef590af87b41226cf4e856abd974472f7bc9a9a489becb0c79d915efa9ca49fb3c39ae4103127505811824228e88b3981da85fe4a86baa4ac465e4869d9b22e9f2bca4b8e6d916fd7d1d29bfb2e22cf1e19306dd090e56c5da81faa57d86325cf463c7b368408a52eb4c08dc00517a8bbe0820b2e7873d40529a70b5c0b2db430e511f6b221199129f7a33d52e43cf5a156d8f45126cfde4aae3c5328d4874d1fd663a3b009f24c41c87f75070a9b3e39e4c3a6cf066151b21e980342b8034a6c47e5b3aa4241bdbaa2604c309d2b578f1236959c3f1b4495fc17561ec7439e2f9efc14d24a519e2b3951b1e9099b58f0ea00807c3dff2a15727b0dd1e2d2b80ff6a4774eb51b9a0e02ec4922a4afe0b60a358ddbb027ddddd26e68ba185c84daebbe1a80eebb1d003aa16767812b71333c977af5925b4bbb29552e665576310b882b701f5475dc770979768e0322dfb9af56a9437088423854aab0298af1f06d703854aa0845212b6c8a57025ffddb2ba6a1fe65d5e5ca904a7e83c60daed647d8a3fec9b75e848bb0e0cea6ce432d053c45d82b98a33a758781a91f0ea5bf3ab75eb9199bb738bb658722adc533cf5aba1f236dd46dc06a1f042348ea76aa544fca27f5935a6d000a09513180be85873c62ec7c6b3c349fe1b6b59148734d07db1f9bdbee87e633ba18854da2ca3272aa5197c1652ddc478067bfdc170326fa6c3e189e7564764aaad87339753ec24a58d018509d7d7ed79bef2591ac7f6efdf3380c05d7d278b438bba5f1b8eee2166a3cb873f1a8f188e9808ce980fc1c72187ded5e3cd3661039d67520bed57dec23b7da0c2c5ebb8f7d731dfd12c380eb2dded2fdd8baca72bb1f23ea41a2c689b8cc354afd83e1d963a84f2e1452149792ea93ac3495fabcb7306496e3218eaf704082dce731200eea2c067c817ae5fad4404c439dfaedd5d72bbf42b2d2555437288974d931ffdab10e8834c14bebd15d07e2d7ae76923d7a0de152ef55535984522ae4c219f8024e969f11ce9891c0b85c402ba0142327816824c2aab5221fb996653efae13a09b43b724d3412593e72d1e7517ee0136f8cd57f371ed6d8c420e2b4e999c5a65b975b3ead6e72d6ac579dd6f47963cd0e0788366c1687b273ca1507d6625e31af73cec99367f5895d6d6db76d6b6df78555eec785d9ac3ae695d33ce37218695d6631afb656c72eac5e953eb946fc4586980f97b508b18fdb471a1f3947942e6f01482f795e5e0ed9abd62b90f89ff793dbe3c3e91f4bbdb41eec3d7b66ce9e7973d99c33ebb8a7639c0c13f320f1ade7c11c994ba78139349722d72ed79cb94fa4757006fb5d0eb51e975bc79cbbbad941f64ad087324135aa350ab7bdab0dfd0ae3f6aff09087ef78e0187f8650722449922449922449922449922449861862882190204182040912244890204132c410430c31c4932b51fe3e671d105931212e642ff3d135ddb025ccc1a367a7d2c253fac950f6e20bd4bf49e397bc1b5c43af429aead4bde8b4d65a3de63022eea437766213f6a84b2dea14f15884d258843a57ae4a97ac8ad306aab720f4cf86b4823a3ed5e5ca904a37749ac6f2186ad85406e351bb2179d46e60625c07476e39a9552fcc669a4806d73f6353b5de4b221171d914e3271a0ee35fe612635c07ebe06ddb3697dbb66d9bfbb66ddb56c3b76ddbb6ccb76ddbb619dfb66ddb5a7cdbb66d9bbe6ddbb65ddfb66ddbb66ddb361bbe6ddbb66ddbb66d22dfb66ddbb66dc361739c6ddbb66ddb4a325cc6b7cde1e622ed66db5e4698754db4c28cb8ad2396176ccb8cd478c16a6cd648f682d5d8302333588ded32d282d5d8aa9159639b96915b639bd4c836a7111bdb9446b6d94644db6423a26d6a2e2cdaa6a4f1e585a7a4edadddc8786b3732606470fc9e3bdbd40c270292a921aaf2f7b6eaad9cd4aa1766334d34ba2c1914563099e5305a0f16de45bbb1281712299391f10285692c2b2693c1c9b7c11179cb6bc870a255eb54b1a99110d21591156666de380dc59ee51b11f7b3288b62138c5b6e85b089e4d65765f897c9b80dff5c68ac605c43710744fea7096113d4f8d4ab9c95cecc153e49144a0a4149229f3cf2332cfcf049a652ab99169ff16ec22729db89ec27b2a1fc8cb70e9bdc67bc8bf049562577c69b089ba8cf4c54d3585eaddc16f2332c3ee3dcc3a7e963cdf4123e4d958a89aa89cac9cf38a7d8f4e233ce283ecd7a673c5e6153f4198f52f844512820541594959f99f1b8c3275a55b7e767e812263fe3b1c94c8c9386ccf806f8444940332e039f2c140e6c0252c3671c874d403417ffa02a6593aa21cd38646b66c63d3e59a9129b80489f71c9276bc6219b80589ff119dacd8cea25aa4f1aaa692c47a5fa6451a954ea2d6cb592aa955459980a53c915a6c2b0894d6cce549f306c62139b53d5a7eb9ad7bce65cf5e9bae635af49517dba2e7ad18bd2549fae5aef4da9fa54572bd54ab552bd55554d6379ad2aba42f5a9a652a8142a857acbad94e5b5de5b53222055af48a47b57aab748b75a4e1ab1a0a14a2b74dd47e2ba8f34eabedbcd745f7d19a2163bca6c8b9db12f9a63a30c6bc1665c32aa225dcb5b2c0b96ca5a6628967acb37ac3154cb0c86a218aa31d45bce72bdac5a665674d535aa66a8aa5551f5968f2cec4acdd02bd5572a5ea9b75c44ff6b9f95080875a12ed4857acbb519c389ea6a842291aee5590aaefcaf7daa4aa552d5b8b208c43416500dfe9aa235d535c529cdc55ed74f457d9764b99513bbecb535d2c193e3972e1c3f6db635ba34bbb81536c5380dff78e82dbf5e5ca070b7682e23f596cb2c79cb6de4bce5964616351efc2e6eadfa6451abb7960b17a17427024259231489742d4ab462cf724c884bb19b37a8a4ec98ca7a162a1a080340006315000030100c07030291402c1c2aaba60314000e819a3a6e581c8983598ec3304a1103142100000000010600cc94106d0300b69a25eb9655c208f58e68684ac4e23e0f846495a05e319c6898b175d5c47adc846e10e1d11601b76b84aac487875f90af99f5ae8fbbe1c39c53aef800fe5b0dfe277474bb5cebd6d0c5936c510aa3eb0eea9dac0037324c434a63c06ec8b7d93933951bdfe50662d742202624aac919315507b59a6b7b2e304272cd4aab5f12996c47bf10c5457a8afb03a16bfbc94a0b4a519d3307cd80859784320616d6a05fd287bd85788ec84d1729ce54c4ade56344e6979567bbc8a85b894d6489f4912f39f86a758cf75a1abc953339a3b043ad07482540fca758a0b4c53b43163931f9f751db34af4c1ac2b8232a59b5b9477ea1c98e1bd56c834e911beb0c44ec000a7b978b95d3b53b02dc2db621b64606bf2fc78314778163cc97fc402673322ab3d975b760cf103946eb586be3860fff464cb6867b9c64ea01d23a36a5b547407ef8a52221ff722a8d04bf64de2f5d52e960fc710421e2c22b7dce348f571f58c53aea167326647018c3d08089b26ae5ed7fca79ee2214afcbc2e3c6432bda6c365c1678c219ed935137fc611d6cc9e48a386cee13bf2ba9740cf34fe1856409a9636312505ed34b70da66173f7b231436e6f5cc9cf180386452efbb49ebcfc9ce7354e2a253145c005fa9051a6a457bc4ddbce7530b39272508090f62bd025b6dc6f527fdb420397d60963256164851654f865900d53a25d80b25045e8577e9079bbfae8ec1fa9d96368b6db42240d6fb1667a9f667bbce4b67412509d1f426c68a51899dc0e79233466ba9a440101d87553813d5354e6727e98438da1aaa75a150c3c112b9756d71095251105dae518cff705db3282ec80848ad14fa17b0bcfba2c04fb7f576203e48b6b313dbebeb48dae5e743b5f4fd2b19f22ed4e2a7047ebe6a7afb589561a74121628b04736c094ee44767e6cce913ea23331dab7b3ae69cef731020ebd2b325fe2dced6b86fd92228bce83b955d1a0af9b487534250639310a875b47d85f3318ecc6f44eea6fe5e94e500d3cdff40159c0d9501a96f45b0375726cc93c60bdae907e2cc0769b2fe20084b8d0238e59987820550cd6c5a6f40dc3ac0f2c2968b6a003d92fdbf712fc39a50ae1e63449feca180c712f0d7985d5380266a64268e987c47bead48907eb3a6080462f01b4a1888d096a12d02a1ecd7318388648abdd90c0bd8e18a4008f43c70b3f50dbf080412610b4cd07736c664511862cbf6a1763b9e1b174a6575e0a9069402f99be8435f452b1e4ad6350bc656db4fa43d9a5bd87f4f12e90c814b2799f853a3e64bcd101d7906e67cdfbb256be7c9ed49932e1b805c62ce8cbe9b115045fb5286527a481daf444419d39ef72e1c3e351575b8ae93629eb3c8ef00cec1c4fe983a251b105242d7209386bd6eea397a586d43fd36a521ef88ff0f379f32b140fce5afef6f4b3c37d6912d308889795cd1f225b4140e57106c9fd39c18738b3910927cef3ee1bf0a7520850546a7ea0f59acfbe688b7e63d4bf11db34dfcb58fc327fffc03b692267fe606215fda51e32fcaf979e927868bc36eb27754cb0ece7dbe00f52537c99e94817071c178c6c04c37cfb34147113185dfd13e099aa15f9f7b96dadd019726ec301e9d5d454e84bb0f45218fa7895a7ca2f1e602ef26c21bf0b28628e240bba4c4892f7d13c68683bcc962a57764e96294e3941373af81ecbda7f212a4eeb9238fb3368fd9e18b4ecbae2d5c2c8967780a2324d80d68d300fce4c516ca459013cbedda3f9b033f8e4346de100264f0eb39f04044874e025eea051282b55a76975f2dcaed272b8917a53b820ca26b383ce57c51f6ac7e469eddb5fb0cd10660672b8f18c44e5f7a324c19fe4e2990ce03397a12e3945c03ecde2e0a58ee09d844d0da18d669c13b1ae173df587c3f2fecfb8e392a7ac2ecbb3d5475f07e81a2267e0052a8827877137df9f1b48f4a7eacef7599ee687d93e88630bd0c815ef7817a932780fe42cf8dbd96c6b9ef2bf9d897529cfbba0237b60e3d5bf7ba3fbd18f41e4a4272026fae95fcd8bb748edb5a991b7b2dcdb9db57f2b175d05fa61790bdd7ece55f7a7da8a7331854b2d0d2e4650bb140169ed070cc3df558dae933b305818cbecd2fbf0c7c09c55c0de0de22bc5c49248b7738820f2f7dac304c28262e2f426d46782b636c42010053a27f755e864a83bd867bb4a19ee1628bae0d6980af678853f0dec5a9f539f1c82c19e01c20ec926407c41b4c702d0736810240ac6b0d59ef6050842f6de94c367b318f9354842a9f18c4a843692f499eb3dd149b5dfff47c8d9ca4c66a6949a78601fd2ecc8b9d5d61039db2dd85a413bda2ad377faae49aedbb464dc255cbcb11432a392d854c8fd4d472d62facca231e17b9c40367894ab81774364ceb2829ece6c7999334019b09ac702a36805b2141cf3363bd36371289d947182f3ab4117ba9dc1fb4318fbf3879cffa988ad50f67e03bfa04055ee46f1a44df3a0050f162c01651953b93178d0484ec59ad4b63358dabf7565cffa0a13fd8f504a38b9360079342b7f6118c9e879d4bd5210740d61ab01e6cbfb63f7f236a4d899ecbc4eb51f48b8cbcc8557078fa079ec3c7b0cce7be0fd7886733685318c2d8e8abebf7b2ce66278c9b0246491b4f4cf564829734d68342f938285d91f5cbcaba607ee223c62a6319d2fed280a5af2bad9edcdec4eeb9ec12e282377e9a6ee1087e53188327dd8b74d29e2eedf4d34997c634d34bdb6933f1c2e5177cfe241a3a032431a93aa8929b58615f311c63e6a55e461e86c83bf8206de8530d8b441615e2ad72df519fed72c8c6d3eda94589f1c4c252ae516b3491236bc8d4c47f35892226ed2f4d51ed4cfa5bf3686a52ffd424eac8843f1a8d3226f97f0da2154dfd47f3a869527fd4345a70b73d51a2cd9afabbc66862fed4309a783b0c57ae789904c51a3991e3365e8d481e5fb9f2e6b73a7a25621020821064f41816609323170dd1c934df4860967733d696603e527fe4b87c35fcaddb63a9b5be75cf6337055961acc51c030aa03b03aac7a4f07ac2f560f494746f80e6613cf91a77d917e458bdad829fb97988978f3c646607a06b75a30bf78945457d64382295bd37eda106b4b80b5af10edd900f3748968b05c6439f70dc16f7ef6c46af38eed8335653f1d370c95129f850663289246ba97b08b964c79d95f55b8cc33b5168eacfc0a62b302e458b24baaa971d4055524b32dde5ded8297025e2fcf6ce847755f228308f3b36b27d0fcda118aef0dd014251c75828bae2557285e52b3a5bf144d02273a19f14ad1bd2b4894d9a6c0253a631619a29a692a9b93481425b218e46c9f48cc25af6bc6454f4cba0c677a4dbeabdc9a315f4c4d8a29aa494ea2e6f2736b4e0dbd9b8a55ee60b658a92fd2b4e4f920a5dbeedbfc158c5f06d239972a5b02c77f684256ba53020a425c64c94519a68f2f1571db0d86ac4952979cfba77ac2387edf4b111737f999ff99e480ac361ac929121efb7245fc71bc965e56c137569446e8b4d72cd7a338824ab02dda49e453d5b4fc647de6b995b96764a2d1eb4005290a881eacd4256093e791acb8b8696d6689f1d5e37b4f1c177ac05bba9bbf5ff21f9d91904d38e2b58200ffbd0e1edd5247d52695d6a287dedf82ba3e14f3d37edf8c75c1c233ff7079f10477c05f0a5082df135de1b9e9e0e58ce2e4d719f6cb5cb83cf8641bf4601da887c5b5d2369a700301c16127d5a3d37ce5c4dec0114da35b4db1608f152f53874717cb22564d202c0ecdfc86834983a12515c4de21a415fef87f70593874f1f10cd416a4739919b42b658dd106ab8a75bde7318493d28a887961903d68763717ebcdd20071a0968f3882e238d0c8897df013b2744b2bfb31cbd13a3927aae2402866934c5bd3de0e70b81bc5cea0e862a35fb3321ee5758d3a60736cf7725b20c9ad887f260bbb1da2fd864968a1e2c7ab40203670fbd5001b44d65d0618d5e4d7556178cbc7866e59a5d9f2aa4dda2099e56352eeeb3c22058ecdede1691e5798c53bbfbbe5073e34327b8e182e3b32259659bef439b58b41b1a31843975693f35620873ead27e6ac410e6d4a5fdd48821cca94bfba911b92918bed0d8656142fa84a74de79f2e0e5b3abfda8679738767ee2a26c93b2afe78a324aa72289038316be4f5d750ddbe8a21ee3db2fb351a03bd7d8a777c6ea2f3f979dc6697fd9ab1a04c777a712668d10a5a876a4b0d581199be88fa989ea7a219256d8477c03a92275bff737c0a12a97bc12dfd192b81606d478521f0b9c4b1ac9b7f2347109af1e2ace7fa379f4e79eb7f2442b11ca708c498c683464d11720e28e26c4487e41d81a1ecf621501c2f617c40093c8fcd2ab5971f59a66aa48d787c1c265af5f3afe6916cb07c969e6c48789ab4ae511eb7e04695462d8cfb27b1147be85049373767eecd5065fd51c858852e3deed21b73c092bfd8536f62ee12b78d9fd910b7dd9877a5709b25421e0e7a2de136970323eaff366062ba954a1160a9334732fc6d3834811a047540a851d50f1b95d4637957f8e0b572158e24311d115faa12bb1ed9b793c8180893fb3e4fedbaf466366daa7bd64044deb6b34d175fb0aaa823430f1a9e660e5c59861000cc9a4cbc6cff25e92e556f2f827f0ce44212898481c50ea12570937efdb8121b0aa0c20439e3829377b1f6efc30fab62492f4b5732572ae86d902908aaca0c3ddf6b91b50b0c5d892601821b9c135f07f1362fb2f12a22715949485cd22717c619453517092d22cdd8fc1d2cb2ae6bf298d41ca301cb65137def4ab6dc549baaefe04e1d85b6e4bc39199f61b3deb22e350d270eba3d8e5a2e31f5ff4941d072fb375e554cec5bbe6b163101165a8041829781906f2f149e767ce44efb98d8a730c977413c1e2fb9d51781d4292ac5205d8bb4bea388428b9252de79058316c166650fc4097842aec12edebeb5750f1d8ee5092f0a63148bba00ecf0bfc83dae02eec04043d9ebd9f06fc66381fcdb3f40fe99c0b6b377459d2825378856bdedb0b43f79ef5aba932c59c8cdc42e0bed6da848a227746bba9d2ea10b29bab142b6c75ca75ae3dd3d834ea66a4c83a4eca557497225c32de5e1758e9f8636977d748837e36fd35a704634d1cc1e2176d80664b0b8fb501ec0fb403cdf55ba622b7a724f89e63218bd65433f0e5ac5827d3c3731088d4bd53ab0a3aa8f73448f2f03359cea07aed5d141686cd7a8ca8a3a9e90b1a0073285132e6104eff44c21af0bc6d8e1d5e2efbae927a2d399cb8fd99658d47e5a4a7ff2a625ea7e35b5380f9063f2d9511b82c0a82c7f2474941378cd6cbbc50745245e677628d79ba54da6d73fd233a98f546a7ce8241ff03eea09dc14cb408ac28d6856de077ff37c9aec6d13191d0a3b13e8878fa8687701d9a1004b89e3e42f598b4fcd60f995a8aeaf912136dec2c3be0b2733e1e3bf1c3ba97a9dfb101130e8959143db4d5a8a99f4373019d81f13d5c612f6836bf91b4c2213b7b9927540335d234c0b2611fbb7873d978d85b31944e154721c59216f86fb0cca2aff5c4a1c765571ec311ca02317b07f049753b8aa8320a17d97645c362aa18f55188fdb717c65ab7e32edd231e29971b91cc0d752358d9afb32fb991ff7032d3b67daa1d8eb0278fb41388bc84f176cdbde87f7b4947484df9f2904d4b2229c9b2a383b91419048b8ae614d648d0c4b15cb8e5aae08c7582c30d87a1f9e1664351aa2aa484450476634da50ccd7fe8af77d57f8c82d7ad049d56d5840194401c895045e5afba9531b3376ad825c488b7ab27f1f0adbe351d52318416f0ffd0e7f6282af7c188fd5c60820297669446376315730f288772820e3720ea7741ab7f31f8f4577458a5d517976f5337cb39cdb50e56106f6646a49f11e7c1a8a6174ece44ae4538fda702bc1b03c44059ade5524614bedf9a6bcfd5e89c831532e8cdac7e61283aeff5bd27b873b2e711e1766e5c9e1d9acad7e03515968d1e941a3e4c1e1506e41b7d52ffeec0ee5e3f881e8dc6c150a04b22f56f19205bc2c4116454d432f9937a0f56a1ace2d58e6a14a4bf43c6bbf722d9e79dbc315e7ffe672276d1df42b88e9eefe387f8236d20691202f217b0efed377541de08525ad7c92e497bad5492610180ce5b824927a9397e695823deb14e4a804fc0ccb123198e99f29845b098f992d91853d9058da234a634fe80514a6b0ed9c5b0e8e9d4576aa33a9af4aecfeb677656915aedb7a581e0ca7978af5a29292a08407bc35671ab085bcf9ff8a13a6c11d1ce26beba21b874bd16ede1cfc615a465af3eedc93dcd64237861874ad3ec17460acce967c7e274f5189d245af48256e483f063dafdaac8dcc4e13ea80f495d6685f2ff5d2d8114d74b573c32939616f93e430f23cbf6c7e82a0fe9ae52b08da980ebefcdcf318cd41213790f45ba4b87343388560905bfb29126dc909cd152494d7d8611dd5c5c8d915b361c058aefe67f783ed31b1e933ecbb1b62d243fbc88d7db9a86db0f605c71c65b3ceafa3a77e2edd1facbc2776f42b9052f68b4f425553cb777a6da30ca2024e491273983188d469324d12615704e3d7f41325a38c096baf219d511163e4ca988b3ac38b51d9cf34ab375a28c6346db24a671f0807291741beaa03b5397b0e0ab7928a02f380d32aef023617adc84494df05e22048b57908d1adf2c148410880488207813a25f7b1e7901a919191b02efd81c734b366abdbdf4a0daa9986b940669b52c4861994f16c2b0136fa3bd9f2e3a15c91d7ab4069832109592aef432d2eff801489a9c5256ec31746ae815f40873f256c0fe39d6e55f40246e16f7eab753e1efe195e6143748187fc4acb47da69d8ab211418b052802681cefa5cae9e2c975b6ff2d0cf21fc6638cba8280512c12a94dcfa49f42b73bb552a239ea17a5210a0f0d50815a577aa421ef3f923ae2f21e3bb9f5e7a914ccf9169933c84f928ad3d9a3c7a7a26e0ec56813802e99c7d3752b58f62c4630b8f0adbe03f8e5737f847d426360d2749f8d17ed26426b01c63203cc09247ab3651ac4676aa483ac72a9ba35abcc11258e257f3b2cba28bad990e5a4faf416a5847aab3809a2f58ff82c9cd69bca4b879e6455003d6cc33ab74f98f5583421dd1c42bb00a218e7de12ff57a434406bb0e0c130af9d4086cc11ae18aacc17d7e61e0754b5d355af55e5ffdf781680ff00a12b15328689c799b1dce01f3dd94a690dc99c53f668fc5958a53d838006f31bd5bdd9055cef3423a3af4c236f5a4d3e4688a5dc19d9b46fdc105476ffdd2371ad0679cfa9bb730d0a26f5d91d47ab1719f19132b4711760850c0291e459423bba3f23b29be95957303fffd42f6a70074312709acfebb206f4d92430425ac6b27c9b024ce21337b05ff14633b2443e7c5c42bdab79c80983576be87c1023db4c209a06b4d45ef0d2c57c71aa75062e89ab43d8723f441c9bfb52c0c27039186319153c497d66ea360840c7391beff1099c26d10fe30e4c9264e31aca2a09f110975fd5cbe0118bb912920fcf44e33a7a58426736f4a93151b2338b9c5d50a87fae1dc512463848220593209046cd6df99ede87568a15752f179961db3abb26f59514f639ec8c4cd683157b4f4289c61023ace280afa8b4bb4db65c35ccc80507c124024101469a36b71f87d518986930046d09d2eb3ebacc08addc41ce5ad33ee57fd75230f9d3f1abe954a81d432b2530e49df0bb13cede7349b84e5b80644983f40947d95eed2192232be836919b0a63527aec496f91b5ce5eaa0e749392438da86aa4813186ff7298abe66ceede948e7b9733701a833c64e47ae4af6749044bf9009c7a42017c097552211876234dced57ba44a447bc5b275c1ffd12dccdc69b1100b87d093e00e25c3a323d6f07eff450ceb4691364b892a5ae133d1d3896a1963d65e73b4ebb1837ed37806adc251cffd43777fb346cd65bbf41711b07469a113f48feade73f732d113c41cd6a5c052ff1a12662b2b066036aa82ccde56e927e81104d82d68e0eb058235b9e3c2dc071e479acc8077800f94b7fbf0961972e93ba773e7daf1d1672c00597885e7e23fcf514062c7dd86ac541f345b553a2d504256e621eac9d4ce59a49347708f9eefc1d98b4e8e9bc538e1510401d8097e38287dfa7aed03b5a501b338c52e1de84077f33dc79f4346faf1e853b62096160aab3632eb40ec8006ec70ae2ce880ed2030a7f2ba0c54a7d311d12e34679b0ef1121550171719dca7cdb15c6f0e3268386e1e445a1a3ac042bc486f2c578dedf164981bf85ef9e9427863080217180828d8ef6a5c8afc9152c172e442eae7ea7d93192a2532ac846194f08c8083192bf1565cfd6f6eb63962b905265114168660df165b2048d54c92117bf31a9b82205872686e04cb631b8928a6bd2592d3d9a49e4dbfa2c46e8425531579eca0f1392ba3b58d013d19d09cd8edcae1e67730a40c5de15139cd0d22c0737de8df7f442f7ca3456d957f15da6e425425c45ccc8fd9551d17f737f4d6e9fd869a7d93299d8c0cf2d2f9065db0dee54fd6a353372693c2f8a214685d34ee31c1e406b387b8fbc0322979b58447d6f0cd8af9cdad28f114481ce854cb8cdd6d6f40821cb958779ed0f2818e77a2a94069fccad6ba6072c9aecfe731b85a58f656f7bf905a07ff9ab84bb63bb77e1567a7484546ffed0353e57887c125afaae024bb998d2a715fef2734e0e2cbce01baa7a0fe95d8bdca43991df89e30cf5b5d36718bbe818d15cbf649489bb764fc56cd9cf8c17a50e324b7090f9f07700c193c63ba59a2d537d8f1eb115f9d1ed462f4c419efe22b61af0270b7ef51e3bdd4b4bb270e34cd8b29ab8c682b0abce2fe8698a2d22b5cb829624ba0b3a585574666097492ce52983905449b2d2d3e4c413049d99274eb226b60d6591c418772471f2c5eb236cfa2b8eb7ec69cf37ec017726d90f44c96781eb3eafe0fc311b9fceec14eb6437cbe61a07ba25af4e84f286429dcdb87239b495f4b8b1892751788a3c271f0bcdbc3488d899788582f7f1febfc6029f864a3124ea6726e7b7e2e262f0e16ea6122578b1c323aafd2cf569eef4e21b37c6b5bb3f9b2d1d2cc4a6c3e9fbe5bd478fee5155af2d99532a8096073c99743a42ed0833eb25e74fff12b87081c1cdc294163c8397fc526dd825233850d70259c6427f6278189fa55942d7e3e47ec997007b8a3b8727f5cd0cf2017a9205af757d10b8d02e6d7d1530392767ea4208095850f1ac2d82d2f77b77739784b90efd11789c62feac459d46920307f44ed277f7ec20abf7feab7254d8c9518aac344da1c160b9fe490068a9fa4cfcdf12fabcb0ee12928728fba5a551311966377b3137268f3ba152994be2403c3933f2933048338b95f057f3a46751cca6e76331eb666f3b31114e8a76429d9c9f2e04243adf9f08103ba59b890f78629f13f6794265c865b6f7204633ade4f3f6d9a26566df34d521482bccac941cfd6045297529d3432c33db953403f0d7e393b6265f093cd9c98729bac18d443092d9e6c36479066a07231eed0c6a5e5078b6f09462f091e6ed4f20481439248b2030274d2f7242cc2404da35f83be6eb6d778699169d7a2892a5105d31faf1a3da05b4df3ae896f12c9d1a1b94ad15a999758e760a68dc03e915e92516d9c3acc03621af69893a42d3e2ca3fc32eebf2e416624f43b0e34f133d74878f766c306704fc5d00e582f50b43546f2031f4e9959e50f428e8f876ea944b4bd68e619c619cd482181d47146e75821c1e814b143b09c390060be33057612f12532c221d23c61ddcc2f18d49dc4f88f16640b991ff5a3cb2603f9a8f0b12e03ebf7102bf389a72387f12c318fc80e91bf12036f0a343c810673d895e8ed6dd9316605a11b8f281c3f61b2aae97eea16e268516e74d292680c97e2f2ef7892234540852a05f9abbe6623d5fc17c3a07364465241041d77cea9f1bf6298898c877e3a5638107923038f1e2a4dd005210b04a095dcdf6a15df34b3467fd93969885a0e47000f2e0f79dbb38e0907ed60c5b7ee06db84d60ce03e10c4257bb2bf333cbc450f60c4d723cbcc934113aa118722934a8e7c96b6080c814114fa681837ec20912cb9369247dade3cdcb1af280bdc562c35dc69c248fe2984f93f55da19429128031f16cd446c5e94938cf1cd1dc3bcda1a20852ae7e391d253dc9c639c7f13238c8feeac29d79c2c16a89ca768b2150b7ed5c674864cf972aefdab53f11ea05e5581b30be53bcff361f3161781ba6e7d0962212a09d867a9416ab044f5e40c4f5277d566110d2479c3cf9675e5d34239f37e2e0b539dab41247c084040d5ab9149dfbe862eddc3f2a4059e38006ffa8b41e518707bb314033d95cab29ff58399b3852bf2087943e35c83cc39c891ab942dc3928891067a6061a5d21f089b8bf5c2ff031cc144af2afe689628aaddae3913f15492d177c7752ec9e3e1a41d18424679da1f674c974abbab73226a76059a2bbbdada3b3509eafb888b28b68b1dd39b15253f26bcb435eb5ca93cf5c57f2bafa539e05ad93d7df64f2d868497e7f21e5592b820f3149ac7945f9062f696dcf0bdf4c78a5aa3bef5869e13565ffbc25ae9d576ac7f132b52fbce69ce5dc8bc2b74a4f78ad720dc8ce107ec55ceb35f3a1698a978e2bb86ea53a679b88c75a2806b467297526338357ad8271214c362273905ca4c3c4252ebe35b8bce90ea52fc5c630b328aa0a51112e0e41c5c866f8bc0bc7868092936a18a6896f2f9b0c1d3cda518289e3cd1690bd0f67d497102a6d8f4177a84f383ca5d7659d11045b3f37fda5554278971a569651d9aad5a1e84b8af3ecb70bc12d50992586c2ddd0638dbb4b271f4834487ec44eeb69d47bba4776b03cf852f5eedd15f40b8e6b3a527eb8a029d19d2a3fbc4399e6b1398d2261b55a1782fe1aae8f9b1a22620b097adb40b699affe430709ffda0f5bbb34368dfb6925ec92c50e89fa050ea09ca9b4ffe62d7fd24a5fe3d9de044c14665611a13b23f58b652487d359ef58b63177819e825a0c8bfeee14b5b130795b9e43db9b6a4e86a45c5d0c767faced9d64c298d4f7471cce09400931ebb43374816e4ed408aab6d70abe979f518cd3e35e937a9447c00933c355f74852c33414b6774eda0dd547e61944cdf4e9a20e32f778ed89c05648607b2d8380b0dd7594607b2dd7e2964eb787e62c181ab6d70fb497bc6261607b47f39fe237898b3f5076d01bf7e2f38bcd1d8964019050b0ff900fdbde7017a7d719e1523a01f91c0f3c3356718b51657882125355da23aa3dbcf50891fc545174c5240634c63f91909c614b86465b6617c0a5928b766f986dbcc8d4be18f452f14f54c4868ac08f41e91d2d6c22178dbdd86809f445db19f17a97d8c9b3ef62dee7f0bf8166c6b92e4646f32bf29b22ead329500f4b71c65c9bda882a41825b884c4bd9c954652bb1b24694466dc17544844bda6c180c89ba1aaa221f8de13f936e3e1c8cebf4682ec2535da5a5af4a80731a0b8b6564eaf0edcd56cbeceb883f97ca2277e21a3a644574a7b36ae84607ba7ebbb92ade9e0241da8cc2be896e91a3e73c09786be37a0b09424a4710000f824658f111ced3e155743bfdbe157c0df96b45d7eaa27243118f0e2e6c9cc963ba96869fbe00b76a9833748b6d36b5197507bf80c5fee2d53ca4e3b1bab36b3d2ec8ef96070d55b834461166e8cfdfb260fd542e1d7d68314418705e9befca49019ce7bec02342bd2b27da5a3521c9c199724386b99ddda3e6ba0d25686e60b3f0289d536a047046dd595d55c9e59de99a8258ce3beab30f7347a4b9ec467b1e28307570fa2c19e8253c3ee0316d77829a094b016f061b1f6b0f3495019f48120418b2d9a46e5bdab5f17e3be9dad0667b6ab7734b1b35dbd2a68d37db48af9d76db51bf9d7bb201c24759036f1c9022c227c4a4603d0d15ef9523a073e1aafe295f5d2d5d5a7859602d90dc53c3b87abd83952b823c1e7a00fad6dad8601b158c55616514a910803f0b9de2163bd748d0a5fe9218030f77a7ebb8ab501546bd48e0d98678cf044866cde6bb316b26f4ddcc81d3535e95267081446f0dd5ec101771675736c0a1e6be5430b3dcd32126c194d3448105ef1530cdb4a64bdfff73a5fc78b0600cd79014220aad1ee896932b4d245b07ddc33c367ad5489310aa9ff6f66fdcb24531ed6cd0a46a92fbe9a8df8ccbbf893573cefd708ea9f735b9828f0ca3fe780404fda68f8153a8530f81f5616ed8581bd4ae650ecf8bcaba6b6a1188c1700987d879a9bc22ead8f275c8cf22f998d12b524be90374f3dbc292c1d8ccc3c786a4516f1930488140979527e1ea8abb0217c4959fbd0963efdad7c2bd3c0c651154c5c09de547f2a408bd6e8e045b982f01e4ec30701d87841d5cef9bf666e51504c28cd0634f369be54b02f6851c4d63192f9d9794af44eadf3cdb88985a8b1d073f90ad7e0f0cce79195696fd71ccdec5c3328d85600fa79337a1e9162961568b3be00d0b3630fb8e1e9c66f503e2c0f12c4271d258a15c3067e0328b24dfb2802c52b9011a9bec1f90834c016a24f0b65dd5cfbacb284d9015a6f418039e55f348258ac25f138d4300e178702d9aa6639f2339426c75a32b984494adffcc78a141c258026bd18b661236590eb00a1995633db766acebb7aacba7adee03aa787dcd922c3872215a7e582712a45a5ee3a3a4a09fea37a0e710a63fa5a4a025329177ddf719a36c53d6b96424c9ce784d33b0305c2c1d4ed6298a6f450fb0b33511f0a715846860aa89460a434eb97c9e1570f4c5f4472d580813591a3e6e4d1d389c5ab41dda49bd1e7d5a41796c5d01ae3ebe3b1ea8ecf9a061b95920f48007ba435955442669b5324dd6e4aeb0fd566a6f8f99e0cd336854ad54925ee356ee4531e43675bac438254edd9e887e76dd46fe5b0b549fa4ff018f9b0058ea387913c8655e70afe3bcd69626235012815a8866be3ce73a0dc945c3e0d96265e1fe60891551a8708fe89e67ef591fe02813d8aa1cb38650b05d3346fcc26dfc20710020809039cbbc12c739fdcc3148fdf40a89326520c85b849e77fc2c655cffabbfca21bcc4cbe12908bd719bbe215beb58dbf4cc7ff2741be59ab78e06fdf2f250f5ce4803745551860ebc28a2eaa4d3b18cf2d7cef692127d08e74ba87fa6764b8dafeb077a5594ac9c01fdd1fb63c7fee8ed4fcc3cfbb1532143980e8efc029d69be4738ade1f27d05f03f3a58c4dd683c2329aa76dc8eb948d9f852def413353a4dc79ddc7893a5fd6e3112c5b8fea7455d691f1e03985a5206d65e248a7abe304372d2ccbccdb5738b9e89175a69995b6edf09094a5551b907f8a813bd67cb6b1eb17c16324e10fa99f829101a1671d32c4e74519438f2e84985c4a1387f7df7bdd65a191156b0d807aca3d07ae9e58230402741230df904ee51383f5541010912df741815fd94850e6a6c6884bc283412609be42641d292651038bf3c1a1d1f7558e31bb43bbbc065e29efefa29fa40f73b8b2c983b07d84eab4d1174f9458c7b407d7dae5e35ff05e3874c3737aaf3c56d6f961e4d783b5e84e76b1fbce3a5593b6668e0a50df98092bd0f8bbf354d0316fe832c402cd7ad51ede1754610c08db67212861f68262e154723cdbcc5ad0c25745e8a387cb51f116f453f1e3dcbf4e3e84ba847485f234fd935ff5810e3d63b631776b87f172b4508c3d73852176e6007b57b450e24749f9e1ec39a5ce9245eb2ab2dc5c36352a954108f8553f0e557ec99f85b70b91437d97c3559ea98746b4509fc8a368e72912ff5bf275a792cfb805a143996a64d79dd3e0b813700a19b29347ccf051e9df3f4e5af024cf1d939d430ffae2bcf0fa899cfd6c4a3fcab7eccccb8bf9a2a6b4885c9cef44257c8a351347601bc933f7c12b09e395b934e779548fb422cd8c320cb76e2a356308b583b022cdd457011dc40b0a07190a83787c0d442246dec185a4033e1c4cc312f0ebfea2fe021311847784a7d4a806ec1c527608c605f8c11582a63a487292b2f0ec647cf30c873c93b6318213fe8f81bf46d96af3aa0f1b02a740ffb950ee81b56fdc13a70334cf0421e44f0ff49c1b09abc670cdc1116e215e3a89226ecb702b756d6984d860b61499aca62177371e4b0a23c66b0224e326b987deeb2db255dbb1bfe2aefcde653e1bd5264b1d9a1ba512d4e2fbb51dfde8d3f30d96a0b583f96d75a1e2291d05dc8ad4bdce0fa7cb48cc6729b9f29979d693a24ff444c5e3e656d1db3e6035a340a2180dfe1053140e82fb0b3205917bb0b64079678d16ab1f9fcd542e0f2a275a46c363aba7d89d0882d061f32cb051602945ac80c33f1bd71b30628d7629102a68a9d540aa5213a85088af5cadcadf211721738460a123fac603ba01290e011228f0cff1104a03b7ecc4d4cb4b420c6dadab808dc9e7490123255e84ab620d689fba95347719a05cc5b1cfb2ccd33e6d831db0252d820f95dc1bd5a9e59032e79b00e59d7fa084065e1d87c8830f0cf33e8c5ab9d6073d9eb614888c7c5b93f745dbce9b49313ee181f3a54da6083a6af18c1a6e1131d92319ab70fe56192aef631c6c534fa48be91d66c9934ccb988e6931ea16b491133a6b07dfd393fa025f70041b8caa5bd276dda3c453f615e400cb3d4518dd79c38a4c162c8f2628b9f042bc040dd44b99ee1a52f9ce2116d7c84e3780bc5af73b077d34f681cd6a9827cb2fbd5e22dd095e01153fe7851ea17b3db6b93101574b7c86ebda8616bc7c0281ab15b269e1d419bf7add0f6d06a2d0e5b5c62027f7260b3fc009c135590093223f545f9531453b830a8d7140dc80f45107101e6e053132a5075ac3ce555f5a5658a12083c0fa9c3e6703ae0a892b1b8745a564af7bf248958fbeb3f1de221b034c4d5fe501027cb36c5101fee27cbc91c0263e4ab5b4fc93787aa5c458ea09fd8f68df071668919756e984c738f729173c5886d4fe56b42b0995891d4e00bf8a661698b9e761ee0a8205c4df947ea1cad824e55380078eee87febf65b08ece56bd0818f6a8cbafc11a0d4f17c759fb3078f6fb7148e4b0dc256f94e1e476989b61334b75dbf9a109da4c1d07da3dc4bc960e9413c512a53969f2f4536726cacfb2abb694af43e3f5e9c36ea8488c7b950aa998dc60b248821ab921da98adfbfbbf9aa16ad6156f904c2f6d023d236590c9f8c3e35df07b5a29bbc3c1c5d539ef5d114fc605a8b27e98368149b828b476113b2aa0df24cf6886fb2641afec980542076e853cb09a2e8f3c241d70239c279ac651b5cfbed127459978c1b19f31b728e97aa0ac5d6481f89162fac3f56e8ac1b23fbfdff49814af6c5738d7d38d158e8a45ffc30f0b160c6e032851d126b11b03c6390aa451627be43230b2e2bd7c3f5a7f7ece5eb46a49841b905014648c4d5163ec80e3780b45466ed3b6a4633d435f5a7d5676f8608326ea91ca4117b058715121b2fa42ed509f9c348cc39fb8720924073266c0a2669cfda8a1dee3601e34e6ce688b2eddd7aea6979392ceb8e9ca4c76fcacd171409e7aa46d77850c009f81426b92c4ac67d60b9e94666bf1923b54983913a7962241063dcb22b2a64c32b10459ae9fbf1eeca9706446719931c22a31ad6d1fc29ce9ace793c1f2a1f26a48533a95edd974918b03b6add34fe4cdf3d7a127b0a5e6d0c668db20a99ce7762171125c9565007008bdd111d7434335aac4de3b37fe228cad0353fb8731119d808c1cd7ed0493e5d4f7df69ec4ed885338d377a935805d5a031878f24ab51b601f0f062cdc4372d208d97b81dd6efd1942f575c08136ff16887721f2eabbbfa51dcc5f84a20d7fa12285122b595b7022d7160b5130436273fbdfbdd345543eda413b35dfe132f9859c57a3631c75160ec0e95e962e7c63779a941b3d614c0c2305ed68cce354adc60bc6fffd0b06433eb503dbd13bd0b10532b0581eb59d78c0255716075175741d6902a944b5c4db9fc959828acc6ea4f5f4e14f4115c1767723e62a3e3e3d13e9917879aa8a1bfb99c6ffa15910d6a4829cc379c623d89d28a0c226abdbd5094d8c6def76ecaf92898c8e233c1c23cface19727e6fded45be7f624084080cc3ea0ba2a2e08670348f27662a2622e292dec887f5c3bece05ff3d4ec452dd9b44b861e2eb667293cfc4b733b7f8fcdc99dceb139fe56e967b7c40a63416f3633e2cb31cdbf8980f4eb74a9d04b0dcf0e7f6ae2f3e46c93a2eeaffbf9f002dd0b99458aa3f820a16adb5e183f9e41fd48b9d55360e7eda5691684c634f85cad65f42721f954cf24540e699e0d6c324aa6c1f9c5f172f41c75499ff927bed3b04a2a64978f4cd2c01ceaf1fbce867fcf86896fe5ff13b75f89135973de3fd7b3cc2d75da8d88b1174b692662c6f0bd702262dfe1c5c27d68e13cfbc8f79c2ac7f8451d047da6d60c0389f73675aebc77701163f458b5136262e6882f2ae16883efe0c762d2854412e0efe2b841e978cc0b6f5c8421a312b8ff8562abe2c4c77567d574fc43ffd289533cfca723a3ea9248c7fdf00a9b005f34ec807d0d024b69af58ec7d55587eabbfc144d420f164c34a54e09df6537111f2285c68210d850513030d5b22bc4ac78df06915946d3a497b2466f70711050fbc8415d343fd39eb66f6b27c65eadeef9e1a76047d7985ff8c0d60df6c9435d6f7a0b0c0534caee1baf47be214d4deade18cac0db3439bee9a66884276087572373cfec7b8a480b98d30dc18d8c882cbd44e77fd54bfcb005296ee33a3836791183297add71d7305ec6408f4ba6f4026f08b7c0d0eff7950695fa25677721e85db1959d26f1648e87d2600d3a9b4602512249fd45f2ad5b89120244cd4f202a21f47164ac47ec17b05fd876643dae535c05caa1c0a248e7d5b104e5d6475b5284b8a94a99de6e33952f99087aac75c609ad0848948aeee9a51d14f93e6f3985fbd8e2c45c48b052a7cf11fc2162772fe556a1fe2c25e11519337cf20af8b2852abd3a778e167d8c50842c8f0d007325a0504deb2e7dcab8cadabf2102858a5c6fd1f436e45bd8e274689717797b4da9423d086086c17584764602ae08b1c7331fb6039e77b211136c9e4b741d5cc9de19b63349e973571af9d95b216568538f3e402b3dfaa850958842f3f12cf540e2598c8229269ac7df19fa493c1eae10c183e6be01345e6f20de6e8a1105aa33a2d4bc9fe8a09a8ac53b81a7d24a8aca66bf719ce82d8f36f32368853dd3180ffbf46e92f2816cc7ad03eefd5d19e095f53b1a50ac64d1d2e0146cc90d5a4e9773d2505ab4fc64f1b51ce97df6d1209347a0d5ac562008823b54cd279851ea9254a8b402061142ddd38153748cb62414de7066e80cd081ade463b63c2afe9baa97f20360967e21f7b4b62cafc920c880265269db654dc70c561dac2a6699e338580937de0062c750e3aebfae6b520c7f95697d9c0079f91fb993831801370b307849f236dc11ee28352853d1077a14d29895c04352cf431b34004a852e05eee4cbff5ebc970ee85c387969a05cfb0dfce42977cdee44d34a3d2620fea280116fd7b223812994fd955bd5286ed579d4dd22c7b07f5ff457f093f2cc74b8c903401e05d097c4c4473b2f5dbaa88bb0907aa3487a9e298ac72f2457051387542dd9b6c4ace4983a3675125ccda14d938281c8ea9f3f6e784d2fccda66362afa1a605454853e25d0ad2c94596802fa16e6047ec7077a47c9d96928ee1df5da1f1e9d20c919a94287d187eee3d933b574687e4eaf1f0326d4e40895228bec9fbf3e0466961b9033ad6e5de01a2afde9f0655911cdee78e3ad86ebd011a2915ed980769bc93e9a5d7f2ec34479b85f7b8cd0c70f5269d431fd90499879aef58662d9208496c16aa2c28339c32f2e5e6ad57f3aa8c8920715ee9328b5144251269894354d3f331992581b3f04ad4213b9c8f2429e70ceb4c131752118bf060f1518407930cc428046826af2c8bd4622aed42aa06ec24a48fd20c08210592c2523f42bb257b126afcc85708f6300a790b983d19336d6a3d99d272a8c6d051deacda00f253f874ee272e22e9c52cf944e88e89917748fbb8cf23a68a50145026f8547df3245382a0148d621ca509277a587e8c977b92352590b3184ca8481d8af0c9633a7c27c9a7b05cf17a0c263f7ef98af32febac6734782eb8879f385fb756654eef8970ddea732f2dccb7e77ab1ca9a113145a49fd39d3c07f3287594a6d50b6c3ace53c06ac9d8dfa35609d78469999e5e995333a338dba55c69a48feadcf2d48c3e72b3677a1a357497a8c35c19991f16ea6405757a96ecde517403de7df23d015a59b468045c2c34eb26ba054e5fadc9c86497e42c6c24a94e83e4af8420e09333704905707b71d71b7e0f3afe016c0f39c6e9b611396c7d7a458c5ac799a3ab8f0d78f131e7fdabdecfafcda7b12120e4bd41525ee0a335a0124fb1c80d5d0ea8a4f2195bdee285becd0c826570ccb0d848e81654fa81f79ae734a391130d3bbeea3d96c0382843300c8f36bc79d3555e55b26667db39ff20eb40d6db43fd1d75b10b6b7f59285f3294a499f300042c87e634b85eb9744bcf55303e508073b6a1b024972d9a62938bcb1772ac84a400f1f3d9e7ef6470decf68b4921171b14430d14894371d33fa1b598ad8c534d31e1040262849ac69fc85967403f6bfdc58359089ce62ce5b73fcd4e41eb188c77e6e83e7e223db2989a7e187e158faaba3fc8ac89bf9f6554781ba11af2caafc584f2ac870237155d75687499a90241f4a10f1593aec0fa57972ce17a43e214f3d527470d419a423a5da8fd9f12482d932423c3ada70841962549653f9cd8ff11147fee39b1cb2cb51f4360545279b99b0b5d74a774f0d280ba50c0350359ab9531315031ba98ebace590040d4b88b171f2c695db9ad217c2aa7384deb02ca3eca1233fc4346e6389a7e3c8deb2ecd3881ad150d3ddc520c9eff74ba2ce160fd7b87e139391b0bbd3bef295d29aa8ff5ce62c74f4436ad1018535095df0b9e7326e060fbe9a51da6d4cf4cdc09589c418910e218a5cfdc16322f41f93c0305d71e3e12b4d2918a9a4d2809481b39edee3e0b1016609aad1e9a7a40a466d260a490cb0efc4b9560d5104269860a4b72f8e9a8713fc0b939376db79f4b76b9960b972a8d0adf774c480474ab1dddd909847ace84df81ac447bb127197e4b284263ee4e40d76215d0190796f6e3b7261681fa0bded6a91c0d35c68abb65e6d127dd634af1ed60d4e3d84d611dc9db2479a083aae1c6e5ddbe9b886269d9d025e5445f44c41cd8b6096c12e14aa0a38e8d9b67852b05a4b57631ad439e3c4a9689cf57f58a7e4684a75b3d2042c99d85dbee3ff322535ebd06ada0786007f79807ed7ea9d4e4da213e5e8571b4496a96f1f750246ee24ed428219c5e5f80aea95cfe9fc415f4a29b3644ceb54f7f328998064d30874d8697a55370c150586e20e21f86e004213329ecc9b81d06714703a1513dc5ccf2468d59f1ad6a392a62f57b468baad136bfba9a049c6b729ff6a7d04c36e04af560f9262064ea2488d89a8cf7926f62154af400e634edc015394ee7c4b1c99ef4f256e565afa97b678be8568780b78dd32bfac76a7a435d5334edda7102687e504f5dc5870a83c1b24ae837e29077322fa021094f5670b9b8725f648c308672a795a50cfc0182cb54105836d51e86fdd0f883a9312019b1a66a3708a3e9216cfc4e81fbbe465274ca5fb044bc49a4bb264b5f320fcfe63e5fa0962475b2f40423ab057ccf3cc44b07850b8a2f9245471cfcf0f78a6d97a198153f40d11295ef2637669a1974d95f1b6dfc5d488acef79f25e0b079356bdb0569d9df9139af5fd30749bf975092849699c4829c255d31b629604df9293004e8534f7c46297059a89a6ca61dca7c14d0c7d3a9341c1e66cea5f1129d6e69a05a400963cd554ee43534e2b1473003e82c09237e651c024381ead16cc15d63fca4e6fcc71795f702e4a3739df985fbeb92d009b8ad7c65d0bbd4627f58fd7a946f1fe6ff02681897e951d904651aa2c6cc6df814549179cb0823cc0344c7de49b7ad2c0db0ce8ec1d978934b0bea4c886c27e54898e02da7069ca9678b0ccab93c740e70fef8f01522ee00a26c7b57ba7da4c50f5992b62b401c57e8673861e507acb1b60e6ca9356a068a85338f12c3be94faa58c9a4e787456423c77674d9bf14822725caca176fb957f2779d88b1cf21d1e01d58f0364274d5efe6625b3814139c3e702730eda762af6bdf1995bb4bd98b4aa874385ada30331cc7976bf3a50ca627a13d95be5bb8f2b53366f829348579948f9de1307d610d9e997260a7703f7d06b052156fdba1cf052be7b23223415f15b78da08f602b4e62b45532a4a1ab12d3d6c067b41521f1daa264b60e7c6fb390a4a1bbece5fe8830fcc89971be43c7f794f73de771b983c05e2eb7e0c9fe4970a53b343b379179e4c1a41ac6cb4d01025df8fa1fc1220e576686af1b88e7876cdf072229ec6da36ead8f461675a05a55840ab2966f0897f9d791131b25a5b0a8adf5e4349515204a88118f00aacf1f3b125b8e4b26d5cbda337f9af0186bb5a08f27eb3d8c70af6fbb81273b8e0d9b261d314f6bf1eb3a6ae1174c8ca1d2b8197dc17002c8449618b105d60405b694cb4ba7886bed487b8672761c9f0f792e98e479dbe4dd3df6ffac727273d1fde13e8373dd7d0ac919fa0f61981095df3f2bec7220aa2f8e22dff2e50255b2485112c693672190ded8dcb46e92f271acc1e736d3d63191003aece2569c9d188b63ef00e5c99ebdc831ca917f02d4b655f71ba5b285efe5b8f2f6644038de8183db707269aeb4a9392c498710c080404c8e99f7350c12011d457a1d13b7db7186ba7a6219b766b050b4b853798ef9bc728e9048f3c3d2be80b4714200af343c056c38ee00195d806ab029240f0b1bb697ff015917395262475a8ee43c7f2bc64e69c0479c72aa798ee70172697b61f27aca9b18e149fb5c5afc95177f8106c1fa10bdf60fb5e651def1b0ce64fa0fe5ef03947e9b1372266d2164240e62e7b0b3bb1a0132af75313f75eb8909ce8333355e542dc627693b28a060e7cf657c3cb43fc9d78d2a8ea5ac89d515a08e13cb05e1dee0230f536d985ccaefd6c3c6e50c1522ff575046e310f0629faf94db39bd2e540855be8a73ee44b955f2b757348e52993402caea0ac9a82b68a5489dbc5c54a6a251e13fb4dc65eb7b786be06b40149b38160b0fe20172e9475a55d67115664a9ac0732a0fd9914b15b1f507634a658bdec8cfbc5727492ee27be613baaf50a48acbac2fb197cfc7a24e61c720d08b0bea10896d15235c28b7772f31de60db83fc1d7203b81eb6007d23ad5ab8fded815ccd915f0b1f2e711814f588ef22dc46013ece85e383cfb83b12fa0ab8e306e39dc2686c055b396e255db22300a87607296e51648221093917c4644ac628e4246120e6e0293fa78ed6c962e27facbe307138381a272fba798792492ead296e2221df76fd276a91c86a69ac9cfc6c70da99ab5886ba7dc4ccb1a884cdabbd60d360eadf164e7cd82db1f4dde7d041d2c8df0526b728275128a0a4d583b3c1cc1ab7f1cbf24b93094e7acd846a25516d2f8c5fa7a5cffcba80f4bea867d135dfc7838f116f3d3e9e7d6fc48525ef0d6fc23a264bfe4cf9a0afdd31b9357e62ed6c2759a345c58de7b53856c8a8357a34af490f97c3add3f52365731d45b4f1fa629902804f7b80ed27813b303d3a013ae2f7e268dfc8dbfdf06fdd6aaf41c992d70a0e6486b72937e4160041f013a2eaa589ae333eac2fab08fd57f54e8f90241db17e960ceef047f4742278397dc9f666230cab0b6f1b5569bb2690dcc5cd02e7edb95269690dc924e96a3d23e5d79df19e1a6275c6721881356b050ed8b16df9bf57b51b3f5d87eb5d05312900839ba080e6225bb781f9d61ccc860b701b1f17b36548074b7c6683f30b9697033f06011b10654caedf6d58a0f177b05fa42dd64fcad4482d2dbfcb959102efb025750fb5211c596c72d7872482322ec3c4c4af4013276a073ab0cc92c1b35c172cf1dc5ca15c2c84bd2bba33d3d7559a3a10e90e5a7c112941f02febeac7141eb5274c0f1697180ea4b5ef34d7054e119ac954631983269428e312fa1f7b47eb7dc5348e310e4f4c3a1aae9009ca4bc69264ceee945f91c37fa9282f721e60aeca9d7b66ad89c21ece2a99824b438e03b1d948d505a2915f64a1af04aa9995d9843530fa3f21080ad51191ea479846a4b13ac284030300ee86061f222ee7dad9855433259cefb562074cc6d971863b46d01efbf1c5dbee7c5dd22196bec5c9b6e9443570bc83a8fe7b85a2042fd21c44f5ff28d94418623564b66cf3d57b00ecb04b23128b2806471c3a4c986c66c9a3c83891871a47184643b1f9b7fd7b941a9ae8b3a0f50256d241f9d3098abbe52d6ee6d6610e982892bbb0e18350398086b705f22aa98415242f7f8ee63e99f2796878d61c8f11602f8da607b30cda4d6d6605cb71af115d042ea3ce58f2800975832cf402873519962cf3de6ea6f91419ef03587f01fef2936e2e1c71c17cc2a3c92cdf9139c2254b60ed1cf38c00a92a894424928191c05ceffa3c7ddf66410504a348e2ae6237e7d8d831869672449ce14991c2aeda8e49be75db59b7c89f468a0cdfd13b85109f89cab73a11bb6f71f5baa35c76714b48924951e9b9b71de0437ee19742333fdc0ed1a4d3db64de88325cad8d2c1a992ddacc386ab95ec7342e7d14292cab8eac5648ac0395dc0b067ebd0893c9f400058aab52dd5f655882bdacc4adb4f8d54644a47d919a5551f9843c6fcd27b2d0f73655b33395f3d2ada3d9a3e4bf0d74e782b5621016d24b7dd45591dec4aef38795154ca9dfce15e2603e2376340d3b77fad375929a73c316713aa6a8c6b78808a3f9e4f74e1edd0fba8b1a1c4efad9eae22e1b7435d2099a507e70a174091833863660bd8060fef99d70d3f87dbce2f6d581c7d52af044b233ec2119996684a6701a73bde49f558d988b76e1250e3b8c41a403bc978766fdc97ec308195c09a8e06cd7f24e5a2d6ecf0089bc8bc45277fd3a2832aa7e25f276ecfdb0d76c36f84d165400acb53bd582ddd36837b6900bcdaba8d1dbafbe1d9ae84af7bad6eeeb6b97d8e18414ed9f7204f7e80c7d78851362c7ac8c7d71e629ffd822f981c8103c18ef58606316998ae02e77f33019905b15c4afe481029ad0e95d5e40125a4d07931db9f2a1e2845b59e9d3578305ca59580d49e967c03a66d9f153d1018e182f7d3652cf65aa93e55ee9e6161cfa61714e90b940eb678ed831ddb35b0a72e0204d1dea8426f86a2f313db1787c6b216defbda594524a99a40c730595059b05bfbd164a996555a56dcbeb3fb5fca6b5b52d9ccac3713f4ca9debb1a2aaf52a301f337dbb180434ea9d102ea5b581ef55b8bc7d2e28532b664f95ee2b81faa7ee5a3d35ff170e67b40078df9cdf9ede85e45f59acacb9f9281fa621cf4efb84fc7058df99be682037f44e667c3fc1d4fff7edefc5e9838720a8d22ec37c5f6b7c064f9fca0845166813943e77cba63eed03b660581ebb820701df2a294f8bc5e40385f7c6fce19679cf3e39c73ce39e78bf30be78bf3cd38e357c63ef9de9c73ce39e79c73ce39e78cf3bd37e79c5f39e79b73ce39e7ec7371c69eef9b83e49b7d5ef8e69bf3cdd89bfb5e1faae17bc227fcb92bdf1ce4de7befbdf8668cefcd39dfec7371ce1f13be39fbe4fcf762fcf773bef96657f6c937e77c73c619e39c71c6f9de1b24e77c6fce39e78b73be39679c6fce38e79b73c6f9de7cf3cd37e39c6fce19e79b73ce193fb145178cb55eadfea59c73cef9337c4a98f9df8039633f4a33c6f8a3ad0fdcf46b4be6541ae38bac124699fcdcf77bdfef3be7838dd40992bba767c6387b668fdc2f609a901e7aa4cd7d4faa62fbbf4042e7884386fc5a77839f7ea6b1bb819fe6f021ce443c4413b1fd6364f197b6c7f6c0b083b386a4413fddec01a2eb4f9857985250feebcd40c3dddebded0b29f62eccfdccdd9bffb79bf1a642be7893437448837a6054287737f79d0a5158acb971efec993372cea079b7136c46b8c98ae66356e0364349b6f1a77b8b72536a3b1b32b6e78bb53f699af6aefdd5f06b7ffa397f68a71e638cdf4fefa7d7528f5f4db60c13c2298b45ddab52a8d099666c329945a1334d21a03b79b6e564e0feefebf0d7d5f02973190c8000802e562d8f3d7045c59d89d29cbefbd4ab3ece19121ef51a091f38c23797708c281ac6f73d75194dbbf7b18b2fa445ab4f84296bf9b82fd45ae50b57a94f7f1fcbf7ad7c610c932af59d3301a0b391fa72c87dfaafbb397dfe42d4fb47171762700d21c9a697912bedc08e2613fdc1ef753570ec6ef49bc0654feef903ae5640a7253ae4dec2f6bbcb7b7cb67de7f1bebb218093d7e4e76b265a68e8080d3284de193dae075740b4cf2de33ff7ea351ec2c68f7d66caf0cb68e34c12c63eee382fee16279ab019345fd48790fa9c346fcaf6bfb3a13993d42ace145d5c88c135146b3cd6f8cb28d6f80eec28d630c59a1f12ba1a3e427773fa6d0033e9040e266b40eed92de118f347cda995d0d97077ddc0feb4410bf7adb93d0138ec39530ebcb526b0fbf04f1fae32f626903873261966b3c9349a47e6508bfd5984cacf48950fa791ebf99e4220ea0b2750f785f3c7e5e4993bdb3efec299b32dc6a80ff1a33ed4be1093d0d9e8defff4fe05e0b00fb9cb87dc25930a908f6cfb3372a79d50281ba70370d79b7b0613131313d39c5ffc12ba1bed9d84ee86f651d7ece99eeee72ea62f052efa0a8ca1093117dff37d2ca54ccab29673ce52cbafe58b5d46f3627437dadf2f876441fb5c1aaf34e8a206e062d3b66f80ce868c4d8383f667a0d268dbe83c06e0344fbee41019e425817e4563f992af978cbd90480edab7bfdd57510f1313d3fc50fb39975e74364e1ffef0d4bcb97740aa69122c7aa2154c07512667d977bd5afd83b47bfcf943da84faf207a3b371bf1c72771ffe17dd0d7eedcbe19fa7ece4e9f023c258e77196fd29c353164ed94ac770b9cb887e1832fea84bc33d3a9cb2982d1f4f6aa9d1b6d65a4b7fb6c558ebd5eac398ed42ac710d4924d9f4722357da81cda3e8126b5c84eee6f41335bf93d27e4b88fa7bfa2d054ee33863ceb82b82df0c142c72b934207428a72cf5dda37e934ab7a5bbc1efcf227399fbf665925462f157d1546badfda63cd722bed8ef3c174284b17ff2dce52e97bb4edf7de8dfa93a1bfee59059fbf859032dccad7dce145fecb730b77ff2155f6c2d5201547ad90a49c7029ee6a343cb73aab109e7b8dd89b22b13149ce4ba2eed5a8f521f56a45d3fd6ea8a1d9119cd700dabab5593c3fe116dea8e84b90eebb47598d675164d567dfb9bca3ba53cd5670f85bdfc9b479ff3f04fcf7ab1299bc5422ab46393553f169b335336a32deada9136f447c2d49fd58fad39436574f6236d684cc2d497b57675c57e76fd17e64cad2d0993cd399b452e62ab6fe50bf1ea55544663d2661e9130f565b15d5d29866b9992928bb75c32b60fd1c4a040813056f1504fbdedab6bcefaf5e784b9e60b879cb2f21ba5299c4a619bc2a98f099083f475a552ace95ed7af23f0a45d798833b2a54394b1d2c693244c7dd963c44564572076cd8920fd95277522484f9e0522481fe5512082f4559e0b11a49f3d054490c6a0e7cc0268228b7e938eb2233daae0ca873d9708d24f796004e96f1e8e207d7bc28a8bac790405d7bf765d815906d8a796a63e949b7aa99ca92a45318c940723b5a55448c5c48d42ac497dfd14a28a2e7144e4041697d0a05d3f4cc0aea954ea552dc47d7f93c9245985e7c82d6416567c286531d6e8d4abbe760ca836528ffa505f4a555df7c321b7aa1e71b07e78a5b441ac81e17eea43a97ad45f4fdfa45e957a95ea7a0e437929cf9118d22f8ed0a194c55d5f26c57ac465220e19768c2fdedd48d5a74a0d2d51045110302041aafb3864d8fa43144aa57a89fa23a4fd3b2e3922daa929b01db78e29ae2da26cd5dfd98fea318c1baa4f7dea55b2aba1fd9651ded5d06afd17da6f1b27bb1654366e7723f52e1bf5c1b0e15bf5392aa063c7adfac22d73a8ea9aa1baecd46f1ad7a51ef5d59fd4575da7253af5587b91729d27370d74df4721d6f8ae4842b6bb917a9a7afaf23ed5808eed30d5d5b1c3fa5e443f3a69644b054f4a617b6b0607b5d6df4ea9c80418f3607539ab46870df94ca4515fcab0567da1099d16848e3b7498c36a5dc253bfd6241753a4a0d8b53ad9b5d6ea6212da55ce8076ad3fa99a8af145cae48e3559df7f59facad93b65afcb1e07dbb2a7652f670f67ef66cf66afe69ce5de56b8e832d104d94bb172223611efbd08889146a56361b2702c2c5b14da35e9a1ac8e741398114c051a29c3587b9c755659546d2a1ae61dd217fd289083f5e9eb05121dba52486554166bf4d777255c7d47bbe8a6fab2765f39ea031eec3a933073c66193551f63985ec1a4146d704726a4f4ec2d7a8c929e84e8591f833a664553445fb9a69e3efd90be28d08fc8aaef8383e822434a4ba0e5b13b36a7298a0c7c9a98556743c6ee5ee6441f7250e5551e26bbbe843571188e022e7dd20acaaef568d75a0482ffab95aebf694268771850ad2febd31705a241b126d79754e420cebc3059378852266d6a4bc2d48f4c536641d8f50a95eabbcf80fbaaab42fda642a9acaca8502ad4cf701834e5c1a09fa2aa9d5d7f862a63abb2cb1d714684af2f5b3227d6d0af2e23b47cc812763b94adca135feaab3c11beba4364d56f6199edda49a5b0ba2493cb9e5f28a784aacfbfa196f469055aeeb0baeaab66d0aff2dbf4563e7bf547e5ad3cf57275ad7cd5e56075d92a1e0e19b6ea4f4b347d5bbfba2a4fac89bbbeca0b5372cb1cfaa91bf453f453a98f5dca83e1f434c80de386cbeebe7bed5f98b5256d6484a15f69a595d6d6ae1ff18bd0b530f78a8b99186bbd5acd7f13b6fdd0841d554fbdd4abbc903e4edaa92f7489c1456feda1b6a43ff1053f6a6befc474dadaeb8ebaad3d0ec66ded6d7367dbdad394b4adbd6c94b7f6b0bff0d6de6dba5b7b16c96eedd5a1bab547a54b7b3386f8827f86bb105fb0f67c4797f8829f4aedc58dfa28c7e94c4311b07d4567d2a65b811aa3aaec58c01fdd6070d6bef494a1063eae18a54bfea05516c1bbba1ca4aff168f98531f6e7877136f3375b71cea2bf4d3953311cacd2b580d05f74081db02d3f6e18b60755ff38ee871b507d38e2944d84fbd053a9542a95ead362105aee18376fdba4b6c90fc7fd306b1f8e1b570a810817c567b8ef87c9777264d39639f3382867a072165fe4d4e9d1993373f6d3c59af8f2a94facb92f3ffa6fb7fb2ddfbbddf741ceee5317a53b73c841f9852e59cec073c8b7973a273c4c4ea3701ed9d2c86b38939c39788283fac3a93375e6ce74491bff9130d2934c0eca4779b2c941995f7b0d7030fec95b8083d1841d4e13767e9df3cb99cba05ebe8c126b4e2fb57cbcf2857af52a13e642daa87c086e18eceeb557894e76f72ebc25bbfb550276f722a4b0bb6f79d9dd733276f7f25522c895085e74568bd7b1ba4779af03b6bbdfbc9e64c86d2979e2479aa8428c2166ce4c20b2a6cc59f9b3c4e8aa2ff58128ffe8c5f8c245b9a3bf78fa42d97259c5d82e577c73ad63c0e69b775d44a1bccb9d04e20bb54fff048f7330cc9bbe9cd235606fee75cf71ee75dfcdc51202bbfbb087c3bd0774d0e036cedb413f2fecc003b8cfbdbbc13fc3bdf99a17ce275b7e9eedd041c372ef3f3d971d292c83405e2be30922431021320491218810e9218288214b1e953a7964d7f8f1fb8d7e60bfe0608db5002ccf05cb4acb4977a9adc5937b4671a2232e83e34e9932658a17c59a3879b68a8a7f3855f555a6152a2a2a338bb985a63b280e94276ff52dcb6f590b6d3994d7e2cdbd65ee729b57633ebe187b72ceb9d2a27d879f8391e258bcb8e5c07b8584953b5b8ec20e274d0972c9c17945f7f5dd8a68d33d4bac59f98a2b6ee99f5f6b8415aec63dcdb7259ca0ec4a345bb8242422abbecca588b913de843311c3899ca812b5b0b060acb5fbdc9c2751dedc27ec517e5c6922cd7dfa9e07a7925ee9795dc6b6966b5dcc964fcaba2f944af28a5dffde89e7e340edf99d5ee523aa55365bb612b89fd395744ccb84ae74a7d2449a4875824c1e6915d34c886293c5f7fc5c7433484b1dd454568a35f8ab8b1d7ad0ca17b4eb7b6b666ff942efeaa330bef6b3cf72ea6ef0cfbf77d25ce92d6fc9184b2c168bbd38810e2792ca5795bf9f8a8a8aca44fa181ce7496cb4ebd719b4ebd726304c34838830f55b3c5f2202b4ebb3d06411593586ae34779838ace60edf42c662d589280a5349c6f33b2b9ae3444d53c967b146e29033dddde09f2e63bf4e547703fffceb4a1363ad57abff99b37ddc26f7c9a38083f55b3c8af2627cb94064d597ae1030110216736f30e8be55763d4f22be201161eaaf784e145fea11675509c5d1aac9ae46bbca296415b2e926fffc6d7e2aa53dead4ddaca4f267195b798d92421e39d1f7c2411ab6222a6291b198f69b6f3debc7cc195722b2eaaf56582fc14e3414bbbe4f11f32419ecfadeb1a07f3eee545ef5dbf4f26f92ebba96adebba4f7d6ee17077a37db7c1b8d1c170fa9cc8c1da75aff26284394d4e7326fc48e7445ed4f2794c46c217ca185d0b307250eeedd3c781daf4d37fbb1bfc5c77937afae590bbe50be79f7ec684d1d5c831ba16f207c3fdfc309cbea9e4607d1aa4dc2cde8a8a2789e69f7ed3a970623197bc50f29ca40f0d7afbb0eb4fa539430167d5e7e62cca546a6a519dbdbd4f19bf9e5e70b0fee6d5681f0bf9a3416efcd4aa2403826c754e2421aa559e2d6a3eda35030db8bee89d77ce39e99c93c3b6d59a18cf5a43ac09d1b686589343db96b4f1afb68975823fb42f97891b689fba1bfbf43b7ac33eb5387106df6075a8731251dcc3535d45f4fc6b5b2eb3e432b3b65ef4e0dfaaff74de336d6b06d55964bfe8eb27d00c8a35b655ab75ed8abf9066ffebee77b39a96b1bd2ed40f223d43880c9132fad30fcb78fd50ce7b3f5aa57d0d21e9a758398931345b8504c49998c9aa6f63eecd5b9463c1ae55c68e2374315be5a6bc36cc8e4c4889ed2d73396f4b32c9c11726ab49a471b95cae25a90399545dd575eda4af6ba74cf21db92465b2494a2d082d772825acc2fc8589347195c5544daa4ba83524a3f83d0af368110a046a42ba0aab355689c419da9aac56f521ced05887fcb05d9ccc86f52af5c12e05f299e9e243da64f5a2479e76fa69dd0f1933ba82088673021ba2a40026c49213642184190c7a0819a201c183ce122c40903ffc084235c25a6bad4de23b244c90c490202191bd8f18fc307bc4e0a804af5d7befbdf7d6c0355911eb955ed17a6ad7de7bef5562a72ac15395f8a94a00fdbdf75e7befbdf7f618ca9928fbc05a1b440ce7f20fbecb3f35a287cc51e16ed8412787a0d8141f4420f90b80ccf44aaf684d7de800c4d20d5186545104c7498c8db28629e391fdc8806442b2a1182903269315b18e0380f0f08468091b84184113244bf8701da881892690ec7074448ebbe009104f88a09b114076aa029e08ca9b0dda080a1e4b6f48d21a02a8841e84b0e10a21914613b31e15582ad281942da0ec80871644e16406d856ab15d1e3acf8ca348a085a596bad5dca4abc5c3f7d68d2eebdf70728fbea22524870838f20a4211029813761c40f3f62131112a51b845c331f26e00e25f0f18410a913e3ae56abf523c7245b00e96cda63d48414279a47d6021d66e0c2a1870f1a9705528430c506dc839de2adb5d6da1f4c9c156348347ec81efbb0821c1dd8806db5d65a2ba4335911536bade519fa1e74a4c0a88a1c294376f4f8f1253b30cf794d56c4010040902254a55028708af8fac4e8499327472babed745aa4849924b2848705ab98b8c20a2bd4156724e9c177f9c74018c17a60afbc0406847d5f40a1c0a010412982c2044a6c5a1ccb832501a642c85971e888515600154d72b6464b4738e88989d172bdd65a9b24c85911868974d18a89b392c49c75af567d6c9144911cb4100229c8ec09949c73ced95a6badb543648f27413032f4315e9bb0b5d65a6b715c19a727e3bc324e50c68181a911c40076e405484c72c8624912205aec4c9f9714070cf8d8a207254720ed008909aa831345144df0a009114966e045498a66ff859a629fc13428a554879452042989a3a54c6705994b5f254e7d342b7a5c3e08f1233d1cce4a098c052678a9e3276705454881a3850a962c51031965100551901d28b0d0011247b2298d9eb7d58586aad0912a6454859a54a12350bfd312785608ed7044cce9f6b877680997c60308d21651e94f15d65a6b2d8e018038e28621b28fd128b6b4efe57824551148c1c2c889264e5db95e234046848c0c193962c4e8de7befcd39e79c7bb892d7aebdf7debb42d2ab562dfbb857c9131b4c253b7ca09ffa88b9dccf83eff2af97e0dca39e243f5418d141c7250415e4003f48c2e76888b5d6e2e092238220279d0a244a09c28a295424f13304091a56092a94187141f9172a384fe8955ed11af74092c50e3b2012b48226703812244345973046bb7795ffd696b3a20e76e91e67c51dae681479392b5acd73f177f0de7befadb5d65c79d81f7090efbdf7c61aec123c6c7befbdf5f640a274a3fc5dd1ae267aa557b4b637b8d0030a211bf478c2073c4882070aa8685992414660c54f7a7760a1577a456b2a020a480932cb0112b026295440448e115aeb97930677ea3082043594a02948143b3082c48e293c6ae872620d78fc10021ed488c58951183d71c28912ea23c5c3c5739d44a4bda15aadd60d34c2958cf6ae21ed988406b07d6f44da35072c24c91420da4e049e44618513a32348d003a21e52aac03b034802450f473ff80968bed46556eebdf7d21c62132f08e24710604eb44088237296e4102f0e3a8630018f12266ce041064e18b1640753122457fc5b6a29fd39839f7efc9edaebba1707b02a78b47e888c80078d9b827d9300e1615f1e38d8f73f7e31350715ae66087a262beebcb26d0f6ba4454f92a317cc608b2e368c31436958dfd65a4b2f0e1958428723968eb061ca101a7628e767db0f1fe9b8e953171224b99518e10933349315a1f8a44e135f680c0e46b9810f020e462c98e4c7b881c8a22f297d0f74c065d3a7cf8168e32261e8d3df00138e34b1666e3a9fca5d317d171a804dab7c59a12055ca1366a0d2e2f8626dcc09a0c553021370d0bef6830ef1cb25835ca6ba74570f0c51c470816803010963dfbe05620dd62b6b69b027696ca4d8f26d4c5a9fc1961fc628b68dfb4ac0043e45b2b8777b2a81999cc51a29735fba90c422dac81df9831865e63931298c5022522867331e9fd9c064c93fa110bf305ae12a2fcc1b6794b9efbefd83004cfc42b9a5cb41f9469ccbed5bbcf78007562b39fb20e0a064f2c92207fd433993cec5ccb3e56fdb27677908aa33f3cbfc6ad19d8ec725dd21a23cb96f4485b35995256d731643af7050de05b6e25bd47119dff2e36c460d0aa15f18a1ef671fe850ba60133687660c06bbde0b22ed1f7748e90d985ea8242df8453565686800000000b31500003810088604c3018992a67168f30114800b728846745c3e1287c3510ac3308821c60040000000000008008640e4ccd500e28fc228613d5ecb05a8318a74844ba73b26fb3148b0a705e1b896c2b64740acb2da2f49e42569846dcda5efacc1ef4d19a1f42c8283039c24ab7dc1585b881f508ba3171c791752abf8656c981f2326c03921821358b713a9d740c32dc83c7add25ae82aca32943658f6788c5571e72f20bce2289ada9919e90311733dd320a0bae7e64153f43375b2a23e21f3759fa864987231a8a8900ce71a6b3fd0cfd23490e5266fa7dd07585780c0b022208c427113358a99b97ef781050cb854562355967ec425492ac09bb2890cd6a007fcb6139e13532ebbb95e011d77104ea41b73c3106504c979091d0306bd88a691c09bad8bd162d6ce904ab962a75a0300d9b35720ddc8fa1853c7d34c2b0d7be38102e32d046170f72dbd08018c16e0b33021e9c49daa8871d13326e2df754419ead896b5222d2986db30a28818d135f4b00ddb5b97815554609b5b59480ba04aa0c8a2d4ec166d7b5d139a8a89fdb662291b8b2148dfc46dc98068f70b84939742bae8a45b5aa77d824f9ae5a0912085916674fbbd348c83dad9bda7e6dcacf7a3b96f27fc91f46a782be543ceb639e013ffdd51d7ea93bc2141fbb2323ad9b30a62661c2d442a1cc7e8553abaa01f550774e92596b3a80f7b5a7ff21ae369bb5d224e05898f6851a24ea80ef3a8cfed658833e764f4cf6a71029b2a4277459c13f31b9cc27dafe904d04c34af524576d18b425ad2692f6bab975bd95c48e1d691c48a51d37e4c35ade1a47bafe2d70c941fd59276e28d0cf16fd79a3129d5aac583f92aff660ec9b894e45a6c36d937b51dff5662b8f287c8a765946d67a1660ed845cc5a473252fed7810437e0eea87a47b261c716139df558cbda2f95d557480325523d86a878e5690d046f33620ba2e31cb17a65a0d6a04db91578569d2b8904b3771c5afbc8dcd34a216d7984000d409127ca1783645bb148324fb077118800a413628d25699d34024cfb9ac57c9134f6fd2384dba1ffbb7c1d5ce4aeb134c45d4e9ace8ef842673957ee29ccb46695a0c440226d295399abe7017e0adf1537b0d3e511c338c7529a1f33e796003580ee2ce2abfa06916047dc3af8918db23913b2a400556015e348b91236ae477c83ea991f7048fb0c7ed7d094647a9d48ac833d97bae6503b385b52ced6b7348a100b9530b02780af72bc1b1574384c0a7602ec6a0285832f218220f1e92f335ed0067d77c9e4936bd4216a199373914da9dda30c42b32f0efda1ca5a9d64bc050f5b9803844f737a496593502e22e0b7f88814d188f564c53b1206b259009e8f55cbcc4886650312554ec31bea70201d80fba3a0248e9ab56b0b9e3e3f3e772dda9ca6a49b029460f2239499da6091361bc5e7e3cb274d0bafe4f16a049d874206a399870c6ee944c4aaa87f4585e0805dc37f47212cd2e2bbc7ea544a4ad0a3a68ac04a374ad45e1345dbd44302dd4bdbc943b8a01d39a5969a9aa5c064734591a0d08d3680533aa852c36f3c10de1d5c125f47984ec844cb24dd20a9a40df264a3a491b469c91133715515289ef5bc5b3f03b3df50a2ae5535b52e9eb671fbdb6e20460c9d453c175554ac09fba0f74404ea0be86d981b279d82a624a3e2d8b220ed8a12ff434750e0df4ceefdcbac1e20d3b797f695806a137990a1a91f3701b7f737ff393f1cca371447472cc1f4c36cd876e62f50611e53cf8e31c9dfc7d92e4c5c8bec477fa55e04bb655ed534ede605c847eb274285bc2f2f159108a11d44f61c34fcee3e46d39c7e39d754d455778c9d19482b1f758813df2dc91da27347ce8c0fc935d915bce80096d34da18ff37a4e6aec05991c1bc57edeec1b1943413aad7314f6c5a1cfd68d89cffd9d685958ec7938b367cac8dd881ae4047210571dd8407210fef266bee2ad1f400d304d4589f0637c9e6f979c58e8d338ba409695916be709362574697a2bb2cd34f9c45af3d331731d5b9eab43b09e4822863447fcbaac4e78e208393a1c6ea4aa2292913455113e583567609f28309f9629055def6c78e1fac66ee6f35ed8e2bd76140952c5835a6c4818458a74fb5dbc5f670b908697b37b7cb96b5656bee0f6c43eb6c6456e25b436ef7c99293495b8c1cb2f4cbb6a582083d6ec19b07c9988b7503fbe02a6c51956d390e659c96d9cb79300a58a45eccae1a01ec5cfab34a1b41afe978a863910d319bb16a51b82d0e464bcbf4140e23d24ef325641190605092ab83353922f5b1e150284eea62adeb208a0f9bf34d6f04883c25582dd09b609c097228c6d6b68d3d39473e773812335ac8ca02f7aa538e5a6428fb40e5c7443d42db03544335690c13d0755a0b294f6e8dc89e3c3809190f83c514189371b4e003ae00e09af76a53e0154ac657a8e0c1d725bf0896b1b92b363d12200f278126b332a85ef2a7dae3a728148ff8c09a21f8a9631c3cd3b3997b094ae5267e9e86553c3b1c66a2e1e67872d41de9bb791319b89b12ce24b343014f069c1cc47e01e16480060b486eae5433744eb458b966ddf8af785f448a97f84a5d474b781073cb410e0a65ca959e954b368f81189968fa523db7804280b12421890e49f2ecc03b89fa8b958e62fdfc5715242c9d1806386117dd99546a652242e7a0a595a079bdd09982522aefa4c82864a9bc1356c90e48ebf41f285a2f096390514ca13ddb8ab8b2d522f25b0902d9f9dd27ba63fd3296e126e07395dab87adc3953d4de995bbde49b74e5d77a9d57bf34cdedac0f4e74c47a698ae0315e0109424378a9fa3b56bdecf4b0b3ccb892af27efdddad331348865dd443c298d7169683d25640b8ae57c010b6c1ca11766fe267f796e814a6af49d90e4e74ff2a5da2b0d6df27b3442f7fd3d249b9b374751e9b5d4b0b6cf7fa26e056a80aace745b5ca39ecf14fecc4eb67a3aba4c007e713f180817e2ac2d4c079d24566929d8140df18873ec46401004b0e36013ed1749f4a569b3b744d1f7dada63956106786630b8fae7d6eb7708bd3202e946fecd8d73c06f1e058fee6e3c4517d249b561a31022761a2834e88f0f2e270c7ca8169b0017dca309422afa5235546ce33790516d308e17b5e348163593f35cd5c254ba42a1c48cad5a0b9f2a48ac4ab774c067f2f98ea0a754629e6047a455eed5944d7ae9a807a2ca03e647abea777192b810066fc7a2416f08bd64d482914c2afd879ed9e2775bb993e50f26f0bbc0206a6b70493cc111844373fa60b988652d5100ef8495cbee217aab33caf18d90e293c2fc678af74e67a930c0708d2a6dcf7ae8f426611fe0950bbbb8722cb01c92f95dcfcbc53cfe93a5028c1bd2487b614dda28fdfb5ff13cf5f28cc8dd69d78b17897f1b2e1f8959cdee272394e1d48c6f36c0d492b82112c07b02cca36203dcb2ec565728be2547f4d676f8b1c8472131093515a1200928303ab1621cc906ca40efcd42a5b294aece42c972739fbbc7d46cb2dca6ea531d9a4dfd7ca634c4d1329931377e587a230e9ecaaf883827968d0ad9a4e7f3cb413308c1493a60f2be188a313965c92dcc9ac007fa18e1a7d672d88a548d8f2a71dbea2c8d09495a7818e856b750386776bf42ed0276e324ad066d585b604a1a2f6eb75caf91e5094c497f1f742fe3378efbff811a89e5a09b77b622bfec02c2b1380e9bbd1ff2b65e493169359efc4050c2d58350d3050b9942c5914537e5723922babd8f2692113880b230567b9454de144043d0720cdf7235d9adad2553711626b5f5be1e1b95b0ab015ba2242fac9df4031c162fde78bb43c361466ca352496c6395e90719b0d5abc6527a7c888fe2521d42bfa618fc15958da8adcb4fbc2ef714ec770009e2fa62555fcd5ac6b5db958c516936a1d45898da1ed28720a48bcdf9189ab31d12f0c91fcbe32414b560cfb25e091ccf99edb11942b2940e950f5d7e71c30285e4160ff4faaa0d348ed800d04cc722fd8a3490b20b6a7619855736d570e85c3c9d801d47bf92a69d778160a591876c95c362e086a8699158ef0d0171b7d909d47bd4d6d5caa61e0380d5689f8ae307b9cb803c3b9dcd7d940d246fdb75ae28537887a0d06c6cc2160409a2bac835c6f04f56517ce0a551df654ec9ca642a372e607af2dda2ed628bbb64ba2b36a9d456222d428daf59ee65e96b797b6bd284886b9668d290d0e9cf66c8c442ef172dd80b8e5bc097649343a2aee1c5d8ca3e0a2c79beeef5cce835cbc6785332a004f04c76484966ee012b0de4a7e99166a0450cc3ceafbebcd9f399e726a31394979a056f0df8a16ec5da60e38e52e0849e96755344ec5508c2b4db8701d940bcabe9d4d6463ae42d9e4de8a56ca44cb4f4f3d5c6f94e862de31308cbc1e0d7a22b5322b4bc702a5edbe1ec65b1e290d0035b4c970e81852978aaa0197f3fbbdfc6d533c05000764e813af059c9ea8d15f7cdb59cce5870d9030e6186ccc3bf196237999812a6cfac6c2a012caa6f0d02de7b3adade3d34eb039e0837826e6679852812ffbb8e4d1a6aa66e67f0aa7101d64e454095cbe4fb99f55df848893d543e0abe0185f77aa1998b9541e45d311acff9c8f52cd1152169d11db742ff86dbe46cca0013909d15692118a5a3f78800b0445d9db093cfc17c2e6ced2115cdb0686b462ccba9525d8155f3abcdaf1959945ca5115471eb4ee04a6cb0e7f747cae01f18425091644ae4decb1535e3fcbb23ec7aa0687094c81c129caf24322d05b710352f37fadba4b422ee172471af8792a6119bdc1c7533e8d7e4a4346ba93c6b4676e3b95f6e25ced2ceecd70bcb6d8840982e26f12a860d1c8b6df09547410824acbef7b1dd2feff181a88243d89942660aa50b40e02798f442a7f9648f59d990f4e4f02013bb1c9afa92a0f4cbf1e2c49b30a5aae4d32139fced832ea34d6f9158bd4df5b78f529c78397af5434e9166d47d6443015efb7c4298f45e9704371bc50653ae034e9c2330eed0b685a54ac64ccf0a4e9ec31254bcfe1454ac76b8c42e95b59ed2d925436fb663f2976bf4195b967731ea09fb6f1758bb994786489732eb741b1aeb6658533d3490d52e2483a6e8554b58aafa345ae06009c69235a462c323b9128daf653877aa56a8e32d13a05f103e7c004acf1b54d1f33852afa61af7c5d96a2fe4d3412dcae4f9be618455a327647eb980d3fc14e946e8596f8602cf957bce27c80cd7a0df495d7135ec445ae140bf39e494a14b414e28b050b585f4895a50d064d23f21452e7c7aa3b80280448b186bf9a5229bd44434055077cb2f9d8128aee97d05fd9e6aa30c03f0a4e50626cc2c739e531ef701c88cf4f5c3eb9e7039c81a8225dce6e8e72b25f35c459b4347a648265d192dbfe09f07d1366f9d7e2c8468fd181079023c88398a027d748ca352253b7c4cddeb4deda5f81412cb4c8b60f57010775016b9c156ddca8de697ea5b6519fe5ce324a7f9893e2c564f94a15bb35f9198322b191f5b2aa92aad84578bc0aec8a041eabd928b15070dc5571f637575513bcc645227ee9385498da5c11fb597fd5ac7e1c530855b7a744d505da73bcbfcbbe86a0b11145424011055df1a890b70bebf2993247807cfaccabc15f63e9af65fa3a5442c56a72d3a806bfbf3187d37b9ea1aa41629364db1db14db299cd1e372fb69ee6929c430ab1aedcfdb74aedd25f80c700769bf088f32adb5239ad87088895dcc4258372dcb423025d57aea87e90632744f4d721b1b9bd883c57628d2366c9c969f184da80e6dd84a103dd0af9d1a8f2d51b1876c5daaa03f48f5a03e357a66699700453387cb9f6f61ea769f0e4fa813a4287dd5d32b9600beb392558b86ce2332a1894e56329f1b2eaed0c81a9d9638c771012bf5e817cb4096ab9461e5f462c402d5811150c1d38f42e6c565e691675a6d140be6b29997329390d678534c52507b9c2ad37caf099f98487f6328786f53bd0dfd5066c2460cad25e755818a6ec93546c8f526c447f5a2225c9c12ab98bad1ecd65ecc3e71e18ed3f08b31badde8568ea8dfb26d53fa38648afb6946522e2e180af33feb7d91be355633952869bd9257880c8580ff2e50615428d87fffb72555af7c3ba420b1a93580fd71199e523a5cdf4013dce908157614e522f9cf58f7a3e2a7df07cee794e41dac84aaa5025107d24150248933da5e9b27f2b86e7f85d3c04ef9b898caf89382db4a93a87a3bf24a475d77d1eabe0032638e36a387fdc93d84ce0f001d8aa77568d85cccb039aa67448739b5531639c8b943a5e466475810b46b6738d8c7c1807ac57b369a133b76fafb0394551819a070187c0a4213561cf5b71336c1d4f438275511b06d414d96697a8532652f8bcfba13c8d0d5d86b9c11a72bb326d5897cc10ea89b4f4b6fd50b96974688b19abff21203b35bf98ccd62da12f180d4ebb4f9c162ee2d76b69917472f3acc2f9bf95a46fc429acb94b6f1bd6ee7385f931fa188ce779b9acb32a6153a4f2943f406b84990c61c8005fb904dfb43157b8688bc6cd2da826de10e28daa028897379a7eb8417402efb9ef17459aadff8dc42e422e3b6be98dab595966f8aef88542a7141724c9c232e8e484acc776f22820b6068cd4d739b9691a4baa83fa69181cce52dc89cbe617da7a1ae83a05bda744e81adcfa9bbbfbe8dc899b752e97b27bede6ff171cc1ebc131358797d11b2209b84086e1991b282e6a25bb82c08d6a8ab442602c4397fd18ad768622db8af8580392be287e9669344af001e2b7e29ffaeff734f136c007d6934e380ecf4db302b50a9e10ad76df02ae3de5b880df3fd54d61a62ac3509fc1bae5e541fd10797eaa950c96f03e822e5543e05ee8cc1c7e96eea9cf81ac52aa800e41c10cab47cbc3542cf70910832ef14f6d1a8b4ceea60eb27bf93b26e8601d93cdca2ce5cc76713c42b47816d7ad13d01a75200b8380c16cd66771375db361f2f295edffae9b2ed847880ac41f3b2daa7bf776d9da0d9673302119fc004407436e1865ec6332237c43be7f82aea772b066c0e3c865b25808a5521e0626bbf98b1b29121198d0cb1ef5984a8dbc7d0c7e479ea98c00002090b4b695ef5d4c0679e63d8bc62040cce282be4bf483aa055ba32542cc90d7777b1ed96917fa6d3ec20c459706c7a022425857d152ccbb48f4d022642a2a53a8822f889f5140edc2ff006a127f02dd5a12d0700931a8b8d0f3e4711bf04f4b83c769d46e78367a7df867a3d4c7250c4f37d9cd665e1f3fff0247a803c0d5e95c2e8184831a625652bb780387db8e204c10d5b822a8bad4ad3dbb07daa9ad5be7d313bc4e1ced01cbc9888a7b76ba8d0d6f4f7c25fa4edbcb5b12ea6f0307b46b6c0daba78045360eb42193a7989f399b7567852113fa98e66071ab65acc174dc1cef2019f2b476354875e00bf3c6fd7c3e89bb0fa61b2f05dce9b88624ae67b12c0ae678007444c7cb77dc636823fc695910a6c9a5c27588305542c6ba226040e30469b16af22cc61751922b71f4a02e8e06facc12da8862369430dc44ae6b0fff2841b406d32793bc01bae41292a7fec8d59c4d6cee3ebe4044bd3fb6a4d8b07fb3635834235414b1b4d3b175b055c1172a1ec947bca720f0e47e259c0a4c948704c8508ad70a01366557dc32061c73109f8a756688d954216c007d17d1c08322d006a658e70250dfe9322a66876263d578626c77a036aca56c7a7bf196db87b01e84e0ebbfafc6487e2a548a687ac27ea85fef097c10d9cc88f96d368192ae38804badcb7334d1268936d6b8b0e40d8f7b8406800c4ac71cc0b259452d8088661eba967fb6fa244613a59380ffc9798331cff1e61f7913b19451f3bb23fe2c4c20686c234ea076bd354930c31c41975fcc56ed0c442b55e99fe88053ab3868fcdd14d4dcb5c8a09217becae10ab1af4f8bbe879da15ad8e10632c08ec4eb6e062983d6fc329b554babefaca6197dac24f7e840c7cae9f50f3fa951d3d1fd048f3b16f46be54d5e3c501c4ae1dc62d94bfa1da57d57f012f30c920a4b7fed8b921ca5df88dd8a2de98f28a3a4bc1bfabc4ffea1f945247682ada7c7d63dc429f394ebf6c7cbc70c18edfc53c0d840308dd2e8aa3050ddccf19f676a7794d380e7330d0cb0ea9386e5dadf7c886d83bebd1a3fbcdc4656e4dccce360a0982734abf71074d22badb4c2671521d6cfd14b032a6bc1d152c2672d0d4ea9d595f18d56e23e9ac83397d188d4f0595288b11511b4dd73a5ee0f2d42e53186239bc034b08e8669f018b94752077fbbc4950c69aba1584bbb5c13293fb8d3b19dd80dfe75d4f08838b1fdee07118a205e56fd5bf745f558dba23042cf602625a2c3a9cefa3af13cdb99260b74333b3bbb528552fff84d86044795d1848775616eb8c77cfcd5e211b9bb597e0b1f139ddb669c57799d5f7293125e0dccbef170de73eaa3af530b0738c4a8d01f9c532e83a0342634a29e0ed8039f4d3ae4da49905226dbe8608360d3fd998b6016e660f3edc6c0369ca9d25bf66216f50193e7dfd23c7c323435b6aca3d6559aef50851cd65beaa922830d1ee02ca479278f64aa8ea2ebbc466a108ea970807b7ed2f56ae97bebae3e95cd7f0ac4d2c7f089ab1d3a60f95ab3c2a522fa579a4f8b8a81dc95663870af77b68ec45b57a91f96d94d44f5db2197a56800e817af9d65d32768c8a8440573860a2511af00d56b93880cfb478520ce2aeae9a9279a0137cc14d80534c7a2a20aff2f42db071c83a5e6df8e3cf2e5b6c45d4ebedf06f138865b1c3996544effc2b2c660cd306b7f310f58107b911c71fc28c584219dfe4ad025513e1446ff5d9a44a517fea62b88ae9bca84eaa107440a1f3f45665bb05863641979b76c934d085580aca0d7a4af77196569725560e800d636c8a0ccd4360148536971f2b50d9192d70a37c1ded6f2264b85458f486c30c69741cee55b198f608383d6490c2164111c9481f727b3c6b8510ded4afcbcf86a330354dcc2bc4f5607534daad1106d9e20a6ca958809d347d03209f40ab267e100d347821e8ef4378c2841282040fc32ea0b2b262b40fbb8cfd6d4f0e9126bc708bc1c75a7a5d901d04fe7e291289c44c5d06fa4a5a8dae5576c17ce5fbd969f197dc99a07b5275c46c6b697229ba3cfc9d916457801798287de8439a0519f2f8a5ae6ebfc491e31a6333759c3c5b0c8c63a90b1a9f84ebceae838752bd2167010f1b83c84825216104b407d7e9ae0871d96e4b48592ef03eb8f87c7fcd75245c81e4903f3e379bf210a4dddaeb2c5cf4547b67347e32fb208d227e87d8f77cd968e21be58480ce0f4445365471bbbec3676938d4ba2e34457646d4fe1ca202ca8d012db0aaa11cdd7692b647a56d348bbc87306af2728ba3be8319a176201bcf84813ddc405e72b63940ae485ec32b855df78aac844273c1cc653bc343f86961c0e318c0980067555163a458eb2aac743db901e4539bacd87e188886aa7a8527fbc80ac7b538aa1050f0fb251f92071fba445ec6af448a1c0222dcce0de66e20d4f7644fe571038c04d4a6050b3226de01946f5e441828e8aae9b025efdc523d5c92b6eb650f9372837445d234190b46dd1f7417c27456baff9727b852bfaf0fc3dd0496944421c2ce2a1dab5f962fed00a7b1c23dffa750b51db35163399bedf9e259aa46f7fb22d8f7ff152c25cbb869ff38d546c16069dee2b80e658df3ceb6e53c51c10597eaa1be1e137cf68590e9950ca713f7bf0af66a804b26448475ae2263a72733efbf4a27a4c6c2c422e54df2a7deabd78723175671e1e5a252a27f427fbbfc3bb5762e1652f914d2e429b990c9d77c3d9d029cf9529df0ec8bb91194fcc497008dcbe51d7140ccc3b6497fad04edb125f8a0a7b5c2112da66721c71483aae9eb79dc1234ba3d0b9db743381e6f5d6c92d597c1cf32f9e1203f80889f1fc7e7ea161f2b6064e2685804318d695b2615a642abd743db010513b8655a6276e6252e20f2ec8630118ba55e95b221ed88db6c8c15bac97c870b00ed463b0392a80e29cf59b2042191250cb3b1172cfdb1e91b10c5eb48a2f837dfd371ac1db264b744cce5806b4a9e53e70a40b5255c04653a5a10cc3123fbd3dfc666e9a270746a7d706b19fa847dd6bdce24786983639af6f441488f454edc68d62931c02f8a3a309d62309ca6c479303b3296526783c4ce96bce9e2217a49c32e957d7bbf4b84a9e25593c5436a8cd6413247d9d6a17f0de1007d403214b50bbbdd4628bddc2e70c332f73fffd3bc726070dce4bcaeb4592d4b755e41157ad143c2783347c2620e719a3e102aae194928f8697ed011a37fd3e41dc25b799067540fa9576fec88fce7e7b9ff8c45f4bd3179447ceb91f4d2e290685bd6746029aaf83cf3543a446bc7af5382d98c9855da5fa6dd66b46fe012826ddc289c0fb11a376ec8d5d3ff4dc67ec5631c829de5d80323060c1138319ae03b1901fe02d3c8c1b5b274963c0ca42366ef3743229d43233900b7b79d58c5bceb1f75524717aafdaac6696f75e4df98509d5c056c1de0c3a80bd47387d4eab593e7fbb176d95790dda530f53a311ac51888828c8f52998280990235a42c727ac4cfbf955750cb84bd1e10899416ad59c5c0cc0018bffd79c953326ec915a997dcb786dba2bbb9d27b9ca403db959dad05ff914d58d361816730710584d69d9dd62e3dca27600e94f12f38a98c7802519dfc5d961a1ac19d3919e25e28cbafe24cfe25934a35a94bd61bf98221ea8df1c4825a3acc2d9bc4a152debfc15ac9afd39bfd416779d34c48e2b68adfe81bb4f798a53cb2f8fd465461ddb41dc9b9cb4f6698ffa2fa9b08b1afaade3ac1d6384898a3e407a0e277a3f1631226b350e9a86b42b205bb5167af26725902f112db0542905fbbe680e79c032e3bf647a6c12b60e2610327212048ff10034e6de3368e7a1f9abaf403a3fca646500800ab51473176e4168f47ac5de033a4d049f784839806c902e25c5bf5b427e11a23e004938b1132fc60ffeb202e95cbeee40c3ee643a6f3c68476bb0c4f5879db56fdcad65332fa1458d878a24c54b91b5f0889ca61c6d712512159df5abc584ef1b419d79dfe39a22fe4c05de0a7f8e998c96bf52722f0f28831fe913622f45faa3c9662c7c1a2a2048015b36f8d36493a830f644a2d957fb4784b24c78218ff085adaaac022a62db8b74c41267e18f3a97728de984323500641e671073e96a9edfa7a228dc6fa6ac5d7d587d01d1623afa75eb124b3daade26381b637cc0e1a6c48763e13dcfc9ef7c2ac3995293f92a8ee994bb4cb229d54084629356d3e7161e4694139bf22f07663c2ac1f14d5be54764b35d186eef1432d30b8c4791049a8339de980389d213abb2f6980364ae064bb56cdf413b279186caf24313d66bf040169034559fb1a131047759b8017f0a0bcc30867828573cb4e71b4044200c639a9249f45830e7014fb216d3e44fc9006025b0f256095375d7f6c36d5ddf6314ac12d3dddfb631079be0b7679624322d305c71aec7b2e041c006fcc10b21c3cb7d36e2fe7d3d4b839cba653097a22590a6fafa4d97e38b47d089d336bd768be56d167d6788dffbe8bfb62ba91ea729ca0576c28d7dd9646de42da1f303d47313020e48c54940c3865471e044c806acfd89c8d6e78c5e3fd7155ef8ff60656b73dcec998d828a1746cf9348a3e0700622c08d90d374b69873e97d6e3afd0305b43640be91aaa2856dc8166d19368608b82c7b20b8e7cc6503c41a3d245df7a02ed8177938515aeff1f2dbefa4dad12a83fb0273bcf32e8512191ce203d9b3327a395810c47994c062a70897d7daf3497c8d09ef0c1e5c0679b6390d72f9bb9b666396f7bc9264bda4f8ced71e0ffea5aef351b5ca2f0cad8156f3fc16e654c35c270b549417df04fed4757607f2d5bfbfbe0d001a259b6f879af2d59a163ab3f18096911b8fe437d8d7c3eaf2bd604d56749dabfd75cba426f0a35262420f85b0a0033f27aa72fdf2544e29040761c978cfaeb2640bdb06fdd8b3dcf528559297f0bbffbdfd895ffad04597765ef266600a4c460c13d9bffdb9585ebb38486c66ea648b5b762910798156c216869d5d8427ae1dcd8bc881969a438bc8cad4a9b45a60a0164b7c1ad103fd24b3f4b57aa7f8742ade6e1975a5c8febad27ec35ef6d15c01f3ec13d36e41a8062d0c651b20ae026c794c280aeadb51018a9144b5feae2ad2b38c6e5f8200a7285dfce34e41717b5bb0b703378baef074230be50186f410a9161e239a62ff0f58438eeb1b799e5262b72b03dc1e71df500da110a887e0305b4b3df7d7b0a9249228b7bffc5a876c3bcb2efd8946e6d070656c1b6a99fe486db5df42bed30031c556b5dabb617635388646714bf470992fd19270c63eb405ef51cf784cb5f7458de53601e760e1ee0ce521606448cb3f2dfffb8fb065c08e4d43d5bec52ba89f7406ed5af096884ceb1458206017a68402e39c2f165bae727277bc496be06acd9c41676ff572476a6b55590ba784fdf0719427e76e0ab4a3e1957917a2bcb80f8ae981a4fd3bdeac17e7bec65c2c3d8a866f215cf3377f98d747e20180015e7f6a6259ec2624fe2406d54e560d54aea4aa7b00e4d101b1fdda5617e54fe50bd3b859524d6afac613551764eb530643eb4b8dad08b75640ab70c802caf4b82f4047dbdb741df5c07c3440be04320cffffa12a01b7da46331b211a6604ccec9af64e1cf1aa83331c3d14deb6e88aa998a2dbf7d4b6788a7eee05f4667cbaa7604103c1227f1e0687b3e4b55e08c8037d81d701a7a09aa439aba321d020e1c02cb60ccc0e1575e55ce385158e846d60c099fd1b3f4161091ac96e415a881bde9a477d78386ef4c5a41d56dfa36d5c0790fbb16f5796cd217460ccea5a42da48beb12e9a9ecac5c950515de2411c72d5393c91a7f281ef0cc4f101744d29e20a581408620d90db680ce7e510a00ccb026d2b70268c5cd2f4192016f9721fd299d02ade6a9cf8a90bd299073420a44581a6392ce898666327fc6512f0d30ffe808f4c5302d48eaefad04dc3e90d6252fefcec748f1d26c1d105eb6967e2e3c48239d00a97b5dd4768991eb60350f035a17cc8f8cc752fb563bfe5f0bec50c46a053d81e1f399ebb9e100acfabf49e0d02080bd91ea88270d7b101b0cab100ade843940f21a32629d8ab5738dc9036e0d06e13560b1656c38d9f66c1c78b5e3ca37cb02b73177a3b9a1864277e36e4c7b430e417f63ef548343febbb5311c210114471b8fa36c4e0ef1e590f76de2304206ef8c4f8d93bc62f49024dd3be22f66e93c98dd8ca1d1bc907c864c70fb8a352617b7f260fecdb10162f21c3e10b7ba5ea534802acca2ac6031d818b417531e1405e24cc1ee95cd4a05515bbe0346e36247571e620f4770a3836917fd5a38585fb76f7a217640a9a2f3098e94216552c4fa088f413c0c1adbc485d90f0a78cb93c5e92a8a0fa72037a4f613c35da59be12909b78d19f8b583eea608c21db6f9fd0c085eb22a64a13dcadf3524ece79007c9c47c81c8673602b64eaffd5116abedbea2bc4350f099e738450d108f16257748b0859f7c92aaa543f28f6d9fa4cf74fe616853756060d82259227badc20900a155b690f2b7a522aabf51d4192263b8bd529c23b6a997b3811d2f3c03ee43543b555831432c59bbd9dec3d09e3e77d087ac49b96649dfab13db34a0a20107112656320c3a94d9fcead2c3c2be64bd40083ead503efb486a584faee6feb316803601b56ce94c809656d7ccc37411be55d149445995c59efdd2f087f00d3d3c0bff4113af7377be2f737e34cc1c007776b5c8b1f1fb99ebc75def8b21cadc1a2abe0160d021e2f25df2696e5e7ffe27d0cc978ea13d973fe3c93f3b8bea9ffd696ea3c9caf4d83c004fc3547416cb78f1e200f3c58c85731403482c875ac949dcf9f7d81417bd4d2bce80d8b4cadc9c2434621ec8c110c0fa7477b0da0d5a53d7fb752b1e1d2b4e78c3ddb4b76e29d8e5cbcc144a3db0ca64b07dca08cb847ee3e99163135ac0839f5e236e0217419a9f7dd9db1dc99dd8292cf711eaf4eae803087aa52ad36b710a66fe7d4854c0c206edd5578fb8228caeb267a200caea20d897493779280e1d93bf7b05f74519dde1dca07a1b546886392746453e46d0a3711cdac79caa194960becbb3f0d818507d5f121deb62a8096db51ba8dcdbd94bbffa92ce02880a200ff6199a4128c20f6ae956e03c5838a8fb6849820b4cea31e6bedcf247ebcfc3784db843545c338db9a1140768c80e03dac3d0decd0a6e364f9b3ea4087380b03b1a866804029db5f074c2d9b852d7dde7e2d7c9d71752869a592995058b5e28f16f7770dfa4b484f36e3eacaab5927fab9d0166d682a6ff0a3a2dfd98cfedc81f7ee92102f81f6bb8b970550bd6fde16ed52681028f2630b25e92d28b35c8bf63f98dc5d1786dd0155d65b148d5c8bf21fb420822cf0afb16bf3bdaf8c6e021c32a441e4a690645c96258b597db3d261ce7e503f55b42c21e082309d4cdca3cc26f0f4dbf46f2df40be3f434f1c39baced9d7343d94f6ff72e9f82e4eacbc97f27b108e52a9723108a5aecac3259b6afebecf74b47077d697c40bf4f4d445bcbacfae236a3db14346548730a30a264a77c5066002a681fc1c53cfa493006ed08552d90c39b1b5019cfec18a6a85c926b8843fde9237f2e4371067ed7bd3e0669a46c5046b04fe9291ff629e116254eafacaa342ce2250cd42fa8e409784ed6fa8a7b4800ed47ef8b04bee9d5c6586f7d2e4f7a88f7c437383520fb246b59389a1c1a002ad23b17b5eaceea3df998326236572c03ebce3b6247e28dbad742b3654b609bf6b995adcc7491f4dac6adb5f860447bcdbb62e94f62156f1dc33b9d05bf4a51241ea8b14d5da171334986fc185edfafbb385d48342d23a921e6bdedbd605371892298976dc1c1eeb890838cb9ebc8c718337932763493fc39298f4f474f2e14046d440e363ff741f03d70daaf9a41dfbbd3ef151d4b908335167e065ac9eb674928e63e3c876ef9e4ee35bc730282c7785631c2041c755df5c0c77a4da28792007a50f54b37405a0df105cc18e4f407c4b1c1fd6741b77022e211459304fa5cf98d48e383ddced6e3c1854ea0e4a3edd5e5a28699a056f500eb20d1c89043fc490c8fa36e3c4f76d500e4479d105f94a032a1feb86fe274b0ecac1bca50b8c597ee5ce0f0fc53dc8a2dc3868d4e7e42c40759a0d2e0f62b528aefa8b047a04c3144f64722275e6202dbd75cb651a6d131379ffe01ee1e247d3a03b0a8cf12d8aab966ce5c82db159f354c9ff314d1bc8f49407d8b9d296b94f1afd26c9e3ed77b869353e2c91871bb787a7460e16ef7946c5d782ec5941d45d592bb360a20367679cba562d25f33fe6283c7623b7091a651f58f4273dff78128e9f484691b8c114d27976b10d6e1bcbc4d6abd605c15d65b141b3213a8a4b30b9e6a919f54882097f982cf8e1588a9fbed621b61b24845de37feddb28b0228e2c01a952b3b733ee173ea881619911f57626126386310e0ae118612f43bb3a30161e237081bb71ffafc3b8f8dda712031bd3c52460bfc6431b05f7c43f1c67f1fd80000b69f11beaa281640ae9be1db7ca54863e701f2dc19a804fc8d8063c7728d64d7a2961c69cdbb06844c94d1e0b7934da4882de7f92492616a007fb049aebba0620b262687eab55f4e842069a106aaecc0bea508c2821f30f5d8166524a4db17fd933e4991465602849c75fad22f67e282448d82d2c87e981529da745107db24ebd5de8d79f030d67d1b3b48534fa71d1cc121c75ad084aa5a8d441404920827d29229a4e468bbd712b6182e416e7fe21a261c6c98011fbcbf04100fe018027f27fa6fc19a533b969159db58f8a33012faf91d723b3deb63772d8f8ef8ababd3b5999fa923c5ef83a250d8ccfd36a682164a6cdb638598373896ea66e3ca2d0eaa9ebd46ae5c615b827c93d3a291903f6bfb59ff6c801b3f52fe53ed4259a8747e5cb5c94c5908ff563e55ed0e1c6289f8495911f6730e9a5212d249e68e8157d1486624d0806a27c2af4f4fbd4bd170cf34ee8251ac3a4773f54a36a4cd5c96bc81578050064a0a6520fa11a4931421f8bdd333e485ba105680da4188c2b914d540f7a210ac496e7dd9365faca8fba9c1ed8c59a783282515901dda3780cb080de431dc38f8869a63fa10edf4391a010875b59406ef9def5ba731a073fd61306c3a7d19d67a9208af2b8d863e1406f85fe4b2d6d16c4bc22353188ec37cd8e980127c78f2d83b1cc51dbcf8368cb991250af6a37110a15739324f4a028ab86696168b90c3fb23a5aeb259f5d6e61b5de070a4e3b88729fbd52cbb05f77f985285506e88f79ccadf164983c3c7a1035b0d499299f0e972cacaa0cc8eb9867109691eddaa95da8478afba4c60153163cf0320dd97949562d980821db5aecb4c2407e653e9bb8551913acd4fba46521aa47857de180cbeecca0691f942dd3c72aa31a3091291a244ede44df1b26fb0adcd3cee20f9414822f7126729f1ea73237135bb50d3f72a7d4395a04277f516189847cf56f0bfc08470e30001d4d4c87e25958c8880f445ff4caef874ab235cadb0f097d49e4ac7e3c471d13224020b32639451216370f1acf80625d32fdae8949e58f1f7730a9b64057fee64e2429c471c3200a7ac5cb07f1b522070a01763bb6f68e8da97bff18fc81e041768a8c24c23b57dfbccf360cddef36a994da6dc8e11a526fb22aa5a25cf24333f1285771fe6007def2ccde7cc1b8452faaead4251a8bf74b1a7174ee85e33ac2fb92686655bf2cf11b7b4e0c697bf5936579cb6864a0d818e3222167d26ff92e76d8394d8b4849c38a217b4e8c07b24dad8d17e95aca188c538f1f9b95003f2f6ba61c86a90cf4574280a8e4990541985ff21e9347b61eeb2b9695ce2519268f24d5bb1afe9129fa0703cfb4ed4e091d83c4e4b9ab2ecd36c89188457b9123b29283e82e562902391c340bffd8c416900c5e03aecb8610824b0bda62271e41ea276f218b82e448c4a4122420d651f99db4b866ec9a297fb3f177dd26e3270131b283baa3c2e8fdb5e37531a06a1ae0d515bda1f91b6cfbcb8fe451d4c637cfa736a989d18f4835c45fccba6eb8732d8edd19632040bf18393e192357ecd4308315108fadc24cacfe9f9ed0022410a09ee292b4ca7eeb27a1cf651e6ae35617dba3ed324ff76b6273ef53561d0226c25f03a7218d6af37a2076b780ff00a901063e253b3af004de3f121941809a2c3b693cea4fb8a79c96179989df9ed15164202c1a7d10e944924bdb8ae9abc1e4bf76617e9d9d9a7cfdf710eb2b45dc9f7fc23aaeee6b672cc25efe1dc7849549eea33e3d37ba713b372dffe6dcd0b7cbf4d02f65e948aa6eb6a8f5d419c24371d96b41eb405bfa0df10df38fe6e8b5e39e14bea9eedfdd8bde00ac87578f89a4f20c0bf0766460ddd3b9d45c84c7fcf2fa5c532c1a75313ed3ef835246cf4c815aa84933750b8bb649338588a641374f5159c416204430153cdd6b40769310e4151c8940a53b63f2c079007c1663ef0647b5253693de7c5944bd7922c68642d38f26ffcd82f829e64e284e8449dd1ae35042659215163942b1f35e473c1a0a22028f1700a506989cc38555c0ac66072ca5c359338926aead0541872e1544c345433138c84a4515bc004101f1b963a61a0184733d31008a5a09785c7e0999699aa1013353c101b9c6974f7eef718d1facc60ca5e76e5a9030978fb18a85350daca807715902f9a7fd0972044969a7b6a409ee5bee00ca7edf18e93fc399d0ec9be6ebee55e4c56c000a7eedd35884da833d0c792600cf34c81d1025f994aa0392272ef3876421c7472eaaa78f158a46fd162f72823817b46697b9ab1b717f4f9bcb872ce5f20dc55867c022430828ec5a024ba7ab5e95c8fdfe5347afacde9fb9f2120e2402c39b259708bc50f352c27ef6b251c4a62acf5397a817bed67bc016c578f192ab41b0817cb4c24936c7c56cee26ca086fc5d62ed4fc19090458451b3fc1d61935414e6f7eae6ce35d376e9c877ca3a142c3a118995eafe666a6f836fae8a51c16bd9d74d01c1d39a67bf51a605da52f5caa0d3069c807270c163cc1be334ff771440fdd28db8f6584ceec5ead2546f157a4b21902590bc48333dd6761f039a8236961a0825df131f7f224d0f6219cb343845e3bf510e6a147a2696860ec57c640e67e21e572302225fa72fd24f1d41aef89b1db54703296c81c31102f0e259a11a29f46bad2d8e09c2c146766215ce1c72313fdc9646cb8e5411670d4db4ef99e6587c6ca5f84cf4d3d456abd25d55cef020d6ed0f8c537450752763fdac2828528258011e0eee9b92f629f69180b8885a25c362c75612fe174aa88057b062b657d08a0521f36155c5f06c01713d21578f589d480009224d33b4c2b14a22b767024b613f4446a3561d946ddf24b35433647d71a6b8ab6273823fa011dcf0256cde341e23cb7e722085264e8f1e4155b3b0f6b71a1d84a75c6a7757ebd9ad2cb0c83f9d6d5a72e8fe1b0dbf9d2b28ac7185ae547c3f6fd9cb5eacd6c5d24ee1e776006685af0a6c5d6e53b90aaa6c0f0dc45e77b31bd89a65438262c36d2fbb53298e22d413f2461d69b64e6b9d370e8d5342aefc73c8890629560273179267e7b9092a3ae60dcbe3392582c1778ec36c45d616d88bf82dbc87f5794cb2be9c0a53562b27e99d6caa4ae28e02a98739dbe3c40bdb4b68d021295c5120a1d5ef2fc438a68b0772223beaa9dd98727a25872fdd07a613eaf9eca94a5b36058891984ff8ac4837edf887ccfc48ad67c1b6c344c06fb368fc394c623d23e3a39edbd0861b1fb0ea8e94b08224475776de304519bca9faaeb00896aa51097ac9be6b761fffcd9646469ffe958264f85c7ee2f650c5c067e2072443fe755c2815e251f64e98090352ddc67c27fb43a8862baed0948d241240d0b8a85d7bc86a389612ef7dd330e1cf3a1534148647b193debe16f555d9994177f098fd0c510f3755f51a1e8f37c2c42c02a35d01d035c7af80837e10b23ef90033848074ff8be59490c1b4ca22ded6a40d30635fc99b74831c585f90aa43780ca34f2142022fb9a4ee292ef0e8cd98b7468edebe7695147386ac66ddc9da4915ca19d68b03b9d558d2c54557573ee2314ae722471fd44b890c03c914a22e1f53320917950819966498c9a0f3f5469b58fef7d3b477ef7d41cf676b285ae53f28f24966ae09ead819a6b36dc6fafe8264bd3ccdb9b720cdc0f00e7845de36109beb6e7478082e5009dae632aa38006f8b1179e734f0db7203141102d0e0cb3b3f991d5536af4073b13bafe6b34e3729c8f9f236e858fc6ae65613181fb6e3b637c034ebddbe192f0712f83ab4607ee9d538f9196b3ab7cbe14359990b489dd990a00a7aadba8299225e2f591c80c83f01e5e88e7fae5317a004690004fdf5db2a8e8921513e7e42b4bd8c91ccad124938c111139ade8c8a6420761b356726475633bb2194241088047df1beca4a1ae1386990bf1fa26909ac9819a067f1e1ac2068091ca3305ea119a9d5bb40e317fc5b2a79363bb30dff9be5cc05c60ed5b1d74b6bc95e039b05e8ab52cf7e1d02cfcfec03739596ea5e6e37236a1176443dc6c5d243ccf9825847ad109b7a5c6830092b5601d3fda76a3d8682c8079a337f9e77d6cefb275d4e488ebc7563de789634675ceccb0ab5830bdafd7486df7ae5981f299f68993c50287c0400f36f3b90af8a34e7f3b1e18069e234e20c440368fc8aa01c6d2b44e4811e869fa4074cb25548a8ad7d3e69932a579b6462edcb00046bed5412c2a2692d3c5e6d73d0f4c618cb51b82ccf9545e88bcaeeaf0b77f7f552b94cd6666850011f1b461f71e496b5feb95faa4f14b637762ad1ee85c7356b18b891d4c5b0cf86036c530c98284a9e2c2faefe520d6201682b5301d22c8bd37a79cd1eab9a68d41ca43ef27f070c407c4adf4e7009c05c563b40e90c6357de76eb4434e6a895ea3f9c7462d15cc060cf61b240533feef379a336649f8b5843817a8b7c2a6c763827d82911f4115bf585631b318870cf0c2c3e776b31705a980b7a64a93860783bf8cd42f67ac4b08c83b8e344bbe0378352b689e03fbb9c8ef1bb0b427545b14357d192468b0e733dfca4937669b583d64cdba6c09fecaa1907bb1317f218802061ec7a40640efe9990bc4cbfa42ecc3ffe2c7904b540d6e688377dca2a674fe98192c1e8626bb8ed6e512ac8ec953f998801629b3fc4c12d7e84875f64b0c4b45d7a63297bb6db5d9d89c1393bbc55e6418744fb9d93a7c2e3e7f18c4b78de12434f5fefe6d8e8f762677dcb293f8884db24ceb9c0c058c8601da12853a5f508ca151074afabbff1e2b5c77febf22abb8ff9e0853d3f0e1fac7d500cc55cb3f651431a00066e282717457bff72f42d0533ae0582a1480c3af11c8b02774f81542d1ca22f077b3f228020e2457134b4ab288748b6436ee26654a524ab965a603a9038603b90750a6812efeffffffff3f54b2e97df8ff77daef2eaa5e606aa1a39bc1f7224a2786aee916ad45281035ee431abfbf6dfdffb7964eecf6bffdddd27e1a59e5080bbba3dd75ebeeee1818b5dd6b921935473019dd1ddbff7f233aac91a18c3fdc204589e5cf01000b9fa6133c6ed88186274528c8b21ccbf9ddddddc9d0b4c9a31e108f70e254a35074fcc6ceedd5a2dda35a38380290789001349bc671cc71a9848315d096b1ab2c1e40446985aa1352ac54994e645210224606cadddd5d3c8185c2ca0c27469698402283502e881663f9d67a7f6cffff8574d3268576576827cb7645feffff9f826d468f13413d63798754e59f50a36296300980ebea04eb66358e630adbfaff6f616dd97b11b5ffb1b607135b7d9b9628d8348ee34d28975a4005edad7e10240a5f1d29ba1a2b411d5590d880a272c2484215013c193b8c1c87d7a4e6c88f1b7aa6bc984d8c7242b22cc77266baf90178c2211434316054a47081c724542335c3c4c6440a3378b34de338068533b8e55296cc0cb6e8d64c4fcddd00438103493c86e0d039418614e692dc905c93aee916ad2bc809617dc337dcdd4760d1615cddc6dd7b585854690a61ad54c424f9627e59966339d314bbd64ef837453bc21c4e39a0724cc95ee805fb37ffbe18eeffff91c9430249aa3c827ed485fc6db9a4c4e6b7737d010be6d4d4aa719ac1c94ae6453982f8b8b8df930331d1339627d0feab022668a7042565858f1ccdd3d8648c6281ef087184a84d5eacbb21058deb03bb6801129a21c52709c60933865c0fbd191adc4b81c36188e5df85e04648159f153d7e3a18b22cc772ce3aa452efc259c00f951d560b19563d28a119650cd3c516638cf5c518638c73bc1c4fce27a72337943b9a36bfd5f013fe0e6003910e0f3ce18ee6eaba757777777777a1f0ca576cf7e1ac50e3f6ffff7ba23679e7115dd32d5a532347ffffff39ea1291a9d652935c96e558ce8f9582f47e138b8c82e4060b2eec8e783a38cd1144ac987ebb711c6bdcddf16fcbde0e4ddbfd573dc7fd25055480dcecd0d97982f317b6a3a0ffff93a84dde970d07422f0465103d994a3293e070fa91653996f3879b304a491414ae03ab4433c8261df68ce37882caa51857b22996b32cc772c63930364c52599c4ec4d0a1325df021b2e49324eb5957dcc21cd0b4c90f724237c7629494e440ade0ffffcfd5b07fba14ab711c71dcdd656fc86fbbbf78583149cd51ca9e0dde1c318aa59ececff24415a682b04461918306106905f15fc968bf4592432aee859eebd6dddd850431aeeeee1e082fc22942a1c5b716fd46baa65bb476ed72d07181aa05deb883d2bcc1c48916f8ca2a040e018f42e4f4d4f41071b8d039a101fb91c548c6c8c6884763a5c32ac00ac904859a223354f0e80999556c6478145e141e0b660e30c5850ba52a39a92b93ca1493a9aa3905ac533ffdff7f44376d72c491ddcd59966339ffff3fcd0a83ee8e24ba57f16dc74fd4266f96e558cef4ffbf052b3ba205ac6c91fcffffebdbbc33d7adbbbbe31e8ba7ed5ec37be2358142a9e4a408a231f5cd75581b58b12a305480b811a346375b3c539464598ee5fc42684bd640135ae0ee0eb57dc72b852428bbdbc489d2eeeeeeafc32f89aa40744db7681d22e6454a6868aa0a4b0590aa2420ce5dd13757e24592aa2e5cc242915a158f163e7789cc7d41002a3edb592cd9346c3c12d01f4161adb5b685d3b449a8a9aa2b5c8b2ce289165650ed8f9124eb5961d02debd65a6b754c5b6b2d500770087804ec018140a7bf5928cf5e677dd2ffff2a184d9b5421e9aaf0cbb22ccbb19cfdffffb3ae383823d6dd5dc8f616d6d90f971c4d9bec5d60769241e9a95ad5b4c92557d326b78b081715d6f8f2f0ff3c2e1b3f3a64e303f6c023031613269cdb30659b12aaa0b3ab91015208048512c53184e308470f0750f76f8121437a649861454c0cdcd7b09f2618c290653996f37f1027463a552aa560c748d7748bd6b447de585d1ff2e72efc3fd5e13ce9a12808d594243a824836c2dd6df68ce3b8e286bb2d957464447d9b9fa5dddd83a6a64d565d7d10944587272481c871128303931114b1c104a54a152f17e20a31f225bacb84c8ef7429f6bbbbbbfb90a5308898e32a5ae44c5115d140a26146c8aef18335e57f271df6ffbf8661ac5f64bf67598ee58cc2f7ffef6367daa48f9eeb0328cb783308c9f2ffff2f838402958a1b2699c4dd6fadf7c7f6ff1f4b66dae4082c9b9b294fb6feff1f4b67ff51180362c986ee5d3b6698a85c35fd784ca420b989b2e598c58a2c46a8f86498b0d91fbaa65bb42e0a11ca4c9bb4e1f1f838507d6a22714e3b77a74abe5e547e77770cc367bbef1069b24364c8440e0ae7533e3a7c7a486977f72a3ca24a5377f7798304f3e02dac907c4b3afe82ee509bbc618d3b029a4c1a146a377cea0e2c1e230f9df3e0e1995c2423340549aa743eaaa4a2ac44d9097ffc421cde944c56487be32b49edc69e94a7a06b8e701a9f06032ed890e317cc51446342797264066521caddaf5b9746ae8c64a10981477664289239bb168e9024ab15865a1892838773a99c9d5e0e8d39c4ddddfd04a5aa31f8a1c7d0b4c9a31ebd95cebaa503aa76a13494736ea9f79c5392303704b6a4d11dae03efa29870a6aaf058c7dff5d1084e559e6c64ad927084a895d31d9352e080b425f09b7c307a53088ad8e4837125484d71bbba5e5ddde5b5ce0e3eace275c90a72a20e670318726fa8ff3581aa5f20547d69e10c04b303b326d25ec26d2d2de4cdda6c42056f3883f36a62fda0322e3dc2eb517660427670ffde7befe501c2b3d068d6de27b5a1008e72076a5acb6439cf36306bf60669b7821cddb5a0f844d912f41a7f90c4b350a4e10a3e60b1b5205c51848a69a1d4c096a0ba7ea601174d529bd600d60358ca2f12eb6a19dc303818dcac2ea10cd65946d492da5a0320925f24d626012725035c60668d00cc9e491c9e495c6be622db539ab0a9aefe0a21034c77d56f5f35a8c4746a29a5f5f5e1d24a4c5b2935e1ab2d828228290741ae45a81ad44a672284e33886d256ebd4f7ce82aaad35b4b5560de8825e44ec116a1b0677b5285f2060ed12ca5c3d13f4226293401950eb4b02307be2ec4c6e136a080070852f0ad0f045b5df59107d4ae9b51f9e56626eebb417ba2d2d745a7990e40bdeb69adea9fdce9f0b704d93b2f6a28009aa3d817d856035fdbd90d954c36cfa92000cd57f5f8bf72fed85eea7515b431462f842b3b2cc71bfd0acaca9c7713f2d94355b82eafa598919d242e00b9854b4ae5a626e7fda0bdd3e5f24603c9c3d19e5eee1ce141ac791850c77b65caac10b77b00821c08d1a352cd46061a5cb2009846e6cb27143a8083873b029a269dc38517389ae88b214c914d914f1723cc04b3231258bee4ad595208c31c6d87b732ac9eedcc0ccc06171c509100611a82b1ae68c9fbb3b8e1efe0007300f51b5deffffffa7b3bf9dfdedd85f8ffebbc3638e101d0992752d6ac094d06887865de36dc84225436543c5a3e2f91b46f8fdffff63f9ff97a4acd89f653996f3ffff3f4df2e43f783f787ef8fcd0f1ffff3f776accb9b3652f6667eecc607dfb1e6640618e1339c29e10a11a250a0727de637bb6540a0ef5c4f856d8ef384e564a39bcd21d9f84c67184f1b4658fc7f8b43d98d86214be22e923e8c3ca0716cf9194f48ce5dd0f1f36062177975046d714531d512489a9f692a0987922133c618989959b13373a529bbcb70685568ea64df6f0082b408ca9bbfb6e3b16fd014e9b74fae007cab6b063994a297ca08836f5ba7577772b206a93d79b54204316c48c943f915546ac165d5b4e65bbaee916ad43c8252b4756ea576380c21b0db566202b458c17a36e872bb8aa832b9700192217342b6e80a10437b1f6d479ca9630084f54c175046cad101ee1db9d1932c66418543c83876f8690ded23723c56e6de99b9193b9b2599bc566cd5784e3127be4dc430c59c4c14724e52362f21111b9707c44412cf8885c10d9b86ef22b8b2a87d8d23754c30e19c496be21a71d6a51457e6de91b6a61570c7c3d6a6a8efd96bea1a44db7f40da160bb646d8188d44eb1eef66136b09db5d65a4b2ba6f5de70265b2d8c4351c4b7bacd219c4dfdd4e5aa586cf56a75c5b7e698ace5badb69301d4c07b3991c3c2da4aed7c58fef8b44cbd6abebc5145feb487275b5b6cf7eb0ae4fefd5f845e25a1b2a7e8c6b38c3fbba0d6777dfeb3f83e1c2996f9ffd506d453b935dc4dd63510e442c6a9ba3b80ba502eeeb1b51b6b8586025b34cbf5064778cedfd1e980d6c373578d964980e6603dbc1743452015345a6d9534f6f394d0fe5e075dd75f6236a3a9ba215802fbb88bb9718df1bb65a18bf48d4ba33e5def7991a004d0de6eb7d66cdfd9ba8fcc3aa8aec22ee60e24ee4ed883c730317984e76202dcd2eb374d3d98fa8ef4ca77122adbee87aa1c8ae17891f91d2bf32eb5c2f122d2925d622a5410f54dda6daded705e80ca6fbd9fb4cdbd4f845c2d21e0399ec22ee76d35b983ef9cc77380b67ae9792ec2f9ba9656bfba4512edf63adaeb31fbbdb49054c9d0b4c07d3bd3ec0743bcac1eb50dce9c4ddf7b8bccfb0cfeeb63397cf7edb598bce5056eb7f714bb4c0ca5602f0a0ab5d50812adad6bdb6ea96f858a4b5749d81e0fee39b81575d82ad1b543a69ffaeb58bd56e69a526ccab1b922c7d327ab68b4cc66ebb5c1906b50b2a80b5dc22cc11d7d256875bde99cc8c081ca655adbbb816ad82fd1acf74227057b76632331777b54e040e6b125c5da96c5b19a30c835a027e8b00b65dffcb6f4b1b216ff90a41d2b025ede702ab4d20937025505d42ad3a03342b6b6aabc30b24ad02555bda0524aed2240d2b9d217eed20b8a698d2d90fa655ed01ad3317126cb752da3b0209733bad04dd520360d70d2a9dd3015eb5b43312e6fea99526a98dd266b53cd8912c7d31acb62f46cf9e5aeea07491ed39479c2fc64ee78bb1dbf382d7543f2d02384ad38998375aabbea54e86a35bea32eeb7a495a078eb2ece005bd27e4aa0da83596956d6945959381a660002384a0b299328e50653534ae50601907aa8242d1b0a3a886668008000f31800040c8240144692304fa30ab23d1480093a564e52504a100b07c54130281086c1603000080483010100000808878118080fd325bb06070b52dbf84892117c706955ad0a4a710e9e828dfa509a8bfa7f99dcdc1cf10fa330a434db5d5682d9be4b75908b766eda31f0b80ab5eb977c5670bfc7ae18fd8c001fcf0a0786fed8bf86652871413701f975e64225ebd98578d6fd6bfea54614005f6ee068403977e1af512ba06b83d0550eda79bd589aef61cae96a5f9357946b53e89e1bfb70f2a425b6e6f92fef8a2efea148a9d907da21ab3f3abf7e263a9bf6faeca610f03c9e5aedc6036533bfc2a847d8a32963444704dbac2292d326a9ae8a0012a4aa690173e3d51514ffa260cbb8b357e3e6815b81f60eca215e85f7a901394d9ab6f70b9d29b6a6d26f290103a796c0170256461c1bcd22a02cc7cd6505ccec3c85cfdad1f96005f8ac3893b33fa8736e4cede858b6ed4e8004b716a16efb160bbd54560e0c4094b23b16a6bea8a72846ff37fac37eb5b0865ef1cb2e79cbaa07ff8f05e92535ca9a62dfd8ff651995b4fe9f230501f9920c9e8ca0b97ee51438940233b0a66056f6488a2925db1ef91a082d1eb545a8f1dfc5b3200115eb2ae07edef7e51f16171b18efe43fb956a93fd0bf9936dd51f709230da8e7f0edbe842cbf1b9ae2c704f5ca7769d254bf0de4506a342b40a559126c870f0e261b83b2ed7c243cb6bef2420b23f5796a45a87c1dcafc2d6d802934d988b0218f49dfbc02929c637e572e725657f6b1b73b337824a6bc661ed04a078e03206756171ff98043f3a99ed23f37c764383100775c6e253c46385015aa573e00f5ac86ecd8da904ff63bd0fb1a814827037ca6bfdaff85cab77c3042b8f0c5153ffba98d230e74a7af1495011a518a75e4a2dc52a7c1581f67ed984e9d0582379714b3e510038e280fe7a2952571295e6e0cf1f244c5015df0dbe3152c3c89694ec2daf1d896a9f2a2d13e69b4667300598b107505728c22f52fae56004fbde8f1a701d0982f2f33f27ab94363ac4787df22d64d847bedb67c8ae537ab4ef2f686ad2b2fd00f89ab7eb9e358f4d0486fac36dd01c252f48419c339ee82b87ed7dede9ec5373ef1d4e04dc633dd206435701f712f90cf62fba0f04210acc3c809441d0ef0756462ffd2eba296625811ceaa1a7b58d790a858c2744ffeecd37b71b7c2d457967f86fdf413d78364b22360109da8818577bcf8691df0cd0802a57152a7455cb06729f188f050c9b0abcccc8f7ae1399e51d7e3f806e3d3b57af6fc9699488a727a4ed39290e81fce26d23badb69596e05374a5830d0e7b34d901eec21685bbff4e44fcf8bc59f8a9891812eef3e96fb98c68d071e0ccaae912d123d80201f251298756cd78c7cf4a148f25801e1d09f4ca7fce188c48d7879709af6f89a6dd4839250ccade3ceb6229c16c0d220ae194a9eaa8036e5f82545633a5193e9388fae76341e8b9fbb8a9cf904a237045aa8a174bc8e871cc218e28c5cc87a3bfa04f9b0888c2d4eeece4d61bf62104a1bc9f60b1b1dd6010ac019580ed3563f8579db714e0cab42ce9e680e802feed7a145a00c4560aeee43e3486ab09ec41dc65475c682c9db10ee935936c1686cb3ce1ddd6e548060669b55babc3c1907898ba025a8375b5511e1843a04a1f16e80092ce988412768af502f20cf2e98c4435d89d45de5cc2a529897371296e8ae9099b676939940d4fbd0da157851d11c2759f0c459d029e0256889ae4eb734905cc67f310e92461af2905c097d9c7a626ffc4db6648107ec84c87ff355d0a8dae11b142ba925f6b2a1c87b14823e7fed17fb48e6929ae3b83489e0491caf09cfb6896eafda012977ca87b87ac4e55f5624b72b521d35c28fdaafad6d7a6bc349e002ad2af6e5c6a0ac6824600f08a1c2a529562070411d7e05c02b1388c51c5617202a51f655e7c98a57b634c956b47de9799c63d802a00ee9c9716a9968f578639ab119c54fc4e726a1fdbf4043bc5383db85c45019395efbd1695468b0cdd5db9b5b704fdc1bfe4288b3e09135f86936e91fb80eee43e64dda62184c5a0f6aba470657cdf106a7985e649133da1274c21eab016293a045aa09834d189394ab413e68a97b937bd598b0055b440f1ba29b42e3d52993c5cf23c013d488f8dc85281d8e1c80a57569428ebf8c30197b0d5158614ace74d050c2d062c3f80e4b58d6069255905692424e31c30fc4bc4a32cd782aad9a6bc15975260d4ba0c91dabf3961fe2206f589444a50f9312ca799ed72d7d1f465c7854d98f45c40421dbd1b8390660a27a4a26c3855bb0d8f33a5c9e1c1984e10892ca7e00ac354b9c73c5ccbf7c4c06943e94b57ed324825a4c14b323dc09f6b8a7089c8e9bc74bab44617c79d9aa4e6d3a81e979b440a1516e1ee3443879304ee338478e6127cafa3636d1a0bb14eb38ed429442e4d1f5c6bb4b16c2d561386e5116360a85d3d77f40151611bfe870a6c362602474b04c829241d91fdc8962403a6429ad7adfcb8ab5c385124d453faea54a8212bcd895030c0fa8b8ab74f0c74f744a68fa3669ebf0e372673eacef4a21746656e33dadde112c466b46d70880baca72fc9fba9e09be6ef4fe492ef0b143a240b8356c7e5597391562f22bc19ca3dcd0be80b0d77085c211ef5a9f4197ea2eacad68238099f26abf44f62f3500445e1a1106a170c992205837a8616e1a8e70881e2c61e7d6b9291b61afb5e58a73c7450b5e55f3ef539fb0577e1147dd6e71ca5afacabafdfae91ce6dc56930766cc413205665417f7c6f5fca4cdf40e9bf4fc84b8ab01a2150f4e8a0e01fc537471a66a6f7af0e3a19379ae9f9b13c7f705cb369861db056c834950f2f2f9d0cf4cd1ccb50a9b3a2fc1bb7cfb8348ac5d7e965a00cd2b6464fa8bceaedf786943052b7868ead0b4d9799d26639fa233803a3635931960de406e6a67d46aa3d8b822f4135002e9ee97319a7ea7f4b6af97e6a12e6ab116ca2b1f8ee84375465ca9629acd9e4cb096527621325d1a87e130581ab6656955666aef6d2586b0d5a9dfb3ced692ee6790e10980a1bf973c9505127337088d410b4ca5fd13ae21ad87c1a3ebd16cedce5428a689d0c53778b8a695c4b69803e70378830d01c43b45b0d17638a5ca75e71354410219da43468c5f376359bad6e2059a3526b260bde84b0cfd463d098437bd54667d1691330531d058507cce79819124863d5d68b9bcff18c8ac498add8245a103239329030e9f9404d9965768e74e96445f5d4c4caffbdb73a8f8a7326c1265dde223a01c73e5513332155c08b362c40508807b216ca0b4fb63bd748a0ce88b2c7138edab9200353e8d8c4ccdda00291c9233b7e66d4275f459a552ccfebc81a5e69f2dd1d5e0acd2251e96a891ea19d280169724d5c54634daba59a8e4a59bcdf78468279cb9ebb6039a0e0a54686435b813932bdd798e10620e839b0c67392c191d5c777883a596b5c3fbe50c1e07fa935e6b0280b5cc1830a313e1178a636d3fabe2fc7f79b62dafa5c7c78a927591039ad57fa8f7212e0e4e3bcaedc92485a92d0250d37d8e6ab637d7ee364e613236caf9829ea29df56ea9ab014fc21ff4a1457c9bfe7327b421159a045d369d0557c24c5c6943e6370b58d8a8c3b4a7c38c9656a2f364a76407bad98ce1cc733455b4d018f1be51a09fe18dbc03f1fe29f4d8cbb1ccfaa9e17989888067c13abd71c592b4408076a6359ca40646cef88245e54f96f4b3c4b11a440381927720e21a338ce5a5957aca824bd4f62a2fab2433cf66319310d9ee141b25ba70f343097d761ebe66ca5a0216df83491a4720243a5893feb43f88b137bbe505f513e6d81c4dafdd52c4bb4e18371ee58019d0d2f315c880f50675bb65b0392d09058242217832afbe50e4854ed4093ac46110d58082452d75730f25f342dce6cd9aec1a1405c0f09557cfb59660e8989e67ad662dff4618eb4a4d2852cae738ea1c4f632117a539e2047a071a9505347d00c57086b1f4f796fb92b24dc696b827c5b4be043b40e8c1b561f59d85bb02875058178c5d69f3784d50c0833e4ee14826d40773d17c4f61251f888874a347678f6e92456ac8ad944a50f40f960ed7fc08875f40319f098172aad0c84dc98cb18ffae67b0c90597628509e8014b319001398927b4c8fd718054f5b96b87ea01161eca9535f62b5089ccb25771e67c0046bb0b8ec7780907f0a7dcd9d47d2a3f704866582271cc703979cc0d4e4d111722e99c143fdf0655e9aafb5ed44087d2ccbda451668c34e95db424158f5cfec67d455fb56258edfc21aaf6e2b2d77c9d37a43d4e3822c6ea425d22f383428c7322091ca108f2488cf1275f9934b45c08e228704a12df49d24bd32653f0d2a4f17c7d47cf763a14c70d6f77917a5a4a016f9a4d60f1a4b0195c3d97b4931e1aefd7f6e47cef36506a83214b6f9a95005f2f22786bdba20b1653a96a59a914069321b8c1468cc7f279cdf69d52129441ab6b9d7d997c56214baa9b4841573df8f4c5e591786bf4ce616134ada02e74ef6a625afb9ef053414e466fe83f58d10da54776b3f19508deec3cbb38b7039ab844c288e4290c5893637465b30fe2a4df3700216d4613e82f7ac846c8980f7f2077e49cc9fcf045dadc882adc5dce865a14594d8ad603ffe01998459105a4b033c5fe1023f6ea06a7df226111e6964e7b4cc6ec6a01762791b0669b20890a65b68d6a7beaad92957edb33544dfa6b9042662ffafb4210bdfb39866069fe874dce27cfca733f72f8d7d4431e341d60f61840905064efd70b03605c237c2b31d939ae050aa0cfd5240d8d09d7ee56deb028bb794d09b9de26b4dc4515a29128780f885e22b6640e923a4eee3a5669f7c5e6af766db5328f6bb2c38b729c26794e385890032b669b155898fe6bdd887afce9a2957e2dd4e1c0f33fa9283a622a60560dcab3c32e31b98d6e70d2468283cda99c8d76da18e03cdd964bd5eeab7def6b380eb79bd837255aa2a42a140e42b63dd2ee332306d7d32e2bdd460a623e380d305bba90cfe748a04958388d7037697f830dd3e0ac21cdc6296d385fea249cc07d57caa5549fbeb28db5fd13478165a9b02b139402d906ca8eb2ff6aacc2d48ea0b8df1c807fd37ea26f38005addf2b7c64d772d52808386883b22c90886e7ee528e74f2622b54d83b1759eb2a02b0e288e06459b757dd34849befe9e4ea08ea6099a32819620013dd50d2dffa493b3d08de952206b1f465b5213efa1b94d794b7c49ff30c143d94970b07eb74242e015bd8af730ddb10665a3348ddef36ccc1282dae66d6e249bb4a8e4dbdbba6766710e98030d5170d9b8f60a7ac0b6a8df28f5fa3fb63439286c3545c119f0bffaf54f6ebeb41d814154e84b044fd4f67d327aaa904dc3a7bd2ce2c1e8bd0e3cd1f758a24ac63cd2267b85066ea48177a499875dd82013dc9b2c74aa19a1b8727f2459ffd0ff8fb903f0c509b50f08dfcc1fcddc782bac95eeaa60c7cf770345fa586466c9b2aa0efb904186a063093f55f00a4348ad1e36712b6903263d4bb1801f1a760ab6c6a8f654dbda0668e2734d1b35f93c0a72bdabddd2f6c7a4d802312a085221e363d944999d40ef3e341d042448071531b8958965e8bd13e2ca0ec6fc7ea7a475eec89f89d94eacb4812d773a864620c8737b5b734dee88b75384e2d1d8d75b0811bdffee8f104e5d7ebd0379167cdd48d60a5b6da4ea05c446c30978aaf47e6e876ce7d8d75770876958dff493f50ec5051fcae7652ecf053bfb7624c228c9902880c924784fe2d9184baa71e5ee95f0ad0dec9283ea924a09a5de23727d1920182857415f4cd2f39551e13623e23411d36202d0f0e00ae54c49c2803d0e7cbb8051e6d7891a687888312d676c15b2ad25b4f3aa446aafa03d1737479b6e558c180b0188967d5a39a97933f999c1b6814086bd165d4a731371db75c3374c0fe8bbc4e6f16cf4ea82665eea8f072970501a4afeb301f5d7b42ca9e5ce50e94ec9bb06329da001261a988253b432db1ec28698e9f9ce738065984eaa7612d37cc3c47a2bd949c53bd3ad9a5a04ff394f08a4153afa03ea366b0b0736f2dc9bcd28a839801b9c0d239527a1c41f851705f2a1cb5fe04106a79bd14d708768c8312c462d10e0a04e914310588ec344bf80e519a58952b08d4acd7b5f1d7decb62ab8661b4d49371f703d2915dc6583501d91ed1e9067be9a4d2a14999b6ebf1e8f8b1b6ba5114d0061c60e2d16dff47d701708864be2da1398af65200421b64bd0058e5707b50c22aa1241c4ad702a485864a4b6702b2516b30acc558b6f3328858178f2e5da160bcd222da8ecdd61e5c7122094e42ba43f38ab0407ca877dafd9de0b274dec463ba209d9b9b4f4943a9191e9ffadf108810b45b2568a64264acbf25252fc246e1ef6561ebd1ff795a9556906cb89684ad89b4de165e95e6d4e04b5be2b4aa4138bee4a36136087752ed3168863c434967257a16e658095a5ea5353e555a54e17f8ed562bac2fc1b4f37fc371e34686b3451d41a4a72b448003471d2fb03c3aa31940c9be383e034c0e414472b2e55f75bcebdcbedbc8f966321ef3137837e0a5d5e4b93ee297033aec611d3b0314a22f8a415281444808b473e2586aaabd0837c3fd6329a41be5fedaf1580927da902518d32fa7960a99d2c4643b95d43e80416485402929bbd27545935a35fed92216389c95ea3fd383f97f2a86233aa55c3f9df31cb358b297b82834778461b605b87ba6cc4a156bea731a70157829e9c4e2a4be2c710b127213c0bc606c753c034298b04b92acc1604a8b560ed04de420979eacdd4af6f66e40b2c234b2eeb2f3a42274656bd01bfdea79359eadae4b5903bae5ed8275a045f03e1301d8a6e27f47ac7914e6c6fbdfe5fb353c5082261665e49eb580817fb697b5292e65944ae3462b299f3e43af1594c0f628c5d63edf0772d85974dad0488883c9bfa070637cf1e57a5b143bc00a1eeef3196449b5327074aab8e7f86ef050ee300dd2d5e340f37a7b72c222d492f88914aec26f1464b0cdc51bd2530421f32765bc74e003dfaf25dae8e56a9715d7074410a45998a6f6a837efd481961929575b1ef0084846b0ce6ec51d7c369012fb1d6985e17f2b364e5bb8227c5ba3119fc147481abf0b608a2a61612cb03a3c009c03d7ac35cdbee4a1f5c0a40510ea48992d44a13e05c2becbe9f0b1041c9e395a674439133de4d74e90b2eb21d2f5aebf0421f977228471e36c94380ef30a7213416ae0836f010ca612ec98c823a9e23cad16c6861348495b4bed75f95758d55ed5dce10a77695633fc86690c9724aa3553239f182e90c1bfbbc1218eb11c42cd21905f17e5ff4e927682489e1a32ecf864d6d0ae17e204203d173b476272c7be662b20407dd3a5b8d3504ecef71f8974dbbcbdd2946021b15147a4129de8ac2581d1eaa9a8c545478d4e03a13b8afe303379f082eb5fb07e97660180d5776fe6f1ece61107283f4d5619da6d006bfa767e57680b2915bac2fdbedec2a2e665d2266478508defe81ad4b159436a670c9fa40e960e9db6e29fc1615e175016a98eda5c44a3aadd3d0e2fd8929d4dcebf0f28cae34bb4ed13a6c593b6bfa996c254b0ba96f75acaf55b87d4d670b9978c26235dc82af731386ab6b07c057948f03943198d7a0c1ce8365d3605ed5e3bbc28e6ae35354f822854760aef070e3ee9f7c5933c288058c5c55530d2d235afcdce618a08373fe3044d8574c3edd26be57186ee7db322bf0901cb46a7292b0d598928538a1797dba02a4d48c0461b6751c94d70a3cf64b963b58b4b1081dfbf894ddb50c6b08e33364679f12d43c456e7f704e50904562a884ccf39d53bff2918e12a04e4c85815c7384a8aea2e648ab2fd0aba4d96a51307281f2dc9eacbe22368781b4a401588a5dd8d4228136c390d4252f07a1bfe1db56d0a70a6ab5c57ba490f54fa1b3603a595f5d0e6d91738491dd77b4406996463ec369aa25d37ce9821a1be36d7a53a3394352737ef3b245ac632616fb25c3b26c3bd7287456e531fe1140e90e3e245f214bb8609c613d723b66748b172ea2cf30d6481e07f60b8a25f9260663a110ba5bb2995d443114dcfdf5924b1e3d7736625000ead863e31786b03fe7439bbae2dfed8a2474b56424a2262b33ec7b1a149aa0197773232be39e50537cae1ecea671fdec372025ad74e8b0930da1cd36fc1daf668d3380469fb8143869e270eabba24034081227b4340a24766db83c9c681cda7935e9120bcebde756572f34bd585ef996f1b9f86d59e9c6291621fec400a568d8e376ccbbb48ff893e63bc537a747712fcbe9c51e2669239987c5b7d2bdcccb007e13bd411d3343375f60c8e87a526bd301f1bf3a53fac4580b049f667a50ff3c1544473e86cacbbd7d6e7686211da05cb9fe04be7d4fda09fb0b45a229fb6d1f9cba0d5cc705c4d364ac5400908734d2de9349ac4e2c5a6ccc9b2efae75b1a0db75e5dfa5812246371b7cedbf5c5b6bca8894309cc63caa83d41ab66639743a8b5e1418135cf64cad92bd52d04358ee06ef2c939f7c7c76adc8607954e151f58b87b111ac324446f1ec98eb5bc5aa8b20e45fb9da2b254fd8714b2119dcd8eb4db35e0ef256aaaa5fa08af2bc80265a2d8821366522964fca80170f1097196fc168287e610e7b65163e1e88fd21655fcc6cb2eb7ebbb17157c46b7c58eb57794d0b4c3418d9aa24945d7e7fdc4af43d0e8b145b4a5d9a0ef6da2f5f66ebbda05c738b74c28d25f47786619f32d2040637bb040e1d0ba4ad9caca70c766ab44f4f848ff6bd29dd3ceea8b64f151fb0146ea586143ea6e1103e3d8e0f4e793c158a7754065d6d355d024d9e3387d462bb133dbdae04e4a52f44d074e104a13994657facd9a4111ed56ece8844d668b26d647a40b8b667450f0cc6bf5528a299edea411f550c124e6551c223c023f5808d94cd62271363c0028d55c28c4da1425893789cbc3dcb22fe16e3b32c03fde3bacf5891687b67ca9de788443cbfb0e9f0a54c434480c8d1135c3d108edc6ded7a2671136d79dc12edb0d5cea0241e1681ec244bd66615a3913b51ce191d3f822a7924b27b53fd507fb3da99a052246940a25c3204969f2d97b5829e3ca3380c991250d2dc2d321ffa70a488e18d75bef1f415826b3ce18c798d1fc486eb047a4644000bd4469abf993ec225d12e6ea8845f1127adf083894a33ea990b594a9021309cb20418f261609ab9cdd5541f8395d51786cded69efe364315658b0eddd2398da9041b378a8daf332d81cb72626526483cb966c27bb4ab6778736c9a63a5cf4608c932dab933c07a195f68749f3e3f44288a4d1661d3817f36dc9bdd6b38c0afe4063a5fd433d03341c05c1d21dc5baaf179d8c217b8e5ff669e54bf1c7b0d5a35cf1920d339c9cfa30434052fe4e747497585588864cf6722543a07dd58ed9af02b215ed3ec7c37839b0b24f0d8d9bc18df6ea00a0db0a60947c2b5400b34e0056b9bf7ce870c8fa42802de0dfbb4073b816e1b90af268b7b428008add5531aeb0a1f47a26c1be7bd752a0030cb40728ea3bbd15c05879451c53922c2796dfcc3f4048671f43d00884ee8a73eb65021b2dab88165140121049633b2f3d7fda65cba4358de9bd481c45c108aa25eebd7cf4b8a83f8f595b52990124cb1ef36606d82124e9ed062263de546892d14c76270ab1a706e120459d971e60dea2d6ecfac0971116aa16ae34c335e12b740de28b72f392037055fb2b9484f2a2a78d81227acb9b2081d150bedc565265c79a86e68ef1f65d082f84627ad3b44b202d816a56619e31e71a28bf65cb104babd54bf35ead2365a96196d10951f230c1f801ca5cec3076099d123514a80849fed2a09b16308ea2e4cc71504a99d0a844b7a449ec0035df00e55c1744e0a255bc69bb6546833044f8bdc9e75b09f0116e7a5c48ab98657d4f608c34a500b6ca48b8d08499406643e142ed423faad9e267c9ba2c3840475ed0158939831bab02b2175e6c24558b150f94500c894065d5f9f649f8f0dbc248aad894506b12a3475a8f98713e701c1216c271fb57de275b3837f0c43b9be9744d8bd23817760d119c0c7a6ee3ef76331852066316b1379752b890318e7fdc96ea6336e90f2dd761a577fcb76e61bf1dd67510fa2018e2083fa9fe49a4ebcef67ad7b8898744053fb03c2631cff42702452547d7876e38cc46c3c62876ce278c92803a8613dc4f34a0945719e6fab87a205dbf94620486ad7d956636198c4dba41ef8e125c72a3e8fd19619b539644adc5ad72309b7c08d930cf7cd0cb2bdde8e027e3d9e538966936f2b5e36f273924fa9d4f530d5cf4e7ceadca6056251f0f6a33210036938658ce2a2d0ec2e55e11f7c3f30f9a0b699da808f49909c43ac85cd10a9ed9477abbed0541b8234846f345f1cecbb29ebbfd4079bc65021279fdb0523ba93846636d4172917a070591b07fa8b4f4d53fd5289b804f851d41b418bbe5c191113837f475b9786901a84ac23e9eb032e4774d40057504e97a69338fc21c00c4a2b5bc3c239b188521235c3bc7528c15c3b9ebad8a402b62bca8f12cb5dc9e3f088e9ad949b74a3031639a07c8e88c9a7687211c15291fddf826dfea34fbc84cb2836c47089910d962792594fc640af4dc641c2c675422627a01c86cc7f183131c3e68e381127a3966a4cafed808ce8b9530276772b09814ccf6a203aa405275e3bd6f811aac6b993b1dc18df49ce518356ff345b1a5b19034d3440af03bebc89760cc095e87bebff008c301bf61c1cf211245bd9408c4a52688991345503bd4d159d6017cd8c6fc06dfdb60cca75bc007667b2414831ed25a27411e89fcd184abda660281fc6126e7152b0226cceef2cba62af89e14f31ae2b42c12d6b6ca87e4a09052060d7e907fa908041f5a9c901fd9ddb016ae8427008a7d205ea8e2a9ff798a924f94312d08619f9d4cf017da267171da2006255c92cc67300aa6fca4621c13eab3633c7397df4bee74d9851e5c283f95a4224a0e4b354f675e18ac58fcfdbf43e5dc0683f6c9c4a9c9ac825a33635fcb2dc9af884345cc10091042f1bad15338e06c3d1dd26cf054ab2218e61e5dfb03de9601c5d75472e447fc865df6c3dfaf5e3d82c6d347aa5d94289da541a14f425221fe3041de7b80d35d1cbc8f50556b6906a19022ef32c947329a540a136ed2913129ae7f9b0ebe36423d295e2225834310703a9edcad54d1992235059ec11c59193046af4c7955ad847349743ab88b9f3a503113c73a8f41cfafeb79e8a896cc6627a2fc53bade0d1b0db8193864adb98438e7221ce8b0ca22abbe44a96ee020cc0678a46ac468fa5fcbf0110e8b81afece20994c8448a3e1e596686bf461ea20cce6321b458929d62939f8696d2351d6efcca88d6214ccbade96afe5867c8b006e1cddf09f148cb85b7dce03d5e07c43007047953922e4974d024d44bf1e08a0fa6168199086901f6ddae57cbc03bed2445156c63adb2a8e6fd8a1aed4c0b1e258bf1dfdd4fb811f598a38996b8031cc3a693a6cc52848efda5131812489883902275c2eb64492fea331112627a478ef1458978ca5c814aecdc99016bf27f10153132ef828421fc64b38ee05f881f82e26a7912917d94a90d762fa46522f069207ed505eab8c6417bb358a650faf230a3bb0e93f514d796a003988c9bdbe306d88f64b7dd619f8bc9e02455f257031db557cea684a91709b2ca63d87b2c247c54bd61fac18ec18ec1ebb2d1c1dfa64e5ed33abebb125c64fee09482828c765cf1e5c7347e7a84a925e3e2e817e11ca2093ff4c870479e7c2f9ea198e88586f9b89b89ab53cd04999a8c9a3295063bc7b87849a96cbbf5018ae1b8410477a078080d2ec12d9df14153fe00f61582e04e29f4dc637e422341dc682161e25160d38d1fe9d26b47ee1286fa951acdc3c3d24bac5ccaf4b58353753b5452d58bac062fd2e045b8012bbb9f0c5ef5ee544d20c0aa35faf48e2f11a24e366caa4f1b44101d14555c9d5b3a4e94c8f73a198a53f386cbfafd79bbf558b5fd220006bf10c3ec1aaddfd8c97e543602108e7fd2259981e80ab37cf00b62c9a82c243c0fb6abfd6388c562215aa6bdbae91de948e748b0bc98b254d28862cf90027d5b2edc21a21fa2967509e69d4b2dd9eb0aab479ca7844349f21d3e44a05073ad28281958caec1ef1b01297df4ce802d5288f9e8252032e91168d81801bdc3f3b9e78b76a433d8b29298200ec9eb3f020c2a03ea30ce6c5940d855a503e5fe7a5aac928e660524ce6a8dd41e39b9f008cb02c3ea6d1408a17fbae4a278ef575bb643c1c30768e343677bf557ecd62a02089215c0e671b5c07a120420deba5cce118c24d8b62609915bee2da54c522699023207bd069e067c33ad4b5b1c6e766e766ea86507c392a4b5516b24403dd484825a3b6a484f9ad26d4b41dd3fb705a1891096f0b4a016643317e48c304704ad0eeadf7a820a83e0eedad26d9be3ae2d39228e694f95a8dde368aa6f2da801eea6b2ec6078493adb43cafce08ffc0c53664802129de22684ae236a6e49cfb4209ad69e9070a9a5c4dacd76eefbeb3e623bd731bedc299feb6c0f941b0ea2866474741dd26ded6b4c4d6ab6d37c4613f08594228f90d1ca2312d28289888915c8abd28054c78cebc3c6658e816c5f3a85031718fb4e356ecdad2cbd2048734cfda8b283f95897847a26dd21afe418c8461cf39da23c2f30e2949bcfd11cdca61ccc8b36fb71e18e952b7dbc706507942efc31747bc4a33b9574b41b250f0f08ae0efc7699d280baf0a553f1a8c84fbb334021025d87eaddfee05f410c474a422963110b90784f8a82beb8af2663a4cb4f8e98784f5820c5bd9111becc8043cf643810d03305b82f016f889b311302dc8cc6cd6a6c80d8ff4b0a078df76f85c9e4171f2c19a1bb270e0a924b3107a553ed2facf18df613ab41cde4e51c1aa8b7c9d0ac06e48d34f470555555554577b8279d6a2f23ea81703bed5c16937bc659728cd2e4979901f741a7dec931ee2bbee1fabd6fcffaf05e47de8a631c4e7f06300df4c332d0aead38e5de511e34b8fbdeb176dbb30f779f95d98e75e1e1f7bdbb2b65862d985c77d775df5738c637d4a7f6cf467160f736dd8e9a6f8eda91868aa24a000a159028f5a0e809a39b4c5ef7813983a638ef7f7270bb5570fb1bca39e78a5ce00197dbfd84d00223ee5811e80119b4875c54f7909b8d6bbfc57531a75e4cbd649a1a82ea414471a23f412de23e17729f2371211fba4ffee4c6ec4c4524f69038989b18f7217140df34fb861c4c3d52f946c9d1bca3a32751bef0279a06c691077122511cc883dc08f41a244744ef8997e42db98fe7a6fdfbf73ec5839abd28f7a55e949a4e3d16d4f73293d790ccc2f42f1a3272ad87ed2ec648add8b8106bbe1f01160dd6c39f3bdebbaf2864f91b63555572661562405c3a987e7a4475d1817fb8c924b43aef5ad2250ea1ce60236d9cdff0ac8b50c8f4af9ef94444eb41bdf40c6c2965c50f2184f02bcc075b9b9a4ef54b205da83f3ad56f7242edee6bf24b8ca5fc2bd9470f90a1cd7ab815e7c82abec4e2cfd9a68c0c4dcaafacac7ccbcf15ac054b5951571aa63cd316fb3020ede67d135ac1b29ab55b1f109e1e4d49b526a5fa1e48e37134295f4320e46854be63542854ad4e06eabbe561fc0a0663c5a661acacacb4b43c8c9f9d82f14c71603cb7c0f819980f6e918161539d6a192b2b56e7d9506560efa230171aac5ff915be3ad08f6177700c88bf8d83e923ea6735382d36c52244cd38ca8f9e61f9aeaa8a85a7c248b1dc30993c3dcbca3396d52b6d5a0573d1a17dcaa7d81f6e6c5c3d615943e2f65799c43017f701083a62c473f3e4cbc75e0a869eb1be6748f50c7fa7fa5f3ad5af81772b9b236db4ef3a468da83430e266ad67a21c8d4d8d836939d495cad174c9c18154bf73e3bf730383a8fc2488173e08e183f2bd97b15ce7c31d59e21ee072510b88ee112232477c6e7b1ced6dda92db28ceb5838a1db480e726dea04620547fa60f883aa8de2ea859bd3a76b05cc831d03d772f0dd35e92fa3793f15922f3d2de8b4426f78c06e0cd610980d9324cf37ce2cc88a888254644442d26d51740911244454a20a12328522249911244454a202952024911f77c41e09d656998ae11a84e7e48cf7cb7665577becbc9e6188ef7598777c60bfa9df28ab3baa4bbd3baaa392f8bea98d735a90ef7562563e318fedb3bae390d5a0eab4a710cbf7430ed6ae64a7e663d5b95956355cfa56fe15c777777b76b251e4b4a655979cd316ce7d8dfd65a737f0efaa0b5d6e3b677cddbb9083869adb5f6fef58061e4b0b8a3640a0b73df50afd7dce1737f4fc1f58670df931104005e3005572b41683185d9d300232c8c000916464682008108083f7849c10080a123507208a86888e7c6b85c74840b249a8c52c6207cb144ad2e17254185205477b92889252e54bf5c9484132e10d4be5c9404170ffa7b5b48028b7bc9142591e45e978b92185a42c6bdf7de11ee7befbd578477c410aaaaaaaa6ac8f3103ce82f29180650492d66d1911c1c8122c506845ec0040b2a48601484103082f43031448a2746461ca10a1ea02410928484255974c10650048182d2842c9470852496aca881e3591962001380228a2d6401740324435da88152aa2a41473c2182f9847aea02154e48e1661fe404164b70e208c709a318a1bf867affe2978b688074b39789014a881782aaaaaa0a06310410f4867aadc8d1ad978b8a1025808a251c29c2098e7064022ebc51258223285380a285f7de7b959027e4bed75a6bd6575fbd87c433e229e1044a500174d98416b3a88926c4011425d1e415357174e5e5a2268c9e64724516498cf081204ca10b9e2d6043e8a420094d0c45515202165f0060073faef8b18196d597f663881d236e2005291cf1c1901e2d6881c60b9c10411045b4e042115948321334a936630dbee3c89f34a9f6f351354d7aaaace95a8e28c637136bb7e76fe8b734691afafd2d47cdb133653bb776aadf27bc26c779bd4dbff8de9b1f27c79fd81cead47ca261dac19fed2c0bdb615db449c5c1d1344a9e2acc65f02ad31c9a4b6033a85315f688e4a9c2e6ad5891d3c9549de49df58ab7b6854dec415aedb43868099fca14a9f52fda9cea5ffcf9f1a785f1b5e28c473756d547ac7a1366fd104b4f0bc655e4fa530bd253aca5491ba0df44719e6d397a6223c8c61236846c1849a13bacfb6852a554078dfbac8d20d75226f62cacdd39e38a1833d6ac76e7d07ca2531d6314aafb88550cc4a33b6d8efbf8b188ca57c6222a06e2d1cd99ef3f6f116a76e2c1b253d08d3c9c83c6ed9f9867f1e8593f5f87bcd3b6b812d4cc46cbd1b511a483c63df1704c67f1c473fb6d5cc4dc5b2d47b7dfffc4dacf2147f37ae876bb2cc3e24a46f82675dd6898e263d79d51c3a8462bae0faddd8eb6b97f565a0ec092e5325a00db5fe69c0c74a76aa9fd7beff1ec6236c70e8bc92f596c377bff266a3bea56f71faa532807f39aa571a54851ab49a9f66712751f2a1eb92aa40c14c9c4d27d32ee7b425aa448157801052c90e0420817aee7bd294e450c5971fb5fcfd4dbdf52ee30810226f04069a88b24943810d01118618400041d31e2b9712b4349dc8a77022142401a52020442c0a1c10c9e48cf6289124bcc00a96806421842f8208434e27b105ef0a5a1f02f560c03d3800c2d7f877fa53b90c822e372304f5ad4561bbfe7ef3de73cc0c2c2c2391ac6afaeb9e6da734ce5943ffb37773d7f4ee73a7864362a7692f01229788916b59efc01a6292aa7985db7a4d9841a50eb597aa274547352aafcceb976fd9973ce35f34e03a2b58be2cd3cf7ee3b4814aad618ad7be7ee6f0bf0593a689aa2ba7777e39e0ff3d340b1d4e7ae4ec9e79c0339e71a5777cfc1d0c84ac4bcaca4eb2debdb8d7559f2e765c16f715a52ea408a18abaaaaaaaaaa98955c09bfbd8bff3e203bc660beefd737fcf35d3c389aeb69e3511280c6eeb2198de6ac0fed66f58573542f9f1f3608d09f1608171ddacdfc76336dcf7543bfe7dd04993f84bc694c80f817d66e9ae6f06ea81d4288d3cdfcbe89108769990910a1926bbd0ea4b891072bb992a8c6d5d4c8c8a452ff28946529b9d5c3296ee4c144577ef59685900555e910b5eae84474ee39282b1ace67f51e4ffee007e43a6b3537833999ddfb17da672edf7bee758ad97d7154e5e5a223495308155e2e3a72051747acf0c747aa68479e705240c98aaa2caf3ef85095a5ba5cd4441737abef2da03eb58a2350273563a146a03e298a44917eeefbe99cc031ef33d75cf08d2754fd6190eaa215aadb8c8f9638e67dcf030af2a2f60321d1a9e7eefe808854f76edebfe7223bf5aef780e08fc3e09b1db363c7ecbedbdbdbbb7db465c7a85ad3a9f6a62b547e1845e5af446aa3a066af8936c42f91aad55ec62507f8f265fc013e8418df44f8d0fe10976e9ac75af2228a75c9010271b981d6c5e546caafdce53dcb085df3a747f2b4283c404142434888da12d213a5a52897cd7e5acbd61a1907d33e62dd766969e83200de8ebf4804928b8222e8b656c38c8224481017d980c96dabd3bdd39a0f935f32f8e4f6cfa602c760dd05dfa02fe8f285444a18a6bfe1d191dbb007b77180410e06b36e3da2662f2808fec8a09682ea83413215edd2928dd24b4254f719fc41452bd48c91fa09591314aa4b77945ee298be42cd20d2ed5f5aba5ec027afe10aaae6691ece7139a67d6beddc39e7aedb6aabad6ed756562721f56f115bdcacc6263cd3bae430815c3f7fe786fece4d7b1bced1d4a679d82111ba28c7d33dfdd33c2dd4434888daa88f9a4769298ae3e9691e54a35032a956227562d2a84ef72edd7edb771024b77d0f7592a64111b54fcf701112ba87a88abb84842d6ed64fb43b1413076fc3a98101436c9854bd635eeb5909d0152ed31df3baf833948b6a1a37a82410f2d3be9aa0f67096e159b0aa1cc585ea6eab0ff27d00c173adafde7be855bce1de754ac64f6dcd11596d229afc82a30687906bef6eef76724a2965dbb6c413468c2c19516a41ee4c3ac5f7a5cc808426545c81c8759bc95ce1450c9ee08e4e42a85c1483276ee688808838a29ee1221818ddf66e497347aec96d1fc4399c12ba444dd116541f74ea753be098f64e09df689fa5929ac840e8662d48062c637c52365aeb0ee654c6a9a63b2ef7e80ee618f7cfca50a23aeb6fe39ae248eb42837f5f9dfaaceef0774be35947a467dabec8f8a94ea6a2a0729532c3165f48a4fa7ec62635734441954b0e1510f614171dac9f3fed0fd55bd5efdcd838171de80fd6d3e79bd317356b41433de3a3052d61745b27e1e866cd8865ade79bcabae430fbab0ffe3cf41099d4ac5ee7e1cef947d9296717e6f63cf440428347a767b86809a1ebde869628f20643107479f49d010a111b600882aec461f8f121d6df188e86f197f0db855686044aef664c45e522289a643af0f65085a467da06ea2579801042082184104208210c20841042082184104208e10bec62f20beac9dce69ceb2173d52065ad28d47f8a5f5b1523d57d0d7fbd25350890c19182e15f98064bfb81c2e497cc8faeff7c3d032184d6454af818e7880fe5132e372fda17ce29ce64aa25125c875d708c2f718cbffb8a69fac7c1380aab327eb8275ef06a18fffe41a16afd71ce390823cb8b3907c5711447d2e7acec14f832ce2d3519a6c039a8e0aec03457768a7133b794bd7033b714d9611616bfc2e2430c06a9ac0ce0cf80ee627ce7207450dae7afda62f24be61a0feff1a00744eefc49e9bf22d54b8a03dff4feafc9abcdea59d3e99c73488610906befe7b3a3314dcc05e9763c2957a7e067ee07a81f378c3b05e452accda4a977fc9df3e75f6f5973ceb769a738f129564309a5d424a9a4945249e3132830f4653fa1971ccc0f111310fde11ca7224c274ae9dbf4c9447bc8c1a804c9f6e63a1890f28b05948919b413308c77c1511c15b7832f8cbfa65a3f43ddee0738184f41cdcc7716c9c2f2cc0a60f91f0dd3f252ca685bbea52105d58c897a861a1e879eb91e93339501d6a6535e43a7bc53d647ebc29d0f785ced8991aeaffc84d1807c70cc8786e9c860383ae533d4d0b8d63affbdf7cd14a7be4b4abd09210d42ad3fdfc5f4d5f44c26d358cd15b51f87ade994a7d84c9a2cddf1d79f622d08bbb066a4538fe460fc1bd2659d6d366b481c23d4a966a4538e4450a73cc69db631e511e3b63f3b539342adffba5b52a71c4985092892dc9a2100070cb3d6afd7adfef5b967284e3dd5d4c8c85c364ba5a6cd1ed5b655625033762042d7bf05e919be0c70390686954ab5213992ab6ed90c01edc6bfa667b8c60f589aa615003f83e1fa8b57565624a086d4294fea947f95829ac98674db751005e2ed3427c309d5abfe7d5be21c5d304d03352cdc9775104278deb315d640ee0e7ae648aefb37c4310ec8c1b81bfefa0b7237314ac1f56db61f93c8eecc0d42e7d62eefca9bbdfb5a14ae2ccb66d5acaa8a23b363ee264c8fce7d603ae75c07a94c81597d7f93f27d65e57b8fead48341e2a8ef5f18e6bdbbaab219bfb4ef965fed07253ef9207495747787d01f3eb4af538e7904cccc8f9999f93133333b5799991fb3731e8499df4b4d912a4111ccfc98f93d7ceecf98498aea9e79c963368246154a508221481a0d07f2256b59ba1d0577f7f7b1089546168f3a1ec966e311c7b453d08cec14749bada1a4f67b57a75a968498340ee33fc338a6e3b93723e71b1066bf0eff07dd5760be30e789524a29a594524a29a594d22b2811a80f1d4285ae20c2637925a1aa73dffd9ec37ac8dc06047a447da8900ff5a14274081d42ada043e811b5a2a7a7e772c2101fe2437cbaf40a5a9712b29ac96ac5e9d55a1da6b8946e4fa55d9de286d79dcae99a2e531e8d87e7369e7957e86582efb9bbfb7bcfddff396667669f31660c8ac3eecc97125a54525658ae1830585a1e8ae2c498322e66e7feeeb697412f19ce59a7f20446091122640ab3b5e6eef2f79ebb6ccc7c7da02da92e6366be969031335fe90fc2ca1d7e64e6cf5efb401ba2c9e043bb5d5555e52e9ffbccfdb93f17a1830d9a84d0f7de537aaf3860668ee94014170184d0ddfddd9f7b63ae925e4b70192aa5b64a4a9b2b8f88dafea9501c7e76777ff45af1b73893d55d8d2b30c1c4933c29a9b5244ff2a424098374a0031d802145912a9e93e7c489734e9e93e7c4893f21aa0e1d3a5a9a70cfc2b370553c27cf8913e79c3c274a267a7a6da80d7940fea8a4853578d02fe0c45f1510429c67d92fe0c475e059f8029cf8059cf8029cf8059cf8029cf8059cd006830b76a0768f3abde06c400e06a748fb71302de8c2c29a2ef482dadea6af0ac88f284178789a4feb496a3d17a50dd3e9216989ba041e60811d9ef498940725133dc146d486e4f3371a341a176a43fe04c35494876d1cf34e23e8f1a3214ce3400e54825bf5543d465c482e553d550f902321bf905164941c7038aa3545c58fb810c3b4c7c09db88d74b9b52126b50de9309472391a38c5ed36543917127221ab46456585a56148a570c8c8acacb0c0683450a8977f168a53047e075518366843cd09a69151649428ae0bd55baf2419457ed134d0ba4f4fd5e33d954fd3b81117d2e1a293d2ebe8b916219c73ce5b0f0e337f2b99fe5a6b4d8724ff3ea2397781ee002cddfed914c7e246ad7f92a9f5b409b5be426abdbff730f681e2544fad0fa9f6f1ab7c89040a24503ccb557a303107611408bd807009c22740a804a16d50b20645560ffd5dc57a9e9ff295be7ba6a9afa2425f0546055aa762b3eba9cabf67ac86926ad91ed7b54e7f59fe14ac86923aad8ebbd6e99fcd72e4bf6bd99c93b5ae7f4af529366b3e39d55b1f63db6cc7afa337f8952af0d9a619839fba2ee14be9c331c072dde6c818dfa1408192b213238c51e59b9d0d83b011d1a038c581364e054b4989ad3528f14108df1b47bf4c1edd7ea3a9ef58aeac0ec67d11ea80fa95ad589527ac7a8941d92929df7ae970ae29affaef681c101b1d83e264ba4e3169948af2f7eeeeeefebe613e5cc4c075dde6bce917904779b85b3dc569cddd20e3682c8bf9efc4f8ee63e32056d96c274eee99d6c3f7fd6b8ecde766bcb869fc9289afddbe434175dfddedaeffc32c7c5823a2dd78bfe33bd7fd5940179fbe116940eefd84c91326bf622cdd73b939dbb22c9d6e2c87fac9bdfd3b5a397dba886832cc8f5d1fdaac3bd2d91ee1b4391d7780b4aba75d403773d36aedea6932b4ebe7663a7db9d7691bfcf2b9ae3efc676774f3a19bfe620f97ee7134efe7b2997c574fbc7c5aa6d3d9e573db35ff74a9acbcbf4a8bd7d306e2d7a9087fc5bea077cdeeee69a18b33de0f12a7f7e35eb3efaf14ac86516d3c3746f9b1c5e83e7ed6e3ba8870ff1663ec467bfc69bc7a5cf0fd0b72f1b6cf74e2a56fb2e85f92c68a9db0a7136f7c9395efb2d765e158d0be9d9416a3497b7f9619d98bccbf3b7617f6ec3243068dfe39ad18a34e5b580ebddc2d7feb856ff1a2356268325cdf6c3cac41df867475871a1f6bd89cf835a0ad7707889381efacf3ac5fa7736a3c1017baf8fc659a0ceeb356e3ddc7e0e467d5c3b799933aaee338aeb43a7da3cdf1aff1f0b3ca12b90d9fcdfaa2c1bf460d6a75fa7a86e3b6df41ce6a03b531b41beddd66edbe60759abe7b9b67d7f273429bf1f08737c84098d9f876eda1cd815fe34f1e03c60afcc63ec3715d66c3bef074877f4eb336fc77b01966331cff420c4d06876fc3b92577468c2f8597ba43e85fc3c6d06eb40c6cccbdff9f8bcde40c8b42591b07f33e2586cd502d36439d2c3b181876c5aab8538a7530d54e7630523afab3af189a0c59c3d13336c3c1cc4cae5ba8e3fef1d9715cc7c36514fe0ef46d50a8685f7cd874fcd2b7bed1879f3dba03fd479f72944ca7637044dcdddd636837a047140a4ead25f1b9347aa62184d0bfe537ef6b3e9d7636a7fdf50f4a9bbd076557d54f66ebd97aa594ef6d5cbb1e88fb784af962d67e5a4e9b13ffaa7d43b559dfeb536cd62de35f8f86eb61d9bbf09f47fbd7fae1cb9a8f434a779cfed99cf7d75f27585f9d6d4f6f395bad65df9fe08c2fb6f6306fff5a531ef35e0d6b3ded46f58ebdc7e07ceecff09bb459bbfedc73f669ce7bf9d14adb88683728b52ef12febe47bf62e7c79d9acc54bcab71e3e570eef7b3742972f6eba3a8527f7ba2b0f5fe81ae072110e96ee52e5221c1cdd79db5358af3759589b4c21e66f61eda3e9d9d154ca29d4f4733acbb22c2c4742150b3af82e5a2b2a1f61a6d3cd12bbad8aca676f73dccb6f9be9646de30e901f179ab21f6e7fb36fe360667a9dce517920aef57366f061674de9663a4d71b276adacafca37535f6775fa42a31eed6c0e7c956f9b3528d7f4dcb7db662695c6642e67838c0f6db42ef2db9bbe3a9a930d3ce0f747db4c9f3528d5e6f4abfc69a5f69b60b44cc799e80ef8392b4fe90dd7852fd3e37ad7f4f39dc5047fe5a2388d483bbff00657317deb895fbd09837ce1c7e72aaf8c53c616a5fb184d91882643d66e9cc9605b3683b6c7754d9f59df6c33d91cdb2c68437c4bc735cac3bac8b7bedd3b1a99f8dddeb520ddd13ec764b3e6f486ebb69779264bb36ef1a76d5683722bec46cce19519072efc0e5c08ff4a1ef3c6b64415106d07b21061f24b110e8a70007493f85c19978ba258bab32f0f7a4838a026d26e6bfe33b236df7dcbded5e96875baf944f1e40ae072511448e88ef6ac67d337bdb0ea2fbeaeb4598fcbb2598fcb7a4777e4c09f366b336a18d51e57d6e37a7efd1b114d86cae6c47fef5c0e7cbf36ed17ba4f23a2dd687ff573325df85fb04b85894ac3506cf00302c939de7b8f9bb501cfcdae0b09958ba058ba3d45aad635d765e0ff031cca6041cd640cc034cf0460ff0c01d77f0280697818c0f51d6ef7d033addaac3d0f3d3ae5dfb01e325692e9a1871e3ae5ac8462a99d0a9d79a8d4cd5665350b15d100004107b314000028100c08c422a150289087494c7e14800c898e427a561a88b33089511c638831c418000c0000802120323333548302445894ec00ac1008386fcfd46dd491856a3926316511e122ac890104d6304de4145c3db184a38deabbfeb1e5b8d526182587d2120c25c368520c1de5ed6c2e49d9841a83a18089ed42330f27d08620c5a3860777cf9159de1a4170476894a4226301e0c6ed4d2eeb63e4286ccc1d5b935278ddf85694fb849e40b0204506bd88ffeda4a79106c18df3b81a0d234f06485d53189cf41e9298bd4ed25d88e1a6570235bc3e6cb72fceee41d8a2000a6ec52bd7c5f327e52c14cd66f7ff4e26bd18349837a760978c3dadee18fb8e87723c51633c2fc13f9f7760a20ba89d5d924d2f615d12afa7371657464318c2e94b6c8e115ee3696153f36ca34351f8eac8f2a09a5822f8cdf66aa9df5e86b5b506bd7b12fe560aa96827c98680285efbc814ea1b7c6c31c75e8e53379946221d1c728a008ceab963fb393705c492352e1db3cc494291eb5e6230968e8b4c11582e3c6652c79955627b40645466ed5b42bf723fb24ea1392e64484573200d877b6ef37569d83c5de670e5bae0c2862960e815b0dad3848ae8d3e86ea19dc02b452a398fe83e5c72e83ec8fd15884147157cdc943df235ba8c8a130b2daca9d548e4ffa13dca2b702d940397495fa0e218835f9dc0eb07fdcd4942989ebc1c0ddd107b567ee97d007642f2ce6d286dd486c4c6816e7cbf8caf7a612e320631a6391bf4ec51e0dcd6fc43db3d108b3ca80c466be425ac1b2360fbd65241f570939083a2775afce1ac47773c878790754f05cc4319dccc9379bbab20bb60c54e66b3296e4a415a6b1415da52256d11f822dca02b993806e77746af1d0d98729148a5af65a0a463fd98fa88b44c5aec68748ac6cc1bb07e7eb2e698bd0afdf3010569c76458147843c8660b72e40009febc5d6a77bd190d1715e44f01c775dcf50551034417eb29470d5cf68af8f36a0727820612755eb70ff3d07c7ea3aa7e4a30a40e36968f61d99ad3dc9f00b469e8bbce4cdd0ed8d9513b213763cc1e4d115482a8da0b2702ed2b1b6cc6d7cd68cffaa609a6cebd6eddb580ae518a57cfaf7044fa750d1c896b5c21462de5be7324fb6f9432b864a30efbe9c3b4e43faaf9984835b9aea941fc6c3458a87b20eaba11bb23eedbe08206d5428c4b43beedbd1efe9654c38180e1da025a05f6ddc6fc28d731a503f849217a68c052b34b7e99d35046480b488aacf645123aec42fd3fbfad2306af7f6292cb5cbf115ccd6156d7725ef8afc962bb3fbfa68705188e0e295442fd4d8ab094fcd070e0ea3ff69307007062cb380917979b491da412da780868ffa6e1a0216b6525097054f36d5a86e070379cc917d0d6668d5d3ba099567008c891184773adf364d8f1a6f25d98230166e94c8b3b5ecbf39da474da026def69f5ac4c5d3a3d941dcd9eee460fc7a89348e9e202ff561851e5bcf111f328c808d5c570cb7a627b0934b4b846f6444a4b9e1edc22121be8328186cf03f4c75cfbcf1b88c0e1900f82453db59e4cac18fe8e26828cecdced584b945fcdc7b02bcc3cbb5fb54b3a0e02e526abc94c2a018fd2a1f0d923d2b8a1eb54dee725bbaa752decce8e047eddd5ecdd1079ce27ac6a28b811ef94afc7823c54099369b8a91f8253a1540b53c74a13640479281261a1b38571cd76d673f0a04f8b75b468e215d400f83f06c1d0df25c077347d5bb85fa7c35bf0bea000f8ecae01104b9e25018501101aee44f3e8862de9f14ed7a5ac7199e04a4034e509e88e015bae6f38c20e1a9fb0d8c707bc51c2f1e04781af1c6914e4385a3034675e3f32e5ef866faaadb81818ee5198b664253f4852b70e383c60daa5708c8a75c1275a16874e899b71bb8e8b8881879b62af5b2e75769ddcdcd6d67ffed4d5402963939c9fc7d2ab1afb5e49c160fba8b1c0747aa3b8086dcdbda5d379dfd3d66bac5645a76ba3e8e8af7ef16b69b9214fd80be1d7fa85c165716599734602fc3dc04dad67724004a3052ea781b165676059dc750dc3054eee508a2e13ea21db882128f446fcaa50df96805240ef284ea73b0b4cff38fa368cb359a760d5c42d4a3449016924a9f9a3a24c1f1cd6e1d0ee71c1b8418c12e7ad400d761b60637738faffa41e8a6b2a238f630b82ade3702271026530ac73a1584d0ec0c44b2d8bf74ba8ffbf0c9f24d7bf05196491d2669f0e46caf344706c05e8eec55488385e09a290b3111dda1613cf888294fca7c1bf13b1e980b80d801febd5a26a6021f3c911d95d0d55154d8c3fe6324995123659090aff983f67e5f3dc1a78802984cd24ab85b3068e08dabacc396371cddcf136775ae526e1014cf01c7f9b822cc33d93c5efac3ee95236aa602eb146bf6edf915852ed15f6d3d64df218348bd222848cb5d0eaac8fbebd2338dea2df5e9ca3d845c3479063f080ac0ccd8fef68d34e503bd63519809fa4ba0cf2aaa80b155827297ad085e21dd586ae92017645ccb9024e20a97bcce1d5eebb44ecf3a87952d0efdab77fe9f2ca9c9f7f7f40cc2386799e3b71e808e20759bb46332751f11c1422c972e0c48c60ae9732fea2629651765788d60519856520cadc56400ee6c4b6e8234a780ed133eb3f30e236c69aae225b53287b56e800a086a882d52447cc64b98c8ad76d2b495fb121dc5ce4c8a2075b68c55ecc1a23be1942d0999bbb6a368cd953907718210c0411e54ab22d99efb7698b409eda27520bcd2d473c53483442042cd2d34dd20e9051dd5cc89e6014db2d3ddcbe4a7d1b676eb15e3c2018af4f7403929d7f1e1381f9327df5c71ab4f1e210545c3119947e8fd5fed8d1e7470d4b71e1c5b928b226ca8d234e5827020f23652da537ffcf7a76f7687824880ad02600a2105ac58166d4a33ba1ba97c3a0a55cf34af85da22cdc74e58ded81f3af466aa4b90a7bd1f9ca3630521fb09c57d843ca6151418c8810ebe2648ed74699dff0cdaee2a480dc98362b3f190b0a0c9d9c6ce9e470a44eae35a26ebd28273d7ba4a9c20c7264803a9c29adc8445aea721657e472fd5ebf05272a9ac240bb02c7746e07e8bce1ce3ec3c7dcb7506f8e561523f4852ed4f816fc480a681d493cebc0f5b7ca3af2c6d190038c8d9a34a18450fbaafc14796a18b43a102ca404258cf1e690bb071d97f8e847ae180a699b98be420c9b1f25be56bdd4b5ea1aadd4a028a2ce62838ea5f232b6722e0ca2237fcf00ef393417173d242bb1f2629316c86e78c6a0d651c13d16e82f47a6bbb329144c7b65e90fbc7a0f9a1ce284af12b450c0352db2d5e87c9f6840823c193aea19059d51bd398b23a03f23939daa1d798d9d26b26f6dded602c6f9d405ea2fb745b1de6252d710b110acd6e909cee495d733915ff28bbbc0627adaefe2a6af1905d51af301dd03c5fd8437ef183cd0f36e9969d15bed13e648c501973730ef9cf3822cefaa54b0019270bcf2ed108c9c295086a817b720a661081d0cfa540412120da599a80957388f47c3a29dd6e9924de8acd92dda580915574148df8cabfef4c037cdcb0af016650e00ea91b6bb6659726d3bf5ab935f3e43b2f51601fee5fe6de7645f21535134615df6d928e6a96644e3767115a860d5488846b073a9f80a5579a0a92d35672a0f819a3c58541e5f788b90b9463af9b19835b982590b71fc64614aaf508c99ddf856bc34a9b2f45b9c65092da681f0a405da0a68a6a1cedb935e7a071ada7e9ee369be889f7deb4df90799b064b53e269da5228e7bdc64ac3910d520e2c0ce1d04b9134f4ebaa12f9f27b760c4a0838cf5a28bd72463730e529ee56f1bca3119fd2708da41f4a68bab292ed8067719c475e77d96d3ac090981885d9f0441888442a5a1231db535300f208ac586ac0c067f3be5c6f05f522b46f61dd99beca8203176c6981edeb5f29680e88b0b666e01201fac84b6b8621ed47f8abeef8c63815421c384eff365f239e62b959b465b2ce8c5b98263a29fbe21c14e8c946a6f8e6c5b684ca83bebf55d5ae0a1ac483365674aeaa78b82eb74f773ba2e522d393f604742eefeb5f9fe00db374df6cd4cab67b6691e76f8e05603199a320d9f2ce6991f1b4282d1e720bc8bae3f22ea7efab04b5aff0e43e6771c967a3613b0365d5c1f8ab0c8335a9a0b33a31f94d75f84f3a4e30f83b0aeea66780443b980f3512326b9329b88324311ea9b2b292b3d80d8634c05cc6d34a1504c027b88ab9d83880fd987cb124b611d5260e2a4ac18a430159f861afc06638f330a892a6ecff182aec4863b3ff835cd69a7389c22d49c46339a4b1ced5454fa04a51f723d55bf385488b1148c7610964321b47019455915de0de7e52de1cdabb705816adcfed0d8dfa43b0956fb58159d465b14dffab7743e49a3822f31346a4583118e0427ce8a52ab198ea64bad75a0cd42c65eff1c8a70220ad8046fb742428b8f169690c4b20156ac83f12189076161cc4a39348a81e09444f23a836d85c0f2a6324a0d4a7f1a0a3d574342a1596e8114693d2589ea5623c0a94e692f998a605c38259197fb55d751e23f9e7e2b898d30490e036d76dab9246405bb231de6086f64083eae82c2a33edcbdabefd4f12b6cd5679884b09caf02f55ab829d569950816e2d51a24e063d60afef014a74a2156af130082ff6dd20d29af552c036594e4753aa7ca385a0ae3e6089874969af7ad583f96135633e5dde4963b07b1c0fb12f6561069356a2916236843c169ace5fb934535c801f389166a6f611e261c54937388ace055bf862adc89544831a08ed80956fd0cd403193bbe82a7fc878c22e9307c87afb8121998867454deea5603dde5d31afec7cb825a80db7817348d486d20ed5b89018d6c5d444645baff7f616d53bc3795273d425b86a7cb148ce1892e0936e7d90a3f8318954525984e523dc5e9206a9490c58088a5d030422b8db235cb7c1dbf8199d124c65d74b88fad8249e7f822b02077f600638e5c4fb6f27e444a4f44bad5de1469a638f2f2229caa7c62044320c5e01eb410a6c1c45400ce000f3fc8f1f36c260648d913130ae0a2fe2a768098f9d4287cf20d805e3eeb749c27276b8f4632415b0284aa4a30b937b822e8e7bfe1f4a3a77e52bb178260a55e385e5cf99d83f950e0d58c25597fc772f8512a5e56d9985dd77d7c1cda19c318d24dbeb31c6d4e5ae543e2a2bb893a59ea05e7d3bf849460a5d397410cb3c7f9045b70b9914c801db7b1d22e525b9360bf70f041f06a46b152325a209c20527fa606bd393a04e7255ce4f0f0b5e6a2f62af464804f609a466568024edd8f43e5bc35d930ec6c500a59db5b70fcda35a612c89795ef05300cb0a2b013c5dcce05c928a82cd49ebf1559ef22f948265a8679db9e77e1493a2b30f74a11408ec14fb783a086046d4195d0a37ad8061b41c86cffdcdd0cf22c21cb12ce487c77187bc8dbd7c51af339e9ad34e79f9e86378a5ac35fb0ec820624ea27a7ef5dca2b49375f2a20b8de4d9e35b0bca723bef5987629bf857435278c0303866df7ab609911e77c5c927eb52583631d157a27af756aa7d2358c20b470a2724f626588bf5d82b212d04486417da314056c21e4ae029d0620203b40c716b51db733ad48215dbd5eb7939213d94cca8e6687c898f7b021f2635bf6bd83d34c86ce868329532f3086090a6f93facd1478b4edd0ce83e447cd9ab57f4f75182f57373c3f4823c6b6f60a6f7302e36194bff581c6ff4ca4a2fddd700ce3c991ad313a60dc29f9dddd61865ceab49265a07615654f70a25a877da42028bd4904636403deaf22a573f441f0bf4b70a47493551a7e88f4069ba4f899ef50cc1a47515233eeca128f4ffd52147342b5f25bb7230627ab0306c4bfd9b1e0fbd3a6d0c1cb1e8b629045c4ca49d3224c104aa7bf0e30c9731dcdbb7b1264b3d62eb173d017ee5850be3828c00a4c98e6f0b7331ae12ba181abf4844ae6736ba7ccb374cbf5586a3d2afe2979187bceceed40e41dd8e7facde676c069aba1524f363213891cafe085c51f682126606740ce327a6d2e0a9c529797758ca1dff7380dca5d6af993c7464dfbc2907bafb10011ad29c370bb6af9e858fcfb7522c7a0c6ba7d620c04a4adecf2d57372fa6c1c9dfbd4abb8e8e2fc69cb1b3a92bddd94154ee200aa4fd57cbfabd9b119598b2c86776041f9fabda8f51d7c61887e17cd70eb1298596533abbea995ead48e5776d1d4ef50c61e917c4d226745567a797dd525ef8e93fc5009ad44c423993c4413212549ba518aa07260cc8fe2bb12819e9ceb9e0ddaeda66eccff82cfb38287d2c2a512ee52a03f40692f66195bd22bc9c6f795b25e6f8a6cb8459a5f702158ecb38bb4f4e78d1f71f9d44334e014c621549046c46bcb31345913759b0a9288a61610b4980935b56291e2035612dbac75752edb38003a2d970d7270c6f74339282d0f89323b0a69f3f0d88c00abd36f48bd36f4a02b7554b42efff202628b0e954230699822e78876ad508c75032c2db5631130bf34cf3eb18de7c70d0eb5b56f87450954f04bffaf213397d67f5f75f5d821322975dcf5fb146df663e35347dc49d802760b8e23bf4ba72edcdc5731277810c75199c720e596d907346884943c5a24027051a912ee3c08241f2c241751e938884bf8ff51bd803c3e35f0638764da55465f34bf3dab5f07a7fca123892816ce335375605a816d90b78165f9fd581f159e5758df39a4dec289f928f6ba73fb66bf60504503632360181f232ddce2a0136536e5a2a0200a0451242fd9c11093c8fa0740cb6398a6901584b20dc7a694a9cbc90d9487c324fa4e023a2d076001a87723544e3ef59c6fa0d021d1474f1f01e1a2169c53990754446b02d74ad800530dd7ee8c5a308d4b28f2fc68a5020f29cedb56c75521267718bc817d0631aa1204f232a9034dca0710a118d955188010cad23a376c894ca61666246b1f3bd542387029d3719c637a07933ad9ec1cbf3c4694699e8ddac7b8b35628bd4480e240a9bc50327a1c41331217461c04750add6d319ece8a70d7d13909e2565cd654f3f417a8744dde56c4ae31030c0d30dc42b55c47d0b529fe051a1da38f5197ebf27698c796022b17f1cae84d4a7121c6d87f21546330028b915877bb93d01266b659889d0c4522ab839f154842dd8505557bcb8a8d491d48fe93f598cefb53f22746c478275d199090c40040f04e6e2a268eae3e6c7670c4182fe79a01a7cedc0e8b703bb2b09e53d06f8413de912521408368114454c8d07e8cac309b189e82b40ec1c7650920fefaf66c9651d459825df4dd4d39a49b0b3e7c2d71b161c06058a1dbe49ff4d50cf1d3c46bc11b4b1085701eadbf3f525e869b2215140c7e9ea26cd6a627e0084ba01ec85d5aca0011b3047f0f166d8d7a7ca75d5fff99e21d1e1513e1d2d963adc93dab053805303cd22dd4a8961e713e79d936a4dc10b1387250f2bf146e19dde2893eeea1aed67a2ee39d940e33982d96ded6408846756ef074e1ddf5b990cef7c849ec4a9732f4380f9392e2a6b411213bbcca060d6af02582403a2dbe56fb5ecac07d3c8c333889ca2269e267a2a4076313963d7433343f67af136c9c84e70984300a4a9bb0550decb004703aa14d8cebb27814cff260754f0c939bc4ba5233e07fca5e4512a56bcfb85a8247930bd7752d28196af2b3df7ac264394e9e89ae58be028a225397518e1b70e125dea6c5328a7cad50d5ce8474fdb2b19fb55bfdb90cd766914825ce8234343dae53631638db1596e9b776645008fd72a22c9f51dd82d910c348710f23c39043bb8f7c8edfd5109be3a7c514230876f6ed4f639c165cb4a1fe151926b14a461d109d467b9e9a137bd0fe390c9a70dd9eaf9bea40eecf057c232751f739b0120bca70c670b2afa503c5b676f96c3f365640bed599cbbd379f666450241fcf2b9632fdd0e9c99172282b84f34423f80a16e7d49d7e4def3f4a83d5c50d3e46189467ca94702a3b7839cd004d1fff9d4a2f3f03329d9d193e84373df0065ec87419568b4a1037db300482387f05544180e9e4f8a90f01461fa7ca0ba34ba52e1489961e1a9195371b5c7a5bf6cd035a7ab9f9d60910862a3b07f851b4192a307cda6c7651430dc87057b63d667dfb70a00936d11edcd9ce69a1e8db6544d6351efbffa7841ae2f2b27588b912baeac8a55cfce9280c16e698763cc2440648ea84a7d508497aa4f18dda5800751981c6cc8005521c59d5576a611643b74d554e90bef4d28403c8bc1837118771530dae513763cf1479069f0d7ea80031e02dd055ba0482a38eafbb184360ef1d558a23bce43b31e41f7ec8102d31e50f9be933f185312c09740dabb4a8aae808430328fd6869be1f4ce7408e56af4cdd2843b7af939e2658d226452726e9cc37ec3f59b4518a3db0e40ccd43e906deb166d4be4d76238c311cc00ec294a3e1519952797682c78dda2efdd188ccde5b99bda0cbe2b8d1a24c7594ab6f1c47338b1c4775c923793880948200d8778f9f41263197ee3365fc6774caae4578567c9d191397e3e3eeff9a8a5d17bd5f5d4df2b312210f80b59370c7b8dd8a681397f796fa710c74e5d1af04e44e6df25ac50eb7854657a036e6fdbca9a4e1ba58c0cf40d5bc6382342c3b4b860efd1f0b382763371050fb38e7413035cc65e5c9c08f077c436bcbdb0220b074f2682b77819e7164efc1370bd0220c2ff1749ee7bb8e2ec0b837687cc9e24edcca3165502c711d0c4f2c940c6d556904772a81dc8673b917d587e47b624bf807baa7d516213fb6bf7c36509710d93cdb1f6f9704c23d4af668abe168804e077e889ea38f9d4423444f2055964650778247c6edb7f2c173eb6262b18a789e820e7ba4b35403a110a2cd1105e5f2564845fd12d101c69ce3679216574741df892f66315d5ce6ab58b0c793425becb325ce3554bee775fdf6ea1dd4d82b28abdfe700b6c7a76a80e90319976d6242ed6c3e7e5394f685384692705045e0f775f6575f7f27dd0c4e5f0963161bd1d7af8ad864ce97fb1809c0cf09dec299ef8d96cfa99f406bbb51455ee241561e9806f36a99cb565097493812dfcd0ad057ca242442613eec3f8f29355410a7020c9a2158a45523c5fd06d101f284bb70277008f2e34e2f902f65f448a47fc4318c5a03f0013f8d609671d24dd44faf3fdf40fe930211a29b6eeb2c22acf0ff243c401f80e5e9af77c3078b0268343ba7bf0791e441bb02725c153c2d5ef081ccec0bb5b0349164b9a28977121df64a76adf33d31735f276a124f1bf922731fe99b1bfdc71d56c0bae8c4cabdc4d408363f76ced494dd97a6760a201f4976e690566acd44b1f278772524679c40e7911def5450761bcfc5c81a1059ea3bf31afe670744bbf70abfdcf7d1864b0b79a0d047084f4f29aaccef5694a0876f6441f0dee47b07684e606b01cfa42f1fe9f6c6f3c8b7948c68c4d87996ad167eaaca6f4469e9628a31001a9b12440dae0d474027cd2ccf1637126b936ec6135bd07b9c00e34821ef5abac5accfb7d0743f7f2ef8a8be31a6524e2f491984eb59f017d6e5ad66567dbe682edcb1dc7394bade118a345fda38db32c86b2d3ee84cb266c82fef8ac9e74e10223e0691db86bbd7deb83e6a4a0b30ab54dfca475c963271e76de9a7a4bdea3efa581048f57f70386ffa3ed74379413a90ec4d4e511751482566b3d668383731425c5826fcc29093908e4155f09b40ac5f101386854b9e968e75900beed11c1a9a20c08f98ffe0d84277f1c8b50b6baf40fc89b3bf746ca3450428e6091331b26f0a0cc3cb95c02c99d4ced1f16259713e2127a918482b7370ecd2f02b9e31e71143a97f027428bc66d2f8ce80fe0ae70df75f0ce266f3a1cbcf13f0a56f54e91303096f2d9b1990283645dc4a3b94dc6c74afb798ec8aab27a0d8b84464ae4a96427745801ea56e100e78f337df45fca716b36dded63d3140f30a55c02fc09bc22d268c8c19b60286914d6bd214a041a825b93837cd32efbdd4de58f7704d3b15d7225aacddc5588c4edd695db59820ce71b9b68cd9e51d8e9dc302c627efd92e5ec95b6a50a4fa671b39a54314e7fe1210b80340c76d04f104ffd8146228e6da736a56ecc9826ee1b5f56be570ec7f9e7f837c7f0f3f4442d61e23549ebe888e41488b09dbcfbf5646d7e54c0da38910a57660c694e3d525388345643eb3130bed18bbcc62e35eeacb72300d3c6bd7098f3d2dcf7f4bb3bfa61a348f91537453d78fb9f60a8bddb771bc3161b11a07485e5f62857e8905b33d26bc2393bfb2ddd1a49af4de5913cf28b79fae1fd6836784d757e85a098711c0e030713cd10b95aeee418c1861c19b40f1a0a6eebf7c136a1309454adab9214d3918209e3eed7e1b78b410ada99e95dfba4d1a9364479e3438d323b0a3c23ef829e1a4c59a864aa5d0bee262b1cab8a4b446eb1417ec42e92df6c5849815997cbd2a9c8470f0ef6a7c98905354f047231913f14e42471815d1135f27e4113059570c31a2c5f5754a7c2184f30a0343d642e9dee6284af82dc8cb9e230b9c8ec7e10fb298900e94502fd8ef1a0e63d631d865949ed82ca87784f23dc956f8b26d1c4beccbbd3b58b47bac45dc5e17fbe3d90be837ae3bcbfb8b1a57c067177d0f84b968135c925aec1dddf93ae4968857a31ca64908d90894a6a7891db737645540779d86dec78f526599bb1f1ca021bdc4ff512c1ff0a954e9e30304c82f05c49530131a2adfa12215ee5b7256d21994f44958dc942b1417c95facb98808721bf2933e7a384688532e06515cbe62f252f41a364d057dc8a73aca8e05eb05e1ce74695a2b6c26f592ba3849bf45885cff2e14f2d66fb8e1821a01a3b98046b8877023a16870cd229cee354f718e431ebaefee2dc660fe1ee765b6e6792ed2150b99b021a826bb602473b9a8251406c6482fee89be4e680efce93c7a4f027cd51ab17a04f00f4e161616352d9ad64fb033ea76bdd95f9fb47c962bf72b74b4d3b0cd5ab8ca5afdb4776e711b446ef07d37e000f41f58f7a183bc191df0d76f6351a9683af17f6877b1fdacd645837a40db23f18d7708b74845b0511f8e5e87c6c9c488050124b155e01ef493a41781bbcc11b8976dbda15fb1d8e3309d1eecdd65df0553cc4ffa4456f4d46a1e680468f96a38adde7065df2b7624ef3b78ecd6c83e09833cfa6c116c60203dd8ceeda437ea6903f0750567b0c6e98532e835a5d05b4ca25c03b01bf7b81d7b88645fb0749154c4e1972ed99a0406f25112766b7f799e1c449fb6aab59524a14d1db68757481699add17babb06b21b63db1808d7b2e98b128d8aa44b9a58c5a21a2d775fb41d78110c2c5adf51a2eb4af041797f691d9637518c1fc0d2ece9735d6c8ff1b34cf5f69308e048c045f510176dd5cf58bb1384e804742fb4fa8621087d0e49b0d0b563d235a913536808ce3324f801eddd4dd475003680c9ccce6315d298b1a0283267db9f3b7b009a0ef88a16a45244b834a13c2e42611ca3a3c47bfa70da016a7aa17319b0228e5163f7cb478bb94c72d3b67b65d2f59a1ded8be0db74240569dabdb0bafe9254a3bf1b3ef07c5a298cd65658f17ef148a10184adb5c63d8d8cea6a34dc8210f890c58c12522d700d66c18781be32a217574b3efe92774d257db703d051bcf0ae364c194350b5f96819f9b9b49c348f19ed22b3e80fb4420515327ddd56260f9cefe8e453ae443508bf16ee8a58b66980d416c5feed5c9bcd173fd06cdaf398cff46cef50a6c51f8e88acdbc516e4d188b14ae479c6e65b6d7a5eaf504835d3a85af4bbecab7d6e972590d6f76330019cdc1dcb1fb79e728dabd1e63e2a2582aac5357bfee9b5aa7de8c14409e49ff1fb1f0d2bf370791e97b2f0b74a01396e5ac6c3671e3c476b063b038164ff87d31a0ce971fcfe77c1f09a7ee7061cfa5a5a976e8c4075dec2aa8ebe2f0860ba18b0b3a25ba7bb83ccb4eaf10b5abda3e6ac1ed08de3691fee485656d0da7365fce01a761e1f1c01db74dc64734478412640dce696380963f55c1aaf4cf9e00a32c86f8ff8c7eef3b9a998e0035ac644275be8cf345db4196893fdb0ae6ee5efff5b9dd22a9252b528030275907b5ed8e211bb1b9b8132c9b9f971177c40e81d52a1504d4107709199f3cb9aac6e2c353ecbd1a9918f6098032e270d4b362df26e6779eb2719f28e1b2b0693866cd837c89a04ef33c096272336a71666166a7fa3557a9988525deccc2269c1f12bf053c2f765c6b1db03b0aef01e942a30b986a75fc845a7c40215adf3b2d8c99bc7d0c9053f8f50f406590a08bbff6f8ecc832049dc0b9fac4cbaf528ca2f9001257dde6195a72f41b99f92b976f0ec6912b68d67beaab412cd2f37240e81b38facc43b3d869276d5c53bdb42c867440506c5604f6b5e54b39fa7f38bb6f4ebc3254851865ab277fe1b7002350eda7c79497cc006f32b80b4847b71c116927de8ad63a0bfdaa89cf4fd09149fac0246df07878af976430965f4656f3367419a65d0a556c38496d5814ef9fe70952851c2cf598a0fcf704bbd503df2bc06ec0f7331e6fec0d372db7d0e2c79578180c8977794a796dafde06a324ddfdb3891563235e335799ca75869023e81e0a117539fc55ff0915fab613722527aeb80b48c0deb7d2e7fc3394c9103dc463f0c5699fd2d17d725fb59291f60b6fb0b7eed7c4f763d80c6b98fcb70913d418b126e36c0de5cfd7705d94a042b407a39e304bef122381e87d31b37a829b69d71963535863e6d7a69850cbc81a19978960b82d0f1b4d7fcc58457b61d40bb3de5cd4c3bb8d5801ea364a22b0801512fb7195d69863d984558cfcba890963241c24c5dd2512b597079e8a36284572d651ebc933d93d85a0d3e93b3309bafc4d17d8a5aa648beb15622a7806d4605e1f3215d1e4e92ed25b7f10b9aa8b69c4d42a763658a2c97856e87ffe182e4d622f1e6b0590f17803755f87b2fc8eac839f520ce94df05dd22635812ae89f42ac5c23ca33c17bfb5310abd788f226f0defe14c6ea1a519e09ecbd868991eba00d9c134fd194c2a2e9113269cbcfb5c4ee1d522e6fb8698423ec207148d5f80b44d1730327b0d81c0ccb69be3c824460d592ccc05f177481b9457505cd68084512ac1c55f7a032566b39a4741be79d793248fcc251cb0ab3db57127363b342859ff8fd27d018257bda6230e0b031b3a7ce85834405cc83f6f8cc43ae01382bfcb459827ba84596e9bd3b209dd0381d62dedd111084f19e4656640ee3f5a4e2919f6f9fccdc9d4c82d10ac41ef9a2604f27930b392006a20bb610efa0add2c8d6ac6751dffefbb18059d12098d0114ccbf9b8f7e62dfea87c43c2801806ff235fd5a7751518ee8c07984a3078c222a3fb7a26fc366d843acd3e16bbd66dcad1638b4f0f1f29d6815ffaf0bb28948df24b410cd3dfda41409876db1ce0fce861b3dfc5bfa531a4cdb421ac8a4161c664dca3b62c083525b397408a48dc47181a517135553a8c3ca2601d9d70cd50af97a6eb4ba1f132f9d297146ad005cd29fc1e35e8c91a42760c6a2c0b081555bb205986cab71d65b4daa998d263f29034f10b22100801ddbdc88a032ebb04da0a07c4607ba7704d2206ac43aa2d53677bc33e04704f218e2414a10005fbb84c025c42111617902cf1e806fb9c0c84e6226e8040f680c875a095da2a20d2a99dd75a6567fd6c2b273f2da0c4dd5587ab49c255cd481ce81870d5fbac7ffcf459193de0bafc8a54276e50b02acecb5f8c2a4ff11456f8167e11263c1cfb6be7dba0e2282374ced769f0fd2cc6a569192921ba8fd6dffb5bd73df15c4d023a5429d79b11eb3d0d3b64e6e0f77dd636881bf3c0f8828ea7e3d7042636010050ceaedc5c0d08d374e0dd4b0cedec558aaf71c05fcb234dd704d2644599920c62d8a658055023ab21774687f27072e3485cc1aa07a0a895412aacbc84a4f8f759164d265f75d75740ffdd44254849ac31f5f49a515a60bee714f488681df470b775c8f85c25c94a3d688039c0e7fd4e2b4be219c10e3cab10d12bc16bbccbb80eeb16049ce5a2845606105d2e881cf8dc93e93445d757c98a53e9e755073cc0d1619cf99ac5f632b00d54fc467c4511f6bac2246e38ddca175ba6738560463207ab60d40a54b9db2d49ca578994d8e3aa4f290e68ece0a9c672ff4e703221cb56729a0ae4323d8256e93fb52e5661e42e00f336c2a82052a1bbebb5da169ca7c4e571b3645f089df5081b8873b2983551723e2a11fa1096e53565fa765ca95a48c70cf93ec87643cda7d422814055100e5983e09ef110b93053ef02e0aed0865f6f31fc869b6590d1171612af4930643734856eb041aa30b2ed549f46ca7e158520b8e142845de5b089ef460769a84f028957e0e5861df8c6942dc9b9024174b7d43d124e98a10dd81eba193f149b3be9aa2c10dae8780c4e7d7f0993b6639f35c57718431ef774b6bb187842cd1b7addbc38f7b13b6998cf81d8b64ad5270c5e814f7fe4b15eeffa4ce4f3937bfe49830302ec5f104897633cd3fbd709806c3222e416b0b0f6195ea825d651386cde120d7c97f453b52ca01c54fd6c656b1efd96dd74f6368a4c9bf43913c4777360933026ac23828259a4a013f49aa1225d0e43231c996570286b091ae21e18c260b2a4d6278ffe945e026e1e440acb1cee004a0409585913680cc5e91d03e73b80b55a2dae8fcdf4e2e55ac992285724dae4b156bfee4b6a8ddbbcefd7a5192c90ad93c502bda8d8d21d30ffc235c0063903dac04ba58822e375171767d5b89a04b2c57b1906d5d094c1e1af23d31dfa8956cf02d28e4ce05bac2c114849cb457d5a3f94b8413baa87557d825ed4ff29301e580887f0fe97d718bed303d733667ba085516cf09cac0e126a3ca461575d2ea0cd76ef5efde050053c05fba425ad34f7c1b7947aa07db1aef407c7e86ac9e11003af488b5734cb88ffcb97caa6ebf74c5ddd1f96850f82c3cc11840a4281c2a74242c89c9b0bb1f8ee9a50b564b2a6fa5c78434f51c454714035b24e961aa7ef537fe845ac53b7dc3e0796d1c88e88ec3efa92bd2d3ebf550f868982f93c7841fc2305ab979bd92813e6f5f50f40807c38d07d99835d7426b2642b432b4c08447b982cb758846a567b72565072a4bbf8b99ea3bd4f5bc5300bb211575821c483a48ef994ee95c187ce3ef25ed30dd8b6c0efac6093134ae8e55521ea19985ae4c79c58858f77b461e7493e13f138f38bdfaa1c4f017ba6443203529e7625541e992c9fb0de57b2a5b6bc9aec32b5ec9fd90e571ab3135130e847c273961f072248aa7f4242bf92168a066c0ee2fab86fe8b9adcb60ff0ecf439eadd4be87a8a5c2a203310a785fc4724ebb488382b4326031f7e09cc168095d607f7974aa8243cea539565979e37c13f399f5ff6d05a08c8a060a08ad6561421c6c040bd2bdf84788f94a7726f4d1a5caa9238936fc16db5e2f2f3a5a7c212573e95cae534341a5894539c69f27b5a3277babcfac1c0bbef36fb5381bd43c062c94378cd06d1db8aa2fe62c4073e9378170f392c9bb78392311ef71f4d0dba0bca18b2bbfa599e14fdd7dbd187302e34fa8fd71f09e5887136eedff0425e2ec77133d6dbee650fead45e7a976c95ceb4d94c5339a562d98c1481a096b8b30c76efce4ccf316a0f96ad4fb04750ac40a0646d614a9ed6a9fe7d3ae11eec2fff707c6f356a3cc63a1e76641aa3dca9d9486dfedfe3cb90596858c68b1b800fbcd5e921ccb2567a2d452dc99cb5bcb2d830484717360bfda8b36de21c6564c5fe88942ecb9d06e658291c5a6d889827e0cac90190b3ad01085a13ef4a2829ae37ddc72fc13273c9815bd5974424ae195bbcfe3c35b5241f25c51ca94087431de7ac830466dd4c5dcc897219de8f8144e3d168db570b5555a4c499058be98d6e92c9849a4ed582df03e8e35aebd9c56c521db1007451ad3adf7ce137d31dde0d0c2863b0a84e7d9db1f19aec6ee1b35e863c7803873255858a9e4a3f95cf4988812df45ca1bf51fd4f396721e1d06e40a1169a5610d8e9e62ed184fd2d9de94aaef392fcb1e510ada775b43d34626b5ca601467d6767db5ca0022322695a8ed56a3349f1260e0e38c4729415d9e3a4d6bd860a284bb00c1b46eb2ba6de089793003e41db97c814b7fdf929dfa5a0eee754bcde26352052d7049bc425e302f56e599c74ea12ecada49268b8ce9e7a52553286bff2393f60de434e7fcfbbc7554428eae7239449596ec0a4582d5996bde1ba0f64bc4bbc2b36d0e619747f156f8255b542c74748313c382e4adf37f6c5c3cb1a6a4bdcd97e777a569d8eb5656bb744f2632dd14d1ef098ba9ea8d8cd3158642541fed3618efab4b34dd719a0c97766efd9bcb58471a2fb1903f8d09d1894dfcaa21d326f51ba70124800f4efd6a23d2e3b489bffc3d82f04d83b033b25dcf584049a976c975934592eabb4f8b0d4abd0b2561c0e1df137b90b7806083a431ec0f8be398296c17aadabfa716cbdb4222bb57c3ea1feb944757d74c8f2391bdb7e0f3cf65eba456e86540824b886f64a47d1cf78d1ce4677ea33068288f056f53b0fbb348d9c2b5592d78bf40b027a2f3727c35eb98dc8e2e9b3c75794d92b87edffdd3c575c1266d8436206c345f80f4e9398a7045bc400ef9d8b9573b63cee96b7812876d1b28be2f9382bce3b4a52033288c877bae8c77dbe4082045e7dff88a51dd3fb6009d7fe67da005f810215516ea0cb3dc05d08e21c63797e91874fd10c148d2a8aa4223c665424de9b212127bd8841c003debc70bc6edd5b8f231dafd95348cd724266b37fd973c902d293e380ea3018165d8b2662e712afd73935e55fbb2f380251062c80f558228ef0d3cc3ed90be6665c0e0609450080234b40c00b2a8db68728f64b1017572911550461846b13e6618203a037d9a424a12cdfa3ad13c74cdd05b84093f2bc7cab3fad44a42577b72499a9c5caaadd4036f07c139329700357b03bebf9f8e4db7406726c4fcc5984e0f186ce12ebfce4480051a36c04b04f06ae306654205a9272827d6bb0330df5f74a4a37c86c333f50726a1f0a03da9bc95ec0218b22d301ad36d6f81483cc2c0e27051d904887d0ee44293ad147b5cfa45672e6cdcf27e60fc2ae137c99a58aa676b09df5dd14c3bbd62ef469893832201a978bb0a41d5bf84f04c573853dcfe23b83c8d6c911915f6277aafcd9f6d3a9bcd280975485a11837193ac7c8f293d66a4b17f88d76846cc747e15946688022e1efca8e8a2418018b92ee052aaaaa8f0c082f7d61da69be3443bf8e959765a8d0fcb8d423f4ffd956d0c758622ca5ad23b2c0c1f2b2b0f7b40bab7b0aae44b58c4b3a5a1cfc0317b00fafdd12b7e753d814056191629fd20875e0a1c03289615dc9a8fa12c15033fdc094ceca2cb497730c633c864cddbc0e70c623e027a10dd96a687768f5fcfc90aca973a49df500f281e10de11bc25b0ed105bced16dcae31288d7367925c920a1e079ab56b01384ee7f6ec043c787b6001a97a0b273c2873846d6fb9399b37825dac7c9b8dd7c026316569f7fc4c48f0278a9a4ffb5c079e5491a62b32c9111cffbb68654ee993163a9132b226d6bad3463b4e2e50f00be56a8d5ee58961da4743a6df426a9a583b50d455843db3cfa4173e5d050b5b86eb297c9d71074f9ab627647a30369c0319bc243a4f28e6e003438bc0400cfaeebef19fc1035ab5e356d5fb607b7128817be70b9b75f5615a79b560bcc1fff2600b85919f72c130357c15da4cd0ef2445a2294267efab8bd6e95a94bb9b4055193beab5710cee155ca3f5cca17f6b653f87a801fb28b8cf749773b7f8cc2a4dcba8cd43250614eabd326e481979275d61a25a83614be8f558e9cf108108e7a6fa217d05059989523fec0d12bf1578adede2c1fc954d9039c18b0394b18449648964e34e8baa6ca82139cae67101cb18f64ba4093d4c354ba22fb59c560c1711f85ea667914eb3dcb75a18836e901ba6e53ba28f3d6e081169a4c19af8c594fd5a84f3d8bbe86dc3593a0dc46c4cfcc564f5b6caca98c74d985e39a6628fda17450df7ffcab6546cbe28c723c9038e4f4c4d8bebcea5bb2a4c9fce94b8391b719f9066be9e81a752fc05ee7bf9ffc4da01b0000b784c7a46687519dd235cd7bb412779b4e5a1c3f6bf34e23dfc0a8261657b2503052af7028fc371369d7f517f6cc9f3ed6b904ce812280ddc4064ee4444ab0fe10393320d09560fc3a37a5c10193165787accb46fae958ce2bfb1523adb85c94dcb8395f1703309a6230b1010784e5e626dbec4d057e9361a1d287e28d45fa736bdae6dfb64d29427b6c3373be7343a03517af327336a356d2e48faf15a724fd403f5254c581c8323023294fa65ae8039fe110c4a490394223b0bcd2a47ec3114827cdc7094b8aaa422f7028748114498c18cee0fcd8445fe17145bd29bda4e84b61e4b4ab079c112e3a221cca191d0dde6594e7d284d320105a29b4703cc8ca33263319e01427c95dd0ef0c51e7b1f14c092f44439e0b12ca8b45e8639eef262ba94070558aa3d37bc08e7876725e2505f44bee9081571d4c23502bd024087e60f7bd0aed3127d394068a0979d3aebdaa2b27aa48b81a64830a265dfb4657e162ed9c4c82d343afaae2e23941083b830888438b1fa408b04518dcdf00292244178d8794520afc7a8aa0dd9d7c5ff50df1037d279f254890b400894021ee45d043f2679a7dfe2a9b9f52485d4da1434e776b229defb91daedb139428984b455da1ae6cf77390d57dd5453cf3d5597d95b979a7c245b0321c8c98ff9e11112adea60d6f6d509537ffac4b47df2aa340a1ca2214e4249b30e39fffcf686991c081a54048a728436ab52c2730559a297a615444f0aefeeab3b72e6d6c39adb8ae40f0e90dbde2a925600da4b53e8d25ecd04f07a060c004dfbbe3e932dd6f3a6f25d013c0c673be280cf0d89c8dddb10c1ee70b9ca5d0c9e41ef6a5404436df5fb539487b38954f38336e3c76b2b36c91491493d287db45a8940a875dc27b8733ced2ddd6c3e9147a5abbdc491ae1066f76319fa8e78ac864d056769ce077940b45f0384aa85f31dbc0f3e159bb042635cb258058eff12f5abd5e95e77500c03d8a3f9695e7056246e09e3ccde96552413aebb22fe9447b26691f0cb97c14264a4c9f0723f8e66eabaeccc261f871fe67dfc5af8bd6e217da346e3930783c8447aa4dd79f7e4ccb7b91dc329d134539d9020d0108b767886dc5778e26c5c58565443cc024de5f71eb1e0f20382d3401dd94d983bf47159d0806dc67551569b59bbe0e1784eb48c8d8de88003fb256370f2e6b8a2ce7c1b431a2ac0892463590bc05d7ce6c660354c926b240900b52629d89206d120f05157396eac8e9c09467e23c379f0cdb74b9de4207a21e9c2a897bf7aad949d4818a7285fd321b34b84650270a45c0865da5d9e52351efcc3351694f10335a54c5b7faf7d8ab2eec9fdc7335828b287a537d9f63c9a8c3aa51f46eafc1e744547402196448a2687c389862f50247fef91d2b7acc1de584d11645b78b6a8ecf7d737a208b5edf2ba4400ccb906add82f8d3890794240412caa0fc6981b80177fc60f8d6a7a1564d6d0831c6bcecd4d874887078ce1ae6453fe06a001a2e83f757db5423595f9af360b98e91920555643bb9ed5d9ad0c9bba8f55d95a6bd83670ed97165e29f9f751844a6f5034b29f5ca3da3c1c41b3a0a47eac1eb0868563d14ca3a6a7b616eb74c2f953a7b3e88584a93753b63c5c1d09cd70db842c7b0e40b4521ec163ea18f2e83a345fdaef1e65e997e0268c19efc49f04619bd02839c6e46d4ad0f966042d8b3c1ef3b959e9f12a2e658b5b0cb69aebda61882535ed01fb49fdbccfdd429422a32a1fdee2bbb2305fb196167d89984bd1ee68053e32bba65f8365ed6ba8da579fa0174cb50aaaa86413f9c43a4e8c6bf49764bdc67779d52c1610b37a6ee464dda1ddc6fbb061ae1322b03a22a66fefceccaeace537175f5601d0cbc20b12f51f2a24379730158e7fe1caca30e12a43c8a559a2f53a44ebec48967fba0950855acc5ad9e3488f8c19d1927434187b5d81931f2e685e4d352efa0d813bc8050d80221d339e46848838078b6eacd728ea05fe4587e74c909d21d5b131934dfc625ab764586903c1b318180f35377c91e08aec39ce44e49c93c5bfb53a64e6ca55993fdf1a9604a5fb8681916a02341a24c7eff6c96f36fefdb18d5090e45b595b01a74cd195d73b8c83b724f1e56becf7e9aa7df2c5549419bd209ec9fcf336e61c1c186eb5654425798d6055d443512d1ccacf6c56fa10c6a769403d4f7ba32df50f399f9ade7efe9132f61d5d4bc7db1eb963431ed9b0f387746e8cfc5b2aefb0ce6444f82623b32ac424d558aa2b6bfbfedecd907a98b45c2c56a1d132e36e8618297825b8a98dbff305b3547f3c8ee793e034e0980635e7345b53f54468d04276c60853cf6c846c8a5a45116b5736075008f51038bda55e6696046b8ae2e64b7d90a65cfb5c294448076614a3f0d78ce07b87d85fe09379bcd69f82dded0a395f42082791010fd64191325107aa0159aa051d9450ac043c11e8b14bd01b5f7f708aa4316a0e18e220a1490c53e4b28ccbcde9205b45d593c6f8f044f0be79f2d239e0e6c567c989d2515bfed5982ae60b920f541e255c43b3a6bc47596802b6543b017db9a7afa0f09f858af2e2e66ce12304e92fddc9cee3b67eabe7005b94967e4a419f79d76ce01ab5cc59873f8f038d61e2439679d15cd88181a54555661cb5e10b480cc5fd780e41d86486534865af33c7e3bead9fe102057f94c2804b315fca198e90a707f83823e6ced86a46dc200ac42b2f668f3a75a966adc23e36c8a91fa065214873bc95929afc524f37dfa2a8b0afc239bb5b6680306c440417b645d3271353551389c104130f2432789e49a32367daf2a3da928578c9bb509c4b51960ecfaf0fe38051af7c15060be0e886bbc5263b01b4f90ed4f8663872c8058aab2b5b05d1f88a0f566f066b62b722c41aca202d748254125949a251cbfa028bdbafb9787730b63209b0268328a8c804ebc7fec52d9e1235193e00bca294809cdc17a3f27a575533f8e6940ec6b9f3a44720b9fc7721b03d3821ff50224b656fd6b92be971e9fb08d65f6441fdef69863c1d1d533eeaae8d9790107dd01b1bf3e3782b3cbd223ac40fafa781495877514b3f110f64220fc2c4653fd8c1ee343760422d22b0184db1e71772f066b398c3b921e525d39e87a3291e8b045344fcc373c0b7b1009f6fc726814c6f75fc980abb3e67431cf84156c07d8d903e842e24e587bb124544b8ea227da014bd08908b0aa5422283d02754a11b368768173895dc6b85cdfac3c7ba37f9918888be8cee4c9466d40779d22888319187337ae6e47abe1e40cb89839afe8a0c7f4e6b351166a278c905145afc1194d32229f35596135cabc56c13ed4730d4c3af9c7b939d32823d4dd27129d5830383cb3219562bacc333a523280086a24fa80377025d48241e66c67b968cee4c4926a28c60edd005051d418a417139d6e6782918102bcfe553f1d12f26c94608038ca02a6b70c2323c75f7000b104d9ea708c37fe43b4a9071c4449f40480b8f5b841ca27c909efbc952448113968170d3139fd0644899d18b5094970afb80b32e5c12d1bcda648ef3fc82b28a141260616a9d09aa24790ef56c47c77d671bca3077979b6b27644bef02c94fa138b1af6a329de0cb55c302eec9a22d429ed0b9727b127075a66de4adc25e91fafc8d4a30960c86ff0ac2d63ccd3f01ecc556dd8f383985af6d6a0494ca39971542472e2dcbc7618edc80d4c5bce603cdacc19e872d904241ce52e2fe79265a8b6906aabc2101cf6bb335d3a78b690c4dcc065df0a476f145e12fc754e0b74d128fa98fac28ff48f68b1515e52f46379b163167d6f525f6ec62ef26c13a8c3de5bf6c0e3af1ec963dcdf2f777e0649f7fbae431d7b1f53b2e85604723bb35f25049e6d64cf35ed159f1fc7fadc307b313e0e6cf6e0b51ae013aafb6c44acb47820464bc6a57d084e6490de80122d0719f185bc8f2d3c641645a672ecc1c4dab0ce8e465412d599dde7c0411b75004651aa603a46a16f947a62e8a85a8f2f3ada0759a3b146059b9d2142f779be6190c2177a1b8e71828b50317e00a892e7a164b32d37d132e2d4c69247381bd0c97f94a892ec0c2ba31e8ab5ca09b4c61f5d91e0978dd4cbd4e9d3aeef0ef7eb3336c358d9c1e993aa75069e107550e9b1759f567f87609bb68fd7b1f11bf425a33699da364d875978307f58ad6c585745c6975d731dde66126bd826c2127677a641d83e461b80ed4ca89ad735500710cabf70aa4af2024f9256e42aaf96d719a54b400fa74be12d30436259690d8fd9d23af4edb78977bedb760476bcb3e2da407b6f8f18044d4e2cdaad7c068119c6341da63628e4297401e0665287e0e7b3ea20f9eb9d6a6fb7612b6ee948924a3da0fafb6fa948530cc503dda6eb8a6bf98f5e31684daf63113e5c1889d5b6a38648b66457c2b0677f6abbf4a0f5bd19ccf4e09706f3bfcb4cdaa824d14e160efb2328c77d082907378e6c9ee0357a45b16442df8930a9487b0e00a3b5a33998749f41e76727dfae0e9520ef34146b71d9045b77fda3a2f1014ac2bb07a2ec163b246b5f17afa670f34f22904a8955a1155b86904c66efbe80b24d4e8cdea51e3afc0fc37052b585483aed3234c3b596097e26f4cfb7546f846bebe3911c707fb97962492b42e94497e15a2390634e6b3440743c85f107e86683f5fed689e1ba52c8705d1ac9cb81cddb98b300a8ffe152383bf8c4d8bb23ac17dc22b3cc23a29eeb7877e5abcf528b24b0a1e3e1e684d2626c11349cb6c0d48c1ff97f14036fcd1d1aa216bfb2bb2666074fc5546083055c7e54d28e93b465d6dcd6e2be977ecc5beb2bfe7246b2e10d142a3116ee0b79b862cc1f1f9f0cb5a061f5282fe433d294f3d3b8fd0ca6c5c7638dd2ba0444152a96fd3aaa91827adbd2d1f7593ceedbb5696a8c5b5987db1002a0c81b082917e0afd07c54a4d847149959defb81205c0d4096d2cbc6257b233b37323fbb281d5ca7f74c024c0477ee81733a541c49a73d026b9075c6f92135a3845ee65c75be09ea4b164ea081a4cf460092d41818802ea019066da71e059dc64ee5a9de7cb9cb1f85b90ef895ed197ae82f216780d1e19841aaf9ffb3a8f023b5e733c923a83f69decbd6ee62e01b671b607ef12dbc015a49f0f2d982c0ee9b40c1964c971a8095f62d7ef66cf118fb952403aea6f3e44d8ae106088f10d8292996e2919c6b84f5005728148f4ae66753b2cddf73de3cdc9c0be264051d7390217d26709b1c3d2688aefec8a7ac385c727474788f45798c8adbfdf2f28183ab3938debc20ee7300889f4582d8cab523bc83acad63f4453e353dc6bc9ddb94c74f73150884b2c25aa4df012b337d751e565e7d04a10f93ca4f8b4333ca90a7ffb0064fb1c1256214930f683b66ec819b9f0b420854750400d78655ec1e9363b47c7315db8f72718bcee4797ca8bc7af9bce59b335c1807813aab9831c74061288d467709f81be23d58d410d628f3e091dc62d100226e28cd6aa8dd8202e8ea5de7589d18c6247307b7052a5493cb99cddaa7d4c46b916baccb3e6026acf4d2d780c1db2009130b6d2beee4c40a0cf3097b732619a3fb1889014b7c9f150e9f636ba0c4b5c1daf74200342b891c873bab26563c227094453c87b89f5726f0b0df6d51af5541493e1355966c65a556c1a616d14c94d76367224a6d4799fa0ff274a7fcfbae28d66e38036bcbf5040b8bbd0a1eaea8380e6be500ad6392d0e1c83ee7127ae9ba4d58667a3aae7478e5bde9ed5ef93f34d6d31f8bbc6a0b69044b5faa385a5c89fde4386a46e34e8bf1c2aecca7a0fa430ff10bd9b84bda90e87b6975fbb1ebef0a6545bdc05ff5ba85efa1704d7d08a43eccbbcbe4fbb5a769288ee5036508129bbdbf1a4682bf3d8e393187479a94e1a128157cb83465016748aa6052a4b584129fc8000f7559825a22d00f6970268102a273bfd01c5905a44e052c52680e1f8ac2b5253487c7b0c2336054fe8ceb1c56ffefff0530f7d3a896c97a0ac87f7443e4abd40cca670e05e10cdb57f33d83a5e691300fb428199c1c965adf66ce420e745fcdb3abdf0079d614201639f0ec6eac9c59026152d676a19d576978488534bf0588d92a438ce7989ddb2076f21248de5bd089141a99eb2d33b8c69c8b4adc52534f476c020d85018d1e6f2a85652c4f8b98e02b877ce61eae445b2dbe0b4cddd85085a7f1985620d97ec122794902efc1d9f4b20da3337992cfb28ab07f7e3d90b42d4d8f75e8a30f744c7c511c627f3183f9cad089068430ba5659c5bb0ddf326cc1f20c2c66d1cdbc46bc58db8b8142db48f6934e416b7493ed0e41cb46c426f0566795f544062badce51ad6812fc8c4df5951a48444bc42c1a8ce2dc09f79966e37999f890e2de7d371b36915ff57c9704f88c663bbe40df86c7f2ee358f8e1223a485871b7d9e98ac2c9658ac6699c713db6bbacd3fe93dd2e5829e101561bec2d0527991a18d29d954fff525cb5dee8bd08eda03abe505158e0380503496ee177c84a11a1e668ab2f14c4527fecd79b303ae1364a88210aaa2836205a868fa00db4e84048673a9fd4e1ca051d5f2e59eb31a5a301d758df8e2fad1effa06b2ce2369d4bea50ed1f40b04db0aa110dc33ae59024375659d43c5ee61cbe67c36a1c458a2ff60b0a10f4b70cd627f109b7e078c9165cb2b33f3a825c6864e01168d5e22543714cb905f2b5a879178308bc1038859d09a5767e4259e9dedf396913afaf8b168688e05f8a874eb3f05df4a6bd48dfa1c7f42c2dfa1b36eb74b7ff6ad40e9bafe1909e4e4ca4d848593fca001b865e1b674119e831f77d50560c744f83f78be81b493e66adae1b9f535188dea29721f2c5e8921c06cfbdca98eca84ac006c7ac40a7275b9b672bbd2d1dc62e92f9d936de763dcbcaa3d02fc2069fc298dff448da764aaf38aa3416a45fdd8b858f9a5ae758b54a7d120a2e30505fa146908f32ab6de0b69bf2fc8a562701cb8c2cbf83236a808eda06fedcd5e3fccf53f29a500a97218acb8564388b40fe6f3a7d278596ae593832caa7e9b3946b5ac53d4348eaeceb837b6e966d6eea4df0228431abbee5ac2d8c3330d6789fb0e1084f0ac6fd8423371378ca62d81bf6624ff7f58e4bcd5e40e026d73b9080bb92cf43ac0a8472c56f76cbad97f1041f6142a27c2189497faec48f2f2810a921378728d4fac7dc4c68fec32380c18648181c9ff7bfbadd9ebcdf70971f24bea25dac1ff9be5f41186265fc5e89f8d081298488714d9fc7eb3e716ce10a4878597c59f22f386aa6365a10874cd6505291cb8ac88f8ed74c33964689fcc01449db60dbe26c786c5986544012f44306df539cde94798a295e5e3c6cd241af5f9f74b4eb0002ec38532d42b2997d2f4c80e81611c09f6ff9ee7dd30aafac8145a83692b5251ac94b99dfd1abcb0c72932ff9f509e8d7222bc9a1757fa09d7b2b43258c9d6f8b4a27a8bf9212a3844e0265ffd160aec485560d235a8ca708c300c334b492bf061234e954474f2ee7f352cdd6c3cba97c9750a9e8dfa478be904c421645e4b6c5e5d82e0aed4cc00ee86d157449b12b4789d4013c7212e1426ff7a45fadec5d905c3f7fd4a27451479d02792d0dc36015dd28597003f576b322d5ab0e150198452c3edd021f638ba22964ecfc2cfb962d8e6a151e0193d23f3fc8355d320299a7289e4447ccd4b5988b0a5032b712829693add48414245ea6a3a98291d762dfae3f8204afa843a6aa3714dff662f026b1446c206fa68e33c0a662dec8bbd91b08f21fbda714710126236835de45e464c90c213698b3bc14400b40a64f9612a2cfa544abef112b3c61acca89205e95b6ddfe61925002bca343614e04b17b0d2f6cd1e3890b559ab2e425670ba7a4be8251dfb56a27757037faac015d03d0580c54a219ba254be14f14a0dbf8a617a116b67d0a9f2f1d2a2f82cc846c346dcdf33420c8630bdb01ce436505ea603b2e4e82a0ff454d972f0c32bc39988fc701e021bb1fd8879b61a34786cc1a3e4c4832b26ee3990045ab4659ae5731fe4ecf35dc01fce88c2413e82e485dbb2a885d2c981e30a07c8c1dd35a105b9329dd29f858eb480ca44d0eaa49f379a7bb4b7250b522d553f3e140c2b9573511803727303400fa918e47930d1fb894f14d0fcf0c2c904c007508a8ebabcadead3ea1d4fd7fb762e22284bfee18894e97e9a8f9f1c593d53bd6f7f204757759d0c1d03b6b1c968c24eabf7abd1559d9006c79d912e15d89d27b60745e106c55fc733346a73993677287bf0d41d8a9f5ad2844e89d224d1f5b90996e2216fc69d1ff7b66a61d0a4e8e2732ab06471eb286e61addb9ca4602a6b2b640b5981fc749fac16a1f138a1f7c947ee9e71c6660904d93f8ecf67fa332406671dcd9dad18bd511072422999d1e1e7492482a0258aac33d40a0cfdd0dbc81ec32577918a9c8816d947b62bd220adf8d8134df4347605bc0703baebed605c40125ea503798d391050435fa363f85b5d13a11bbd65f780f20f4eb1289ca17e4fa6c92e239e07bdba276191bb4b864466fa6b60888b12efc06b4c6e30bbfb63d8f070ac3dd18782b85c9a7acc2b2241441242f6de5b6e29654a2905e305fa05be05dccdbdf7fc75c3fe7d1d7b84dad1d476a4172c6f73ac9d8698ace45e2a7723d0b0b899644257de2416637dfd05187561ea9e2aec62ddaeeb495cdd99aa8ba5e64fa91da575df015065541470b513406d02d47ed3e638cda751fbb77b22d4fef75d8cda2198be9bd58442a1502814ead7946247c22aff9649ae6b0623a3f2db4c864acfe6c9c044417841e1903570929320771a3a88e872876f541f04a2591ae1e7153123068c4b0ade44b22179d215c1ea72007acd4f0dd006bc20a95d91ab3e085f8594ca6dc6e9c87cb80fbdc34075c89982ba05737c85abfae734fb7bfe8ab4f7f065f0c2184ba6735e57dbbeea6638ed2a340821950a9f8b2a0f84ddb01b32265333068b7b9a96019673fa6d43299a095b31d9dd7e45f876fbc6b4adf7bafb7537f76ef79065e1295c0821832dae44e1e285d67628c056d44df416da16ee1b70c17aad1a1dace7f7f063b6b89e25ddcc89f9ea6299e2a5b6fc52aad73553775b8ee3e9509e5245ed86dc0cca62b55a35358835a8ec5ac01e6468e206a9a48976c05075b154095a239bf677c1eba2df8af4baf8c8159999a92c557141568141f3420509be78e56d74fccc8d0da76ebc62bc3210859627644862680b918b00522236b5d52d6639458a2d425acd39fb5f63992203f96280a5055dd4c572745495a88b650a929ada12549be302acb96205d5c532832b157618f8f9f9a945589545a8bb2d8717a45dd7ad5d630f1c768fcafee5d6b59712fbce3f7b2ccb1e5b58e4619df69b61556a9f71b1ae46733a5b619d33f190ef9cc328e57663588661191665bca4fccb4d3ca48cf192525eb179fdd40fd697f1f5c3725b250f93715a1a96d10ecb326d37cb96ae7055ae6ba1eeb597c45efe63285ce3fd5e7f490c5be1f2b9f871be40f4e74b227aef84c36c3dee6b1ec79ad1adee9b1094cc1bfd5b3d84cdf1b66e19693bf3cdf5f2e8eadb82373630df77739e647d193e0bef5b1b05e9f44364a66ddc4005e904ffb8b830f0d2afd94ff1afeedeebead64986e9cfac03df8b3e4fe3d7f9e4f88449f0ce7033bad56dfa627633ac1a9b22af3ace0c6bc6e3b6a0e9cf45ccaed5f2160a8a60353fdd12c28688280a14292de8886cd2144a04dc15b40009eaf54dd732aa5d9147c4b9fc75c9eeab85dab1a3d6344bdd7a7f714be1a4a424e6a4da499837241b926d860d49dda46c40db0c1dd4411dd4367450eda246b26dc31444441c85892a2b31148e32c2cf083f23fcd00461849f3ac2139a2e689668824005c605e382398171a91910c604e6440d500d500d500d07b8068cff385803546b886a8ed4fcd470800a46c24878064652590acf600a320599824c369882aaa9c884c464c314daf60d063c49b7304fd2ad77615cd7428d12fe9aa4100555ed041b5c03c26f8e874cbf2769e76cb8c6fbf86c708d479ffb486e1b346bbcb54fe5adceafada907bf7c13de4bea53dd7da20f644e42db4da57a34542aa952a5de864b88f9d4c73c7c1b5c428c96e2e4a738994a49997a99e3311c8d5f130f1aa9d4b389474a95b29136644aaa5436a4ec740859c1ccb7c1254015843204182c874dde0fbea473a0d106524f9285f0fc10c6c3efb224331ecac888f11dab42daa55ef5dd9c416350167c214ebb1b153e8b76ab85e51a463b1d15d2ae0894315c17f3f05fc2c0fc8a762c6c7bf92a8e069599a2456055c150ec4d454290d4a4a23c29aac2528fd1ee468d306891ee321b36b8848df2a45eb500550c2dd255db3e456d700d08afeb79b1ec32e1104255b40886a62895fe42dc336da6c617127f93f1e3b6a987e9e3b6d335dab1aa67d4c6cff381e1aa1c7c22d4f28cfc4a1755ae524aa54cd4adf8db5f2fe577fd3242eee6c37c26a564997a89bd8aeb542f7f31188e0695392991adc23cdad9d06ee38cff5518ca33290cff69468d66df35cde07c18984b458b744dd1ce67521e7e581d931266912133337d3c971291125114a22811c2bc6422952a4a1429e533141945a6388a94442ca1442152aa9239ca8337aa8cc22574cc51b806ccbe6fe2ec1bf9a8770ef5913bbd36396cca8f9c8c3146963fe74a2639cd2613e49f68ae9f1c36df69bc252fae9bd76357f6b303d5ff35f7294a4e856eb11e722ca7f14f6d603efe12b758f1cc4ff1bc710dfe14181a42c4c43a300860582f568b27d87fdf6038b69877dfca9fbd9198d71e32b73d623efbd531a27dcc4307ac4ef640625efb91fd56a63b31546667b6b0bdaa1f7b0de699e369d5433601f5a8954c8fd4f3cb9c907a7e1352cf2b66ae2b15edfa2fc0951f7b9f0ac39d4e9fe256e02f5878a8d38eee6272dac999a6f1d7de59b3a76cc17dae2773e01f1df22f9cf608b0d01a4784e399c0d6c0e99bc67e5bee53d1ecba43b637826deffccc058940d3f886bd910dc31ec88661dbb6a1d05448b7fc6598f0b5d732ce070f9c54103847b121965e6eb3940f1b40611fef737cecbfef9bb7fb7ce4ece816efe7ecf0c10f9fe7b88fcee9a68f2ddaddc6a2850b2341aae58b2de2943f177d51bb7792997db168c1a1df4df08efc1f8cf1c1f7e0a3dddddd37b42ca91dcbabd0de667323632ecb300cc368977d677f23e3708a401bce8659677b2af02cec691799b0582c6679cd1ee378f83313f88b8a699a8661f22f3ae3e2568735250bb6800679710eddf2179a62cabf5e88894ac871a8848458b386c92d581cbb3ad0607308f5cdb6399c9bd8c258aa0b517da83a7446523d4cb7a6fad51b81f99837a2fad5c30fb239fafd1f8035652123310ff34656af7a99fe9d9887f99dd5ab7e4d324d538879980712436168cfd00e0c0d9015f5d173159185053f3a3094c54908b144677586fa3b565397429d71388dc5641dddf2e71efdda73fd288e87bf9f6165530fae289f8ae24cd8b647a1506fc2e953ef5351a854fb4c4e7bd6fec4adc05fb0f09885a49c93c5aa40df6cb448e3e0249be33d0b091fd1b48c7360211662a157b58cb2500a8729af130c5a4b421fa1da24e5baae286d5a2d9c2e70b068499245380cd2372c301741c4d6f0f78f40e360294de34f14a448056e30e3c3c844ab80e3d0a89426643548d1e4da2d97203e1c07f67e44b424f8471a26f646e46b6f247becdf5be1521550178b15a1caa6ebb588641a19dac13e7b23dacb7f3229682f1f08f6994c0af2b507225fa33d433bda630f242b02083ffce86894e534fe348ae6eab8077250a4b33a43d7eb649c0fa7d1a13288ec152e07e7063abae58ca3a37114c1e9701a27c74705829891da9c8e26ffe3761c5d2f38820b14415024d9f06dcbe91b2dcb9ae27039da7738557b1d5c4eb7fc4d40b3c3e122d037d8fbe3e4f8b3564a1e7eec351a2f6e755d5bc2c47a64f59704ffd312d317803db7aa388ec3ccdd9f39f6cc6dcd38ece298c85f350e1975348de3402a6987c38f04fdca425ac1001fee3bba4573bab5bbc4d1cf5cbfd7755ddbdb30d2ee8a303adcd1373eb4d838fb917e27272df3bd4be91b7e1d27b51f0a2b56f839bd576ab74a2c76129fc02ac469fa9d94904531748d7c50cab834fd177d9710138f8b6dbaa5638f7ef4cd4edf74179a8393237fd0f6f94fbbbba7cb6888a9a4c4252c37df2c9ff89961c0f029e33e064b8c2601a0f2b6240a66d7df3d172ac31043e5772b70c083cd617a46bd7b51f95d8bcafe4565f741652e2a2f55e6ff823a9d4ea7d3e9c43912b76157ec2eab3055c67574eda0bdc6206f8e0bbe5f2f5d6bd3936c5ac08ca9077cbfde9b81dd9dd31a373da19f273af71ece54edd17def7484fcf7928b17e4567233754d2878c675b0dbaaf638f8cfd4a3dfc7bfb6baff385837d29da93d1edd4e474c1e96da65da1c0e7819d70eb393157227b9eedf66d34925ebb066f4cd4ccb716c7fb2325991db3aa36f3298c5ae91db6ef1165fc26ddbb6ed7d6a735cfb23967dfbd48c2be2157349e19b4c4b02942129a76b487a1f480a0291d50c4920c8b215529676b212c292d07faac2c50ad0134d8c46d81bd72e6ef84d6796847deff9d7e7af43f05cba5f7fddd03103a12f5cb870ffd16e1fa272b4f444d0fa6e339ba4b8ae8b49bd2ee8c25585872a40440883047670a1ca0fb4b082d485ce9543087260e2852e5928e10326562ca540e78da0c8056623b620c1a3e152a205151f5cd7755d1a951954b121c618230624a978a19214638c11c220ab1ca922831131c01e7478411020a0a2a4034aaea4be6f1981a4beaf990284aad5c532e58b4cf22f35c3606acba8dd4cd3bfbc246cf03df89c2ab17ce6d740654e3ea83d938fad1dac3b87b4ddf7dd0bb647ee2761f3912f8b7691d6c53ce5edec2efb8651deee0d82e67eb92b69cc0e8b92b507def7b0c7f6e2cba85e4546cc7d6e5e297589bac533c0b798ec1b66ceb8ee55ec31f3f5584a7ff6775dee1c27f163e618dfaf6949787449e01977905bfb0f666cb6302e863db4e11a9047a4f031142484306211b2e44c853cfc83bfbb3c315230ff68a9bf8d1eb718a9943174bbcb3d6f1c889c9cacd80925be44b1240aa30364e982064a511c596d164a4e038f4824495839d4fd993d3a6a82c34dde59466431fe56d443d3f65b34bddd4f0f4d5766d740485aa8c97cd8393c1a0307f33d6b338b258d76fc8312922cfbc8a16254311fed3a496d20ae83ba6564c392be59231b847aa96fd68806275d7751a1d34e1254b954a7ab033b8b2269e436b385fa13cb34b75fdf7e19469d2ef156f26f259b2c40b584ba5892d85289ba75bdf46162df4d806cb8b48edea8486b62d340ed24a39d94730ad91c2b6449b81e75a4819a38171be7a326384d901cc9e54c752f524109aab0db1a447e2154fbceb2ebb72cbb2e6cebdf34dab1c967bae548f51f7d7cc95cbfaaec65097e0329ad947258a85b6cc44157c31c18152dd1e0090d125aba1075e1926149e27e9e9ba39f7fc56a797bfb778f764e793cbe6f099ff2f857a654f61657b27842e9892e60f48bb0ed6d8395734618238c31c618af2089315e01aa31c68959b9c28ad2b3d28f7deceee8eedeedddddeee6e6eeeee626b49d59ee5f86cfcc4fa00c844254c8a171b00790881411556686cd72c257ead6d40666d3b9b4480a58d3ada762351ff53dbfb75fec02b0f2983ef5cb5d00d637fd8a33998a40d33fc7333fc5fa15c77a2dc5755f45781adf491c00487dc7aaa91781dba559d1c0781adc2e4d08fb321f83e3d997796d67c490e166c48811433583761be365c870313e06952caefbba0a817652c2a0dd9c317457affa1c4f71f357dc7c1507c375fb73168175b2664c5c8da4292733d2297b303bd6a3ac6a6a817d4c50f6a059802bfc931615865c1c8b47ecedee9739013eb3b00ff7cbcaa0a1a576ac3a4469c94c67c32fccd6aa5b8f6312e9c38b6bf5f32599597dd3ac79f15cff1d465bcfdf7ac831d9854bbf5b292af351b9a728e6bebf25d8921c68da6908d4113b73da623274c1e4f7a5bef9d2487319a9be1f13ec7b4eb7ba3bc747910f08d747ce8ea29c1d3e3cc787bb6fdb407ba82466b7c5d310b348622825505966b7422581323a0d2121bc2e1fa1fd329bc8426813634d8dad8a32ba2e2925866159966d9ab66dfbac197336959b89c77bd01dfac36b99f93df7171f0e5bdf40e85c1c3e08a1c3e7ae699b77377cfb36a76f65da7e984dbbed7442a1e64419cdd366c3ba01cb96133c20cc65fe95328779797797a59c93c57a4de4ccbdb0bfdc67c718a36c77d93fba15e463fc1f5c10fef841fa26ca18e307f9b1d3adfef132ee8f20cb17ff32afe4b80393149eb93015b0296488902143feff870851a15b2d4485214286b48f1c2415fa66c87a39fa0283d80245266144c0676ac026d5ad692091291be05f7cc1dbf287efbb863bfbfb43138fc73185af6b53d943f22968b5cd960e96bf6608834cdaa2240717c8a30b4a777f7777777777bf7e1c6e6efea62c4a85f421f593f2e1b97ddac5383aa4541cbea36ff6882128cbc422555e2fb3daf44dc7ba51b9dd16e564d2ec70a47c2fb00c1a5ae61e497fa6fcd3907f20c740fef0e173dfc05eb8702103753764e8403d4408fffcf44db70cd43b3c9b2f932514281c40921246f85a1d0e4e970e07474b128d64c57b0f4a29e325e15e30c2876323b56cf9c1a1f899bdb6f56f53d3d960d1720514b046070e3377965dcd52cb9825cbcfde08f69acc5e662f1f48f632cbb2d7b0d732fe8eb53a1a67cf33cc21ad946598bcae08e70f948136b5e51296a92c1325f182ea3c832aeb631586c4f72782c96f130f16ae97afc5189f0b4b8ce2631e9089a42871168d838f14f115a0eaeb5c3405086e44086ac75eaa17d58e9908bb376b43175d78f1d2a58b162d52a4c0cc00cb0b9c54ee0968cfdae94f1f51a8d9f9ace0db9467bf37337a2fa39bd843ec79314a64db5fff67ec65ff3e3b3dc675d87b8e07fe566d4d264c6cabd8561fb665afbdeb1fa36a8e4b8e67859efa7e6be4e9dfca2bf063cff1a4519efdf78dc26258d72f7f735c725c2fd3095df9a217c675dd4914f631a8b528f6fd4cc429cffe529efe6722456a13f113fa576601cfe2a0ccb50fa0904061390d813ae284051258b651554e439cb0380d711ae28405ea08d411282aa8235055505470bac56fe2b11406464205020c5017c72535d652b64ad48b225d1efc8ea3faa7b628e734c574e7ee3783b69edaba85aa8b25065a54d60c2d8692c9bf5bc3c7fb7c09773fae9b5db5b85d747b5b155b1f5ccdb0e47b70c2f7fddd5563bdb450c1e487d84a3e784577778770b552f9cc0cf89cf5a4f7255fdcf7dc9ffb8bc1c2a43fcdb91dba4d8b77863ef727ddbd613ca0c9f70ee17bdd28b7427bec5b12fbaebf265996610fc62b8b19ccb297659e659dbd8db9cbb60521cbb22cc3a494524a79bdbc3c93d9165d59cc60f62e795d97bc32cf5a33bdcdae3645e9d2a54b972e5d98bbf8436e7fef868d8d8e36e1e03c187de6bfa6d58ad7cf19accb9b880c7dd7b7a4c9effedcdd9fbb77ab86a3244a4840ec0229520815c52c8114c517298e0040044b209181bf589e88e0aa58e53e9005a96f16892c52aa3fcca27170df2c124938a91e8f54875f36c74bc192e0ef4faa4cf6f0b7f7da0381daef6b3e3b1bed19cae84ebf89f6f4f860c028c890251f464acb65677b13eab7bfe88ee9f4a6f771199914b4df1e48bf891a317d3f95c98cc864a9c799bf7d8af6b05ad269fc2795aeb1fa2f2a93c2f6a607b2bd891a19da39bde98da07e7b20a6d39b1e02a99f32178a93b9a88993b9364ef5abf7d18161a2182018b487859a100901ad38f825fe70d10404f31d37a132d9fbe88420446532fae308eb65bc8f4e8c5f1dd5774cb47a5e721affef19da313dea7b8676b6377dcfd00efff6be73fa15ede11dd49f680fa3e8528fff467bd8c8b96c461b17139ffc555cfce19a93890f65229549a1fffd0e2341e1248b2d96fcfce8c0fcea877654afbda63dccef680f437b86aeef016ab2a3fd8af6b446bb8990f65d0369424d1c48690948694906178363712170eb34d9a6b47dd74ba65f2018dfaffa9ea19d98d7bec71f48013a2b18b407c6c3bc8af60ceda81e86f6c0a0ade2d2d3319403acb36a23d4af0eeabb26425199eb7d74ba363afdea9ca8cc457f1cf1d1893f4ee3fe306898abf3a857fdd00ecc9ffe447b866452383dea774e8fa23d43f17b8488764eafa23d2ee4444ee30f43e117575aa18d1a19dae9bc89111395893f3ff51b95891448eae7a768cf90cc8fed1db03a1b05129770d0810e3a18fdfce8b891d3f8f700b50eea5b38fda43240647e989e861173759c8bd3b8141a84586289a49f1f9dd54151232d9ce88fe9cb90132c2822e8270689196b5852bd76aef49e388dffe6b593f981aa6b7a4fe097eb5a52fd12aa7e0555bf80aa03398dfbc32ffe7029fe38fc12856293eaf149f548543d1655f7c8a57a44aa1ebfc4a5ea5f7cc969628e98ab938023453a5c3b5f7a327d20eb09ad51a032de743e99ef703309cd7e1a7658f1c40c3f3802c20b2526e029ae2a90055630221a880164fb430eee67e9050f3158ba02081bac74a0095c28ed42b70a8e02e001181081440d7c00050fa46012e509b41b71c8091a434da6647181134c6a0022935b7eb861c39a316dfa66a1d370a4e4612127eb8baac31000b945c9cd8b40cca5d2a48b0894d0e10915484a20b778800511b882044bd85005133730f9e1da4203143605e1ca0c38dce0c397273e5c5b8e502b880ce9d9bdea56ab4059adeefe0b13cc7b05038ea6e8a2e4c31318aef400bf98a1dfadbed988e440544e573413365c848b2a946c3162034f62e0c1d4262166ebb4d3400a2eeecd847970c4e4fdecf4e1c1055a2cc982942508a325d726b1c55cc9df1cfebcb84c529e4e3f18f48061890f58d1830c3bb0a2b343ed5805900b250707e0841338b1050f6650e2051724d04cc047e6d6e7c3640500db252d23ede6c22c1c0000d4ae7503c771e050b51316b36bb59c67ab6f50fe8508580c3182235a4cd0e4051dd7a176ad1bd56f9841f33a118f5f376b01526f473fef0642832cec33e66d6218a5fc6cb8c665e201218430b233dc9cf9a8a48ef6343964664600000000d3140000201008060542a158341ea8829c3e14800c748e3e765c36914763510ea33088811842104106108000210620c410cd901000c5a8d107679bde79d6e1b8bd14eebea8fc768eb82a372f5496ad72f1f257ceb7896d377cafffec383d035293f0fb5d12d5ab4effee159f9872decd3b5cba1b2604889647c45f6bb7409d8cf7e02eb3319683692ab8c63e985997c5f2d7125838fd4def940179e7b66ae6fe2490cce985f4b0a15d41c59d8ecc5386f7931c0719f3e7488daa6ecf89e40f8a6c0c69f39e3da4403e8db3ac1c28b74c4f1a64b5f51c7439c43448172bd5bfdcbd223bd0315a3e6855a7d9464c5d1616612b2830e3bb7dd402cd3f184861844affe5fe84a0d6477aac98044d36a8894302f2966e5eeec8e0289de927f8a5e4b96098ffddd47f3f2a2a0b278e82f102d77c23db3af227cccc0c11a628b161f1450d776b8993e7c0d4c7c32a3996e72f42e8a19c079919a2b2441cf7bc07faea0b747a2cf3466b978421841c20fa7d8bc93174bf7e8e678491b444c1cfc7e512cfb5cf25dbab223d8d7919f969fd7f3bc1b0055cda78a8e77dc74488c09a89a27ae4d1dc127ab41b4fb916f0ea583c0534aa7d0add8fe8cc5e81008010d2705435cde2781022b038d714fb26d2978c462b1cd8082e350c483f3a7bf0fa064f7d78a5a429ea7a0376f0560272e6060bce360ef39481b6a643dc5d1e3028ff350adb860ef3678c82b9ef93112f183e14d8ff359e6bda096cb1893c99516e50f0e709949bf3899105204020c4f6afe11070031aa7d8427e1d7bd28ba4fd1de68eac9c464986f82c5f098db6385a612cc4ae7537b46a7d5f704bb7d46063137137e72eb12868429f5633ebc0a34e069a1989852c246e400953ed6d4f227830296266a630c7e60fa7b3eb63fe0121247006e152509227e341c9404877d42ae5d675a35f843f06be8038dfecd6bbc0c40dec14b6359624c3570c448f129a51118a00effd895224efafc5318e5cb25a2180f28aa2e2e8314e6fc5708e5c9ce4c0a69b63e73ceb1df63919b084f62300980d98ef0329fc2d41a35dcdb5d343e95daf75b59ad0c59c396c2e7826eb0fb2a4cc6f1614d8482ca36190840679ffdd73a50222dc0d0f645cdbfd7ad7ccc7c1431ea3020e78bdd7ea682bbe7d2f8a612b6c2090775b19ea8522a169f7b9fe75566ade27e96bffc9cbf6d8b08434c342551d519cc62221d98c1e944582a1b8d163df8b2c25b0633992e9ef003f213b99b60910ea9dc11fa5578b3e990b019c02910cf50b34f9e0c75f803cf9ef2058d225457bcd4387017e51f39085da4426bdff312875ef0fcf6d49dd5acc8ee1f4d8ba741bb238813abd731b35752c49e135dc6b8b1a4d2cf251dcc4322dbde4e8bd3888768a1bb08d987e78fd00aef96822d027e36c4fbd530645cd3cad70d41fb1dd74d6e8540f0ba3483f2543efd7221368125470cf1f41a3ae60c29b95a821d316f7f1e35dd36723529356ee8ca9c744dbc8c6c54da5507cf400bae60cd3487d323497a629529a05645c7891ef5d200b0305d812ef31f7cb63bce9f35024407e55a70cfea59df137a05d4c0360b6d3bdacf2c9ff7b4c4a1828d79da65881f41ff9e71fdec65f45d21d177c0be95a89de87140ffb668d4b6eb49d7c638f7ecab18755d067d24c70e2b8bfeaec695300612a380c21021a412b94d5dcfafb36470a3fc2f4c36a558ed3297b82551afc7aa7ff565735df991e1b047ca0a13a88af0e035856af5b5c701ce4343412aa4720fb5638b53226af05f07afbb90203e50b7bf61a476b8b3d512ea2ba0b22d34cf264967248df9b1b1710c6906d9e7001aa5bb777693ba3681ce30fb280f9525bda3d4dfc414cfd4cd67c35c1e1546dad9065b4720347ce75e2c12ecd97f5c61f2c53ec2b41ed3d7682bc1a0944d808754bae6905907a8e3914b43ea0d0505dcd9e3288bb073faee85ec15fd46b705acc463c95144a25fd9f528d712f96f4b9cb9aff36a604a268e69ad598b81e6f9ffe5ec8421129e24bcd0fde9c8f26726e4a4ce6361ea2a2295532c1c1afd0d45ec9601fc686017364527f98614e4b613988872a3e81d7a48379e8bec135c82a365c9284e6975293d80c76a2d089c84b8227646c7d29604c253264f54451b859245937cd69d07b56c4d6a908dd5ae419ab9c90e9c7e300dd50af0ff28c7a5ec83fe514ad3e72c407a299f5477084b891b4573c636de6cd1f21b8675770a9836ec6c3de4bb6522418b9b59f52504c34eba8760b9f18593b3c3de0f4fa06f9ee8810b026599970d4ee44741f062f948f27d619c856627f84893b1da3e6208262ee367b947e4ba1fad8ee09a8e439f1da0ef454c866e0902da4e7287185d94da45a40023d4b6749faccaf2f99b6c01b153b9cea2366161ae1c2cad55056b5f68f65e9a846e3d3d548e10e44d5b37681a70ece853b0e2d00eb6fd2ac97790415e82374effcee3f20c553a6d9097cfb3d5ac6ccb6eae34b4c3efb735fd6c97aa9d4dc1af70e703f4a1450a9da19837940bfe9adaa2a8889bb845e6498b89e667f00cb2d40168d01a690e587f4745c5188ba5cd4637a1c2353c00347e2636e9bac099a9525c2734a7b890b376369966a437e9ced303da1ed39b108fd0828983495477e61726a0d623017552882ac4a16845623005b855c8bef636f9cb584c58c838e00c83eb6c113d458619a9aa14145966891118a5ef55bffc61823ee24c24415cd3cb605e9481cffd15d3bcce2de56268d31070f9e365c6fcf247188085b8805eec32c66584fddea0cfe6947ed6d56ba228bdefce51a99d482d0adf4561b353c6df22b1aa82b632a40a30afcfcf97a89cb8e140210ca71e5ea2ef83dc9fe8fb3a8445c7508e1702438259b2f6c267c3d1b53cbb3f6cf731828b1b81babfdd00aa3845c83e91ad7c40a7ef5513b51bdfa2606cbba862263a17101c5670bcc67053d3d2ba17fb5cba632b0bb7d4f04af02146e0342e6d22dd66e929ae6fa80af33dc2167a3ab1338ea6fde39b0e11038d83a0a949c0f9721ab39bc233f45752a92c1c6173be77847d544915fe0ebe4af72a18c9ba6f982443b05d0b55569f5db2a7351b2d2a48bc174047e11d60e170f4dd8bbff0720600f206ea5f630d2953de7b54aec6089385c300d547d4f3740c329842c7c0c489272cd3e07f68f85e9e3e6fd518ec94b2b787afed01bf8ae4393c646ff79fab9c2296d4b4e200f0d3d88932ea3de11490728ce1354aabc96238957b574b7562ae82001cac6708fe8d9eb39a0f0a1d79da8d2b31b4dd62ee357b570c5770aebc4b44288f3c6fb57176b3b2e18c012efcddc964d03388ea02a8b8d82b3eb8615fdc5a0db1ceb70f2c415d7ab42a3476f63c855493514dde097379337aea5d37c23493d168e3ba5eb893dbafa2003e88928c89f96b0478fd86b579ed255c0bda6dfb8e648039b2deec5eb02f31c3fb559deaddb2cbe9b6e2e1ea6b6a0398fa27e6056305c91de1c3e6524099c73a9c9e38e8516e8d98e60c5ef80cadb16fd02dfecf530862b3463fa0ac79b0568b6ed9591979c0b3697f89940ef68af67b77683b66022e33b3fe66894f17ef887d96c1fc64646f0f77aa47677d8e9039c250cebed47cf5452313616e5e2ea5b47906a6ce6bba213aa319fe0c887b78015ef30f3f09645b00347e062f3b80f9c047cbb052703953e691309046ede2da843322f328cf7164e76da8e90956b031046fd2457b0e19b9ca3f60e8c5d6bf3f68e0aaab4e26ea8fa0934b4b7633a4af9cab992c868b6a4fc064a1d99703e536ac65884302663eb5bb4293d05ca3d4a364b7132dcbb29b1e4968e0a21c42b06cdbcfd35bc03dc61015bf4722f27b23346aa12bae6fdf956609e041e760eeb2c2d91df604a776e89781a2e2c4da61c863dadb4617d4ade09345a1f07575488ee84071df3e3dbfe5c2da1bbb78776e90d95d868aeacb08a8dc21f49c0baca13f828f44bfdbb7265b8add67382c7352a06533d0fd28a0acf13e056247f1aff45237e8ec1a84280276a1c94a1f55eb010711798906505453ed11f85f0511ce43e8076d5e93727124da3c2046022ed6bf80945780500006b982c6a51f609a48fc283151e8af95dc1054c13f788c91c7235b3a5a85b1e995ad949047c363d3e20bbfa22a570793658cd56cb47b74bc935c0b65e8c6f482339be4d4bd0126a138a4cb3d98b9815531ac4789b75a04e4c89bd4d79f32e96a5f2f0f52d06379a4e2a88f9b40a2f23072c10ab553e8988362e3b0060e0726afaec635f8b790807029a6f9307d9ce59dfff0bbc62ae3204f9f64e7ab7393270f8418b5e7b824b59b0e98915ce27d9f897897908d75de2003ce1b6742cf8fbd852b93999d0b7e8f67c026f5f80e044b289a05defe9fe604c6554e5ec0ab78a7162bb8d9677f05e3b1473773ac666323c909315632d640d93c271555124775768eb134d54046ca4b29a389513897d460327c67c570a1e52d86aaadf8c219744fb008dee4a1e4ace445172408f6b88085a5e0daafc810ee643bc30158af9010630021167bb64239087002156990c2dfa15d226c7a04331406a9543013ab43d4970cede50e9116e00afbc0a4a6e0e0e260bfe5f5462e78992f23d36495cc26bf684a34c16202cfa1d6a4ddeffad4268bc1a0ae2f67ea0ef905ab24a443a0a40b5ccc3ff36412d7faf17709d7412d0b492d5cd3177f74c75cb2085c22f62cbdbf127875e9ce96cd90fddf05929d7bd3c59aeed6fe1012e7e55b324b8f0efc7380628ee9626ec789b610edc63dc811812a81565f076ec61901d4dc194d9f94ff47997109809f519a5e85ef5798afc1e72487f4c04664c30f15ec0d481fab73b72ee26ff8de0b3b6aca71aaf9fba809d1738505a49629109894a98042496ae171bc8ac3e53879c496d9d9eafeb66a03f22cf3133f2983301c8290ee02d4d811795799604488ab9e79bdfa63e92c04eda3f0deeaa2448d604b9931b77ac9ad388adfe63d8863ec180203fc6ca27caf4df87474ec4c4f4f10efb45fb78114dd5b3854f21bd234e47201bc9069f08acdcfef5a5cec402a6cec7883d8fecb896580d0199e6c2151c5d1e5ab95fe1f354e9fdfb1b311b38699f860759000683558ecc8c43b38a5a55879d7038379463c4bdbe0eb3ce0a56beae84a38dde17ca9865bcb539a16d3a3394b068403127b7a58aee5b2e0e06afab695d31da4298d95a2be43463b57c0ae43b2b98e96529d30db68107b39e84c82358c71fd1392ecf94347b48a80bc20fa0b0608903fc4f4c4b82a250de01dfacdd9530410c1102a8a05fe0167746cee35a2933ce641001818e381b4f66f4adadc0546476fcd611c739d9e9d8c800aa12c3ce5be61ae7a08cb24a6003b8e9685bedd4abd114a8a2082b4cb5f89e8d73c03339beb5bcdc9a50cb02168182ccdc142de0abbfeeb5808e7caade6c2659f504e0036dfe773d81db03a151e436d34aed66600b28f6eaae11dbebbbd53e7626ea19ca2a07cb350e80312a9376cf04414685785fa1291443be49ce3e5c0734e9b4fb251f9871e57f1368aad6caaf4a44e9aac1aa3bbc185591949b8ce630621fa8a516038b51dfba2442b63d7e081827dcd76a05e3dfdd44381cfe447e4c8cf8647c9adc873911d053e338480ce3f7b79b5a5c4f3230884bdc4dc63ac3e50a506f2b5e1f4e60a0c58e8edaba67ea8910c11f28458473d22839d5dceced7210631f4ec0972521c62e8344309ec8f532e07e445d52e9cd97eac2b2ba0349b8595c91072a702e3e66d22c762810baf860443cd4eceb6ee7b1e1332540f53727f9ecb1d7ba0865bd4c0cc1a4c0b85d09655ee653da2ce5076d33eb7ab5ccbc1188ace376700b21028695e23d5f715c3bec24248b7f9925317b35c9af79b1dfa4de43b182afb41743543b780553e23bc005834c75b598df3732a5201c2f44b4989cb72c5ed9e6f73c1c4915af8cfab11a12128814cd3b0cc96137ac179ae52ba8048e0aaf84f945c3f9281b554c3f0336e2f3faaf22d8bc1e5ab8b9c4850c3bf98c99f69db86b5637110fa6bdddeabb8b160bda94103904fa9606a9100c5d7ec299d428ba102a7277ac907272ce033403d3555a5bf597a7bea780c1d6f22b568a45011c3033cf6e9a54202148062f020c548807c59492c0a6613212a2c704b3cbe813373e14ef494c7dfa091c26ab43a0f6124438ab18eec3177c58ac88da46197923abb847765bafab49e10f54ec78d780cdb4d5134b8284ad81ea9fb38ac1e323017212810b5f83938e8bf58c8c4b9950d38fc2ef8daef684a58a85c6d9e88d5fca9473661b7a031b680c56b34e4de28aeb18995fa9f1123bbaf34092b116609a0f7e22e4101661502a79098a06066b6b3c1af81cc809f8900e2b7fa53df992c23404a8efe38481f0371fb061f452b47a6c8612a317283d1fde72d941542c87c322e2c59d0f0f3d5bfde974f1a344c9277473a519603b4e577991143c3769e446c6191193d4b65ad04a7a1d7b3a94682b8618f6185b804ada3af6dd5eb70d6fac9cd5b1363be641d544982f4381cbee8c885e640fa9d62babeb9ff72fc0986b4604226a05b87b7827dc86ed411db2bb9f33c01162813a97a8804685e3d227b995d3e436a613b2a194c847e954d03ea71d89ab63a3cf05c7172e006e04516073b42e620c4e53dba93547f5824fc4f7ade4e8a5bcc3a48d24d7d85d7de65a46e3c36bcac68292a1b21ed095178c6dfb31cbb98b64da8701d9a7f8ea3aa8132f481a2f26e37590633ec1d1372b16c3fc07aafc7108b28f283efb4d9307777d68b9a565191636e8a1ec438fd1237c32600742d5bc8a9a391219493f262cbcece588eb48cd794249f1a49ed7460b7423e9a51714076480428ea1b6cb4c087796fceb0331aa975b91bd6e8dc52ef3ed91189eafe7033ccabf394acbcb486877bd330cde4b62f146c6b9c25cb33aa3a0d079b820c80064eb983b658e6ea1ffecbe7794971a6db49b2217dbd1156ee0f70cc3f1953449631893bdc3ef38ec92664c9d89e1180192c56726500704248c5cda9171b1d9555a55ca7206eca83d7fce2e2960c0b181369fb0f59ffa5d947a8242b3ce46c476f4b53d9d9f2d72a3b150704cbcb7e4b2f23aa1b8ff64c8e3bd2f05cc8585db2141d4cbba56dbaa178ccf3953a162ee86c15fe8a5ab66b1c59dcbba9a03237c8849b4333fc9245850d10ed3b1dd08ceb0c2e0e87e9ab166a5e9d7ac0c7881ce126b56a937aed20188400c0a74e3325ab6f4b0fd74a094fdabbbcf51e2d4a1320ae54265e084e94568cc9886849af74c7140f556d33605879793e65f1b8e33fb5175faa3891f480a2bf56850d50ef42f834f83ad2ac6b88272dadb995978ea665b119567731096962f3858b1c8f824b55c65501e90a801d1e53da0f76599734ab9fd6f2fa397e73f8e0d9417a5a174ea509596645310c73f25e4f20aa0be3e3b861351b0198fd89b575c67ce44bf001bfb93a2d837b46b6352f3e33e3ee8937cd837bbb6237dad509c90af15c52411d6f835f3b901ae4b15e307632b8d98cf43a8b3087e3a3dfe05ce2ce55b7676cf63a9ff3217f9242e635b92a91639360403b3073bb9b7a14391e46a3dd3bae778c5203cb4864bc5f87e21a6a821128d66378721909eac20e594385a57e5a2ad123520b018d33dad9d592f7ea69302639c56504a6b3a8b42407d3df659fc49168920d83cf9c07728deef34a9aa5575bd8c3c8059ab72d6903ec6f9a7d9cbe502e493439fcee28560613ec3be75764f247fefc4b2e255ea7a9d69b0cb4f2f4ba0b6f9afba4e5b3f10b22b782da8ddc789e4884035409061f37964f9074bde6ef0e0515678502a7b019ffad04e9ab026e0dd9d283b0fd1d487a48e2a862a198566b9079011f3140ecc9f3e7e83fadf47aca1c47c50724bcc7ed1bc317a15371442ee4172452bfbf9a9a2a07eed103e4eef4481926a8409bf0b3e9f0acb307c84ce40b164cda87a56ee715bfc85ea5b570bc35747478b30cf7b90dc9a94a1b99731ba652d1591b47640076abce2e4798dd445592ab12ff48d3e67c5afb6fec3095476683e0b819b2cdcd6b3f680b70a00f102308105684ad33cf8b96c50e760828160f8cb3c61717ba90e330d4cdee76fd5605267fedc7cd818b2407e9ab2e3cd60f1234d45934d6b76e3735e24286ad0f1b987f1ea9d7541a17157aea3b54a3e92f4af42d0dc0560805ba6314bd1fee00048c60aaf24e4728d13bcd1225e9ccbdecdc4350f74f90f6eae8c975ecaa456c2075c6702682d717762b4580f9b6544a30da654e00ea3d1cc6bfe7b9b7040662cad5af533927be7e40ec59591fb7136dcc682a017ba234b4d30e6db3b2082208dbac5b368ddc552e7cf2d0ecc1bf3a1d26be7cd5e6133e055538ab2102443caa1c717f9288e8f84064eae80303870996109b74985c690d4a16a0ae0baec26092dae2cee23ad18e83cfa07c1293106d8545da5b0e76e8d5ec1b252d3695fb899b5c3b389e4290904ac809fbeda42bdd7f7f143ecb9f4adc2370816617300d6ae791c63fbe90adbaa3da884d44c4707e2e9adbbb25f79071c1e3cedea1a4b66c56d440f163d3cba14011460b1f6e506844a77e1d47d2702c4cc0d9de6f20733f2c695cbd91da2f9fc1418600cb8750659714c00526fb6f0ce9fb5d6154e7b0518202f638a504cf455d25be36b6b2cde43fd463eca60b2b74c4a0599804088235cb1c4987add09a15a42d3e28197e3d2ce9e6effc41f0aa7f17d72f9c89d7580e0dd6f0dae82b00568b076acdf3a18c0e39215cbcec775ba058682651e50f5e9906eb62561105f41e0ca8e2d853a76d63123ea75b92626eb8863198045853b9e77d0270eb2847d9099bc69445d9fe209aea77490dbbce8dabe666944a75f234f1a5b4643125412773f7adb944cb4f00c7518ae77756ddbc8fd5c99b7d3d52f313995b87b26c18905496e07269a8a2db2a2a146b582d62c3e0061d92c2c69602e1fb0dee1847c287eeb1ba0e44e60e7295fa91206a514b24a9e5ae86ecb450999b3e90c2c5772bec2fb0d91853014acc6f37e265a11dcd3f08a04f5b541cdbddd3ccf2dcda8dbf3992fe5a436f67322326378b3691b343774008f62270f4c81a997a6fa9707266f232d440f0980f949da4a8040fe5b3cbd077ca63125c8f4da21a9c6719069fa44e2b275bd195408b1f8608ce2f14b81d63c71a929ff40aebe2bed17e1c20aa3366c578dfd01193cef3513c42d7f568015c1a53280cbc02c1fb7bee2ba6fa2470b38a04c165af4ec118265993ef7f622013c3fcfba95260bd9e592c911167961ae3a5a319d0d0fc5c660cab0a8ae9dd54b17a43df551e048ea0b2b51c3c77ae4c7f17c8a723fea442616bd66501e9ede32921471f973d4d78ea1aa132f4a6efe347d13bd4f0717c8ec61631ec811d7ee278c67dd714cdaed169417fd2abb0d9828d28122062398aabd4240bd4a1c111e97acae1121dce10421123294c8ca35326f897126ea1d36a8ecf813aad7dd2d1d0bc7837b31546035cc29c051d127716503a6745eb8e1bb150bdd0bc4bf2deee3e13df00bc1b36ee66b25a4d49cb9cade961994b7dd6d513024e2a266d30ca507c7dfe11c0f74a86ecbd20e7496448aedcf74ca2678f2887349c372d3d171cede7d220965371b543de76e3d0e629da4d0697e5d852ef53f116c417baa0ce3e2cf08926211809b2f94686bc88b68279f74bcc1dc4215d7b2c53d2eaa64852a02247f51d7cfee76108f4649985fc4935c2f557ba24a8e88318ba37f996fe91bffd256862c54f40e08fe98b5f2f0a1384d92990f5da10a9884021602a6089d21d0c324f6059d347f29d587b794e2ffc8d5fcb6e0050cb44f798e6742456b1f7089cda4d72c676b7ef2be761ec4a3b1b21fbe5abcf9a13234ab09a6e4813649bb6d112aced51065db899dd9170f89efb0aaffca01f49e5db7f09f877e2bbefbfd7f072895324978c9cedc03ac8553c6ac972cc0c07169a4156265b780fcf0fa7d33eccc2c6526514819d284deeea2738af3eee61c6c2c527ecc62a9a9e7e4437fa91298a3061bfe287255b6faef44da00cff22fd194523970d5a7ea80cf8acb65ac773abb32f499320d88a3103998ce0a71dbc5abaa9000f63d334872ccfa38837ba881908135ba47d868a90bed8465ead588c57d12d6189b01cb0e36571c32d98c5a80bd9695f190f8fb7b3603f09ece676049b55d96720f7ad52234b185af13cf415cdbe30b0b415576787b97e48a929471cc88cd41e86f2022945421dfeecfb8942403d0c709f9a6ac00a5f99ef23ddafe67d09dcfaa3e498aa31471bc56f2228fbe236393a6063be5deaf17bfc49b26f3e403b5ee88315fe893ae754e90f19ff24dae840059015cf9d92936a242d170191240e396d225d0546d9b5afc1d41c1c385c4339cc59f66053462c0fef5b61e866fb444c68a77944db6112bbfd3c44d76b64beda66beb4b40db637bc1a014e9d8ae64dd220cad6abdb77047ff793bcd5c5bf8a65f15e173a0929043e3b90361fba7ae914ddd6c14e8847b35d755d7c631d2688e6eb0df805a04543f1d62688186dab229a4a402c4a4605663361cd7582a2f995477a901861179354dcbf196816f5436ae4733d7dda494b21da7ae140feb73075cde5489bfdcf071f4293eeb0a985c1c6156b218910ffdfe9bc021e8c570fb84630a629d66ce2d197f563dd2837258416af2f7471a8f991ebe8f3c360003dfda9e6bda3ead5701a61c42fa0f11415d5d2bf3f986cd2bf75c63b91b420a9f5e0c2eb5e62aa7dcb05f442c1a913c375f0eae9c35e6a0570477ebe3ff6447be8e30940ce6f4debac41d23e3c344441cfee00bd37bf3367a11ab954f48043a97ba2fc2d921918654c865993bae064463e01921d97db6e51a04c372184b6db5a91c39e5429c872902c486696c57d303620b43340d49dd1830477f7f00e54646e7c0a1311f31414e268fa832c037570d95cae8674557b9bc7d551e822854b4da4cba1e110f9265b68fdad22dbb346dcea5abbd82ad176c565e58f5b7baff7d2acffb9c5fb6bc09137549664f97faf098560bfa9361c50e48eac73ed1dd49bc7c30418d83f6228fd05de5afca4d8e7915e86e7c53c02ec9e31db14e8454b58a97fff3eec1b94b7b27666f502606cd9c3b3c61f892eb4c485a77cef9249efb987d4e637919ed6d1be598f76facf025d051cc275c6ecef8866c09464d0360c9bb37671e906614ad26877da130195173c74deaaa477dcda0b309e0471d7f3870405c5a7b57242522c2ec95d2822d61c3d64bc06f82ea242b6622cac8efdf1cfdf96c3c6618be12aa1df9d5a8b3f5f3a20dd523f9dc3f1079d1869d75ecc957e4a9d30b66171f9f820eaf5ef1d193176587188953e59a00aab5b1c6b0ea56ed82be920ca91cc3e3120bed37b6bea82b16390d469ba3586ec2a27fe7b12cbba682b45b1e0d5895613cfa9f33fd8935d08f07cac6bdf2a985862a78219a2c37a0a62ad32a1cce7a34a9270e3d06d94138a05853f9bb8399bb1314680e519f40427d2b9c623610684a53a917d5b66bd3ef7184f6ffab6c4a3673a798e787e1f2e0a058b606b0e5f7c320c619026c4ee86fed7624a1897505c887123807e8e778a85535aaa48348785af4f943290d6cf87d13196d1384f1474729ab6b6625985f5202578b128b3d2ba0a3954eb6295f064b2b0425eb807ab8abd5dbb5caa7962e89b0b0c9d845e69fdc1b438ecabd0bc0157b5cad66a66c1bd290a39716bca24141f715873cda66d1b33b49615ddd8ac282dbfea20126381ae4bc388cd04319a2acbf0f9af67bb08ef5817ef5b8194719d177194a0378cd4b9a7dcbedb476bf39f6d4b2a2e2564a834d2f1f0d505846556d9b23d74c7f01d0250056b08683fc3fcfdaf157d297f19e275925c5dd8980e70dfc0a83341891b1d49b867d8b023901b648a5883c9f8130ac08843cdb16cd5f9048cb479dc1b2480f69b78dbf9d4782a249e57014dd3f1e938f73521dbe8029c5a66d70cc01152c75694078cdd5f9988b0528489341c2b084f72a8384e96fd391ffd226641ef824175a0ed20172a17d14f2dfd03eba22624a8e8687e39e6d6b8b9a815a923a8761a1e7ce4ace9c6772d323d475cb24d42caced3448c6bf1a0814d7d46020048d06dc655069b6cb20a6a441b230cf87b4089a7ca5002752fdce2a05366479f53cf2e4a90cd8de3841aaee134fa99060ad4d830166dd82a709ed4f1da76acfd3927ada1268290d502449e107b3401e01aadc496ac0b4e10946cc9484d6100027a98a40a2417c011c6746ed3638a99dc0a0607e1a3bfbf2af7ebec389f76c2236265855356ce07e43cbb49d31e1af87fa23a8c0586fc9e59b11680e53e4d822aa916e8d449e7a3256c45f561bc16e985132054a4d2f96fe60177669aa2ba904f52698c01b1911fc5a1872d5050352e01362b5b226697ec12912c8168bfd7939314a4f1c60080c80edb14a400a4b9f7483247603e1a25111ae51c234163753267015ceca52e8119db85bd7a026011b8999d71e0f4548ea88053e7cfd4f28601f2eb32e8ad4ae38615c15512e460ab729f19625bfe3f6e4ade6c7df0779bcfa30b2dffecd0a2a65ca0dd1bca1faf0bc790269404a11717a995f1e294f445707831f102911ac0d282c05b7c18b6402ab108ee9b91dbbb604e64150b9b10fefa2398726997e339262e87682c421626dbe2e7276786bede0023e21acbe78644cce84a1dd4e5de4ecf052254ad5bf3dd9f8d8e672b3b44aa03871485b1907f969bb6640f2ae1d22bd1aefb38f6825450c5c3b8cdecd96b5d7ffe23873162903bce8ae5db08a20b00e28757647160c3dcca543faae5e509e35219cb7e4cce51d023b802dde1d747a4aefd9ca4fced05a3f8a60e334fc5a9f5c7bf1a6f1c6f9be439c357f29c580d703277390504084abc971f460480c8ec5c13c52f1bc43b3969dbf4524114fb9a7b9952001204239302253bf78bc3cb594fab9134e01453652cd39f33c3a8fc46dd5921c38b0cf2870e0a6e23ebf80208f58f719885648cec92b28815c709b5f8742b4c014a94da081925edc01697b2855b10bdce4c3edf6d0653311c62a621c9594a9d39ebe3f1c1848d5e13de9b7d18ce98f66ec856e27117b1b1bca76a61c97d3ea0479ca26959afccf0dc90880746dfc5761cdf6b0d67eac438861779353c41f0b33e23938a5b603ed239f96cae9e71f7e1740dd4b51b867a9a767577d9a3d2f9c1ed2687af4495e44ee11d6d343257c227499189ad3a2866790f9b79c8ca71af139dd520559c42bbad4ec70d84731a35342e3a0074d8d57230afd457d1254e8c0599f7d957d9cf1ee620a8079af6c9d62dbaf8065193979f2889312e8cf036404271de6375c9315bea1037d11435cb3a4e3a05b6c97d479ca66ba553640ce678e8f65695adce04d98ee48d748efaf3e5588d3dcf9ee01f3aa6ae86bf01a7ca355c0076a8f2c7340924be82c29d503d427c8501aa47e10717a275458e648a47c3dfa04264999ae361b88a2db400c1e554a3137f716afaa207624286f24bcc4b732a5b562c827020d78af84467ce18aad4ccea7e7147262ae88437db968230810b348db9aa28c3bf69affa6147b3cb7001289a76b1b041059f1a440e1d32db57087f94593b1c4a076aeab2057a236b295a371ad72cba61dba1ab7e4cd10a393b889372a65ad8f0bc41602e642616d463ff6e82a8bc9ce5232e40676039ece0b4bc0b10b4775e013ff5906c8070ce18c03b898264c28fcf0bec7415f92b2a9aa9defa027b13de5597a6959bb1ba6364d6e26b698008752ba60e83712916ef905537ca9c55ce33a0a8c4817f4a4469348fa630571a7b7e38553dad220d82c008089313cbea453ee1a62c295941a33e2eba6a2182955c6f92f27de1269a825565a3731cacb07c77c7ea0a58cdba155be9c0a079763b78a7fbd27d9f0a5dbffa361d71b877f602348b58fa68ef260a7221938da1863aae1ce007f50f4c5fda19d047d5d594b8b0ccb2aab5b82be40d0262c9a0a38e4c1cdfa6e2ae70e1257f0111153d6b6329008fe5d144f8c2289d4835891b5370a8537c4a31c290aac703690ae65d273f350f0d23978231881f80b3a03594ece499d46eba240f2f578b066b487cada7e7e4fa16e41bbef63eb501eff9592dcaad7eea8b2b4717dac4ff306472617a1291cc0a9f1fea764a7bcd86da60690bdab2c21a3ec3d0de16a4266efcc67b573e2f4d91992a7c107341989e61699087b9bdfefca0bc27f49360a56b8e8f482a4380c5a232748bf10c54d486f43b09db7e22e79aed68150230246426d52c22759f32a5f132a718cba1b97c91350d85029447cf1d7b137399759d81106e82a83ca6b4e21009ad106f40f9201c383ed7650dbb92fe0ad03b963bc3a7e6d85075967fa4bfe10a05e976b044fcd07c7aaa5bf4bd2e8155012685de03553235a9e91f8087326a76dfd55aae4e101646b86b910ca0b40d077e21c655c802d68c2e76332619041f42ae6de9861b0615b3930233c958d398191eddbf69b5ce920eec2b9908512666a6d1922d83df1a17668ed7f58765bd845014c1dfedfd274340ef873d84e760ec4c2d5882f58061bdb2b66fffd3babb94319452ec3b9bafe3767c997bc3ee5f680338acbd02d71eddb79b4878f847c4c4af91232db1554a2ed37f7abeda554bf40ab1ba4dcf267627343dbfd0b38c2c5008059311097bfa193d060259ff4704efeefc3a7ba69926b0f2a2423496c68d2e8a922c05c50b9e46b79ccaff138a28f2fc16f382697cb93f5a0929b09e090b213b3419797820d5a12b3a995917343536a10c11d60d4adf6f21a83e5bce49ecdb39e0f4b74fccfecdce0a45b6dab81408d243e3449e7b6aeb370e98a812b90e8e86d7f00520a2f9be5f65bc18c9086fecab8c1f841bae8f3ba6a7d1470d4b772c5f45b3552e43d43e39f40194ae023b11128751c1f964d4058ee22089a043692d791d66c6403cca898cb17da97c17c4bcb6413ef369ca02f864d73421139460bbc57caa022b61a7fe54b2025844957f6782d4c4aabf9601307a20c4c35d942ca8bb029952f10182d68bb8487928c7e2c22bf20da5a04f88cf388a5f21e1e5366f9ce5d41c591a62a9aa01de55112c5834f868187d8a6f23b4aeadd3a5b894589777b8f6fc45aa335c3bea84e0f605ea35f9f35fc5154c2a53dd04493aa349ee6e0307b78e88a43b866c424053d52312acc680c041105552e12e8c80fe312ea293bf319d482c9154642da0161f999f3e15b5bb2cf0aab32590804aaacbab418879d07a9960c04828335dd11f842c87bdf97b0cab4ef8e373d1c7d020d79a70ed6a1a90b7643aa91403cf3396fccfa32d060132589fd86f767aafeb0a78ec377e2bf5acf4745bbf903549f07ac6082ae9f5aa50fda0ebb478727173654179a15f54762b3b266f4db02b70be2ff34bce9451391a37bd0238a4f4b985f710b8a7e95f40e7236d2fbebf777644f0296fef52f31d0c0322912cdd17dedab84f959e889fd26872f992f2064b062cac51b04599d766467c0dde21d2c55fcd818c98cf38103a7a1d724eebcc02823011fe848fa44e7e16ccad6c3854cec8cd7195d325114b61e730e3aa905992e4c6379f49c7309069b2dc1f29d939f6bf8c1d76bd7191c3450372f160a0abd1a80a8e9955bdef793cceb0f6b5c9d97e9d6de693d8c3790b050025e1471b4f504783b57c558a90e3dcf092fdbd2cc79fe8bfac0e1503c1161f84f349289a5105a31b2619d8ed00f67eaf0a2408be914428c1b2430729f8b4167826810585e5a43bf35b75910d039682c5f04cdd0d36f90acb89d46e0097742769a04793d8b3896c4e2ce6708f5f3225ab14e2995268b9aa93a4a6b2b40aa4467589713677a16a04e62dbc589016d2dfb80db68422091771cd68a0069795d26f558a969c336b5c9aaef0eb7f00c290de94b2647bb36dec31125c018285368dd5b12952ed8120429daedf93af0e2c6e46c6381cdaa84cb063bd178f8bbe6d0018e6385ad07b10ed00024e9e23b5143ef3b35570037647ec3a2d73b6e1a2a104760583b61239c1639d43e451164f0d0d3a39724e194111c151dc7069688a14f9119e3658bf061bc12c94add785961450a673742095751fd9bb57959ac963482aa5cc57f833126f351700581302e299b8f672653d935c2ced0dc84aeb14318551e4347dfdd20442562fbe03d604b3708b2119fcd3b569e6c252dfa6191d85764ce461ccfd6585c6e13b573614301fb4f454142f3d9ea0c2e2f53d09725a32874da99cbaf3a9437271f2d27b0b82a0d5b92a076953b5bb582578d8e668c6e33247b4560a44e2f5079ad05920722883089fa2d9119dce11b99b1801fe48cda497007e885ee44acfbf3f3442447482be9c3a55052e6b951d525d0e9ada8e4ac0b20bf49cb1e5f8082c7e75bfac5a470c70ab417009b20d6845c1a61c2d4caaef71869f4bb4508df16227932a616a92cf8f8c78e56755cd8bd2382b4fdd6189f1d7bf7460c2494c240738b714cd9a95f66d14c530298dae4c268c5f887805b32f61674557326a43ba730b9c9434efae143862957fa67316607e09d231d8b03206300db4c61f2fc2a6c977800865670cdfd851062169412c440d328116edf96a1eeb87256ff2cfd436d966e87e24c8f01d0e1d90f50f3847fb1934d12a7e8229c024e91f98de88dfeb9fabd38bce54d7a587d08a76025ffc1edd4535d02e78eeecfcdc4f649ee7378df93b783258d04324ec12e3275d017134ba611e3c070ee5ae39079b93d38d9a04c4a98df224c81283c21ae6993a5504e0a2f9b45750de44bdf243f4af575d359078ed9253cd838ab3f5480438f04992b3c3b029a83cb42bef735b1a52d6924aaf786df83820562213f98282f99b128e39c776284f82db5e616e4228050bc20e55db1a34fc14f70c7208901e1705be9e74e664c4b41d1bdacb6898119ea10e6b688c3eabefeb510d20502740baf19b1195e162cf5eff99f1e1faa418307049e944265ebd90a5cc5f1f954a252b44232d55d176b41ed3bcd08885ec5bea281e08782a248cc368273af2028dedf639300d2837b961e3d69e3f595f75814e97ac9377fd67b20f638122bfea76649f0642a1eb9fceafe8dd4b56b811bd724412e4c0179bd028f7a6dfb74c89b793d90882f9141821f32bd3b9ad8f12927ba4413b66497706c485e9e04e86d58a2f3a860833c4e1583d6dcc306912da1c809babd76bef13f2990578a7d3d9407c5873c1d922292064323f7e26afb5c4e647cae2d76d5ed6b55ac2842a61b5f93a2d881ce2ea504b185e9c7a3f1b5722c233c20b78532260b314d07f8d0222de4a4bac94f980e2238885e550cb13cfe2d50c125d1e9bf1584ed12b645d4c5ffb639e2e025c9163fe85decbd6dc89ca07843cbd802e824a517399161c4376b72de9b6205f291840da370f875ce230ddb5f2c8a455f106828ac6c9068cd655f65af5641b343d83807f5a06d40095406266a9e69bf6884c5f73da98818c0b0e04a7d8aa8c046b5b41f9f5ab0de03026b98382ac48f8fd547220d59da6c2eaed8c906d31b3efc2dba5615b832f75079f54448066fce7cc85faf5dc553ea7ada7f9ed614c451a36cc661c6648d0e6c03caadb2578f6fe6230ec137f2061d745076d4852617aa5f904fd7d6b6f58ea1466736193a0510afda253bc10329566a2583a2f889b8edaccaab912f1c179c8cbf0eb9926b8f50b8434028bf00b095f0b8b37f21d3d35ff50efc5de2cb4a1cf41088a95a7550890f844b2c94acde6e2d7c5b12ab9e959a1b3cc555af7c0a4955af976cd8dfb969d99e807a77a18d96bea10a4f7fb395551bd244e73fdf61d3ac51d131d069c941c043bd658abb93beec7f0b76ddf2c141e04c827a2174859f273bb9cb8615ce36a1bb6e47ddd450072c3696d21c3a0354abe1d34325eb55b4405b0532fd4d350892282cbdbc617196d70741bd956317c8dc19faa3fdf4dd09656aa05a3877cc218b8d81b01ca2447934c4262f4149d19249431a433312b21210f3b92e4f39445adc2b0c79c4c11f7abea088e3c80027fc156ad270e3a6a4a9ffb177020eb524ab9775fd8cb4ed5c27225e98503fc616f3b603ff548ad7309dd8a74f7dffc40a6f115da67c91f778eed3e39ee0a6cf701fed08cca6b874b383820abf536c9b69d9156e66cbd97d2e655e1e74de7e4f932653696a90fa1a8562a0e3b32a24ba1bfdaae14d4f302f764248872e9d9ad346733d4f1f96b68fb2ebf053a12676a567f01c25998f1facf6b4e5616870ce393daec17deb2509913d845dfc67a63d4f2ab4ae970d3a5c3044b653c50e9ec57e81afcf84e7cae4c3fa1bdeebb8abf610d767ef014806bce0c86d5cf0db172dd965a61129aa022d094a2a113ef289d6497d1d044c0e6885380d13ddd54a0f3c3f831042e8526e61959103d28f9f8a164e6373d184960959af18d9d1b1c2c4ffd8b75811d36545155cdef03b08b875acbcbd7231d9c7ff5e0a866bf25612f9bf7b44c08cc8dc9b4827ea09cf20e58cd5aafcef047a429f46514a545081eeae012297535344fb1f0e0fd5254a6d65df95e4edfa677c5f6d52c88a89e5fa529485efba518bf013a52a05e07fc6a38756fe3a3347cbc680a99b672e659639a84eb063740620e111fb681f8dd944ad7c3d9ced18ae4de6737902fe325162c925b89ec87c4ae0aa5ba8cb0c0aed381591f97ec95ca40328f0651417f7ba3fe2479891d58d225189c126f7279282cd73b08e19e22b9ffd74cb46ad40bda33f51922760c325e8bc02273a4c0406c43817d8feb83837f4b1109884234eeaa303a674f88ad9837b1db3772f9decfd0a4312f452f6e0f54b19db80d09f8a15e1c7b3ddf0cd405e6cef521522d5e21206594d895cca5a859c6ca9b99e343c35660776ab9275960854f5185b4f8b3bc0985303ce8f6341ebed30ee8333d94c057d4867b8da55b098edafc08e80e0c2a85d10c878b752877df49d77f0e049d6d614a6e4508db94e1e14ea958efdf00d8c02fc6e222282e9f4e1d1256b5cdc31068a18933767b6b2dc2958742333723d1dcbb81472ab295837a1173735493ad8820cbc1c21a15a208f070a44e31b6e640d1eda080d77df958adbaded4f194b0dd2745ef46c3b9ead78effaa8b28ec6256ac16893e728d89a57a628b5f63369e881e717e77c184ff6a19a6f63f608fd1a265fb34869251125b6ad2349c3cafc7a87ee64f40f132621e37e1d42ab18371e988248478c278a06d42dd98844edb4c419c26ee9c57f68a1a7c5dfd9c9942b7ffcabca06f6ea21a32bf87ee574d245ce2184113f2d716f526b12db6daa3b5eebb3265629a1bcf6bfabe36086fafb8153d6e7160fb445c5be1e1bcba833770a24527f312d78e784c089009f2da9f9612b72855e97d685858927292575270a490d122dbcbd929f49516b4a53431053151508e39107afb5ca36f0ee88133cb153a84099ccba04b84821e8e1b6e8a3206a8d95f5f38493040a990f7e508a7c75082f8da0c10fe049ade83cf11dad0cdeeae42ed36d45cb52f03d59924cafa1f9220a8109490eb73a103a0fd5fbbd47163bbc215146f3faae993a80091c77671a8a69d220e4961ffee10d077b68572d433216cd871a731c9826f2efd665d2425a0ce345356a0b611ffa60400246306c8192a920504923c0c6bf68cda6a727d66f616d415c10377ac82315de1ecdb9958b2a37eafa4b0df93bb921585690c3d3847bb677732eaefd39361430a8402c2d828cdf42c7fd532556c72493219151b048760ecace86cf45aa54cb4c6428d639f143082771925cc855ad0452106c528f11fe918b5ec7b105cb1f020816f5ce173eb786313172ac346c58dc1f091cc3b630987f3274e76ce0b1a13e4ad113547d270dba857ae30914211418d3e6920bbf38e63ba06c309952093c21e960d5870de597fe022f0b5de789c0debd1b1e3672607be8484b86cd89983319d23a36be4feb7d2bd0349ce870dec4cb0bdb810e1269a209a1cf0871ef1c0c70a52a5737e9c1fed2be37046f17b4ed09cf02894a298c3144496b6d949b42aed3c2ded7f9b53a49c80b6083bde3b2a71b96c161e404bed6e4d6eb173178117897c3cc52b18630b8fac2bb94f46758356f6d43b5650f92b61083066668418d70d5bcd31b82bc8086d9dc8f63e2f83ac461bc864b6f61462363674d0f6c08376af9d486a3f68dfcc2ba96dd7095dd4b2f4b92d113bab747328507b1f44e077d14e01cc461e51e9872094da47ae05c18727275bfc7c7a800b57b63b31648c69767375c65f7ea655932644a77e6886944cd3af17acb41ac0ab132904f62f12f2a6c66f5c9491376ccf787046559ac8a6a1fc2ee24809cf9cfa585fd5d84455d694535d05d5dce6f10a5e396a9ef6fea80b12816bdd35d2405581d0cb1d8caec6c99db8f46140cf7454e15a9d0e377ad6eb8c9fceaddb204fc92f4ae31d38e6a85e03a7280e74a3a681fa8e2ec7433a9c221d59538add3c57e617dd70077fd727883281d5392be4a60d251e5025f070ee0bf0241a514e7a2c1abbf3bbbe92abf575f64091801a1b1908fd57f75a7fc94c870d7af3ac4452efedfef089eaa99ce4da00e8b3890e3b581a87360a87c23f7a9e0c5247fc4efc8d3b8c0fbd3cd807a1a217509e62401b85fe45e4aece94eb272e15c417bff584017196e415e94a036cc9c1d46fd00180b3889c7860da5502256001023d2d35692baf60143598503e21e5f89580ff8374735120c563453421dfae0f19409df98045c304095a0a01f37ca6f94a5d0358446dd691dfdd151b34d64ab408046b88b21f886a72746fb2f9112fe026b0a0960bb65dd67e9ebb98caafc6def81064250adf202a9665f3d6b76da4bbb716276da13a6318185414dc6fb656f218ae25b4fe292755499e4d7ca24bd76e5b82efe905879f035a9fece3a9ee251db56eceeeb366c4262a28356ba098fc49336d49c3d78ef0646cbe644bb7b3653e0d8c379c50cb7e8b89e046e66c6f2a488cc72148a18770a7510f543b1a970c5f79d1971daa05d7281f27d84b18ae7f07eeecb5f1f1be2b931388ee1b0dadee22f411d0f2a108ff8cafd95b03ba709d155d17cb02a9ddce6170dec19425d69a06862bc8fe757971fddd28e964dadbd450deb6eb119c4431054e8c462ea03244d06bdcf8568377e10bcd16d2ca834f52bd7c5b72f1687049a8e348e9e59dfc08ed5d144cce9ffdc3826cf9d299d2fca650228818fce7f5980d4423a8937cf6010502c7ac8d28052f07b02eecb8b62890b413910df2667621d33878b79c3bc989cc1fd1677c8a699408f51303dd9bd1875fa02db573a9a8e025d454f11df6b5432f37b48f51a9ae2581c54b2cc3c69954ec4d27bb127dd261672eb5ee52ec27a177c3616cd743087abdd88e85918cb785d44a742a3a7225dec32e0d985ee66012dd23d3945a77a167b3a982489b4e94a7742668f81cf713c39a04e2674f99e959ee9c56c56394cb730db1f262174d57548a62961a8aea90f8beee6f01fc22d0f0593d4fb811c71cf424f80c29676715c2e79e60cf39ddda051220767e93cd7fd9b62d32a0e141127d3dc17353aa63c12da824ce4eddc916e865dad74b3f217a4522f170008f0e9722757619f535d4664a7632f3fc57b5760b787fe1dca186fa82f4d2b9fce6ffa393944b6b0cabf00632747f9dcfe251be42543403e398ae946a3d3fc97ce152ac5b995ba958f19539c21548c242b98b48a8410f59eb0815e95f2222a5b013192325ff167b07d1edca9258422ce489aa7bf7f85e31809e465b9fe2a2b82da1ed7d41b1616dfbc791ae0c280b32633df92bd11fa003f1d2b7140dcab21bcd4773822963e58fa2cb17d01dce63a28dda1890bb48c03c637cb007e2d6b1b1f9e2832183d18eef0bcc16fe0d06dd8f2acb8064b47efec9177363bc82a2c1d9599e4472412494d832812c34b850be4ed074095a94be1fd7e4299a6618d78640855882b42a9bfb37b1a80db2511fe44fe9c6b1b54390910c6f3aabad180fbb191349836b76ae1eb624627900bdf4aec00c13506f26c80b5616e3fa93f43414143bd16032616761a086ee1cc6babe0475f44ea69761aec3669d19889915e1a9cb470ad996d9253ffc50f06250fc6dba0b2ec34c451d08026d6c559aa7a23084c3d91aee7d3d135db99b1fd50a64848c2b12b296b4a420f9f81ccd295407d67e152d8509eb980ca1ef17b80fdf32e9a8edfbb3cc20a1f2cf3cedfce0f28d1321580c8199a15dc3cc40bbaf6f29c1de4168b5d5c34c4b74e20c691b233b3fb18f694589db93fe11a7d3500d2af02a0f9b16907ae42a5a3e09e0a777255fe9ca9573a44468f271240ff98342968ffefd676030c2943e83b1c30df6a5dc2b6efa0ca0fb96f0f942338aae21bbdcd063134b224b15515ed2dcfd273ae6d799bedede42e1b5c683bc8832c1475a167d47f9c07b80a6aa777b1b3cd96a3d97350735d50d5f3c99ab09167168c07c9a70ed82e09ff43d1fb70c290f8c45638d51f32edebc9c71b2df133db5f97a4637abff086169327c09bee4cc870bb71102323542558917ac3e76c21abb2f0840c0ae7fb550853f260a558e6616b12ee16bf4a8efa50c6ca0c20aaed02f5ac52bd6686c82a22236e14248df4b4a4432cd4fa9c3d84be2d347d407553f6080704873e09eea229edf13b49cc312c50f4b44a4d0a7363e485f755a6f2d2da61f3615a36afb20af345e8441861e3d55ba97e83ac4f042380d0a7070de1a8c61c9e7684bd66b75cdefca74e91ab405dd1831b85d00bff80348b7dbaef19b38dfa2ce3dcc42fca4d2276331fc81221473a0cd1bca11384a04255834b21f903bc2e66c99d23cab8871b72a2a0e069ae18481e9628dec781bdca7755cacdfac17aceb16767318c85d387bed960f5bbf07439c2cab7ca034189cbd86f736dbda3fef259351c992a04c4cf502371db9c9e892d8add26881d5c91fb93d3cc295d51fc1eace74f6c6a048f33fa9809177362c3753303cfc032103bf564525c9c24a8e6b25f0d374cbe8e9d3d78a2226eec332e8886973b0be2f260863740b2e2803d7b36c09feb7c485102354820c9d21e72b3bbb2fe5c6b14671d6602669a4547420b0ed87198cb0e76499a84a6ae1e72e94d38a577fed468156b5a580e68252c9fe39ed132cf0628142b2659d48e6aab560d8da651a5e4885f672d5838725ecae0ed515778405a1bc0712e0c2ca7e46443d03b5e8c9244ff1ad58cf2b2c0d003970e94c143c820f8b2ab49f7041ac471d56cb2de7f9e9ba401f2496a380350f61b11c2857a9b86322299cc010e5dc17f761a47116869edcf56fd9f40fec5a041e2ca9a98da6a0c151a809b0d63fd67878b55dca745ee9e0f1b8ff3c07f8bf484a6aae383bfbb74518bc76fc42db3535b92c599abe8cefb4273313afcc4cfcf8cb22fe393396f70b1262dfbbe9a2eb533e343ee78b1afcef89c924fb4e96566e4a8829e50d5b59bfd4bbaec4149ecca9310518624e72c135a17ef1846f7699591cdc46daae1664648ab6bf1d177b3d04f243fe6fa864d3fb434149002de99917501b653e2c4cbdce2bc177a2e283397c02f8b5963d09008cffb4e5bdd6641d35c62419f61b8dd05082a24173bf58dd637c60d88c6882c15e6d7e7cc9b75fc88c89b7eae803cc0228960e5d1986ba5cf7082201b35af9212827e222636ff49700af81109dc4c83ef25264ee785e45e20896653360362688ea10c5823611b078fadd2cbf0e13dc16975350a9e816a3301e8c39cc3938ae9b81a8dc0cc87cac25b551eb8aed6b137ce207ae17c8d36d6ce40b720028719f2fce7bfa67074a0edbd8dd8b4959ca91a63cfd955de02d048b7b4db77c4247805ab2efcd49bf4385ca66b043cc7ea9e0688638a8fed950e8f0b5b90dea54fcf44dee0555c8c64656c50906758c53c803850fcb802e8f0b855827a374effc875e75bfb5e91a9d563052d3ce7549c05e045baa507553b816467e4e596835051450302981e14204be7844af68b7117b2cd5a8301b71ccf51808ca483b098800a894330e8a0d8916b791ed5434f1490ae46122d175527ff3cc20c64c96be67c3762a2db3386c322c4bd0138efcc817f59a6a0cf0c4c880df25f6b99c62116ef2005f4369d879428114f96718e0c32b56e164d691f11e4350748c47e19189168739440b9a289ad4acad7db82423ba09c582c0f22c53ac558fa23b67ce40796d22a71f0bc53d5974569cb1d3ed96b8206843eda96581b0cf9b860b951fc008a7322e43ac551da479c7ce507204a2b325b1928f190e5356abde1ecc964787c7a5d6b621fb1e4eb87c988f7fc008fed105fa91dc3756aafa48f18f2921f28d526be07439a2642d0689d7d66b717c09c224d692a95fdc0a067d052610b6a60529177d918fdce4492e3440bd9bce1a58fbe3a9a017e9fe9196ed8a5c6727a1f3e3e82d2c0c990f862bfc4d6a82e5058e2ca711f8ce2ccdab22de27505e401a341a5983794a34f7d144364439729e331651a8850b0a3dda0030d3b857a6174ed0c2014e6a1aa8e217da716088fa36fbaff5d1eb18f24a8de09886cc02f69c94c588db2233ede1808cec7bb0d18da30428c44493d46dd49b9fc0cafb38fa046981b3df6124270a53b338c1a4647603d9e066a2bdad534d6ff844d42d1685f604fa0edc50df1b889f24b8698f9283bf668c9ab3f6eecc031070a442cdd4210f3ddc3d983bc7dbcb2cd7165b509fa6a048eab64fedbc027f226daefdfb6c6778d135a0c0ad2cad471cb64eaa87663f880534bc7eca50aaa125da1dc19e434864e65ac624191ae551dacf51247a66cf942b8948b1e94165b38d30131904cccd5b6eb0c81cb23c7a732aa9df0902fd1d4de6d4c6010acb7c57ef8c94cb5ef9e5c875dcc66313b572ef396e9c18223a19b2415a83a7fced1e3a75ca31b68e61fa31a7365b020dba9a2573ea380f98fdab3e026583f668ee79ce68f070a7fdb5866becb05e21fd954255847b2b9be89d5fb37502d09c343560f39806a5e29c078bb7471a8e1d8ef82dfefa082615040091d2fefb28865dcf65e379f8fe9c2560de57dc1b07c3a82cd10c12360e04d6071fa08426f884ffcb43ba25ea86eacffe4ac671f2948b462562fde4ed042d6d94a3cec4fc0a39964604daaeb648fe3dab22d65817cd9a4c9a9099bf8b7578ce8e4ab94dc511dcd284c91388015fbeb66c3f3e86e2546ff4410ead0920c80ab442122d26d49ab1836c95a5546420b221e0b096ff6f07effb6164377c8f58ea4bbcfd0d55ccad8a71fc212087ff11638cd7015d473d93ff1313a63869f7463c8983ce5be57a6f552936a9ddfd50f1a36118d3a7ad5a6b4542723ae92dcaf0f094e92249451ec7888540999b832844893edc9e782f539170459eaefd631f290d0553a6e053437a2c0eb89dc21865fa5b10a16c44cd0cccf0ac752edfe264686cf526033aec8aef0f6d320463030ab8c7dc16cc373602640c1d0ff1719d3b35619250aae14c8175d179c7f31aecc1492c2e852f8d3643d6eed0c06f02b66d32e95ad93004aa768f7853474b316b27d49cf7f804ec436de8433aefea8be7c7ec71085a9f1a216344e56dc2cc9e7011c4448d5338baa9f6c352b420ab38fc833530767926e0ba10ccd004091f43316e59e92a1581cca529eaf4aa1a1793249e009d13419919c0ae8d58ea71567fe8e795823999faef838b96aacf9647dd14ac150bdd1ca470911478600a42b14ae6b18c1039cf6bb68c69f320f8df8c0caab640940adb1d7dc785b346a7c938ab391542567e82577b6c321f7e67155cabce5e2125461d0c08b36d459c8529a07923b47e6e270322802c7ab9c1c3d0a87f7fd57a9e4978b1c0aeb86bc997b5985f26e30627951e4c8f222b08deb8ec689981bcb818fb7a4104f8e8bb8f4608664700f02d72574e223a4e0e8dfecee99602146f86f05be4eab1145fce3c0d83cd76daa20fd838e40ecdb8018294786b76ed9a5967a7ddb5783ccec8eb7553023a2b50d06a1c40af0527d47c8e30d68d1b6f973077891530898100224efe87a9e2172691ea91107a227d0bbde2e0de383d0107aab4918138bc8cda86ca201f39f03ef2104f562ffb0aa887829e05c678d6f39c416fef0420e8d5c1eb1535c5a8906e80f4af45f1c01cc171f8850dc168c67bc7ef1297525969085ce2f5e5a84c127959b66c755db09d4b2037ad8fe935c30d6555107e9b7595082ad3af9470a2660fe4441d2be0b0c06ffd17818dccfd23dbbe6588cc50524b8397487a71e7dccf0cecd57017cacfd6cc175ece2802503ae6b0e0fe4ebfeabc997bd4ec82f1eb7279446f62e217b6f29539232e2086f09440935a969deb3c8fb2b24f82a64e95348d48b64ca44aa52483ad3e132eafe5e8d1ce675a80a19d51eefefdf5ce6bd0f28ee085224511dcdd9506721cacae351655e5999a8465bd41f3a1d18195d8c2b13ba71c7a94d2bf07bee97fe649240cdf6c3179f6786029ac472a7f4f77740b0d25c47b591b5b673188a344acabd8c8cfae543e0ae47daac426d9e7e7cff90079779efafe37bffeae1fb986a900e97d1194da2f9d49cb4375c4eb74b6a1f23a3122d5300589e3e7d6064b1a8aca0541764214fcf22bd5f21b1ea822b249da9a0483a1b51be8e3929ef9dac77b2e3ea4732e5e47dea573aa8f7bfb91ecae9e4bdaadc4995e3efe0d27aa8d1d61e409ef6402884f4c58912caf543ec014c7d8033aa489bfe4218e536ea1713fdaa8f3d804f90969f128cd31f519bad193ce75a679f92ef1b4ad9007f97e7a7cbf5c3e58a04a3849a89d05f762945dd501ff52758a4cd4a84338459ff8a7d74779f45e55564ca83d8fb4e2326e9ccc3192232c231aa250ea81207ea07be99c8592ba7dbb32a3b953bdc72b703dbe30e1dedd859fe94f24041f17e656445e5eff7a47cca3b1959953ae3f3cc58e5f9ad06dfc67df0571e7c9ed9f9ca9e7abfb140d70d645fadc058bec927dd852ea27e60cf3c6ccea1b21d325019fdeea89296a911b2eb0002df4f3da53028af7afcab3fe9aea5737a1be8ec549e7ec77b9594a7e30c2d1db0dc31b252da48fdf73b2a65cbde7227a54c81a4d8af1abcbf7fc3fb5bf6306203ffe97b7865cbde387daaec41cb6b79a0f9d4806c41423a4021e7a93d98781a4411a9a7a37c8299e5ffacb6ec670daa42b585f49e85bccf2271aaf428269588d32d249db19074c622e96c354b9174a69a85385c4667d4ff54f2a063977d0a6c3ffca6c0295f65dfd35f40957d65ed6998bf57d26ad2aeb8a93e280ced7484ebd73f3d01d70779acec40ad94adfeef4fef32232ae50e1be8aca7c77bfc3df7c74781df1b39bdb7fa55cf334b29cf5706bdffde86f7953b46bab4715f55ee7c7f7f0797dff74079f08c19b1313efe1e28affa1ee3e33fa9d158b6fabf4fbd8f0ffe8dd4f8fead7eb2d565ab86f1557f2355b6fa574f67f8553f96ad2e5b37fc088b22ba988d7f23f5287f63fc55b9b37382204d68b3f151ca1e466c8c36be1fcb1defc1a733aa2aa9c352242e2da933fe255bd6b34f679f0d7436963d3de2f798be077cef7bc2ef297dcf073a583255dae5e91e4a3ced998ac20f09a637bc0f3e81e987a91fb83e3dc1fa75dbf6da6baf3df7debe9c15fe87e50982a6d29d8783a822f82bcf1cabdca924b59e313f5f99caa0e5921f47325d2244925c9f2a91e9121fbb5c3fd7245409d6c1cb1c94895cdf006dfad759cd5eead0ef2df191f3be7992e46fac41df499b832ac92923fc2ac28737da42faa203982201248adcb5962477fd810a1c1537fc03154ca8c05171a3e29684480b7c071e8323f8129fe83b77d16dedfd12520111a20f29c22558621238cc74898f123bac7a81103e2358e2e303144c4ff0ea082b380ab5c06313610b92c8e72f8151325d02840b4412e031d3254098e0da172f184f4062091021c89ee9122080ac119e88dd3b1d1caa7cb0ff7b4983e01730607832f48cbee897aeea1cd6bffb925c06be0a084b043e6d767777afaf7359cf3c11846e9f855a0277808f4a424b3cc0c4d69688800625db12236ea914519114424b4c81040253fd10d5ff4deffb3ded0cf63ff2eaf07d7f1d6bf437053aeb704d1deeb7f760671dbcb765095a73d55284211892b8a34c8b6eb932d3225c938ce3b297db0f2fa873ff4561fc4f4a6ece5749bd15e0fa670f43b98f08e5fe1e6a39870db68bc027ddb9f48b3aa3de8ae8faf52975180be851b65f7ddaac753705760257707645fbfc082183faa469d68945d2ed8e98b8e1941cc93d54898ad86a50905a2bbb7f402674b7bd1d247b8f4db2ba264e7237264746434994e4f6843cefadad8b841d24072bdb6e6b7b4a45947eb0fdf63c20500083e647b81d4a3fc0f0f9c1c903b49d7697b5fa68db1e094baa029f600ec765d0a7da14b070ad51e9eb7aad358eda22a94da90b8b45fd765d616c3a6877be17f719f02048ad37a5b496a8c5e293fcbc18040af5a2f8a9b76489f4c607c1d3d791862983230de0871f82638e87572cfa8d395e58caf924fe0421863e41fc2401d71f53101e58de1fc71ae138e69406403f3188207e50d573a20643ba2028f10f69a904c14f5993e947193e99cab382230d53febe9186efc50f67f08d39f55f902ffa0d026c1ff760543aed19b343f97aad2e92340bec2058aa7fdf541b04f87b9a6faccec07341485fdc5af23c263d9916f940486e21d3a2db2e836d1231bdcda18ff782ffe5801f49a43fbc650fac99119055c3cbde83b9df3e79bf646ff63ecff3debbb7bcf96b8b8489ebd31a0bfb3e0f0e6e7b77f7e73b6a76b760cbffc4c9f77972dfb2450018b2bba7f029a4104377b6a7d34905273b77912f498031e7d6ec3ad096973460a05d7691432b66da4d4b2af03eb0744d8e8202d7ffecc98e2e0215f257ee50219c01e71d7537c3e71d3597bf7a6df879e2f759b7f67ba4a176018e33783efd4b5fa2e301beb03c3df4373d38d2e0e92332cd255287fbd9c9d363c85fb92386fc55db6e4f12e84c012fe796b6044b4908bd7badbde5b5eeee5ef57a056db362d4e775b70db487e6b15da1107ad67ad65a6f20426c03dc5d91c293bee795b4de7b733f61db1dcc22a49fb7f56410daaede9476155fdefb5196aedd6e4beff6a6b49150d29dd0cbb4447939a4b5bbb45ee6b1b502210baa3bf3dc5a57606d48866115ab4721df6ff0826f471a343c0ab47cf6e023df2e72d84316c36f1f69f078175d641cef21b289a43a7c4f3348eaf0952d1ad72b6d25cfceb704fb85aacf63aa0d04b382e8da2adf9f300c690e140eb098eb4f18e660a1926a933ecae998e818d1db0b37306237997ef8a2bfae580f66113c73dc5c6d0ec2b0526f01c24f65f54b674369461d46dfc3f2d461c1f7f7c1bb257658fddebff2d491cf925218e5219ff41be7a6f6fae0efbd0ff6e9db1d4a6be85bf2b425a533f4eb48439d591a3537987bc7be1b7118b53cd55e2bbc6ff94680fba96d535c7964fd7ebeaee3eb20bebff8fee30ed934d6d09443cca5b27e6ff3370f2ca5945a4a29a5d4d20fd96fb69de97b64cd38dedff7f62bc1538c8098bdf2dc21df3287254fef3c3febb7c131a7737b4d1d2c99c426cf526ef2a40e9e3ca00d6a1c79f51a47361cdd7054e3a8c61185952a406b1cd55ade0f42d8a5176ea8283ad82ef418b3f7ab01c378bdaee74d00bff8f7beeb02da150579008d70401ad94b4a5fb5d60a963e2e4093974ae11518ccb4888b1770c1c510232e8c28e20288109d0b338051991671413bda62975f3aefbe78c1f8175b10e5f3633ba09496eeee7eadbbbb3b75a7b652777ab284e04add6912217d715a21c796e6325cda6a8164f0097697d1590ce3d26aa066c3eea65119a66cede9084c8322e5d23bea4f3f5abb82e1b9708582da2c52fb0524452d854ef06ad076ad6bb61ca24aba5d4d6a1a0d727ff7b44ffff4779006eaafb8ced5219e0da0e008263b21443c71c18c06b75beeaf4c6a900d1c38e4a06308b97f87364fb99f871def011c08dac248c81125a0cdfa2b509b3e83dc5f6d44727f1dd226380097b15ebc622e7bb540064580c111845000c44c06b9b570426ed0270958ec9cf06307447e667e440b24c4dc4e184276f7d183a2a4269808818b533ac394bbe60417e4d2db36c95cfa6fcc291129491264ab40b57e59d17276ad5645063f07046a53660849d066a73750bf3ac8d940b57ed5b36b4df8913d539563b1789059c877a5839bff8b46a3fd20a291a0cb74b41822bb30c6a00ee53aea5098fab59b9113b950d0cb5603b2d586888c6eb85c2dc969ee5303ca5da346af1b5bf61baa04f8c682201113af859ce86b035300c127cb9d609102b282d0d515e8445639f9e1388a142188a82a2030c105d93f35e638e863094f0401059445900e723f98851272bf8893e081dc4c9270850f764862e4fe980b373b27b9ff0525e420f7cbb0042372bf01dacc69931046a718246c91fdc7271806163cc0428bdcac24d985dcffba4c9bec723f8c4602921c037ebd68163f4a5834c07a5284c506b27f50b8420b979cf6da886a966c1257c420bb1148b989dcff8d39fd8123dc60859cc6b5242ebd65911d63ca4507a6005244104b583183f618f40d113e80b8c719d4d74bc7442eb3bf83a010b418dd084a804ff065042419b931c83a82853178e4e70a7d4440ec8a75ab791437518453d0823b87e594aab5564c91adb5d65a6b811a466d331f04358ce613b38aace8c2881ee07a902b320208803451a48923432b964bd1164021eeeb52a9d4815c90c8831a0881c54c8b724ac41b0e332dcadd92e4a008a1c060a645b925883ff029d3a2dc1645c05ea64552f898aac0a64c8ba420628bda138a56991649d183272091cf8f19c1895022f59b9634bb80a6cd6a49b365eb469dd9af335bee18b181ce7af4409166f6ebdb924691663774ba6ab12488239925d32541dcf2102120e227d325421459f283242f19828bdcfe11a89f83227919017f4acbb58c80972d1ad5cb93069a75c84191ca0850248a94e98bde593124d32541348191695115493944d5969f20eb0544a9d10d88635159058a5199d35c87ca7a9ce6b4acb47ed503a890abcf51bf68f69e7ed5f781000908a09a227fdf4f072085921be0162836814f302b21abd77c50587d0dd81c04194828d3284cfd4f09dc4ea3322a1214e6eb6f7d5f25aa4a9eb4ac9a80568baa00720967e7bf5c987ddeb47ac6c8f5eb296346509be70bf9a450e4dae6498f727dca85519bd57baaff04a10d29424ba20406f905f974265d83e8e9b4573e9dc6da6993567d2a06bcfa75ac2e34443b9d4674439b38e8e88c01540616825b3ab11b9e594be7125118a7553b6485822c50759afb788d559d7653ad4f761a9047e4b0fab67c01c765d508a7ce2a512a095afd197825a38968b4dcf2a72d4eb25cfa1583cac021c0ad7ff1825184cf574682ebd3f1009e533042485fa03480a9d756534aa698e09ac48ba6b84c6fe71b6eeeeb85ae95be6809e2dc0da0b21bda373e33a88cf57a2d915b090fc70d40b922a93900c92737e804cc8d4424d71fefde9c94c98d5076413e571f126ca34d5ac690834cfd86bfd3af552fd9425abbbbbbbb2dad5e2baadda2f00f7c04665d17fc4394e7c2159e54698c12d1ffc61a4ad086bb0459f8073eb1e9bb69d115ffc03f4a44a89585eb9803f2e45ac4840a6a8d2d3971d86e2da616e5836dc6280de0775b9e18080a06018508c1e16005d95870b8155c0a878243e1304e65fa94f828323ca95038b620231c231c201058c3d5aa2783adab94ebddf2060f87abae001c38ab32be2d2550b30aca8e288b9f67b62acf479d4edf7f4a953b1f4a8a3c3d26518f87c00d68fa04aa84ea731a515050611d5b3a279448d259a883838ee65303c281036d1e4f1da3b8816da3937870599db18c885892925692544949def72be449e5811e91110fb593543b494916e021c90355654fcf09f59fea4b95b5aa3ed0a39e077adee9db41e1344eab74fa6543277451676ce97865ab434fb420f836bc074fef7d97365428d563f2e61e77d0a839f536d0d9fd1e73ee0b3c38cc3f45d27ea53280716e5268e89cd3aa41f5dfe7f86c9787201d3924a9bc4e0f7558aaa5f37d2becb015266d065d767fb57a9594efc3bf83f25f69e33e58ee807f4beab0157855650ff044ab01d98284867848f2523eaab5958936ebcc3e0f2e1ba9b5281b5ad196acc95a143245243f1389bf449e1e8554bd47a69e8ead153a431980b5d6e68043cbd731a7f52a2905a832957287941f645b774f10d91d3a288cc5ac7fc578b0ec60ed60295b2b28abefd6f729df03becab3cad64aa983b27adbdedbd64a4b79beb25d295b35a4fcea6da4fcea577ea5f2a572077c95dff93ec5b254de862a646be5559e679642b656ca5f313dcf2c645969b1b0b05ec70e4db295a9d88280f443936a42454260423e2b106d0844e4b30ec996450a5bbfa41862d222212065fb0668b3e6560dab4f791bab4f29778cacbca9dc29fdea574a1b28af52ee788f02923dbc4ff98fec61c48657b6fa53fefb94ef51f25ee56f7c29aff25ea9524221bd5791e3a7c23fe9a0f0f8fd89a433cb03583285a21d4b3a6e299ef69316217d01561b35497630e5856e82f0f842c955a05085bc9f4282bff21e754a3d4e8fa8134967e10dd10d110e387472a9ef5107f59f9551655fe980242ccd790370707710e47152bdfdd40e6c04952abfbf37377546fbb87df09df5eab1d5a5cea96cd18c4bd5e96ddc3f7d7fbf4b1ba087228de88c2f34cc613714c61ff503e33f6f72ab86fba7bf01beea31d939e5fd7476225b5deae0d0e9974e0fcaabbec7d4efa0fce953a50dd47be58eea512850f5dff740497d0f963d525f497a46912772cc8126d17c6a40361c2a51c8d376844277c42a5152590da4a36bb89c6e9753fe0c37170e0604cbad7680e574ec6c68643869d39cb9797f201b8cc0cd826ba9b51469f364ed5a6a2d415a845a865a885a94b430d1b21445c28990ecdf6263ed584fac0e675b2af681bb09b96b3389e6fdc92725adf469b345f334cb78fff2a7cdae05695388ad4df3fdcb216591365b3337a589b321ab4e16a32600ef1df5cbf589f8073e7d638e0be762e23a72dd60b91797982ac3da396bf7b204c76c2ca9d52cf4b459e3f3c34290366b58006241c890365bb66cb1b50c6911d202d412e4050598e61376b6d45ab55683c06030b5965285542015c8902c9dc35e2d5c980d26b4b242ea32eb2935491d7df9b39eba2c0658ce7573e15c4667317ccc539987e165fe060c2f53f630d22386d2888d183ee661283fa15cbfdc81e163288d9c4462fe46cd42063ba0c5943d5c254aa002184a5acccb945f50ed1153b66e7cccc7949fcd6132e44bce611db31d8b35104cc2da4240442112fdc044990be22866fb255735f0927399ccfb7fb8189932868e3862ca0f47d4664bae1f7e2939158a26171317ce7573dd6a49ace3e502c7bcccb7009f2e9ca6a9897dd864ec5f867c126b875f9ae66bc817a4d3ced0942fb97ee5c69c17a47e79cc5a1b2b5f722f3a586ebc4ee0f32547e2ecbdbc883a9309288810dd100a252434c6b8acf403fa8035d7cd65bd231343d6202cbe6048fdb2f6bbc172309699579bc360804f580ec6020bd6278728f1e504efbab90c8687a194c138a6a44dbe379849123ff8a7ebe6b2185ee64f30b75a1f03e962d230a70d53e1654a15fe0455283c99923a52e7e2033e59702cb836bb49eb93875022a9248734429144a851871c7a417ad1c19e8e2fb91aea2c4508c69f2fb913963bca29554a4cd5f00f23da925b720043256223a8206097d5c37214c655e30ca8dc52eb57d293efd6ba21f3303c0c658f164bee59649ece62caef0622c12cb81396bb11f332256b87945578fcad4305ee7fb128552c95fdc34f09f884e5324c937ed9d4635bba6edf0e9f2c3896a396551a8caecd962498266db668b53651d9df922db57ec120f330bc8a5581a17cc9d9d3ffbfe452b60c5737bf1a735eb8f91879dec82075d6c678fb388db2ad18e1d37583e554465cc6dab15a6aa42ec6d33147008fd3df0630cd3327cdc7debf25c69f39be5b182359ad044cf39d4fd62e46769e214ffb319e868c408eef96673c356fcc17be5fa4a68cefff6e548629a36cb9a5091cfb107ca9b5698bf00d96db018e8defba8d7fb6d4624ad7ada507f82475376fc91cd627cb789c7e69d266eb0629bfd0af97dc8b8e74dd6e4e38200df049896c6c6c6c5c472e9ceb46ea5cb71b53460c5200646a06991aea570a7ff3828c94943127868c1b0fa683ed5464bcca981343c6c7c873c6cb783ae6dc98e6a39c74cf843336319bdc8e059a0d09dbf5cbb436ef0f73024b6ad306865443c29ad894305dcd0ccc092c0996a3013e5d384e43ca78939c31e3e6715a468c1b15159591869a5342fdf2a72153478692a4b4dc1ce09897f9faae5b0bef2d7c0bae16fe64e59bc356c61c99cdc7ccc7e950c5e6e99823ebb6b6d4a1bfe6c3ea3535df25c8dad1c4ded58486e69463c2139a9865ed6a628fd39664ed62b6bbfb67fa6962167c61f9d03669f33d9a5f439e36b1f2c440d21b8149dde9bacdd0bcab499b272c6767ca193acfb86e2e2645724af677ed5c49fe2bd056e8f15fe1a765a2cd752424fbbb7233341696d3b57992ba8c046bd2a64d7f4b8dd4b5d9efd2036c53e6b03ed97c9cb69199ac98b53646f30dc16d53fde74bece5499b67cbab152b67e81c7bc9bd20d9b2ff8b2e055a0a3e2eebb936c8fe29d45208d2b21e9491135564ff1484b4ccd65e9ab4498d9ca865ff975dcc9a278c2efbbb0db27b0df285d1b53900245c9bd57cb179a979797961d13c1d7366aae31c46f3a48e86e64d9ab7a1f91a1a1a9aa779d6931c34ef4f33435364a5a52548cc5a1b8bc5c808589fdca50ef6631fc6c81621ad31678626f6dddd1debee8f95e70e100d797e435ce6c2390cc865ae9cc3fcbd05a85f6e63f39634ff65084639e90e6948d9774dac26f63157ceb5ab215db97ed1ec62827321b9746dd63c939c9ad2859b2169b69d69489a63a48c74e95cb72c70fd130633f4347fb2b20bce2ed465a4ce61fe2ea115634a1ca973997dfb33e5f949d93e4d79b2ecc74a6acdd25b84b4192b4f9b32877d6bcebc7f0b509bf653435241fd2ad22f16e0b384635ee665ca1d998f29311d6dc4bc4ccc873164c9e87e0c29f3975c40cccbc47c371e8488542287f97f2fc07d23e9ac9914815b5e023cb9c444bf9cd2d4e9bc40b61f43d2d977cb465104656a44845daec9d4a80855e471861a66f9704729c5e92e4b488879ff67b158702f4f59702fb82775ae5b9b2ebc7ff822e21f2827b86461ed6ce899ccc7907506a304c688c2105118982118124cd77a3ac27230430e7381ec9721eb8c0587d2288dd2288d92faf325d7e5a905b894217bc612a45f2c3810c498c57261c1657ffc2e90b05cbf624a189890cbc821870591b0215c861dc9810df5cb61421406169433d6d0335890c3fc514bc0276bc7dab5e9d99fb58305757ec99d5e804fd60e66c89db573c24a6ad3d2daec9e3663efcfe2c3526b73e6fd5982b4590324a4cd216dd604b549f3fe2c45588eb4d9ead285945d34a42be7c2f5cb7f86741d912e26aedb0b11dc5ff309cb9dae1b8c07c09056e8baf5cb5f6504b7d45a82f8f922770943e63b4646ea1a766be149927c193215e4b0149a4b4bf659fd10ffc0357c49e1c554ad4d2fe659589eb573594c09cb35cc4fa30da5994ce9baad00d76fe1cf965aaa0414c63f864c05812b29ac150b8aaa25d572794941856b51de5585ba9c52360ae37f4bd95a60be4444655825643f75ed350cc9a3c2204fb005f2c42c903c2cec853c3d1700f24c01cafe2b90676a28fbbbc833c596fd5f90a70b08d91f002579b204c9fe24793e796215c8d3759422cafe2fe4e93917f2f45c0b96e36159523558097ca742eab27fca4b2efbaf60b9133624fbab5a6ad93fe582e578d87cb24e3cba6ea7dfbe1d1804ac43b99a7fbf53b6366ff64f0d09cafea95beaa8652ba9226dd2a228f864274ad9b2a782889ea4209f29a3ecb62730c8678a49f69450f6f7ae2d19dd6e385c9be797cb4425256dfa9098cf1251894976977c9688b25b98dda987e669c1d60ef810524a29e8eeb95faf7477ff4ed17aeeb6fab5f6e680ebdf1caca7d65e6bbdebf75aef82e0e7b07befbdfffd4929a5eeddafde7be9bdd7bae7231061487338dd5a4a9eab1cac4cff7bef4fdbfd5e97acb4b6974cb5d6b1ce10662fc121acc4145e1d349d1b70e0602a5d5b3aa1522ab71706f6fa058e30be37e5f6daeb17384aa98c5822a854282828f7aedc5e041cd9eb17385aade8bd296e2f028eecf50b1cdd57098954b4d7fb44d0245a7b737b9b21ccb60487284c3f56a2ba87a2dd41c76e8787a4d25869620e62b6a173030e9c03c411871c2ac41e38e4dd7b4ba8ea13e25015a20c516b6f0ebb11b9557b63d2afc6d99b016e03304aa554f682432619703e124cd230b06380ab47de108915218682b2ea17ff305eafd52aa5ae5c5252dcdd3d54a1d687861cd60f016cc124fd6aa21c5b824332804361188ab64c01a07a826d11c0fe0c2753a57b71f52ba5d4c56277f77b49b73e40ebc35a6baae257c50ded0fea4e6f5ec9ef75eb96defbd91fb8fef5eefddc2dbdf7fabd0e7aa99dba53ea4ec370895aee5e5bbbb6c6d1bd36776d8d234bab7154e3c85ffc21141245b7e10ef725e57c747efb742ee223b067fa8ca2b0df57b220bde938eccb3a148603b8be0d907e1fc9c2390a1b3a30fad55f327da6d028eb3e9dc3a280eb9f9f2e14aff884385a9c8ecee8272c8ad6432154a00541d3cda66dec17f485d6da10b6584d7fc9d2f32a59bfaf92f492614fdbf49bc8d0a76dfa4330874858ab3b1de2da7bc39e86b92e87a55287e1b5ef204a0cc7af0c69a9d3f8a18839fea9b1a6a48c39a5ff9cd62bbea7f75a2024007d40638e2a0a0ad3df43a8a2f04a9e2a0a2a837e401f90c32ed9cae2a4fb84ac425a8966f1955fb8aaa4974d247602db5045ac5687739208f8a831e7d31921f3a81f4bc447e030d732a46124bb1b5886b456162a212a839e6cb82256b2c4122b09e68f64112bf965ff3caf6459ff09b99fed03328d397efb80fc76fd76a39dee1def056d2a85572b9495953127ece957eff8b8c400e7f0a4d0a75f1dd2c69c0f88c2f4bbd4009f275d529be707945bd7e4b43b3901a232acd352c9047e5e4873f689420bc402b1402c100bc402b1402c1030d3ea229028aa9561e22db8e75e4b42c166c98d04c4e1a30944f82142092151380ebc227c1cc90d52af045f2af9c0c7fb000d7422c8fd00d1970124fc580f18794b32f00437ba3e0cd1327c00c872a0563d6073180597f4988003327420c961149c0188da8ae522f24089299060c9b4688a25bc5bb65ed8f4a22e6d9af484d6afeaeea527599abdf743d50f71ba36359d394c95ee722d7530fd89a250255409554295a84865aaa74fa7a03255699f52b3964b08cb2bb2fd10f503b6195f11f503ae19ff80bf8cff747a532dabd75abd56ff522af5e16973ab54f2686d564fc84be2fd78423c1f9b17e41df16a57e80eb579de1b748fdc24f7dadaddb6da4a963cb15f162c6192caa0b9d6771de9bbda848629d7d2774830ea07ecf1b841385d6b924c95d49c4f2febd7d2f84efa658350a8477d8333233772023eef90216d9e3c3ed2283d12ec91e2d336bf3187eeb2c94d26f09b0ccaf631c9a3e6f31ad58cfaa164bf552a21e5175af63b9189d3057ca127b0c8e70b8a1f4aee1965fbd622f1c451b6ef4fdaf41be4d3f6f811f9b43f1ead4dbae487926cdfeb69b30e912d78f29def2851ece615fb5a7d8b4a67781295b17547baae5ff69b0a6cfad37599065349247cf7d275dea46561e94f1a66dfda997ddf9952461f120c7e9e644bfa03f61c7497513fb8db5a9e385b9bef0cb0f56ea075fdb8edeffbbed283f79abec3f0c3d283df60a9fb03bffe7bebe7de8390be60d9029f38fff7d8dbfe078e6379e68899be8f1ccb130cc3cf640a49ef4d25f204dffb0ffc3eeb2a40b5692b4f68a22c4996defbbd278ae1d36cfa9225c50f494b8ae509f6a065d3fb58c34ba5f7be0492e7bfe8d7ad286ad40124998e0440e56b85c030c08e13b0440353bc385da8f703836db2646a4dbbdcf581e28995ec490ebb2fd294789f27b16ab620fa04d01345c4233e94ef1fe95792227915d42fa17c459bc3ae935abf5f0da9d5ab5e258564cf96af509b446d862ba07e5dd69036bd0f3a922f6b6855ebd75d05c9f73db273253b7f24cdd8b32ebb222814718bd3edce551327fe952b5c9b28b87eddbffe28b91cef43276f116a9759d54b5fa914b66e4e5ada4be1a76bf344ed726d569fbc6ab2aaf11892ef03e5fb37c01e9e0fd83ecb4606e5fb9f10f0c9b2d199db771b2b08e596515e86e093b5aae5fb2d25507385a3ad2497d119b6ad8880f225aae5bb8222df3f5b4e726b97af0b2d5f179f7c572c9bcda6d3937a7f142297f5b08ffafba7a733fca7bf81ff54f63062c3fff43d52a5111ba9f7c725ca2ddfbf71eae1fe298cf163b7a8b76f1f55a21095b43c518cc81591c3eeb358ac21f759b7235691fb3449beac20a27c9f9eac93c5c4ab2b22bb227299fdfb28493dfcedd3191d7178899254a2ec1c06daf26969a18b609bac4ced49e87a2e413e40364f52fb0114433c0ccb1d5b86b750e7323a7332cc392c147f3c4ff4e9d7156b1feac4202290108f1ca9e823fe88b5212cb26c0ebb6ff248d650bf5842e1cd61f779669765ebd7f5c4f05ce53c510c6ab385c88809165ae2a327df17855c0cbd55aecd93655b21b5e94870d0c9b2e5fbe2c7c3e624f97efd4a5d9873190dd2a28fcbc0d9fdf0e6a1cd65742644ace142220f0a85f27dd176cb7805387492ef53a7e5fba2ed9b013ebfff7ce51b2c87dd071fa73d69043bfcc4fbe290273ff9be78138f5a562212bbb0e52bdaf23dc5a07c45a27c45a37c4526f98a42f9565a9be7abd6e6c902b23d6dd21fe4fbd6e727df6b69f9fa5f17a11754e01ccee11ccee11ccee11ccee11ccee11cce793c081b0a7c8a3f301322e0237cae3014f8c7eb09fc047ea20508210affb0c20afc031bc13f3e14141414169613e022e022e02210b58f4d604e8091be49efc3fbb436434b4ed5300bc24ae9b8233c62d745dea1bfe61e69b07297291b8569af91b500d5d498033080910d9d1b8db599893d091a6b64356fc68841ca9899b9b999f1fee10cd2e66f489a692ccd0c92e69b1824cd2ada32161f6ba82d3524e0f385c6d2589b99586c26169331636d6856a8215341a922ae3f5f721547635363679ec6d690e74c49d3b199d88c29ab89c96235b1588d39133e8e1b700ec081d2d8d82b7aa4ce652db5979c2c064dcddbd8cbac255b805a6a35df67ace665ae21b86e14e6f4c50bd72df61dd3b99cb8925c4f4c9b157c56f859210899443e219d903bb209a973dd5a39e47005a135a8242d56563d6b15d10800004010002315003020140e08c462b1602cc943512b1f14800d749e4a76569c09e32408621406216410218410020821c600ccd0904620001060236e6feacaf147b92ef3d024ed5d6e98a2c2945e79ddabacf23ab31ec1e09d907787c2a460cc06f9c8fdad9050eb0c2bd20e5f8c032c9ad7caeb76ed5c78489869b5cbe3d2fd020bb8e5d2b1cd9c3993a3c114a468aaec787dbc79ad986f9126057c9b4175df344f4bda199829f17c83640b9fb2f9e1332e2be9819e9c5ea21b7d2496d61c3de79a7848bb2a34623ef36e585f84df121207d03acf2ec986dc635416a50a5964bb10a8117f092f228381b9e9582bb15548dda30da6870ff6af6d977b20c001047a154f65a457aebd08988121967b19c6d77c4ed0dfc682868c11c380f6a8b0973413faac33c48a7a3aa87e2f8742000c97dfa4e91e797aa70939feea98f6f51a8c55bdd602e29bccd47f605979b8470a834fc6be3d89560ad45e53e0853fb637600b187544c15369902ebc0bb20eaff3c1df6d1c19e0f06005f1faf99e7b6eb998e4ad6adc9512e7668bbc5235cf843bca61d600459039b2f59a8ebcdcbf4a8cb57ebdddea7fe2c20c1786eb2f49ffe24226aa04bd566e7486becb6ce4c3319e205273be313e2514ff7388cc2379fbe64b6428fdc1b55c60ecf84fb998239292ec19a15228412e0fdf4d297d344fd444926fec8dfe428f70a16175c7e222c4b7dd68f2c9bb0504c211ede9ecd22605ec405ba8731e1c69cb25c5f749ca249ec82008679587949ee760a590c00297c19998a005dacac0cdf2b8852683f7fb04d60ce6eaed3a4898443a1199c8d3bc8a66dfc495eed9477f9955e7ade720c0fdd9a90e733d2de65a5286e2a1cac189826554d005ed4a9418b420832a1193da5fd134425bf4cfbfdc79e12bdf0329e985f493e9822ed962d384ba8af2f485df5f4c7294d77d4dce466ed85dcf99732b51d499c16cb3465e3e4bf576fc977c2ff37f97f6fc347fbc5f00f9c6f85d7989fe7ac131ecbf4d31c5e49ae55500c93621d8b87cd4809bfe067e2b2dc45bb235da9709f26f8b713a223eac6e902fe529632bca006b148cfb3694de2d6631ee7a41c251c887052fc3865f909188ca5db6923248a9dfd8c136224e7034c4f60ef0baedda9dcc06f658f842176456e299689a1e162133e9c5a14160f179d51d1a2e1044c499a3657ef4e1cf85504b542130d965029501ae6d1b6c74b66302212b6a0325bd9ca5dcba80db1b28f873b48e6e5e32649bd43ada6c48da3b0979283d413ec368fadc3e87cc3b12273c53fb8601bd460a8e2684243761475f53d2f66a5eb452d4df09c917cc5e2a3e2804b80a62a4a26fc19006c0e6403b4f6efe0079f22e1dd9be0b3984d65524fe810afa4fd1ca2ea243edbe179b4dfbb0f396f92ace44ac8a14c14ce8168afdb475385e351287aa0e35827e7c75233de4639617015fdac920e7a9fa369152133c6164710a8b14b46de46b00d75ef468802d3ae7e0b8a8e67213ac9840655adea7f35870470e55350cd509faf359de8b23d422548a2f7441b0f88bb114926e629d76fdc7f428d07bf1488221bd6d9792b58b4ed8f2467fc0aa2cefed891afe5dc25725c6bbb3fc5bf6a4128f478b79acd2abd78a5e35605ee30698eba164ca2d7ee3f262550cd96cb961619d64cee8d3bc0c05c681a41eb43ab3c1eebd8349ce0c58d15bbcdf2023d6dbaf803f11ced28695a8664752557c5b862634bde8812deb7a0ee11b41f5a322faeb230da918eb9a7eb2e0a71fc485c70f68a181ea22cb7e79523e13236edfbd3cee8326cfc935584a46b5cd241264a61840958d354654dc9e78d02c0ac9e6880bf01bce14c3e0452c4c1c036c3c8f7585a3dfdce7b377e65e24d4c0cac53a4468d8be15f85e74ad45f0f43ff1cb04ae877c65822319313519751e8f45138a4999c5995ecb5b3d7f019604a80a7f643ed59b4e6891190479684fc8c28c90e013872ce23ca10a456ce315294bfebeff0e40d8d621b0ffe39fbf7c5fb2f6993667c71ce3f743d60fda3a390f1234692aba2489d2050e1f7998f639260ee4bbcff2543934fbc0a952f5a6eab94d23c1f370d42250ada5f7b3b2011ed486551491f9194a7760b5e77548ff0671f502958dcd4954672d17cd5e23a72f7d76a1530d91193df2bb842232e4e1463eb9f7721375052fa8f8f3ef7c185666c2f7dac72e5fb646f1ce458e4c4a7cfd011dd34ba1d43e23b1c3be32e111a1e5118fb210d1bfa876e631a13b5ec9ccdbdc8efebac9d14252d2358345435660b73ac6471ef94fb4f80a6736045166386522a35df4a8dc87cb5d910cb6d3c1bb796c33c2efd73dee4a407068a5e239c8c968832ac7ebcf0ebb22df75c4473fbfc3debb748b81376b09300588190fba4bd3887a8906c0109ad9f790fc17dd9da5dcdee7429246fe8682a73dd499cbefbab42fc99be144266f2585e80a2fe194d0bfe2a04bb90b0c804747e6b3e0ca87280114c6b0c7a7f4fb0f6c175478dc180ae7dcbd7937e230843bc1af5b85ac3bc02974cc1700e6f74fd9d8453e66a84e28dd060f0000e824c8d4233d2a898bcc2f7277bab4150a4015ed0072cd7a2bbca3433a470110c1981a0d831915d6839e7d830050eb8e1d9bd610f87b70c5ec117e1e71df8ea319a93d383bbd601cf2bf6d90b0e4d9556eabb0d2040c93af18d9f6ce85d1e136de2c0b8508018629df9578fb1c6c6a61c36cc9d2b136ce06c158a38b6cc66978e2a88f6b7abe335bc6e860aa675d93392bf34d0d5599834eb809f55d5eb6f0d86e029bb8ab02d79f995ae80482a5c13292f572c3be4342fe164c63275bd7d8f042828f8b6d749449fd2fd0d07cd479dade9b5891a5a2a93c5e4d7326f31f35d56a0a8713196be5ccbe3b756182c6e5faf5521539cd2197ae7d6c1624692864603361df3dbf714a113ca0b237a80097db5f632d534ec675e6bcf8e62d0b64c70d77f61d122a6c9bca0b8137e5511a3e6493237e7360ce21c0ec55cf423e70af973e015110a493bbc59488a74de7758960b8e8118f0195175632bc4f0d0c5d8639f70aebb3b2dc31dcd79e83c3ceb164db1d4e88289ffe87f735142fef9e9e2e51ef22c2a1ddfe5eb0613c7d721c76325595ef9360a3f3f66f8ab021accae3c9fd57bdccf037a5ac0997326310c9826afa327ca61cb84125260c91b617f06c6c81d17b4ce799dad323d2b7576e7a26c2eb579d8e007dbdf0b15a51fd957bb3694c9fefc65b4eabbdaa689552c68c1a27f2307ca551881d5230696e24643e33847bc3d94e79a9b5d131317e939b2930acdcbc7d778ed075904fc15a5851a7ea6d2eae750b337df00c79a24de1931e37931c4f8901af8410dbc7a72c691970a3395d5f28f57ae8bc480c7a7b3493c41153966cf3b1d1a34dc3e334e52a695ad8b81b4f95968b275351daeff76e43e3c4d7eebf334717ac5199ba04e7361a6623b4a9402a8ac11195635877dae82db3e3dbf114e20501158daae0ae4ac04182956fd1b09150dcd5233009949c39d3a260861c811159eb5bfc043997cea857d45bda4bd76b7f816cc5cc3cb0cc1d257a5fa697f66a754114e0157494534fabf44ba7cf9b7fca356a93b42536cf0b697594de7499df3f92b492217283590576f0b971602637591b87867496e9f5b89a050f011b115d441a1bf177eb96c2a2b078a92fd9894849808cf31da8bffa63b8897d8d789fb574e6d5963b151350545bc0d8e8b638deec3a8f142e0964e62aa3a9a25f006aeb4ebd35974464ab2b3b83207f8dc0ead337c2e8368bf431b4e6e8df4a56a6191a4bb73d6f93e7c441903615de4f2200146dd18d2527455ed99bbdf2f8f48d58712e62f666ee9507bbe944641f5c50cf3e44074a5178d3f40847dc1dfdb808921fae0d71cb64b47f96be9feba8f8eba341029370f3aa5bf7dcb0a87419f35de18708d9ccc7383a62bdc9bdd77b1586ddbdbc827c00fde1c1c62af12a38fcf28973d6b80188af272c31ba4d6c95bf68628904b674940ff1d1d1b420b3d4f1757c72f52c279224716405be1220c5117af5fe1f22fbe898484e790af68ed37f091d8e01a8c777f49e0e28d0515ce750c91c00ebcf270fcb59208ec91de70a481cedaf82da21a91d2bc1e5f321a6225ce2d0e020156c660c69b81bcdbcd9e4fe748207ceb5ddcfa5ad5a7a7cbf8c37f29e94b7c0f06e6106b3570b239a4b6ea85515d2b943115130713a593f8c336034879f4b0b71e05180ec7eec6bb273a98e70f57651db8d7313c1c3e49e939682427743b470c3d12a05c79a546a227f5a0ce78453a008991124b7ef1b927b943756430ff7d9f6298bd9d5c5e052d75f212af9bf7d4008300cec5b5c0403db5b69819996ab76277be521455ebb4aa82f1872c6f40eaf7652984c8f97af94f19e0c2bb08d47adb3ee4dd4bda790a65029a5161b8786004be4b910b755b981a068b849b27264a32be375c63533f4c0bfec1209848d0d80e67462c9ac2c71163b035da4c371337b355acb4b2290a8f786a06cd6fcd7068aefce9378fac1c165561732bdf3b675aa883f8175d5a8640ecf4f003062f7481839ddc805f932e567426657791ed81ccef8df8284740a42cd89a07bc63d7156499d64d9c4dbfd3b66e43cdfed043ea378275f8b99a4bced119c6fc1fdf563aa66fde417dcbdc76c6c6eade9c00ccb485b27b2c49d873fdbb516d799f9129256beb7a205447e7d1b9c2a0dece44fff3e295b05829eed871598655c2cb357a58beb0781e89372c975546c095744bff368f6791c7a14bafd6ab5d7f83f087ad4c85a920fde890d00a6be87644ff88b9725504b084358114b36d340fb3bc69579297d39a5b1e98fed5fc4c84c101ca553f724eb76163e256f1d1ca2ab7e8a286acda34fc874a0451f59a5703497669d4ed2b8780c1807084dd8fec14de0f7cb8d8bb381e54fe3d02aca4b6509fe8e67f8e2760aae82f1261cb9c830caadd6406881fd309c501208a7e22b4a8e450997c7b30748b8192e6aa456115e2ede84168835cea4236ee85f50b7edfe1eae6f240f35a9d3f03f156c6f65f1d1a471d3adbc4f1c4a0dcca71dc6e2b832c041e4c0c4b9a0529ed8354c2a18238def83fe8008cf26284527225bf83ee0f36f4c2644558b84b12689211f000f906463d69f7ae9a082c6d4d2cab6912ca008b55810fcf3c89ab6769108b65a97530e24af9041288f43a1e0852be77222a3e09c205b1cd3813d76a888b29eef5fd1814a12861f9b1599777a4eacb0773f04b7db3c08994fdfc3df2dff362e5a41645c35155fc465aa751b9629a3b27cc9605a915b644d7a848ab379904f5b492b0b743da01929beaccf97170e8b42bfd49b6db94282a155de13e35602297ab95a304cf9917953e333e5d765ba17ab311026a1406c5a98ccde23c01f6d41b190dafd0d665b65e78ac7777300046115cfd4968867c70807088195ac04e32f5df9b435b4992e554bc719006898849dab4a4ee36c92949a191c64756387709506c53c883d9d4ae4c9d8a43b0d13c7a6d48b2d1c49345e0d22072a2b04fbac296b069c784e4218d160f9d0845619b988544bd414cffa606cbdf1ee22da83b39038a978ed319552b0141caf5f96844a127d0d62a5aa0bf7d261d7dea3fd571c34755f57e978f5d339b05ed7f114d77fc937955b43c174ed36a43ca11ca9836981195e45b5c94357659eece943b33cf68fca2adc779dc5e166c721d1fb60e7e1f34247dac6bb5460935715d3fa5db3a56e1bf4a5eb3dc0bd4ab66e4cada28cf6f7e525c3e6cf133a3ab90786650b4b1f06361bfdb976425b623c27e11db6546c44273de777790c1aa94f219a7f4747c34ffb699985ebfd9253c7bf917a74606bca21c2960ee65868af458b49282a697c2adc6af93360823aba71a291f1512aa72c5473f04d03e8bfa94c42bc47a575721f12f3f1c88beb5f08dd211a2eb1d262dc6cc42a0ca247195525e85df0f25f608e27cfb539d67dd45eefd5e8405cf73a3932558632ea6d369ac7b136ea2432e2b8eec77fc22c583c8c5cc1a0cd8a1d32730a72a6fa89015a98e4a4a0be6b239a11d78f5180dbe3500d080d121519b1ef3c64528fd850fb0d4cb42ef8a9dac33d61349f068588359b81a859b8e00d4984e7e70335598c2291368c33c8e24850dd806cc7b38e83b13ab332dcc876a4301ecc54748e4a88fd75b046c6915bade14ce2d6e1f8af01d9ad9ddfd76aec33f83c10590c3774632cb51bf28b8e7be3da08ed799a44e82e2f16c6c434eb03cb1b6d7487a420870d36e1b2180df8eae73686ad856c41155659d6c0b7e9b5b3af4e4aac4d0863456c52984e63da2059382dba51cc1fd2bbafe921b4ba9d12d369a6ba9666f21f6529ca1a54512699e39ecbedb4b0f5b5c4dfcd597f087306fefb1faf86eb136021e7fbb567402004d4ff013c621588d3bc827157343ba61e43b5c25bd75cd600e846d0e20b0bfee800041e91ea5e3fbb9b5253213949c64d1dd76f18b9ea7fc4264449777a7ac29d023292f2a34324f388641a8301aef95eab40ddc91da1f56f6f336e14a5954ede28ac52ec5c18acfb18166c708d6fea539f98ad2588c29c182d8db5fe41848a22d786ba52c8ac7c829bc4d309ff6a684f77ca04c7b9e118e9357944636d736a93182b9824ec19d4d6ed29cbefec5e1cc5a4dbcc8d28268c20984472e4017e4949cf058def5011849f5848e51346930442847418f3089029c635dab254262ccafb21e731affe6ec433341a817d56f78872030f7ccaf045885e778fdb33f9d46e0e171169d96db339094f13a37659f0a3ac0a43d7aba1ec45ede2162d7aee301b0b5b6f84179b7d40d9651ee713c6d518216a95b6cbfc295e4ae0c8e4e037e347be85894efd9108afd81596a06fa281b522c40c72e50d880aacc603e46faa3d9577799308a04166786c375cacdbd6fcffac9b1c487979fe2bf855ebe8771faf5533c0df582ba378818d6ca8749588433c42cf7d5efcd32b1048abd807f853c9edc6b4a39dcf2261e45bd5a7448b3ff2ff4eb36bdd72e7feee2aa91d0a4411bc7f324aa8af36ef2f916538931b45debf99218789a2e96aca6681f29b7f60c4754fbad370dff04fefa2d9a9145c32957ea1a92d1b058b82f9a3ddce873204bd5bc5bcc6a037a8aa522b561fcf6b2c4ceb4a447db4f95c5517cfee9fa581ce0f92a4e5ff8bb16ca0975ac9b1d7757a2d1fc6018d88b614494644d1cfdab0b63756214b2d9d4ee8439687d1269bed6b06d0322b53a44f0a3026ceae1c7afee7661750b17d48b3a80df47daa79a90ff75ea31c2abdf7e296e508f6c040b6b5dca59d76d3f25296e15b72c9410b1c653dcd78c8e704ddf550415a2d682f1af91aee853ed701acea61c9c08c24e0ad0d8857dc8908356afa1845028363f2cc62125cf9de811b6e33026a1261293afe8be351098db0d097a5780dac24e9a259435969353c9b889a9005569da8a6142ba3d80ded197638e642b3d6901ec32a1ada72b0aae1c7de438486caf6be6980b10c84e66442b829408151048fbaec2009925b5a8a90408fd199881f699d274e077b46b11025210357d6436091e6955236f5c0ea2c490828bc896e3e99b6833f5d021062f176d2b7aeaec535dc101b50f345b71ee99155a3640f78d7343ce59cf0e86a8d1508a478a147d48be89ccef53d7a2f57aa9b10f888f3080d5cf9d966482f347c6e6a6ecdd9cbce117ad9ace51c49ff8f72af5984efcf0a09f68dd02aed6bc275d54b519a1ae5beb9f293a58219ea51f17ecc261abb8c2c4d3c5add2142f6c365b9b0f898263d36ac64fd95bd9af588a199e7f14cb03b88d0d57bd686dc0942b089784c8e8c9bd65153d3187e0f3e2b6d8b29de13cdd29cc9b3da501785f4dc43c62e395c1524ecc06f8597ba4912e89856431d8a6f7dc2fb88985d8534e22747a021a02ce73dac55a147bb8898c7c2ee2c7bb7429084ed525e4e23e71cd79838700c8598f32fecbde897126c77a798b00b8b1a540d2ec3149d5ced0cf962e0511aa684bdc12a3fd2bc9de2a2ffb04e2099be45acf7829f5e7c5408f6eca7d2d61a1f03f3c14679c763e879d70fb54c63b82136d5159f9acb385abb0c18db705b103ca1b02aa0b939020e7629f3f276e4351456d70de007191ea7fc25d4708121a74014a99421cd386946ca09fd33d54ebd3432adf03efbc0814c61a0003eb5642080f002f24f5a0b05a483a3181123b8aa04d00502d58330f1262b9174cfcf396c36a897edf3f2c29bd25e971d0679401ef987ef5a47068d138f8cd144da24a8169ac20e6418f8d365abf9468dcd31f07fbd22d523b0d68c3ceb93575e8fe575882aaaf5443d6e48f3ba09274291a5f12ee0860d531bece646e232ae65ec6ed1e681bad7bdf06cdeb86e33d37cc19386a6465b7a803b9252bdfac7eca05e010bd243760ddc8ebca2d029482c00016642bb0999c00cffefab5b3bb8fdf07ccfab3212d12905d9a6fe7d7ad54b915b7a0430b1a463275bfc914523aae7b8df39048db4be43df53c40493451cbcbdc3fa8f33710c2aad46907767c0aede6c63b4562b1ab69a34866c52fd70582f1bef9ea04983564c60c86a7d5250429417fb94f60aae89b767533e2e351ca4b83d528bc2a609915d650835152283ded8e3ad4b31a7e78ddb075b1bb1cd417b935cdc7b591d440fe2836b41bcc89c30d2a1fffce1c6fe77c4d1d6ec074e96cfaae778838198988744d0482d8cc1e6cc2a7c59714ea4460c0b82f87e585110d3d4c4702a4a3a5f2a76cba03a2a2bacdac5f0e22455c9489db9d510824ba7f6d4400bfd7cd577f22c86bde1be0ba6f16c9f6b13284714bc09b0a6401aea9f4e40f5836e929728e5181c7d23fab07f9c53d24b680bc547586f45dd0ac8afbaee5d054743669735f3059671f527355c04e40aebcfd69791d99e4016f7351ae57255165074fb4fc64202fad49afca9bf83d476a402ed958c5624fcee5cd9863264ca68dd358569ed4a9aad559829d6eae1d2852760c7b77700c486d52d10dbf994223361bf6a3025ec02fb9b6880962d57ae34383283c851505796c06618fec9904a3aa89d09f9fc040818e136f79accfaa3425bc9373dc35fdedc0c171ff59b2a5acd037ab8be48dade6c4e70efbddc7d3f8beb573c68f3ceaeb7a2a9ce3b0d02ab767b210c8806d3993268ce962b66740d8ac5e44448565c9605767f005a184cc81d8c781b13646b65ddadc1839d63ab9893e421c5a55f72dbca4f394d468c463302203a95eeb9fb0f9109770994b55d7acf76ee41e96f756f04e7b0929fd641c24d5c559b1e50a22854b7cfaa54c86b2f502ac72dc617ecad0e8f38a9540aa845788a19e41143407bd3d381837c50e92b7c126bcd812ab0bee5a22a9b50e5344ea7087f560a1f05e01207e987cedaa5e91960a71fcdda712031cd9aaa0c1b8eaa61d50823e62b55389286c67c28c8864c0469177861e3f9417283a7b5b6ba42e142690d684df5272af80258e92bb69e51f712a40453f0b16466b87e12c2f5866543716f793eed850085756d0f416fffaec12b90952a1901f499ee573ab82ed1d0f0ae4ba0c0a27eac12e9a4ef562a863b52f420efe71a4467a857a1ae6b658c38edec9fe5f8f555b88fe9c67be42e73c83cc533457907d84453a0a8acfbf8f0e6033a28ed65e262bf9f905b7fad2d128264990c06a05881518ac6379e4721f8bc8f1a7042b4e14d042056a3a80ef87711c6fafa16602ea7c9ff375114d7da993cfb8bfdec0182155608abbb64800ede459cd8fb9c3ccfe75b8bcc4c9d3023d6deae01fa9720349d76c33ce591026c82b013a2788ce13aa0014201712cc91b0e318614f10e0a0d50d8094c112484e3c8693182ad7bc8a11763126dbf7cd3cb93b2941c7a954bde7c90ae963891ec848088818babf788566cd46322d0ecc24ce38a01a9b79d87fd34b88bd589f96d56d90415177f0e28dfa0fb2e81e2c24b4fd088c27193df98f91255ef745a62cc3c948228ec740017d7b5a4a0ce39039058cc7f27304313988b7c4c7f8c7d640fdab6156e451af1db8f4caa494af02623838fd2ca5f8462e5793b4feab7052309eaa79ceb145195a1452b17ba931e07098c2a1d68aa7fdb2f06956b3c0be920f59444fb2e35ccbb7fb08321a52ea715b4218391388215668e8b3e59d39de573b10249892723511b339bb77c48609ffe1c0529de03815bd8f39676760468f9ca5c637c1790f0d80a0022c314adac49d522f103d193883621e8531ca2ceb855f24006381c8569174a29149f718a51a943f0dc1c1a1fa69880015b8e3796f3534e3b00278f445786f93c143b05c9ebf01b75c60da41974e3449199458d84ea3fb9e56b9097c97b92f300fc40e4fc502039f268e9a6c9cc56b00828838dc93a14780815f5c28128533b1fabda4dae56a798fa9de95e79447473aa0666411608a57358ab50f59946d3e8ef77898cf12e3f42b875357a6291b5f4c63391f889867a397c9b33ccf10af155478dfbb90784f36b4c7ecbbba6e28b6ff558cbc745d96337aebe4007e3283cbc4892645c2a36529445941a253b063902da9136d068a6756753c3c7166929b5225cc97202354aa0c2406dc96b2561d4a008278c1a40ddd20c10c15993b69b5533087178abc0a51c4bba19488c80990c157e814bf19af45c75d89348b828a2f9567d75072194ac4b9e08e2dc82e0a3a5422c486a2473715ad2bc3697ab00bc257504be6b4901923228fcc592f14aaa579996fa15fe184979e467dd6e55e9426669d31c94204c290e57558b70f23826a8f0f1b6b843140cd2a097116780194fa4c2293b86153cedc14f89eb214f4e268b8af2ee02a434f32d7595095e149505f105a61118d67c11c9da980ce616991da26426359c74a33aba9c3851c4f96f7299a4955068e8ff93c6759bb28125525f0c40cd468d143bfe90ec8d96aa0eafa433645b053ef7de6f856eac0e9d573be0c292ee040ae8d6652ee2bc42f7ca63c0710b26ce4d861cea42a59fc20d467730fae5f94b060b3d1580c8a80068558705487e4dfa6e68c98aeb37ada2980433fc59b0ada72465a908d9de4196b888868aefc51f29fc402fdbce872e7c93a9419425b712d57cff47d18a4c58b8f504d9dbc4f2ea379d0b58f848e016dbaf3b35bf37533ca380aee11d637276b5bd6671a55a55a4b74e01ec57858b77291d08c80f7c7164d9aac934ad1d7f9d1ca134562e9a0205b26131439d813345f3c2d89e29c547f0b12ef9b502b6c965090221f5854d62c060292d37630d860fe8063ccb2b820f8da088215d0befe7d9d88a59fa74c3c6f65cb6c2267f06b0362a02ed00fde2bfad40b7f095607eae094e5a007e5458a93e15f56f8b403cba150073d7e1d158d408c9ebf7deec4a13fdedb865e2db8a95507f6070d41e6030d7f6767232b247c7c05625dba30e236a3811dc3da12cfe03fc2cda87615b4925356f7e6e6c0b07d211e6233f8635b1faaf4a90b12f34074945e48e215597bed0bd338ee98ac92b3632e4ceff8594b5103edbe2fcea1469f05cd9b488238ab862fad3033ffb2990c9278fd1490a3442277193f445b3ab3468b72d9a98ea08413f9c98b38e00130e890b44c82ac95fe55e29d2693b2a2790959730a991545052dc651e32efef345f87495d470e489e7262a8442cd00ee0091c52a0d2225ce00911d65c5c160a6405f419d409e58d427c274721e09984d08e8ad8ba668efa0584fcaeba7edf001ca2102efe102415743864be1f50ac469ae4ba61b02f3a16d79e32d44d040d5e510ad2cce29c8679a8979555a399b0a32216b1c3c36a7719b6f109056c4cdbb602926fa3045b39b60dca6404b921c9659e9f1222e13c647d6817a32d8bc64a3ece04021185a82bdb9c22ba0d37d65eff93b93791e220a3cd20e59153a7d02f5450303d2d72d5c61ed5e51313f8e4e2175af8995388df0c28e77ce93db0aafe9db037da194f88d220f8e087a14d30772c413b76007d81e70085321ce9278e0d21e74fa70122326cbbde89cb87b68bc7133d9e932d5a0b65987d679847096ab6588de6b07303ecade6fe9f83a33cc1e85c9e3798e650b860660742c56172a9488954e96067f899fe7e138319f46db44bcab82625632d1a010d5cf7cfa4af34fb03aeb29495dd56686d80838b0f64654bf0c1c56c46963850c909ef252c8248896022be4fad00fb8b07c9502a46a62e48b32b5a2dceda82d5efa7363be6ad82771677b83cb4f0cc746704c992bf90aac92ce6469608c3f80e7c715dbd5eb7c5aa186035a91305d2bcafcc0fc6ead7eef31b2112887f01834b945c22624dfe4481ae1bade52bb8529f9f9886c4afbf213ad24c10430deee1b21d951f83f50bd9566e56deaafe851ac1f36ec7a4ad7e5db8081b5c82627872cc60b079850ec9558148e6626ca65184e41a35b92bec783a568ba804dd3bfc69f7245444bd545b0b38df3e0a86f5b0cd05a3fac229e229cc48cc1e7300dff28f41849677edd895e37b9c4d6e6dc78b85ac2a0964d0ae06d31609cd801c794cad49bcad434c364111ad835227dc1766edd5edea9988f51d05255de3b14674d8bfb3fb2411828105c657e6e5fd73f806e5653f522a33a2d155d20fab15f98ce06519935bbeadb3391d40b2c20a1ff09b1de48a045db0ac1c3dd7ce18f6b7b5636cbb43d2361b6628b993df9fd84bfe99ab3ecf569b026092877a3363f6bb2593d8b89a54453b3be9f8a30ce0448cdc32da52942ab6737843d174e36d301d6723de03ebd979891ff368197199beb5d79490df5df2734c0c1ade254266af335001f78a74b4fba0a7b8c895d1dab85a62ba244b5afd0e39a2d1f71520548d95050a791d4d0927f2301c05500916d1ee399f5742070a0c22b8e399152b952c6228241477aea65dda7c399d28c2c35aacb023d6313c519ea0d426226d1205af4c9e9c2a64fbc68c7c0c2e3a411f65441606ea7c6b1a8e7009fc0c0f8ce205128cdf007eb5769bfe4eb99a9f026ea96c9fdd5771f97f212488d041ec7b8ef507d1ff21e61a42c52212d445e499545e3ecdf90b84248cd658c789abc9c31085ea5c9ae1bba187ae628ab8a2d50b0eabeb1c5c9f2766c4e3e3958a22a95b00ba0cd446413ed5f9ffb9dae2161952b55b7779ffd3b507ac7d8412f5e34c5f4b760c772f067e2a4ee8722282b606bde2a5aadc503f16a0a6036158dcf96217904189e7e49afa3f0de684d78f7c51ed22228ac873ed8238d19ecee02fa9621a9949e03dfb80cf555db20596a340750602a7805f8e0dc7b96eb9a907fc427e07baceadf2dbb924c28b3cf2b841d46fc41076c88b136b3264024b53c97a7e5c49ab103bc472b3ac6ade27bde706603e805863f4048c1ef9be0caefd50e3b95d95a507fdfe6b6ffc0f81f2f4b4d5bf361b6ec09c3e3ef4cd2a2512a07f816a3378b4db58324b38059f03fa89c654ccaec8471a90d8dec57798235447d77254f571ef71e158d548ffed1e90dd3eeefff4afae3518d1630a276d2b00c0a673972f41c5a6d7399427f3ed4d8d55d6aa7b8ab272d2bc849d78d590f06a634ef5c50764edf6eb759b81f64deb02f247d5ff39720093c04a1fc0d3e4c651fa6d64335e19121c703f079f87a708c9b4b9003e7dc7f241760d9ef72e778345eb5accacc2b72d48e9a726b19a2ab57754d89b82e1b87db2d2c61731c7ac2432837406628677412f933142392c8948bd9cbcea2b2d31b7681db70627323041aa00aa9fb783b4da6697eb794eabcace2640f5af93dc627449677c2278fc785b34674649e3d98ea16243d67390302b23ad41510b01774b5cd369fe4ae1ad0f1bb9de92197d69f5c611621b6e31e79b373048d63d2715440561f6a70bb366c753fd66a8ffc15a846e5a9a343c168ade9618e2fd92080d1af5bb3cf4153c16f368326f7b86b3f519d4c0c58e1aff0698f309db08c94d8bd272e9979846fd2314e6fe8a8abcee78268c9aa3dec223e7b64830cf16017ae186170b448ff707af27e5a6de576ae68fe66b94b068e9d07a6cbdeb96c470ac03730b3c684b5c3d0c94c89e38f164d7c8ced6771824eef4918b42919c9da83d8b8d9193f48d1e2a95cbd8ea1e0ab925f5c438ff42433a1cf3038893af5d2be4d422432caa631651ed3baefad3d0ab9846f1412bd73e2d3f5b32123e038be1864ce9d05bfb6b83b5bb89e13b4651a84378ce55cb97a14bd8f4b5081438ac2dadfef8a7b80f6f5bbc35c60504991d87e01776b871791cc8a701e950670e4036932f0b5a1918fc34515a79e3bab54d64db6ce0f85f0029941e6027154017dc2b2408ada035d45d0db6bc9fbfa6331ab8b749392853c16dd50d4e152a25f4f4de9522ee0fe6224115344fe7c158911dd00e158d70414a86a2de08df6a97add06d5e9ef5148b45eef177a55009fb88cbed4042aacf0dacc5a6a267765eb6f3747030df04e7f52b0b18c10db0a03ac18687f926da5adb831e9b028c01b5a42c08c4c2267e3a80ca47dc9dda4903e4454e3548df3996773c73f36079c209202928e5eeb1ee1dc9fd360de1da39946b44b22d32747d956f755661fea3139a9030f7ff25b8b301a7588e6eeb3ba7711327c8332b22581960348339ec8133943b53552ea7b55d8eff1ff97a5182afc578e4057f26f72966151e3202af54a001f29588609d4522e214e96bfb3fa318ae9b74c37ec0017faea7161b01f872019d88cf3a57e607f1e54bba74c8f0e5e9817eac7c730aab5d24f7c1d7f06c63ffd3fb1e6487ee3d5e0d7f660494dfd8b3efb3b4e666edc14ee2084705f24a6df3ec3cb52b9f24f4456d0768778e87c04ad1e114a9890cf0bf2a4b2e2a9259992f164e199f884d1c856e3d916fe941dc60dcc986d9677ae0c1d054f087b811e27d7cc46cf267fc9af7e7722b48512aaeab819a2e74ae60daff63897aab475d9e1ddac6e6064b6a854d394959453cd3096ae4ebf672aeea0b443c5ff99d94282711be2eb7593a9e58ce7baad54a3485573ad1fa79598899a75c8caaa2ee57b2f39b4bff6787d62b645f2a0e5c0f5d97a76b382fb7840ba8f492315ce621b954b423e5d1357d6e4ffbad70464071722b8573532584649d34f2dfc2f2b0c81e2981bcb5eac3cd21147d66b5d37849957a997431372c220b3389d7c928c2d12ac5fa5ef0431625e189c8ca270a0620a0eff1dedc1e34d8f00afbe31e6cc442c5527ca93cbc0b16693b742dc0015421326b33307d35d3dc1e7a1476e85c5a1ee35b002c597b802591ad206a7006657690c1f209340bfa4ad41f5eb6c7aa14e6f30f7bc3d95b61f52869c1d0354cde1b1136bd7c60760f77326de6cdec34ccc70d0a19b4744cd9a95ae4193d47acfc498e7fc753cc2b22ae81202012e04135efc2839b04cfe1ae04f136ac934a0a899e7d6d9f1864181244d3d22a27430bcafaafa0df12c4715f08ba658bd6f379ea4f8335e7696937273b534017bf3d971af733076254328536b1f6fc67b4e71be1e74b4d312ab6b301dcaf477ccad47b0bd024174549bb5f5c481d89bf34710b31382b3786061f2298bd49e557bc69f2119490b3b45a542d0233e9f2a2b38e70e3c584f5a59b69a7b35602eb7e9400b45c504aa4250c3876d5177bbecd6e392723cb6acd9467340fe954d9462e9c1370470f26b1d83d1dca69148e19c3142ccb0b7a991c21c924ca1077a465be1faace60cc0b01bffefa241ec4042610f220cec461239e61efe8fd9b02d3e330a47bc06e766c51372c6c0dfdeb413cf2a3bac659b843f922cb5147e435f7361b0cf5e7bf5a027ccfbfd3b2b23119b3f0a946ada6398acb1f6a9a876ce37320609ee66499cc02b48b4b19c785e2b7e7103566cf197e2f0634973c3dc44a2ac1946a56e0b734f378da378187d32ec04586d9d29aa5219b6a32d26b18947918485732c2e120ddeac25e4d63e3e7f24d993238beb30455f68b3abc685418010f5e7cd17635c26e4fdcea058ab82c5b82b7d1252a1a1caea992b25effe51a9601316dcfb45a8963b668c6aa91ecbe632f9210aaf7bb84b0ee80dda1f3eca7569c348cbdbaf3c488f4eeccfbfca19335d5a9b7b3c6272201273fa700b03cea2c9548271c4ff877e172305bba3fa3902dee323d3b0adff73373b2afb74b65c0c618468e4429db2c6f6894a82072a846f2226fab518f43166cf929b77d4d053ec3ce9da52b5184db5ff8546cbbe922c894fe79ab8919486df55c9a4786755f4780dadda052be50607fce1a3e3ed0d874e842c303d34d6b18b61442ce8e61f3bc05941856b8c84b1fd01718da49a7d530fac30c6b2d2b036756728e8f8b28b8e616538e01691938d95ce5071a7d4b12a5201393c7a943e73076e0949656b76856895f8462cb077beefae976dfd3192f59c265d47ac363d8c7d47d2465061ee2e3916250b88337d4592b2af08b8aae3b168ac2e0b754fd99d852f871853e4080561c87334a04049763b806c822501538691646168e0719253801d4cbf815b216de1cb3d53bb7b72779ed1cf32891ab55c6ac9e6570fc43738015d365b445a0fecf5e0d9663eb6654623ade73e15804a73161bceceb1cd0f4403b42753a3fb5d8d2f05c01dfc5c85b8d04fa7f8e342e9a20e1d800b6a5a9cd867f63dc0af915d4af515bd341900dad0bf559e72c0510c8425baee2eb3128d470704ff6f9ae168ff20be6a3c5b80bcff2fba6423ecd46f72754fc1aa47ec2406cbfb0c9740f2a679822adf8135c84731f3d72532918795006a0473147595a671598901b9cd39232ec98608326865e17e9a88dd86a7850cd82e9845ab5338ab3bb112303e24b37cf253cfb6237b48b50cb21e7fcc595ef08a860e94d6bedbe4c58bd9eab91adbb97a1768af5d6f72c4d42570f7fd77593ac7222a357cb78c08a8c7e452a621054e6c07263f18d84be30e03e6dca342dc007188e3a861bfa7d60486b0538d71774e42a3d4522d758149ad7b62cde1106fe2c4c60562abc0a35020d36a706810ee56e8b540b66df5f5d81a57dd78601c843207189ae189d51911afe0acf15c199f742b872a1d9725b3005e173db02c2c0ace2e6b2c791ae069fcb9bf477f1f624b53d28f97a63556a157c749b82b6c66dbff128dbb59db2fb6cdbf25bb78798bb7f7c8ef9cd48c08b3e8fc3a8e0359615d964fd1c039e72b9fef9512d9e61232601f9e9d5d26c62951c8cde8ab5feed1854bc900b9101199ac6ec8aea7ffca5326e353f9b3b6a408bfd7edf26c45ab62f43c3266f7f03a78305b0b429196c5d69093f6b3d1909fe42268248d831b17ecb0d989808945c795f9fe60a8515fbface921a29a5ed92728ce8b467b2bd22d3e1698e41d4170cc1010d5440a857960b15170bb6962250cf4d1a04201950c0bbb035679b83e0474888e41915bb1010175697bb358181a707a49849257d383e4f7d6a8869e626f930aa168fbfb7c0dcbc56156ec104b3297006125cca0ff4363741e84b9a41d55a1b7acdce4cab21d48c356160f92e99d3dccfa2d69bdf0b67cd404be1e9cb2f8303cbdb0bef3c19612e7da80674605fdc57943c1103c76e968861de3a857e4bf92d10c9268b5948e643281cee8b924c82a81b7efc1e863f75186617c7a75ac2ece799c201a63f418224720cb8dd9c8bf0f1bd9aafae47222a9ab8642d4173f85be8373c18f83cd5eff7118e9ecd564c63c0e3b2b7961245f70c8e1e6ebe28e24e2a6cd08a0bac7704204f7192d04267804614fc9b0d17f2213f27ff52d11fcab1628c0e3eb64121fc324971fc21d650676c0627f70a06dfd322950f051b892356aaccd519f13d3114a354c59e2c4c30fe3a353261e925a7f2d058c63d22f9aea78bf37802465bfc2f57dc81f2826f083a2a004f6c287c7ba9b9f8a42197408c0f3584600daa523e7ee5b26d7263f7c642f9faed0218e4ea20987f6ef7a22ee5fb94363cbc0a6ecfe6980e404d941be9655ac822e5c1acc273af5a25003dc96acb406cc18f223af9044a93a5390ae2ce3c5b946b63d51eb6f386183c1746e93235b8bb6c2868df89fe323c6150ed26c740a60e6cd662092aeb1a53a86db8b5bf18a82073e00522cda887a224dc2a45e32abfae4f91a041fb92eb1e443cb2e3306b5ea3f306e511325a4354794346ca47d0fa19fd6e3a3987a6f860e6d958aae5ebc01e4c8a06ba6512454ce7cd5b5a2d075ca248b7b66cde935c7a5906969eddd58b210e9680f5aff5502f10d24f12ebd7cf70c288bc4d2423a0959846da2182fca084e2f223ecfe399f5246ced339a09808a33a5fad258a0e0685b2bc5ed7495c978290d2b572cd814b0d83b3870cfa544698a0aee73a1ce98d0b35370cbca99533bd0ae19ed112fd1bad8c9d306a275d2dc6f5c74e78ffda085d71ff2a317a9582e0e46a22aa202d8d00211f858cfed454ebb979a19027ca1f91ca14ec1f6de84ab044bfbcaa3c1043a1a882106a037242f824cef0f749ebcf4ea97e2d09f1bc8a69138700ef28d3a1738ea78ab532c9e880980ee373002aad921de829b00134dfdff31edc4433cf75ea7e3b926a28bef56bf747b55ae964fc79e23248b0d7ea889d400cdc88af0cc231446967ff42c397d150e8bbe8a9e745107189d6f689678a406decf470d371b523a6597c51137ce355ae32758a2700585064468e3a9fbbac264f2538e36fae4eab7599a22efa42d9f24e881da9af0985b80d27bd57ca0e8eb54a2db1a95f9e2d7dcb680dc30f6b0b7834a188beaa90b1e62bb08bd5382f902ec687742298b309aec7968ee0606d66717730af94df291169d157a7061a2775d8939f87a1cd078f9b0585015f6e3089cd0038993a8f4dce08d3171a12524873813ed0b713a13e908cbfc6e906a4a041c928e0b529dbb57e7a717f26057e4b000f19d12df4c9ed6cc0c5f5af9fd2e13437aca151e4a94a4f2ec2a90a7e33fbc2246c3201fdcbb88bb36e9a49978e4b435b9ce3655a39b54ceb2311c45618f961a898d6aaded8a604bc2457feaed382fd44c4969db50378ad46ca41cc3fe12294e638fcb21d829d9e98b229b6efa92c2d482b2a6a89fce6fedd57bec9ec01130552488d2fe631af81f542023042b08612533037a5e3f5865ab58a8b1921f96007ab22d80cca119c41dbd1ddb06a7515a8beae023a54a5939d797b1b8b86e84e5c524b1f813f94ca545c0f8f266e51da2a451aafdfa9166e1ebabeda3efb7454a8e49af62d0fd9fa2656f3b96b7d122a130cc21609fbdeda2de32f067f6294c17108982bd22df2ffc2d0ca8086188c3739798ce736b776ccf5bfbc012a686f7b58d00ca89c766f18fe4f1487eeb609f567a3d02694aa0439c4dd57b6d0e40fe2fce50de1d77c9f8353f77f17ffe9872c4873bac2f954f17f32e866d2c4eddb25dc36bdd9ff20a17d85eab6bb9415568b6e51d3e09ea8e26ce5798b45e0a291e55da6909759fc532faa2f4a68b32f0f2ac023e2d3fe9b401467a650aff4061cdb66e2091b47d89632201013d89b3a665c40b7b634371cb5fba92fdb60f6cd2c73022089a957e079311ac1f2707cc117a386e1d48dc460dc5e9cc63003072752af12d7f95cfc4d70049702c6bd0b4b3474969ee473305c1cb6e5bb6071965865fc56c808f6621b3a3aeb3ec00a6e0110819d8652d4107ba61c4cc30932ba11e7e08d250ab63d81de5ef854eb1a30becbefddc86f009a57014862b9b839894071dd83153ec241b8d2632c37bb3263dbcaa4d80a2b9a585e6ed1d90a148ed4e5432af706600e0179a672fd7399595bc882ee6f19074c65a97b0fc65dbc8851dcdf96c3a805f572c30e0e5ae64d5d39f369c9e6b7011279e4f977d9d8d1a95513609076ba22c004bbf5c2822ee0ab01d244f4dc426dbb2434d3810568566de8bc6263db71ed1cdb855bfa5da65bab8955b13768c5405e82c180ab55cc29543dcf67dc790745acd1022ebca68e7b1b5b93a8c654e02bd8acb8b01a3d409c701144b30774d594ee25d66e0c3922d9f36d231f917249a93fe6505f27e7e85a80ea425c41ad503e6425f14731cc76b347f4809b73e0ba0a3872c1a8c88fb4b1ce9f7aae55bd9863eac78b3a4c7204356ff712af21622db53b4e1727eafe6b07361e00f6abb3420e6a484ecf46be8f906022107f844a205b109508b1dbb8c28c458e171867f27b8045a75e98e052a8c3bfd97907056fced2d4b7db7309a00343873ee6851e3a876f8347904556100e494d7e0943793c441baace115590d333093918872dd4e17e6e7c7d1499265809c126405da929930c7172c2569880c6847dc3731af3c61cd1d36ad66cd29203433f3efba3a0cde697c0592641bb2d28468e025069c050ad96f99a98801638c0a00ec2543fc8bb4061c8511a7f46b54cd0f7d4690e819ff28f055e0dcce219d557a0b1631dcde5203167975358b0adb0dbaa1ce3ab62c936694a7e0bfe4c1c7390dde09f787d9b49e39d93954fae7bc2c9150624eb00a08edb417429ed62e230ad88508555a2f279449c65f956d44d7254e1540ba28b8a4de93e372e09e5c50686cdf3535d8e3d0063471412b28b8c39c569cf9843933516391d773182ec5c6fe89c606168a2d3521587fcf4cc8cc697c2d7a551192e620e0c10317d7b0b214138139329efa565a5b34530028d038082cee7f92f15d7cdfe088281d1d41c866d51c0410225adb9a24553c3038d2be905f091e87339a0688a164db9d0e003b8b8aa8b5c87cbeeca1b7343de649706c9cb1d5fae1d3a092eae9c5dac7fab0b7674fd6de29bb4009b680ec91ce66ffad1f9a232b006704e7be3109b9291a5aeb73622549ad22d8f15d21f1d342caaea557cb2733e44751ce8a0761ed7d63b3da9b00118293a5cd7689f4898e286dc32386c6d786de90d7b72180b1498c8e568163c5e5ead229e75296e4b698880a39a907fd1d5856bd248527fecee5fc81236b76bdb7a498aa13b254a7342eef6d2436c87f71d65709567710ba419783369b39848e92a4093a20c94cf953af3ea5eac1f6b4224fa9331ee02742fa05a8024cd879e549f2663327f1449472dd6ec00599b43e3b215003a3a4fc9f4fe63171d28bc59c539095ffbcd597e3ce513aa554d32b31ba24ee1dfe09f6cb2954cb04fe2ea2144aa5c3790b617ff8cd2544225b5aa46890d3ee62536b8bfd07b20dad6a01619b34a5e6006f5abe47d9ffffadb0e144444a1e824f2871722aee38b1fdb4380c029e5db43e71c501429b32ded40ab2ec4a1f83153a5b188c72eabce076000243534dbf0d3ab7428ec534671d70a07c3f7f8edb1e56554c3675f543f759fccde3611605f796221e6191eff8ce084caca6ec2b754875e844d31de0c02736e3054194ed840d08188297c38474ea0347cb113ce71e5cc763b53f223a7bd330497ea18f7c5b7ae373fd1b4a8e060e5a9b30a7aedcf89aa1d8d4b7622c6658ba9eae687256635390cd7c36be1ada6cad1eb421c25453019a2a9a78947bbd429c473fd268064677d3c393c9df288fb35ac8eead71b6debcc02d5df689a28c5d34960ab6f7ef92a151a806a4f174aea85f6020dbe2aa5f8e482f7b81cfa3b4a4e3f7ca0fc23adc3515cc9696556df352d94562d30bc9681249077a468109a20b22759246ac078a27dd10d5829325680a593c4229c20ac0f621aa8556ab14b9fc7c22cafc114bab13dcb5091d7eaa7af786ba3eaa966aa826ec53eaf8613d900092c4703ab7103a4885d9a11b65b27cc2188b87389579f9831e68c0bb65602814f2e0c8068da55995bb3af7bdeaaff420268ecc12652d0ca08c37b2970e23112193985d6b8d3cb9b8869cd16fbf5191ec55a8ef12d29c85e28a9c0e1b138e34946d09abf8fea823a544073ffa40d0a28c5fce35b0624eb37b7fe2637edf48452b42ce4d7629a3254c2ae26ddefc7957b2faf28dcc74073fd65dc9be45b7f05802cc0bdcd44741d769ce753f09ccba6b02d0e3a81f4dd6b0bc4442710db2003f1b837e5cdfb04fd2a63f4ee1002006b7da8e368df7b971e6c0e9016d25f4275f5dbe98081f1e599e51d017fc9d70cf00a3714882d87ef29030b40da46d6c1f8f3cced749dcf4200af1b023d3a067577caf07a5d84e6de911146be638bdf6f8a6d5d54559722814d96b05c226e42402fc2c0812a3d2b69b65536b764b23a094b6e57b07837a0b9fb3223469e691a554083d9341ac1028ffa76118b3352a57779e8cb74621f1e8ff52c94d82c19a4303042cdce5204959329b650383520208f6e6459c2af2df2c9f42921022fc432216e47d1062882b4d13a31aad4a59c4c05e416449fb33b17e0c5e99cc4ba958f4eb85ee3b6d7ee79931f6be1aaf3b6a42cf655562f0b41a6a43bb3e5db6ce43481a9026e464e550046f9207ee9aebbd70fcb1c198ccc53335a5db85ac17b6c2fd4d4a9e6843b58192b455912169416ab76fc2075bfc89fad7f6fddcb3314d588973f00e4a7d69d9f519b3b81b4353cecebc4d9258ede1c419660ec0ea8de27b1d0a864fc06f0930324bfdd9f3254176a2b18be5de1aa690c5055c7028630bc69e949f1928d5cfc4c8224b152b70f26ee2229bbb0f6d8f41764aabbb9c3f0ab6c15f6b8ad2661600af325824d165219b4c263db77578d3c974c78665b4334981402ae745a32c744f2c05ccb4fd0d6d502a24a20c28fad5044c0cba8b2940ba9e7afbc4929ef4dfcfa9efeb99dc1ed7746ce4c657c4a79a3934410ca0e535b466c715edaaa54712abbebcbe3b65b6cdfcb9ac4a0f739b701d5b87c36386e469b55f3d8438dd9f66f6bd106346694f06860714e43cf0a149ad29b699765ca648aead91084dfe4d9886cf2d89e0a7ae9a8a21b4fe9b9a269e3bdd2607559c999cc32c79b3d63437071447bb9932459d10aba7dadae278356a21f5be80d267e21a446293af7fa4696950e022ff8b235581e612f7ec6813228f65e92be5e82ab5ee119ca817bb3fb3db45d1f5047b2bfa5f8375b1e9b2721aa9df1ab47a69e5de84ecfb650fc27bbd00be37b8471a83a971eb86d5956a7f5c716b331438cc803092b7bb9da9a42fae91bb7bbeba7159c856111bce1fbc7ea5ce5921b79dc0de39e23a7529a75e0cecb15a843b142a406ec62c9118360be6dbaa400c0b67af1bd19f08b520c872e361631306b5275f769d43414ef89fba815eff4fe8ea05562f785ec6bf401bfc78f71428b00b878605f1c125b2f4661ac5f6484cda4d89d656f875644e0f811105a5b5ab72da54dedf53ce17600cc06f109bc6bb4eb9ca7de58cfa560237efc866466beca57bddc37fcfaa48266e9c7557b05c81a370a3766f56502742131fe61e10eb0be8b99f7a9c8babebb6092bb089d97e4a7508bef67ebb16772ec18001de1847488e7618333d639c9c01ecce08f57b1f6418a77e4b1f63d481c255597adb9fad0db4ee23223ad5c66a6a787c39b10e53e1af1c13cee1932cf575f013a0fd38a600a6e2e12169806c6b4cee1e2d0ac453ce5b9cdf035a70fb8daa3533c1271059d6ae6a6732af8b6191ddc1b91ff14ebc016b987ca6e980221908ef09f55db2fd00cc2d017a1cd5b3f02aece406e391f1951de9c0f1774721d865439c4637ca00bc39a545d89acff777f2fc15e16a3b148dcaeda4a1818636255495bb2b05a00fa63999962037323ff73dabea335f4a36e999506ce4b406e8bfbf4270f47b8d639c2592e268c2c82b00f8009ef1d2995c462509424425916c9e6e68028f2280927bb533f89e62261157ec1691cc985830bbc886f415cddb08c8343afe27d98678ea64eb568dacf5338267d0bf6a836d9be91f101fa2905008bba8973db6a00b0a518cfedaea06bf8719a5d6cbf89542c07d81631652465a11aed1478983af56b436911819e8fc8014b17a6914bd4fb3988debfc1e55d9138a0b79e5babca1c49746cb528c4002df3a6b39b6c851f1a224b85263914e542c951c62d71ce9ec13290abde3da2296dad1567e24306d9b84194e390347c243d87cb1d9d240a902140af2fefe066748c430b910fe9dbcabf21ad6e59e358b6be6e2a32d542e9a9d65a819735bca549e87c3466b59b12f122a5bf0b9c7107816d6afb78fd067d7f20cd51b51b07349da96dc335889f8d2963b06238883db3a92bad7349ed3989eee5b22a1c98b8abcf3e84ddc4faf8e7780e2196eb74ff3c554238583dd69390412e0831caedb0dd269b26d4251264e218c2855119ce35e2fcef52b095aba3dd1041210460f71a45d1d6886790b32db39f9a2e965de6615ee317e60ba1029842ee50a7b6f2d6bc9b05b6dc9eda45be26a37ca8e4a019626899a3bb56d5a223c922099a8a3c27ca70291356ad9fc3a0e2e8a285a770718639c78371e7bc6b71c5d940e6a4b9f1572a0fb1c579fe589b7eea166783a7476870543a5b6caf720ebeb529816f5e6083227ab5d7a0acf02cac62397fe522ec74a0b07cf112418cb42a20eee6f3b8ba6984d98a4e904311a3b605638e9120a2b7509eb63832ec2840caa6735345550fbaf2286d4e5733f8662c7789201d99a11f4ebb17156a3e64bdadfbb380c3d5c86e5e27eda1042b4aac68953415bc2351b9134990594f1a0cd2cb5c7f7c4dcb3a0be5f81800b97701f160c7e7612221764f6820900e76408623d187a1a30ea51f84da9126b36ecb31a9c7e8bc9c212683d32c7eef8caeecec1749cf0e4f244fdaaf330886192e4b9747c5957a312abb0bcc14ec1dbd9dbb44e3300d24849c0b204337b18eb00836fdde5e6e68bb5113083f2c217fec32024213afcae0c5b29356dbff0b8cc81827311be40eab7b702b827db86c904d9095c6f30fc67754835325d78ae36d4e1779a2f0cdedee110176ed0e33b914953d79be4ff193ae69004a7664bac0912aa961f3111cee9ecd6c002dcd769f9ebdde12745fad7bbb6dd6c4f628ba81fa06b435d8fcc2bab96b4f2c9875a1126b41b1352072ece932466f5d391dc67b04e9ad54088aa1b7778f41d77b9e8bab2bca85c8f1724163d8564683284e2d7480e5fc0eaf0d1edacb79a9643c08695cf508280f1f51f63263efdc398c35927d9786260515172ec8676470283c1f1c58dc3ef20cd623cbd6a4b7862183fbd1784c0e808eebbc5db1cbb5452b065a35f4f3519e0cca868716b37f303ed85a81324204bed47576944f98dcc7466b62235834c2e30a7bca22fb7434b54274ec5a8c9541068778509c9e7eb69ac6b33eeed5af071f4a230f0c973f2f041e55a187c6ba462cc0243b5b81c71a41acf147f9809d58494331a2919781f358219e796fed5e86ec64ca7df12727370ad7ab9823553ce4986052907dca548aa69633b18c4f3bfd81d50ae89105f0d9f507a39ac9309909204dd0cc3e4279f4bcba63efb8c01fffba8a9a10d09d3fb50ae788260e099d897af4e4dbaae3eb47cc7b2c3d1e44c1abf5c4eb0618e52b9e76ea0c974742a86998eb24658e336082a06d68186f8d93d71ef84ec5f452a171243594875d63ea6684dcc0b10f44414e200add624c378bf4e0ba8fa3aa7b6d6b6d89119779a005e3c15e891e30269d218e11c142534a5a76e9d06cda843e5503e0aee9d8694247bd792593244ec0ad3406a5d0ff1064ff8f4cb0ae80c563c0c8ac64ad25c4be48e925bda086662563a5c03e0a47d94335b540364469dea20674b598ebfa5f79797d8f407027869510157cd907d2788584a18f46d343dc4184a0dba002222d09571ddd6cc2f840b8c9bb27480f210a803acd14b89bdee539b1f3dc07847cecb5060a7fbb5e5a743d09ac5c76bbc3d8565e242435aaf5fcf6d253172b9a69b59e22dbcccf2df9eb7c111d383f8a4347fa10be1f5471427a8e006a5ba9007ae36ecf4b4c5d50c81ff924bc0fc8bf9187c2900ca35554b1d5008a422a05852781887488f78bf3a289c654b0efa8f5d163ba081ddf657027436728d79b4085f046d991343c1b9f9e78f44233e1a6e830e478bd424f82d4c58e5a3fb6790ca6abbecdb51f9b9c6a2a334abc901acf76ea5303b3cb883997f457189978cd07bc4c442ab5c09c68cc147168d8ff9a6cf6afc44a450b47c0b4a880518b4434149c96bafa37f21bfaff5933c4cc2437e199caa81189eba414048d716af32508adde658b60b1371d25e36b6ec14f1478c169c3605ac5884c4749f93713e5119adf3ebb76c610df25d1385339ef203b535aea918405e05deab3920b9799dbd39eaa2ac011bb1a02b311f1af11d42047545b8b83d844061ead15a08c52cb99de9b3bc86e4cb0fed13d15b510eec402e409583a440142b294e4d269ba97ce6260ffc204427b52285ec002ece9cc2153964eadf8068e637ffffe191977da1079fa9e4bc018bbe86ccab42e68ecd8cd96a10a5384185f7141bf9b351362182161f9bc38d1c13cd5de2a885097c780d4631914e7156bd1a03d11ff5ccccc41321c67860ec5cea50ccc46d193c3afcfa85aff237a2dd631547e5c4a18368c60265be0aeb6313b6386c3ae7eacbdab5a821760b0cd06040d5e07198263a6852b18ab4b9ae154e37412ef1b661053915baf36b2398fc1deadc056633fe9719d13d56f6cfa2a738f84f5d1d20f5bd95d2b87445b5bc76c9814f126bb21a1cb116d7049bcff59bd117e6532d23261c73ea653ae0dbde37109fdfb60705c18983646ec2824f0ba47c4f6097be94919d745fa09ef448983f8eafbd6464bfd6e19ff02f239a877312d334279e226698834fedabacc49ccdb0537f2b89412c26997b658908873dd82da6d029728c189708cd3f17d84aaf4c67f8c94acb980a2d76d55cdd66700a6123a579da28faa012cac448f33f0dc2489d14c707428cc18f19e3899a6a8750a17d447061ee76031e6f246b8bfed106b520146b62bf861848d0fcd95c530bba72f38baf4ea18c4841462eb5c8887295cc975f22f141e9fe3324ce0d81a57e1d692ac1c92fceb01ba6f3e5bbe0a47a01f92cd091c908bc64d5ba04639d677ec9e9e0be5c9ca087c25e8c6da1f855ef79b252230d188ce21c579e38c6d777969d9e7d77118d3cbb0644889531f95f73fb2c4c48ea2a247b408ed13ece148ca8e8b83eee7096bbf4bb0a21388262ab5e425f1f0659aceadcc746752623c882e3e477ccd7512e646dde546f8460c7174d64899d661c403688698e93a1b37ded316179c58caf2376143f864d8c4e7cc3a0499f29868fc636a8d69950d629322f25c33b57c95d14f34bb1b0f8d579b93b17ab6104c8a98e14570ef4a7ece820896fd47c6d03b2625531f03e9134704e322d28423f7c69e91f463bb522ef899674cf0df291d3bd9c2bd495ecf4fe2de834cfb19a6946fde4a2a8b7f463b85b229e9a02b78df0ac2ee58b94da4867416453b0d5f314b797f69a1ef5115095b39a294a3e1c155b0ec7a1ac39f03588227f5cf0f2772f2dd9f134e522e0d36aa4a78d3c2d9958c04265c39a6d7acedfc08ca0bef173aef91868d419e13288e7d585d209a33d101e6ddb2e934c0f52f26ea2c53a683ddfeca9826f04d79a733612343368dc5765123635836f7292205107f76d97e8d2b7b852ef0e57e4a90ee123c13083ca8fe83263b1d02e58e4ec0713118b889ff3ad4b9ef396a664d7101440847dd00620d1c83a6b5b757851d1ea2dd742e7b4d7564534f05d0749fab2fa355bf2287bda357a87068686a3ce85583fa61d54f412540aadbda44fa2c727892e31f2fb1450f160c07836dba8d86068fc682a4cfba00a0db4863a36dc85195ec33c28ebeda24462682a0900fe0923d45dc9bad081b3170161d0f77c4de555381532403e7fad998131180ddfa640b70d3c2ac2860fe1dba15ba53bcaf7336340e37404413726aceec4cf8a8d55ce6dbd88e9c5fc5eafa8a5a3d0e1aa2e354b5d96558d338f0f3e7f9ac45af0c5d6a6e6af1291a79aff282f3815dc553347feab65eb898f566e7012ff642b4ad4b0056f2ab11d299ecaf7ea2d0b4ddaa2061a6b6cc63b97ee74bdbe5cab9eb61209274b1f26c5a69f5da16903a559b456711a6b4d3b3c8f5040b3d491ef4d6b6f01d935a6747e16af8a469ec662b198ea4e415d1346513342e73a455cc6d08b9e19d69d04b3515ac1d385269d083555d35d8ba2ad32121d2190eedc23a71ef453519fdb5bc7180f0118d1b357bb3007b5f2a6176ddc34c8d245b495f42b6d2ba79f89f96280dd193bbae5246daf03d4c841fa5e68cd9a66f408594d34d029458e8524b7e9b335d4a888abba195c9a286bd0a9279c10decad48f1f13a354424795afaa8dce1c3d60f5af15ae041ad6cde612c8e5ad9e7651506917045897507735255723aebc7069c5d502980a1bd870c3da87eda8fcbc86febb83d52409ae064298439aa65b66b0a2ebc5c222a09b747b08916bea82ce1395a8156f80f05ba8a6df96e319b491ca5a566eda1568c308637f6818d8cdec931596c19dec5391f5b3918234597152c6b5e052bdbea3c720ed53bb3c1a3624ca8e678a162c324b18f6b97b72a22dcc5ab8f4d1a8136ce0b8b5eafc00ebf2408173218b6e59d5276952b29d242f456aa34112e75f2e14451f8d51cfc96fad71a4aaf2bceea2432c1ca83b52a542b95e752cd370a998452a381402fa1c83b06f70dbbaec07eff4195ff373151691f5e630b7a62532dc9bf8304f3f3e13ddf339d3b09ce79f8be232205961faf0900a98a254d6423c384336a50d7f18f89a26a3b9a7c60d1cf2d28845779f6215c3304a83d24d8c35863da1de17097dd7fba869666e3acab6cbef2dfcbbc15e1f9e567d87267d2010519ccca3a015fd0a65bbd67717d9560d60f954aa6fe8e4184a4ada215c31203870ee758adca65f27c7d1bf422ddab119c0a067a86b73701314c0e897630710d4c13929a1d58ca89fa3cd257dcd573f749178279270a7f86f023df8994f23b4153be4a03c9208aa7a5a72146901099e32db45aa04b64a51c69bf3c8288a614dd626ac9f3aac2083f82eeb21f6b17e8fc116410930bc4a29560f765f12e70355ff536f24ea19a99e2c144b3b786fe8b404a1cff2a56212c3ce2be900a368c2439f4a83ef2ff70aaf0cd9613164cb76848a5ff93e6e30acdbe21c391a712ae3a059f99303d916771ea07f06ace68471d795cf9aeda8269709bd8443011c9c46124c67a521102289205200b222d29661bb0365b8960435ec1279e7ebed3cdfef8ad4ea852abd31a73aa7e3ab2fbbe5dc5cd2e440243b9d85375b43480a01607409f1fe62737ce509908b7c99a3a97ebaf728cb8940e6df97ae9bb57b857d88171b1fc9087920196ee0455bc36f08e0276305ded0b9b55ceae55a464e9aa125078eb1672e6a87e5b182c344d81c35dd0aa807aa5518eba0455507c29c16b3da0d9f1392d97f52713318b18c9e9a520fbe66ece0707578f9004f2960904281d14b19bf40aeef0ebda64c26e125c60024a90d14d5b40541aa5031536854363cf78aa37a8240194ea581e31fadf4315e4e71c6128d6b8c8ddb47c5abf67eff156a2eb17df07faff0d7f0542b179cd846ae4ba884fad0080161406dedccc3e9fba21371e3522c9de7bef2da54c49a62403ad04dc040f05446cb0cdf66c8fb6757bd8897b0d773a72b597215aed897adadc243d3dbf757bacc4e720e8934ac2357243e05f51536edb13b7de1eaec22640b168e4405b7a4eed82d11e50d80dbf04b2cabea2a38b6a3172245f5e52caea1920df052ee65de4c3bc2481f25773ce693d45e908d374188ddeaa34faa3d168f49546b7d1675a77c38e8f0bc39e7aecd23aeba9af28abaa2635e546c32baa82fa8b6bae8efed5f26fc630c71c45a29eca288aca18405d4f5114f52ed4c364da0b19b4bfaaaa0a7baba585f44f0712e9ad4b6b79128944fa4b6b21690fcadcb0e323fbeb71e0684435eb4799d6616ffd855d570cb5d1f08aae08024b4b97f2bddeee65ee0afce8ce4ff3a7f9e3fd67add669566a07799147f17dc9b2a73d9d4e273f9da0cd129d4e4bc4414e822c9a978321b641a753fc15ea929c54bf0946044d0923c663572808dad0bc997eca0b0a7f7ef54bc435f27d0ad5557a797aae8d90e7c27eabe50494a8a484b9a660d0b9bdd6b852da3bb255aa6f9dceb3b2526aff1231d7ff3244fde3cbde80bc191a26ca8c8522d1c373e3bdedbedceeeeeeeefeeeeeee1edd06c6b5b315eb750eac1793c5ab2b5655fdc478542e488b17dbb72c6b311e73ce4aa380164487b9fe110684b97eca0adda7fe61f319e3bf2e8c0733d7e0a761b51f3330d77f613ca84d06e61ae3b11b0fed18b8e6c5503d0eb434ea6fe6a4b4bad182ea601b2365e45ccfc3e75c1f8027b4aaaaea75aaaaaa369a576d67a3f66ec5433b6a5100cb4b15f46bb8f6fcd57098b3361dccb5d0834259a17173ae82105f74403b5ae15378590f6b1cd0fe8ebe8c41ab875f9a0fe7c6d8dddd1e638cd1dd3fba8cb1bd713045eb629eaf3b650ef2f3af1816c3d5fa2d1e3ace5caabcbd9b85f5d8a62951a93a5f2ce3b307b4217f33bf8b39f71724d07ede615dc2a6f07b64a4dfd63577bfec7e7e330d17de60080441f50d7d800c9afa869028a9706edd7b4f46e66dbfe0a00d8e27d35f45ed7e17b295196e3aac962b656f3a98eb9b161f0a9f6f186e3698e35e8ed071af8abf60bea715d35eed30faefe78fb418a61b0765e6cf6dfe807637f1e12886736100d774ef0217f32e259851bf84419bb9f9f05fc6a0d4f6aaaaaaaeb74824faaf8e3ed374a0f42d4a233da5943ea591364afd68f410f3813df53830cbdefacc7a4cebaeb79eb22e8aaaac2d86b96a9b6ced456901b082428e991b0dafc85360bda6429bb91ab48bea42a05cd029d403540aea0417130c30c090734eac0653e816d4092a0595826a41a5a05b502de00728537d445044504bb13e222849f0583059683c79eb63359246d2484c2693c96432994c2693c96432994c2693c96432994c2693c96432994c549ba8363d2c0534f840c7996d9579f57541de6bce498b6877438b6811458b285a44d1228a1651b488ea23b4e82fad87d252e99fe3686e2ae4793347a89c0c01262c58b43b1c397204e3416e77479f3ef8e0c312aaa6aeedeeee28df83b24bdddeedded163cb17af86533235bdddbb7a148581b7b77bf7e370d3312ce83fd07dcf8fb8755d105e8f6b1ccba6a462e760592421926357d64247a496192d2e540866a920a987a1caf249c5279549e5c2a8606e51718b8a45251bcd1c6eb8e10631a8a832b2689c443368ba606dbaa8680635151c1c1c9ef182be933dbf99ec8ba00d33c7fd974a34a3827619fbf0122acb36cadc661ad74cebf685ac36d663543bb3966b7703d71a3d60ed8a5497bad5829566d680156e307b68d1cf9830a9d98f1e62b93ee3a9d95b61646f0d0d61a5d23a7a8b74655a571a4d2e0c7e0da3eb2d48311fd9c30c7ef696b57da66518d6c39a9161d715c33167837d7809d774a3273d0da3a7cfcf3e2f47cbf3f31156a6d530cabec507fd8caf2cfb87f5c89e3e0eb768af8e461b49a31a0da3cf7e622f5c9fbdc47a8cb612ef50e793345ec23e5868e73b40a3dfe19a8ce7e5b0de7d98180cf0adb75c3ed34cc07ac0b73618e6d66a1ff0af4c2bc15cdbcb7434e1ef20aea1c16a20ae81ffc22e71aa170cd7670f7b589ffdc34645d0c67a13aaf5d613a0e87a33d637a1a3ef6f816b073fd3ba42ec85511dbd45b5ab9eaad42784fa86863042b50070952e1a50d0fe97a701868667b05acbd045a3aac5513a0dde47a3b366ce7a0c6e3a345d006ac73e9d09ddac56e0a3c07a311d1d80d0ce15159608eb7084273b394510209473b10a5c7f82a0832c39dcd110592f8a8a8a728a9cc09353438626f22011139e7c71ca29322acae9c721471e814e2229b8e0c788500e9122720a50912e4290104d5def7d2ec6c8c115ca511efc1f14601b980284f051a9307a4d122acc79efbddd7e519e94fa4f66699eccee7737f3f5e3f63b0cd46bab8108dc8d62c9c20a030820f4e4ecff7839560a73db3f45db222bfb43f65f96d66414f4c78c3cf4559ecd916f848704e4c8ad06cfe6d4f0adc603e2cfed062764885b0db9d5f02d869c97b3dffd0c43a0ccbed4366ab49274a040b61fcced6756d0eeeb7e3f4187ec43baaf4a13590e2c78394f09b483a9fc9dce05537b081a03dafd338780bbc8a8a808cd8e1078729ca8d16371a830083eec68456e604112e4b38a5e452f22afe43c56a1bb5a23e204f5f38914e9974f6d3b45fa6f28b24361346f869f99233b435e666666666666666666ce89a5a902f545145a00e5406d2b10f40b888c1070114495a028188f143a2ab76e3120bea88fa8c749bda98f088825d5c8a91aa03e220f905183280aa268ae171ad0f8dd2cc1cc6aeb70a0a630379fd270600db2522e25e6a8c9e3050b7d933ed75055556dbb3e2f44a04f0ae92595dfda46421042471e15f50d0191a502d1d8a1fc38dcdd3d1fce9fd1a24d0cc239a5bea11f943092fa867a882a10579649ddf733341d5c5c5c5c5c5c5c9e8f961933fc67b468dddcbc5b4aa2605a2efa7efeab147c4a836f5114653d46bd456157900721c4fec1fd9196c2ab62690f0b193bd0adbd31f6b204066a61ab05bddddd53582f4bd8dded678a9aff74984f04879c39e79c0f356a9bd063640897d7590beba58c1725d057b191efadd321833936c2dc7b1a46286faeed15d6eb2add056dcb7a311d57a9fed632a1b41e3e59bb1a3b612186c2dcf2c72cd08627cd92613cfa338c472625c643525bbbd9c97c3e3989f4159f5ae03a370e7a33fed833e62ea5c4b61af3e753d95b332eec87d291564d226a6eb3d2ae96efe612f1897a8a4fdad6b9d14a73197d47399b8fc3d6a4b4bdc2dc17cc6161ce37d3b0c781d72f9090ae51846cd53609cbf85b1208c7356fe3a0d168d41344ebeec6edd81e29b4e3d30ee69c6af479f81cfa12e3b17067352755823e1122d4a2de6aaa1999ac829cf359a940a88d93dbc7f0d0ddb141cc759c3f07710df5d97c50aa5ba94e24a4b91d4002d3678897c38b1ae0c442517ba5a8dd5f01d3b399fd3a2f07974e4089a82d44eddda19f18b5dfb718de4c0d68f7aed8bca7c3fe4ba89299a4bb7b576414942bd5399f5b87ab3674825ca161aef9497f4b2cb0a2eadd6d33bfbb7aa08c6fa7239ecde41a25706ef1046d7c044fc6df9928f1fc6131741628e3a72c57e2c981aaff6c826e1cc1293e51fddf8b4b54ff7844f5f6676c7fb1788a4a98f3270941e1cf397bde8c9f4e5891c7e0e973f4a550315a64f801f781ec07e19a3945058ba8a0d09b820600e02b10cbfe66e19a3745103c7c8493700df64af8a062df5ca342c530ec29092af62e18132c157b18ae1940c5fec27860d7f516c6e38a522dcb4ac208d5caa25a4a0c55eb61b866562b09263f9fcdcba1aea8948ea113f4f0ed8e4410d5afa83e844495ea53aa0f2d09aa6e85ab020a9f9cfef9281432aca8f05de090097ea8b08aa1237a7819c50c5c806da543d34f8217e143c500957f4d40778acadf3e49882a87d12204698b0f0cd12202dab9b40841da826b49d29224dba9f14944507f2b13a2d2867a496d5bc4e2d9c8ebe57835cef72ad0466e9168ebe68c44dda83a9157f164e2c72936a8118ba21a1f08ca442650260ada45a2b842449d57a9f1671374a6a00aa297634b3ba831725163c4a2468fcf9a8d37137f85de4cfcd5aa9ae58076f16314aee9688aa4704d0dfcf8718a0c3112311785b9f8381ca518b48b44b1886b8862f7a5527ca14824a42b49081a896afc98ed6c08961ba6a0cd0065726057efed07730cb71b8ac2c3f184f214d68b89f10895c29cd4614ecaa7e4bf9cee3ae116842402da5b4fe922e6e46759d0ee2b6908dabd2b1c846bb8c61fdad427235f4a292517557e7783f366644743002f077cf9cd700473ceaa8823c81d1eca881c7e606187c88823474e469c7c6041071e238ef8c103558cf8e1c929a38a114d7858c841c808273db0e0811e26b2b89460a88bd737c4044fede86349a8baa0a3fa8692ec5c3ed01920b0aaa0334ca0023aa1b860403329ac312865453594440a122a065494d40a0a7ad5379484074f2855df5012309ea05edf501224548e893963381b434b00757d434bfc84418bf0a2fadbf04fe146c7ae0017e341bdbcaae7dcdddddd5d7361074bdca9f738e9c29ccf29b47a3bf4c282610e3e0ee7ec2e33f60284d188f56262accb06cbfec9bc15f60da011e0ddd83f8167264461ed7a61dcba1f95c35aa89ab116bcfaf6de4c1753b91aab4d4873357e8dfd965d63b7491201bda161ae3fcba225fb0f3d3f58c02e788200bf9983414f1034c052839f2c64fc507102240421112c82538a80b218018a11b8a6ebfe24c8d881108be6f37282425c132310bf6429a38cccd1e463836562a0ccfb257ee89179df8df64d487c1b662d410d3073b7303894e06c9f42080a14274e9c043971d2a44913a0264d7e7e7eca60d24e7aef0d29f9a970eb6c60c8da1b52b2a416611c20ef890a274c05871414a23494fa9ed4fd86519a803658f2d344a6eee28052aa25507e9a38b9aa4dc9e573317d620938e5c4350dbda01d4d55c24e5e0e7f6a09e9a7769357c542325d962aedac380cb549f94bfccf9160522a0aa2a6288aa2a00fb30d50026a488a25345a7d4344b0a062f50d49812489d902eff1017a6f8804427589a86fe88465b10b423882d76894c54ce30a77576ecd6426b56eae2531488009b95e5728fced7a59f6d95b188f2c5219b30b423882d768748d62a85d062bac85aecd1c84ef3d2a5478360d142dce5c7c07caf097465b57a2d41b685e9bf4e9a2efa22adb341dcced4e96f94e16bf2fbcf098b3616b89396605c0c91a8d21baff485bd07d48f466ded3c2a29aa226355b93d2a35fb088b7ccbb1aa03176473963ecee28e3c3b809990c35f0989a1dfd751671bba1ccbd8ff38180963e26ca3ec25c6cb9c1bc17d235be0763a3c27f1d4df4878cb9a073557f31f04a942b254b5e22bbbb5b6481ee727733776fdcee8dbcccdd71b7d79b87b90c073c1bcadda5cbed6a8365200603941c58587bb48c1de876866fc6ddf9cdecc31bfa3967fb66b65acefb6267afe31111f817c3959999999999f93167ef21b9400d12b0823c995c74ee7951970d93aa3430a9cd40e5e9ecd4a46036501906a6e445b0c0964a302ec8102314a5e43c5c73a45461a908b4db9d51af1119f018dde743c263747f93bed70da9350cd9ae15f868f78d36f4c9f0773035ff387e51bb1ef738fee54ea7eeeeeeeee3ab87f529714de4187d29002184998d4a5d4a301a035866cb4a258cd2292ee078dc0158a8fcd0725ea1eee3783774ec8038decc7e8eae05cb6fdecc7638aa022a3ffc01a10b154e99bf23886f7408ce8e924be9f2d853899e73faf4e9c365ddf73964d97d3b5059fa4a67ef37b32eb7f8da89625ec494980f311fb4ca870152e5c32fc5adc41c941b8ce6639997f70a9bb78028657422b4b8dd171ce2056f8cb0c361fbc1e802ebc3fa049c4f1fd4dd638c4eb90b91313ae53142eaa1c72f519b4bd992e59c326edc32d09157648801c77134343737ad843e717f4c0c33d8e8747042445264f4e6e9235d7c7dbdbd63a15def740f12ecbb2ea5948bc1f0acd4b8b910bacbbcbbcbccbbbbccbbfcbccbcb4378b2a574e91dafebc9ecbb5098d2f793591b6a436803b7669c53ce1cd7de939910feb03b7ee3373a82d8b0034208a1735c630372f0444fc886a0dd0dce0915be8e135e8ed7833975f629d1deb135b8cb8eb10f4d498a9ab0e90591f0e8ec8295246f695f5005b163f4e8fd3a8efba13c611713f8e75f43cac8cccccccc2ca3bf187eafc4f4e2913ca0fcd637e0fd42b83dfcd6ba98fa989b5b80e943f7bb1a2d787d6f86ab5bb103c2ee6eadbddb77b2ec86eeeededdedee1ee5e41578b7bd21dd79055ede1b5dd3eedd30ba3ff727b91b76c730a7ad1483eec7f480ee47777f0168eddeb0e2972fe82e04d294524acd39a947a23419147068dbd2bbbba1dfc06f00b988436f7fbcdb446055551977f764b231345913743fd3c1332109cbb0bd7a4fa09470a0501f3f1a8dee76772fa5944649cd39a9f742a23a4d06051c55863e1918c8a7a1b6b969d5a37fb7c5702ffdae79839dddadefb8767c37e69028b11e5c63ec000cd80b5dbb6155551993289af738f7f6b9448fbfb4981b2122fecdb016621de580eed3c05289d20ceb412da7d88589eb875ef50dfd1ca1557d433f455438f811a20c4aeb1bfad9e1e2a2892c2d3481a5899d21acee9a863b98e30dbec37e0fbe079b7985f71dbf96b337de7f57dfccebad9b99b5fa98396382eef2635f120fceb97b3bf172a06057e8f75fd3abc0b3a1814174dcddddfd3708733e03f60405b2fd602e880edbd021d0c6df0ff4e548298220824f4e47eb15d3ac8dde0c63200873fe5916b41b05798e66f4727096dba8f48d3864b56444230000005315000028100a8703e29058281285da30fc14800d758e42764c1a4b84590ec338888228861000083100006000000619830c6d0500fca2db39ec721bf411faa0b8bb69aaa87b6bc3a99e4699d70facadc8b4616f7113492b7503dd3da74431268af1c661f8d3e1bae4c43b751c1669c33c4243dc01b7f53a5a4b8eef2dc2acc9a57c4e103f1f2389a74ee8d881fbd23a19a4024e6881c96a62da8d1069ffa56c541cbb67bbe5b15378a45f0b1d946d860fb8092eb589ad785ff5e47f5de907924aad70adb3de209e804ebc2052eb04ba6587c48af12280f30d2233134af76b38a7ff91d1c9f69e384f096b9478e9e7d4d4444ef54e810a7e3723f7adbd69dbca545c16685225dc3f51811fd48d8155d3cb4e89678c0260c3cc88861ef347314246c69c4dd6ca6c2460df564b1c0012648b15dd1a8dc38a4796864649c0881ebad56f02d7b7cd72f7b511453e4a3988b912975d8d67c6c2e28cc0c5f0b402608eb82acdc8f4b7c5bc01c2ee479cc9e60872eeb8f26b1b5ac2014680f2d2ebbe31b5e4a4a08ff0a2c97f4e563e3ecabb21869f3237294c2af8088dda475ea5e0b8302c738e5a8ac5eaadd4e263e4cd2c8047ca3f752b66ec492827801c637adff41981671570f19828fe8ffb96691be071ca394b2c2059b9cd611e8f3ec496fb587777af4f14082b01c9935414ff25ff5598f64ce5fc7bd6b345f944286dc84aac04144657430c9168328910150a7da522d937b67b3036c089673fb74eafd9ece319a6a35f417622137095c5cdd8af787d9c6dac095e0b4641b493d36180c475b6ec156e3036e5a9333fdd33168e7e25978fbe535fc3065ae9d035d90c10845c5965f562e8e69e2bf4c091789ba4d47d05cd21a68122b7ceb1c4ce0445c7544a64786d351a886f401531d5a62bdfef52130c76b5cbfb5398268045b60b4ad559caca55b57f5823273c18b79885fc311a408472733c2a01b4f20e4680b1840d7bf592b93af767440ad3dc76f7c772af41b38a91ecf541e44e0dda555bbeb760e660bed4fe9ee8a3abedf3f1bf9751df7500cb758df1b9121b3d10eb901fc2dc46cdd516659824c7b4b8a7d5fc0f9c75a2b02c7de3ffe894cd90de0b05dc3ce9608e39b5dba3cf66fbd081dc1064004db9e494714780c142c649cd65f4e4c461a79b91a0bf6394d379017473acd2bf28ba393238ba2e762a7a9e6977a72cc71f173c0bfd18a2edb00789477aa27db4780282c8aa484b7fd40aabdf2de4b24c7958dc12390c9b57a280cca9766ae27e04287d5f5832e5fd62ca2aff7a7cd4957426339fc3cc4033693ce6cdda24a18ca363d4251091325f62fd8bb931d7c4b7cda91c137b39d37f4079c06d6ac89f3cdaa757f85ee9270e226c4673180377f986cf3647d22c9102c0040516e93d1e74c10693d3bfc1b4f94aaac2f26d5965066951ee26e74ded6a29740d9466a6ddc4fccbb9994bb09b50fafcc4098dd6835aa0825950ce627b2334466a15d155bb1d48e9e6264f68a00eb92bb811e77041df16ebe38d4ee5490061c24b5311f6a30feecb655a5c33de247ec88f974f37f7d602f3cf0edad7aac3fcd3530733dcf55a2894fd3e495ee8f30b7a02421fff222bade8a874ee0afb507a827011a18d9063b46b1e9ac8e3a3318b8392004f6a7a5b3e9072efe219ea434a8f0931f4f81010b90be1d8fbef757437d5ac17eaecf2d421e4b4e70a19cc812336b88fce22022c90d5fb48810576792e8fd29d1a4310a0de300072b58d140d4b2793b2f942d1543f4eda42f121854302fcda1f19a6b5f38ece4660db02657d226d3aab5f8b3f7e9183a97d431c0efa548f6c8a6fc3baada33f93b899280ce287aca4eb51560d2c7680659d41711358c7fc8ba7d1a3b4ea8f1ba0b003e9e4246141ae6fc3cab86f5c3fd090f4888d39ca6fbe9b95dfe1fcccfdf1ea0ab5d86e17642d4c28b91b6e16defefcb0a387d84001990e7e901ca1c1b673902e0294d0b8b54c2a6674df52678571fa3954998a58fcdc80cedda227690c64307ad36e6faca97080dc9b7a20d2249ec0b52be3eeab07bb1fe9d39f8203a8e0901974b352f51536769bbe9af50340101390deee8e4dfd733c96a4e41010be774933550600f1187a74cddfa11b04daec945cff457857b98e0b7e810ca8600d7eddbbfebca2decb553fb1ca27cc42e3de64ab345695fc4e4300ebc714911061500214c130118f350ad35f4efb5b8bb9a5607fdb69af73ecdad46397c858173f4d8b76942230f63982deaf8f006868ff04e4d6bfc7292c75f4c6bf12dc02120df3f6b1a319bccd953e0e89a20405b35e61cfeb9b2d12072e8a032e751d4fa807211569477b30d9f042cdbf8b7492dd06c92d83119144ed52a77eccb3105d268baae0436b048f779f243c130174971a1593c45b7ae0ba69c4862cf1d8a5c891213a963d189d8ba7979b6d188b10a9311ce84bcb0c4a722147ef930a99efa7e811daa857fe3cc2dee922fdaa058a4633d886f5edaa70bc01b19289f6a8056c9220cc0cfa185b00783e6a6e0b74e9db6e06a56cd5204c8067c2a8c66b183001a57cf65cb7cdbcc7a68f1f0278cd416a57983d4aae02d3c145a6734355bf2c8145cb041b2a4dca4f3725b2aac207ab7257264804e26541b11fb3c0314ecab2a3ff4db83358debe7ec5c3a929975500b57c0538789350a9a35e118d75c88ecee2379c015c878e5714b997922a39935b2b691a8e5ee3f6b292442e704daa10bebb63f3c62e6a856e377ebbb542dff42854dda2aadca71885b6c2731fbc5e942f859101baf4154d0f8bf8e454a6e14e24da40b095b284d8df4f57cc20fb6b3958cb29e095af57d596ce6f16ceb0feeb6b6b7d1e64454e610d653eb6569441742284409811b4bd10f6256f0ac68b92671943f4ed6f9cbaff92fcfc146b7c69baf4dca7a11ab0dd6ef7a5befb76f7e72d64c9864ed7513e75bd5ffe236dbfad3af029da50c9a0416c3d608fbf2ad566ed05dc7590d21fe67e8c351537503dfa13ef1f0a3e44244577a5bd6bee454ecce90165be2736991e7b24052166c17b0c04caf30305df4379510aa8d7e23289202f6ad7f1aba9481568cc82d7c8aec34250745c4c54f81019291f91aadff1163b4a856038eec0f636c90fa19bff133fe53d45a89139b0e065ac361c8f58a7a8d89c7276e0dcc507367b8b9281f5017017a6599606dbd0d181b71d72185a3b21daf46b73d52db88cea842d1cf94cae0ae43ac2a7b4769cb9f18adf0283bddc976412b2ecf1364f83154c636ae5ced4a72e2bbf427748dc940f6bbf505423bd7754e3d45e10e8932cf3e8ce66fe620b26c072d42ff5f1707be207e533c4833b24d175924d0f3bb2efd711536ffca6038b2f59e26e5161fa8edc20bace8e7a84022d613d5bf49cf3346cce9763504f4aef48cce8bc7b4feae5b793e7e17c29bcd9ac69b9c9f58e2a8507c3c0c39bd7b6229d555aa5ef38762531641658215bb520023e66af4d82f69f1e0bfb7a8b9e142ed2f39690986b2008001f751da33883a55a17bbd538df24603cbbc5027ac98503b9e7db7f6042f1e8a4f7fc1b3d425c4fc9ed450182922df047576490312bfdeb79a842be13ed221c5d12875ad1aba2203b3a859d3b230df8b9382860b646566946b0487ce451d02d37f6a4305569a0cb63aba976491545b288523f8f3cacbaddf361a55b19f7164f16e7d36a9ac76d0343175dff5f68568bbf41d2db82620b05b992969bcb2ff36cad7485319ee015decd9006cc734b2170983429b90f3248aeab3957cc4758b3810c7b7a8e58c85e47d9cef26bc16096dac93479874cc0661cfd632c9b02b1fc10dad9f0668e29b798bd959bbc94284796ecdaa0b41478aeb9d812245aa60a3638ba70845aedbf1e1cbdb4e3a8d6e6a886f64a62652989ba6d98133ebbd9fe0d98640762a018b11d0898fe6734e8bb59bbb0ec6602e29796cd8052f849181d79362cfb88e8c4efc8869fa5acccc3f72cb1112eb867b85bca7de746843208478acdb8fa438e33f0a7084ee33d4432d41157790969054272d1fc91f6904f47c954faac0fe68da7395ec037b8b9c1cb590ece3933f02fb081585feab1fca6763a416ce7f23af8bf860ecad886719ab9b5002ae5f3dba51632d12872b95ad015cd7a5cbc29db1af563b6064c6d1f96f2b7fa83baeabff5ccca54515120f4f3165c101814871c9774a68a17bd96c97cbde5d9127f19004202c002501f28d2eb9beda57cc6c44874aec83c0f63aa0d5d6c41865555e63ca8102470b5b8929d4ae00fd10714c05347aa36318642394a479f65b6bf7e145538547962ceb24ffb88249f77f09865be61fd891ddbeb5b5208af8f632b03e913b14fc537eb1447f76d6a4fa982d3a923d85a6b8e4c50891de9c2541530fc7225e5fa98e79ee484b2cc4cfbe95cb8b206d020dae738c140ad7ca67625d958cd2bddc795660ec6263b767fa89de88ebdd41e17a1a6de0cb08e27328e27a4f3f1584a552b5cedf993e4e5496967be2afbe6c9fd678f64ab026090a2fcf835a2509f7fe6294096e1ca1d779f319c42e8461619e54b069b536a3dd9526311a57e8f90fc201156da302602598ad646a62c1e58dad4cf68b95617b1351be94eda022fcc6c9200915cae4a9c8f89d939db38752c0d548bc1a7d21654cc8fe3011c65b7731b35bc91432dd4dc5d46a9032d7bbb1fc1d978aa73400b5a06ae8ab2146977401aa05af4a250d38ef304a89f808cd3699f21e169efb240cc1fec9f294d351c3a14e8863465bbf082440be0492ab7b1367d4a37dc3a8a7627c966c42e993d492eee6247389ba1a71d7a4d7730d6997207fd0fcce99edce9288a107a2b8c5e161484ba0702f60a0f3d9002890bbb1038a0e223ba83a97e6cf98505bdc9bd4bb713e1b72f62dbbc78a25499488986fc7638c3e67d3acc6154bdfe88e883415ed9ecb489840a1c4f07ffed2ebe883a8006afe3c2a7873711356ca4a71ecad67a040c7c9578c495f52d738471a31b58de0a7e3d0eae5674d3e39389c24d996438cfe7f4cc9a7fa7109edcadded9710be7b4e58ac4fe669ec16a13a5f02d267e4a282ea16a91cf9d7806a278049550908f9a888d6062117102fe4dace9d2c31d5755ac2e4a2e08de712a50a3580f456d820bb4984c60f7dfa5e654998476a84cb0d23b315f410ff5c5677db5f6a8f443c23a78b2d2a286228562bd7c38899e3bdf045fe9bb6af5736f57fd1ff5c2b66501661be2c8f28d2ad5609eb5f1a6f64faee7867adbc6aeb818efec690c7859c0b8c1ea647f44ee7c96983c750dd49d8081cac291f603c9ba714a74e7a129d5d953900a5f4852d6e45852556efff2d8e95f959bea5c7525d3a7b071e83b8a87fd82db67e7cb917428ade67dc6941dab6e27b39463bb5a194ed44158a92c3be279ee3df334093a454b11924c670f92a33c15550e9fe9e70fd8a21a8fc965b1638e569f4dd954302579b1588f08110757beaa50712340ab1037c8ac235ffc464317ffcc623133c0404bdf5e20aac23b30d80b6c4ce696f491154e4e47c966210879faff30aac2963f23065e50f128fd4385a9bdaa7d09d9db3c347f8c40430658181b419cf91b7c2ce5f2ca383d0f0d224233c0e0ce770b5ac9e71f712fa59b5b0547eddf2d64d22fa2275605ad0f062a89a51867699ff995a768d0dbd2cc69d3f38bb6e4939af59763ce4a85666273c05ee99445e557048411bb3a19c33cd45267b8285cc438d8d2a6b147c7300da026aa463df28f596bb5911dccee7f456bf78ec18ce820def694714eda3526918243a164031acfa70c5c303dd828e5189551cad7e451b41dae3bd4e377917ca2a95b4f92f3903c59e0b3053077565b2f588f865bb5556e8a8c1615d737712447b2f9723e57b2214893e2cefc2a5d8b20d78eb5c6a92fd23bf31c8e7407c254323dab6c880588166efe514c9bfab429a33a46f1cbd8e2c084ee8c24bfb9d1c9896a6473a3a686f0743b7d5ab378f098412acb8a016bc03f985dd3cde91f135b2305632d0f4687daae47b5255de545861eb3b20f5c40e0181c33dd2504b818352afd6bac1d28a681284428e66f3420497ffcefe20682924d1cf04477118820a2df79d84b2d6f35b43c6bda341a4b66bf276ccc31f5faab216420947e59399c148fd0a99a3d9a9049a6a649d4ccc6d643935106c5d5b2920b6364c730c6d210fd754cc0dd6f1a1fe385ae403cffd8c9bab5bb69ce52bc1090a445d0cd36171f8ca3bebab9c5c6c0b62eeaa93128fabbd122290302ba092c7da53917531165601f7427344cb1f90759c4a65a84394e74dd8c7803b85a27bcdd255230d5823f9832f14906914cb70dba193aa74f832112dab8111652c6ac630f3d6becf4296d673c8bdc6afe409753ce6175809e70b0f933cf1acf6c7ae85cc68df541f24ddc5c29611d3ed5b4a26976ec518de28218c08ae64f08a966282342377ffceeaa26fc117bf92b53abf48ad012ddb17832b5c4e2d964c763b705387e01694eced1b2d61b73a7817dd984f775e64983ee15b76a904ed659d35ea825e45c4c6266d3c2113bee94c60c325d7d4a425746f03113e8ebc04206159235cb266bf61a90e908bd7de5e8adca81273baa5e051968b2ae052212995e4c6632dbb8e86a00368b9ccbfa73648dd7e2e556c246cd7d89057f010190ca84b0e0f8274402e0bb0c609ad01843b441652920d56d4258ada457616b89f19a1d3fd7333164e0c0c5b5ccd368bbd932c20f882fa7dc634b98b8c4d6240f503e476ad7b71e582e24e26637fb841e5857b648aa25e35f2c45f0d65ed534868cdf6201322c6bac5722731d4ae9507d1a2909f5570aede40c06857e8a9e260d565920b722a2eff47641b7b6cad7ab42e8af57426a5a12e41de370da6b1fc06dfac9e257edecfa18d59d27a00a7bf11abfe316b12f682511e53ac7cb02d839e7a6ec9c13d5c2a9b93d9ede1471b3124f1bab3a5752c704f6df86b9f76b275bfffa8af3ad3fed05c609564ab3d70c0ce712531c88c7decfd741954f28595776654e294d143fbd70dfb19d19301b7991f30ec31a6f696c0c06302f14ef596d57590825cafa68016577e1df871f95fbb5580895fa1a65c042a84e1cbd1f9465003169d790a802684f4d25538d4f7906bf6dae0b3aad83d269645e64bf8c6e06900f8dc1f0ed7a79c1b6019163af7c2cc90cf917ccef5f114dc6cd97c5137e6099d941959cf649d421885870731db414029db4d242ec68f5c964c63e0d254a731d14152dc3a8f885818773d714af8375c1c2d7db1a9532d4cc1746ab14622a75f5131cded293558243a22e0939133212c16550bd00926759688db5c2cab6666822a99051524decd19c0f2f060bfa48007f54d1ecc662152b6fb9d71d265a48025ee742a3f6c6320378c4740087aa05fef3542b6856d48c950b3c635c40c2cb4bd2384e66b93ccca08be5abf1f5111a59540b95d002548f468b28a8792778c71eafeffa27ac448b7b8ebd50eb6fe6a0e5df021b35112ec41bf3eb424fd2a1bb0fa025e11da9d96987da677b08654569349fa4f7c6b59319b1c0a6c49fc05aa8316ccd447915749c27095ecf48168b762c02ab5cb7acb5cf9a04aec12e60fc6f59cd2e906a584925d2e8e1e9f50e5d9bfd03190bb1e0510cc664e168d9b739a3a29f116754b53af9013fa3365b8262c506950eb42ae53aa57406dafeeb2e699b773879c191490f2511d5e42b03f0fb5cc0896bc5d3e31f0484ff52a0679512d0dfc23f1bef9d2e06a544454069473f18b7b0de9437caa70e91fb4cddacefba0004f4687f0630ec7165803873761efa334dd3dd20fdd7f431fa9663a74570eef2a5efcf42cbcd0323531e93c42007a3c397f226366443abf342992fdf5433b720eafe16227931b243f190ae08a7f01461b74b689a593474b96a1d44b463c1394df0aa966e81090d2a7a5dd0ca850dfd700462deae0f43b094c8927f202a2e930d2ff53a9fb0df38874389d5333bffd078411f42c9fc52bd77a111f6fc30c6872c7ce5267cf7a413d5e38bbaf6a727f980b8edec37fef70726e310188cfb97e9deb0d28550a5d0ca0537171cddd1b8e07b591bb1a96b1e41ac4b09de2aad6ec96a3f676b514cd09b598043f81e66fae1d3f922af6c5626ef6cf6ac3ab886d35cd38c26ef959328127e7826756def08ae0fc45d398f4229a253c5ca57175fcb21e2d125f7457fc86da74816cad92d4de955873efc7242e4d14c5e5589eff604975ed3f48ed7f3a90e4daeeb7bbe3a3f1d5b16bc2a4a4ccf17fbac32f90b91800e4a470db51eb8454f02bd15608beb80f2fb194764136bc525dcbebf97ff79c501edbb0ce2e36e4818653f90e97b87a498f4ea38b8bc8d9c77c2eae18d471d2e44e431c5eab0f726559409729f5488de476f5ecf244eb596f1e4deaa57122807042f93926c76a38f1e6d63db612d19828bc4e983562a5613deb921f3715d3d0cbdea55abec8b76854ea06964e02a228a147056b1deed4c23504a62b4f0be9720375ff4645aa40df5ea4f0af7cbb47fe835e747b3750c6ef4c586ef1413c6c8202964548a5a968743d072120ef24dc5e5baca3366f537929df7e00202763097ad3a04f8ad9fc81bfb80237728c2c7409e5cf04577b4e6e0ef7225d6e35a439a70d2261b81cd1c1c4864508bffd0510853f13acc0e454c539c0f3943100ec4580c971e74e700d9a69f634d6518eae5198dcf423db299503111df4b7869d3ea6ec2da1337662cdf53724a24bbfc0008070c99600acfb8e59e809dc6c1322e1c81b3be02d2a7dca9dd67316d434c8b947a82216b9ff9bb919bbc868ba4195af839d29c123b409da9676a0090331d75c29333788c4174c2c4c2ba88f36e49c1930e34b18406ce24f152646ab9df76b52dad26477edf173966b9fb5a8a870e5b605207ceb197d5632e45c023fa87e1a39268fb29d62bb2a025701816cecd98bdad86af326623f39c642213624d741b08cb2b2038d682392198f7f9e709e53d5345650a510320e84eb5e72f8c9e643e56625a3bad1857a0ec34c32f6ad4d4a7264efa7996fd1e38745e9c6c39d79a0debfa29050c563151051ac6245dcca061d899e86fbe3d0b0975d536259739ba6286dbda19ce8d63a8f58426763b54e6c2a47796551542e8e4ff60e0d21f0033cba1c9b0f7dc64aa500c7d1a54f3f0f3c3144da09c50d4fe31d9e0d52e9b8576a7628954d29f8116aa2ce0dfb8a3fc9601f49208ac0947afc9a3182cd7aaa02038f43274c166c05eac469bdc8e7b1256f5e79d630a794a172d312842caaf220a0e6b472504c466e95325864961e30963f6553e65a34a428818b74ff442ba17eb2cf2ba63999eb9fbf51e18e5d27f8a4c31022499b3a573beb5a7d0a0238b0c502c7901331dd833c0f865937ec5634dac009a116aad7030e899878f9eeac04eb1318a9051f1570d28d2c454f90bd93432844a9bb2b39e580d46d94014badd694be523c5d52d06d6c5f89a07478321753d8ffd3192e9abca6b366f8305852b48975e58e75e5c729e88a10fb512241d5a09a85f3869650b3b0bd3e0a085bef15cb52834e571ac04a022559e15a66c33a9e25d41fa18a0ed0827ad0793c786590e3228d9a1ca8e8fdef0dabb297aff17c61a16b394e2fbcbe170e901c7185236a0617035117485810f789bf96a2e5b60482aafc10fac139811b4667090c9439be623175943a452f86c403df958a098b1d5cc7d40081c84ac3aea0b4371306895b976a7237d21c9f6db782b860a2d6ae9da552c8be0fa7a44271585f0e081619a82279b23ae730fb3c68a4b48be843c6eee7314ff6dc91a2c317af38c11523d401f6f9394e480a18605b75f6cf108f35a48b17cacb9217cb25fd444bdb5b02f14a20723233a2b075edd1590b573d00284181f9ee539161e2e6db26d935673b150319715a6292a5e7c7402ceca9d2a30f6b982bfe9274b4c2676c8081f288a4111c82b5fd37b732dd6d3a95d87c05bde213b55b6ec93ff7cd73174bd43fc7f9f2ad61f00e749f1f29fd8212793b5ad4f6ee603bb63916b0805323ce47190714180c28bf8a0cae6f7aa94e20131381f171b196784cf23be4cae7ebf1102967d28f909b440c9cd870600151b87a4f38595c1c238b38f8d05ec76a8dcd0eff32c1f2b86a767f55cb4b353a77b77858a9b44a9e80aedd419f9d2207b403978152aac7238833090311c3de0b3a599e559aff2f3ec46d0abf0592b6809a82a23b0a9823d8a55af7eb3bf1f2c317f592ac2c7e71874378f58968c0ace9e4c97dca33b02747a252661f59445fba738373e70be1cfe2367036e0b94ae5ae2fd58749ff892cfc61440841b0db76dc90cff700d347accf20a5f12d28e7fdde132840573da960a19df9d1bf0e507cf382bdc256d696c274ce8b07f01c4a473b2563bb41765d838961fbe2f9f425bd54b6b058dc2f277e8f66ef8ca0a367ca2bc8813ffbea11d44d4a4f888f5b4740040de5063f5a621bcf6832f60097e5b602adc20e2a56ac6fc72ae000092632e902db4fa0aaaff3e34765204e75ecef5b6998e22d5505dbb30911c7765acf71cd5d99f0ddb98cc6ff813316b1ac019b9778e6f3ff16976d059c880ffc07a9ece5f2b0347367bb2f2f22d489991834f206cda3445a9b1753036ad4f26e16cf8315ef78bc71bef26f6fcba25de60b7a040c1be5fa52b742a13f85d3227ead189aa0afd4eb9b0421731a8c04d8f5debb3cbd22f60cf69cb0f8a1880cc2f51445cf28a13e1135a4d982138b2e384b286369c0014fc3a0f4347d85469be949d18689863a19983a6afd86c1a81041fdc44a73655527905d166189aa0acea1bcf0576be2ccec56a15b7692dbd99f80e1954477a8a421d8565b025acecaf43a7838d6843bdefcb5712a6588ef2034b904aa02e8555fde49f901f315b1c03680b67a66c17bb267973ded5332386c36826c8159c11689bc600e929aede3e3dc51153e7cf5919295f3d66524a6a16b6649fdbf53811d0d53d67517c43b5ae039c0e06c184ae90879a66e1d1cf2ae1ad516585bd74b603aa940f1aba1f677333adbdcebae65431c1d77ac216942f53143ae3eaf2aa6d2f88304e2bbc9806f5d8ac15c2ce5f1697c74963582dae88728f4686998ff8d0487edf01e9cbc4828146b7d92002173bab0d91192b1f4523cbc0d656fe714f4269c5809a9787e3ae696cfa0369621c4c6e918cef968998344ba8f6d7929e503dd524d543435a11623940962f5152e0757999b50b4d61e34d1dc81477c7292e1b055608311a2fe2e4ace49936f59cd24489ce330a92f3b5604f3f9bd0c6d021b6afa8a4ab58bf22863ba8e6129f29f5af16161e6021b3c2bf41a65217ff1c7ae3e1c4c9bae7c959608a7508ae29cd60c797751f890a5ca1bf9a3bf8b3c647b25aac398a6a36c827998c70849520e788bf673530da214f5f09e65307707b49d91304c10c41682b7a36e44517830b1f6ec7cd9a881a36fe81881a811c1e606622b907f2b794c88918711ecdc30cb92a446d80743c5c8da88e97b7ef1bc71e9769386e972f2f7b733ce279a4267703aaa894c204bc3adc4ef8987835bd73330943dcdc2154c479f8c592923f4f844313638a55c2d05f9ec49ac71b41ec7379c2b147e88e371a8185621eec717e7eefebc73a3d4309df058043a41ebe764a7f78f45815293590ba6eba5ebabacbfef42114eb81e7f77b418842ffacbc25735af5daece2ebc621be6e7a9a30d762897186ae380019574732fb8ef160dff058c88381e63044ef13bf94198a5b4cffe3bdeb214d83ff2f1e134206144db48344caf10e4543a36441510263d8db555dc0029a7c2447574763096a271234a289504c3bd65b12237b5243cd3a94224554fd3b5c2210a6890b3142a8bd23c6d26eede53418f14971532f60199c02d12ee12e6aa641f04849e9b91b47d0814bef5f08f9d9a4afba7d35632e24b8adfd3f7c6e8d58417f1d3da9aee364fc96812c89367d52222b9cf398129e65327cc1c9ab8b893347083deb5a101a1864c38724653f871ffd813c497bcfddf06896fe00ef097a954987fafe804c774b1b74d5701f71574850c0a63fca813d9b8c7fe58f25a27342266b145a2783a16010de238083073516cc2aeeab4ca0b8b7ca8ab0701ee25a498d995aee1031df37e721d6767d9aa3f5bcd100d27324477b780bc0f3680e17c09ff2bfb93a3013a836a8b1c07d7a3d5f05f0306d711a46709c5c118c406c50e921d530704336f65c5ce8e70091c9ecbc5ed77e53b0752a7f5f435bc5af360ba561f78d283afa15d5b359691003b12d85d28123e8f1c5d78cd2557a3feac7735712f68ee5e3f1ff00851acd78652d595cce2fb82eb52f360ab0697c24a26f96e57b272d036336dba993a1c283d7d0d4b3322980db51d53b1695211cdf23749b2d62fa0976f8a53a38c0d1efe2071bb85723012a803f81dbc3000027212237790ee59beae35945668c4360f8d83a93017532cae182013e6b5029684a1a9b2d135f82ce0055eafdaef230d491203b71bdb4c2fea2b84e8c7b2f13859b16db0a80546eb1a8141cd35f142e00b165e28b96967f05dfed09af13463baa78614501851958623e78df0b62b39c30c8ffbcf107854157870b4abab1802a1d23a34e803127d920b0fbd93361e1df95822560366f78a0862c07e38cc0cbdb7f9bc3c2a310d0b7d7be6d8b7e38abc6421604803d6301d04d2e4dbb73c4721bd0de577436479e6aec21683408abf133b34d6e0e9817640b6598e858b5dc811ae80b7d2f42ec659b829ae3ab27184167f1837680fd2a930f3439a6b1332b3c29819230bb12666a37d55b1a8b99a391eb801f036627f16f428e60997e1646f97f7ca7771a983fdcee23abd2430a02b85317c02bb62c8791fca50919f557193e05df2cbf238efd89f77b6796db2271bf7a3f18bcb2c7e441c56c600fc8cdd00659517c7776356fabc6a4a5ed68db6feb08b259cc073d97b111ffc456ca1e08925ec6d035b458f694cc5e180087dc84ebf7aebcd2d3f2ec6b2a60f833a2dd3d4812243a573f333784d3b79d896c59ed5ce82b75da233c9e07cb7a72a44942864d9ab3f7b0dbe2d8c213e6db3ea0c4a8d1e334dd9053e5ebe3b4d091e843e11e919123a8f2b81272af283041b7afcbc5808b10c6374cda5d0b26069dddf2702ec3d1b4c4829c49989a131a213ea4f47dc9e2f6e9ca1b7fef9ea5f6b152ac3ca3d8e661ab84f39b5443651d43762218eed1e5140adc7a84c4df8c00b81cb47acc6872d18f7b011f93a734620f2c068ca3f3cad450b1a4a23f27951002d8167ab0f4ae078f894026b6ebc13956322f79cc3bc8b6a5c24af7c3b376ea563c92dc23064e4a94de1062e69370cb50463be9c035c51ddaf4f7d624256e2662390ba2ac6163646f85d14ad102078afbbfe53a360fb0a7b1bf73503cd61ff67bd500320ffe78b92acd60e574384c952b28f08a9565887d1b94c8e06f8d37b915d10dc92355af6ce5c46fd7e40a8158084189f70f83095427c1e065298822da4224cfe9f81b144f9e94681cd8492e48a19ef5712ebbe904ffd3e7e2a76f1b8ac61872b4e4d3d70794b8f3250ca3fab4711b6782f0f43b76213cc491f4744360d9940c926ba7b3a54b3311eac4d5bb34a88ef2fe02c36f1f113375576e6fe8459221afac69bd2e313360b1f3af51e505a2660352e4fe0857164e153db30c4c75d0850cf26c4c9c2e1ad2a38e5da13219d40adb6144d4e6a41647d32644f77c519b4b8c0cd6a7533dd6d9eaed33f233e64c8d17836e2620bb124164bbbbb9c3ed0b1baff84d61722a13411160e612c72790604b7184f768f0b2d859a22bb8b7cb4f6812ac04fcee4e23d89b3e1b774ac5c0b08d6e1f40e14cf3a8f6f4a4245edcdb6ae26ea775e116d96cf2ce388c3643cdd04818d1b04a405b749e0b4863e399b1a1fca626a760965ab791dc2a162486d13e1cf3c48ce192e651e6374d94bc8d698f5f7cade5acf7cfe7913e67234e9b485cd8e58eef5bb9a9ce9bfb7aaa6472325226d8e42054a45160b55596c99374732a30859c00194de7956581d72537cdde794ccc6e05cdcc4f5b465a4d7cb59736b73792829848f34f821eb4965c4746692145bd4ac30e02b428b3d4ec8c0158314a04733ff1be019d1621786fa8d460e781776cdfd27ef521cc0bbc401bd814323f30ecccef4b3930b91bdd801a05d2ecb1ea1fbfe466033811b261ac66cd9d57ca5371a62817c1adee589c7850ee5bd462cb9acbf82fdd033d4f4dffd8490bd72862767c6581e5ebd9a500d6501f4763b0249022d50b34bef0ea39624aa87deadb836fce51e019a37891ff44a9231bb0307ee572302859d663a3a2dd5d660db3a9eedcfb5b916c268a90fceca711791263b37a93edcbe64844efc7795ad47f5779fb8b8f207232973e26852c8704a126e8d912426e1a92391e7942f099efa9035cab30608a2cfc941e0f116b52d4f2fe4c4f2e35dd2232e9c83639238b0aef394ca534623620afd833b38915c12369a4224769695c2e8b1c2cc81bd0ccb074760af439ba244b111057b9992fd13490dc65b1d5f87790a66458facce5e67b56584b4ebe8184907b142f5a6a4e726f72e87c8c4573ade0bd53a8224246ab70c43b509af095d462b9c8601c93b94aaf65529e3e2c1eceac51464cd82dd55173d1990a9be9a5b1b786995811fd02de3fd349083425b397c268fc20c00307c6b7cd7a6b91449980530aefeffbdce60c264bb98b889c0e1a71028485653f17cd070564ed44425e0d03898da007a0e907925b10ab9c0511cd127f055f4c8435946b2566463c979eac060069c871897879c3da6f0dc331efc250f9ccfa2c9935421954ed9490094becd5d1978bf2d45f44a33ccd096579902727347e4a593eb6c4825e7211b9d95fada41009e678a183dbc644a93d480d4fcc2355f59e33e606d64b15d08f898a5da8b016bb16515c1ef2e860806a9a8d3f01a65bbd5e960c68dbd7d978c855c66893555b4eb430234b4651acd6a510a17517c65860174bcfe08252787a263174be6cf99558ecbf3a1a544d2dca4614cd6dd83838c76e8dd8a939c36e4e3353ede9835573f8b3959eee6a8e3810e81c03c23e2f83c0b1612f3cfe6e285485b7d2e4cbb99538a01b1bd6f1fc5ec8136ee1e0b680a56a3641762a126a59918fcfa7ca2e6e3d4366ac6c4924c7b51c5475045574170e4198af12c58bffe26ca2075df67c3565d47724623688442709b7935851d5d2873d5855c35474a272aa1fa5ff4b4210df363f7102b5fa83c00a45f814294dcb6b9f48e6951f5e5f220363bcd9d8c207f702e86a16604334d1068703408a3a878277fbb05fb4604909da142b72fa13b1c1bbd6c669cb3c9d397004d0c43a8a8d01b4277f92e52768460bf0a7606428a4441483996f163b9dd51a790bb1ab7f72a95f659b5998ca91bdf8d8f110e84d47256ada482b7f6a35dfa3932e41b4deb4eb577f21bb9a062037d3c6259f02f747ff7a873e850a415b51283523d2d9f828508edcf289320888d07d8da656722b8e33f43513446e8fcdc24777fb4b163cc83c2dce220e3ab2574aabc503fecf2eb78dc6f8dc3b400af2aa2193ec953498cbce61b555321dc8d6fe922f19b9854cd6c2ee7b2737fb30ee6034af074e2978a3fc4f344e5459ec608ee74d6c314612e99b5c23df50c94829ab445f94641a1a82ff2f4a7448f1f67eb1c266976d4d664c0131a9d1646e42553c8f14cfea466e4bda9f7d62c1eeb1fae90f59124abc0d3d2ca92a611e957921f92f89aa1da2d29f8aaf324d7045acf5bb8f199dd51c3258437ba8293fd1713e52765edd4a696634dbf4965c904f7102faa39122dabd01efdb056c31b3f18057186de110aac1df3c9ca1ad1c242e4c373094d4aaca35c1eafdcc2dcb00db36c4722a2583f514e7615b5aab75f65e76677193daab6c69674707132a943447ab86ad0ce5337ee3e879f67feec70a7bebeea433a22df16074b6d287af1abdba3c7249aa31bbed817861bd09bb9df674cbb0e48e187b85ae9009139144b7f848df2450bdc76829a1d753c88c41ef1d71e4c6a870f001b41cfc3fd899286ceede0ea85ee6830524b5dd79ce986f60a679523d2b0822e5a4113f03dd224eb8ba262d61885fa99111dcba3396e1837babaa3c158810f2754381981029c4637914f25eeea8d70da475d85fdd03cfea30e2f6738fb9dc7999f677ecfe1d99d7ea86b850e3815caaea3e3e8e0349ac78ca1915f96511f9185c9a2792caaf1e60a0684947da8ae3faf8099bf978923ab31978059b4162f70114ca6239c8b1bceea79be181d40315cf0d7e18ed37335b312f758ce366e1e09a79a85afe82b79f1c3a44acd60dbd1507cba83b67f8244416cc0707ec10eb48a84690886b703fd7e83320e4a4a7f522e8f475b28f03cc7aa4ad1a9248c14e4e4f56da84fe385fee9bcb40cbd628170f97c91b4454f33e58b19ddc40585e6f9636082438c6c7502edacf6926d4ee7948a11c25f982a4bc4c43b16814885b2703d791040bcb592f37363ee4b08c07035df00a62cca0884aaef03a91e0e7364b75aaf8e366e9592a48a5f9a38580874f63882e0a8bd08fe51c2706fd7bade3ee06dc113ba608f07e97a216fd87016b808c560e0693c1750fe1183a4d12a1705aa7b1c1ae2322fac71894eba3adc675cd71ff52264ed0414f7fd19f29c47d2df28aa4836e99438680a84c27cfcee0a1f3f9ecdeea8efd692fc0e58521f4f597ea450e24f09a352a4fa4ceaf7521e6fd619aac2f616b1b4a3207dcd85860bf4a5852ca782b96384f61cdc58c17b964b50cc0492b78c098699b8d2c5b3041bd750779f0541c2b26af96486856f50f36ad28c0097033ba447614881493a968ec6e1c2ac0a8d64a251b5797f28bee992c45c127cf5eece19d219b358a0784fe522f512d4268b7f344434b0d37b4e010a32135726f1172b7b0454a8be1063a5b4057646783bde62920fce672eab88dbaa35367fedd2eca0536d9bcee4ba9fbf36fbf6fc5d4aa2641176d77afb8ea020d85f369d8452a373a0456b174dd3101bf769bc9f4421c4e66984c45a58776a3fadb635de950cd97ae6ca95f411afbb70d89d0d608b4ddf7d17c2c15036e72e8833b018a6b70ea9e2126ee95670cccd3e92fac59a874ecea1b9da0bf29f2ea950ac90c9b49510335819cfc3b42df8b483e2af18d4b2f71c5069cfb94dde64a4583c953c28850c335692d9a8fe74a0db33938fadb5807ba10354b1141dd279ceef6cfc116c7e9b50b34344bf29f608ab34928a5ab52b25a0644b13fd0b6e3aebbe282e9f0a7a952bd2bae11007f8a5e0ef88119781195b653006b9b2e37617203ca8cea799d109cfcc6cbec556183801bbc4b3ab74ce0e0e6829a2b13484241f633d2027ab5c3bd115e522f75e4813d1f86817fd523bd41e41f48cfd18c7581be6885b8e92d835a8b10b5a20c3ef23ee23df2a0b72fd8bd6668a9a99d57b251a59699fe87815f6d10f80b416ff3100f9fca2d1c2907928e50b07a88269a4699641b8d0d5fe64211c012840e659b700eec8f59e6f68760c2f968253d407c6176775787f4ce968bb14fff90ae76e58706a11508708bb7c61c9ce84c37874d79320539938ece1b7ce704f18d3a1e3ffd9d8a730183b85f74e3631005cc9e26d9f211dc114f98133f9f64109db82818fc495302e1551cda66551276ca9a407bddba2d726ab83c25eb1d51e4becffd24f4e3f936c7edd67677a144c8fb89433c82986db03940bb4528775154fda142f1aa90a1404e27af28d61d89960c09f44d3c851ff6dc2e0079047c6f33b40c556dee6e921be06a41bf6191b76ac1ca53f44adf24a1d5b1b3a696c5d030d89f2adabe98147b4672e288b1c9cfcb6f00690e37fec3f7fd74aa071d0103fba40d48b5b382f9e7c336594caeea8218e7a488cb635ac9af858e544b258dfa0682536723c4c863103fcb2f5318fdf063c0654ae1b9811203d5026e3006ffea114615ff7296ef2fa504299a66f59270f91f2ec020f012d852f3c212f7200bfac42713d57754abc221050171481608b89f2236e2649f17799ffd30c832e9e97964da3e6f8dcc24723b6b420397445b40cd96cc1e6d5ab3d84bdb1a5c585c4b0b1cc030790dfb168840a7db118ec2c825e40397e796723a79b01f7784f1701538743fb779f7a1c66d2db2dad0e8e72a478cbb4f152f176814bbd0c5d9011e1a9d1f1e4717e6b27673d7a779613842a5daf596c380f809c27024ff03d3850053e820d6fd47e96a38a07213c27d4e6a5a5759a96f9e1de74335854153476e88451106ffa748328a40b74f640275884b172c7495aa8c3aa49cbde10d29b040d2ee1516cc170bd484d391a18c990c42ca34c37e898549a21a864a5aef70f03b6951d1c7dd0e1052a027050f304b976b010f020052d89d49417b14d35493e901553bc4873513a6fff3f44e6607d7d3fb2b7883482e623f44628fdba31e9733652e8c14783ef0dcb19326368277a36d6f93ba24f805810886212b2e48d45388c1a3631dc7e64b67bcee0c12aa4117faefe995405742e8d430d575a6e3dba9efe74972204a2e60988dcb0d999b08f94ad2ed590949fd8ef70f4c176349a6e95256a4956a00c8e5995e5ac59ec513e3131b6cfb20315e13a7972919a51a46733b7e89d8ac00e89409137c1df780c7a277f268c6df68fe7f00d6b53fab109fe23979caeb6a2e7c0612e0a6a6f77e07ed328346a8b652cf0be3fc848ba311d2abd1d2a1c74c4af640ed91b49a3c01a8da64f908843546a6840e5d28c2494eb75d456ca97cd04e38d1e12080d2991ce404a30fb51ee39fe09a4e97105574620ef7087c3a56091c62e81db16fec235c11ea66ed1d51ac33652016f9e42bf3d4f7feae752e50b41cd0b30b7ff5a0956f93a69315cc23e79bc53b4cd53bc652644c032d3e90a9b3614d032efef06bdea90c6eb2159002c9268b3892c1d29b7c2e6c54849baccfb10f0db530dc649b57f3520c8931e620381037d975a8576a25182413ec12c54dd6ed6ccd1825aabdcdfdde0caf170941f815715a9b67bb675afccf0f1cccff7ab845a4fcc0c07cd7c32544920fa40f1e662ed93b50d9fcbec1b616cfcbab15247b1974c1bc6c9a20b9974114ccc3a6e1a04c0579a5b8566d1e3741df1cb65bff058bd928419c2f532e80990de47d3e2c6f2cab097118f552bf00361b2808ffcbf00b90b281e4cd1fcb1a23049affa320754d6076e65bb0788d62d40ab1af751ae843ea7de9a6e7377076afb2d5d7d2e7cf73320febef8c9bacbf166be89530c933bed23f5800bb25a5d90de876f0272aa6817862286fe762ae5144eaba8be7b4e44e7767254e568761dfc76fba3ffe2656f51a98ff4c7a9ce4b6730e67f2b00ba6fae28414525173d7128d8d0a4ac7f4f2ec613d4da1ae6b0f62dad15dfafaf30a7f2ada23a2f36762b0ca86518ba996952386b9bfb0b0068723fc9abc03b90e13d83d0de2d8107da472bbcf38835a1349c986d417378752504e439749f5f40cf421643dec2fd6ac34f8c1f5df3aab52163000ff1d1bc90de68c83d4e9a35533fb237839403e10cf62b33d444f112abe62fccf81a40db91cc0268e7cab69e750499c76a7c130f0a41b79f96239abc0753b55036bb5f187a9d11986572f29292a3e61b5837c916c0a4539e3850c5cbc5127a2d9e131fa6283732ebe0739f9351c7ca369a71f18f974e2dde8c8448838978d05a94e1ad390bc69dcabad82444d0410f942618298fb73b1639a8c8933949d10fb00cdf8ab1e05d983782a10ced27f9e006d492cf12a4a7bdfce68f3e500b8f3e1afd7bd01227651141d674a2ddd9697034334ec1b49195b8dec3b345ed750503dc0ac84ff63cf005a4e42dba0bf658022d511fe22cd7e1cff7684b797059b200c18775aa123b1ba51e8b578e52d8ee0368a42cc03ee415c84a9db5307bb0883c35eedeea562ea9b552b7a7520fb8fcece365b9e587067ded0b402598e19e26599a43c18278c41d6d6c16a95d314167d2f88a502414b3706156222b099496b35a6b34a0865e61938754c6da504e111230342b0e48c23e1c2d6c24d1d932d390b09a6d198847b20bce9dc5cc02c6b76cc082c19a73a79734c13c6d3f26accb3bc63063d6eca3149bb6dc2db9b788c4930ebda7333643d0988bb9f309ff128cbe8dfa5f30cfdd8d733e460c0211103d226f930ba84f803ed6a06c41926a5624440a6b05ae1c326d4308425a96120306b98debf82790c894f3f4f0b069c220da38fce18a936ca9d9e3953935048343ad514f0414afda469cf521051b94f553ea3dc74efe3f9f156b6b9fbfc0d5abd78aa87fd8bea4da5f0c3c47bdead2704fcd4f74d31a239a3c2339c2aebe1f9f0760d0b2b3d765b9373aecb03fc0e041af35e965820d2b24a07dac3b29f6aaf6e322d2e8102cfe4177cc3fd961b0dc06c7f3985cde826ff92245c92dc014bb995d1fecd0d880e83c1405cd57b75361660a8125aa811eb13c046549e6f6090e6fe5612b2f7de5b4a29a54c32057f091a093e095bea6f9ec757a84425fae4643f2aa9c432bebfb05d8d0eb155bcd08bed2811257ae8d79227f4246d6253a92841c844b10df1a625c0125392945023257383151edfdd4ab4e03b0c2337503c187dd12f3411f580431841d080068884edd004956f6f7f2ac057c6960315464dde84ef235249f0c0054178924498179c31e54a0e2c40c3e88a0c780842d195249c9c11e60a144fd058bab2c5194a57bad880c6932b643cf9d274650d1dce380a93e2ae80a1e3f1baaeebaa49b561a573184b9636b4a4dae8c2dbe8d239ac735d5192fe6ac1eabaaeebba2e3042740e1751ad740ebf0a60b0740e7f6740442923092bc2732b8a1b38b032cfad1f6e60d5a46e6c0d77c53a8d018f7438068a27a6ac96d01d8656559022d20a586cbf22db2cc88f4ee5e274ce15ebde1dbd380202ca3397e7a3294c7c867abe802b6e7064df021e98246c57a38f0a5f9e3d86a0e6c192b88584972324daf88e995849f4f01d8389b02dccf10167b1bc621cbe49de1308831863bf67e6fe0110d63eb7aca44164679e5b5676904961650b7a35d9e7b2d2e64a6ba59d8573b5b6267503299d32ea786ef99085844d74b214d8f9dcb2a225a3813d35a1299144d6b219112808228a1529d912b63eb7acb840678baa634f28614378a7ec096184303e54e418994e0921a4714619238c114208af2813498011c2c8dc905645e82e1f330f6915bb43d89529cf18218c1036c738698a0b2a279553f6806257c5ae4a59152177dd0a499831c218219c0da146d9b0cf638c30463823eb446c4647c7085fdde2508431c289d221639bf75c9c5a8c51367cefeae69c51623b40a277f221f4694dced81146392984d005482b1862c02b46306234c2522d1f4eabc0c8a2f68c9ab453d491393683610fbb26c4300c831906a30b606c27a69e90b9877be6c9afedc46d9cc6e9a0a0c18dca8f1f2bb4aa9dcb80c79764447bc867944a61adc26017085fb641ef70a477aa1e3ab0eaef08e4c91a1a71d38d52296b21f757067e56ecbe9e0f0b0c8fceadcb252b87d3281b6cafb2ea416e460f4c1089a35575a1553635940d16f3946cef91c2b9f126ea1ce9cde33a28a87a384e131169d14b2f9b4b15ee229a28250537138dc4cbbef11d35d13b9a8fe80dc139d29fd19523ba6808e6bc21a221ee79d7ccd239f21d7d1bcd6bde77f402cc914c4c4c5d44ab641711b5eadd6ea226d2fc69e942665cd07b83d583a555d0122c8e29ab2acf839634e0685565fa928e8369555f96564997e96223511311f5f7bcb234d17b8273a45351b578c9e5a56ca22589e222fab4196783842a05d1844922cc2a68092a8909d38abad06a656fd081791e0bd6d830f8e8ef0ce6519d3efafbc23df2538d020b071b1f99604ef408ef63423179203665cedb9121304772d82331a4d67e948d8f2f93f9c1b6bfcb3bdf5880feee63e2b0af536cf7584aaf36d22bbd36f23ed6ea35e99c181f13784d81d588c859f6a295c793dda8e57681e565972cef7de751a3429dbf08620ca4d592c8056955a9601fd2bb5444621fd2657630c45d3ec730bfea1df215bd36f3fa0aa77328158cb46445c63842546186d26a093605d2aa4a434891e89152850f462821740d000f77dc1c0f93a00b5e8df1249dd850b9b47080e5db29c5810a34be3db6cb5ae1067118c24e9cb94197a67203237c3c7481b5356210f0105629ccb8210e15b0cad0c114d7132f8e50c2f976bea6d0d18cf0c2822b4b66841b2ca8512461452a78f2a4a8872156910c76601559b94185d694a22754605464450e524c2902430715a20853048414a82085524deae6593574b0387ce8e106563eb77ca832848dcf2d1f6ed04412592c7d6ef9c0041c3e6461b58e95167cf41e3aad1fa4e8d038e523942733e7cc9c50788850e69c93cae5554e99773777f750643de1220fb189cccc8c0c04f89f75ebfcbcbdce3cda04c93c7af48f43f4b50f358943ad9214c8b4286ef328c433ae0392cfd99c9c7ff3e66c9eb3f874398b59d606283ae2288bda7322fdd1dfa582dd215f5db14957496f676d8d749f159a47e7c94d8f94ce4b28454c7c129b4031ddfe4562b52bb8987ad4bccb0a968ab628825fa0543e79d4b4d8360e3d2cc030a2094af144260c1b264c182d8cd6535a08239a63597bf6ac4dd269ce82e69c107e6c66c685c7acfb40b7dc1bcda453d03a409ea007050dc020ad829650a4a55595e74bba486955e5e4ef85490347e5fe866866c258c7369a9b5d9fb9b7bbdb95ae42dd27a673a44bd84d508eba41f0063d2cb8bc016515b4e4aa026925e3414b4e185a415f1269485a553939ca85564f864b7502a4a338191dd8537c0f8e3062b867be4cb5e0a5bde165a3e0654fe95a884e002743dc64c4b0d0c3a498eb87db0bc33ea4d32f76238239cd81ed8dc8e636454eff36949f50f739e91cf9865a25fb85e1dfb827a66f986ed2bd30fd9c3c79432fcc55d4345ea494ad92d37b2e7f4343b0d6d41b7ad9ef0aee892e4f524824668f6daddacd6f6e4e5e73e26e4eded5bc3ca1b2b8fdc5310f9d76ca70f4deb08039bc371b1094ca665e230ac366cd699b1a37ddeb964516c0e3a1f788a752b2deeef1d07b8059847dac11b44afa298da38e19e4eb35ac6955a400f41706e644a76dc466faeea900f5cdd4aad88514162ac1a466824945da2b7fca2ac117502eb6ab69d02cad7a7ce99192a547ffbcc2584fff5ce31ef80f00ff767439fe4947d960fbbbf8b0ef2295177013700b16e01eb637bce4335e96f152c6e0c206608f1b581dd58f1f3fac055c803c6fd5350ca63c7456a239b0a7352cac5e2fce8782612947cfb0bdb56081266c57234d21fafcf0c276ac54ab6c81b2d1c2bc2d4cb1f049e5e2e8a99c5c7394532eb6936910dd38456908d2211477c311d2a512589d434fa2a2942ea594f224bd89490e5524b8777abb4392b661a3cba1972e6f601e6639d43ba797fd12bb9d9cc14bf9c3cb2b5ba01d7dd132a28befac16c7a13df44601e9482c8bc562ada4539137764ebb4fcb14c1dbb90e75fa4dab6694d9b4071ca8f8bedd8fe9f12404abfa396bbd9c7240b2fd51e1958c15d667bdf3e2c142c7dcafce85af4eb9548a521f7861587d29086daeab4e23867e4edf40f3f01bb3e9e7a499f389113eccf9e3a75f95ce2e959a7376da4f96138e1c1c3db7a488f249cfad259a6817b6c3b1414b121007144dabe94b980c2dba20adaa24c19c7a3bcea5b35dcee9a8ceb0cf37ef5440f231cc757a677baa2c6a9d0b1f9f7d9c03dd72d17d208adb1c9e5cd53b27dfbc7f1c3066cc98df6a3aa7df557ff0d8b5353bd84ef543e7e9a532ef90af648f6e80bc36cf1d7a97c20f7dbbb73fced6744ebbcc15ebdfa96cf7233ee800960da2d81fae70dd25c28753d3faee86e6c0ca252d046755820701ef0deef9794d61766c46a0d3a6de01d33b616eb622d0a9d374ef3b771a9f5e7aa7ab93a97792cca5dec17c7aa6632bf2524efd6d2ca49c3ac6f193b011d9b0ca1dc17a04797855eddc766c41fa31cc352fc1a7e6373a7c7a3c827b4a708debdefb113623374e6f9c52ea37eed33a78c8119c52cfb119d9e1d23305683aac58d45faee38aed62918e22dbc529efd9d3a1c3a60427a1bed4a43ed04687bb6b184fe927bd63824f7fb773a76e82d7d098702d6a23824979e3dacf7b1e2e3925ef798ce092e36c304c878661985f97d98cdcb88eabe4bdcdeda4f370bb19d9e1d855f25ebb9dbc5c0fb58abb3645dc31c76e12ea40ef77dcf69b848703bdbf719f9ed23b25dc0e13a2776e6e128ca877786cda4604cb7ab4c73d4176b874768e8794ce4349ac5e824fff41fdbcaec377362336ef76d26f3c019b11cca72c81eba16b53644712cd81de63bee326b9b9b79db42ac81ba30307b6eb211db7a34e824f8f567a07bb493c1af58e76bd55d5a76b5b91944bcf3622f4a65a555d6658c3c758f5146747b81d0c3a9fc345b84472b8742dc7d500f03b5ee6784cdb6fde692fab4b29a51422abeba85e7b07f3ea341cff0ce7329ce5badacd1f7efac9a7e7e42127f308e64c9ff336962dcac7f903e74447e2a36bb74b55b173061f9dce232f9f61b1128bb626db3514a6e90d25f64e95976ffed9ebc8539773ba4fc3a033e5f3970344c63b16e9872321fceccc0c8419e31ec997ab6397c8a5057bd7bdece3fa76375224c8bcd6223f1d13e0557df4a65534d52a7a0409a5484faa4dc11922dba95494461b62d37319e7e1651cc590e1d16b17c5c93886835ddabc83a1e651cef616792ee332d7a326a45f6237d88e8f9abc7d192b6fab00e3d33bdd557879cc33b742884bf3e91da97964a48c72fe927bdfd94df3598fb6dba52ae642ac76bbd74922a897c9b00dc8cf7b1bea76303caa2633622fbf86e2926877baa45b9153100c869a6ae38f4fd29ef9c575ad693aa0d8e849dabad655ad1d7537ce5f867b5faba6690e37205af4ad56cd59e374ec6035d7babdb722ed99679c4d91cc518ef2cc3394bd9dd0bfdf5c7314d7c9dc20cc3e3447b90fdcb8cb2dbf863a618ef9a65d895d8e9d9bb217648c93bda742abdee5526674a394fad6c23dd2aa878406b6e3bfee90db4cd827e5057a3100adc4fcb551eec88da155d2757e5cdee93c0a3fbc93eead52a9e40fac54122f9554f5f6a3559733a7340678bada4dc26ec74c0fd4d9c6fdd051b271a583c28fde805c10a88548e9f2caeb027a9f65476e0cadaaa72716f3232d58405eda76afeb87be44d242ab3a211f9855bf38ea18976473c485dea117e8fdbc40a23f24bd036b9ae93485edec93d3dba2e080830d8a6eb8c1882370c0c10645ac9f9ea560cebca60ead10be0706fbf133a977fa3e2cad9a3e3d7b8d1d61db5ff78cb21ba9474e86385d72d8f4ca75962b87789bde3ea2c2766d243d5adbf1b65a623e0567aa6a9045a56492f60478459f167bb01d1ff94497fc0e7d0a31f6f99c9bbc379b0f7ca4ecc8050e38d8a008a7eb24efee99f58561592af48c6a333748f8f3c654ef29bd93dde7e419a1724fa5ac856fe8089b397639261df694aeb3c8c9350f39d8ee0d35947eb2847d43f14518e1d01016c5b6736b0a2d6fa89366143cb6d5d2f203786eb5a4641e9d3d02e1db127adf24d29b8528af10a0f7cd45b6c276f68340ff79e840ffdadb5b0ac8ec9119028194426608e784537e33bfa16a5543dae3db7be460674d4308a1acddedd25bca08db77f0983516e2ddb0bb9b86eca655ec834fb58a2fb72ad22923ec369a61c18c0e325fccec20f3030b7480f03d87af9528e2092e51fe41ce5b05803ff21d0c9cf4de7b2580fe20c3acc8f327b814f1263c3fa18519ff3623108518d877b12a965de84127669cc87c21f383cc17325fc8fc30b3c3cc0e332b98d961c6c9cc0a66d2a05a92e8d223ede2dfbf6f59e1e5a7cb5b2fc756c59b6a555b91e5e6c151f9ad5873597dc2a60564dec131c878f6191b6c3bdb0ce36a75e99a569fb430cc438cf362800e324df89563f621bbe8a0001de4122f6e52a137a3f4241d074629ab80402034aa47162995e44a2ab8f44c49492957e9fce8ec0f10ca522f35d15c353519193dd66331d20fb6b396be46d1f06c1ee62f400524b572f065a9097418865e948717d62e6ca077a0152cbc157a487330c4cb61aabff0c60b58ec8b2def0a9d2373c55eadb22982796327326cc74c5f1d4a086b6d7e709691a50acbd0a62c841cd9fd7a091d47aa8c2c467f9f5b3f284d11df733be553df494c10f1d0bf6882c9670fddd6a49a70f2d06f9ad8c143e8aa280fb9683911841f29f838f1d0551882c5dbd691183b263cf4162ce0029387be81175cf0d061804f80b16380873e8215ecb0867278d8c5436e4141c643dff2b015c5120ffd4581597678e84f8887840d330118820ab428218565850bace234944ab5ea59787dc6a881b4650856105ca8d0c2a579e2aa72c31e1471cf0ffba04e3d4351f803f2486747c2c3bbdb79f0e0c1c379f0f0761e8ee32678e72eb4e28e3471bf2eb42ac17940da45cdd44d4953deaaa88b70b80a73a89bc065dd7153aab5cb715c1fc11ceace31cc49cd1ba6ac7855e5f1f02a486a501524ed3c6e50aa88ee38b2d4fb56a95dbd5e1b245d1d08b6fbd11403fba05e83c5528703cb1316dd716f6e07959edadc0e263dd541a993703b78f4d4bb887a1bf551ea168d70bb567a2ac2ed7a29c7ed9aa9e676dd4473bb0e33733bc892b95df4d4de0e42798aba1d9cf2f474b70b8d9efa10ead94dd9156cca71a2c125f35e7c2aaa2325ac5830333373bd52b27dee1dd931c219a5363720cccc91794e8eec32c218a1b4120ec9d03e8e015a96cdd3055be79471146189830a7b6ad2a42ced606b9e5b58b4bc8105cb6ba824f3b01f7a691e5513b5d23bdcc262e5212d02d2a2a7480f69978734cb439ff251a607a23e2dd6183a36c58783346a0065b5448a51f4806025bedf1143b80073fa3559c2760fca434a556f3fba505c803cf5327ca15226fba09461bb1f3fb827a500e6218173da39d5fdf84e559f59ea07af5230fa01cdb036f66b7cb036057914c039eded0fca8f07a56e3951a29475a8047996200ff4e8ef76364af7e918a38c1ee369a98aebb444897a273ea4568c1e522c0f3dcb50d6deae4fdd325ce61b908a5d1748669e51817de794887d40ef2055e21e198775d39c79871770b90cc73bbe515ce7049c92fec83ddae774eef1809fa08f1d747e5c6f17f4d59beb22ecf6f713c4fe66f881f307428f0ffd720d620343c866c2b07de2961662be8bdfef3dd7c04c184daf640675f44ae6a671cff3e6e06f4baf44fb6724b2f881c99e67a8a93943ef8482600eb3c70c21c7ecdce3ec43874875f69aba6915bf2dc8e58f7b196f401893b1adc2fcf2ac13e252ad62bfde2b79ffb0681304fee5d7f5cabd9fca42f54b7af4d436f3c53a077d1661770f787eb90f0c7ad87e19810f1fce00c1426fe8e367f7a4bffbf37e0ee0e91659fb4c193609f513bea3fc4e38c03d32e83c157621ee813f67bef236a9c1c74afa10cdea79acf9e83a7668b11d0caf53c6912672860c1b3d88ddc21ca115b311e54a0cae142db1582bc98a44e010c40964c0c4aa490d3e56cf876856dca4865e4d1f6ac0eab9e4861ab00a3a125405c9747983e60daa8244fabb410e7322b761031554ce00a306636cb1e255146a811626a4487942e9066bac78c5dee92071166bf59cf4ce094f5e0c2263eee974badec1fe07ce18bd83938c8ff7078e19d3d5cbbb257f5d10b0178741e888a69f17048cc593db057dac0eb988450e5f2f15d92df90e06a1285f41c0802647b71bc14310301624f858e73d42d44401b640116ff7bca5c597bf796e6971c55309625f2214654559228871040d3f60457f54583b6e98010f5364008a81bd3c155601b640c152c2802647236031164f56ec1d097e76dc4a42c103bda77202f6b2a27c83d89780400a105c988861b156f2b29ab0582bbe5d7b6f1428c09627c65040660c316810070d63c6ac7848cdc3db4b9e9c47198c8f5629ad9433026996657caa55724a3eeaa58c3d3ad471159c5ee77408211c817b7a0ce96fba8d4d2463baa49763acec037653c61e258742aba46f791dd8d59930ac431e2c8bfe837b9c7d54db393527d539d5a5cb118cbe43e1a58f3061178cc9387421beda501b6e65a183e756165c3e15ff621fcc4730898c67b258291b1620e39927bc9fbd83b0b33ff6e97326991ee774b8b1e0af7ddeee6518d7611a6fddeb38090d429ddd290bd4f972be5dfd194193133061bd0cd8fde944300438c6fc0c9c44c4830a3ef319843ebb7c5d21d8cf39a59431460861773ff651e516e43d951b108a5d975b10ec319b224e47f03449f59fa0efe057da4d6f47bd8fcfad2c923eb25f4f02217a5755636441c4d32b99c2cb9ac724637eccaf39903126a3718d63b1f4c0884e9bf6a43ef68514a8b7904593a76e81e6892bca4a9ce5a90f7ef04def3047a1bc183c4d01f1b48636c123207c573879e81a7f008e81c59347246311cab0dad2a7b8e7bd3be0c6c22132d9cc19964570af0dbbcba05f81f4ed3d9a07ae1ab6a77aa73bfb353d908090d1961c8cd468810fbcac60c59b8cd6aa38856d61c1faeeb6bd03cb78577b6e5dd1f4d049c6335b6cd700643c93856dd7b29ff7ad34a4b9f4e66678df499e5f2dc3631f3f3c2688e69863ce3704a9074ac1d7b88efbf176cd2fcf84607e5d8febae221b91cb3598f9e332bf38cde156a4fa7b7d9f675cd73f6fcc33a7a4fe0f8c83d5013da1f9da07585e46f150cbfb4b328af89ff7b2e5054cdc8274e46c8ac828923cbf4a72408f3f3c66cc182f22f494e408f3d05b46f19003ea229da4a143292f50f6648079a07e081dfa43ce1f287b7621f9ba29e3e6914884b0e23b217100fdf01d10ab034bdf013d61fd7c07c483a47fde85408729ae585a7aac49cafff0983171fc0f1a82f0cf67aeb06dc4734b0743df539e5b4a4caf7a6e294179e833575898c4736b0756fc3b7a6e89b18217c0732b8c2b5f592cf8926bc24933d057d2df0119de3f2d16be139e37203fcdfabeff36203f91c542e3d57806f399d4e61684bbfc73c87197cf58ce39679c3d277cb3aa4ecf751e6a3959913db7b41cd12401c507342891832e9aac58cb3620b703821f9b48654c26b68a3dd53b19cde885f9456d4df63621d0cbc7566940cd0f9e981f4b81af5437cfb79b0eb91993d9705ad5aa78bbf7d342957c81cfb466a6b05d955e8d3ac5cdb4ec739c5692f14c0e2cebc878e68a12334df41661b6407222634d08eae056cdece00b2f5744f9e8d2e117ac232d78c104c71803dac82fbaa85a0b2e7c6125aee2185b9286f44ee7382df44ea772a1773afb82cf0a5b883e3a0acd2357647cc75df0e091bc7c1ce33bfe5213e3434b240867f9e12616eb81665e3a9401487b23317ccbf0e380079a38bd136560079a4532f0257c3b733f0ef8f700a11e6f0b223be86f0bf2824c6082257449df15849c78e61ef576ed49e8eda0b37744e0b52972f9e5ed1ef786f83c738fae1bc2225a7878c931b7bc70e22527dfd6c011471c6f0cf760970f1072e29bc53db859cf1b9166f2cfb52b8a8c67b09cbe7459a2c505518b0b286d649fb3d72b7b5a843186156818ad32d8240b358656597c2d7062456995c996134e30adb2d9c5102c305a65b4f5644bd22aabda142c1043b4caaa06391b24308b2584c0b482cc1852184720ad9a88564bccb3330dc42ebe987154ce1b5fd7bd300cbb2a9d32422958cc3ae763ad589665d83565175a65a416a6f0b3d25a2bbd138b4cd32af7d0abcb5cbb976b99a6691946a77c63741c478561b005307b4f6e405ee6d16b52327618e6d533ef8d08e6104896dd0ebba6e47022988c71ba6ce9a1ece93c2feda2359a14cfb04956e60b3ba383ede0d2c7191da4b402ccb7b434f9813f437fc6857d4016d82eb04bab20cc5ec73e41a5ce94d807f4ea46a69421c11ca846861465a049f02715db6548482f43faa46c69be20d3d16ab536957a2a6e26fb846c317af7ebeec8c3a0c35ae7c45aad8ddcb78f743affde7bfcb4c73ea08e9402599fa1a2b49df67c0479549dd30ea5a83d9a47f3d66a384bb793ce69ef8c876f8f58946fef1cda450cbdaaadb4aaa8551d93faa5773cfa6edab75ed6c7251964ed12be6680a5def5afeab13d7677e4bbe8d7bc9df653b6cc9e90f61984a8c78b8b930ae613eb66a16f7867107aa1ac4be2ad82f0fa15a4bd5e49e8fd08f486b0d161744b8b32c6e968f422a65a635d66c6376e46611fd3b368e375629895524a998da0f5934982a6a39f3ce8140281e5a1d39453ea957abd71daa2a2c9ef705ae78debd881a55c5211e6598be71615427ca63380767280c73dd383ec70590002e83cf70108400034ee3ebdc8ead333d556e49db011c170304ed503c334e9d33359c27b0048e919cf9c934a1900e900901200524a13e495525e290320fd92544ac9f59011e99897b00591b79da0a03514984a593ba7f3d86251abe66c5afae95a2ae9724eecaa1e3dab1b904829a5d845fdba2895544e2d8d1863a4554746372075527ae375ad94927ae549e994d4df8dda8cb1e5ede275d14a5d4e3aa3943326358490cab4e0a9ee969cd55a15a3dc988d8ca9ccd64639258c514638dfec21d2f81e9579a15519d6af524c460cabd6c89820530ba6de321668d5959ad3a78d7023329dd239e9bcf24128e18d31f29b56d8686263094b4a08379a5c1ed22a5b5531c6b719997e39bf28398e5a17a163c68c89e3676c9e0ae6b9e58696b7cf2d377868c3cb73cb0d2cffdc7203c8fb68848e1933664c97ace3ac9876b233fcf8595983ca7bafa1085dc418e51ce1b9b5861994525a2f119860189669d80bb66d3ba12610d65a9999192a3434343435394e4a8ca089208208228c908a53e8d0482081041274d8c83cb7c058b143bbb9b9b9d9b1653cb4c7b1f3066f6b8d2c3d5797c76965740e2068880882121a4c354081e18ee39795018341020d2221a0180921c50d22a35a2b092a806d34a1a0498aa6830941600a02181a1b688848c0734b0d355e84e7961a5d680da2fcc73d5208bf844a03b841149610489ce1861a6c86194ffc10c40ba2e04107ac8c71da2194efa5c37f3641fabde482f43ff9c3d9bc799fbc3552ca5b538f90f8683952e2815e58b1850b561532ae58b5a798478887243190764802074b6cb16a77e611f241ca1b717451c3098690b26a5731cf04549045114ec4d0c1124258c52a32c689dc331db6a6d17ae1bce8dc0da7b88655ac824e398d5510c227c46f525ff3e2850fc21ba37c856430851aacafb58f0a3296e6cd3caad10d886dd9698f09fba81b900d62cf847db4765d1f01f6d1ceae0003643dd527d500e00560ce7e02f75c32b6a6c6870cb199a1f19172880a43686ca48d4d0fc19d992b03d44050437cfa76413fe3fde3a18e08ae837b763874c93d370e7dbe05d838bc1d0c293c741d2e83dc8f210b85a0f06307f79a700f05eca3dd867b35bc02b4ebe0de107764a66ea71ae1762ec2cd51738da8f15283456989791c704506494608e188279258b53f26e661006b0d2e8aa8d283d19655d3b80fa4e14e3e390ea85fea409efa83060596bf5528272f2929e9488e262c9224ad6d60bbc782ab466a55eb24bdf7b0a4a00756bc2883d583192ce6082c5bb088c021c988d370411149e440e4058d1f18a9082d586288c882850224d227d743af9a320489ff13f4d289c4973c5f93168ebca4e7e525bdf7e6e3239f1ad47003064d3e8879820d2116ec6005131fb092a61421c9818d2f5264b0832084d0801cb6ac4104031dacf1041ca159237cf792b8fbbde0fb3d102ad4c7748cbb38c83ea6572eb2208fe49ce97df3821c9375e79cfd90de518e2cb6e3a4c73ad2650a93f3083d4123071b0c9105076890b16a7f43cca39d9103378200833784588379847ee081194f38a1c2441c57300f07a404e1c5144f88d0c289553be4de941661c91392f0460719e3c438fd49d99cbc3434276f37a5cf29d7cddbbdbe9323f7f03fa29ff21d2fb59a7ef0ef284648c3058d17b6e325c93a4116f9c9aa5d5db9ca69b6553107e7c4127c7c8c2a4d66b284125ece235a52bcf248adb7cbf15d9253df1af6f12c571aa4c67ed7efefdb54902039d22ae9dc3499b2e890ca8c9d136304d23e4db99ace917605360a61bbfab201f2f5eb96345bfc888c3b4b038c1b60e0600fa46854904ae9d0a4404727c7180bd9f8078c09e24a0dc840c1104d56ec5c43b305cd1651897678060d443061c34b6b0a0493715fb1354e93c576a88f1e238410c53d3a5452ea4d5305b53d70a2a5d4a59472eac0f1a4c8a265642aacad4941086118cf287a4d94523a146fce491345ea26fa54b1a5f43dfae61775c687f99cd4dba777f4da10a1deb2a6d65abdd65a6bbdae4ba79d68299d8609db39c739dfd4f981121a454c814694eff1dc3aa3e9d99d80c29670a4440a0359733448d253b6c604194dcb76a86f14f7bc254cc884f0334d13f6391b00e6800219e3f04683c5c62a8133961ee7b9f565cb67a81969b42122fdb9f448f304238d41641f11514a9a1aacfc182bbd40fdd3a6482be98749a4523a3a10a600844ef9240d0dddfdb648c991048f033a36e58ea3ea71d1ebbafe9c7238f6cae1baae2f29f802838741e7afebbaaefa85894a556bc5ae63d70aaecbf9f2da3b5ffef2541b7fd5ebf4a66aacca71be54f19deb889919d3020252cb0c251ad6a906ae5f28b580d00331b68e790e395bd3fa7283c79e5b5f88beb33e84ce4c1c3a3acf6148fd0c1c563a7fd767c853e90541eae74d12350e04a94fd236e8e84008218429083bd5974bbf9921d8fa35dd80253a535e9bf8f03d2e4a9910fe27c60edc1ffb88662099f1c4bf25cb2d32ba7ca77d9bc104f770cb8c2b9f6a95986ca665359d283c70d55cf3dc0becfd03a6ef341d18c8e716195f628c7ec277cfdb85a65cf2d1bb8bc9f879a938d36ec9cf7a4140858e685ac9cb622c9e9cf0ce5b054e78d85eb47a6498678ea3127a8cdbbc72429f65596653fdf2cd3354a79d747e4ccf66f42c137adaf51394fdc0cff833af496c8a50974e33f7698aa245288a665e3dbb2eec06a97ef9c5c347c7bc68f2d12f977edd0bc3b09b6406212349a691a8ddebd26e17f49a4fae8bb06b6036c05b3539790dcc0698fe563ef027e82307fdc4f12ac222d7dd9c37ef66e6f3769b67d72673ba5d9bec16a93ebd3ae63449adb448a5d7eda6679ed95cce36d70d223df3acd50598acb5249867d335d764908c4876a15f977d44e70b6a437481054211c5091f299c704ef6960edd863a3f8493b3a1dc053e38af6b9ed8198e7f1cfc3986e1a3f1f4ccb58f192b6c337976796dab4e804cefbe746e7f8e796f2b0839019b7b587bc6efebe54930aecbbcb76df3cd8608f6d8fd41c9c878c348e93ca15c327c32cba2461d73699dbf139241e77fde2b01eab77ee26cec10fec4f5678d71ccc69f4e5cfc8cd209c79f38d4c9b3c82fc678423977f9e6dea3b81622c34def3ccb5c6e429e675986691886619ebdef34f601f9f58ba7b6c2461693df38b8a11c6e283f9d2e079a7ff2ecfde51b27c309e5fc53c2e5d70a975fee0331e779ef4bd4a36f64104564faf4c9d521f5ea0c2157ca29794f7d5e7f7a21572184144208e14fd0f3f69e01826d7f28ce06fab381de1ca55c3ba40fd65a9d372231bc0b0fe165ee5183649e55ae42970148fb1f073cd07ce8308636e2c2d71ed0efeb1aa74ca4a2bf8d3119ab0ac25990642f08760dfaf7038522a55d50108562fefdc07ff7a7c33620d295d88721b2987cd7fe43c53019f34a6a12aebb7c6afd539b9c80c9cba084fe0c42ddb14fa07eecfe3c311f1de807bea387de3d9f0e03a3c4a8b4ad75753deb98a21900001000003314000028140c8884228148301c136565ef0114800c8c9c4078549609b42087519842c61843882100800008808ccc0c6d400007dc24b134bbcd15fc2cb8023d2737381f2a38c0d6c74b53174531d5fa07af84dd27b0a87e603e9d322b39189a94a4768a495cf0e7278877827604001c1314a2015aa994fd0721df8a2aacbd9813532b9e434be01e8032d4a8320e14fe7e3f7b5bdbce5f658e32412d827ddce951e3552019f5dd142476e72cf4cb9a2a0a30daf2b4cd7efbc140c80150dc992b514229bb477e82670fcadec11e230ff089b384a5feab5d9a7ce49841fb2ba73d08261d4fec39f1ca31535d85d260fd78c2533c152947e36b61b2978ab4ff2793630622d9674586506f3d09845d25cd7fd434135a03c8eed3fb2a9b228f302c9d5497256de3d7291f38954bb68955242e1d2b84ff5de417ec77269f33da46f609550ce8c54f91bd49284100e1f9691f0bc4fe1efff3bb9ca17e7c7c1c8d2e63d98edd557beeca7501f6fb50c6b1ff8cda90bc9e13384bd21970a3e3111798421190c192fa447406ffc887570abb2a7d572d5e04e627ef1a23ca530b7e5f6d99f9c8d065201bb57e37f91ff0b49cf3196d2743d4b7b0b73a6245034674ed3cdd6d45b32dd332c54bbfd7f9dc948a23e25f0a6785e311d00a8885eb65af87ff00d10837068695cd7f1e658c13c67007b5f44d204796a77b00c1d8c9e7f540566575f82b9f10022d4147a7a1efa669caf914f6c3d845253567f96daf06e0c15a22e59cb6261ebb55dee751762f701c0c624de932edafd9be19c4423c9024cfdfe26c7ab6e67f71c3a7a88fdfc0067137c64dbfa0cee47aad67fc0cfe28a5c0140ad1264cf2379baa2f56e0580ccdd57b1261caf179449ecb9498198f9c8ec28af371c4d3a8f0d6c1c66c58e27a7ce4a0791a23578c5b0a6598d2fbc8306860e4018a8a18f605a5439aa96a22401eb12fdcc46d758ff16ee48b488d2863b21986a7f4553813b6bff51ef83ec0adfce868dfa4be700ab97e482c743d9e3c817813ad955a8b067f64dcb8923b05d6dbc6321bd885091d07de5c32595295955def6099e3d30bf7a86f79738054debec59424e68e0f674cba6b65244a0022b82234bd385e7ba010452e449fe2eed580890e7f5df3b7a751b3065a4157f1459d39ecc2264a21fb753198a6284d73f853d0e39c4aa3dc183a4c4f4233d7e12345197cbd025a06ce727aba9840dc5731d1aee0c96e0c7a134c830d25aaf0c68844f517e3aa571319cb03ac4ecde53821a3fddd657f3f9cf1050a20a3fb997437ea8daad1356a8db4916de48d88376e41f1de4a10d67b9f3e3f3c5f42fffcfe67d816abe160e8c37d48943d53f3d89b540e9e4861d3ca5cb01bc412a5419052f6cfc8b93f05b2e3683c666b3cd70cc1858ed468b4a269bc4474a61b2582f30824f6f46747b8871df4c8762368ccfb4bd7063de84c83ec3a1a8f9966cce57cee4317e97804897c17ac7a31f74789f83212473b273b5fda08862368e477647fa24270cd28f2c1adacb60df74c63840f499c26b4477b6585b8fbc8b3a930ca20aa935338ed000e6d69596385a0d1b0f7fc89c41f682648fe5f2b663e6bdaa2c2219326738a4dc20ec6960d9bd0a4b0f09ac0b03746a6253ea6fa2946338ba66550ad2011851e2041a884af2452bb03ccf25a4c5f4090e1c9621e18de1dbf797e5117428e66a081e9a70bd139326c12b13cc1a235789705b995e759f9971e752a90941c7455693b4b9183d92ae25b5da5817a33533ffca8f31867521222baadc733f27de65c93647105f85789b6e7bf2bf70b276c202c20634ca363f128d2fff138ab6bef916217d4e475c509d03409be9a71def9e3965ff83834a4fae1dd1cc82779c06e524b20265878913dfc81cea5c00aced423e10d485c36a20a1d8b503b84d2ac529aa51a2c0e9ee948034673af2bfafbce2aee2729721b8810513c4659a129c465ee3243407fdff9546f45e6324fba41a2f6d228de0a511ff40a588b7dd843610f66918e0d102bbf7180d414f0fdf1cda282948fad9439cfa9937d6afa7c83ffb96d52a96a3191125b3e94a9d1f9be04f35a6800820997115c83b86fff7e5c479239fd5adc3e38c08fbf1971e782b8835580f69b596752c85e1cb40faf65a60dd414ecff7887e27260f7418efa05ce7ac98a7d70f5d1faa632109ae025446de42837174281d2acbd68f2747a2728ef1bd0a684444504524a311df3b19bb718b0ba012d1f7f5a507e0f64b5f42c3325a154b0bd019ca79adbe7613498353c4bb44e14f0c4cf98f23cb150156f91022989823811f4d0013a9fbea76b5022d52f01ebd5ac1661c0132d2761b0cac30092f91d7835f4a95282251f3b45821a5e0e25fdab405d07ac0454fdc0ee31c04af13be20402df3478cf6dcf1f8d9587fd0111ca6a5ef81b7aefa3d84a7b32b9d6f5df1fe93b9f59f1cee2940bd1e940eb79b38e842057bd538888f8de0076ae113cecb09b8cb56d8d9f314b13a0c5e7e2e7375c1d41b569f9c3efad19e78b494f05dd06963fd241d92ec70712e5fc29d00dea076fcc591766fad1a77f4ab1a209e9260ea48959f21d3cc6657cc69c819ff3b5ff972de96278518b0718e717ce1441f1e1f4bf1a3cff96a702d9ef7866648d9312ab5da50a14d872951e482dfdfc142e047e9701990a73b4d63e540c72c4305f8b76a490a9ada759053069e2151223f26e7b2821c6c3e70a29734294887a637442b135a542428bbaad03a5aed9c697a4ad1b05ffcae6a04718bd4922f94a640aa8d8f5172748924b5cc22c8b7da5ca6f7e1acf02699c1273b8ba1a1fc57b1165d686bb6cef0b8aacaa0ef5c7942a5cc9fb753f9b83999c2de8359cca1ee8298af8c05f9537bf0b13672acb625734ced42e4edb7af41dd6e6436041d929a1c1c6ed952cda299b2387d18c1e8c4ff96d41e283759094b81e42fc8f6e69001fa3bdc4b411d20b7c7426e402b5f1cb89dde33b565c1204bbe440d6e814696d58d46391d842ad27d2a89ea75c511d369752570b88f3652cec4adff5260ba5d7154d6ccd0aedb99d3f2f6043fa030698610fcfac5aac48ae47b2ef2e0b513386e1684f27f495c6cbee171b4365279b5bfc54f2548d25a79869e60c37162bb702b3381d0ad6c8d55a36b8aabb456875788257fdbfdd7e1e2d8a7a44560e0efd8e29cb911adb4a0a9dd5137b54ab48c3017f7e274f4aef6770be20caef26699554670cd4c438c3964b9b2b86c2150846443ad0d249bfe06faf863212806e145393ad6bd29fb1d7a0fa6b7a727c404b7b5a50c802f3da3813ee1c3fc70fe656861d5f14816fc992b26ff3b5d4a2df032e761d9e234accac1894abf21a75e6bc8667515c88ab6a22917ba98c2dbef11728d686b192299a50a5332b2bf550de362242a85484da755cd748a60b73511f9e5192a17f4c4a4f9295370cb5af2fe5cc543e2da158aa5dd47bd25ff5eb1444003e8bb9d9761186402c3c958a9f001ce3bf017056d56fffbdcfd67dcaec38cc11e1baabb47fc38a723c466d9c3b0100ed901b07c64399839c09e5b60c25de0dd3dedcb8430ecd0ff16eb77a875c08856ec2ab7f8a99b8cf6024a356486e3049defdf943d9f3d13ecae5917b1840054965fe0ddc682616f194ae54164fe3928bd291c17e5857f57dcfd7942b1b8b5d301dcb7eb80bded97760e327a1d1ac57615ea814dcf52d926adb915f7203f9c0209720f4d9abdc603ad01fa22567425b9001067f02f1b90fd8c877d10d49409f65c61eee143a01679ef643ca0e6451f3d902cccc520cc53940724b22e11732e4365167db53d681266b803c0539b950a6cd8ff2c9454907c7b36b003d2dbef4b38ef2102bda620618906914b248de7ea23dab2829cac0740bd06bc9131f6c5df5dbb52ea369ddb5b6b530336f8831ed5218ea57805e09cbaf746dac8e40573330aa8afb6558ebe4b521eeaea4060fdb065f46b7b1d32028e07251d11abb68e19ad68aed888ffdb372a8eecbd8ad0ed4968ffea22c24fc39792dc8b1e4e0836896816971636a499fd93ccb6dc6e0f049145abe0e2d898c5765a29eb93295a24a5b31fc5125566d6034e8503ce31c6971d02578ef859355e8a2973ce8576d475d890a4d8ef3c45d25dd859a1a864f8f1ccbc52b0d3453c22a7d5954f5a46d79c9cb6d3a930c511283b8aa72a6a3c8f2db65923219ea3366e02a0a804ab8d9eac6c25cfae9807468d78ae8d6e4d16c012b50124eb17075b491f88ca0b9194fc1f36be8709a3b033024981a60b6c47e6203539d16215b3ab95bc1791723e3425eaf10fb8f46233afa8b4941f5e9fd24cbb4b15c1842297276dff5c6ce8d24b467ae06069300e8529c1c6cb054b7e02cf2ec74493638302f96b7a761ce8c7f39f552d789dbfeff0ab3bd5689ba795c76b8bd176de30b15901528079577bfaed77a07a39174cc913defa28a343b6faae4e3ab9ab84ad511cb884ba6fab2654e745313a33327017d1f007a84ac4f2f8857648b36ef36616861423b42612fe80e07d89e0e6a1b813e3faf0af0ebe1c99a4a61d81e42a51a85cd919555a820dbf5f0ffa777d9315bdb54394acbb9593b581083c494a4e027f37f8144cf17c5a188152c5ff0c2e568db77fcccb610aa3b34315742cb7ab3688cc9d390adbd15c31531d9ce6b8160343dd513ce1813ff14b9be80e4c83b65a8f211a80de78f05ff9b016f2bb9881370b673a0a9d15328ae1992032ae2677f441dd0952d39883716161c0dcaf8d1324411b6f2725692c74c4124d9637b1df3980ff5587484675991a03f7ee623790943cdd18e6acede1aecbfc221ed4d0a86c1a2723ba2c9f8f89cf8c3b306a6846859e5b50f15d5b8e8ce2d1210d4bea2a082885767cd26f2a2c72051ca7015df1e636722ad61a3fb8750e54ea3f7fb92e03df1b5e779ec01f82f5b399f920c151eb56a9e1e1536daa77af30321e2051fbcf60fbec5a33292f46ea0eedb324b77a7f7433952748bdad67e3ef27b50add7ea6f3032139a5c88f6b7e45817dd5c3de79bee7030ae67260dbdcfede5d9522038e44cf7696bfb2ba30d43bdce7268d009c62584a08c6d89b342e236d41b67853040c14d49901f04aa5452ff903c5ac5b100fa6066859c8302f5dcce4eb8814d8ca01a9fe3a4700a3ce7e9d5dafa88978edcb8e1f1a36c7a8cf0012707be8afb4293c05d824dbbfda4273822901ebb2086cb0f256f38508cf4f003f2e73e5d69a40dca8a6c15753d126f2c82e502396e594f2ae61a31ab3b294b2e3ba983899ac7c0a0c4e949cfc766ed15b016e38f570108771108162b7c434a5ad239c134bbf0471ad0606a23cdcbae2c5631cd26abb8cec966bfbfef2aee0a0885526386dc92511966b8174add69867d5dfa9ad6198984fff0bf8d2e10604e56769ff034a73bdf8582eb901d39f6590724c2d9a0d45fd5b1472d18c22bd8b232e557bbf0c935374bb247f957f9afe61ae67e6efbe28ecd8c04c304ee0cce24140042f91a14bd8e224f601777293c996bf07e35d49d6ac115155bfc133819b6b7fa2c9823c4f95110d4c66ea7af45693d907a8d0971f0714eb60aab5488ad5609aa5e0a31b15456e24b656e3de5835eac1a75d8da642a75c3cbb400439883191c6585c27247216747b17fef6cf4181fbd4494fa7eef676df2e2579b092c59255f56ac3cbe178441d819face303d8ef0eb35df0f60ad53e9e90806dbe89e1f83daaa9fe2acc3663899b25be0fbb99421aad8b5d7ab8f46c0a39bd714a50b49f51bf0fef86de317f0cc7301027f5df70c91485bbdc20ef182fe56a871a3d7b336ae4668f6aee28f5c75a51401c6c515578979f75dee4f795604a91d42dec5581a0b22b719219c0f8fcc9f5de9c40222ba75eb63b259f41b78b4b47a466cb498d7bae3e8c92efcd42730b44605fb4cfbac944d7830e066ce87a54eed849325d73c3f6c54ebf89e99cc023c09b91e47195e3dfd951ae9cdca89a6ab11e5f124046be31d3bd0955ec79b92f89d60247a35d86f1a64588109c18719ce8b74cfb3354ed7f4ee5ace2cfe578a914e9e8078f07205e76481d8e94fab3e54c1184b32bb1e5c84173fbf55850d310f181411b5b08aa0f327f9af9023201e06d246d1d0bbb6a3014f22c60fe46dc1b4c1e453d7586a62ae3d773db9e21bb815ab548c6477732f341b4aca1588c9d9fea25760ef6733b6e377b413fd1e2f7ccb28543dc13411ab1285327f1f33e461d766cf1387ee3e63a1d82458c41520079261498ff2db00d7af01ceb74516ba44323ddd482fe2e3488920264a260cb379af0bac39b6d6fa74aea59f42d820c9d1dabe043dc79cd3b70081d5a28f59b1818956b6456eba59ada48a0793aecef9b89e439782e371e669c29660e527eb1f506ab0724f90e71981abfb5e69569412badbfd0dfb26ea97724ffb8a304279f568c045cf3022c9bbdfd5cb4c5b5c65013ca1d50d9902f316a08f31c340194a8fc08732cdaf29c3b497efd7c825304525bb89f6cc77512ce2f71ad2abaab2981f09d78b6f7faa822d79beb6f0d2f9bcf8bb3f8148551d2c7cd05fa88e7040883de2a2ec48faf2636dfd4b63de4d54bd0e780b57e96461e242cb5d401fd99b7b9c6af631ffd33dd2c38f4460fd407150c916acbd20da45487530088605323fcd5e6cb1fd1322b41587a529ac075e698c956cbcd346385f0fc50d7dde586741bee6897c47642adc48dff47f7bf608c8d494c0dded994c86f4f1b61f0dfc62e26f56dbd5579eefe486584bdce79590050188e7a0e43edf941ded2ade071cfcc766a867524933830160c0655f975ccaabd179d275bcec68b865b1d87df8a57878fc299a56f37c3a0500f3104d078e4dcd4507ba8644ff2172694e0dd2d09e05f1759976fac0fd9fcf89635bba139dd0f12a660f9dcef4708341e6d37aa59093f530e6b24cad47a451fb2e67c050a1fe2157d2804bd2e51531463bde331ae068d6d9007a984811ddd643f2b96b73e9ae63d82bda6d69c73cb7429d4695faa9fc1e3e76f1d42347d89929929f9f22a05e7f1b05bc71a13b9f7eb0959b88cac8607035f4558b89fdab125e0a1cd2f23f914afa03bcb67904348da6dafdc9d6f578736202234e47f8fb6840d375ec167df63b8296a900abb6a05f3cc92bded9e802130a8e8a292956519fe0669ecb371f15f5eba022275065c5c29ae770334d2f5c62ad698347db09867b4e14d7bb264cde98a5dc108d75a8debb1b0bd18961a79f624a5fe45000f7deaf66f7e38d284bf89ba9daeb107b4354ff7ed5842b64f7b1770acc1fc1d5606fa6efb28fe2daf17e3f9faff5462e67de18ca4325589113945fd4ea25a2ca748fd246436b6292455f53f63517631444f965d63338f94ab682781e7b1e7f2c1d46ef28b18c752f6733012678f079e3552f5ed02b95307d98cb3314621feb4f8f0e8073841915d006065eb69ff1faa208c3a7fcb8ee5099171aff29960111b08138a5af4f5eb00ae6ef2c0ae1639cb44ffa473f110a979b9e2bb10c12750df068d4a05f6c63c600f7cb05f3b90072ff538772617fb303f61722e79f95bd206f3a5486871b76f18155cd5d2ae7c9a2a6201ca846dbfc82ec782c91ae3d65a519798efceb4c3a38f3ceafa5925c35e2dce3cdac74c5ff6685639e8612a25ac6a03072662fc264a13faa7f64e7327085362fb0995dcbbc8518b5b64fa593cb9baa71fb98a36d4f66d4a79e686662b51c8a9886d1ff3a85c4285197e0a0c79782221a7dcfe1adc082ed98e2c41f81ec9e1923938c9babc08763161442a11d3cbcb349d7109a5ec5a56c67def606df3754983c97a82d213e43931e37d8f093b12e588d7c52d9bc9b68e112935b4a0b86fd88f14cf48da4960d28251244f8d9e7a99d82b8b60e883d0da916ffa5a6d28f49941fd1da69601311ea38d639a98cd37eccf21662331ac7d4fd6e6596909059d50830cd6783f90b8e7d2e55855b91d2208b5d991a1208cd359c60d42c6aaa5716ba836b9005e910c04f19904e035ae68474aeae217a378e090f0f0b56781fa114bc46ed886129bc34fcce465cd55be0198bc8e9fe605666ae0e4b3656e8e3030c76f42283b693d002ec4e9aa98ca5d318385fdcb41d56994c4ac2ad43c402b762f95d8107097781793bf7837689ebde5770781545add9690624872b9f863a519611083f42ef6e6d96990324104f4497e61cb918e51c09a37af5800db5c0da7b47cbef4523db385c077736333298c5b6dc434450127b771688869bb22ae3246b3e3c466835339e88e85987c6745458c114644fdb2008aefeedb2bfd5b083aa2a4761ac2746f61e332491b3420c641c2b18587cb060d142c42d4396d1862930a190c613d8706651001dd52520bb1447a89256cbd7a144d60503a9b4397d393e8956dd041f75ac1bb45851f9b99cb76cb8c748981ac3066b89e82aacadeffe6f5140e573e44299d8d989bc6879d01d4f14e19bf9cb2b4d308f259d36305a23db2abcb840a50a7f1b0d11d2e9c52179b8856e923d8c378b797fb118fab07adb6806c45159a493cc3aaf9dd9384e88028443fd938d9d72a8d832c93eee7762604db9fcb915a1db84ca4618d82cc4370eaaa9794eb2b6c37d966e1c10d56e88be2cdcf17d5ba88bcf044c86780191a8e044782e6092917d87014f39cf7f051dce1d85f8c5ac7b10be99c35d8be8e7e97d34d43a6484aaf503ada8a19edda11b982e429d15c98734c7394949749b6aee224d34e82cd207181ae37d35fc581cf592de8b2ad192b2c80a95fc6fb34cac0a1d5f6fe42320535f952d08dd845c2871c6ed83275876a0e37afd8e772493207afddde9a800259940057124671c7cf075b8739168ce7e1f109215208445605207e24bb65c55425701a289189da527bb35ecdb82ad175ee48ffe75f6bcd30177c8c4205a8b55bdd043150f4dc550b91a2528bce13384e86f859114704d7e9b397035016f36abb384462b53143671e2fea9d693988ecdccac703e0dcf71f8b6e057bdfc9ffb91440dec5e0a2625280e4baeaced7e4e6536b5499ddb4e501635cef97cd3d3b2684c3e19551b24b8008275386406626221e99deac78c415f0dde0427e3aa58523c2be0c68714eed5b1b3b396c125427d95c423a962a9041485e68e848d5804539740529dc2b20436e732a0c8300ef520d96c025ddec66b2014f6ead4545891242980ef69876daec4a84d50fdde6d2a0880e6ab2bca94ef2d173cd2b55c5c5f564969f5ddefa32052ada18a04f074cd8246b1ac567ba64d67dc605318808309d9059e8155a1ae4016a7fc047cd81e3a88bcba1f026b7d8e39b3f9af70ca12043165e441b59dcdce0ffeb6e66ce34283d51a25fc443fcc3bc6b54712bd7f90b10060eaa0e6dc59833fd8496af3b42c1ac04c9e37c4858d7e86a5788bccea878a2d68f88e24cf0fdbf8b5bccbcd6fdf21f33c9b35401e07c6dcd0cac5c9b010bc762b4b8b1d9800c8d7c7d8e1e380d877015b23e55f2d27432a6a6f801c3b36cfb70f825d2ea07deff6311820d390dabda5db80740010291eea2f35a35836221264258d81e890835e6ab20a81cfb7e863092b22a17297d8408224aae594b7ce11b85b2f5634daddc99962f5a64bdbfabad26b78e4e8265bd556450cecd09c4345b4dbc115f1292462caa42aa91880542a1ec3819f5ee41508fcf5a822acf38da4b7328591fb11da0484b640f676b5a11fa7bf943d0d0b2c8d549619b03364840874ca6cc9e57bd920c2cb43646d4a5e079f5abcac2ac4d6f2c3e83bfe49636641421197040d53b87c0b2467ccba09ffc20f413f4eb793e7172adab61d5b2407172f454b9899efac45445a621058e07815b95d345d7542f5a29613ff7ab2e1c6e87f452547dcd0538a9f8d8c6234c56945e64ec1dfc95dd699ab388757a3fdbe7024388526d2fd789aeb2ace8f3cdedd0d4c1556945e60b5979d60a99f1329dc19a77417ca2d96fd71f17af00b2687ba68df69b97e4382c8e0fb33ff2785dc759632e0a994797902da683582dde6ef60cb8e35a681aaf9346f438d8bec18a52d7642431b958c75d7b66b280e468ea561649d505831af64be326da7a2d928bbba851ffa45b5958c1946b452a00a7aab45c8f0e353a972f90dd0a43a7a0808f82f6fd6fff256ea01653bb9a0067567db55db168acd9d19865a9cc898886a6aee3e88c81be5895134709ff88f13fea614b4717883ed89938bbeeb9cb14691f9547fe1e9cc2cf3a268b0d57c07288b9271b008c73004d1341178fc3e8152c61553187a952eb79fc5acef31afba6c8d03d32fd3dbf0c855f3c5650cc9ef594887b1bd4cc47892a284307dc23465be31e2b5400a2cd2c2b5337b9738a84515fbf8c7b24713ba2e013fe5b708b59e3d1ed34c92dab26df8413ed2c1ea15580f035eaa08577667d52d01992c1fd1105f90675fe7a9c101063f5410d5fcc7c9820911b99844a78e7e6bde279e31c5032b4a5772da5902f9085f48441b7dbf605e5707cff1ac81feed5713858969979d9efa374329835bb96efbf3359aac660500917232416331fd6b1148afde69df4bcbd8f29aaff5abbe1607366c0111b6ec48812616a5622826533a792880642f8ab018f966b658fc44af576e5bef258b637f952882d4260d1beb488b490e557a5ea7c15fdeb47a7da53242d077e3bea45e662f55ad9be526323dafbd1b4eee147fdcb45ac64be4a1fed68a1760290eb866070e0b43c7091a770ffb9ab922b2d0e856b920072ad0cacdce79073361e80710b9ff2c0364acf836a9e10e68b1be2aee71d5902a66f2ac3b933b6e4e9299140a4f59da15ddd91ddd4cdb66d2f132168833320179257586ab079bcd6b493bf45dd12aa2cb00b6985132d3b54155b101efcdf077fb9cb3247a7f5c4acfb71a1f97d6e5eee061951e1b9d4ff7a5ea50290d90918fe44a336b4a0f1f9cff982e45e5ec8ce7763bc7fbacf8430bbcc4ed1e5f33d9481e5ea17731d5a53c230e7fc70ea4b938da7d703e919bed55246c39405369a3d954a063c2a91e30885c4b14b0b9a470ee066a7865d4a34cf907f4de71bbe00affd847941dc0c5b5379fd92a6b25b1fe0b384061e60662e91a4b717e0df2bd6ab8c2a75c6bcd9d04721231f43171504558d3d7bf1658fbc3b7441b641ed50b980a52f426dd8fbcd2d6fdc0f83871ebbdc150918a6aba854d0fb8c671afabdb9d34c7ad0782965e54b2c04ee3869a9809e990f961fea3229a2626232f186ad8db1846f06821ffa4faddf04fe5ce071f74350f591f2557b6ab2995946c35d04f93dcef60e7386fbc8237b58fc6db8d2880334a8536e612dec7472cf26bca68934393a9a4b26788e25ffa32ad76e6e900dcb20be4799f006d782ed9fd35387230f2fcd260943a73ec848f7d70efcd7a6df8421c0922aac1bd3ca93ac8d9428ac7944923f874ff34f4648208ce4a6a25d2069751b4819ad515d2568178cd520e9d184026dae6ba5273452016f5d49fdde10fa84d49cbd6679b8bbc2fdee17891eb32f8558d0f101a3c42373f74c64f95a4b0a108a545994923a5538f97b33dc88da0789bfb27834976b7100a3073f0315be93b6d8f48fef7d34f4cda6207228340ca734da3210907ec57997b53f7aa99647d80d1cc5cba162399ba0973318777d199a51a98b51cf7bed17708ab9ca12325e3019780d711ffdca0c1cab2a6ebf3f03a1ee7d7802ca74f8c490289df28fce50782c381af82e335c8e757a562b8132d04a55abfbeb609baa065a3facfe448c6364d04ba9e5429c355aa1913c221f5b3bb1b218cd8f6578662749bd028161d6cf30f3b50b1bb3bffd9f2cc8122c0546aaa97b60be55f970bca69f9c1be5d5e00d07dd7075b4710c8d3b92ea267b269901213dc51d9a20f1ff416ecbf2cefbaa554a8592fe13047fd9096f53d0e01a964b1610f3aba38466fa8096875c0baf123a3374b6ceb3d2ae20ffecc4d481229e3915460c5263f8e4001d395c637cf149f8e9c4eadf8e63e67fb505ade958b5d3328eea66e1aa954844cfcfae201ee44f822e109ad2c7d151320437162cc264dcd1d341d587b1829b6f29c2a762b1658a3e5087211dc22b8b7cfa0ab84030dec2121238a2d4802e175e47e7079239aab40768f4652836a128a73c264b626c890c409d52722dc70c3de2311b9167f893cd8dc1555da3da18e8234fbfc3e981c1f1e5e09fb09de65874f27ca13a73b4ff0f449e2962fc6e4a267eacdd7bb8b9eac53b0643a42ff80a33c0a068badb0d202aa53c760b5906fb5d4aba579ca362d8a7b7020774cc3cd0689799e8fa2d9a0466ad6876288853ed8dd7b712cc9257d94bd6382a723e23afdf7c7424418e4baa4a5e4cf9f3418683ce950ab28df2f76dbcf81fb7eebcd243ccd9cba6e408ad160e16d6591ca4123d1cf3ca2c5cd6606f4df8c582bb68be6d74e086f371138ff688d9743b9e4482597285e68e19f8c632f9bc054944c2048b72a3dd2d3d7039dc17b99a0e691da3e5b23c58292359cd3ec48a3a5f021b3d5ea161a442adce09f426400a96fa6fa49ea4f35b60d755a329e5977e4bc50b434ec5b9f3bcfc471d7e757ecec4d948a4e62349747283d5793d37ad47464228f7b5068e84bb5b821a4d1e94d04dec0dfaa6fd4079cb9f7c5d14844377aeb8269c6988ba12457e603b4b1ae47275339d6126f540234f12ed6419ce2b43f21b8fcdb58ae35fd63d70ecc2b10ed5c9e779bda0ef45a5fdf06d68ff248b5e384f662b9ce34a29f4124c5a7330e6d2733b962b454a9e87fee12087360bcd6e5d0d31a6d4f4a7ab3fbf4383b0e47bf9ac8b74396a35a32c55c07762ed157c4d0c8bc1d9b99b48bc2459e7b3fb1cc03c62bf3022530d868660cb2de2a48188b356c0b6f93f368c517712740fe58c7bad04a1a3d19f01323002c5a62961cd5d309ea7f1737cd065bc69e0fb924ed7487e98a6dd83d82b0ce38e1401781d50bc4260d88ee8ba3ea144a3a4e8c9d3cc3c5576c4036857d8cc5b9eaefb9072f8087ba43fd2985c8515d3c75f021ab01ab5d6067ec2dbca17f98dee4ace8b031d22c4efc380a610faf6efe75eb323fd4a03a83c460a1283b7f6afeb42e730623f7a90f50a74370a4ffec861062121376ce81a87802a5d2aa3d9e48290e9db3fd47e893a99f20d739089d1174bb7f607065a6c5a658261d5431c32334790ddcea9c1b6426552be09ea6d9b63a16cda55e637f53a1975a831bdefc394597c3643985aa2acd2922a572774aa303ca1304b1bfe8bd0b11abb31de6846b85db62cc4535acde125ebb4ba10116d2a1fcb23d90b788ab7731567901e74163d6af881a68eda141f909b6b3c7ca631780853618be502f5720352d88e8934d90790337a75f0f4af0b52c62b012120bcee2d9a9239ecac3b581cebcf8a2cb25674075466b93ab1fa3c6ed9c8403d4bad0fb4c713e272e30e8c96b5eeb222aa41f7f33c0cdd7865bc3115ee0c99ec5aae0ff20448469b3415fa8de2387a8882000d147b3161b587ccc4f0201f8c926329a18ff1a84969538fa4445c5e826b782af1f57d265a9c7be63a0be6cfc32025037100d31afbfe64ce06cb279316470824abf2f3de4254d5a972e739a72330960081c8e10b94936168ab6c162b9519c1172bb7b25cdd872f92038af20efcbf71f0f3f5835f5ca8d7c0c9b932fd8f34dc7201e608e6a8fd81a3951e05a07b755d96e9911e0e2d8b215f2c8b604ed024be1afbc79cc9322606174b4b1d80f38493db4d68f20a143c494d8250522f68fdf49048ad448a57961f564b99d51e958b2912a9f687266c92dcc9e3a795504ecb0f449e83d7d47da33be4f66a14089fc61fc64f9b8ee0211c30a2ff517cffdfd86561ad30c747213dd8341dc5188f94648ee6091e06c8d9494d3bd1804866aec041db45e688d2c85d98e66fb354f9a162cf1c3bb4bcf75da05ba0c695c9150f2d611c7ca76938fd44ad05d6011b73e944de54a714721629b93eb3192a399c83dcabdc9aee757febe855fe525ce55fdd0effced287fc8a4ecdf9a41c1bc7bdec80de27f5302f9b847acc59213c1cd8dd2069f846bc107b69600cd46c7cdcc42ae091338991e3c7237bb85fe3dede5ceaa06f290dd6d7eb8e8c75f4911d158d076276c91d8a4c4020bf6419c1ddd93054fa2f8e35fdb48e7acda8341227efe8021b4bea9da7465f6c3dd3c8a6baeb4e775d3918424306781a5a6fa5fd8faca28d62cbe277241ed18964e9d4b89b597acd1eaddb9c20cedc2515dd78c0990a290ca7380faf85c44cd8b04f181b047eac1cebe76b08ee6892daf17eddc6d398232004359f4f4fd7a1ba8201e5e2980fa55433b31fc55a153cc00339ec7eca0c1cc991d7ffb5fea023d62dd341d4e08830502959845454c7357e21a0e32ab86608da4417c5222875af0e89ef6df127da5bdf3b3a1e1f850d28a84041bbae17fa140fa2a9a2507fc48baa565c4fd425a62ae3ee7ffd6ea810c8c1d870864ece76d896fb7c8019ec7225d060d1e2784414be7c4236e4b9b02e5927d5ec2d1e62e64ec79379070d296466236f7c8c8624c6569cb2e053d3e792561e8997f7bcf6a73aa1aa07f7a3c72d3db51473988e42fb7b123812a750fba0e603dca0475d0c4d00b1197320ddd6c5b07bdca71617f38caf9e8234da7c7b06c7caf9b1ae26c3150131989846bb8185f4590253029098d5e6be1409095e013aabfbcca938ec88786191c3027f04481108e25052adc50afb0ad577e77c690c95c8bbe3971e96f2087d6c42290de75f69c9ae3ddb735691097aa17b24e85ca996a43fcc4a92ff7755dd6c5dbbc415da270ad047211b22fd38fe5b021c61186f23725ad51d32d638e992177c57e9ac6ddba0f89448af85d1cc44eac40e5dbf312645453766a6ac84a4429987aac4e7ca2efb37da81c098bc70055c94e2df73840e4646cea982f998f9e69f40c928d095438e545889a774188245fee1ece4038f4141256c911af3bae3b574b6131e2e70b6ba11ea3bcdf562e8c34d45d511de13052343b87ee513e8124c18af03f395a3a414865ce2df8a9fe825540fb167da0c5215118cd664bf670f67a9ea31c64fb918dffc067ecf3768076911b3fead868f83c44b0cbe2b2e89c0105700252cde38ae0a6de504c73509f9d545cb2c9fac3b2b2b28ce747f59175c9c9eb2549893d90a4c20b316ecb44774385168ff8be84f16ea9fa8caf11a20a1894ad4b101e8700391569973becfd18acab680c31e0a4aa87ec588db24a09c8cfcf2cb15b1999d600ad825abd03988b3f43e949f7c5a0d51aa9e040ecb612234c07811a02989941cf058e8ca1023ebe2e2cf76ed39a93e2b05453ee952d9e0f0cea0e0541dd3729e1e1d3c328bdea39fd32a8cc1842f0d40616b63c75bc2a1f44f21f53c0c0e0892911d422cb67df469e53d93ae693cb444fc2034ed8625552538ccb4bc00904ca66bc27861c9a07dc6af82d070d47a1374fdc063b9aef110170636401e618f7904b6803d28b5e1245f14079615c3b015383fac7e582c61d57513fe23dc3fce69f048529ec1316c3f34cfdc6ce455a8924c3cde43dbecc5161cc6647bbc268fde02a1761979d9f9c988a20e855c6eca1fbb30fb72607c33fc0ee418fb880eefde32ce85cac0e3e15844fe0c0a3a90670800a6043b4c8bf9ce9239b8320db812cfa0a393362e35fc41cf616184d57570fcc0798191f0c9fe9c103cd3a85e3eb229efe4828573047bbf3b7c2d375bd3d42a7cfc7cc82567f1793fbf77b731279d6b569a1c471f48bea3ee082434e1bb7fd48acfc4997e50437fb14899371106e1f39ddb31fa78a9c13a3f8c6c7dd3f78b2ee607810b87e043d4b3e587602c933ae3228860e43781e80e1429242dc8ffa3a2a1fe44d3ef6d55441c1864af58972630e603f45577dcca8bb5dce200c74bfe0748bf085a278a7f4a8001c520988a40a79b812b9228895b5e6c7b63ab0cedcb33bdc290e21c840919963c845bb07078a6784ef8788ff682071b26fb19a30827117de71bfb98e259dabc6625ca3ace52764c234f5630c002f718bbd5fa2ec2d123c3094f6435703f008448b4b2938c6cc864d23b2b99ebd780e84f4e413d0c5b58bc304d487ace8d834c9f6073a5aa66c43b0a3a750b59f0754334d413f0d066a80068373abb1f66c8a5923710e288c0a3d8f030f8b924e8bbd13fdd1cfb406af63352de44caa336b246182505e480639a28c5b3652be109723091b7c29040f5a12198706ebf540e49cb728b7318606cb2344a7e3e8db111db113ecbb2971d8461480ab114150e57117cf75d6b698b41d4b50d0f24dbe7363b8844cd27f24b3b2f9b8392adeb15b8e44e07d336dd518eb86df82ee94adf9d743ad59f82120a071e9c57a1402b36a099baf27dead570628e9c00640f1cf105415a43c546ed1e505640655bcb3a3ac86c8b8018ca3e234653c72255e0f67809acf9f857e93a4441bd6069b900243bbc55b071acbdece41ed82d5f0d86a1c932f1f26d16c22b7f39f0445690515e08d8e3501e5e83e56967192bb1f2afbbb832924a88788e382194510ee3bad1ff8f15ca6f5a78de3325702c7ff14d60fd5d6e66da5e69669294454f2333fb02ab004024c96f508316b0a879596d49bcc76e1018f90e686f3c05ae0967d6aefdd184734e7049c845e04b6a26ce1d5eb92cee68acd377d583cc036d9aeb8470c8c0a237f1a99f8b229a60c7d771031c5fa024443008e264acb04a2da5adb2a28abed7e35d08bc56db9a96edba926fb8812fc270a2c8c15803d65596326fb2735095ac599423e69224243a71d22d0d02b9e1ab3b897e8b542a097474e2e9022dab7065414425e2e36a7cad6577959e156d444e2f32c25153db40f49a50be4d7a99529071928a5540e7e0689e76579e4b3fc16d3f35e30069756c4d8b01029bd7ec43803a2f4dcc0d48b755c2404495c1eb150697ba75ee502c5dd39ce7bd98afd44c3b6c55734ecd6ff9a524dc47540008b51c3beb2c68b48a24910efd27998033ad0aa85924ff50049823dfaf6639a856e16f5003470749064f9c993154c88ec4588b77fa4acb8159a8e449c1cb602ce65a1e9a0bd59559ab69379a69b419b1c7e4de42b0d8ddc6a42230c21f5d0f20928807e35f03d856011e2fc93df9f5af2c1020b4b8551ae8c898836b4a226b968457740761040512d230119fb8c90039198f1413fb2a4f5036875770a1fd6a3418fcc4ddcc5cfdb6a2c9d51a89acc67fc1f3b8f91901f08094884d59ccbaf343ea4f0fb710c18884f20154fff092cac0ed0c7f1970d557a5e55dc768544e3cc4c912290f8807b5f846441728239efd131fe42f98f50fdca7ffdc9ed9e5be40e022fa28126c2d257343d97eb840a965807d4a1919c14a58c641e6bd107f826ad25a0c3a1a6c1a040dae32edee4d6552f22bc77293f19884f0b28aea21b351306b9f8a3a2779efe5b9c96d1d5274b435f85d81e6e73bc8a3513c5714e706c85ed28e0573b6d46b494e033a6cebd827627c001cc299ad849bb4e127fae1e335b1c144ca4409a341d0c3b8660a86a3aec4a07d1c761e04e574d61056c8d34918e3f875d3086018492ccfda3b7b84aa75d2adf58879c2d47b1335e64f16927bae738ceea3a529719654099a7035f920b0cc87263cfe529e3160201626a31b11a944af838c07afc27888ce1e10fe5a1cb9fd09fe0dca02803bbf1e070cf9db2638f0d0c014ce44eb01a825c10603720cca451c7e48ef00f4ba9ba3105f12b0d3c99995e23e51c4205235e35ccac8714752e5e160488fe11e82b040c46f461df5ccf3e60d5df2e3b99a042f47787daf1ede71466d124ff0746754d5422a135b7b886cdf46d1848bc6f8a8348072f6783a039c08fcc84dcb360c066aa62511836470f9a1a70445cf6ce91957c69ecad81ee620c263d42d13060b841d302434801c12c79fb22d4a8a3efc2a44574eb09e0b627f2d014b3714e39d9088b82feddf53a73db674f40b7aacb72325930cccfd9445ec54760c97ff55584d0ac9554d13025e54006bcbf223f1cdad89311be813d21081c6cb673976f91aed3584303a53e3daf6fda3599ac134d165cf42707fead13c2cbc4554135eafa59eea09f4c8a8a0927417fa39f66afdd1bd0c7ef429f666fdd1bd0c7ff421f6defde6ee41c3d44dbfaf95b2bccc98814bd011d494f6c0b529f7731575e627cd6879923de4d484494106d602aec490e3e37486d546ad59379c05c3632272a4ecb04538070397e90ad27ecd5af09505b693b531d618e26057ac2c4557f29fd24dda2763c10a758f732d04801dabf490a85f1b23758855c2afb2b6b7815f169aedc0aa4d9c37866d5741563a25b73512e24ed390f6dccc94beda3b1062353955cce75ee563f56ede9db092e2ead799db5497364eb9d1a2575517b5dba76a72bb55508cfcf28b0a949e93dcf8dc60be1555d036fbc663e12adceabafbcac6f80cdeca6bd30bc5f2ebc404087ab78f5ce82024bd3be1e532b90a9c7947eed299ec90350702d338fe29449eb5c0c7f480b6b44b41c0293efc993bace27ba90c39b734e398460b652c026ce5e3409a4f8d7c01db9e465975c7132fd387ba50dcfd8f635571dbb751e79e32027aa44e532a9e2580248fb10cdca046c95aabec72a914665c70c26b51352b996b9666cb6a1f60b01989fded89b5296979292ad14da74fadcb4a9137e5fd05d6b5a4cd07b0013c297a8bce30b3fdc192e8b5b501f73505e5656733ede65fcae8658f23b1c7b692646d185c76e0a4c79cc4add6ea6d9abcf1b6f0869584faf7f6b10deea3c2c94fed48b5f43faf6bc8adf4650eeba7bdc3201a69a9007256946da4d613f92c7cdf81de5313d182f21d6c356dadbc0936a965fc78908e1e65551ce57763c80e8dff584595bc49450a16391fec195104709dd3ce04bf6cee67ebc3dc676642fe61a287d601b81c00a650d723a7f6ff5638392bdd1ace02022a0c2e736e6c6771c6c609887c3ddb1173a6ced1b02d02f2e4b586523d0149d40e784bb926acd5c001fa1f7ca1fd50815aa5dcdd6a09b86ba562bf7931a6ae8861d466c0dcbc2d83e0ad1660b22f3b4369d9127885ac04cbf55678bfa9da01cc91e9182bbcfae5f5a5f7990ac5e72a4287e80910d536c58f0a03c503b46f54dc65a082fab254e4b04322e2d4e536f99c5cea7f9f559078ccccd4f3c9e849a4a9441cae6cdc4431271d723821fdd2878e8ad2129a4a3e3c22890f295f31f1a10e86834806e372f96818d285d745fe95dcca0344f9df1dd7c305d0878b5fc053ebc22291a3effa9a2960720f6cf47afcdd86844bb1d26e4c50325eb4574d7e90a2b981292a605fa677c0bf1c9903eee5f5adb0f60dad2800943f5fdfc0e8a45aa355bec0428348569c0516b4e03ef5e8272097ee5618ff878549bca92a3ad3ac3618be757443fad41ea0e24f87e5a2df317b9ea5aecb3da9fd6329117ed140128f5b7e4034858da68b4e5107941bc0ab3b50f068a675d9cc670dc0559499ce582232ff2047ddc21362e916163c42ba913367b2d776fcbc9c50ab66bb2169cb02a33818b5b3d4a4cdf10cac4cfa54c9b8a3c7bf0423fdf607560be30983b112877f5ad3820c97dd56be611e960f2d9cac14c490ab57cd8a95b7dd79ba42a9df4f53d854c64b7a88d8fd8f54151c5b4db8658865f1c05db86bc9f0ce5a11ffb9739307b2884da6881f1f8e2c18e3c303c1ac51aecd90321d9f818f01cae8e755c97ba8b9aad8ad5a3f6fc852892569b636d5643fb5a702c6d4118d96366860f1ea268594b89d2e256789a5dc3fdd6e41af02364eaf5d00b89f738940ef896bd4d96dbfa924c49100dc9183196abe7e93cc61a3ce205a5ee9cf44e796115299add25cf6e060147196b461be273e7815f16fb32913a6ca3ca7c7ed28ebd15499e17bb9ce46c8b6889d2ebd6bd555228a87fec33ef274c264d244b94ded3181a832e84afa863b0cc17d9382446c70549ee124d97a84a812b7eeeab6fbcd452b0bd7372206f3c225ad42b6b7ad1aaecb550cf5c37c1f6650ad18af46918abc6fe9fc4acf3052a3fa5af9d36e6d6f0e3fa50ab9ba138785023d7a0a20ae68092d55b6f7936ce061bb1ae1db5e527916af05bf5a368e3c10e230ed2794554311b73652b99cfed5b4632b44129be74b948f287da33cc9de76856f301cd009beccf659f5f5a69f4524f9438e35aae45fdc3ae870838262092374efc1aabb3d6491b35d56e9358dc34e3d548515d248de549c0754c7fd65b39f3354c7a5a61f1f8f5b5adfbff1adfb1b608967314a02ba6d44dff3fd879e99a3c0051d68939b2f407b2e8eee31a5cd4ec9f6a9c82edccf6e83fb0ba2ae23411918758bb88567f527d078cf0eb619276ed42d843c37788950fa984b0a555ad1c822c78fed6be59f8980397fab4f25d86e4640764eb0a2c4dc7db81bdbd4521e9b6dda5a93ea559487f69650daa7dd23d49c836f2281f4d4d15a2962f0b00e380e09e264cbb74484c2e324fac4a99f6def180c0f0fef4d4ec15c98ca0f53742f33f0a550e14daf8ba10c13ac395c805fd627af2065964f36ef9d697b47f90a625b58dcab5806ff9d603321bc80bff742e8bec3b7a45298df127d72ee9937454964bc9ef505376427636ea65d4ab6a12e9ef76e8de2658024cac035e253f972d8539579b844bca9347fcc28f5d8212f84ab0bc48d29d0265dafc56895a38a5bd5f6768176c5c3cfee4d5f247b724380cec0746167e4c9da78c8b5f0a994768d527946240b93afeb3cbdebd11074411085a3867ae2f527500b7571ec66105913f83986c396de00a4aeef748f33c3d5060b76ff3325d2c451166dd71d23e3ee6804bbb3ffb76fe2f8d8851041343679a96685e0968a6a21677537bad7d1e48d4b5d0bd56a42a3d835796bea025d9a96139f12d5fdd837c8957e34e304029f78e2677f5c5383f91ac26396d3d571ecef75612dd9db92927c62981d83360c7ebab6ee2c8c54458c1eeaf0ecf6026cc96c801d66f6b55e300c6d684eb4f1b484df7e55258b432be096997d36f28195cf345c1f672e5086d079094e3b6dc15021882b76e9ca7e8582ddcf65e1f568ee50807c4d98fafc56bba9537b4e0184b493feefec115b84944b6814087b8af6af307c9908bcbf41e12040e010331ddf7974ab69deb80304e75cc28cd2b5b46827e25e2e99d0c465baf790f1bea84008c8929c0ea2d3f58ecb01a86c00fdaa51f9bfeb0d7b171a9171ae3bb84dce34f980efc9034d29515b684e5a1fc475cbdb3c282077af42b7a78f53548232e6fbab2b25ef9e3ee117fe4dfa30ef4aa5cf48ee2aa024986e3a43055b9a714e1c9b568b266058235d7ad7f0fd1132ee38d4b37e4a1aca6a6dc90ffe5cd702135b8f9b9f2e6a410a301e649d45397d925daf538f4c9bb36dcc594acd1406a8de382dacada15ab9d6e6a13a5be8d1b508b0943b8b551a80617a78f9c084f767b6d4b5fc7995ea8c6db45b079c6a9bbea1e7dae1de70a6e66f3362ffbce162f26536397cb160573ceaf7c14f09fa43fdf6b537c0060a4ed2a3324fd82cdfba5496161ae99677d1eba287bc28a34bce008e5203cbcc00d82ad046aaa30072507d117b7da1ece8ea919e67841f224a8444fe7f0672fb866d38fbaf1450ec87ebd26026c804bfa82cc9fd08c2e658dffdad28f401b458c3590ad0c5a7b1a7e350c451c412867430d227207298dfee700bd28fff85b746c6e3cbbad42c3f6ae1b17e5e38bc30196a41eda80e04154eed5704b0a850af8be8810a2be6912dc27c4345649b2a3e892093f76844128a7fb250d4257bfe62094f94d0f0212bf032198f7954d84488224099a34ea3d49fc81f67d2d557940369ba72fcc29a4274f0ae1a9a210014f05a1e672ffcd7358a800a9e572b21b72488f5c15b40b0d80fc04ef3276f6676cb14af90098923c57e93c276e1865eb877a8d91f855573bec0658508c2d4914bb058367f437c7d37e80ae48867989d6a9308696bec1bc61066c3649e4680f0fb3047506d1631c819d52d2a3fe82cada947649e5b4dae0368dc672e8019ba5bf65e65d5471197acb41570ade45b98a61a370bc0c2786f279b2797d72b27f409fae30b777fb8336a4bda34555cf015e92b5d095fc34cebd70a916f4d2650fbda691efb04f7f9def3c69be9c07d195488d7fe784938623bd40932b579b96d72e259abf95ec1232efd356f7d2a2c71e84b5eb9903b91f73bd6aef94c9815ab3f297c3422fb8409339a37fb7ebbd155c5e71b278904d93d64e187d1d4acdb11377fce65653847f3b7e9a0f5401bce77f48e51f2c9c60ed78f79c60171515f4405d1b4fade3bd086896efe2f9170e8823406c46dd0d0c97b30f283d90a608b55bbf2359ce93c68041bf1d3b5c2403a7d2c2a3e50010eda4df5ceb390e00916b14f747dc33d9caff3179633ded93f128124befebc2b612c83fbe0da3dcb917f8fe5fc85361efe90dc0e871ef311f5742e731c508f8e0e9d6b69b44765a04f550fa432d2b2bbb54e8d38d44415513d78808b82e0f35c9a2391551f92946459aa7d20fe31a94cd0658115831dcb892d41d24d444e7980c7ef0a27f039b79e212929f0333a9f30b2bd1e26891cac324da1feb3f47340c52b56c701c413abb3c088e9ef9930ccd1f0e6e95f2143674a4fb488bf356e190480afbc38fb5ad8377c69a1071a1d4c280e14658c11a7e66f3087d7c5c8ea99ac0cd05b46e9263893ef4da3876f8a240897c18b860a323275f1d3bc05af63e3416e22b4518b2def676eae5b3153ac9fd34614fd80fbe370a8b326adcdf0b3fe421b44c8f54f75c9fa80ae3b64c1f0c83c32d21d47f664d51a11aecc6bd5fbd409e7657e14b45088c9301adb63528937fe17467574f3f9ad1269419fc159784f5d9785f13212eb6bc8c3469f2f0c4084a6a77afb01353e87e1ba78b13a34304d64ae4848e8e177dcc2461d22ae194a58ffc454916934a1e3a1e7b02323f03cd4858d121349a4d289803a9b4d6ff60fbbce568a63590cf7f336942a3f8822c6540e672b896d4718895b3135d4bc19d0622c3e9c35e3da19d0743c7bad3b063d898e7c39340def0555ce900dca6a4422a798beeb7967789b2f40d657906c68341c8fabb4757f026d2af92dddc9050b1e1ce404694ba038d4bea8faa961cb0031365ec964a17f4fda13f99bc42a64b938553d5e875fa3baf5a340c07ef99ea697447f4f7340bda7539b784d72fbb3e506c858398e3bea724a0604e88fe1334fab62fdc0199ee8b5d189a05af4838e898669793fb20c0159e2a295db240de70bbb99a8a088e35d946edb0f12ffb89289edc4c59059a5917fcbe6170ed2e5cc22740f9adee3373ce66d4b11554bdedfc3628d086f2cc5811d86dc47d946662dfe34bf53fd3afbef0cf48c9899d28c3493a4d498d8a97cd30ec41aaf5f884aff8deaf968372f4f63abe16ed1a3c809373a3f90d9ed57817daaae387c6be96a800df50f38afb2abc0630b827e0929f21359667afd1ad807ad9893ba299755b9dbd599260c72834a46f800d7635050a1ecde266bf52567a496ed4f9cac8b0a3792d4e1169ee678628f6f4b43ba5591c2479e11b9166719ca37d8a82195ed772c0485509c0969aabf2fe5a26c48e102df18e4f0d2b018f5d2fd0ee3f1533278bc1446975d7dbb39c9e9e2dcb3d82035a5279b6ba110db4016d24350390273dde62bfa5c12adecafb0b9db7e645b0ae6d0706458659099f2490ce9f36a5f1dbc09fab0d154b3f67355a9e4c7ee61e7ad48b052f7e357beb6320cc946e9f3a48133195fbc5e4c914381fa943e1c149389d425248291e636047bed7182f13c3729f208f84a8186700cc1fdd7c13956b2c8b2d27a15adaf01993d6c500956a7925d3fa39b6e7191087bb46e02bd27a5236c3c4391b8a4bed2fbf27d21e3341a414353d1d6752a90a717342262ea892f22aa8e36bdf35d2d31f8822521e1380a600784307622975da6ac40e1ddbdb77abed28b74a3d63141ae177a5c25f9281641240c188143f4906cd263ac4a975ed263a684cbdf699732eb0886e366512d4a1fb3c35d2a72c7f3fcca16f354fd1654029e381b69d27973eecf417f43208f6d3a7bb985356ce36028152060151a7c70136c2bc49d8fe5a2e1f8b8bc00395208c74aa2e2681e3088325c5519cd86214391a3958b23056393a070e470696308e71ea16cb0da985acec89d92165062f56e0980e445bb8a725953e652c58795cce1140f193f7ef5b08dd9e88b49eb67433627be6e9ce3b00baf7da06327bdd9db7df4d9b27fb51486f1044759e71f9ab93cf79b2ad9a81945579b4b7517f4d1115a4c7642b96149d1386b88a200bfb44b5c45074dc0dd88ac9ca6c422857edaa66d3e937a2a460922a242adc5a1318137a0ca1a69810ebf666b3caf2239ee29f86e45440892810ac1b4d63885ac49ece4b71a51461dfd13a1049dfbf46ef819a6c78d5107e0c1f2c9281e64194d80be91ab822f3a057453a6c69a29857d94badf28556af02924f19a2bd184f2957cd302f3fb3ed7a47d4ec7937761050aade33f26d65f4238232b356720494999bfdc1ab891b25609ad74cf4db132cdba8e96b2d564bfc81ed41acfc58bee9eab3ce24a935136be2c59cfeb4e67b233b4ef2f5a39d024761969c35a6ebcc570501a3d0af10729e06dd03de2631fc87d673d6a6dc9b69b9e4b14aee64e4a9b44a0e7676d696130fe5b0f4a14917da060aec9f1aa91b1e2621fa633c971477184963c0496d59436710be20961fff2d4276910a3ade184bbfd2c24666d38d8c59e428d492d76022ca52bd0e2472f19598936fb983d653860c23353584dcb00eaf56df08702c98967d126cba00a10d80702851bc37062fd079eb12a8405de8cc7c4a5b128188a71bf2643ef8de19ffb0875a2abfa2cf3e30a82845abf5b50e7bfc68d507a972e7a677c636d44c77c8a1de9fca71dd5ed14791494667849a55ae9fb3e057ba64826a366004585fc3f676cc3f4021806378e6fa95b2ca01f1b60a7e81ea974ec6251e6af447917b5a68379431a99726dd9eb34ae4a7693aeaef2552ee4343f03fcd236189557e2d73617870bba06a63f37d86e8ef5f18d37f7c67a587e1e03b03756b4e8222d411961b1f7e3a58ef5695e583e9fd7bc0d546ee454b504885651ef45ecfb6bf7a86276863973bacc20706e64f4b6d85cb26a3d294bd14ffa16cdaaee97cdddc064e5a0751e0b7c39330444900e620adbc0eb885877348f0496b808c50896127aeba7305d2b777d664dedb10b544e6d853200a723e801d058db48691f92a5542e02f236847ed42d0adb4b222dd979288b8f0839030bfe7910c704b6e3d37035c75c0f9b2efe5f4ff42f1045d9f390c600287c57a085bfd785e7146b28fc10a0833831e698d298a4e7ee04017e70fe3f0454bb0775fc843b154c9220c48746fbf2721d9056a7ebcf2c43cb4e582f45c782fddc684d3db2f7a62d0daa57396e283c2e2638261b592882a0856eb66c1cdb410e07b42e907da0aeb670db73d8b2259b1297966bdb9caca623214d810bea1554b307b7905a957d17ae1aaa0997491e16fcd23bddc8638537c3ca87abf35dc2266424854ccab2367784146a47d2663220828eab92498e69977cb08db2c4e7be502bb888521db56edde5fa3796cdfeaf48abe6b1be8c2b5dc4d55d82a494c604e62f159ac4814d0a967429893f07672112e8bd8daf67ce3fd0191e0bb25fb030fe2ad19cdd4e9d4b409f115d36626a2065fcc4af333deca55c92d5d6292c60531188746b3959fd02e49a785f8050189351a110d016acda46848161e73f552cf8a117f414158898327d063a09f6c8f360e6b02a3a1265717cef13cdf12dce94d7493674b8cc3163efe2092d16560746f086a20e4b5dd7c1eab5800dfc2363ecc0bf9b91888e9af48f1c6a636c8018d38b68b87e74018ab5f653b76cbae83c3d6609240d58986cf15b9f43617b3b85bc7761cf8f60797d17649b8189c2d183453856df3fa16bdb60fcef2ef4081ae495b5029da4c1cd264d947ab6e881a831f3958b6324b5799c283fe939adb56208745608e9cde7206f1c0c3a0d30d1a424a5d9eb9c39913a71b232cd9cb7097e0a21e911833acbcad8e3c7fc060f7a03bc56e7bb00f749c62817d14bbfa11775d34961a0ccca002600b1cc42cfcf249425e2bde62b6f442b045769079f569593e333903944734ade10da43828db2c73bad3ef20b79988b25cbe2cf25670e8672e9cc0a2c90b353704cc10a2833aede8fd641e807cb9159f7bcc7dc984ef1f339ec89539d6d9fa8c4330f6a1dfc65982cc09707f404969d06d9f4a6fd6db65968adb852a9711d624606df548e39c39daf2c50fbd8d5648945c09bb21eae67c263b8d5480b865420be3c07554de4a10d7c56ac956936aca12fe6261dd6f1e5b551e3bc65ddc7d628bfbe153da3e9e70c09ff0cdaff37ff97d9df56145a6ea31ccae29451bceafc50f786b77182d149bba054d7bf963c9661c6379260149267c44fea4c39a8c60c3fbe37288f1647e50030fa2c5e37a21c15b9580718117fb79e0b3737ba6c22eee47a64f2237010fa45d187c046e05095795476b3abfe93b626b77897a6e78e8dac4dd96f5b58087ac205d3718d7c320a8d2db127297cf92fae56f2b2f1a23dce7d580e9184ff0871846de54e63bccbc6317df05be071171c774c02cb6a1807fc8af3bb87c6b91af87862111c537bde538eb68c0183a3cb1355d1a2249c0f8dc1923d7065de36e08dbee88386173a31b83855398f227b44c4a67b0b516431c80a4261de90cade4ff453bbe09260b65c3242e3d399984ded0266aee99cbf7c618ac5e1f556299a2be5c8b58650d815abe971a162fb983ac18a985455de2cd503ea87880c1f5a0148bb862d1e6774df46ba4f15bfbe112617835e523da6bfc80abe9ff4f820168c4d7e6c2f5b891eeb498a7570d74e4dfcfa37357203a1ba4d4830559d0d7a4c6f4cb34b6e73e127763477e2f9b105b1ffaa3636d96aa679855eace5d0a113ce5754579460c1d05c838d4ebded1e238bd3b1294e34422b73ee1c316170d99edd7923a3ce7dce401d23d68e8d3aba1ac3acfef9c4b01e86c8fafb4788f5453faf592335ddb7a2530579ca4d3ec307d7997e4fab5452cc3839a2880b74d7744f4225cd64ee995ba87af8a6417074231d715458dd729a729741cde0bcb16129465a2f4ab6ffe280cc4b60db2f745b20d697d64f742931972d147bf464c1f1717e8d176098623a664a0478df5324e35415ff2b67a718ad7135d8c096c265c6916f0d21324649b07f9f2322d5707c1c6a7310cdbca166cf3757d1e6a39ff13fbd89f8f35db48a59585f226d6c5f7278a13bb959649e54078eedc080fa23a282b88121922610c8725a9f5a0a4879c8ec95ad7807cc47415047ba941bcf3789a1baeab3eb71947fd56931e2d1bc65fbb5aaf4024dea73e25597cdda26c0401423fc4b9249134f3cf2ac58e96e3c9d6329f6f4146adbcdd7daf36d0871392e0b37e20a095158c7399534003c1b61b0ddc7650efe7274359a3e7b44afb86a976ddb7860cc7c5176aa48d5e11b5f2ab5c143efe3f109600aa409596b8f7647e03039041ace822978f2eab3617e8333000ed086712c0bf11089b776e64c557d5c29c86be6784a36b82d82be793c8b4b39a92ceaa164e497f80bf998e9a015f66f31506239ae84e5d72c20b2783ea95b3bfa8aa9abecb73b6499e4cf036bc4972121965f136b49a25b586bc8f0e69524641b218c238a2115d52149d1f73d43578a0597c8946aee5e18ad6ceca6e946364bb7b31047fe4fadc716edbd78569701ac0fb3e350b5af4eb3beb0bea025c79ca899af5064712a726a04a1a7518ff44c15a3d9c6ec26127ae43605bf6dbafe952645f87fcd93469a144b1e4c49cd1dba618c69ecfda0e9bea2111394c42f82b021a563fc3013395a4e0d49d714b405c98eb72b3938cff7d0555207835531113c58af78a19de8d15415b364520be3634d80e0a2b02f68222f9492fcb0f5814ae7ce6968d8d7464f02d9cdcc86729707d09a3084404fd78e82e64227f885970fff52c920b42ec375e204db6724e63aadf8ef48077d4b52b54cd59a1dce361c56bd1f81ccd2ac960e6e18a5377d82f1e580ec796dbe6eb5b95d3252b2698406344161991df4ac783a88bc11b169fcf633b0c8f0f4352ba4b906178bf19e26bf6f71b5a203bf541195f18818ca197a294ba01fea64f1d5ab342750c93dc1c5ee392d942e22b00dad7ebfa3a0f277d2a06bf711324ab6e3a9e87f5c9a84b6089d9f354979abb7d58de9c78506561f1012c0d2694b6eb46c17553359028f647df82a43a5cd1f63ab58067dc82c409db9031772eaa367e4d295516794aef77f0f1f83996d118dca342da495bc62c92fdad6d469ce981d36f3c3c35776bcb37b7f2a36d66034d37472de3193440a459cc9594e7790a565e8339acc4a6735147c0caf1101db14be897c3431d587929eed0b5a83afd8e2172adab0f3df3c000a56f400bdd148b7063f674bd8497a213e2ef01b39af03ed108d7a6a9860ebbb3c6749bc021e637613acc785b24262fa3b24c3d2df99a626ab9245a9b3092f285bcd1f5f6d6e2d12d70de85d86cd077586108887edc9ce7a0a499328a0bdd443a2f81058f5cfd3a73ca6b1673cc95d7b03055039cb9bca7ca38d5288db70d4b6a84a4cb72ecd960403b1d3433d5b461928e1b9c28ae1545650cf89daca6e98a531f08ebe152f0c661930d55944b7d92ee608b4c4606b30594534572e58864a4a9a2da55de120b85b4c4683bbb8ad2ac8a35e3dcc8c1136f82791ae40058a9cd15f51a0882254694de7d4e8b45324967f545d65867f7325b29ab26169aad9e66c424fb93ff43ab7b9fd4a7bf3c7fb5058a5ddd6988f672ea8bf94333928b55c540f76ab37a70e280760c538ab02bd667c3df80a6d8b132912e0c1e8b8786d8b280420f543e7dde4158ad3c31ea97783a91f347323ee34a4a4a0fbe0f5d9427235965e000c4d97b5c6f812f463a6547042b9dc7305cb579f401d7ab7e088ad57d0bc4e34662d0ca6aba824efad989b37b21d300f272114675629397df4681a391137cd579466bc1f57e305e006f855799d76809ae5baed3aa8f6be08d7d6c2dabb5f2dc3f7360ec84ac215c94cd6e7f01ca3c2712fd1707bb0969633f11cd1ec57039c839bd0faa30c5e5a1751cf8bb3bed628f1cbfa177132c0428c7c4f129173464ce39f5000c4862c78f037547eae80fae43fea01f3dbb1d08bd99dae9b1fdc816a1e6a4a737f7e5b7d5cf601a4676e23e9610f2cd037964fdfdd7d66f32a01900d6501be9ecfd6c2505b0aee26aa91a5a5735f6bb2ad44c873d65fbd9f2da38f99991fd656af911212a451180659963e14a5e7abc51c73c0be79e788e7111907e0480d6d8c93cd6e0d408a30557e403cecb385f483df08108c63e750ac42d8a243176381513cf2563b5c8976b43bda110448d6a206399e32edce4c963a5652eaf2fb5f0386c6ae2753dcf71376710b6d16a0a33d7022e33c1d3f09c05fcfdc91ecb0d8364320e42ba7a22970f1408bb671701b1a057c20546a71fbfa0a3a16959986db39a5ba9bd4ce218345bf0cfaade1057902ae0135e2a6ca036271449fc9bdf3952b3982f419cd1d45f2f10015ae1efe255b5ac30ff57fa1842aec608cdd47d7c05767b01a1b8ae5e408631af1a5972895d7444b88013e825485d9197b2192c8fc9617428fbead0da2151f961799b00b0a6fe64762e455c0ae1a3522687a7fe6498640f3203efbbd733b1d76a5e1e5fd8767d9bc1ee3829d5fa0573bf3358ae4b6c1d7371b264d4444a090635518124485a5b21945ac7160df0d15bc2c8a3bc69d423d328696bfb968d803d39eb38cc4e7bb23281cbf09e2a20b84ba19b9226023abdeb96050f995ccb21445e9b24d102998c3123625789af2b63bd038e5d9bd0f30eb534ed4fc9e2cbe270d301d5630e96f01f199a61a5874f497ea78426bccd6f93e7e58ea5428ce032bf329c3f8ed266b4c2a05f88d5ddcf986dc6c8b8c22e02a0ac612ff4f7496e1ad220edf680c82dceb363aee5d1463bebb468df593ee852883766df0ab4fe86c185a88ef270a564f96977d6a3b9d29ba6b7165d666dd966ccf22075c3f62eccc90adb44e78909c30179484deb51b0e8b5d9dfbbf6a19031d6ac7f027387537f3a96afe3ad166a7a6d786ab7f60c81747ea37cbbea127f352c7e2f4aafb54a895f2994112a41c1e12592e2eb5c4820bf8e3fd58d4686456440c0b33c2032dc388adcc6eb1ee6adbd793a547266f6b74379fe36c512446f2e14cc2f7b9f5f115597fedbad949255707dc67d39207a5b82777c53a66e2bc5a315ac2373bcbe795c93deb6613156d6fb5d395e1aba6f592175e9dcb0abbdb329ecb3cde4756546d3703c4b0ef7109839006c3360d7cea9d7edade49b2d03047175dbd630685eda27c8f56ace9c9801651389b1ed4d966369016a267c4f726798d026099a58c1015db4dacf3422ae229aa132b03cfd4fdb532f86865b42d68f7408b74c336f5f77a8856488efc6abeb90b4407fb89f500e475865f5230beabc9b345b7a1fcf0ee36135e6c2625c54fabc431df04310e3ac2f5abfd45105f09993dcfc8c0a3a0727b15d67a8d67a26902a3af607328f911ff9b3d9ffd91acd93a17ede68a55bb25a7488e7dcb0b5a6a04b2ac8d9c3ce99c323025a3bb79255cc7a232c13cc1610951256118cb693527a1663d36e0f00f4b4139c16e9ef9ffa71b05254f67ea7302d3afdc3399b4169978e6be35b09c20c4a6ac90a0dc4463d3edc7af7dc9447f392195c4d8a0f07807fc5fa7b39beb69a0443ef97c6e04797ac02b93141aaf9d2d02bc0702fb97c7ca4df2ff957401d28af9faa9cf285756e268461f4d710c3c518ad7d31af2be79f8c8f0e8f3611373c3628ecf4f03ceb01c3a88957a11134036870b63307f23f0e68cfa05474dc9623b30c2c4c1150ebf5a83e9740fb53ba2e470cbf5a4d58763a0377277a95a313843ea686c203cc127904dda7d8cfbb67931d2ff690313df164968a3c9acefdda3fbdb0a5ff47d3e937150b03e28ab97db7f6987fc225f2997627eff386f3cc87f0d5fc69be99f1ccdbd56761530ec0349fc1b79bcd3a4c853e66bcc24fe6ad8b913082e36d041ebb4ac75442839dafd40a62236bdb10e6fd9917a25bcb8b0000f62be63bd5e7f66249a2161dc3f13fea53750cad588c4fc620fd38235bafcb767d0f0e6b834f94e3bf1797ee550822b651cc31903a7daf4d1346f577e747f4024be212e7974e16368a3b51d6bc7db26bc34c558ab60b4c1f0d6865f528f8dffc225fb8dd5ada82fa24b83ec5ec5cafe6fa923a04e9b472bd65690956629ee3eb887e317c97c3a386376fe3bae6724dbaf0799e6b94b2060ad84ded98be44b8968bf31544c27352c024fb7b929756464bc48391aeea597244b2e08263611fe1412a829ef4157982a2dd1507c41a6886205c707c5d508e269c98e43693e16094b82920900e85ca93810403d5034c3d0aea6b90d50c0c30dc9b1fb2ee7e412822857f4ea5471367b09d2d6b5dbc0e6ef4eade4ed92ad8455a028b21165e9486320ceab4952a5f5a5410a7c4200d6e9e33472836cdf4e6c36dbed080e5337c7a23359c064124441efaea14b9cc840f25ce4fbf45d28ef2a587faea7fa3511499a7a55d9999982e67e1155ed5c126f1bac2c8aff2f42538f8fab494851d9cfea8276a1d2eaf51972578c60d40b0b37f4eeec84783e2514d4f283aba24385cef857237f652f646cd83e9419ec2327762b940acc98cb8e3236702badef685ff0d635c3cad8e48ea2e810906899bdb3555271e2078919743de22715b599635fe98b8dd96c7817e8abf79a1b5f9b0dc9a5663acc2594da9ccdcc66220d3d9074325deb21898aa171b38130ac342fdaf64624d57b3833a33c9245273d02152e8a559181cb70fdc1ace374b910660abd1da4f1c440a139dba6efa8cd4b1f7cf144ffc84cbd4031248a310584841c3658193a42659452da960d0c7db084a17c9e49b2cb650837599286c7084fa3dfe051d00658474cba77de4686029fb0242c99841f204a94528b39775188535e1733461d96f17888b86b185b440bdc1e754a24101b1e047ab4a0c3dcd2d91f86963dee911bfb1ac1b796cbf9c8d968d6580ad32328bb7ea81ab6be5c7957584f59fa3956e16100cac6f8fe268a59be33d04d477c9e8cc577596cf4e28a2e761862348f02b44280385d83f3205530aacdfe7bdff9235547400fa7c52cfaa989501ab8d113fce8dc124616be4ccaa95ea31f0cba7c114ab36992276c7e7049ee7fb658b5b72fb0b66925d2314208d413b87221b880315b224522113e7e0a19d65a23dc0ccef25060d973116d9b0c22b05241f6146972deb76ae3b006d9183b770c323fbd127999f52f9b7256d56fe3a084297adcca1561d94f242a1ca323ec79f2b05e5db4b61e483bc460cd1cdea56cd01e6508cbe48d96348a3053d91f6ac0d8a298349858dd8539e380c993a2a7bc512e408c7177e86c5af6eeae386da1201f2d570504f205dee8d8e2c0e8b03842dd83b82b505e54280106c992069f174dd57194f5e966011049f0f4329c639b67e4a867d67f4830f5183ebb20e322878b998e45e0bad92de5c81ddb07670581b52859eb7826d004ecb50b39a1ee35b81a6ddff1afc6266402df5ae3662c072cee569e453d00929cb65b0a0d92059b3b6734cad31e310c06a12cd39e092dfc170026b33fda2821c624eae3b8c3409a8db596a66c603782ee44c17e796af2a1db7b5395cd368c9a9e3f30448417bc863dd3e3ec38fd5449bda3748e1c9a1b6d5087c4ae2342c56d1078c2c4a8568890e258d2c0e76fc439d26f034b13474a7c5c9289b18b9330410b267d5a3be61045fbe29345b935016a9ca12af890bc0af231c058698f99c7d134924e71467017c0c5bae18a5e4f08a45199ce27a40315f819d1d6715fe0a402738c7af2fa3f87d8fb3b924159f240e48959257a3cd8b23a2b77fd032cdaab95aefb651a1c37f49306e4eb8253013e74f2d1428fd9bac3076d2e7516656bbe1fe27d673166eafed6d57cbca0aebc1ba18efcac61c59fe94834b856e8bac4b16514f6b7a0601fd9ea57df250e76c138acff8955642b1a38df556dc5908776864e8ee28fe4bcf183fd3b7576e02225afef80b228ceb36c3bb9fdc9023a71a6f24e5e2a0e908b382e8cb5a2c024adf03cc33ec0d802e86a0001c9df813e1c8d82f036cf2b798f3ccf7f7ef02056c6d02caa2ad565d40ccd1d21cf42b71b81b2ef0ff2cf4d8b4fd25a75001db42577ffbd668b82892971bad11600d73c11df18c1776db7d0ec5067662af81e73416cee6547c950709b111d5707275b719a43a7b09710622b3dfeb8fb45e5ab2724b2993943205056005a105adcf62cbc57d1186b6d7f9a1ed6debb6eee76f6dbf7d6b1b5d702e9ebfe1791cef6d2e8fa7f373e7fc8eceb7c291d419edb71e145b9f23922c760b7febc9dc7a127feba7e78198d9963dc07d9aadb5368b40b4ed6f997bb2843c92b0b3c127ed664717dc9359fb8dfb9c496bb53cba00c72449df2369daf7bda67dfa3597fd9b4742b279a4b1f538cffde6c211431149dbb4449245ee3c71c89f23aac006cd3dcddae4f6dd536f453776e00197447bf7b6fdbced560395862a8d25da342b2b2bab27db6cbcf6ed48d20a03671727c9ba6eb09927f2536f5390e2b0f09fe9010155d81cf2874d0d5c4f9f8e248bad93bd0babc3e9e8e4bc1d7f7cb976d0f36f602ea8db2775bccf461759276f1d161e8ee0d4bb0691e408bb84cd00ba6f08db47f27e36e48204df49ba9fdbc8fb174442de7762073c17f649107c9a3f7b9ef7484442de88b47d1e3f7b9dd145ce98a47bfba038f72726f1dee5bd8b1b37d6d811eac6a4ee73d77d4642eac6179b9021507aecf8400d4d42333f52f7dc236da3f69ff9de237163f821f8096fdc72cee3d5e3547c3bebad701c4eaca0068d9f0747a4dbe6c998e7e301f0a3b0790a8129a4fd3842fda9afc50ddc6d33865061433499b325b3cde4eb8a1aa9ed57d2746216eded2a8cb3d65afb17cbaaa87409464684fd2be2b8e939673f8db27f4124947d968d46d953319b5074e7751fc96aa58eae2cda3ea54b53032aba3efd262d7fc1386f01df12bbb711a9cfdc5a28a6b6c424fa3dd12fd5ef96ddb6f316d01a3b127cb7de8a555facfc4c91129311282a545ac00861b1ea3e6ae239550dcac6ddbda5bbbe97e6687bdf25c0a7486f741b5d44932e553d0ff0734077f636730a80ec9e7a3fbd0498b0bb5751a96a90f7fede48d604dcd1a72a8c04ba496a459ac419ce76f46d752aa7aab049ef6d659a093b1b47af125d4b8559f7a24997aaa2f52ee51058cb51fffae2d4408b348769d360b91456cbfdcb7617b313eef8e0681778a35d60055f4e77a4e7e6e1791555455dc1f33dbfc2e7f5ffe38824cebbae2061b5f1d79d9d77fdf89cab738974bf48f75bf0e38b16cc71a9f184f86f4189f1b99cee73bc15167c8eb7e23f677cbde9e72a708160c4580971c57d9deb4592eed773d35b81c1733a9d4b893ee5523868d22e2da9f0ef167c890fc093f60803c702c0935669fb7b559557799557fd07008300bc8faba5fff5fa9e57ce5edff33daf7108748d62cc8767e7439df70f80e818880e00d1a754986fde01feebbbc4bfe0029d27c1ee9d9d70e75dd8ec9d9d6f7da68377c20b767ee7c721d085f31ac7ffd605e3387e05ffd2ae1f2f007170c6210dba46f12d2811d3c2c525d22fa048c188e911a9d58e48437f1d91625598678f56cd0cfc5d551a4585f97f4f521315e6d7aba04b7f63acc25c7b925691b156ab5571dee6b5bbcd989b4a380f0e578ec0a2f54a59e1386e7a4e5d45c5185fa714632dcb30ce6a7ebf5869fc2f16b31efc5469532a9b9274be8bb5feb55d851da184e6cb9eb3d65b27add35f855bac83be8980b66d5a97a9b5d695aca6699936dadc28a0c2b45b8b3d9c617b2fa697da3539e79cb9dcba6151617a6b1a2c4fb7f6da1d23b83b0815c6c1dc3967f4e2ebd65eeb5361184eee464585e9fb39df5b6f86750e4315d5edb5d5ddd6aa1b0b541807b37ea7697e85db346edbb62cbb99e66a6e5a4cb74e6bf54aa37ceacd0696064aa9a5f5edcf9b106a7d5bdd8e23d4babd5a6dadd427a55eed086e9dd6ea95c2108621ce32bf495161bac26cd5390c2fbed66f941aee1a538826c499a4b319c9bc5f1596f3463e1de99c63f62a9cd31596c70e4fd76c121ca5b5ba5b7b5f9f0d3d47f2dbf43f253d47ac829e7f5b5eed9cb3dbd53aff3c4ea734ef39c91276a65b113158863769ad5beb3e9beecc0caefb0bb733c8bae39a7d499ad2dc81f027dcfd9f75d1a7c23cb7c299c17cebfff1d0f47d049b73ced8662277c5397196534055adb53e6c572d748acbae9f62c50433c1446db0670a14e69c185f8c6f9e025ad2f42becad2561df0d4db9f163d2f43f1adf02459ee2429f3d514c0db29f0f247aad7ff39323adbdf9ea9144d5b7473710a5602750d41ffad3a625e6c4d09efff73931740c5fc7cea533b1bfaa626a301f8602c8a706753f2fb7bd0ffde50d74ccbd155c1e5bbcb428a0c2a88dd6c69c18bad5f277ef1dc861da676d7bedfd3be8b8f76e6c91626fdc144561b153f71a2cac273af0ae9e40e13ff7c1313a7ba1a2823e68508d26291365aa3f7aeaa54a21f8f4ed8e624e0c7dbf83094c0db8bffffdd02058a006755fb7bf5fc28b1a44b6806daa801a94fded46726af15664dd3882a5513383bb51a69c189aa44c1e02d1e4bc0a61844b9d8cd420b28565aa413f6a10fefbb429050a15378f2de654feaa8f06ca542a5be26cf7d1d0d529ad94daaff3721de379e79c1f5a8cb1cd6e6462c7439e61328f807196e12cc330eea391499f3d339a65d7c33d270773a31042317ec2dd5731334861edb5f6a2a8c02b0513b0170d3a7db86f87a67f9fcecf5e41b1ebafc8e6ccd933f1efaccfa1d8e494c2188f53b4a2add6a2c8f46ae138ee2bf062923e1ba8c25e958ef7a5e9db2bb648b1e71c676d31a7769665d9b5f37dfa4743d3272d99bf209abe0f1c97dd9f94ccf65e7baf05e13b41d3b7ffdd0785507c3f4ba5566f81e743d2640cc60b2a74ff4513fb30322b21cf73ded0cf5b457df9c05ca427a6901425015649834a59c3aaac21a5b411559ee0f41d55952730954960ca24a832a946992455edc539572013295ed5d631576cad95e167d6fa0b7d72ce5952ce39bfb6ba36d41f0d269bd4ff030d964b8919a811f010b5444c12395078fa40991b16c040d1f185480c1b5ef0616fcc289a81a3cccd0eba05c90b120aca641b1e5609290aa94a193400d8b3a43163461926d656d85beb4a427b67adadee835394942a3168cae4f0c5c8a93452521ae12865209134c300c2a0097243912022b812b23636a94ba85a0ea926bedecc096a6445998189086e10aa27840fcb19be685e3020ac5d271158942879cac1851774d8a423ae3695c2978655e108eb280dce91f288a9345ae242e3c2729b82b535881cb1d6dacc06d25289c4a34cce2e3436973244c09532a4c8f0b249fd466244c462a19930d4f647634f2c255baa24110485274b3336d192222b2f3f6a582991119a3fc12bd795e541a3816172ce39cfd8c1862f9a4aceb9d5c28d910f26364768436c4b9aa6691a6744838cb2e8c698b3a7955933ef8d97218c102c4372945c90c4683ce49c20d700c49a336b8c82d04b24c0820f5d60c892858b0ef6286b4896134dd334ed2a11e1a862e3e9ca88a41c54ac51d652d60e3119cfd0b28eb24e10938180817b96317028f240f056eb2ff4c959cee3cc5392b29c731923cace39bb4ea05d407c650c20bbdbb38c8163bffd11f321160bc784a195b1b5922b1cbe8c00c911205fb838b91115c4192a24a1186162b13061c28460c2b0871e7a78bd28ed42b5ff170c8807adf7bca286086d24b3732681759900a646cbc67b5e5183c3263fa60375916006c61853b94a50c4d5456b43488595763c18d38a5d22a02e275d6f58e563b86e4b93b3a68d39d3795024596cf075746cf81ced763eefe49dbc9377f2ce93b09d75b276f8dc3692766fbeadef9c311e39eead1dc9ed4116bb1329d77a17971b49d8d9dc6fbf8da4fd5a2bccf0b5fe1acca1e7ac30a7ba3a059c4a264b4fa00d3d4b26502593a6253f943c814a7a964c8aca2550e512ac5249941a3561a8c6aab9267286463b119b0c8bd075cfd2a9ccc6b726011433a1c669080ac6e96ad707b2a28f1310466762d966b19c7af88e70caa2ffca0dd7a1fe422cff99ffba05a6fab07fc18e38f9cf53ad746a4221d3abcf08adf72c9d969c6a644924494a72b4c98fe51a2c15c638c7b84420b1f29f8931c648905c2131c2cc97cfb22c33b2748d30ddbbddc8c03835b946b9a93472e423e23353a64c194b86cc2d7244c610457e240d21445944061124aee80784def62c895c590e88586541c0fe35c4872126d8e4c76a5885f387291c0c91aa3f9af66dac443564cbf6a10231260cc78cb1a109c2b029861960a266e43dcba6a7262546609a8e1c8169226204464c938e26a512846109aefe421f2fd6da3ce348103121be75c7b4a613ca261ba590204a2160bcd8a41bb06c8ca0ca193165c618118244c8122143b2643494685c59e14b1822a4d8b04584e810e2234b17dfb314d283101e646811d24586966ccf52880e5d826801e28317fca3c88da22948f49892431591206582a0c97498457f5a5ba32041042193a58b102a5bdbb314f2e4dbf2ed0024cc9116205f666801b28586962e367b9640aeec6dcf1208151d74d0e1ea60813cedb965d7fa550a5483e69ef567eafa339f7ced1b3bb1fdd4d7c42c624a664fcbcd1ae20ce7c755ab55fb6828590081cfb06bfd0ff63e15b6030b54c2100847c1ee37862b56b41e1a904ac304891e669cae2c101f417c2491d2693a34cdfee891e5c34666a16993faed0e59ceb29c03051d6659c9c28c9d6559966559f655d1ad3d4b1f58574a1f42ecbb67e9e3070f70b90655ea9452a24a29168dc3318096a809c111274c6a8aa0842c0b593e2b9a0ddc977fbd8677d89669cbb65ace403e7ca03eaab6deb3f42155c307c337854c62c722184de637196ad1627e1d33b0e9c3a844b41e20cd3682f11745632cce1d36fea4f0d0863cd1a223cc9a2531640163997ae8d083074dd3344d0bc18dadc707788060931fcb8ae9d04a96a2692de49c3d141610e54697f2cbd39692470f1d3d9aa4b498b27adc907205f6af1792f038faae944c544a1e377c567cc73cc28a8c2c5047dc0093249457d8f9f50f4c417c52be2b258f209bdbb3e4a16309375f9f0c9aacb4869fc0264cffe9f9c0b15715fa091f4dc0ef53a8deb7ff02c608038fb31680a454367dc78fa7541875fb78ec710085f57c80bf5e1dc1d13de9fdfa1ff868c2fd6aeb67d958c7fb3d2ca4eea8fd6756f96fc0c507f6ef7fe07f9fc5fde97dd0f3c135c1fe1d7bf0df1e16990b16799cfef38049bf87c5f49f1744423084a617811e3cb298fe3327f0c28e75ccfe43290ceb76899b150a1428502e2d7714953b9686e066552a55b832f2f421d1e4bff6f55f9f38c5cf88de7eeeede9675bf643f633d53c0f86a86773663d4d58240c631f91584c47520d1d484717ec59e608b345cb9a76cd60c974a83fad2d9921d966cf324766ed96d8d49f935229aab431f541e5a30250290d51a344082b3274840942bb372e00440b388a484a01992c9b43a94a690b569a52c2b2b56fc8879f86fd2b470c312858c4152b39cb3973925475387320b191a369460e1d9bd4cf84e38c0c1c46187d4d9f9312879a6df72c711c3155e2a052e2d0522e51b1386096b321c15201500264d13970f3c51fa6684b25ac4a859b35a806d5c763c619679c7176c76e6bd050fd2c6719c6f7927663b7a4fffdfad545b687b0bf0844bbfe38da1eb859ad7b200cabfd84bc5ef7b96badd1b7c2e432718e24fd72e88c3ff62571293a869b2f32d67d26762309db99e8e5c4e832ac52cec7fbeeeb7b22f556c4aa0cdc7ce1fb599665599665d9cc2617727219a748a6d8f3ebacb3ce3a6b0cc5a7436f4f4e2a2d9bb41d50bd014b9ba89dc1b18851b1456cd30cc4f61c87b2cf5cc6713e9bfbb006e13cc771cfe17c0f8ae46f10e773d12766fd2173d63a0cff7623d9c24417b3c164ac1b495abbd192a102c868095918fec360b112fcc75ab98e4e368ed692696162774fb630b16d7eeb9eb49bc45a0c6706b4fb219bee4bf0133bf3875a92a620e616263c4b861aa0b364ec95254305802f51cbc72ae10d6118b321167b9c319a9c31b68f73facca240b06071c7f2330718b84cb1aa5a010a06ab1ac01ca6a830450c7dcac1db9fdaf55f409e9d7234a5a886bbbb3b16c2f77175ed3f22d0af9f63435777b74f5a291a52aea2606dfb9ffd9752b4edcff14904a2ea218068d3b74736c786f6afba8908f7c93b72c0824d9f5233776edbb66ddbb679a069dba6e59ff34520da7956f1f37addfd6bd6e8b66ddbb66d4f7adddb93f57e9645926e9fadfde9693623ef8b40b4ada8d1cc0714ab28366c7216edfa1b94506a80563439c180704fd497720bc2a0f1063368f2bffa5ba7af0aab0fcea0ebcf6aa98453c2500ad5fa0b7db29c6551636844b155c2a82c9bd4ef43d3b49c35254dd35a484111daf6e404da132f4fb03ca1d23d8172ed594649a500ace2640a14169086f00993a6699ad663c3cc931b63d5eb49e7851de00b453941e070f19cd4e0840a8452256a69efec594625f176e0e6cbbe6229f6cb76df3c31ab9c51ea62040aaa465046a8becf3cf1606ca0a064c38d13a054d11dbc8a0df0a723e721e722573bcfbfd671a87e8f8f1e106da24dabd8e3417dfa0df021ff21fbef967af59daee1e68b9ce0949e9b7e50d6bac25c67cf5e93c410a51455a34a148da81860140c42890ac328f77ac1284b67f8dc13985660670fd3de5e0b761e5fe0fb531f44023af1221764a0e182111ea50b4a4c6011db421239e72ce75cd6235ea03aae7962ce9e4d1f5c0205e5020d7b7a4c72ce198d9c73939d3394d4ce23998144c02525f62c5be0a1852c9bd4ffe49aa830bfb1247a02bd2accafb5f6864ff4a4f37d4ccc482c061ea9967e96ef0b94528c83b081d1c4ad07f59de9f50287d4a0990030c865523669b2f503dc75af7fc739bdd6206bbd1aa0cef9737a25022e81298047a0118803c401ca008b7420a929683548502687233288014208336972944564cd8d263ab28aacc159176759cb13ec01f6c8a6141685b2aa176778e23ba5b0289455bd764ad539a5b0ea047b68fad36ad61265aa09e1734ebff75e7aefb573ba0562a95750062843533adde7b452384caffb749feed3dda7fb0465b84ff77941a47befeddca7fbcc6e92399d3a1e5dd8f87b18ffb154ce9c299fc46000d4f15482271ed6d8244f5e9eb4d0ff170c28673967a00a3aef593ed900aef01402d8bff09ee553954d7eac9a7952e2c3c11d4f3bf664b286c71a263ff0580332e1ec5932d9c2444a09375f95fe5b30861ee9dc53a8a66ae7d6de8b716673f64a73d62ec65996b386b39c356ddbb84ecb9db66d1cd7751ed7759ed76ad978ad968d8dd63769b0b8504d5989a19ac25acb46eb9b1ba7daf5717c0ac79d767d971bf9ecf779a5df951056b456776b2fadd5dddaabbb1b1c1c97ebfb703ad7f781604e8e0e98a313863b3a61b8b3c3c3d3e3637d7cbc521fdfe1e1e9e9f1f1a920aa842d51c22b2dc1d3f5f8b84f052e9670a5129d8b1608f1f6df2bfdfa545cb44ca951156a294dfd518bd26071a19ab212433525e5146ad7b74ab406f5afd32a027672890039ab36add5ddda9b73f6c92f8ee30517bc5e00c0c0628081578a41bec171b9be0f04732ec82d7f5addadbd1767f6629c65396b9bdd36af74dbb2ac69dbc6719de779a59eb7715de779ad96f65a36365adfdce0b8accbe595ba5cfa0607c7e5fa3e30c7e6e478a53939608e8e4e18eeecf0f4d89e1eafb4a7e77391f4d9f6733c0ee8e672743c0c3b17777c782c0f8f57cac3139811a854cdf924a96434250001a000a316000018100807c3e1702848424d13640f14000e63863a7252321506c391400ca32888812806421808000803186488515241734a00e096f866db22a988182713f982baca44596c428129db6a7d5b756b109c6ae3441da7114123895505c2a92223c211f88eecfcfb7cac0d63bc27603d32652858679321d13f8a5eeff2be188de8dca4dfb3935b007276702483e4b7aec4ddb618d7e8a7a0ec438bf3890ceb4adf9437fec8f6189e1339585c498468e4960bdb82c5c5485648f5731677759bf7ccd36d11a2742d749e8dedaa7fdf57c8ae854d41a62c03271d6b212f8d26553bd2b0699e701ebb70fbbc392a740b8da647c3e6d8db76dd2d3e2db9ecd93fe3d9436616ea128a84326d6560095244db71e233d2e759e82c1b03c0275144037237a4e7536e584b0396047556ca507151e224bb80b41950300d71a0a553fc0a61fcd2e4fa56fbf709a9155e0215952072425d0e234055d3cbc94b67509c76543aaccef270e06676ea8fcc95087573b80fb86e025be1bb3eb48d5794bf197e9f3403bee1f91e9afac72c2bbe3d196b6ec660e371aec0b63d3a81f04bf1a5fa33bd7101d6b3b92befc5fc9a015781beaafa3c6f70427e585cea1ed546336dcf24059667cc89d6b02942e890b476afd4a860737a75c25d46662e5a389d0b728cc6c243840fd852180854e7d66a9aa94168ad4fb440a59045567f8cd27db4ec176bd036805a329da1c2932e4c6f741a288b74cc1041d8a39e2d51bd4c886ef212d03f4f885a9718b803d63e9b0b83de61c005c49e3ccd954c8d24f05ec7875caec6c888485036d90e062591ddf5afc7895180d0826299ac28d5a561e612395b304b7396a412693c66ac26c00e83f2d3ce4482ea145d6795bb3edf486077c6603e0c06b9791b535617a81214dd63a61133ecec1a4855b2ead7cfdfdf7ffe5f3ad402630c80f29ff1f674701be8514a9a036449760d2d1db68f8dc62679e088922c422ab77015f84faa9d3bf44d23a901e6469206841ba556b6633513cef6e64f981a368b4a48d5165832b557659e1eb52d131938a6a1bc94b0e53539b3fe77372f6ff06367e1f97b65e132a4656c98e0732e86634d650c7455bc0affea661cd60a8a4b9a3b6ec25ec8c5e0558db9a6b20016453480d14d201d1e314d0012fb01c1891a8a948c28356a1e4d770ec360aa74cade21ccb1a72c02b73c04fba139e26a4ebeac1b35bddb6c776293b7b99f14e31a049e24d4f44624795eb40e293bc86eac0ee952cb72c4476a19e9fe2f290362f2bba15a660a1a1d536ff469ec9ff6fa1f4002cbc173e22fcb36990110d43cb34557126a658fa82b2952892d2482768824e81da9a7817bb529751c0babd835ba38835b17f657f946fa28313d1129015636db8d47a3e30a429a5b2189c33d6aaebf9adc899423612cd09ec4ae2d25834201c10d90a0258038a29ded1997bab59191504f09361f0e48a068bec22e59fd04ae803467f4cac05298a328ea06ef436a0b0f35e8871d1b352a9978a5c8e317b8667bfb47e310b5ba6c946c07ac3a9e69898c27437ee0997fa5e543a92ad6a2c77887cfd1efa03ed9ef71f03e4be1a30516fe74f461dbfc28a696166ba29cacfd26876521283f3b491b05967f78abdc3be94d7ac258c006c0ea1f06933ad9010dc98476f581d2d6bea27d0533b188de3d1844e912e367114881be2b8edd1acabbc104e3848c77ddbf47c52953badd953336a10fa8b664c3577132a04d1e332048838ef2d5316b08d20d43181b6cf31019d0946e98f256291802242425b176eb7a47ce603302ca19d4904053a336817e2a32b2dca09306ea297f7f286c502c792d59165e2202eba0804dd99d0b09bc740c224221c8234f88d44dc2424405eaed5e7b2156157d705b6660ac25a84e65b76da1b73a987a6d2ee3ab03942cf164da7fb2d031da74d4e817129f8f797555fabb884fdf7eb7b3474dfe094bf1cb076e24f191459c21b84f8f32584087986eb99b3766f6f3da10d5990fcdb88a8b25825175ea7e1b9b1848ef1ea8d7e426dba05991872585471d33ae4a3a6f6665361a1072e8d5c2770843b541878be0451db41c9cd3c53bda39010b555026eb19a1a40904b60fa3aa9ad643e5e2e965ba43aea3aa57e91abd051308f7fe9e910e55343c52ab1836b659fadd331d84579995d423f29a20a0abbbd098e0461e0c491f8ba186eb45338ffe7304ab8d00d525224ef12c52eab6802c45d869352ffb6052918f07d496ec7838706ab7cb35582df0173f9f711de37aff6ffcb8b9cdccc9c4717759a9478a19bd556d204566e6fc120a836f16d20bff00c91c98f9411f1a839adb3e2ad55e5637d629c50c225fe1dc925da9c5a9de50e2eb9ad13857ee25b0ea98b16bc3fff179c74e378684d8fd322d40478138d361ca77e0e1af715cdced5ba89732e29c18b201a17c24aea5ffadf945c807b57bd39d9df7181a5ebc0bbfe01db536dfc0c10d2cff3d6827d41032e2115cc178557152b6d51e429fbfa80bf414a18235f7a04ef97efaa2a3c29d276c3733f6b053b45c39848ea30f34f232c2ad708982bc45131dea7e97c8eed5ed85cb61bf83ab748cd1803cf491ceb29939e3a2b62039a669b963943b7f4568d2dfccb8ec38c341d7ea2f34db37fa14e34706f88201bed465b09234435e493a784fd154782776640d9863b1331e31e603db93be5fe1db778b7ed9f99c654308a3fc81e7de678efa86f6e48289d5547b8959e500e6d678c5888ad69fd92dc6bd053b0822aec1469b8ab34fcb878bee6e9387d15557ccd0dcdba8c8c268b099ea42eba9f105e3f8e420999e5f57559d8e27172f26354a2588e0d0e4d3d9104bab01f52f2f6d3d82fc45e993ec62a564483800e206c6fca53732faca4224223340cb07968c871d51ebd7631eda0e0477c5ff949808826c687c2887c37069e6056472078c5d942dc6c947ca885f822546f926bad04439eaf2eeb08f1ca4120fa4b7bad16978391a47fc0e7926e828e9d86c9cc583d38c6fcd0d652ebff04aaf4858b5dfe6045f1ae10c9847f3157e23ed42cb84a23758511f61e95c18ef08eb4c7db1d7de4df7d7a9d2eb5d601423bfc8d5a36b42cc5d367da93962c43af1bf501a1a962131f90c1e4e165a315d1caac1a5e675d5cb35bf1b38ca6e405f979ee1f45e0e60465a39f9deebf6c381d0803b5663dd79e833299fb04dea0750e9593f3b1d72dc7ab9aa6da08498306814013bcadc1f62b6aac7f09d337f59a1b4f0d71de7fcf42b5be2f69b71560cb62d7e2608ddb7fa8c45e19e41e173072d7cfe53f3f5c4ecce007ef3c21db90666d041975b1d7bdad38721d819a4f369358d7ed67210523f9b3ce151be0d595b82a0dfa74a558073315db16303ecdaf2863827a28570688a89e6abd2d85ac9ee4efa82b8fb69a9e52320b09c1088b5fafae3a36b2c0a37003d2b3a3e7f2912b390bec2a7610158645fc767eba96d66ad7b67fa888b6fd523626c23bef26a67a4893dad0a99e21a1c46fc408e9904a895840717a5a02d280bc8f7f43adcf5d9652412bfb7d232b620c07074537e9248e4375a56b4b6364518e1307e417b93ad15051934773cea0e3911be04058c0fae18e954ba6b391742cd0285d2bf1d19052f8ef4b5d258950aa985e42aa553e704fa293b52a3a3ec8f9cabf29368c474bf683b658de27ebd49f2afed47cda2c81aa1507e0d904518cadabe00c766b2edcd2060bdd67e624941863c16669fc66d836811eb4a5a27821ce801a0f12b1c3e4c315593e56c9260821ba074895cc1b47223646106c0ce7cb2b7cbbf50d935ab550ac6c553ef3d56186627d3da5482fb986b16b404a105d841052c3074f849e551f408371da23e8f5d0755b122b3ce72a624f5b9fdba4711d803e23fa612715c0b9ebef00bf428c0e19ad37d9964ac68424f263a228aad55425d33c6307e0247c461833a7a702c03839622a62d29b84d61d0d71fa8a7bf915a80c808820e97a8c6e595d6a969449b2ef45f1c93c3ada2e2094ba3dbd66e9a4a28facfb71595965b4eeded2f187252c972cbdaae491edd06c0a16f918ad69b2a2535b8b447db704927d47d50c7e7beb23aa514c226e0302fbdd168e694f2c607445be4c685f5638af9c2cd01f5bc92e24fd571c333c7167a26b8855b6d358ed75bbb98e4a951e5346a9cabdcefc6c113c289f2a6a8710504d801b69309b65c374acbad6bf6b35bfb478b73d6944bb6204f9ed9d4882c8ec6d20d4e8341e25c78d72e8747b4aa5e1e1dab9f7755742cdeba70c581ec7c8a2ec7885aea1844d7642de55769f664d453ed57c0715748021d789ae7efe1568c42170feb00e0188fcd6bf1e052d94c616c07b8904bf9ca45278f4a4adeb6ab3e9b64cb0990eb4f5d6557af537f8e2dee070b1ff25a6634bd81bf569738b8733f1030884c500e9ed80317aef4e67fe84e9f6704d2f0029b8b9eda11635244dcc9988d8cf6d1302a69cd0c161c8969888a4f5b6d87c348cc1ae265b535b2c20fa9d54b9d8e6fb00dd5c08d6c6bc0256b4ca25fb37213951083266e1c7fff878de8be0abaac06b76e607e692847e424c92babc63f5d544871e295889a1abce1cd147d42107702e1cb5ff632fc20bb778069b4c90bb4048646392b06adbc38f6eb31a7baf70d97a221586306fae03f2a1650a155af4ae3ba2b91b6d6fa931ba9ebb3fb55ea0c9503e228065c0d9c31923b5e85ed53a98c5fd4c48b10cdc85647a2d0c88cb61edded1cd1fee8bacf5d6670fd1e7f8ab7df9d666c9ac6aa000449deb47eaae85f6fd7fc4cdba31198684b90ebbe8bbfdfaaeebecf96235711893cdde4aea8835807d8232567be4e830f99f412742fefaa74bc0d34b81fc79915471e802ee42c936fba4cf21fb05a29987b3f2da0fdc8839d8e283204b76c8d2ad5c04784a96c5a6ec6e8525a28c71995cc9dc16de751c28419d20d494978fa6574cf99ef0e40b1ae74037fd7d068bb9f62ed0a461f4bd64282b5ec238bc603530318e521de16f0cb3dca697e76a5c80311ca382e5c643d827091ce1d0939898095fea1c0eca199fac2e489a18f6175a6d59b1f9cf35fa04b67d1b806444242afd38d7a84c3f9bfb90c5195dd00ae6bdca50cce19c5cc5e82d8e585a648c67493dcd54848249672a394fcf638bba2272f5af8a2bfd1681c323f947b1bd505c9de183e24f4352d6c947d44493b6634bc136e8fc8e34c4e5140209dc920b056352ff246a78fdaa29f882fe59a7858abe24b295f9cdeccda90b4ad8cb1d089be719a2e013be30f3502319512cb2e8f29a64e975d2f91359180140dfd21d26149acd903beac2d211e4a6baa55e7d6d9a9f259b1793a836da8072e16f8207d4d7741413c3aadf46d128586e1e4e61bf3850fc98ba4543aa21027fe365b26ff429b84aa35a0a663b147717159ae3a9e0d44bc93bf8b2e21160d4e7862385008ed4161567a6b7d078115771630a9720a18265e68f643d6b6e159f95929efc9e0f58239018403ccd02a488835e0a6de4ef24ab9c75a54a263663a6088a946c9fff745028e4bce5220bc6f9f9e5768c86e3fdcaa1552f319525d0cd909f30ced014011fa6c5c769dc406524537005e2541fe57e08579a2f171ca6f6b65edbd688d5ef0158bf7128d84802b419e6f01c90846f816cd484306d05a87a01310f80b157736d670e0f039a5ee5583599b46c85e79d167b31d2d93b21763d0446642460e338d457be9685a0050253381273144f8d60c6042fa07e24362634d2328b08b649986e0788ae6811245fe67ba1ce763d919ba2f6b298f76933bb40ed427af998df4597437b3e7fb66d526a2d939dca2172b2fd408c42d2911a4c8f63c402fe0a9cbab3ec4957a7f16b77835012cc3db795bcb9525b0cb8a232a9b1ab58eb2d06f26025919be4fc1ccb705cd2042e191bc7014d35867d1e86c893a0c2e0a6f745503b4677bfa746a68ece4cdb6f6cd287ac0bfb04abf34e81f900135b5bc3c8b05d6087601c08450bc793d61f179795a6f5e11ba80e575a7523d58e63aaf7dd6e3f522ae27d847787d2c85552ccec079f1abdf4d84b212f30ffefb10495ce0633c9ec82d66b988f5ef0f8f8ca5f0a4032034b10acdd59137651d358f6a6d5d56321acd42ecc06a6aada4cda44d29bbe6bc96521ca999f880761277bdbb6629928b99c1a176525c4af72ca1b5b648f73da3fa5669634455c4b96e81bc0e58222ee6aef648fafe40ad221e672f045c1905a4640483175ab3e6be0e7accdc4ffff5d0696563f806c4296dd86be00ba981177fcf1c18ee8078e9cbcd9e73293368fa8aa51244c4e500d3fb2e5dd8acd2f17387ff6ca4cac8482b968fa71eafc3788feb271246192778a75c163444b6be67821108abebe58ada1afa34d45281dba2e4697499d28e2e42a671e3a8ee596aa594c6efa4ada868f574df125a1d8b746df1cbd3bbc546b9696800dd04e969b02af6c5a402c27e47d738710eb589a2dc11112ad5a7c139c4ecf2dfb311bfa322fad1147c86c4b278b10e89d8c3c2ab577d93157c266cb26a59d3836a404b53384d7bc6f0193d1356c69756e832932f4d1e7a7eecb3348015611831763d4d1b8237471a169b526504d879b8a3a135b46751a69a34e30c901276cb1f22f70d15f78064c640a04ee796788a54fe94b23338621ede770c9cee45c316bd9cfefd8762679671d081ad91f972ba97fe5f320c4d86533eb59086e9a96bea5164b40690dd992121387494ee63976b8ed311907b04e8b5ec95709dfe5bcaf66699ced6fe225df78caa17900b1f4355fcf51a232eeec0786736308311bcc52661e303d0a20c9d9a91b8311d990dad633cf74f9abfd88ebc5ea028d1e8f67a61d0c0f4fd1d6c18d62246c634483102d93e5a2bcdb20a64d094b12bf9d8b7a372c64d79751d662dc732895e13478ee1c7ca3de7586317615422a312c61be26bfecd24d74ed4218ab9c3bf693ce68bff3b46e3641349821117205f3eb60e2835bb736279e6a05b31cd5c42e077800395bb044cfc8ed84e18eb180dfd9a7a2e346dccc72ab7bf41eb3f77546e329a420a8e060de82f886e33a311de5b4cd16859116cba442a30c55af572e5086ad8d798e92114a527578ea0e65a011d1ebf93e503efcf47488a473f8baeb53421480ceb9aafb1515eb9a756806007d201a6cfada7e6c9b2ff59a4e38959aee0283e4461781a6758ea5fe462c340c57a0d9833ac62c0276c554e39c17dccb0437c11c150d6c8d0d3b5d18271d84fd5fe32781d75ab8adcc8f5a3e1158ccf343276cf461689679d47b85f067c773b7a6c7f164a60bb69ad160ac6018289276bb057d895a303d0ff2d3ca3492cafe053ac1874c5646916abcd07e6c4750f55ba1858b347010b243855eacd3a007176ef27677f6fa8d7e17b14c1e4321178b4a6c3758e8c800609d63f11f7782dbb400000a95223d9ec4e2ff25b490808ad43b05496931370df22aedcd31c2d620524d2e4f375d2c5d5899671bd722160093703d293a075821f284797a48f482df8089495248eaf8527635aef48f898b0bf5cc924502670618bde6e2eb9818b08701bd070140586b32a9679328f67df3c2c3e9c2e7dda3432fa34fd6d74076989b4f12c44e02a27cbae9d2572c400802aa4c166d39220e2dab62074d198a0f6494af2bcd2540158f94d02e9525d2498b8782c03eb6e7fa46d7bfb03ee3cf163db1a6c6e723c2f3cba6b7440e29401f1ace7a9fcc47cdce1e7531d6df228d1f3985a6a98d4b0dcb3895ff8660c34be29efe2695ee93e62679765887e28466bac12a4122cdb6241530cb92bc3324cc4ea7e09094a2db1e21d643ed6b039da1d76dfbca66a970acc619f0850dee6af2852b93d4b70a64eb32781a33fc394661ab872fad6f711dc266122542648c5b87b17c52fa6ba5d0001a50211974dba1f02502c5410cb34d55896963f1f35db90b91024cd251fe3635e1c7085a4e8648235814b42c65482aa99b44ac9f48e3964f42dd8d5ef7b55840b84be139b66f1ad69c9c6936e0b8a4eadf4ef0e17c39985940ec4850a84be9e00dec589434d4215eab1e3462003e8728356eab7af647351326e875ad8806b340e43d09ffb1e1d64b637b3beb4325f1633223a2ee8fc06efa0050cac199ea1e04e3d453bffa1d4ef92e383acfe43d33677f42959cf94964749ba79f93147969c10af1f8fd53afaafbe1d65d2fd5ef393cc8b51d9e2cee064109dd5877626c14c09b172d6a4ac2c05542d4e8edf549951eec588041290fbabc4ec867da5ea070f7df7765226015d45a5ec8a7b5572bdeef8d895cc8098e9eb4deee112822502a06bbe3a22a22bc6452265530017a105da7e364194c75fe1dd1cca1337df7fab0f28814ad044d074118a7a951fea7ed3b446a1d99168e2340b314fc4edf986f3476ba2d2e63d1450e74cd336a1b1ec4ad68c4670c2d153cb8525e6d85bfd76a54544b4ff2975061d3013c3f52c8010cfeb03dc9a24755ce13a7bb7538ba61adacb259546d6710584862db7ec5f8fda4f64a86cb1b61edb0d7d11311afd0745e10d09695ead8fc2bfcc63260b8ef69ce3c650ec2573d3ec32a5644870b15a423a02298920054ac7c3ed3a6a0a2ce03ff7273d15323e5baec87b5ddedb65cefc5633d72d5f1315a573b191a372bd2bf0cbc0e09127a70d847f66d921814f807da2bdef1f49c81c0ec2f11d13fd02e8f40809afee206eba2196cb1e3984b8bbb47b5124a82e25ab3bc21f430a67654c6a14c99a3512913ad56448c0c82cd964dc6216a1baa7e08a43696d5bc0bc26585105319efaa9934dc0fed6c5a7ec6108d2c2ebaaea0c72854617f46abcaa8cdeb85e44b5de37cf76269abe0d67f69935bb79b6b87cc7a7ba013d02a83bc01f7c6df1e79a56900fa19784ef66d05852508b344b471adcdbbd6174277eb0e44ed8616c29fbe1fc1aa43e18928002a3cdd13dfe78f0f38e3d3834dfa16d2d024a052dd2f5e9c64b1eef4aa499ef70496320af935240a58defa00b938f95eb8ef8ee8ee8d3972895e83aa46447df104c89ae3706fb7a9aea845ea93e511f651d6280e3631d5fe6c54113e9435052b62914f390295caba2177de3d4ffbd0f2dba47ef5cd14cd31c7a70e8510f9880bab7b86e0ddcd71da9f74132005b77ff9e30821d7bb7916c1b5f441bea51353145a23d689917a6f18cc4a12669256265562371c9265d9a116b5d17fea3b12f8e9d3ceac73717530c81e0f3d88049fc6069ec69d53d7ee7d0b25db160f2105a187de5ae710b455bad413087ecd9e55c556ae01dee7636a6738e202d97369a01270172c86513b22e73ae7a7099f34a26f9c31bc1472383c9760dac778d2215699a8eab357a9bf0bed450148d865ea7720f2de9998965588cf87ff8ed54f4b63bf4407983459cc0029309245108427364bd8b4e6fe13bd4cbc561530805a104f8dd77faf275dd2e52414dfbc550dbf0318bbd84f19e59fa1da25a22570af5268724586bda313d3b13fde7f798449153197ac4dd4698cc85dfec4481eb19391329baaff24c6c848adfdf9943c0d930d80706831c3f7abd0089ca16c7c39ec71d8d5f2e90abdb23da2ba051f4571f50460b5b28dced97597d4da5e28b19e080d30c82646762d5cbaff04e10e98635c0d1fd2810539e62b3299cf5d246187c6cd953b9a6f5285748dc27b21bc4e49649bbba8d18e737fdee98693e460b404c7c9fc6280119fabb84e8088fba789142b3c69a96c500abaca1b709f37a3888cbb6d19d2c3b0c575c02799eb9e1b23c5a8e9274d8a0d21f09b679ead121852dc12e24b116258b7d4e885dbde7938f9f5dc2bc4a6fa1d2ea5bed70e9ad20d3d28fef966dca8a8db741d6ae5137011d1edcc5d80214412b84eb4979c47b4ca05c9f7149db8ef7f33718299f136ec898094de623c41a14b2928c46790570637be4cde945b3a6d1f4d16b344bb4a64a14eb37f8c010d0e6ab57f2ddac9662d13caccf852d0eb2bc9365348d240f75401ad9433a8246973cd7b1a585aa4c3172988f7c6fa408c4c240f76a9702d06b9ebf75452c8848bbc73c8507ecbf1b0f69c13fde949184881e318eec500aede9bc96dbdca4f8b478221977b318f8e045f5776025f5d49b931921cfbf2081d434716afd2abe4d3aa5bd125541d5a966968c66b7662351083cd5b035425b78439bd7c82d8dcbc27a4020919eea939f06e9751879691149b738118f2b57dfe32730dd3738934eea90524eb8bdc437b8a2a1eb155bdf98060057f9ae362295676e6f926d84f44821aba308a6297f1a087a1c4b0c838bd83360f1568b2ba39f6d1b503111408d924b30345bea0ce7a3b5c51b7c897ab52a55908e05f5d4cf9773ec0ef2cd923d6211a03c06b220a58483ad620e67063cd82a337833fb991803ddea0a94dde0d66398b827a23a97cbc4cf41d351c7c3f593e5990cd91ab2fad84748de352f38113a3780774d421ed45b260f7278d87b707c5e940c8a5c0195663468df0fb4fb434d2c5022263081447598701d4c7d5218d464ec1837c5c18ef75724d94654d2cb2156587304785e4b17c0c5ec81ce2fd84d7dfc4c61ad4a2812a1b85f0ab5d002514a57cd3d09524f47f971623fa16e231a80a01a4995a9407519f937a9eb9cf7edb6d2b82248e99efd067ed4e8cd4b8dbfa9395f5d48a9b3bc0562e6303c2f8d0617de22271f9c33a07d68ea649de3d3ee4e703bc8411026759ef84cafb46203b3df920e8f7c0371d4e135293611ca07015132a54109e678d427187dafc86cfa4df90473bfb9593b5934804a36159e8f6d57547cbfdfc97b1bbf90cc960a4fa8a3a184e29dc689a6bdf36c6413ef4b3c4799f86ac1f99c9b9f9eda35fd1b99756b37297b90baad6f64d61487ba267f68eb770a540e86e7dde37770ca867bf697d46d3e0ee80a4dedf86581c4689584495989ddc1b31ab3a05ff6821ea28eef9339f29fc99b49db43e4877950e00f3da609b98479e56b9548a0e67aa7298153f8a366c849e81b74fd19f823e7127f70744282beb370405ad4bc3dcfa8ae7134324d372aa815b6a34d24f47f4e0f64253359bc191a02a2aef8d1c0a721a0ae9afed45673dd20fe451c6c9844f11cde95f72cbf47eb30720fd9cf262f1d922f56b90476d40158a6868140d4c064d2b018af4629b725287d5da83e69b95acfbcaf6d422f1a35b6220161ca9c15c8e8e7b872a318c4a6f7f93be20b7fdb9823b281ddf3962455f8ca0aed9843957f7de5c7a71088ef3c353a6fc0661a6af3fa1ecab8086badc5ab10ba348ea54b30e09ba41e28cdf17cbb2e0b021823bb75b3b821e380c5c0b392cdd103d7f04c7e1f7abb5ccf09f327649fef4a6d3dab5b6499c4751ce22a0e92131fc6cf974b96161ad95c067a46e401230486d30b1063112233efec9763f0def53aec3ff24013834b6757a04ddff482f87f491f9d1c4ffcb4dd1c658a81dd818692c5d1f0dd5d440720b86de8ec8e0ca2e41905a61760d9c0db9f5d8eaa196da115aac4e5aeb22c6ba57ffda536cb17b2f328c2b4481658ee34facdd4bb8239f3bc3b080f7e31bb55763b7089de5f0a64b59978b9ce390878e315a03644c2ac7651b5f3cd2d565a711c81f197ff761d3f6c2ab54f3498161e4349f900d1196fb5450edd47ba3c27368430a4b05ce60ebb9d9267fa32307858def52805b0a16f35d26da92697ad9e46e301148dafc2caef6637a2dd8e84a6d2980f2f47f27688ab36a4e9c2d9b9b0620f6a193e6422f0cf964a512dbb9e41a93198c863abf8466817fde0dd08799027c32490b189afbf05f8cb0ea69cc83e987d4818061a0c17849922e4f4a6027cbc7b6da140ffcef103f4c6693292e2ec8eeb71f6616908d63b1cd3b417c9c1b30f08e9cb11f36a2203b640289f9b734fc928534e9f015528630e823cfde0a7ef9a898dd722b138881cd1030fed263e444368c3cda941195d55ec3055062047bdf29897d0db37bda68e0a7045b9361f627a5f188b39c5fb333870f38333b0230a05d092327079552a11d936091e28d7736471df2f34e317f3a1cbf8693dcdeab2ad77319833d70a1972bcd2a8097ebbfa446598569d549578a59fe2882815cfa5077c09916b09d33884ee6df684ed2a535e6d496bcedd06418619f7ac8c74eb6fb607c64bb84388522bcb22f26f53f491f3a647a1cd9932b6d26e978df0bf23b0b4ad23790e0eb407f3a201441184682bd9185489079ec11c75ca2ef474b712a1fbf8fc031e4dc0fa0a2b94acb46ceb46292c0eddbe742bc41beecac96c19ae44f01091528708023b3a127568303c46651294b983a0aa2b455dba30a2b092f1403d2a2050d2965a47868472d19070f1ff3c02ef9c0b6ebf33a7d088939a10e807c906b848d525c1b7e3c3b9f242024e8cfd19f811b8088390e2568aea60a72f8994d041a41eb349fdf1449242180818aa0f13aca72f9418bd1304587f15d1c6aaab4d5711448f98578d8a28656ff11103215bc54db034c5bee5ccb839ce6e1c80f530259c4885a124f8f90e892edb5812789aa78bd48d5d530998477ed847d79fee38114b43f74767449fdd3b42a7b5a2857d51f5cb7c44c620592eff59e4c1c83a0f1d7e054e1bd23d18bc3a4074d1549d929b5e46acdb122c268bf3fd1105336943747d6728ac2977f8dbb2d510d12f00a1a898609c5ea986bbd9a2498e9fe12830ad09647c9f60178f594f8b7687dbdb51904430e058f44da39cec7b8de5ab8141ffe96e64a5fcc8165e91e1a7d3dbdfa200198f3bf0ebb0321bf0202dd7d1a464b2cf651ed739a0b3805d3feedf6643c1b3d679c4a6e4c79d3656f5fb3d3e0145830809b713e896d2e003c91ceab83dc8b3c844eab8646b426dd442c7dc9e73a468d79826277b1eb9e149820c5383b0d8f203de219991191eb51d76d30ea2cfa8eae09add026210a07d58266dc99a749a3e83ca046403f84de3e1455b5b0aa48d3fc4281730123a29ea2ed8b53c1585468fff44f6593c8db2b8462e96f9db5a068cac05f030d3bf219913e7360204d12771434cc1c9f7705a93650cc30869cc86ae62e8467bedcab74d192cf69e29068b9f0293df6ac9050455f0756f6d2449ac760ad137f107b65385479956529cd486b52f864f7d5a2579566c339e9e0ac202693db8ff3502021e4f79c09d7a89730bdba172c8bd24ba013f39f7930cf724588721de77d3dea8c6c93a327f8c7293c4ca8dd5876bd453e645a25238a6eed34a156aa109598b1b2eb7386fada49254b9b327c080058753eb4f357ccc295e3b48ad9fc9ee1fd69fc192489e51f514555fa76e272dd2a0aa0acccc1c05a433e391440dfe0fc6de0fa4b689eddc5ad25022827cf6b12097c2899a1a93517a5da53c009611f39d5e4a56f930ddcb270acfff75c3edb64f5ff9d99afb106ae1d67b518bb3c3789d88404814eed511406ee098229adf4c1e3b9b83f37e11f0dfbb9df4c481570fb3c711a1285ff303080e0538292c22a2810df3f2226f04cbbede82e8691f5e8f75122df1134bd9cce73942afb5a84b33ae3ff9262e3f5bdef2a5dd0eb8786452222961de2869cc5432334b642135ba2481675b02551546901a5dc41b16902b608c5fcb398184ee04bf495ade9636918069a12e175d4d1df4c2348dc3e961f64adef5ef355c6074f113b0187cae6ca6349dad0398965afb18bf121ad0e1fb8694a5834ea6b6436b00ccb5dd1f2ff195ff6e07faba5eb59148b7bf6aff8cb2a518300de47b2099aec4bd0156894c680ed4a248adf0119d2f5d46f07815a8126394e6f5cf36eb44bb112022ce039b47873e5bf76f6ff1bc4ca374552474c4419df9ef5c50693accb206a30256856df36d6fe4a6c5406856f5361be228f547882dda444d2178c3aadcf7cbe3cb45c683deadd7fd285c6475106eb511518bc3932c20ca2256b7ede41ee7beb26b23869eabc68e533dcb544b5539e3a4ad40bd66790e45383bc356435444818ccd49c26e2d229272b3a45dfeac8c5bc95d9ad04bb15e7f7f262323729162d52be36838964d8256316ff596bdcae0754cb369367b6f80eb1ae04bb9df9ab88b09eb045b83f73fe7740c6fcdd9fa828a9b79f5e404d586f870bec32c91cb6fd32718509dac78843bbcd7431906a205f176bbbe8f5ba1cf636e7ff177e09ea6a1f7e109211c375ac70d7befa9cd13d062b4d98c3d8faf7eb844defa98153c11740a144dd916cff227497be59c01a3db76b957a7773ce71cc726ec76703c4e72695f701e5fdfc9851d6f38582ea5c9f34f91c54a9c7acfc2a18c6b416ac2b10a16a80e8d01a1681c0a725c4a65c11fc7990110319f14635f2b4ec6eb1a5c6688c60350a84157542554a60e337fb44cc406356c514f0c5b847c29e04836c18de66fbf8273f838f22506ed86f2d68ad3d144029213294dca552ac32fcd4153fa32145b22697540cc314d845c4d4ab002dd9090b5d2e573a6537ec0885825cb474975932ed62212660c78768d2f1fd2a8590ca58cb06c613823c06f2748dcfaee0c61f300298a1e59508dc62741c0c25e61429b1d478b6e06271215cd9000cf97930fb7e2959400c58cfab9031b3136d764e590effad6973327681b4de80295de55a825a9bc5763753f40aae2894bb6e00cc6f7a6e150fe0ab6fe1bddc4a38086d58834af5120f5553f3dab01921cc9dc76d7e6dd469e27ce76574b475c454bf3431bf13d71fe423501dccb406b05c96829ffe47baae2c88400d875f2c572f97f03b83085c5af139d663752ce122c13945528c7211c23dc3a9a7c66facd94b0696f5ede991e62bf2a3ad68a255bb168891a9503d4a61efa52fa96d3629e9eaf09d1497421d48e2cee8edf5cc2f8b66eee668aaea79c606bea12dd5998344587b7dda7316f545e3af1ad989bc006c63aad8471f956e8a62a745d322362cd9245a080cb60c94b9af8f43098916b02cc8dbdee23af1d65d42f6bf417bb9653b400f9b5cf59b3f597f033a4679cbef2455369506cc21e31ac1005470fa97988d4a717648d4c13a595129128c3009d939650211ea73a93288dfb488b82567ef394dd3c893b6bce6ad757ae14a5f76ed7497615f213257f719f2db62384d31377ed4a359f0d42a26d001584493a1226b4fa6b8037047412eeb76b727f641732cea50179ce48ca430071bdcf3ad993b795a677b882401077b545e816dff1e4a590af3c8556e842f6291dd39d90002ea8982f6b580a6fadd9cb7c9e3b83f3b03edda965d3acfcd7094f6677096749d6096a6550a1542d5b0d751732bdc7ec5e37980839f7751f7e94c4446f9dabb825aa2100a9f86afdeaeffae38f3b727d5507e25aa13bcd2e93e2cc89a0e01956513ce31ae3e462fe0ecf914fc2e58e3ff4396dc61fce73ed786091c44c95f75d640bb60dbfcea7a43273dd2c8b72621c35b662e6f773bfd5d8f37c80a200d1037b95cd67d19b43e385757404e8f947449da51da18127ba20ccb3170daae949759c0975e927a89d40cfaa29b10febc743a070bc9e91d343c08cdc9dd0aef16982d3bc6f1663a12e2585801fc7188e4b7a5e46f9d2430393292d03ab57ae4866f674e2d0225df1de49008c4ed62b320e503d6c11438aecd68ef3a6db958de476535c93db754e0564f52ecdda328206a0590cc9bbf60f4fc4d90b09352265fe593124dd6480bf42cc1fa150db566083958d25eee4742605b78754793b4c304c7630a9ddc30d84a3f50367a4e69e09362f0b3f861da17540ab69d9ba8ff758a3966eb0124030d7697d8dab35f099c8e6c44fb75527d580b5445b42e60a49dbfd9cdaef70f00148357a9d3b7f2c473fbe44a06c60132c550440d9778374dcee6ec1c8e9ae9ca104c87a0c47e866a19cc96d637c6a3828e5f0109a35650723a7f8c94cc8a0a29ed0c8a5c6216cd69088b4f7b4a7f59a8d9bf9c16ffb0d8441642a6dd191680ca830d44d71333d84d783e4a79b184d995700420b7e6d9e8b37afe0c3271ee81064bf356ad11d478d40e98dbbadfc09e615ca1e6c17615e825f6433ef713f24342205ae48326387bc8031fc859306522490efd2120af31c52703964c3b66a32e6f430209b042f1d00518256bd6872544508e9fd2a50d02da7f7970902e88d2b4f0ecd3e8022306b070e7ec5563b3e2660175e07c6a5943095a84503d477512b2429df2fe1b2477dc5da8bf41a235d19eb3fba5904c1f94b76178ab2634f4c2ded9012e8c60bd17f1a06eed9e766deda400031b568f4b343a107435ab8df2589c6903d5143f771dfc0931c23531f2847a884a25c1cc8a75930954a9f97e4098034f800155de7b565a0218f03a87d57572eb3127b8a55a101fd94221fc519ee6a09f128017faccce1dfc84b71461700dd291408aa1655e4d4845c094f68d4ccd1b95587db87b95c5950b574b621007a4c234083b9d469ba9c98614aa6d986dcf9ed5a7f9ea93325666221e106fc0518dc2e0533d003e5ce5619e9d5e09a6d34a2b8808cb04049f4a2056239dd00680f199b7deac5024a398bc14a9fa1c2dd454355ba81793c5dd943b9f5e4efd792de27e025a05dbea68d5e2b92b941655ea106bc764a5ac8ead0acdc45a2b5994e977dd0c652276ee68b2803f1403c319f3e61662aec000b5ac4eb727bd8e49dca18ae290eef795c8526150d630577bad61fef11dfdb9e23430d2c6b53ace86693dc4a57b573b7dc192850f9d20e1959b4b4f58d8001e4445a13b056004c528f704f7e6d5e28c62a25b7646b0d38425a2f29151384a89e66e6254a290a6b0094243451de195a66ff0ad7d293847d80a70398e287d79dd03cb7b3930f51d6579c293c1f5d69e12bd5c3c7e2fd0164fd26455ff479343dfa35a862e4b9ba85b36fb54196b8411a94e312c99e431ab104b867468604b94fdfc81385cead937ab4231bc27b83e87eae56018078eae9b43837ffb7b8455762a10bbdfc67168683c18759e85905970e9f4e7043f06934d9a5d2f63560226a237562fa878ef6cb3230e94b0c7344f675e86413fe778a3ca0348b855a654fe425d19afb90be59bb8e68799f9887eef8d142608c16a4a29b81fe420959c6bc7f0353277f40994d1f064fd11cefa4a0c67ae26e1149f98daadce19098b936f14d465caaefc5f12b8a9d1262079a5d323d5fe2f9e98d3fb7265feba709a2231b07efed31f4cd1d7734c08331eebe862874ae4ba4a06f5ad6cb4dddf4eecddc16033fe6dc3ebfbd358b565290af9d71e62aa8b2df00153bb5805e6968e59a4bab71707f357c38d1d8b9bb5daa98fc094e25e577c0089f69512ed75879e30b4db76707a7c7921945ca0eb9d3b85bdfea2d0ad7c3e0f65735486fbcbf3297f3141b369b3eaa9aeec944b16785b927f5123e15cd49df0130daf3e5e6f2ab8c19cc6ca055d34dacd37a4d775bc81797a8bac205377ad0781b17b9e0eb03f926d8974f70841e73bcda136c7d01eff7087167171bcbce1efe377299bb29077ac9e3bf66b2b04b516e5449b978304d39339d023f298fe9a367307331573ceddc23469f5713ad3b6c7ba7fef4e6e828d32ebc8a24050f89f20e9883a51a1c4b8c5667736dda98ab517345ee13fe1d3762e2a7e8957801f8600c7b5e50d2bc8eb81ae0fd95f619f25f37661c51b002ef2f48ff821b3a91a293722145c971f2b22ba9e22b8e8732592256e0542ed03ca2aa8d652638a5c08e2ffb6d1326e11b6beae7888995cc58722b40af0adda920bc7b01489f4454b292f02cbf644dbc243acd868b9edaaa05b636a22241ad6db7387dcf7d1863d52e6cca14edaaa7f3d0fd83730259cf2681cb0b17bcde6c4431b8889c0262d0a2ae6197149b9d4004298bf3f4c8a16ae3501764a77e33efc493faa5f6e6ea3e9d86a1e27926866fc5e866add4ea08c33fde4b18ee1ef1142da0091a6d3894b72189091dd10ec3f52fd6e25f2694f526518e4b96dc9631d79757b839309d908d19bd75192073446411d1aaa4c6ec53359fe5a8e58171724f1f9803baaa65d013c2e8c8467350ca07c059dcb70d128eb57e6aae94b6529bbf2f4656a012810b7391f8612601ee813eb457be6fec9d1a88fb163746ffe02568d3876c3e7405cb81236db83c77b75eb0b306f7c155948b3601f3765cb2eb056a35300c37ac0d902aee11060948aca4d7bbe57f42e4c3d4362e022e4760cf37d4e02d1f9e3594bbd94aa9d3a9345154197cd92a3b9eea3cc97d1be5ac4623c6cf06a6beb93381d2a0bcb9d2c7051e285fca00050ecc899c876804879816fa06c3be5e6ae1161a792a4b80cbe727c2c78f99d1467ca174a5557d6f363009570be73f01cb2d334f786fbdd2fca0b00c335e8da7e48e09a64f72d78d145780de0291fb5e4129708012b35524df83d6c323284bc107e48851073d780243ba90b7e608b8384e697e38c61a705a50b259e9e24c551e57d368f4b4cb4ed62030253d0c947f5c27a419fd145a9fa54ee3a289ca44ff48a26ecc7673c60c0c52930c166b9daf42c1d5a31572ca4c2d0724891d04bb4151b9d3a010262a2cf14e558912f7948b2fd5d03a46f2638b97d2c4f6ff8c7552f5cc5f1a84d6bf2bff6dc00b8861d32066c005c4d1b381a9d75adf93c6bdee41b581cabfe708e1f380a3d092353347f149d203eaf465d4583ca925e28b1f89477f39b42b83fb6be4313a61e217812348925d2a51656aa548ee3406cadfa2f430c5fe5ff37ae59d9d0dcc055ad7f4578019361d987face26d062635ee46a0eb76b3cbbd305354e20c02f934490774c16bc0ea77a23ef48e98971d6e870f1802390672bbb0ca9dc7c73a1e98ee0a1826b8db95026d375ff8188e3538606f79dadf606663bc3f411e7e05fa25104cad0c229d35c9de9a18e29c281008e6e55ac7f34bcbfc441a1917d3462c13c21acf8e53d2e2d6e41927829aa0270c53b5b403b079d9f69c575d1a33abfea4044e3d08a7756592438fa7dd8eab6365cb01cef53bbd95b10ebbc9854429e99f0373fd93f280f7228a0f8d1c346f273b13d8040e2d3854c06515b666dee66e60eabf962ebf480d0fe08400ce421238d413f006adc150b2e819699258de71601747dfb63f0cb07c0fe1a1839b9e3b0576f368b1d104fda64739e630d1332c4021887069e6170af08ab24b363b833770b06da0b07f6939464eaeb869862a8cb3b4a8ab6fd9071bef5aec1b6ed8b9c892158ae1dc59665fa7ae0407cdceb8c50284bee197018d4e494a5b58c2892c1410dd698059f04068fc4924b1753b60459d9ed9076f4f4ae1bf7274b8ba55b873b008ebbb2652450a1778beed6690702ecec2c385e99d10fafe55040e269993513f75fa0793df496b9d089e81b483fd22473bcbf392f41d003956c18302ead0f6190830a01d5e0387f878d5b88f24198b5d24380c6ce5f03745311151831e23fa08439f3b2448d265bc496cfdbc19216145a51fef6e55e10652ffafdbb934e2c14c7de314f3cbf05597c2832fc69974cc9d453d5c902922eeeafb3df16421486710ca2ae29ef12823fc21480f0fe60b8441cd1b9e91e7012cc68478ced5e50e72936d7506a2d927792f2cf20bc639d423215ac2491b204abab8df2b7a4e7afc5bead7bb8d4f087bc6786b65a8cb0ffd6db3975cba02ef7ce0bff5d08e4641b1e353d9d4ee00caae4e551567040f8460f136232dca3c4fd6b25d5142a447974bda467cb6b3cc9dac38f59889eda30ab269bd7346242e46660fc97727644410f71e9557a7d08953e20bf2f20d57d911ee9bad9841b75dcd2962b82d53b5f5697f6c0c22a5cc3bdbd44b57c4f3296b49adfe85adb9b28a8003a6d99afa7b7a2b83fcf0bac6084aedca0980bdbf3be3fb409bac0244c9329ca61f507250feadb3d0749690dbd5f08bd2376ed83b1204223612f065b918bc24e5c0c408fbdc04d2c8ca957634fe32839d9b8195141c0378a84b13b1827bc790703961ed8abb1511f0d28ad4ac00beb84019c60e9988141e0698498d35bc1b88362514d3072021e0b7ba3af17d13b0a6b847499535445dbc14eb63e9f6c4ac919fa8e55d44ffe6e604a595411865e3f4bf7b2d1da4f40d965eb79b6adacade9b7e76d3050217b72c8c003ce921151f73b909a8d0dc8b6b8b6395199ae4e77d9d0a10dba6d41bda23c0bacb7ce12ad7acb21a71eb5feacafa333487d161f02f46b04085e8c173b463633b9d7362a1d2ea7e30cd415e6c0708a8b5f9fca52ffded388977929a863924069632c4c601da3505405d3010c29a0eba9c655b642dd7507c6297f35bf9dbf0c6f29dde21b65a369e48b908fffcd01f39af33d19d184436c6f42b62e02000280002f1d03184124c07552e02548b15152103f89a9a92cb3f81b2d665904937b2e5de724b29a54c329d03b803e80329ad9301f9a8b7807cd40fedee03efee9efb401136f71735ed472ddacae7092fc75187e034e887f17cd4e39c8f3ece477ff5cdafe5656bafe3c17ceda706b777bd4643e7e917f70dfd1879eecfc9e577548e0d0ad1ec8731bbfbf934747e7eded34ff53887d6fdd4e010fdb46ffdf6b5bee603eac0eef3af56cffa74743e6e9cbf347f3f1d9dcff9b8b1ab7bd777efd23a3abac6d066bd8e07394ff3394ff34110ff111223026c7edbb6cff9588ff3b1defbc0d46f7ff301d57cdc5b4b83dd6fac6fa55fdf05da9e464709cb1fb83d500af58143bbd335b4dff47d89aac1e110b8cf8763fcdc13c781c07d90ddd8694f3c9f9bbf3d8e354d39cea018d124300465fb1973fbc05be36aede7978a3cb5d688494d8dcbeb25a5fd39e7943a1ed4696b0c19e3e7c8d697538be7cde9d3274b8b7777963d51cea0399d3a123f10d1275ee44545db91763cd1a731331eb6a061e8d3ae4928983033c0719fbe0d4ac350a1485eb45db9fbe4735fa6dfc59fbfc5cf7df9bb4f3e563ddee8cfb963221961536e88dadf28cde4340ef575a31ad5a0dcdaab3428f7c7d168148ad6aa6dad95fe0e17521dc906f1dbfa8173fb0ea76ec48272a3def17bad1af4a2ad83e49e9a3e0ae3faef1fd85140b33adafbe36ab5177955bd0a65c3a23e65bd3ea62a0d3af5cf1285b2411f4845697d95ff0ed943c3f1fce2d6ecd6beb827adbb52147efbf7f1471fbfa71c65dda2f05b4dab5ef6d00afaf673630d4441af1207d64edf7afdfa15a55d246530686efc356e7920ac41df39baed76a3b115ed6baddd9aae23f8d09d798927bbdbf6674d1203a22755f613243e8c7992c3c6bb7bda58f58a32f247a418048ca703fa6003e4fcb6e7be8af3b7c1735f7dcf79fbc9f7c073e002bc370fe6b9c163dc699aa67d402adc75ae77ada3619c01a8a97a30485a0d7a6cdb1d6badb5382994ca7b90070c90070c94a7f2868446a060a8999b29e73b1db3c12009fad672683feddfdc8072df3c6d5924b683137d44a89ecd27abbe711e306ebe3e1824abbc79d0834498ce64de8c715214504d1d24b7f69ef7f5e592eb9f03ed4247dfe8392718a74fd5410ee8d3ae1ac8ffe655b6ba347893bb4f691d955ef297d355e7831c689cdfe0f35036e603a9528f9af6dac7da85b6fe2eada3733e9ce99f42d1a84936b6dbfbe2d6b67f757b8e7aa369180ae6c6ce804d1f5f9a3bf4bb076ff2eb86eca1791b373fcd07d2bfb9435aa25ef3e0b57930af1ef4aae601637f2d18eb579ecd17e74ecd17e7ced5f4d540f5bb9f2a077d6b019ff69da5281bf87dc43358feb6dd7be9b65f8c2f3516709c3e0ec662ec1c2afa9edbc8aa2283b1188c6eeb20b929a5f30136536bb1ed68085e1bc85f7ec94e64307763b2ac94c6492683d9f5d26af1c2b7878469e9eeee1e036bdf8c2db90705e34648a0372539207ba24aa56387847de03be5794bded204bd1d811bf766cfe334f81a16d3e46b23fb1265270eff39b48d6cf92d12f22a239141a0ee3f297d721fda2e358f33e549988ce16d54a8f79822685f0f19804374cfefdacacaa24790f4c93e3f970ff5248c9545067f69e98b10e1ae149c40f3e90c09c3a1f16853f6c428c3b7db28c35935c835c871dfafaf0ded181206a301f59bdf451921f8b6eff3b57b5fbb3efcccbe1ff793fb6dd33ec8ee0d04eefea65d1de30b4da36ecc70548d38bb8a8a91074c6d1a38228f7f2d4275bb8f51c686bbeef591c7bffb565864f07eb15a295f3f47536315e856dd8ddbba6ddbb6cdb5370d7e2e923256a974d0b4914a6917ea8b7745f7ad5125fda92ffd194ab9dc8225e67ad6abdcc92188edaa8162ce84e30a87f638f56defb22bd973bfecf93a1e6c3f3fffbd8f571f238f8dcd076ebf7dcd4c0821b320c8ecda5d140dfbdb87fa55f7f71d5cbdfca72b2d513952dd4af66cef36dcdb7c3af653dbd36c5ffe9a0fbc2f9fe6d3f1206b1dcb7deab9e7b697affa1912a803e2f46a36bd98a0f4f55a02db576ad6cf9fd2a89afa66cc54ea69de464a83f4037fab683ee5436877bb6391c9f761d487bd885518f7351f9530ee69be9584719fbf8f3cdcabba2f4a98a36860fdda9cb6efb97612a6f219858646a3d1344d7b1af037c7dd3ce86dceb5b9e756cf7d277b5acffd4af6b09e63e53c2b07070707c7fb26f0b5be286134cffae2d7021281cf28f5b1e9935f5ecf35f8f8a3066159a7749c588330cec90e6db352913598a9fc4dfee53c664f8a20dd9d08521d77ad091cd84014727fdbb1a328ca0b7b51bda2ae2cd93fc6e2160eec7015e6b742aa9316f9e0a587253e30f980c30e42481433bb3eb6dbdbcde79c5383ab2d7dd3a05b940d1a37a561e893eca1ef33eb2c61f145e4f9004bd60282796fce727ef1f865c7f4a172c72945929bce2452b874196db5d6dad76bc97bd5a5fa555f1ff1cc6b477de3cbefd29f2b3b584764ea5ed4641665cb2ce94aab840cc636c80306cb08fa74e914ec3f4b62b2779c252dd9b3a4300909aba6d34e5a30685ed9c30c4969c719141c7602769c4169b23df08159e735214f07b5a71a0ca21f4b894cbfb2cce4a5fdc1d6b1c319e0bb7e8d18283a6cfa4cb4e02e4e1fc97dc74a22730f763b870545aeef920f90f85a2dbe59ab1ca94d4dc699e828ca0ee4027056e5f8d1a65ef7a26044cfeb74e088338cf9ad2f393e09b67f57da4aa5e0c7a95b07b67cffb66abbbbfbc7170e3bceb208d930769c2d99d9aeb91c67e02dcf96b6ec20b97d683b8417b5d66a6fad313158cb4447b4bebe46746a9ba7ffdc7daf6b32baac597ba2a36a3f1b511fdb7ad27222c77d658f519df993c0357c4b1d2c5e769c6121b30db0e30c8b0e5bd33ebce5cfe8d2e87a8e73676ababb4d9fe8c8bb64d702c74c7424e7131dc58f1eae596a3511b23d0973773995e8a523b32527b32525aa038e7276858cd4a0d8940a2ac35c049722b61d028990138810f181c8d2921dbef4700585ec822828a410448726bea410050a96f040e6ca12214e9eae1cb952440529303232a22524058948418e8870b252450e428654a0e20a241a58d0822c44e80e449c59726465092b4fcc408315a52a499820483cc28a161968a8996d0a04120f89e7c56688c58ec462473cef484b3604152cc2225710e11445129622a0f0429b0c614436801d67559054814187580962310f06cf7be18517bc56d1bd9e176b1589c5e66c1191441708325482a0f2a46dfef1f3ffc03f8e74601d858e746c18cbc76fa375a43ef5dba3de0552b639cf1dede95f3d1fcbd6b35adfbdd0918e95163ad2a98053fafe365ac7cd4f2d34ff467fc07ad74231d6b7344b0bcdd09dd4423f77b45f69ed6fea519f0e9b17c27fdf46ebe03ea585bc68ee68cf612dd463ee682f7fdbb4d4424e822e72fd520b091de9d8deb59007e68ef6db0bc5b9135f15cb1f7fa213e824d47cfca101bda8e6133ad2819f460bf9cff763fbfbaaefc7918e4d7b921f71eea05c2075ce84c94cb2b5774125eb1f424716883f57ffa8affdf6c59f99d2988db3e36c4a914c19d5ff899f01ffa9ef4823e0960bb32f52c8b45a989969b1d072418a162954c820c5c9b63bcea430b93bcea428994951a229e028714d19fa3ee2fb50750d020e0e84f7e123542839e0100d9bbe376daa63e4e9244cb29a8450b2fd23ae2f68fcf97dcc513528a4339fce17a44b0f543bfe9c71be7c2b18e6b2746a73cea9afa55f5f2e09933f25a54175d29f9f0f0844979cd36335c1fcceefbddd66b76dd3ee5bed3e8fd7dd34f78844a9fb80c0e5b4ce3fb52516fdafa6c1a85423129773584f64302add983ef7e6ec79ff3047a2044f6089e9065306fda316ca1e2984b5458e7f63eec8bf3767cf53c22fd9b37df738a2ae576f01919e44f650cff8371eded65c6a2ee9437f9ce813ca2ba9d1fd81bfadad63224fc725c7e92a24146afb17b1d7f6b1a1376ab846d3b7924eb94998e69626cad875d32883daa7f4caed73752be9e3923b73257ba8f5325d8e32e2a6aef9ddb77d608fbdbdfc64b7a5c4f9f34d6337fc325d945250ed38eb528497152c97294ea856d0d805c890192f8d5d8874894148971a503843bd2e4a3698dfc88d53be0122df94203b8d29b2442bd4222d500df38a642e4e1ef6af9f3e994bd210e762c504cac4980d7e6c8301bba4f63241ed3873aac1dde5ac327342a294563b73f2e2b4c569ccf630118aa608c771182b49a2da9cf897b4bd4ea552a972762e4c9b72b1b25d4e724d4d6650700a32e44ccd8e33a7223844989c649982c342bd61dba4602a630412b5848d490c13194f8bebe5552c7bff2fd88b17ec8537251b793324b9a99263c0219261ff6a2ab2533bce9a806cf06341709460342f4c55664d4f664d3bdca61c6ec04d669c82449e18019c7201d2ac8b12f662a7e06205908e489718bad4b03d09eb82715c68e1a470633825c4621e0e10cf2bb3875a00059315c41c19a2c810743e4829a547728c31ba0381bf3eea515a887efd219d0c3ceae3cb25e3c3a28cc8e3a817eeded575afce5d9bc321c102e5ac4d2370dc1203b32386c42d738664f729fd0a30b158d7d1d76bb592d5cb82882c580869102e40860059c442e33298212c802c5ef122b21e52e03278096219317e44262a61c527732d914a102ec426187810124e7126344f21864538840c598c4200325f12cff89210b3307291451a70327a01912a9660fac18ad9b6c151809245266810ba64619a90b45032e64a788230ce2056d991f90e35b217841e939cc20e64b224a2941a8432071c091f304508011d594b2625f421ac41c8241e21b37e8277f0820c4c384105851e8a8c81c1b6c1cb132112e11818b2780503645dc258851fe1444c10a758610431c0a0491329560081859833db0628e2124ec22bcab813b14b13d65a6badb5f60403b8c9c28218064c48654dc22731083dc948a881080d4080c81445f8926d71257a64318b10452e4b228c2d081b20332274334bd14a0264918acd051230518209204cb0a045125594d9363c116e11ba181c52b1881c421732291c895218b77c09152023137a9248048d519ee0818725539a68a28a28a8b861a30008590d2107b21832d953e841dc2217c06189322d88c13245c993916d833751c4160738139dc8223421a461caa2844c71ca0a210064418c4a08a18456543257410727a7229b2de12a885a90e02d6809e397880515a18d4ca9ca10a1c3204716bd5ca4505321072294a0086285252d5c41a73042857d03f6644f6e8513f9c864104624624021e491d97083bf204504f34338247cc1ca58c200c8aaccab885074d10c10bb82d00555d3c23025d182a65129b6366352d23f85d8645cc21978673c2d6039d20154cf1340263af26407f3c18e7e2d2ad9a3c4d833de78e39d714a9e4634009906b886ef578e1aaee11b0079ea8f027e46ef38cb62b4e30638c678696e346146c2629624dbf70232f81dfd92257439c3324605e659b747eabbee219528ca0ee69ff0b4d65af56d7db1d3f2e8b6fc27cfc10632c618eb7f6037efcd59bbc8f2e3dcd1b1bac525cb29b02b478a75a2ec994652ea9c2c03e3e448adad55f3729de126cf2b73523ae79c734efa7346542bff155c238fdba804cd17663909d51004001000331500002010080744228138281a2413a33e14800a7f7a406e502210860281308862200661188061100640180000100061280aa220a6f9011607ee0f0bf4c67f2315e78444514906318cb50adcc3364063faed2fbba460c9b804e978368ed28a453076f340574da5c67ae2cba0a418424e38fa36e29083b19cd98cbfcad693858972c0c2319ccf3d9eed21a52b2b936013c12854ce71a502a179ccbdfc41750c8df2a81ff1f2c53479f070884261b2a19b502bd1060850cc0f1a6f6f1ad93b4c83c2032d05d41cc0489063545e7aa81fc0225aab8ce3ea967e6db06acfe1f9b728f11355c8d87bc49e470571e1ce1597c54d940318efb0302fcc7882b65b760e6b0bd9c2d71d1a76dbf44c43f5e4af71fb6f61e8ddce314300944c6ab3f56ccff6ca0fe10c4c599ea59a87a5a2013ed91c0ddb3b897ce00f347a80c78a06283b90c41fa66d2570a4920c2e836e20c5dac9233e60d1d97f6f14bfaf9c6b60ae8da342ab54315ef021a7e528e5ee00062050c0cbc46f4a26d16f729cc65408918f44f1274a9c381bbc6f282dc4c1a0fafe228f768dc272b80bca16d678686dc896f8057bd724daa8f5d374df807d448cad1bf617c4b3ec21e26266b9e22945a991b0c9f2c340319303593450b1d79c39e49bf51804950314a631127a1a3470bbeecb094dea6261da46de7ccb27c179a843a66602cf93dd182bb27e55c5e5878d7ff24ddb815495b6be05acf0bef368f41c697012efc0dc8a5545e3180cf6a5e4894994aafcdda9aaabbef0a0b54695d2f76be5dfca2c61aba1d18033e92928623f609c6044a9c8a4bea39d7c5581028ae058d709368410d3290e715e9bc35ec862d16217488d8986608af6ff9e453a5bba3ac4107004e2dfcc14f44bb8355218e78ec12a1df153df5e847ec31457b4c622cd2c968ba2470908f877107444b8485dcd09c3a91edf7914ac974b694eea68045505151a9928b8bf424c5a93860aceae03cff159c1cd3a55395a91ddeb231b3a180db5b8f099bb89873b5e7087869e4480017c09b3ea73f62b9fd4e973a2ce46bc20ae4ad87467e70229421877748fb53eb01395fccc8fc23277c752c1397c4e294f0b35e9ecc2fe4ce06c9dc00c3cef6a4b70599d80838feba7f6f5f24e9d4afc30b514e073c7959ab31ee70a253ddd1dbaf8358bca818d67924e083cb77fc94356e18f49b0a15836d8d9186ce2ed72cfc9f43f816fe2c9f8a596e26d0fbe7897fdce20e2cf6f4023991f774b8c83be96662908f56ff7dd184b62e4a3d73d2c14e9f9579fe30239bb39dd924dc9119943ab3bdb0759c9ba43b8e3df1643fea2f6265627989a78138ec7379380173c675e8ba13719f2ad7c4e1449869b885f6b9497b65ca28a31f14fc1402898c35d94966a3b62d24a5abda138a1407db5ce7e543796e46896234e353968ea9911403ca40fc3de942308150a6d900cd64bc283d957bd88ab225fadb1e86d14b04bc4f0a644a384a59f5e50acad954b8ce1cd80ed42abcad6afb1e4c69e93a4823a218bcdb5e8d82605e304e325f9b471282469a20d3687d4d5b654a054117a0ba86ed27c5a1aa248e59b2b2b865d62cf5977296b7d24a943b0b05d854fc5da2be02c5a56885a544b6d6aef16e6ad804a27addf4caef05a1cb1305151dbc2b7b03a8b1bf0a469b7b402a8c2c20acb8a71580c76441abbada8b0914bcaa501ab420d4a92fbad8d8a6f15ea169167d1a14d6adef22aac908fce531ba71dd426ddb72dac80aa21ddab496761b08424a1378e27d2aab35bcc5a445becb4702ca268d13187e429a70625127bdb2f4ddaaa50618326e9de56fc8ac10824afbb0e2724aba6af62e7166944277da6d5c024418d3ee6e432b37b12605746052f593c592fa148ee3dc1dc1ee1cfa46b2d370b1b67a49216170b34b4939a66f92a38ae243936a86e48bd731d7ba400ba4ee5498eae379834503412c77685534aa7dae60489eb86a46fb8552856e0fa7094eb571a80112307768b8e1f52c0dd60f22447d77615363c52580d672a08bb24f59abba191bed2c055c8a3626301bd222a2d26bfbd7482030a8f533f6df2ed08aab0ad45543ed2989bb5a0a8c2a5c28a94bc317653d9f004ea4488d5a41fc2c049caa84805bf2251acd9696425e3f66ec16351b7c2f12d08d3264ddb38f490262eb185d6c27a2c3aea24f59b9c5a70fa907a358c5a3c9d4acab4c812b7695d31141650ef49a76e1c77a4971352aadfea5c61838bf4538bb480b6e0b2c2ba161d45929a26a70ba86f527f1b87289292e30bc4a7f807b965b740bd02f415a8ba493eb79015e9c925f4cc82a81fe7b065137cbb8e05a4403835f0497a5a368b6a855d15f1b0803a22f548e35025c972c82af6b5e8504452ab995aec5b4d702bcdd684a912446d0e77a4d9bb8e3d49006d5605a50a39539360b11acd4a4532c43734b2499487dc3da89d1b3751ce87b9705dca946cf4e876c9db4e623d27189e24008de38c1486ed54d908009f5d7deaaccdca9128d0716396f470b3aff083069348acf48a2965a53029bedd5af82cd055e02d34ab88a885a71552da38a86f247aeef80a1b84a4a9b9a8cea41577ab82e52dd480220966e39820f54e9b45542c3aec904eeda0ea48df4ec21536f24851b64a8b90858b2a62519246540e6ed13724b713b2805b054b85288bea1555dfa2e325f9aa41acb0b4851ab849d5350e6ca4422768e10a8b8e2fc9c7ada01569a091646e112ac2b5d80691a4742dc83324178a6820725c4d56a1575611a45dd60a8e2ac9cdd996ec6f3b5418b1022a0e6952aee392a461eb5bc095851a16a4596d1c36d2db05b3c059a169315285515b74dc9142edd0d090bc5af052ad3955c4dbe2e988d4e38d4385a4196db009527fdbd65287a14d07a5181fb4be9524a257d35920aae0fc947f65b918b92401d7f2527fe3d6264eff87aeef1cd582ae32f76f9e342ede2e9ba1e8e0049f99986dde1d35f5505b42164d8edf76602e7230c345d553370f3a1a76f53b9931d88587fdb6256a1c21925a27274287757c7217053ad052b9aad4389e8bfc972cfd2c99d8bc27697e48e670dd95d51307fff994b197a4b30952dd86b95e0a2636c05f4048440b34bbb4c339fa4f81c5b234398a7f5cd1676fb9dbcc629e13380f1c7cc28f67d88c46a71811f579d92890ca0121d36aa627b42a5223c42c0cbc485943abe79cb35d9bffac1b3167d20a4b8c8cbcaedfd099bbd4888c5bdcd5d587b2bb115c19c712eddf7e8288f2561651212cf8773501a11664253af358babb3315a57c1cf0204c1281de037316d967c9d6c58c6a85de51a1d0bae1e6f78ae34b811ca67757b163bdf1054e48161eb53fc58e3319d013323068c3d6b780d017611d1e63802d3b4b234efc67d74e5b76b9f3f7f1774dab6649738a29e050a559368dc062bc0b81cb2899edfb61d26c20af26389796f47ecaac2f2f59cf05753f50c29e8178b992e8d82c79480441022d58847d521f3f4352935ab08b041a431122b6ea527852bd30a9d34487c0723defebf08a91e04cfd7dce3c91e78e6298540bd6a8ac879008cca958a7a58816236a4255b5582f4fb223533826dbbb555a90446f8eaba1cbe826595eea5489520cfd6300b56bde7200056c043a3f6845c116c9f188e6dfbfc3fd49ef3801415f8c415e5eba3bc8afd8e899a5344e58f8300ffbc89a34ad45462005ca562c449f6cb4311aa137df2bb35d54fbca9ad0e1b699c82d26816c7bb5b769b639ac71a12d170b6e20e7666c3588fbfb14f7f76012039be00e0ea14fa1c753a46dccfceac3f01c36274abc2851ad91348bff16c4a54a2e23d2567e017ab06e694306956854661c730c2f4951cd180963c10a42f240d0aed2c55c2f620c6f1b9e47630dc83401ba1f2b07934e535b711ecc373c1db6f4eedd4368d74dbafe5e9fb6f9e22820d0fef412ed73b22a8de1ec9b5ba70eb6887a2c327a027731e82f53f0243275ecbb633136bf27f5c02b791a61264f14ea7840aff25f3c4db138f7cbfbf328ee8ff513dc60bf0d84a273886cf0710189d0c1226e9af022f014620fc02a68fdc6406ab81ff9035e665bbe0899e06b4edec6332391099de2a97f85731a08ab8f0100adab0ab3b523755a46628e001281ced4f938a124f5a6d10fed6004b9cf1eece8b0a41f6576dc7aceb442e16066952de9f785a82644a943dee653d77ec09477a66664f7b1f1f71cd48548c043f462c74e1c46a654caf5190ccdbc65f6f1d734eec2b2e4d081728a0cee45800c3c1e9147007efe04f1ba30eefbf0565e4246a96c232e3d86167d38a174c3f5a0848599d22248c05e972763f6ecc35beb177645b70b0a9c5776ebc80dfcd1839ad3968c1333fa0f0cddb615973db68523126d63faf5ae24541d30b1dd72d9263ec223adf8b47e3e46e8db644ecd759488d36d8393145cfc5d8b8248b37511458fb7f146cdb6c4b989e53b1aa6c9b9e1f53ab642f81216a4401dfeb81dfc7f7d799270d80eeb636a97047729523cf54cd3d25eda3ecde0c6f4d6fd1e0e31b05979cbc83666d09dddff0bb3ea1ef0c40b1e629adcfb24804867b1fafd3aa183baaaf81ef3b5b5b9fb5f1e14e76c23c0dacae59c908c3617217a3b1cb84712aed438988524b01378d9720621913b671d58cd09c5695911e7afe2fec08116d4e7e278ed842ddf55d1c4f8d126f5418d5e76278ae6714473939da9222e73b076e2813fc9c94a03696a0048d1f2b0cc21655b7bfc13803e5767250c20df280e4a0b9f253510542dfd87650b250aa2cad2e3b3c926a83d9cc5505ab2399b48a2e86c9fd595748de1ed3bd3831770a11f9098a0ce6639b05b204e1abfbe5d0df348cc541d4a41f6eb1cd13587ca035d19a235a0d2a4e79215f0dfb85e765c0700e8095a0264098d0f35a68113287ab0622496b23198891aff3372bbb5840302e6a1c1c25689056a5c2f89910625279ad2d3839aef7929d641f9dba4b539085b7b9e7caf971b9168523976f148d09c6a1541425f117c1081d608ebd36ce662291d339504a2056d1ac0c93b72cb89ee9ab08d2c076841a48b617afb26611644330f771c39ee3b32d1586915d7ec555ed300bbac9646277b43e0ef99e3fe3b2457e3d8b5284af34e77c484ea0d5df2ea7cd7e1beb8709c956039dde51dd9ea8d96ce054d46af4651f3294d793f3f8426dd5b117b5534a157067ba606e8a84f0a5308a598c06cfec831222a8ea83b5f822a0d5783dda98db834ec3648aa2d0dd39ff4575e93dabe8dad3e9a48d1888d5429c471e5b53507cc49df121eaa8aaad1dcb0c6b92ef0d86b888b57989e5b9ec0115b621a36425cdb0057587a6e3b7202c77d24b478e8f85c524421aba5c97ebabb58c14f2b5106d483d044c35dd81574f297fa92ba591143247a5773794ff1961d607a4f04dc894c7a122264a89176cad3430fe563cb49d79a524ce0f0b3ad1019dd7d13b267e940372dbc46066139874e784768d5b22e0fe0fc218666726465f472fe670bf176f7b7407def955e37fc54c79de99d31d7acb38800e39449f8d6078c4b7e6a1a805d24acb22713899d71091556cf1d74f527eebe43bcd33a65c3f80c0cec7d47b366dfb3a238f22ce281147f48c4fa0d3f56216cf7c2458c1ab696fef05ffbc2707717711903ea57a03cc4ed5ac10c0631c2cad5c9b82ebca5a3b28906ddde21f9d20d36a9cdf71d99747a27fb650b0cda2516cbbf460e8117648cd239d3aa903398cdd445e4c9f7276e739bda9647fca4e0761bdb2543237233a4fc59f8baad21a44f75aa98c02e0162494eacefa8c18de01d0e07971fcaf8f53016c6285a0cf37d56971e1d39c549729152960d3692d5bf1a5dae5b825b23764bfbeee13f64feae252384bc5cfbd4d9713cf5f4b7ccc83c4d78e0aa1f30a0d89d804bdbbd1159594396e11fac106e8e5a82c86fb7e07635ce20f99c1d5b73b465ecebf1b227be2561cf48b13170bc1e541a8d6cd057c8eb328f978ef5827d69c6affe2500dbc757b6ef4401d2bd3fd077547e07b362461fd3d72ee57c1a6dabc1a34d724313ca53d10643bef6a42745b1299a52079bf05e4760bee80afa0a04591372b2572eba500075e64e895d6e4f1108a2152cafb0bf918dfff164617ffdf822d3c6f828eca5bd8592f5265df93fea58eee174845b8af059c25a7127efe0c47b56630b3a998dd625ea33571c437c8547e03b8c00740728e37560f09a0ffded01cdada6f0a2a72355356b329a15ab4f4e428c82785095481edf0b70885653c86114ced8f3bb3ea8473824221d56f4ac5102af7267eb616cd7867d7a4cd807c9b6b3694233aa582032d324ae6a68811a242182e3c0f4ad13abc76e679af367e97303ffdd6e80eb4b2abb26ac117d619e1ae0248e7ee020e19352f48b150666515035ca2fc4f8930a808226535ddeff65a2e0bdc885df5718f03345830729b2cc4eb59ecc2fb70703630ff77d1287cd800d5899a03120a90dd57d1316d5c7457c03d727b31cb422a2c1bd5f18393a7d0a3769acfc628e91c1e417bda796acd6593b635d386e9c62c00012329adfa91e5400e00290f7ad6156b878860aa87cd2ab6bc23eae86e98396831d9a51166cfdbda92c887136543232dbb730116161e39625964d7b38969003aa657730509722c02c614950daa2cbbde50542538af37dae8c6cb413d6593b32289d788fef416bd37329bb3f81b548438920b4f5e2a6c484c4bbbf7c05685179642cd5e43d307bd51582a1c95c668618f32b13f34b55f67e81b973447896f6f73591c0c2b9a0f0f9c0b828192ffd0530eab82a66150accb3c697198038012eb2d9f68daeeb25882d88d995befba09f776968b839b6a4205b383baa493939934f401c4808189e85f952c0ddeb47840c31baa74a8e1a7a825ad927916a52ad121d3e865c0c4b14f1505439a042fdf165c986706b881f1dab84fc7875fa9380fe1c125506be1fd02797349835e8be37f11b8c101ef43646144059f9d02f4fbfa716a5b13793a792c0852975e5005f66f4fa8aa6ebbd2a884415f0e21b3b746c882e68a42fa8febb0c5421a7a99bcda639c12a086698e8fc840b6c58ea9027433092755df7a50e1b96a0911ed05f448153b63216946d0adc0139980e3fc54fe9640963b432d704086a4ecd3ff624f7bda8a3f1e4bbafad75baae813f2509a3cbf1021b753a7881702811dc56c088d4f632bd723dd1233f84c774444cbe3d1125e89b027d26d9ba86d0bd2516a8b08a46497de46d0851472ffb885f160c81e43ebe7569fea8aaf214190e353c23cc15b5a215906a15a9acb2a55930969a2e2920d4701b6ff706c11597c439742e680eedde9ec61accae2c493326ec22ad8951541ce6744172963d1a9693469feae07b3e14c7900ced3734e68f9b5fdae9dc37bb2a1e1ded445d3ee617f44d4a43438205d185fe2955a2563a20a51fc80be2c661aa4994152c6b7b04be9de5189e221d1f1ab71ddb5d36bb3ad888246656b8fe098b98f4e906a76e2ba603875d8ea3dbc282a4fc9745d97dcc262ae7a9e305b81193217b1cc9461bc2fc683c3ec727429fdad80c74b02a9f14d6d3bbde3794d2716e7276213fc8722300ee382d511bf392f4d5d92f4ce530684dfe5015fc11f7ed1a6e39ec6b803924f94d957f1c6ea348a8f1f82336ad5437f27739fbf5456a2e51f50708faa63611ab800589a60c7a818d688f8c9851d4daa7955e45a0b3f367bc2aa8b08e080cebf21124bf4a4ee893bdbaa0edefd99fda64c8ed279582026324f46b7ff3855320a1a8e732d36d26311e2276c2b7fa4d6ddd5b43bdf53972b93a7c8ed5a3a6a1d61854f886cd730ff3e23d64ab5cf1ffce3c233c573686aaa2a991dab28a0657f21ec3c41b393ff7447c22166be6405c0043f1729528118ff79750b09f3b90ad2c76ba6cf55a79b5b6365ef3e5eba2290bf5cc1427a7ba94e57c944191df85bc2cbe09af05ffc6d1c235c9d2ca08569064603e505dfe3372262640e10198fb336078a66a6cabdb7d4a0308bb9bf73045c875db8f620321ea61730e971f15106c48b20ac82a2b5d0504c7526e933f5867dca538bf0b9d42f3179afec51d3c8a443b08bdf18fc52a5f7af95a4ac06f39a5e65b1c7b6c2aa330405d19a86c53f3e45639f12f48ffcbab0a38e1fc2e7cb1fe34db693e9eccba2e85b7e705d50303e20cdd64a0f197e2a4198219d82cd044152d6ea642d9454b2d93b04dc03a0c414499bcd5a03553b94523d243d1cb201591c92d620eb98b2833950c2bb2e33f517af84869647c8f55796414a642d8cc19e2ad65ea6148a96b57fc78090adc73e349b09f3ccdfa4077c4226e9abf853520211d80cf8805031d3f673f7141f4ded28829bcdc3b524092ad93fb8ec9ed64f04e6880c6d6695e4cc55938323a3e326b5d2fb5203e34a5e3937b2a5ad415cbb32cd7e3bf1658a1ff5f5b27d8055cff6de8d08022c3d0cd806b0ab7471b68ec9c5b51240bffbfebf805b2f76005c559305a05d2e5d748b12da7591f26f131e40fe5a20b7482e394806450ebec0a41f4ae42590017f7159149d4b26e426303c50c725b7b08b115baca65c673a2c500b1cbcb12c21b86998e4d5aa2c77cc91168dcb010fbb9fc3b2770bf019ba676d53f392c255c2d8d0eb16609f07afb3d80b081f86880c8e5b7c2a697b64de2c17b6a9596d6f59ee14cb55ccb03d0ea453bbabf824bf337df0274eb271b659f1303ef5b6fd74b8fc9a972fafbc05d135512eba050fbf975ddbcc77aa32cabaddf87b02e3797f99913d60501a4ab817e60380aff2b9287f953cca3fea99adb41dfe6063ca0f3c3617dad84f559ec35ae99efe31f300f8f0f7c02e39e8fbb8db945d061e57d32bbe5d7c01f8701cc82467afaac7e4fb3eedc205b0643f2572046a5a2af46ff2a9d08f23462557d752cae02cf5c1c45e84c66e179f0171e28a81da12caf929537f6e3d2f9b30d0633c15f9a3eeb59cc639ea86a7436f262ff30f641d2c2f8a10c60d156a37e061064060075922d8480fbf8df6bcdfea3e73a5d47ec356a6c224252638c21a6215f366a7387bdc274733620c437adba69435ae450fbdd7a8f6a8df51b32014e3d2abd87c13a8e2923c9c17bd0523d7d3cd7bae96731166e65103b55ceae3b8d2fe3ca2411389a139614b8621189b30dfdf1e2f76d558ff89430391ac99ffa5087a703b52ba24b8b2e3d1fdc42687016aac1b69d29fb5ab7a2a496780cff2e91125fd268f0829dd67f17dc9815c6d4326236aee578e7440481467c193b3bd71e4e97b76fddd5d16c030a521fad4b427d49ad34d6d7d38ac961edfdd95c1c5b5e807f46cf8380e6c3ee02e1d9fac28a2cd3fbc8775003d4fc1d43d25b659366bb1634d59ed9f0e39fd39ec281da87e23a635f7ae88921462db4a2f98ac6a82b295f2307ab3e21b38d7bb8cdf7ff96fb7c5cdbe9f61c6db974e142a8a374b6537fef222b184cd34aed45c5ce2dbbd6ac06c1dd6632b837ee2cd74eea2d5ecf17bc71486964e5e0481eedf2c71dc93012f071805940082ec76f3360600a03ed8b7d92f13c339dcf2985f28a03e02b0c82fd5e9e87d93910aaec2984ce75ae6e9b25d8a7189e6bf17ffd0cadbc1af9177c151b364a25b38e5892c05add57165863fc146b887067839888ee5849a3ab190c0e4479e46f07264fc74bb9a0516781f708ca4156e2c2f41ce9dbbb3f6173be6772fbc972f3f4c59ad5137b80731e10767f2c15cf1bf50f324f356b81b83458bcb2c3ec1bec97396414252948342d31748c3416381bac2524a9be61d2566f1c85fe634299232a8c129ab197f807461544693213857b9653aeb92ad60c4c542d45376016c73e9465846310139c81d7faf0f150963d48b62c6712cbcd6a4f4bf3e3cb60d9de58eb8c561a874d3f4b4cde5151445c434e4f301f8985e5ccdab8e47c62c20c4f3359f581e4a9973e7095ad29637403c460632035277e697e93f56bc984f17333ce962c85a0c9c40326af586db2ad25438ff59330bec60e3f548f841f6c1753bec0190d909a655871f4bcaf614e413429f9c5c3b15eb1899cd889c4b198fc585ecc877876ef597a8a35e34a24e848f1b74930d54c681a5af0dd4a8f3fce0490ed0a618b0039b87668ad571f460b16576dc93227375b15d48e3333e28e9a94cf98c0daafa57eea3856f551a0cc40dab6ac747a16c6f5f0d3044c4f30c97629b02135849bf78a0e34084c01ce0fcc833f7b27b3a544cf94bdd2922eaa5673c3f710b9da89ed4d8256e0f11d9bf0a39d175a2e32a26e5c1d6644fdf9f8df065d6edb2d5e078c37bb64071a5c4d7499a1687231cffa3644a231e07166ce1f820a3f21cdeaa616af88b845448666a1db14fd218869278d4ba0e99f6ff50dc3926146d2709c9a29f555bb6b8ab9adbaf1adac4bb9e54a31e8f33889dcf746efdffae141a1ad35053422d7495c340a697d48be17a140dca5e183041c8d3f9302ac9326e4371f55d056568403fd969ef9ac90420c3302dca54cf871975adcca5a7a1681214be541fab399e0b2cc06c3cb398ab914cae5c781ef70126d8c6e3bfed86851292a458b09f4f5cceb9ba2e88b71237d731e09675a9842699243165fdeba5fd5c6c14f3fea9360d8ed147f84d34e5189748df08fa137d05a511f925294b4a27a8f4816879d2de146baad39d01d125ad4980b1ebd221db04e99223e92111f6efdadd20c152107fec5b3607bab906888fcea7faebdd8a65e9a8c110de9d9b15a8f2bbda832a4a9ad9dfab812e3f1fb00e5be771e87b425aa4c90c285bafafb06221ab762ea2aeb7cc76c1b18b0cc3d4423229a5c3a8f7eeabe4e9dc2dfe9ba67b23b9a3abda3c1131ead88426611117d0f508a803b4ed1e77c6bea5e04981f1e93cf0a9d3df29d0d3b04d9816cbe3a01968d64b593062755430cfbabb26ba0cffcbf6f66bf8e22ee00cc015e7e12c7f378f52ebf8a280f90e1992c696d768dbcbacb7ec28e9b3ee24f5397b52c6ae59009a447518a59f0f3290b8cb8235c93681faebe5f1572ef19d1f14aeae5728abb685c35edb8ee4f27bfebfc1515194e45ec12ccffada7a2e803162a9edce5ee18eabd63e0ab43984dfb6de6c4513ef421c90d406e82a4c5a9283ff17e080727173c4a0249ebb1db9124684f25e407411a91df11fdeae61184bd47988d46c751a0658176974c6c4ba9bb0f8386452faafa34137a80985adbba0a6eb758b65491ba87d107d288bbea99df410006e58c0329b4782e747fb038cc6e9e9086c34be5466d2bb9c5e8c5303328990d8f48fa86cfcada64e80e955dc140c110b4e6ad294d80b47c4093da3dc64ff1cb64cd58092f4dabf7f9b7e00169d93afd5f57c46208d2e02b512487db21ec8eb872e281eb8beee662dc14fc740d013ee09c2ea47ccbf01834a6f19dcf4785bb2a5452d422d1aa4677a94d839f73b064a98cef173a2d89d26c4e8f9371a6a9e6a9ec2b7f94764e5520953bc9310e80293becb4928a73d2d602a0a0edd4f204361838698f58a506999846df033ccdbf4ad3e05b19ebb87adcceff10e2e5e4bdbc8ab3b4bc692c2620a62b230e05588f48e9f4fd5676988b7a93fb2404ea066f4c66a45f9e8cd55486aa003fbca7aa9640d66535b6dd99b28ffc89ac8b32b3613884539e47a9190f2a2f38e75e45685fcb12d59412f36b3d819a1c199c52179fa93d5e0d0fb3a058e011fb2d841e9700359c12ac1d9721e78ae84413cb1980da2fa133ea3f38487a8aa9b8fa3008d6cda7cd6daa28d106ca8904d431485e8709d9093c668720f558674b908f746ebcd46735a6aefa58d7051495b099868a6138d0dc97e404fa74726a879bfc59926bed03fdf1d575adbe2fe8337f8086a0bde7e9b49fb88ff96a4316fd584f40225ce0b6fc5c5903838b4c49a9d0c5ae1a1a8a5a287d09607f1891e2cc4e15b75473ca4c511ba6e2812849fc991b009c32c9fd89c6d2bf1d8daa8d8ad0a3fed423c54db8125f09203fd411c5194acb05f5f71534f262e5556fb6d862384bf52be057a622f40dec04e86244384b24c34c2a5fe6d23d3b268055b376a46729c5e96665aa1021d5698a52a0571b31396b4a08610513b3ee877f72bbcb18ff08f53b0adf7c255dc38ac84e663c5b994f5e23908bc3852488a992be826f9d6e67e576a0a486b9688a75a3cd97a415101e88b23d61b4d327f191c885cd6b6d90fa17bd80a65bd4b25b0f109f321ede063367b1d3c320040d8f1fcdd43e9ba78a5ac7412b47052620a4d7c08dd632195726c23f4bac8ac50e094035c7ab8e058897b48db6dfe321dfbd1a09d5c6febac2d83d120873ef539d77c9b525d77e73610c9697c0d78e92f5ce084e32d8a3aa1c1ec64a06de933c60a065f6a39fb83eeeb3c8bdbaa2d9e964924e34cdcb8c109ffb0be39a9e60ed1437e93b49748131c0fe9c8db74aa278ef9d9ad33da0e915d10e71b703e7ec138a31d91d8aa1e31b3e05bf72ff50caeb6800cd36df3a32d284dc3fea98fb27724be4fec9c1e3fee1629b319e176e305ca74fe05736966f3c8b319a488efead1cc9456dc54b98d6109b247ac355091f830faadfd7ce226e0e24bd4a09e726fcad157233638ede23f1362724c6ce1d8ed5b4813af9b44f13e9942732b8e83d32c16922392d60ea4010509e26126da88fb25f89ce95fdb9ca380e3562bfaefa0fcd3c2f1795ee2a7e5996b38954e4f9b7bfa11200d430df784688e257f9a034c39a6e0947b6c3883064c7214ae9fdc7c310646bc6f7bf40df009db6ca5d18a1619d233150442c271ee3c77fc33acf9e443e14db35f982906cf181960f00c7633236505b6917c9eadbc55c05d40f3998496c88131d86694fa2c9d9643be755fd3915f01c811e7641b7c4f604c484044494ef6731bd31e8e6f91a7fa93833c7e76b816f5166232630e9cc4d01ac8629edebba8a2229c3101b36b3f0b5f9bb06062d0e5608d21b78baf833236bb471c56ad0f68e9d81d49203348ab39f5743f60c515a9115a90db94642fd88c71cc7e0f78502ee9abf0bedb5c43687289c0c3e14118ffcdd033e0e55e247f8065e7f93699e1d4ba06713f45438098960d841ab6fc1e0c0403e5483f546f2736b3f5fd47099ed8e82b5c8496217c06eafde94afa5f6b90cbcb22eac9d932414b4b8122607d74789a5db821c11f585dee80a3a8cce595ede395d62aad87a16f0a5b94d1abec96b9cbb824286985dc73fa723991dada16cb4ceae632bfbd158fafb9289b26f489c845b16853ee2a34413f2022619ab96eede43c946eb3202098ad9c0ac50279784a17af0ccaa07761f1711a19bb60d9a7ccac1604724db07c8485d0f246346431c0c84b6f720c1ecf08c94444f9cef2b4f47b8089ce5cc25ee251452efe913e0cbe66b505ba2c323531c9498524114352fe08750757824ccd9e885b4b596136a62b5b414108fa831f9a93465eeb6facf5fd395c823eda102b497a3d9eca9f807236c91f77f77c681d7709e6437129d16ff2c361bc87775fa573ce99eade9850d2e10bc45fb9e1624ef88c283a75a72a21b3a01d3f662cd0164beb0921b6ec92464781957caf77b744282b20f6b7f78660cbcbd84a77f0ec77dfc8b807c10d382ae5462b9d9f2ae6d4009f7c56bac83be9bcac016f0e03739d13bfff105ef1f298d26d038a3407c02d88b6e4138c98972527c422736220d04da5cde24ad9e4d72226730193365786c5adcb2e27b75297e65286c3f39cd37434d9eb52843c3761f913b2b712b800877757671cf5135ebf54f945a839128326b226b57402c343f85e2b391028b7e62b293a1c4fde2ffe0bf9a285867514a6d192b90903cbd9a08d05d4328fe1f183152e18eaf9460e88d2a870ca55aa6ef02744204520b98a8825e25021e7cfa85ece7ae21f280150d8008577c51ac9e58355f254d82d80891ef9696d6b32d6af26baedddb586bcf698415b2e45f2d3f9300e6e8bb6b26e622cbd9bc4c3c79bf386da72ac890789e730ce8542b137243084d13abf9a30d128fd346bcb69a7b77c59037367ae2b34e2fb00586218a9e5eac7308ec0d22f5f74e0a6919717cbd18e8eaf9ec1068e3572248b861cbe7bf93c0be25a106a18c047e884a09cc40b97da35d2a77d339c2fc0c8468a655e49c99b409c21aa60055a7cab72533ed346bf7483789361fdd0eb3247ffb068ccbb98010c10e0e4976a6cf1f00f70e6339438a8e405ca80c7195f457277912854f092a73b2a42916d879ef180f4a83989887de12ad38e2b7f4697c083a59b3106e4c4d093a4774133788dd126a7f39f52f5bdc34c166f82f0e778fb741ffbe37ba08d280a519b395c5c30039e2fff82c19429d6e972ed2e8ab4ebb1164f5fbb2e3373e9225e1fb087fe20cbc5b967b93333c72264d812c8ac22c4d030e05272021bf5c9e94da917cd790079421b59ddc8660186a1d37e6dc5ef3c93e9188da6d3c11752211cf38d8214a64a545438fb2cd34322a8a42dcdeba2d9eb17c5f68bc31e02ad86292351f43cfc2399105e55bcd99f7f187379b57ab7a96b84c14105e35244291095cc7db2c141635a483ae40ac7629349f153c0fe515c66dded952f76aa8a0f7d0f0865ee1d32dc32d37fea3846a02f48e0355a5ce2d6248fec3d0cd981dfcf836498dfb403c371e31408389c6b36a553aca1a39c70c127f10fcbca1792af543062f768abd08448484fc6e87b05e25448adbd2c30d51723588003508546d038a509e765d40903a4a070a1fb5005e206da0b9b79883e31c99c0254f9213c2ff4300fa6a98086be05ec62a7f76ecab54676c6370c7da047a0eda5ca16738e82f48691594e15052d385622fde0896cbd58e8d1031594b882464cbbdb7dc5b4a99920cf10711071a074760af713e99cdde666f39fb5cf696fbb82339db47eeb38cfbdaf847ccf61b41cec97e7bc899b03df7376eeb03a9d87b32fe9a44aa258eab5cc9fe2723735f7a5a7a127699da6149f187a51062712cae873bc2f57046ee15f21e7aaa5cad95fb5a72773f9d4e7ebace55cee7dac8c94c89305861e8806104462b23204328601889b127c6cfd2f87d45587b28a4bf4908fb61dde98739f3616e87b0cafe2aeb47cc0d1f5effd52ccb68f699aa9ade3ece7cadfac771b5f41817c3913ea63be1cf846d89c4d50d03c1b28633bf968bb48b10c7e27a3816c7122209fd58fbd84926e6b30c7f3239fbb19179fa1e74d0676432ddbdd96619febc8774aff7dccbf9703e9c0fe723641d43028c2160ac80919207902114304ac018c909c810ca97a30c9431d95f63ebb9528aeb4e8f40737e8420d3873966da93bfc6403cd74a55a5d728c51ff719ab02b9ce0ee9b1d36314d3b7d6f4b5ab7feaa0cf30e14f664b226119db3e38c272786b0ee70b225ffb4fab9f8f1abff2f40814e7f4637fbd5f5b9e11c8fad5e5e44ea439ebc8bbbabb7330a8f5e598a9b576569e52c3393dfcb1d6f027b3a5f437faf054df35cdb54f047e245768d23459dfab1bd14c38a73e26f3fe37fe97c9ab7b20e301fe3c9eb0561f93fff9b8def1d7f2c233da8e2de321df7b7a04f9176e778ec339bdc4f5d432f8b331f2278e7fce85bfd638136af6dfe1eed3dd4e94b7dac1ac691dccd5bdfa4befecde794fd7f4d3bf89ee3e9eb4f75e4dfbd2df6863f167a59439f2b5c7ee73ada2cd8e96f69f8ffbc9ac7d4ebd3ed37e47ac78c6779f1e41739fae99dfedee13836cf164a572441c4b1641255e5a47d31eebfc6de781078f753f2c124d50866118967539dc2ccd99cdcf1acb389fc6b2deb82d9b6d6f76db9deb71ee48fea26fee5c4f8fe09c91b865efed19c70aeac7f16a9c33638ff9db77bcda8be57c2effd84ec22c16d7e31cab3956f6d7348fc19f3d61a0ebe3ec97f1d9deb3695f2f135f0ec9188c3f1fd7723eeece11e52dcbb28cf3e17afab5fe098a412d87e4d067e31050fca0655b876697f371c73e2ed7d666de9333efce3e1f37c38282e250b416caa1cc7b32762f9605654fc29ff7e4eb29e7c3f96018c6b1b2966559c6f974cd85298d54d9f06527d76cfaa9ed7c29faf2f345962f88bef092b7dc46792bc9dfc0c837ba47a50b64f6bb369b924dc9a8c4c4601bb7f9c4b22919966c4a6625a372d1d25f5e845d31522f8a1f35b2b9404645067fd4b6b229995166649a38a3d2351d89e20cf932b18874fa18200f621a33d12e1661d8f51ec497c1912862d7c7e04f9a704645dbc9a864536e22f6d5fcc5afb65c1ad1e844a0dbad96ed3e6859882563584665e24df5418b9b9f51c192e30345200894656729ba4011c402b1c864eebfce9225f717e0b09d589451e9113aa392196554e2d1c965f0b0a55eb0a5148ff58734d2bb18d2054cbeee41e94287bae72aef86e74fe3fa0ab995d8fa6485edd4902e3c74c981528ad1172cf065871d1f584a8e9ccc21538ea660e9f2036137ecee6ed8ddb0a56069da21c5940ca17419026173b1db3f8862e3d3861e8c5cac31c7f8370eb15f5748b721e9d7dd98fa8cb2fbe27777f7777715597ba7945c68c9525216eca4620b2e7020832862746199c8722643285c38e1a207211b99a357ab1b51ba8bf0f9a0c92b11b888818b1732aa082e58b04460106d819a428b1738b83c514c29423501e526298208103030b94524a9810d31c06c01030ac9163ba818c25c1eba2051c50cb0e8544169e1c4f581c10d44a82782b82e34e9e20431b03872a408ca055af05c19b420418c2cbca07cb8c205545ca31adc2ca6601105b5c405282e42080949b1e4da90c32d22038a8a2c7a50416421e40af92246182c50476489c10d6e0ba8dc2f629082248e1081ba61053df070a30042e1404310163ef70458ac50059824b488b203d490145f18dd2398107ac19016a0be384181f141890e5b6aa8c285757bb8b47087c208830b940d5b504cae5c16d02006174da0b2b4ae0e46a8c082185d5070a950828ae206d40e3168b9c285cbc4153a4674815a8115b735c57d62c5ca133b4bb870040c86504529400db1c38501072c8ca0a85841e4eec00a15ae0f5ef4704181910394161b5c2b505c1d48417981440b435c1ba800952408b5058915335c2f5594e0c650c510215f5040648142810e2e95231acc80880c6e0e4a10f184f503ea871e546082185e7e946c79e1ca600b0b281b8071822d6278a1e5090eb24481022a9a024a93226800e20a931a92dc1cd8708d6881012585961d9412612eabcb2541152816b0a056a8729b7022c61718dc8008658220502d687295380111363b82fab159911676406467074296f8f28316b7065aee0baea07caaa0a63c714b10e56241620744a074f8a1043e5c1324d1c10d45acd00191bb850e84a068f0058b16f70a2d2826aea0ae5419e289fb44947b84048a0544a0a0f8218a0f294872a5dc706f5004d545162231c822c4c917d40c5a0469b93d5c6152059583276688729d40e2762102ca0fa8177c405d91e4aee086fb5304e5440e88a070900321978b2f170a2d8cd0d2e50a8aa78a0a4f708982e202092188a8e287bb820fb728498c306ec8a208ca091544bc5021e4e2e00bea055ab4b4005d411955b9493c719744a90109140f44a08afc7087f870774842821b504b1441e53005911bc41442ae165f74b44035d182aa72e542a912e38b2750462c8d725160291231b47882a201883b832617c992186000a1c2d480122286fcad5e0544f205c2621942c132247f2bb88a315e0193638c2bc7055061053e443541ae78b2619b0f69a4b07672439161cb47286f7e738c31023bdc73e2cda4834c4780da48b3e26f3b21f800fdd8810cc4ffe25f11d8e1e3e60750b1df6a2662d94d7a4d3a3cfaa017968e6d8324fb25d50a36e210e4f84bb29fdd072447fcc5b7f88994c8c5489ab32d0997b08d184be83931742ff5849d7f13310a3ae67fb393f1eb9ec4b47693d351e79c5376a4ee6b9d4cfa92ed6094304b2e2ec9bee167f8013ec3e94daa897e0fcb8f333e57c204dcbb2a006bc0878dc51313292d3fe8e338e969e7d9039d534fd8d2fba8995ea49f4f252dd157b560e76f539bd943a94d6ddbb6d28cfd9cd263f6b30f9229853548e6aa36e794a1617979af660f5b77d3fe2c7b202e93fd459b52da34ebee868f3dd76d5b46bbe9f6b0ebc72a7ddacddc3d391df0e7c38e42887bcc8c37d8a5a0b040f207dfca6cf02b766532c4ac8a052bc29441234f19b781f9937101f7260a32a794b01f24721bd0e626ce988f255631b6f50eb791dd3c80f6c5d2a0984005208e4ea276134861b11f2cc2008f2b476f16ac3c5109b1405ca6e6861f21dc341b99e3c2b4bbe60ee6fbf5d97b77c1ebba2e1dfedbd561efb8c7c4e417f7de7bab54e9c6503628a59450c698a281fdcebecbe8c3db8a0d7a8ba79561cb052b2d17845a448eb478c0d45a6b8d345629391d3e6aed364d873605c775f569877dd66959b7bdd6d5e74cb872c5f0de448c06f6bbd9cb3c5bb229c3168f5176f7ec5730e29c8e2681d24f195d57c5be66fa1f6d600e7a5d13b0bf9e76745e6fddf3ebc23253d8c6d5bda64db80094e7bb0b2c1774a88d5bb5ee518aa3d2fe298733718e96435f7bfadfa57f531dafdf1e50de8861f8cbd19ebe7f8b051680e2e4a1bdcf6e669a411bd9479969067100f19c4988310deb1cd7ae97b3070c1306477b8a677874e679e37850cf1b25a1b3f69b099b469be3d19407fd0c4bf73cb801c31a141bf4d60a4a6ca4aab0d8d3703a3c5e9f5919ec83232c8d59ef800d69b013388435431c6b60a97bab98ba62fdbfd5ea5d76f9c6a15461ce77779ce33425858510c22ab0a472605351d8259c78f7e0df283ff4a4a4f4c05416fbf54e868e5331a83d5e175ea41c81d2051350bce881e2c5ca0a43524644bd04cb763e0736b70d73ac4943ec233f4e727cac63923ac27e4d438e3d34a4949891481211ca5d8650bee8c95b094eee6f7c96e46fb587d3415ba07da4d4352bcee8e97ac7bdf82917d8af5ba0d5b6f018c7718f439a4f9acf5d40f246e2eae6a3660d7b8c6207aa1ec3d8fa691ee02a950b96063ebdda1f40d31dd5718384fdee078968e28c38b18c416c2ad58efdbc2ce5572bf39f0c8dd2cfb2acf439b3040462c95a89bae7db43ae725d905c3b1f356ff49d461e15cf8de2ac1da474cf0c3ba925b61451abfb784f4b052b50ba509251a18195c35b4761a6d7f45a1d62de37c7639b9d4caa65e3d3ae427949b790004b04e08e8600cc339a96cde84ea21fbb160980f2475b3a4317fb0b677a3b49fbd879a6af6149a3c464d8628ca539e79c8f05f980e46bd2c63e6a8e1faf6c6ef32e699cc93ee7fac6be99751724531fb58b51322a1c37e7ccb297dac70f9267c660908c753e6abe70e5998d65a3dad3de5e2375383093202701299f84494fc21f09cfec8099f4383093f08cf639a4bf5e23fdf5244c1f7e90bc697f136b909c751ebb4f660fb2b54b21d4d3136b4fed710f739fb3f64ec43ed6bad59dca13942393ec4afa2745642b0f9150ffb4941fc8b29d63b987b95ff2eb99d11958264bfc6d1bd7d335b29de4399471ffa48cb0feb143806f22e7d335f232c2c6874722110e453d2c23b9b18cb5410c3d214aa225a5a827f56468e80edda12bc4d0d013a2245a528a2a2bb6622b4aa93b95a7887b653c0d0d6f950ac2ab3d45dc2be36968782b216ccb781a1adeaaf254d6d06d5d19ded0933b5479eace1deac99f0f5d1f1a1ad2b49da19a6595569ea2241ba4f9e28fdbe8c6383a6bae71a543f537a34a842522b2303584cdc97ee6af89364d8adbb8a66c9833f2d1281a452bd8d65c0f9933dc4c3ac83da10e721b4c84dc06fdce660ba586b2996a81a50ff3675343d88ecda3e6aff3c71971ef82e205981cbdd8a20b25397e336922b701a1786164d33962136598ebe91af823860963559f13113951b4e9a0e84439e22fc88635fc1da4618869503caa5058a7ba537f4ea7793a9dbeee9ceacfe9743a9d4ef2cade44b3097ff6647a68aa95a7f2549e2abf70921b860ca1840124bf8ff95ab1ae5857acabedb7584c97f35d4f7f04b9eb552bd6d9377dccd64ebb26c655fc496b63eac7d898181b533fc6c6d48fb17f13ad7d98abb5ddd73257fb257c136bfd114df54d507dd0b25fbae697be1216f3a5379970c99a6cc9d23f613124fba7937d69df246f09634feaaa7b5bd6f0777df633fe14c3d33645c22a7d2d559eca532a95beee94ea4fa954772aab542ad59ede29c9cc9148250ba34dad3c95a7f2541eec49182e99001942099344de4a391ff6f24790b339ade5e8ab3e0898867bed592401ca38c3960e607a66fef6dfd55acfc6b08e7ea6659426d3701b13c31af0aab9bba3101db6641c19b64c206507263bd49051e887b0c6f51ff69763d7775daa212e28330d58037e13fe3d7f83dd0c0ff9d8e3c80ce1e3349e4941e6fe1fa5dc387b88677e74be3e0599e1ff28bdf641b2e44cf06f9c429b301fe2143a5f18ce899eb513f18ffed1b38e25880366887fe02ac4e14244f93127fa7413e447f8b1b3639a824d3e662563cf45026dc9f42ff96e13235c79ab950921e4c622a8542db02baf6bc2c62fcb11ce88ff2d20c70a2db4d11f1c4121763d34413e7db96535ab533a4e017608f4bdbbb81e3cb81f3d7fe64c7c09b141b7f1e35542d80f4a9c82630c2c31a224680156a8187182ca1226723082e44a447214575005b572206ae150a45ac2654884784116b383c4e1065140d999218b2b39e4c88adc80a42279a12211a299ae40a24329a5a20445ad1ca250299932c87b9a16122a9994610b492b7fbfaa43508f61881856308513306860014f171840a03a816a87d52ac9bdaa2447a4dc60848a45f3a96480d87ba53158ece18f128dd24910698fd02a1b20a51fc38479209daf99254d7cc1b6c10a218efadfa692c1767ef8a59f2c399561ab069dbccdca75333cf047da485bede26f8e03ab2461ce399c6eeec1c8f2e9e51c2681a35f3d3747c2f5dc63cf610e5c8fbdc6e9c05eeb627338f1db9e7ea3d0b0067d20324358833ed6e56c8f7d96dcb945835186196e78a6c7f5d86394d341bdb3bbac35cbb2cf64eda6ec2cbf11e47e8d7629d02c710a343b865d1384ebebcb5519b977a59a61b582343e704e38278473c239618c118407010407788cee1ea3bb43e8d91338a3c241832108922659c060092b4418419183b2327daba4754393d6cf905c336cd1e0e5886dbefff49cee3eaa64b0fe31ea60e14baa4262e5c3b719c491bd7c0ee2c0689ef266096bf4779ed87c10b2bf0366e8c39c83fdfcac9ba1b84703f2fc09c3ccf088314c98a7d2bac148cb062577000f0300e15780dcafcae1553878e69ef97c4155c4c2fc3d55e540e3d1f0c9fe764bf697b9ad19b02059ad60680983cd37ba478fad19a6b46458a2db47362a5fef4ce80f7006cc5f29cf87d066870c4ae00c98a9bf60511966df804747e50e521149fd60897438f21e67619895b9eee33e9884441e0d9aca02fbc1d60e0861cbb47734f0a8ca7456c43e421f1f861b6212c20ce3f54ce35eebacc006d59fb1bbac2a5240c860c4480bf9c87b3896e73dd429fe2ce7c3b18298d0682127f6eba3dcff35ec567f0ff593268250c67b381fd67b7e3495708ff74e950a8ee52d75032cc396119d2aec7c4895cc2975a007f30e2342a007f31773cc338c231c98fdb7e8272de405e2e8224519b658528ec8b055a427c60a401c5d0158236229e59c31c628a39431c6d83f588a1188a3a51360e0961b327a8c11cb8ca49452e6ca95bd34d383518a91927f8a8b920c3f65c5b615f7d2b5b770afb1fe3172afadb8473f1585654db19f7bc9f27916b721b7b88dd9a92b6c67fff58fe7de2af33ed7c97d15d9ee7fd83feec13e92bac2763e6a422bed273dd4429e7b8dbdc5302ce35b26d35df7ae2beb66be6ac4322e7d2fda740e0cc3260df77660d87bfd37ae150372f7cff6d1ff923fbbcb084e815232c486a0292cecf518a594d28c526db35efa2da35b35994c8f03b309cf9c3ec7f4f44d4ffff41989f4a5d2c9643bee2147b25d905cea309049dcb6fd4dacdab66919fd49299d42a4b2b02abffcbaaecb49ce7d865d19e90b92b5ebfad25f6fbb8f746320fba659ffb46c2f685c02a1a5acb0de7b914a55eb484f6d819ba6d59727afcb313db769dc69723a4894d2c78199e29998cfa1afc5fc16e44836fda98be9609fbad243ce9eba20d9d46120db12c76db2721cecdfe25f5a6bd9fc6b4628492c7777083de8de84ee5d57902c2307a79c73cae99e84b519b68a70c9f36f82ecc01afdd1ca8e0e979415b6a6bcb0f0ffe5df802b88ffe5aa619873cee94e7227b9dbaf96e44e6a9293482427cd9984951fa777305f59f7c5ec6f1cc39e44a597affe99421c151db55094618b85a22c5920cad78421c07e7236da84a073d038a315e0f8a370b6fb9449d89b286583beb5583cb4583f73aeb4fcb81ec7f3f572bbaea8fd8e084c40bbb6ed37edbab479dd701b50fba869f18a9d434aed2f6dde38a5086ec3bedb98d15e1e84c1863da461a2750ce8c771acfbb4c76ab7bf8f9abbfebc1e0766ed37efc6f56b4fd9ef5a47dddb7ea379f3edbae19ee68d534cd86cbb4fe3beb95fdb7cf7e6bd7113b1ec93c90c701bf3eff5fd84414a951d11d8b4edb5cdc7d669608a919456e9099113219292a0233f580f6b880e07e4033e3470420666603fd83ada6ebc42c7b5be47fcf9cf36718c534ad93dbb5b3aa4d6094e1c79e54adac7df48cfa956686d5b42bf491a8d6ea4b7f6efd6b4ed044c31e45a8bdffec37d6ea4b70d0afbc1a3fe1350d0d1af43fbbc47d33e2058f6e19ebf064e70cfe50e9afdfc956cec04278e8e3c1d10d2d961fd040d1111e9ecb07e80822211f5a258545454845d13c71b5318f01f1de13f8be3bfbb80fffec67f9ecdbb11c4b1d9b8ef1de01d08e2a8d45e08bd027c678138b810feabf1fe5a0880ff6abcbf96b610c441fafe0f7c35500567a00cf8010401c2ff6abccfa66b4fa687d0f43710878538626678c08011702ce0860dfe6a6c2840840420a0665563801a346a0830c31b800042c05f0d4d0070f735207c2063465553838a11654e1e7432a7d3e9743afde9d47d11064aad95e920acb1fda99b7f5d3a97cea573e95c3ad77f355dfd53773d8661188661ffd5c874dc9f3aecfd29a594d2ff6a643ad29f3afa308319cc6006b3ecbf1a99ecb5ff6aa00635a8410d6a32da9b4c2693c964faafc6832ecb325d0ca6b046ffa933e1af44e22a90d1115ea840072688e2468d0ebc1c20c3160a92f08e127dce3927dc3029d76758b6cd0baaa2ccf0d8dc677ac89fd93912b22c7fdb1a487bc9c4bdb8c52a7bb2dfe08453ce19bda7469258eec01a717b5514eb7f1337b9f34925397ed67d9225853e8963abc77c79e3d84c0ff9d75f3867e21c69102a256c908cc518638c31c618638c31c63844896ceb16bd9177d4475956425ed003dd1fcbfad169d1226b748f3e8bc7057a594122efc6af76a27c48a9b51e67518eeb8b8c8eb270f12275583f3f4040414142424319c67894218410461650509090d0d01011512b430821d4c910fe644844d46a151519191d1d6581d0defb10c278e38866e1e2e546d4b9117762ec80030551213b7489bec5a5884b9690cb95a383a20d97202f41ae13e43b41ce0af29f99a38fa24dfc214a645bb7e88dbcb8bafa48e6f09fa84377acff345010566727bb98c38ba20d975516efe88d6e5b7aed5fef57de0d4ac2f092eb8b3b39c73c40181ba4f9ae2205fc4745f0f25cc59a4be3bfcf9797afd58cffa87705f0df87b0f20fc067ea6510b2c419fed947657cce3eef7e5ed6bef7e0b35983dac3b8caf63f2f6f4f8a35c668e3469166d67453df4523b2730fa902f047ad08f8b33701f8bb8f00fcfd01685e617f4aad01f067ef7d1af87baf00f8f30880bf55fe009d813f6a3dfcd93b00fcdd1700fe3e041afcadb2e41200212cd409bd1000843208f85be5191467f8d30ff047ad0cfcd97bffbd14febc8bbfd53c8a33fc29bd1ee0efbe0cfedef3e6d1ca8da2cdb532e16ff57f49f8bbf6fa31cafe911529b5f6de7fee3f8fc335f98b2c2c476cfd50201b74857ec8cb217522a553ea4ca933a54e0e39745d43d7d035740d5d43d750f697392497680331c905935c30c905935c30c925c71c3388523a83e80ca23388cea0ecdf798e79b45a79deffbdd6669de3fa89945a7befbfe769d70fcd48f1b35c3b0a6bd07eda5980aea20318a0b2724481930c5b4c7e0890618b4950962e401bca8a3376208eec8d181a5281100f412600aa21c71f1872a41027cb19c658b1a6c6f3feef85b1a55242eec419f15530b0df66c4328a4fa9b5f7fe7b1e8c5f2cfa3623a2cc8a363711a3ac2872242153b56ca4f95b2271654d2936ffcd3b5513563eecc8e1c89f9e7bd77beead56d2ebe428b05dd794f2e23e4c0636319c1b399c98310ea7610d49391d1318b2028c3356a071c6ccd86f57ddb0aa6915e370ae8cfd46ebb665b556ad721cce56e76fb53d4299c9b85bad1c8ee570300e87c3a119fb2d835947392fcc3312f638f372ce0338305f50d5848d4ffb6281bc1ea16ca0777951ad76430869d0ddee5ba494735a816118a55c344ddbb616caf0b3e0388e44dac25a6b3275e9ee7e2843610dff56132bad265e5a4dbe90f962531de18466d86ac2a4d5e448ab890cd9bfb69aec08f19261864c76b6df36fa5757b38fdddc341c5f7e590e0a3f4aeec5122e3875c8fe606c6293df5de32fcbb071961cbf8d7a68e5f8d4879d1cbf7bf092c20f2ccb80353c8b8fc9a888b0dfe7fc349f8cec316219d83dfb7aac217d9ad18f5c0934ce87dda7e589bffeac8412fae5635c095c09fdcfe9a03d0c7190da88e5c4baa6c9b3937149321891eb7a2d28682b9a6264c5e668aff5e8a9fda555123c3bd78307c528fd497f7e4c22432845e6ccefd12d3c439f04cf9e29fd8beefc70898f0d65ec2916d8d378994e26938da9321c094d94316ac33feb724c5c8ff8d452cbf1b8e68cf6f421099eb1df3cdf44ac5e9a15037654e0041f1f18c23a92a573f5a76634469df62106bfebb91e91b6727cecb1d778d81ef127a62e1bc6496aa29f256072ff91a09ebc41ae07fccbe967ff75ced9e70c7ffe580929c487b006901f58f6ebfb3d05ad253dad1db6c4165c5ba95faa9cd8f8d073b0570561e5b7dcae4efbacfb51ba346c02f697ec308472fc08c4cafd978e950c4286ad1d9ee4cefe6b8dd3d16d1bd6a84fafefae3e851566dd97bd7c1919c8cddc0391b9fea78428c7bfb5650c611ba7f417f7b583b006e9b14e7bba3dd6c1524793499f91d0ffcd0c851464c6b3fb2be1faebc25ef541cbe6f4f7e478f45f18c6873858fce64800d234544eec8f526eea828d28f7b79208e57e9fad834685ddc1afe137798420714ef77ba21ea8b46df755b9642403000000f315000028100a86432281481a4539320d3f14000e819e446e5019cea4248741c818638c4104180280101180191919190e008243b78bc04bf04bc79f73558e85ce0d1d8a73aeb65c073b54de2eea5b26dd7adde5fdf77edee69fe820a0aec5e24a1724a0e8a21cf97395392173d045c58fd589a395f2d180cb711dab4ba7e0984f7a9e5172798777d00174b2f2be25d8996d022121b69614248048005d97da3e6c51d31ef1e0c6936abbd9f1bb9f2e390410336c5c24454eb1899a0514bf477ea385f174e69264e7e472b44bbac99b1d63696ac2542b4675dab29a51ffc428b0c308fa0905c944ec26f5e03a41011487596ba94c2045714010c141ff9ee9011ff545e9ac66a42ac53ea9bc561a52867c24703c0f0302b45e1b75cd2365460c3056faa8ce6bac0ef6fe7e83bd3cba3437d4a5728ce823c6778bd81ad883b9e7d502f1545f54e01ca8b4da96a596922cfd06c2f2fbc50759babf96f31f0748336a4416e536754805d35c7d4a41b88d940fc0a5d1ec6e3abc07534dae2992b84dcffdc154213ca56da1464a0d3a43a3f71fd617d2608a5ab1d37bb87326357c527cea7290006cf704a85c1523efd3bd4df96fc809a639ac587da51ae9ed20c2862c0ea096ffb980309f7d348cc9d3bcbabca4e5175a8a0aedc32426999401976251faf6250dd6dfcb46a97aa6727f9adf3d70acde8be52ff5ab2abd0b956089bd37abf7b1c5aba32311ef63f1deecc9d5c7640bf55d44bf9be57753964e525a0b354eb0af7188875083772dabdf65f5cb0a96e28a5cf48bf69de63e3f3713628e203dcdc61e0cdf3980ee26991cbc6a56a59ba01f057fc140f543971b386ff738fb0350367e399cfaf0e54b56bcf2340062384e3d0251eabf2612459dde672485ad59e65ea2505f1322c495b522e208db2da70a8b755697d4008ad5205415e00135bc6dfaff34a5ac0ed989201063ec8a82c93647cf850e5299502251bbcdd92fa6a92902bd3bc697641e96df5b850c967e164290d0cbc7987499920c99b3d1617aa6c2f0e11a5a84e204305b17c0589e14f2c124f10c2be787e917499c413aa9967bf1b956fd889e3b9acbd54a3191e02e2dde8366e7dda0393f79850d8f1b089e83bee406f50e990e5e903d06a5d2d9f6ed735d56dd1fb246afcc92fdeded75b41b1eb2412bae0ec5582a2f2f471c518906a9a0313f3f3b4339b61f11a85e593bc39326a5486f78a92e51706085b79244aab9f307b990fe600b1aab02a7f4011de927a7e1de68c40c50ba3123bfdbdedc0b5fae555e49397f8b254f33ce9fb256e914384390eda3aedfe6645c089c62c37cb21b9570c767cb21109a4f98559df54e6e1dcf3819a32c73020a83d6e783470f447e07a1ed9f612f87556dfe59106ea0a8c8d7eaeb4b2b3d3f4490d3b1802d25263b8734334b7c40860a114adc2a87d7f898daa3503c464b4c31ba28979c7ffc1f55d20935b4c089ec0ca511455c44108368a4a82719454e275bc92bb22f4cbcc968e432f9485691b985828aa5964034187d45f8bc661b41e7f976bd7b93a67408f6c532af33b0863279c153999c27f0570ce2df16e5ac812ac9c62f8c406c18705975c53a7d499d079854fa315ed2ab94449be6b3709446527c032bcd9c5c3e4db13372daeadf4ad64886c329fd61f683264a9d3055b6ca4af284bb248358653d207303d5bc02e43a796b21fc0ddde8f6ab70354194cbf1a84ffb327972f5edc00112c8b04b10ee7cbe838f0c10c77ca25679867349f8c5bd4828f2d0b4618bbe36cf6b6e6557515e14dc48920748a972310b075388ee377371046cd749a181faf28830fa6a9706c0ed3ebad4aa7113e780a28296f722f28976345397aafa983a83f56b98a021d1fdd3c7d1606b44356f9a773180917d6a9cca26b06380aa25479e38224f4d010508f642b34a9b00fbba1b5a2f3a33ded94909ea1f82d64bf36d8b46eb9518dc26d37a7adef621b53efbaa3d4e8eb61968de9099d1a2dbad614b68bc6ebea55937bbfbf16620bdf1dea26f227bfc017272706061bb7769c687c71a33ba8a2ebe6705f7ec486063f0dca4b78462cfcdf8aee7f2a420bfd9bccf67e7fe57962c32ebe762501f865118f09851b6181cdcd3ce2cbf820c69673a920af3ab2cc53cdf79f72b5097ae85eaa2372a0d0bdd89e1b0360e13d95144d716e5a9812aeb2a8cda9b97c1803087e6e505a6276ba528ea4cb002dde57b865edca26da65bbda2c987b5b0895702315f2f3c1c7d47f4ae7d30ea08624e8dbb5131006861c9b380e2e458d54d81fa1a3aab2e1d70add25f44386e5380af0ad06313891f6fe53aa8f5aa3034c13f11916b4b0ba323f6680b7e2f076a1334c15f24a3daf25077a783086c1d3ce6f1041811b8c74a097d1e68800b432e4f8e99ba197cc78ec527b92ef8b2d3d61b2e228e8495caef28386f6a92408a1b08271832c8b64e12b6048ea88d9294fdaca6d8c6548ebd4e3062af4a1a1787176dad37d8c4d5ac72dbcbd0e9a332852461d04995957f8b7f024995e596547917234b89efa104e0dde56fa9c3dfee0fe66fd9a1da1d2efbb75ceffe2d95ec1cf2c6dede376080344f3514fe2d753630f4d84e5e9ca4b70e80cbe858c3bcbbb50f502539dba19fc7a11b152df8677b685f45ab8fcbfe96ef2e88fdc4b94d2965a83e54a512e234ee3494a91aefa839ec881b2f45ba002e036a781bc0d05f75958be5375db6be3d8cb2bf3ed9fa6bbe6188125885935adb1d089b9a0d01450d2e20d9e0208b4af14b9223ba0340b22d5d8e72efdc60e93b97d32c467df6641a902652b992da134051cd7f2ce9cd9c26d8ca91b41af6db7b1ee560bd5a28fb88fcad31aeb588cbc61b88c0a428fb098fee51e3096eb372cc412300e831bfda9677081cc6ea3126782ee564640dbb3c782ea364d01abefd7b9828ed79cf80cf261cdab764c81900947f42fc2338fcd35d44d45f5e5b9493497e1a58e7da3483b3b7edcaa4d8b033497061752371859543fa042b8164db8a1852229ecb88bd10f08874c7d18942f6e126cf536d2c273ada7399b5cc751b7cc9645ae29b41c35fa75316156dadf35cee05f5619ce7b22c25cfd44806b9102bb7dbc3fc9484319ab814655714f0eec3b47cf43a614c782e5f63ef83631135fb2be0d5076a1e3d5c7c713a900f40262e3f7b2f23e91cf5eadaa3930a25332e9ca6eb161c604d3a03071f111307c55a53d1fff7c004691a593c44e5245ef5220547f0ac46dcebe0338749677d011cd70d40b64197285ec7d65715a9227525b64ef70fdf78e053d35b79491e29045141330652e615d38ecfc940c8a4e01113652a857c750f8eec1f3283372772bb9f04292120020b4279ace9b3f81e7ebae0d7b7e0e5cdc0648aa2bb231605fff4d40522ef3b69570880fa0ad965f706880e9345043ce65c081e7b20e22d037d2d0b6ee20008ed374a16c04ddd220a703ece324bafa218ded5970fd80cb449689a50f48036dcff122e428cb3ba31e179bd95c921124c87ae53d410860d32904b9ab01110d27ed03389cc1485284ec5549fcd7973bc691d6e664c09033b0bdc2c9d5485f7cacaf22ea225f2ba1add85ebd2e017b7de68dd7b4fe7801f9bccd44fbbd790a8449cf2e98ae317bfaa6ad5f3fe3da4ad83cb5674e1cf817e7d8637fe12d5804d160996e0f64ab3165d142d8159ff3463cdc74cebec82b728fef32b43ac1dfc4598de76fd61d60f9c1f91fa11f03dcb4b62d29cc4a6a2a4121ff0b5be2e366d9ebd38266316e26599dcad32dd02d3545203c1554d5ee24a70a7c033c4a0c5c7dd18e057c0e134173126d0e0b0e4e615de115c5e727987d5d5926246e3124da6918c8426668b6e776ed467297fa9416432e83f19e619ed19bd1bbcf3ef2c94288a906efb9c114639cb63567186cee75b93d2f5832de190ce8d6491f955c7cd9b94957ca9ba887044e21a5f51b7d7de25386b5ddaec8690398dd26007a173c7c51a6cfae3c83494ed149de88a23e894200757d5b383351073cb169f00ab1380eb898bb2fe0234845e604b4ebaaa087c238106f232de44b9f03007493ce488278f39cdf0175c21aa678ae1bab604d261b8c9eb7fbf22a3f53d9bdedc244b5ed0de190a0ea43263c35dc37982fcc422910a09970e0cbe97eb186404de33e10234bf0e4ee2c2103fbbe0aeac39ca3ae4780f038c1ccaf8380240031b6ef60b9fdc47a2bf2969a9b1fa3f30c240280fb7f4c2599992f6979f962f60dfe56ebf3a9bf77a44bfaf7b207941fbe836b29e7303a4ca568e19ad625133cb2bff7d1ddda350949c5a90cad61871ccb5a94163c6e4af8304ea7ebd34a259efe64ca36d5ce3357a23df86a38b518be7805e491bb4cf19f78cd42a93427e9f7b4a71522d0695d742f7325862f390df99f0db03073173a9c85d2447f10414caff4d716917dc1d13cba0f9664362bf2e5cb90c6f4ad0dc56fb650233e983d619f6b1c2d4cabe4d99d849b44b262a0b38009dcd1e7748adec6f022a730fd6f03bb39cb9634358a5ecda14dc6fa952cef4578d0472a65fda81cae560f32a6111b16c32ab2664d25d2a49a2d4c105cdab71669cc11a6c538f9041b075469267fbece632c074d25e50330555a5f9cd5e89f3f6c579903d158313eafe028da37a45a64c96dfd69d0538a67b38e9a0e4eab4494ba1f1e29dba8946fc399d4e4e9928dc0a220eba2800b6a669d720298a5ae0238d2f2686c127a0ca8312a060b54580ec7357c25fb914fb777f975a00ea90d2d818cd41a4c558b4dd99a891a90bd46c029aa28343f1324b25b8daa1a63186e8abcee49cc99d043592f6f0553582ce620067552d80e7cc4e5b3400c7fde1cb2c712184e3f3134b86bc4fc0e2c95775af748217dfe73d0628ed586b181474cee24ea044e2f3431ade23a64b7ea0372316a56e6236847d973f0c5d3a23ce48da9a774cdf490fa02757126fe406dda5ec058a8f93992d2ff1f61f62c5d492af763e620784139bdc100041db40953a5be1216fe84ffd0151d1d25c5daf330f36192d4ec6826ff482954b5a8b2af65f032cfca3dc497719a75b7aedc6917e289cee7afb521bc3363be1974c701d3686cebfdb28254451a5159afd3d707650cf99ab47f573c61000929642dc18daf57f2d4ef8e0ab3a4a9b67d593435cc684aa577d960ef49490a0ec91034a1432b203a602990c0a6b6a20a4e107fe20c0649e245bd37e26867d0f0cbcf26da2ab197287c09ab5066ac49b5d82560dbfd604980f118d9e3f1e7fea8520f3d32db79daa1ade4efeba2365129777946ef70b51818fdd40073c44dca2efe8f0178b466ded125314dc985a3da3f3c5cf995585170e2f7c3161af4a063ced6636d5ac6fdfd781cf7c21000f9dbc24d4853c4d3bb3a6bb67916bdb1441b8a0dfc390db8ca4151c4e54203d77e58b7e5af490cae5fd16e76e28070f511ced4566b2f4edc08241d5ced438856174cda6029a12659ddabb5dacca5f93f92fbd125384def55f2120aca7df2731d2d596ca92a41f7a12dd265e8fe3230b3f1b4aabb2f1f1ab5f194e0d82c7c5dd1ed521f212650aa5c65f9da815e903711fa7145dd1b0f54a63121f3e9d78936eeb174b1838e6ba52b7b86a345e9abf67817ef303d5e030e35b2365a4e9a016a2f079309236e565f94e39209d6c2fb03c7d4ac9d7ef551bf8d9b1c4fa04b8aae05d2f8807aec18fc7138e1aa4c6446a570dbc9509ed66112e72d5ce29eb80b75bddfa3d7527ccf284453284cdf5fe640a36a5adbb5e366fa367198ac936e1ad4013d04c739bf4924c9e060397630d28439d92a000b522bfd14eeeda7bb26266f1bd098ee6b540cb42e561c38cf862b0b34737623147baa27b38d6c18f48d7d11b1aa31df2fdfa19e3bcfca48601b5ed9cfed6a3adb9883e68ab7816bb34f7bed58f119372786019d1834740ff4c2b1f73a8399c6ab01fcc02cd5a74a1275b51baffc9d132a5ea53bb94406613af357999fbb702a284d1b6f622101b76ccac0b016872811bc1432ef1d1b7269748702f2e1fbd5314bd659be47b2ee9d7595b85184322447218bc50f3e5bafb22c98a10a2083ad223135dce9e61c85e28ea9e0a2731f9b7892edb80405a84a8362793ee0714ba69a52431754bf05a80f9628f220941764fc33afa1528d4e66981da36c3d22739b98b596cfae32cc8153ef0784f29b03ec4d2a0fb921e7c44852c5c0c044152ef5cf1f8b141bab659f97ba997c136429a623ca33613befdf6dcf556a7928552e14335532b92fbe0009d891279f1e814692acd92457aaf2942d519566706c1624ca7b8aef8ac106fe1c56856df7dfe5ee7d2853c579b6c36e27e10811cd15960d0c06aceb0931ee0d17494dd19e3140daef98f692f7e803cf5268d7bbc052bebeec9cae4c5b8eb23b03acb889634647e89a18797f16375dbdfe5a863637e6c300a64c1583e0d58749585b3b6c94ada48649b4c14250e08e82a187d1c4a64c46c264beb00f8fc1b9a7419b50801abdb14f10d893e7cfe641155e40ac1917188eb349b37b74829f2658105df2606ea39d888468fa60fc6f26e34f8b2afb28dac02925ee939d226be345d4bbbd28dab92c8628a0e7c0fbd45201d22a8e9cbeac60404175a27c45e7dbcc667eb519501b8e0dbf83da2ac3485d5e5a7bfe2a329c9d28bb904b5e649694b13a4cddd87385a979c2c28664ec2079e6809bf86e45c4bcbd6fe5ce1104920f740a04a5b5ae0090808c785afe87277c1ec85f718bb058fdb39d89209d23dbb885f5dcfa3e4353449874e5b8fc5fe7b31445389aece5b8a02bc8a1f5f8de09485c590515a9fbad81c18bfdae933510bb3596edeb65a4d4ba8d2cd2f3ba407e0aee84afd32029f30593bc1224e9237c04766c5f06e1fb63f7c8bcd76a75f2f313205ac58ddc27f33f3d9aeaccf2362555bbaaf918af1233682ef6513b224084a83108944289b505d87cbab9508b3ff97f7014338bf905590bf1f58ce4d3c7562e27d15d5b4698ee5bd0caf5687314fabd2abf282eff6c045af4f96edfd2d3c8b80116175694ca36ad59f4a4aa00914ecd9313056c8f074be03bb00afd72dd1cb457f1f396e5bf78feadbeea9e01c9f80a79146f88ad4debc05b04cff63d8ad80481f594195c255be87bc0647a9ef1b1297f287ac4e93aa7cd852c84ce04cf265bf06a132f8d38f7177a98ccf9133a51c01e0cf76b4241600f3782e2d86fac3f19de293f484ce789543c041e888094006fe118b4aa9528b06ff172e23aafc5345b2f66d18eb8d3e792e8f7755068636d568f2769ccd8cb0011e425345c92897858632670a8dc3f2372742880e21d2ab511ceef51045cb375d065a3844d45ca19362fd58de1df8bf875c18729c3488804a160d0cbb516229d0b73b20e2c20384f3a5aeab218db8083e4fb5f6ed8d9128103ec52b3a566be5b36772a74f927f2644aa63bc00059787ddbae9a6446855af44305791b119ab823bb11126d30fd3df74e67f621b334a9a4d3278f46ea6e6fa7e3627a58d92e8330f839672a9416ba0e6703c94b23862606746b35dbd389ff0373060b0f34285568b4223cb09a91fd8e750c6e60f5ced859920612647b98378261ea42f0b0293c749a32886cb18f9c7c625511bc23188586dbc9230027fb95089c9699b3aaf3b11b2ace297e4f4d1fa61a475f76b1b2011d9c5dcf445c90293d1264e5af843ef6bcc023bd90da189976b4362d5325ebe9e75b61a072756c7d67c5b63f1c58cfe340167b4530a4d9a49b67429833902723e38a020a5e79cc0ba281b474b360c6200551805817ca13278cb5b5db2fd7b2369d52b722240b1c758cd3c584fcd92552a1a21805056b65f8548cdc546e9235d155ec1466134046180a69a1181c26e4b978b0c5c83623f9597de9279a543c79db847ad581d0ef28ef940663a52f9dadc11480a8154f2ff452274eaee1629e823848f82525f3e0c4e435622d04d8217777146d8f2a078aef275444a351f140bce6bb8048b1bf0b6c0d5d8103c0765afb41227061697cf75cf39f207e9348ae66b0b29d865474b6e1a70ab036e936940c3ef336f1de2eebab29ecc5e16de8f48ec2e78b3619e91a33200c67bd704af9a6664c9e804e6033998180787ddaaff2bf422ceca5858879248fb4474ff7003687099553b989581e822e806e83962d556172834507f4eda08ca7162d1a1401bc2d6c2b0063c432816c01b23a837f0629b7731e02e56bea20b55a804ee65d5c1e81eddc5402cd7f69d3742b5047b562f47bf345fa6ce6b1b71591076910bfb5abd8be270c23a52d0346744e44083effd3b1841da849822c59d877c8712c09c6114c93dc6eba764cf26c7dd76d315024487714d43b836dfa8ce1cac857a8e57988679d0b4a7f3e6bc27d7bbaa7b57f58193854ecc65b4a2fbb22824bca09086bf4b94f42695fa2a158a1a3976cab612f9712221dceaf9c17cfbc312f35f9123560bccdf9a970f4674a0328aaf312879ffb4348515637062252c52bccff086761a55cbe6a1b1ab27209df865013451d6edf9ab8be5e640a8d12464b1c72eab1ef8082beef8658b09ccef11b7921b64dd9fbf6ef143be5537d88655e238818a9b1a97f28d74251c821716097460ec33f2a3d08c41198314d12e977905ab62bd96707d6f3af04542c8b56bf76eb4afe2f9d4923f0fa160888c5554dedef004f5dff7cf9af691fd3be5198c049ad4d15a1866d4b0af5c57a9e63c287a4753974bc83c7db1abcd3a08950a1a462c5c9a0ad9951d2816e7d0314c9b4a293a7b743e14f9035c379fdc2b8d7b9e640a762cf8bc12a2969663cbf3bf3fa4fb90ab632f26bffc27b910f5e64ae0a512f4127e995608dfc929becc2b077a32210a77422f195b91bbdf46bd726b07925bf770c6ee65931bbc8f4d5b59678e1c5e75d4045ff91d83e640c596a936a055c094f1fef745dfd7e1527f38697a6dc45137d6aef19d2f6fd03c9f190143a2911a882dddd88eb4f4627e8f02e438386ec4122cf07836970f09d58fe4012be673634d64de60550883668d879704c250afc69278e6c6a004b2529b1bdbd25a424ea4a38c6577fb03c113cc8db53d3f80d06285ba8fff01e0d062a14003dcfd2404c76acffe47a91518823e3c3754e0cf6cb2c815bf4f84ebf8c68fcf25727189b1e6b008805c21b83809ba7a450fd3ac7ca5371283d8fea51f778b69e91f15c9b144ce02b9f0971d9a5b4fd67970e957e98c52effa257a0caa349c862bcbb99583b04e49e7c14f8aa974afc4064f2eab017869260bcefed0d02108699a8e33e417a6519b878e6c0aff9d67df5c0b649fdf2127c33ba20616c001382cc675c305722339f3434a54acb0630c55408303c675341dce3a60bcff0b75f9831305c055ab8aa3bc8f147ca02589385558ce6a98ba00e3e357545db7d2ce3992327daa224ed0ee15c42b22eef174d49a0ae2c3f600155a0890502d4339a74a5822a4949e9d52c21851934c34f97bbece4558e8c4c74acc05a5216d2bf765bf4e55c46df6eb5d29b8495a81bbaba5142a457d90dbd848bb5eecde5532a62bb347aab89e24e3d855a6df5b341543f120f8c69c5fbc145f1d1ada0a8963742d41b149e92934bcbb89e2555d850e3a21b02a629c8e51e5b750d9307bc4c723dd065454e50c9bdccf8c75dae6e186538ae0d8975538ba2efe839d631f97a5324e57a27af50ea2208cd657f6c5ba50223d3d69a58a51a0dc5c6330fd817630bd198fe7478f85468d955f51a39658c06b778e164a38a914adb7babb5f638f9e31b69c3701735cbd357a70f9e47ef390494a461c04184e69c6057abb955bbabc3751be36de8b40f22f58877aea326e760eefce6d393243c9c82d67b910e361e79c6da225d255b897fdf619746a214d338fa18a0e53b1746be496aeae114d78b3e2fd4d3b23b874286d2068025fbf69588e991b8a91acd1d458bbfafc5bdcf2d657ecb3d9d42bcf9f0011e1f8d7a418e70333fbb6359ec247d6e196aef6d61b6512ca216ec52733e1344296f4882e274f4339dc7c29d60d8310683068b76bb7387a378c4d2420ed5deb23ad1f8167d94e5643a4e60b2cd8ba9b3997c052046fdf63b008a2c4f2c4faef551acf0c4e06cb510cb146237a65d938316f079794e3254cead3eb95f53974e5315f289ed90fef3033ac66c6db7e20908f19627f97c8b0fb09c6aeacf1ea1fddb00089b3d994135713ed13434dbc64202a490081d15ddabf64e9f8bf38f3bb0bcc0d80c2021690f57505f06ed90ef0cd8d5a83d3336d1534b2cbc5d5c51e65c973a747773277e739db9eefdd0923cf14542915d3aead82542dc06e93d8df88e93980734bad978ec9b80855807caaa928882a09c2f033f235a3c53ffe03be966ef3d89d676f376742e68f8df8f18db046438b874dcd319742c0b2e7c50a735f5647521807b691843b03f45a864a0a4434cb0662b8ba8a7ae0ac87de59d17ab9806f3cca42168454bc6af4584c3c3c76abddf0e5d356d5a1b124e27ed1084d158aa7b2c5c69b9d97c15fa0eea7b3bd89eb0953aa090bb66d819d95be19b2d4b5bcb0fb1f3944b8f130d609dbdc5e81f8be095665bf4af1fd7b51e2b84e5671843ee582403b588627311b997499375750212cc1f12adf78946aa7229f849286b1dc020057be002842ed918781d73d57347b34e5762f792676774a6c2112ad6ded6f189314b51549952327df87ee08f4704d207c85f20145be076e599c16eb34b78ae56182a6d1703e987c7e0cdd56819ea62377e740b884bc7becc1aa2c4dc2711ec19feaab98cdf7c575df95e5bbfc49d653a1d6d02cc7e25185190600620a43aa4488fc4e6aa5d7310385b879d6234936806feef9de094a040cbaf74e6b673851661950aef462d57fd095eeffb56ad99ee0e8a644b826840f8a9f56da08867356eef9741269d562e2c5edfcd1bc0a26afa2e0531199f6b46fe868812bc349d6a3854fa237c361d89117f937f9cd27ec78434ef6c930db8ab81e51486402221f4529cea234ff803fe6333e3d3b77e543000a0be3a2601faaf758c2342302079a527e29a999a92e59547e1d0574994ca4ee81e6da4401b7b3d0c381aaf6487d694618f19e52ced5f81dc6f059f1442b81b3a0d27227237a411beace82479662bfcf3685d701a3129b179db3b0ec9f89ac08ab7ca89185cbc5bc1487f65ce7c55f19208ac7d34f72ebb58710d20906de980a1e57319e7cb2b8dc2aa8ff89e50e3a7c433ac9911f4a6f698525d1676009cede0beddacd300633bda1d39ab7a71f413c59deb843d7f62c81d17a2670ce53a6005687913ce11da81e958eddeb8de6a8932506d151b26c5be449f06dac4a6607da3764fd1b747b0c45b3df653ed0341475ae6e6fe81ed4ed9111d9b60d936eccbc1bf556ef76750df458d63bbfc648ddc637c626980f6c368043d17ea1ae46bba1bf764b1d7b7c33cfc42534127b8926b45a828642291b9189620a1ba9682b3a43d9ec46eb86182d24e17f47da7325189f684427a8676a19c5b79e153544019461631519701b7e0bb405df7b17e1b9ebfe241121d155132444e2cc9c561a3acc72f924e7176bbbab8d34ed48b29eac15a207eba82b2074c262688beac34840eab4c6af0524bbaf059b203daaa16f6f95794d324ced212938ed035afff8f1e9ef1c54ea2a7aa74e0bb956b59929a9e824a8f281bdd00ce183db7cd72713dc05aa67801ccb18584fbcfbb69676c0b1c03b9124a188d4ef36dd8e5c8054017add09917a0eade2abe022585fc72e664c9fc084b1d6d5c1ec45d0187f4c4ec4537e171d1537444a731d62cabe1c64466f5da5f164503c584f396e6251caf20501581e92a2b57f30f275d753ee9a0d3b0bd549545cbec10d46be63fb8f3a408583bd10b53db21273353557e27c58b145e010e5d4c9e7dc82cb2b12a2ae11e5b7f0ebfb91ba06acb9856243108c244b2f2f1a81b6af961f96de0c0dca678a729348f13b12d159098d3701ddefc73166bdc3eec6170e62e3d2989d8365a3396367d30626880d642666a016bc7f90f278d7588f303608aa2a58543e9c68c4fa91ea9f173306cf0e14c813b0d98db3a0b14fc531753df9e709b3465ed8c8d6930e76241d46fddcc2861d75c5bc6ec07f21f75def3502faf30e261d2fe6f092c5de6f0ec983a5074b01fd2cccf1dd450a19ab50c92a43b5657b72808086b79585a3aea07cc341c88b17cabdfa47f547c4328c941d578efb661f8c65ce6eb4f01b9be278182c62e5765ea0887bc448ced3896536511b1be4bfcc60e578e80737ea2e0a2f8b83148bb98881bdc9a3c6da904363f1e06834c92f4e6c084ae392a5eb0aa78ed7568360d4b137d1e52e72f76b23e161f7013c1d683ed7c60993f2ea403f0b220f593f0712361203aba4745f0faf960882039bdf9a1d82fb2af041bc4ca14fccbcc64fe867d3f2d832c4a3801cd182ece7145b203c602a09e4579353d8a84bc22a630ec402dbdcfe086320cbe3791ae86fafd4bedf53d148cfd7149c208c57937e8b26ce8db3ac4117bd4a94f2cd1f52561eb15ed655cac198090c31ac19c70bd12290a5367ea1729bb277498043016e6701417030f6765282ef292b784b9fc5f1de3bd0061d3484427fce52c9ebebbff1798bf1c5413474fc1b242fbb92964d7d49dc95a054f34925a9d319ae03ec4f7d39b6db8d20b8d74dee8ed956bf688b6ea528dba377fe7cd2663106e4fc2313e27579f41e975b76974799a1d2c4d48c0f9da34e5958d86e68797bfa5cf2c9deee1dfa03f483ec6f0b3ba340740e500078e1e5aadd53d48aeda5ae0698135a8c100c194f02a980a53804d6467a9e24194369e84636a86c16729adbd5754de134540dcb991b6905cc65f538de69b51214b75d71c2378c00e430909018914cc44fb79a0c5565a49ed375688664c06a570a24c907f479084be888cfa625d13b849c86ac6b1547f0af0ace353f28291956be40b0c0debb3837a8b151546ef49134a20d4e4f3d48970ac768305b8741b92c9b3e94907cbb1ecf63336174cccd5a26dd78808e32f7b015a02cfad3bc9ebcfa849f566788396c6ff7ca83cbff7532af8b6263b757cec449348939da24a5a955f4a2b9816f76b320f5bf0b46a71519475c7f17a68e71031fe3fa805edb3f3794aa279938ab34e29311bdca316e3aa9c705d6a1b4bdbed9fa6b922aa12ddf6db4b9756f055521c01c42977894cc6002ca84ca7b20a5f5562fb2d97a889e7b30154e2c2526ea330baffd87d69501269fad58da2fc3b453e373beb9b8cfa94e82278f38c303abe9ce6785e271acc73d1138895604dcfc6a2f9686b1854352856097a5ddfaba77838c8bdf35a81a6e6c7359ca870c7bd171d657f7e81d35381c8d3da73589b48bc6a8f24f0512470e51970fdafaf075a8a3743f08940e84562f8d24983c504a6d1bb6ae27c5ff3a0dde5666c26c05651308038dea4c06f4c3956ddc74a5c455a402c1a2d5973fab19c008f7975792bc85e7baf4fd2b5310b1a02367d84136f7af1accb94fcce6bbf7e761beb8341e64c1ac8e31faa782b61b285282a7cda76663cd72928c5e16785ae52e57ef80ea05e618df81659eabc3c86107829471b08811d90b00d172f35842f42f8588924d9f62f4597c641fefd53231516ede30130c1f6149d62f879bb549336201bd93d36dd5327f9d04f9802a4862919711bdbeedf475034ce0e06d1101300f8170669edbbd9d7c17ffa001dd1f3c8768777321eef3447be7e5622710d888999e8035f6f499d1bbf8fb1e40bb7458792e1b6981504711b65025502a23a67c62e8be213efebcfa3ca29943f771f17f8c7dd6b6ae6a2f2a0a4e86ebece35f62fb45e8907a448110c1ae53d9626cda2268aa2b51e8322177e18d6b4f9ea6dc6eb9b2261c94b6f9cc7a85a04d4e78bc7b84d764e093bc843315b9b945fa0db81d1447dd3db50f01294138209c445eae4c6a0b81ab24a21a3a914436c4048909d026d462f71cd04a92adc9d74ec42670d60a69bbc8129db56d9314271fc8cffe09e4488d66d11b1e7b9a579a4d89725dd88ce375931096a05a0d64501c8b16d176055b6293482413de0727a571550bd48489b76f6eb9b59398376656f2c81e9a439a0c522f8d87d3f5c6a092f565004a18fc6d6d29b49e8d305d5ffca0424511e16f85abb6dc1be9fb21c34aef5013a668eba15d56dd5d0b3353dfb34ddf3e4b0342aac33bb51aa0d920a2ee2a22f2716edc714d493ebd0b04b80e952005518a4ae662d5ae06cc53390ba16eed3f5596dcfc66fc329934561b6644600e87ed442a420ff12a4f42f3b17767fe61d7f8ae202c4431a2a7442c2ac2c70cbbcd5dde8914d274007aae806aaefe21f1d6da0e74f3dbfcd08ef737ff32469f4c13d575d02e928a9a843b95282a7c459f35bfc54a7c9449431a49936f575f55fc60b0ad8d16095afc2561aa0ddec0141d8ded5602c3b0d692b57ccd152d50e5c9a22ee2cd562801ed45c7897abddde1024e36dfcf8dbc24b189689da770a2949e9dbb07f76e174ac719aba6c2be32bc7f7a81c82fa592dd278fc2458f261cf618de1fc5d19b5aee43d1bf3f7d4c0bbd29e405ee1805c6ed6646f30f98e19da319fc0986b56f2fe9916c9055a6fb8328ac20147a37b8088c1a3aabb53e507f74914020ff7c6ac13d6a01cadc27959c344ef4cf9bc5e7617ad34722c013c9a1796180a0e6184b253e08969712e36e5d08249fc28e7bd7df48184fa8f94cc3e30be08f283daf0b09835340f15540f622d453f5858e428949183d129765170868ff534732244cfbd2aebe95669a2c1e1e5b28c7e06e0bc1c5a64fee8a412a76ebb1cf7cceea917be3105bfeb4876a72d679ad9de826c3de8fb584ab0c0db9b43b152eb9810bb45810dd30d7db1214a40a6dc5069371e103320f256603319d7aa290c4168b67982b47ea0dbaf99b45bcfcb722e37501af24f1cc470a495a6d34c9cd5f23c976880cdea73c818c0d9a373a2b076714643b5e51a86afec8eb04a427bae06996f7273f62b226b5c9b74360aa47049fea38d9fdc0ca6d85a61b9e0be433d4535bb2f4914cb2a83e3e4180966e422258fee5e43cc263b57aad16f13ef46287be140940cc4101570cd4cdecd9214202902c1a3fce7a8952cf0b12eee531e05a4ec3605e55f64696076c22232de3d013c25f6e77b670943178769376d1ed1612fff1cadd8f748d7a2a76c9640ed0c7e25ecddba77d54a0f8732492cae37e0988216b077655246ac25ee432f5672800c3e561a61bfdc4563f257250d5c9980a87ddb4e0b7e0499187790aed7eacfafc9b4f833c6ff89f8b456fcde5a2e8de664b58369132d95120210c14253918484ca4b3fe3fd63461b78e9f5251dd2e5976598e3be1f40824426a46a472ce8883e6c742793c068b4bbbf3e39502539104fc4d5b77f7eb2db70219140f88a86edc379f5d16666d098848e4470154c0827fcf821afb2f98ce28cd4c606cd8af4313b147c3a1a333f053847aa4e1f4b6fb7532924a4c23f2ae0292310b0224def42ca9b399304783a167856399c980d08ef602c0fbaaec8b79bf37623c3fb339957811cf0f03ddb1f0f9cd4c170357d93f6b1708a5440baa0219c09d9b4b246b9cb0f704181ba6c14b1310b9b9b4fc2ac893a4063ec5ac952b49465830545e3dcc407303823b6457b6451e8294528699428e32a6e051b99d089fc4b59b170b61b80fe4e72a56191d71e3b626e5490be819724b8225aea4d0f360f97173b73ac565e1841e727c9fdb24693649ea1ae96abdd9baa24af0af336f3df8a5eb6608aae84fd2a4720b511a0ff83b320cada94e4af528f6b9cd83fa859c89f6b04fc21bc2d14c2ca3834eec3b5e4db1811c25bf787a4d7960e88933d4cc0e21ca46a4c7173ef4a43d733ff880438fffd2a351ec57339f2fad0c14cd4b1b807d3409826068ca7b0d0ab7bc8591141d90452827023597125bcb971d557f1fcdee3a51df00241a0283d7268edcd8ad00650264e7e0a9806d5bd00cee071d295c7312be1e9b8700a09421b10101c6cd1d4357bd227643d622402304a8e52032a020b0e82d0c33ba4e36985616b156efeb910b07d4941c1a66d07951b0fa4077aff0cd92604188c38c4c59277fcf297e8030f67c84b9cd4d518719957c843f3d3ca670e2650584e128ce73f0ecb03b5e60aa68131abadda2e54c4b3f24ba9acb592993469049205a0d581f2ba51926f1c9fff99892d592b3ffec4cc6903d71e96ded455fa28037123998810f53871e373f2d0657b0367827c5048c886436e5322bd3f6051d6005dbf6e14a3d246684dd15ae644a56a269fc282c673b98106865cbae473755e26a4d08e4502d1a3826e566621574cdb9275677a4f42c0e32429c03d54a1596654b6cbe9d41e5c393fc666bed860351ded703a9bc12426188cb1679bc5297b1dc8aab21318e4438875b844a1e049475bf46515bad513407a9472fe5371dac5c5fb23b2391a626c359cffa95462576baf4c714ab96ef6bfb80c92acdc0f7b003de30379c1534aefe4e0b909b5e3dd0d1f427de1b5b0aed6795c8a0a6dc073b21f1e54c54f850ffd303d2c56753884c92a806ae686dd5b0886de5aa3aa8ad69d92279b6d61607ca19935948553b61035d18709b344f694543e817e2f380252e377200ba30d03e0146a32be96551a9c48f68ec3722cbfdd5a176001477a7a5139517969e813f0b03ffc4ae07f7099783d490f469e352c6d8a2cd8669375e2cd09dc138706b8546eaee9440b5ab50154a56cc32cb3f81d6c5752387449a2db355cf5707e117c30205f185df2dd97d600d7283ac6dc6d14a722461251aa74a939252e0aedb45aefb0f8ac0b7ed6ef20fc05edc3d8b31a7e6395e5db95817d463d0fb4b2ba9280a1c25af4397355fa19ec7297950147d8baf076d7d5d05490a98de564486a7a568d80a8db3e8a3c14f3e6467e5359109e1b15e9dea9577327afe68ba4abc26d8cb95de513ef132c75112cc8572410075ca1bd4cd5e0aa67939ba0d01ee47a3684e29f29be3fb3128e1e66f4c999bfc1f55644dc327616eb204c8ddd2e1e270144d35f80010060c0f6a83778582216bad8477309874a9327709b347bd9cf73868e5e6c1fcc8ac0c752616ac5e35f5b253b4804098fcc14c1766015397433d0743be4e6d9115e4d52c7d3632a00ef5fc4f9bf6fc81e2f3891f0fcb25476a657f7e4dcf2146c4a0177607f457b55f0ea06c1b7230a1faf456b18bc03e0b7d9ccb1bb156a169bcb9a2139b22ce65bcd7c06b2e4e5dd137513288020c8912e941aee9eb9c0a80240677e45a2a85379efc5963e884a916e02a8530c3d6e0fe25f0f2b460991dce2a7f76e081ea5d57a52124bd49e1574f382cc2a09d6751144a2a44799c27c64ab599308dde2feeac809d11a57b865955c96ecf1328ba47234281066395e691088840c2ff87c716e9cc69cb4584c9a4f687e9f459f85f05f91434515f980aec83b4e0d1a55625183cd8d390b528b855ba9c77d994ce46b171d1cc9860d348058c502e5a8a638accb4ac961ab1c323a442bda2c7f5b41b4fd16d637a7a68ab7ee29a4bd030563a652ec16bf83a671186d7fa3ee2d2d12b45c9a87db97818f4783bd93e14029b41ad2ae463e93eb9add1609277fe11e436f183b6198a31b1e1cc9f58a15ffbbe2de090624f392d3441cfa635f990731b0d2dd563b00f899c73520207060eb36eb8dee5daf369ecf336c8cab2b13ba092c5253c3271686f16f0ccb72b9a4f6e3dba59b5fd8de1940020439f897160112f48128b658a6a153e9f62456a5205ef70f68cac1ecbca2770850325e7569595615386c030189e58e2f7a3b52246228228668878680ef9c424271b5d78a9aab4cc11a834a437b410de57116ea7a6958c56904cb39478a5983021906948cab433f501f87c957e24988f51cc14eed692ab5087de391e6a3fac6c130bf1e1ce732f664738fa7bac60f221db1084e634d435bf1200f2de216c5790d5c71c1945a78fb189958148006515c8bd307188cd92be137636892fc53a00e7d89228900006fa3f59f8fbe29bda594c74c834d21411f6a0a5286f8ec20be7a5572f2ed58e027f0745e3041fcd482e28213316344b3a9444b327dda97c2d984aa9a47d12c053f41f2e70239231909b47c309a22ce72bcef2739c8b72806ce3e9eca6b05e64b609a5932e69e88484aae63db802bb9586ca3cbe349cae8ad24aee1a27134085294b6f57e44e26c99d13905b38a9635725a59476166ec0154521b0db21973dfb13d023c0c9fad2f946247619f8cf58a242e8ab2c515468b9f1b4dfce78bd2b2f26814a4b964638e443038d6c8340a74063c4505980d805687da2f43d431bcc65c8c9627045ce6a689b185d7978e2f6ed8d2158c4861bf4fe5ba13febff357da0955d303e7327224317958aef57fbd4bd5a76e40527eaf2f199e48e92f402e0f46864e7ecaf2de34c1452d64a1898ab0f5e432df2913f603aac8630a986a47c32b52baa0bc4844a09a893e923fc2aab532dadbe0f7e7358bbf971d6a8bdd0b53aa4edf93e613c8893e638bb44d268f39a66193cb5c18c075c514288d17e7f8d73815218de39c28b97d7fce991e161a5a4dba1311b41ebf5498f8e98aea90d13816c2547b95a435467f77d71711c306c92102a80331b0d1051c1ee83a96983de8f21ba58bd8a0e0d14c77dd96a6b798d4e001e25e2cc561ac8471d49ce6239f3f1c246fb009e3efc59dfb22019177804509e075753013f6afe48dda5d9dd9a558f2f950957fc90513bf8722819a1f3551c4ea61e8ed11f0e9d98ac86312631cd456c46ffca0fd7ab1fc537c76696934cd136c5f1e82cbaf9e05c04079f4cdfa5a82f1d5dd7cf11f715d00e64a1c8a285ef3a19e7ee0a5800f81edf64e99600d8176feb1f3e36bdc2456210b265a0bc781ae061065547c60e947d60d32566e2cd9e1caf8c2fc244b5a13f1081eca22cfbde37ca61cf81a7080a30697e782376afc563a9bad6edb3eaedbaa7e605e032acbb2c982c00d1db3b18d9993056db0ac4fa42d0aacacba40d072fb0967cd55bad82bd0ee9f7a54d022b2085a44058d40bc5eaa2a597c369e1c7cf1c06642bc8c1a8f03923bcf8cf4138e8f4dae5407175f96bd44e3c0b8a06a93585cc58f10a800fe652333c441431b610926b40f1c1c0c88922cfa2b28c670034483f6afbb7bad2c22a860884fdf3159a3733f8c241fdf0abb3449e807a1c13cece9fd332d4f6b748da047f1b0b7072974451aabaa16e146f72d345ceb5faae45b10173e9fd3d91e838ed5431dc32f5fcc502dbc0b0b10ea7944c37ced60f9642b7e8f3f6e5399e9e0ac39b92b684929a24b752023cbf3ed4ad6a7aadd013a66eb00c5cf9c8141dd0ec7f0c043724fdf65ab10c2adcf899031655ffc78dfb4a1b1c8ab29185ab36b4870ee7286c424960b821f82fef8a8cce8e20eee00eec472efda9b8631b6d8cb4ef35f627f4bce8386c7a4292615980568018d1c27af4c64484b64a5b181988f486b9955dff31bfea4247a0d2bb0135b39a438884af38fbc68ac68d40cf4021270cea80c726046a3a850906c1527acbe03fe33b267a9f52a6e239c054908805828edb9063645b753a2a0f5c9414f0547bd586b477e2e02803097d298c0e5111510568eaad715b6479d84b10d163e885504e87866ffa67ab677912f6176bd1e817f1ba2ab9d9783074a3180d3a8f52098e87519b9f75d241e1a87e6082a3292e5ff206736e051562e24d65244805de9ef0efcb8446a8dcc2b38b9319fba3adb2a8c2fb920f5d77d2e7d982f3ed282d9e10cfc8dca217a1ba603a60a34961a22a614b03f5d6d663d2e3f98ca0057f67b86338ef0c8d0da432fb60d4e0ef69ba4fe51401a184e3f445e008723fe4f811eab42f1721430753ac573eb02bd705aca7d5e20cbabc8486d9fb3d04b83834829da82f12111c487cc149a3ccf4abbfa52c910c0c37c32ee043d45b117a7708119c7762d96dfa72205eaaade70fad87881cc7209b4d72fdac8cb9117761cb3080022fe90c01626abb192d487e393d16f7d1fdfa0b62ef8702c07837205933166fac4a75f77a0e4d1c90150946076d1b0228d1e05e04e0608bd0491bae5124676cd096bb8ffc87fed6e461fa7c9558c43b5339d70a842289ee32e5c65b391b3712dbc67f1e217045efdec03dfb89027a9a6c46d8de0de5482cad0045c8695dc886808b58768480a7bdd77657a487e869fd3abab4317e852a72b91aede5661684413a078a876aca0737f3e3296e014a0cc7d1d9505d62503d0302b60e407af1cdfb90a5203423d62d36fddf0893dc453b3db95a263cb5db1e9b3a900e42e106a04979de985f0da13abc44db9fba3d9422932b29b5f801ee7702a1d181f48f233a634c6a0a75046d48ea02c71f41b9d99b143b794f9e6945570a3e96bb4adcc71c8dd87f74d91e0f8313f06f8c920ce05ff56f4d07bbaf03cb59a0585346e1e53fe362375d520fe91187498e693f6cfb8d99eac762315ad2122d7e75f32cb14ba60899a2746c3d3d48145f1d8c9a09831cf840e8637b044b286524af97a1dcb93fb54d468989fd465bf85f31e476199f495167d11150169408bf1e07c5188a8fedcc8fa740a33c1823f7522202635a92f09ff7bd742bb99719f29f2a8e0f72b0a5c1a7369ea81949f90f0cb9fe9e965c62c92126e7b4e2704a674c4051dedc18f7f76a0543ddfa6c221d5f72d6c6eb0415c0455064a1a028986c7f180e530108ec46b79d381839844851799860c751b0511e7ed073b1876194cd6e7c7e47abc2048e75b7e44e0044a854d407ead4f5c04c56fd0505e750f25096306ad2c54b3ebed32b8325b86afd9d3e76d3b2c08067d3026c26c19b758a70ad12c909cd605214612dcfed65a60da3000854f859ab3199c755484f7a326f6f39a69bc59336d1b629c8029c704f74b2c1130be168a1a69e13f5888b60772ee384a6ca693eeb3a248cd8d1467d6ec2455fde585abfe81309a815599f80a3035a1b83ef82cb5d1dd0e2cacac042e7bc69f9fd095f9825c2fa6951097058e0817351d0a7fb49b2a52f689456a47bbb7f2bb717567f3b24e3b699dccc76c68ece385b39dd8d1be55761365c5d91ccd746754fba6ce9989855c98d67175004d0d08517c5a95cb95ebce3b7765805124eaa965d399c652e2d8ae3f38986f99642c559ae9639d98937810df419f8c1548963eeed1490d7f5e6c14be0e8e40e02e9c367e61f5e7ce2e52b157d36cff94a1cc2ef8ed2da735f05f87b0c261e5753fd8dc90c7189fb213a017785839402d81d713eb224c2fe5503eb0ce3a3a59e32c4b83b9fb20b3c34354bd44822503dfc8251b6c9986d3c10e60c13b0886bd15187889adba7011f368ee01f94ae6816e6844c4ebf2895f2990289858f73114622238523a75007cb4d989d53169287d4eade8e6540c577e85255967662765cf59b4eebc8bc6277493147f0e8b8c5300b4dba64202d502c1ae459a32df005d5e0e49d3ed05e55a67c44138af3dc5d632441483edf0e38a2e4cdd617d2ab77703bc6096b5d7aacf6e2df87cf7cfe30c900383b470d4217022189281dbb1754d92a93ef03dcea33e285f1561971a843eedac30dda246abe26c3c1aabd0ee4cf1874d45782e2be38ea137f91c2b489aa0f870f913880130f8de1ba75a4d193b8e5807e6ab070c3b27f1ee1464e0fbeb60125f918254de937d534ec14b3713c8335b76d0e6f639bc6a2c383bc19e497a6021df9db8a667a74842922a36e42d9da4ef46a8478179bd49f794f4565c9af26559501a2e8a7c72ec50dd218100cdb16bd0c6ea2df247de299c308f65b32a3627c663334483526a36e36441702e112d6b7c4f6ae4f21477a2f009405aa29b2a03dc889a147e0044d6a87802290e33f5676afa224c75908ba5a555c5823ecb7d12cd9f9649f230689b40d49be5da70c6cf07c3ec0b10767f5864fc208df457c01397055f464cb40947a4a74b4c2d4bbcc96144990bf631e2a091856b2ad3ec98340f646e55e9729fb8a283c6a23c014e99a9bed6ff466374e6b8705e4e4620c4457effffc16c876bf53e3fa1cd680be4d92d54f06f14ca44127f30670b531f9be81adef5fed1f648066f1ca92fddf057fffd43e9185ebf2607f9b8b9a461ad419d4b7f173c2dedfbafc22c4340397ddff8f09a10ad4fcfd3324640970e8e4d824cc6cb2781ba0f87ae6d16b08bd22f8844f36659d6c3d0bf9e9ec577398e9f88ba18f5f4b9e4de39a273b76e6816b689e29bdaf8e381b34351dbfd1f802a3c7097fa4662cc255a992d23b08dd3cd94cb65ce1e77f45b86693dc93ac766894d18908651f1b7146712184bbaf72b7e7541632dc4a3b64e40895d613ffa9684617b8487b5e1427c8bd6bd2d2e0c6d2b4e76e1ef66ebe93908e7a0e884840eaa3833a628be59e9c7f40ac090a1c51a0ad96fbfd1685d8fa0e6fee77454450eef71415665aaffc7ad387efa3d2c58e6e597d38ab72a5c0049963eee8c5e6b0f9eb460b0ee3731f867a2401790c7ba21d968f9b0a1b9f861409341b5220d80fd0e87d5acc981b7aefc28a66a81c110f270742b69ebdab31868129cb7d40bc2e735f6170fed119e0ade42a1c3ef606c4eccdeb75dc82755b32ec3632ac83580f929227ae483dc9d0fb9c2aa6098e007020ebb894c6f0c1a9761912054c48835f10b98d0f4394596fc4f39182e9fc4ff07aef0f65c65c55098f77882cc03f301fe70ec24349281e0a71c8a180152f0e1d611088908b730a336288f02ae7b77f1fddfab329054d5c804767c84b714e7b1f22592f6711beb12ab4d2ca6c66e11eaf96caca4cbec15691d88c09ed86d97bb34921f1d31857db749b442b316b429821f42912eb243cdb649648f1f02dbec3579e33dbfe39e61c65e629e8d5bf9701ea405c56bd0f7a24c8bf041573c18e0860d004e9d4505e70623447e95d686ed8da4f4e19d88454c7cc879e37d2ae0153ee13fc8ac4662fcc5fbee5d317d5c1431c9d44f1238e8a09c3af3e3cedb8acabdc0433ea75b57e4ca46f8013333ca9cec1d28ab5e16f5f7ec838c6bc9a252448d595faf83133e13f9648451ba2301d818e106c40bb49bd46e41a5bb8c6a742d49f15e71d3171c72ec28e00811f8aa0492c7f2e5f022b3ee3c07dfe52cdd905c95e768e0fa79884b9d41f77da598ba93db6293fd4a603a9fc7581ac6567d92e396c47802646e3f6e70fee94d19913643f8abad6f1c0557167fbc6cac895190c1149faa689e00b96502367880d01b128411dd56bb62d8e93ebb38a92e9f12fc70a20f73f230f391ecdfd824bfdaffa2cae6892ff29d207dd37706c3e2c2d2260cb82a429c50076e017b4d0351c08c57a94f26b7ab41f4f9d66b13fe27a133a8720a90f04f63eab0479dcdc71dc6e034d0d4d1f08d5cc50e7b4fbf6a05fade7f290e3007a20602bef46f4ca04e96cd9833910c5f5e1722231369ae315ae18e103c66da8d5a0950069a5fe814e7aaef2c0eb63fbfda3bc8c9db06720384027bc3b5bc596f279e693510fc7331da6129d32ddf7122ac516d2477faae9009548fb18c821834c430c57d27e311868c867ef889fd8f142212fb38d73acf96058c7f11523407f4619f35b1be8c7ad268722a5e34a06a7758d01025f3e1e972d2efd03686cce60671855480cea1fdaced74530446dcffb839ae01f25490aef087740d9cc0741bef3abd05da7697b102ef6dba97b717b93d21d6bce76be248dd04608f1b7e5bda5fbbbe4ef646b9ed4439be4476d2a29f97cd00fe64d442eb8d97a4209536c271c83b1ee2e46d06f2d9920a11dcb3f2f51a98603352ac9b6c181522f2388eba897533f52281bb0f0ca67759e929e61f9c7534451083c9407a2b0ab2ed5680fe19b346d0d3a6487f976fdbfa5393322926ed6e73916083cee5ec826123dc4ac0a982505eb1c9700bef7e2c7d2b640cc5018d6f614fdf51a84ee7005f944d3f10b03330885306748b41d7a37d488ce6bf5d1d560a236b9b0b8a7429845711255201f28cb3278dd24cb1bfea4f40cd8d384ee52e2a1bc6a03381c83b2dd03c08c2c1fec95519cb6296fabb03e6cf2d352879e1ad7658d2097bdeb22d221c4f6d36863c1b494287b44f0f281b7387c83f9f8785600598cc33137f042ae0cdcc92a964b01debfba00f5676af82c06136bf1817f4fd1dc1ed9cb9dde0e02fdd097f446871093b063bd06addbc96fce06b2365af9a308e8c8182a787e6bb5cf35a9aec41fee2945ea782d5567cdef2e8e0ac77feab45354c48cd7a63e1e084b22760a75d27561b7334ec3d581b410190b18ec466d914df4c78aa7e1413694abb8cd89e9918687693ab34526391bafb58e85ca38a458625a65cb63c9b22f2eab7a58980f8eea6e586432ec2111a9a3be6decb3e577ed5be4257d3b3b4e462b6982a302694604fb5f13740cb08744abbb8bcd7ce549ad20112cd296d57b09de56d2bf268b8262ed577a2c89bdeeb0872cd2bba91945633d0498082d56aed61395cabc61b160cdc3c3e1b8816f354236d641d00765479d8d8ab53a8b216c64c862a7fcee1cce2f8136882ff7a1cc79374664b708fe208cda001eb2d52b8cda90156333810a3ca9f43b91d93efdfbb40f28765e5b8d1999c40cddd38475433e20f86c6d30ab579adf2d99786412ac3edffb4697ee052e2a1b6fd0185dca8c4c42c8e4252aab73a95a4af1b83c1d66303a25b698a4a079b568fc903ffa21e55ae63a9d7b83302b55d774d13b32b5e341b424a6339fefe2374208345d323c61062e3413019c074019410b894ef559c2ebf06a962c765000e6aa436842a5c70629e8a1d62d9f6a1d5240de12a487235da762f87b5912889ff0befc8e4293611a11e576715aa34e159c64be428283c5d505c72075c6af30aef198f7a5ef063903dac7e966902b5fd93752d06c33f2883a55da34c05e4323b2f2736ebed400dd889dfdbd00808c39644dc29a0fd62bc9082e26b0a0ab3e1807ca0d1b6917ca280219bed1979a630eb92364637372253b6c61a774b40f2130871c5247ba392a18b2e12f1e1a08c0bd394805e466ca71078b0aff074698d5d6169eff8371a8259c373abc88657718b66d56c53b8cbe151e768c5d3a5c7e5e61551cb1576f48eaed8fd2c007358726f38183a0cb8e78ce7681f7b667ba5c4e90c6467147f8f4901439834c54e6f0f4dc96fc43c69107d6b05a427da4e026a606d1462ef0a385957d3dab37d9308583090f160248fca80465271395a047c65c09e5f1647972e1e10766c6fe3a2d643e7931640a1b9819c5cf7d0f3f52ea6cb226ca918bd1b751b872cad564a981288f8e3ed3b04e6bb0a362f31168d9153e4b2faeac6ea745e625a79a736ba7c51daf94d247c15ca414ff85be9e655aa47e9b7a3afb25064772fdc90663eb0bfe57efa1d4398e0d274ef0ecef63a4f1dc37c92c080cba38bb1e3902976931b3eaf5c2dbf183dcc5fe12a97b67addeff98cf3f7cd97878d013784fa9e953716ec098479221bae42f9227b31fd948119ecdc94669719849931461c67abd6a1c4f1fff1730fc98dd2d53102f33515acc74ee7558bb8705301eb88745cb525804ac8bb9279f8473a3fbf31d89de2c09b06eb89fca9e28803c5b00a7651abfa271962d3c815f4d413871b08be63d0426ff0282bcceeaceb70bb6e269bf63051d0c916e8516b3f0c1803d13d2174d1f06f627122e236ee3ac428a8eb518c6b30e515d562348aaac40ef71012d968fce83ae164812db0afb63692327ef0515d022b704c9650e603c9c4bf13687ba7f04b5be7b53be3242e32500e22ed07677f89e4567b61f284f40ae2a0b2032ec4c2521e2435c2a256187ec2c9e6a304c13868b239de03395eeddbf1ef30c949b9dc535212cce81faaf00136c2208c2b6da9bfb40cc92eb184fdc229ad9817f0b1ae0c9a216f5041e841a5d527f2fccbe657830bdb5077fe3b2a08f0591a4539f9c8463aa3c9579663148743dfa8bad4115453c19d3acd92b4ec630b36ad525b9e229e244960b70cce2fe887eeb109206850b80a4eac87035541014c69d3daa52e597213242b286c18764dd71d2c12d8ba64a2297d615198d514c0ced07d03d7bfe7d0c24f76310425e9b9d98f0b8ca2226090d2e9743e007d881d8e7cfb877cbb47ef169672357c728949b38586c56b12240b7dd4f535083c25e4af25e0e12d22b2a57a6f590146f9d28dcbffca53b2c74ff072be3961fdc9e717076106595fb4d949122f91b800f59d6a8d49eec1db9804a3211c7ccdfe7ee46c204f28ad35db01dcf836d32252f07afd9dfbc403f6abff07341686fa193521ccbb5cce79d36114dc79b88f42f4e448e720d188a1e37f167921603424b283981b4a183a93ff04d5ac397ccf05edb8b06d308824da085f73e2f04d70b3f85fc0513719d2625c75303ff384a49f5e1d20dd8a9693d0ed8e16f13d168fb53b8a758e9201131b36b2e2ea8bb4f93006e854119a7e3074ac30006c9cfe267a371cd889833243b150e2e093e86161e34716cc5bc1c1411114798f399423bbf4af58488d8d167315a016d438987971623475ec1d3c4481ad0e554671cf442943b581388187c6cd3d508edc399e1f7957a5e6221526cd74033a10476901ce55db737ef9e07c86cf6f97752f5100939457d3f0072be4b40e9f46328fdff3631852521c8b43267bc4792bd433c6222670b35babb434411f86f4f4f2c92db06a3f5ff5a08637cf287fc034428c3f132222593bf4364a768ecb6003ac1d778bbfd745f094f8ca983015d52a043cc6af1f68a2826eee09e5b86f3cf4b2c1f036fd4446ad9f36aab9cab5fe3fdc61b7ee0b73456c38d967e60572b9450abb8b7a930a19f36c40dd94587927d92d8c0be33a78f7dae35af02653578bc99a69f842b98cf193d176ce8ed94115aa86688937a0bd6f6fd8b281233446c942bd203bff53b8d337304fa10b2c6a8a26b1962be940137ed7e3c5c5912b1ea7981279d05bd3540220d9973a85e6a58b4a55bd13e4e5f385460df79a7b071a4e640458543264c500ea8067ce6e1cfe4592c3c1e038b69822202ca8285c833590d5ca4dea0e3736b217208d702e6676c5a3bdbe0ea3398147ed60055888e0f2151244ec2d62be13afe4b1f312c0ad20034ffb7fa011efc54aa95626ea9be9e5615016bfc47cfea3f516a8fcbdc0c658e902ed8c59451bf752d89a43745768855440bc8ceaf66b995fecfdfe99a6604c80e014a6fe1ede52b5c29b581894d9cec7fec6964800728a40e76a9bb18bed7cf621704dbccff68fc75d28138b6e4056670f029ccf0079f7465415064fab6a5abb4270d7b30a779cadc05587e41ce0ea2055c964453ad1946b12750ef6963513ada1b70690a564989348b379656d97a14a694f089b200bd3d029dd19e95879e08dd8e92d74e1f7baccae94448e12445325265462c6bd9a71d72ce4f07a4bece0bf52e44c5c18bc420f310247e81d797621fd6f3ee0216e66440b0c83751624519811edc8cf029ba72bb8a01dcc4994efb2444d1d0fff2a97649ee28f06283347492580de1c580123c7971b982bf98b21f8d80be430c60f4bdb5a4f38967067ff9497557a764451a2af6ab98b0fde2785ec82e21189fc308f959458ee5d9c21e0a27d1ceae69f6693739d296f9fc6967b18d11d79ad7ed35ed4485e4992b044d34296b73fdbf601bc2ffba94e65e30dc8dadf3337a0a598505f6123c92f06040680f6a47ec63600b83624b2b869908569272fe4736af94460ef15fa76617b85bb995a3e70a942959cf7a2e401a2df00152d0032e943f96e715f612c881787761a1b4084c496f2c94fac4f29c2af8ec224ee699ab69816f0e7b70c57f622a3c4b89c173f861d68a769feadadfe62829f71b5020a94736841c08cf943145c20324d7b0a5da0f748bec3296e5da43cf9946c8a10188952ad712e907c87dfdec28245bc281f0584de6b7367e49c3d5e756802bae9a9db0f276cd260df5d31da272b09bb8657d82cc1e1a966d1fe56265cc97ffcbc43306c1a814cf989fe60a59a5c8bad10fb6d54de697dd57312b3f220a2ec6682bc215908fe678ed8b6e047555cfd6cc8af724b91f0f6f9cbce6cf742a22017ffeeb0212c0eedbc529a22bc02ec518c90ac39c793846f1ad400091e54693a4ef8f97465a512c1ec516e22bc3b42393c03edd15e1faf7e5a908042d8e96bc48d7bd78162084e851a25f0defbdec3c4a16960e4b1ea4f35e388b1072fc78fa834446a381263a805bf87429d113bc75a661c842f7afea6d57cb12ef118c6c98457a47d92116295c1c358c11828ee19e05d5562f2e3679f5d2e0ab882004c69a860bd195773e410cf4f1d70a338f1aaf18946c69f027ca11df99ae83982af3fc72133c0683e351900866bd9c4e09cf2c6f63888fda9a9538caf478f84358d6c6f015888f9b9dc2014cb6a876f0f57fe235c3e1d2cbee4b12e664f361a00bdc89d3b024741a3b8f9345e5c39341e19976de8b29cd5277b111a2c41ed5e30fc4b2b724ba74e6dbf2b51b5323cbae40cef18e5f2b8543dd1af327536eaa351309056495696cf9e56da8c68f73fd453f0ffbf7f9f447d04096321680edb2c656e41578efb3c17003c582012027bb65d086584b4f833fb0bceb2ff038b29f3fd162e0d5ab42e7a76f6957760094c82dc0490f8e3b0e3b9ce8309e15434b87354fa2532bbeb6e92a64e11db8450aedb45d29c9f4e07dd906031be2f3671efbe655f23cc3a5b35c96ec467b71aa4078ed0d642d6aa29974aea586f01cb482c8e65cfbf72ca5f61359310b50104187063bb5c01213ecede886d41ccefa12712430ac1c33744c5b58aea4e8864dab9ddeb4764e01379f49ab6944a9e06f64ce015a0fd5345c8094d5a603970cffdc13355875b9001cb6dab03390316eb3ac0d24cfab5e1a625f3c81f84c6fac7616e07ca6d5f1a91094d9eeb3cb398aed72ee6e292bcbd544410f73f6298e50fc63b6e9a1d7ab8a4f4f5aacf5265ba694a44c52ee38031203100317e8232f6666668e31c61823bd2a2badb4d26659966559f64c2b5807b08824c08299f664783044eab5f058c0a81a018a69fc53eaf1d4fa792636428fc03c47b06a040cd659fb02c111609008fda7d4e3a9f55db1ab5872940c59619546242739c9494e72524a292547666666febee67565599665d9012c19d609115ac2d9d0aa45940c18a895394d5ca0cde6c4091595cef5026a518c1c0f79c8437c715f1cf7799794524a29bbbbbbdbddddddffffff7fce39e79cb08400eb640825515305a334935a21a95425b93a08ca05ac9af9990db54e9440fdc22ee655fa0bc43a30f8ae7e4161030579e8e5de7befbdd65a6b2d9330322c7b63a7494ed443a887f89f528fa7d6cfc743fdc22bff947a3cb57e5a24a594524a4e7292f3d8c5fb4fa9c753ebe753555555555586ca50190a85f9db33c5b702f5140a20d0577d242f3059e2e0fe883a6dcf94c1d28a8c039e068645044c6819590392c009986a7ed48026d042623e1e13254c3a25ad0155c0454d51910205c5896b401600808b4f8b134c60b1e27a4c005e7d2fba80a2072659569d2fdc52f98a794d753d85028932676c58557ee087578818e68ae9968c8916b7d556b42a46725769554c67e0d905553b6343ce6959f0d356c5bc5555d3c2602acbcad8c8544db53236f8c12a6a401700554f0725938206d4aa191bd69561c0c30f5b117ebabe5531939a56b5615d2741d007d410eb8340c45030d03f5643741f74a8931fa8ac5d414cc228173560d290cfb18ba71269c0b8ca4cf60bbd61cc9d8c8d87bd80712744a1f00305d191e5aa548492bcf00a0d756a096743495e28198e3146435ca2238a8686639186e34cc3b1a6e178d37057c38d341cc62276c1bd89769e6a3f242216921776c15b09c90bc90b89e48569882f1aba4234c495a5ba68e8a221e6127389b9c45c622e3173899d9d9d9d9d9d9d4bb1d211d311d3111dd1d1a82a7d607c3cd5d3d10bd5702511c68f4404b3178c21c9cb338530661a92a6b7452ec5b7b174119f4618371d411a4fe5e48582aa12c6b5a30a933a237801c89c1b60aaee070af2cc331bd05767c09319d0cf7825d60be45abc3c7b1556dd264f145a4fa8b27c443032d387ab25d2b5211651a6c1387dba6af270b4f42fefa11129cfb4ed8eb0d3f6c0605d215ac1828586c16a020d26585305144318ac27c41c2d628b160c5f8b16531357ace96fa37c9af036b472188fe38c0dce08c7711cc7bdee48d7751da7eb36b4e22be4de7b39f7caf6d9ddddddeeeeeefeffffff734ebe6a3ce604ebc37d5cb8c000c0721550008abc882f5e307c2f5e4ccdf70cead6d187c42ff7de7befb5d65a6bed683402c0fb16b5a8452dbae6df8ea2e4bfe91c47d9ff7343abe9f039cafee71b5acdf9de1572ef2db9f72fd93ea349a784634f96524a2965777777bbbbbbfbffffffcf39a78b4c8dc7bcb09c5ac1e2110b6117fec132300c1855d903d40ab3505f7a8e9a3cb03b7dd8c2e0d01d91eebdf7de6badb5d65a66b958fa62e17999fcf30dadee7cb71b8045a950d409110a6252b40a2865fdef1b5a39ff5fff36b472b8c9fe3fd26d3ada55ddecfc4fa7dfd06a5eea514fbd7e96f84bb6cfc82413267598543189991465fbac98999939c618638c524a29a5eceeee6ef7939f4effffffff5fc2d9d08711000c26512366011a011e8147402344502bffbcf450a39be7d6d18ba6699aa669f7de7befb5d65a6bedffffaf60b072de9caffdd0344deb984c2693c964aa4adeb66ddb1572efbdf7393738caf6afd15232260bd65a6bede428dbdfdddddd37177dd78cd168341a8d08607d0af04506d0055088cb0f8caa50066a65066c9899bea3efe4b135f46181014577447a29699aa6699ad6dd7befbd7706359ad7889d1202062b89b5d65a6b7f56dcdc944aa552a9a4fdd0344da330cbb247024b38cabe948c1772efbdf7fe3f47d9deddddddceb93697a9bae6659a73ce39e70d8c0a16a5f26210f1006c01b26084231855df11d4ca0d96a6b7dd11e9a5c49cd462d7755d77e3a993bf1a305833cfd9d0f7f9acb5d65a5b31804924128944d27e689aa67d0696600987a3ec28195e618d476217bbd8c52e76eeee1c655b6badb5524a29a5a45775d56ddbb66d7b1c112f0819b880aacf855a795b8ca7b734e461a9a24f06e36992d3344dd3346d632230282f10dd50761d60b0c660d9afe26ce8c358c122a2496e6215a51e4fad7e813eef7a97a51547a95132fa87a6699aa6f5d52fdddd3506a512ebc870942ea594524ad9cdd15a6badb5188b7dca6e5a7531c618631c3264c89014d25a6bad94524a29bbbbbbdbddddddbbaeebbaeede7befbd8d624929a594b2638c31c62839962953e3d59321d4ea646abc4a65bece0927cf3867c72a51c273e204656a98e4b16cadb5d60681a5572a954a8fa3dcf4cf1f9aa6691dede74726414ec29fb3a15dd7dd7befbdd74a69a595565a69a56d67dfd0aafbffffffa594524a19efbdf7ded883eeeeee767777f739e79c734a29a594b2bbbbbbe5ffffffcf39e79c534a29a594255e867ac81fa3c578ac13285052a8a052624a0ac397923235140529a62275e1bdf7dedb6edfb4d65a1b8368da9b2861f20e3b259c8dcfef947036fe7dc9869c8d9b2861d26180bbbb3f26a572ecba18dcdddd7dce39e79c1cc7711ca7699aa6691a26c5727777f738e79c73ceffffff9f7fc23a4149a1a2c6eec52e06f838caf6f953d3344dd350689aa66973ce39e7fcffff7f0ec59a73b2bbbbbba3b026f66a8a142f4860b0a6986015824f18ac2a44b85a881571c50a866fc58aa9a1ea831c5580c17a6dbca279c8bac70953d322c9713bfeffff5f2412894490394629fbffe1ab509192522da9515293575fecd7bce410ae429d38b1e6df0e857551ac69aba562fdbbacf72cac135ab8b04e880ca0a38e304211410541558ca25ac4f2e266ef641818d6c6431ca7a1e39bdf80390b06ab01fc851831460c862f468ca9c1d419d043bc82b93c0568d1ecac63f03899040cd602c85327051e98584f05d4210c56153a070641d284c16a00c983189649c6c686563c392b726525325c59991ac951285073524f9d522382c16a6284bd60b09e9045305831276e909a0ad6ec78a97f1cc7711cc7c57b7b005bf432367e9a744adeec389b6984e338ceb90df5d7baaeebbaaeaf1afe9814ac9f4ca248241289444a0283f50447d9ff7c43ab395530006784e3388e9b1b1aa549a784d31bdadd73ce39e7e42b5ef23af989627d0a21305855bca8484929c27a1595c8c315af8be1bbaea989f71b6694c30cda0083b5ced94feb38231cc7711cf79b8aa334e994703ab9699fdfdddddd6eadb5d6ce59e355e3032d152767e0c183078f969696961698816e5844081fb1a5bbbbdbdddd5d1ea1079013b00e202edcebee6e17acb7e8e3bd17ba91c821043e5a5a5a1eefe0d1c590821c3e6860055d0a5c8a80430ea8e38512ecb8810f88b860c40f6e00c245083c6010bbbb1b4710a803052e447409e00bdd7d440e99c4614329073086340004238a14c1d1830b36c81f2e3de0c183070f1e3c3c804312eceeeededddd5d61c41cbc0ee040448669c46ba8030c3ac3f13a32cd86c73c0752c8a187203aece0324311cd878b0dbdc3c58716287b0801c23d58000476f798e181a0861c6e68c1800f7ed0fd0440bcb4b4b4b4b4b4b46c000710b4f460019076efeeee6e7777f7969696225c800c61c70b76c0c2102d9f821943b3c7d5018e93128af0011a924002d4c00a4bf8000e3de03802088e198038628429063e320c88e0470896e023c34e32b4806009db0e9c9461ebc07fcb963a5a665857ea820b8e209163e076e02db89001191081851f2668410d4cd0c30fd2ddddbdbbbbbbc27096aa7394c0a50710207401102e3b74c05288bb7ba52cc09c525a99c3d12d7b6c40dcddbdb2801f7777f7eeee6eef6e8fd13d86dc49c0c3103af83003222c0d973c3027b9e810e31bf276c01d4839f88002c34311033d1902899323040107dd8e219c9c2888a2c00045e1839e48408e90034514aba7436bfd541613a348409680812a0c2328948d14e4440aa20325c844f19f2dcc3973c0610727e1700369fb010a0c281b102218c502e4dda76781f3653de2b314b8f17e01940983d5a278909941a100eb9c2f73777777b74e8678cdd470eab4cd3abbbbbbbb298c656534943e530e0c560eb4252c2fc40e8967a2def68a3cd22b615088a782b75128c09afd63d29c7352d7a75592a552a954aa6ebc1ba7d3e974eaf78eb4e22be4de7bef8d32c618638cffffffdbb66ddbb6614e86a46c70dbb66ddba28c157747baaeebba8ef32693c9c42693866e38be8931c618efbdf75e4b6d65d95a9b65599665198559843628891d638c31c6287dc391557777777bc7cccccc4386a43493482429a59452ce39e79c9399999955c418638cd1999999395a9a1a9957dff6d9bb43678f902b0296307463716009120183b5033b932470b008cfd4c012f5de7b9d0e0f18ac25ae090f2402354803fcff67528cddfe4c6f72648e6c9f264a9874a69c524a29a5fcffffcfb22ccbb22c833e2b8cbfecbaaeeb2cb595651bad8d31c618232c7129992ea864109a339a01020883190000c300104581404ed352d1f514000b28545c4270301a2e402e1088e2b0521062281400c010400820c418431422c22a007c2a940141c2666bcee60ce2855bfcc620f59cba1f5dccc6ee1a0ddd22bdf49c6a32cc64039aae64c7d55407125b2e718b93e8a29e41f70391d9585d2b2e466377ad86de265da95b96871d4b6aa3552ebc39b84f9a20419b069b15796f3e889b401fc6955ece49c803aa2e03193ed8121fd214d58b54cf9d1c98952a0b94ea5a2f9928029ac468d0bea776198a0d3d5e161cad3eb12a9b6e6c25aedcc5b4c1f2b6d95747c5d6526f56daabc27de4f4334c90b038849f0590055fc91677cb850fef2ea2411abe1b23d5b27dcec9b465fefea26d74f5ee6599beebb5e4543b65c6384c95db523bb119aaf0ac2c01f6834213f42a3afac7ff25a11aaa33119cf64188b322b0ef907bb00c256efbb1cdb4c826b8167898a3b57b905cc3cc132effe487ecc0955eb2c057bbc3a9080b15f144e8e6994ce50d0a18b95ec1974a0d3a7252798f02eb765599e26405f1a1d445e7024e41973b91d95c5d2b2e6673778d86da225da95cb6879d84a5e97053514a2bae4e20935d6dcb12d5964109fd20a90968c60d84041f4972196f7eb493691bb3f4b86ea5e62e9b62973cce64bcc92c895621fc57659069d011ef112fd10d1aec62515f78b205d508a986b245878ef930c84928e33783ab375f22ea37817da17c809f4d52ae635083d08a5def0898744decd18750ad4d298241593a3807c447ae7a4532d9ca308e6d1059d6c201cbb7a51d517e9383e548d64ee613224e6f653cb11db172a1eff499d674ce24a51b88339ce3d255bcb3a214372464ead89245fb6d895ba2675528f916799b59bda01d69aa3acdb58b9080d67971c028c913714bc50ea5bbbcc6bbf40de9dd49eaad7423f05a9764eb3ac06a4e0c375aeb9312a45a5e43d3e2aed57557504b881259c51812908d1aa82978bdb5ffe92651fd86cb39c24cd3c38be35282d082f7c4ccb90b29222aaaf4e59582311351f8748ddc5c8e0d305a213a37d768d5e5dcd8a3d5d4b6fc287141393cab5b43c5422e3ec9121375d3a3d0f328c171fbd1802bfa0141654ba7b11581ed0fcf81bc18e1a47541c3735174636d7a5228afa29ac7faae794573a293c68aadba9c1a3bb69a4a9be8a0e7a9d86cc62d6309cce1db472d1a1cd6c62487a9e436c22c70a4b39c912cc7700779420b954d301d5e49723cb098285b571f55b3f3d38c60daf2a27e7e6fd9fe2a1537f6cf4b074e1f94f39fdc4ed6a27024a288144fd3101c8ef87325331e07c3278b38f6c765ab65395f52ee7e754f47b3fa2d700d9df47d160805167811c34e89c616ac135b8b551f7c97ab997730caafc353095ec046a7b5c9a09562b848a173c807baaf1565e43d2482d9e1212d72cf47cee4b45810e58fcdee51b9e62777754e2ee47024079d56f72767754e5e52c134d1d13813a4851bf7e24c6447f161fcbaf6e69346d190af6cc4259b46740eba0276f8ca1ea12b013156d45edfa0de80ce9ff6f9624f106789cc86d52d6a0fc4c45c757840c1fc88abd57759281396449170920a87e33032b5798fc9c20f525fc42672d1f4b90bd5f0de052225636837d1dc91040ce48297371bb347086bb8d9f535f56d837e7c4fb5ce0adf839ab47fb8e829a14d63324442be1d49121f13e098533c2d5a84ea0c4076d4703c65bf466d357908dc171148f438d5467f6ab92905a3ca19ba0a21b4da19ab5b8c484376a156caadf578ba02b4a34e805b8fb4301f4bf0aef91fb4ca76e719bd26439f6fcfbe76ae4ed1da5c342bfa3db5af16564fb83cf6b0ef6e72f8e0cbc24f634b991e49f42c4d50a57f47be89af0685b906bfc895d3d1147d35ff6495119af3c6e37143e0d222caa05edb87fa72e1dbb07a99f69fddfb32e22c2d3fe829f4323dffcf6214a018be0dfe05e993821645aff63b227dc15f644fc21e54b7bf51a8188ad1b166f52121df4b057f4e64a15ee4de9187f125029db4fa946e4fcada0c5e9cd0ad9c2df81c6b746876a5036e7224993409ab870026504f5159618c647838be34cd71f771d88bccf27a893d10bd01edbbae590adf2fd12260f8dc68c9caf60c013928952a1a6054900e2d040433af1df31866b22eb555084d5cd59a07b41a6b1fb53bd68dff5529c4a88d38c79e9e468983ea4919e487de3ba7b4318d5c0c30202f4c1e99b40f8adb3f61f34b6d7af8347bf74a806eb1c5d93e7f654b800ab0930a6546734151ac1e82f819e18c9b54468aa99154c709c192f6f248a97d69924c5743a6467c9efe045256510a5c9cf22f8b6273c45ec3cbc7aa4650bfa444a6334aa3678c6a6c364f7bd20f4bfaa4109e787c31721d8bfd3dfde10281b105864804b118a7a8fc154bec210985e5b6a633b7a3277eafe4092aa98d252efb0b1cf2488bca55b0a8e058551acc8b6d56860f50fb880a5a8e1cfd17a0ece1d46ea250ce0bc4440234040738b9c4821618238ab41528c7ce3def98954c52c3bf2afb09e16e159e7030eb43390329da43b691bd6d822d835e4e2c88752176cd00bc12b6786b5d9e3c4b238f4757481676498313d4b8e1c0f71dc336f10526ab26b688308ed11d6e31d070378e49150aea23da1bc0693521771c16b89b6684ba98ffbebdab997e88313162301cbdaeb05e4ffd28b799b05e8aee38e94d6565e2fb48d4728647c39e6270c1c9d4370356e452d468665271206220f65a96ee141cf00137f5946fbc5432df57b9c0da4acce72b45ce322cbdeeb60f3f748c65a67660eae88c85d28309776e47b7a44162d600ae08dfc84f79d09957c0706f272ca66f8a5a57ada233f52fd40773a043078ecaa51faf26686cb2010efd4c74f3a8aa8789295a2d677934ec61a1ed01cb46840900b0b4563e0c3cafa24f845bea43605f0b82363cc26f953d273348a739ef284a33b977be2ae5f8e10681bb0071b06c60e3f5cfc3f015dc171744534bc013132dcd35c23870da770f3d2bdc21756de37c2688f19bcad6dca70ab0fd94d3d2a76d29bd9cd2296bebbd3672a898aace7a82be199713bc86494f50d548c8a6946f5f7e5dfc97127618b7b6e6c07508de472290afc480ba199fac127c5168061997281f5eacc48c079143fbfe2bfa338275c0db8e7b5f54a05454f1290d627af13ec29ba55a29d5d622eec11968de202f430eb933b4fb2d2e01bef8b0756d50b4fdad1130a6c146459fd54e951e879b86aa350dab0bc3d0c08cbbacca37068b55c330d5d41f7c273a6f7449f52617686f50f5f0ed993edf924f14c2a9333b6194ecdd043c901deac670dce334481bd0653a7badf29ace43a6d708419f9c81caad6c7c27918d564a44a20a41916f3a4ed4cc32130704a7b3de5885ff0f3d39312ff7253066c7aadec2b20dddfeb82f070f74371e751fd2eb74745787a8c23c40a0ce9dbd4233281db375d211a4663b020e884700d4724c5089312d7c8409de60d1863c9a8eacd8e8d4d40e5cb717180e392e5bb9f5195ab0a719a967ba44e8e2e4a6b17aa02c247d28ac048ebd4f6fced5fa4e5679422d556f89411ed0d97ab74795ebfa9b37e9c1cfe2438e7afbb0263c79779805e483ef98ea45556001c932ccc6bd76515a1341866360967c41914ce92b723759b3174021ff99d3a3d1560077d4a218be37a8b90eae90efda37276b7b0e410f38d6dbc66c96d08d5aa3febcae2de5d6d11b5666490738c5caa2e436536ef66956bce472e12467ddeb04e23dc9c4c99880cdc6a4b2824712403e667eea77e0793b2be42b09b01c02dc775bb328fa8f1688945c7e40dfce4a966aef26de000ddd044477827933b13d10ad5ce5242a64a1998e760dffed94ead38f8f2b45a9a9668bebaff8da0c112351643cfdf6bd53b5a6ea06f7d02927d9e5a0749205eda70d5a190da1240c644978d70a33729dfa8ea73a44acac9da149f3f3786e46344e58631b9d1f9d8c07bff339a4a30f29e06051b25b66e962db67600f39d43bfd0f144efd99cc0d31a491426aa8e932ede10b1c7e0ebb71d8cc378513de86a88c4c0a9ec9a2712840a8c9ac632f9dd17af8601457b1919350b640629074b36d07833014ac1a88fd4f9c662c40fab9f1afde57f5ae996064998f1c7af266758a5ea77494deacb349c7dbb242dc629c16141f2cc90d401f9d9ac976636e3d52c690f328c3a521186483be24aa487988fcde608c4f0221bd3f21600d46435f639467ec4d192575dccaae99096969ee81de65228bf9d60e177269f2c181571e9fdc2a48961c52fe2b1fe48d27e4832f012a1412cb88b1974c356515a9bce64278735c5bf415d76ac77bbaabd6ec93bf326b83f79d0e315fdd32e864b269630b7e9500bc91529d9941fb67397ecae798689849b02b6f90e2e1032f3412fc9d05d15b4bc2f1f75a2d84aeb417530449f77fea235fa396f7ba14449a3a2505abb0d2460f69b8cca1df0f23a00e407ce5f02d1c184c6c39db27daf068104e43949d6dad4adf3bde3cf2dab24d06cd994a265019966d091ce9dc350ef0045eba9b96e5150d83d6010e2a679a455334d55d0926853cc1bae6e58e98667b2f8020ae5f0f4aadca0f02a0c57f8914aa8744c078a9403508fbc787bc8bd9c918987e669f47103be231a0594ca1bc759285d6cbcbc40fa3fb752aad4ff2ed8bc7ee12152a42bd5840b997c068674cc463aa0c601658dd1f959ccd01f2fb8ebe2377aeef98bb66f9f87d99f68d3220e2d58e2086a59a5c3e2934628b80c10091bc6ca6e236cb9eea27e0dadb6a7d023308357c1904477706e169523075986fd3016f4bd18b9444b15a95e8bd49756cf1e4d27cfe0ab3397936281e1a48141a618685e8417fcd4dca01226c11057ed8661ac2b18a9ca78ff5d074ddaa21b9af8b79227ed75b2d6b38e0d90bc16299833000afbd52dc6b398f3c623a6ccf5766d4b91907fe629ba9b25556559a1fa6caa0a8a8b2aee0a96474692ae66250c585907c2a1686b05563296bfac76bf0c9e763965c28767538d009bb3f25574de6f18da96e4ac7b0202467b55eff01eeebbf5913ca9185bfe0044cadc1c87920990508967f66a417c86b2f447ea6ffb275877f040c5ac85a47213a50dc083393c2a40d52346c89b4c8bac5b42fa69c83dac6e76c14410556913f398ba852719129198ce4fef42e9111f1025ba17182a611735b2c131e1d5ab32ec461567899a1631f4e58754e09d2732b60b8b000e855a6e33823ebd0c72696440ded5b23027595d378ccb87457ba085c201504cf80c2d96ee87acf4c769843089d4341819e7c487a7d91131a14cc303e1696ad0b59f88f8d2dafb60843192a3eb690f49c1913f61629ac4954e4cc19fc84d2af1a8b26028bf0e0b517b471a61afa4b1068e3699f5652845593e37f6ff24824d2513183299063f6fed83d047e3ee8fc8e53dd98087fcefe7dff06891c3f31b5a5a675bff9b529991f32fa191381a1cee8841ea38cddb7455356c2cc92abb00dd933058b775ba1323da48be1e1cae4cd7583a22676c4d81913a329c8db0c81052fbba4410298eceb66c0e9f5a6e09b9dce83024aae8a2df5cdc203b95955a3c9a27f3f502e0b857896c648dd2dea3fec301e6d10f1b3dc8cc2423a1ba95a049f35e25173dbd3107c9b04b7c880ec692ae2caf7b3e3f67289b7380a1e89a0fdce98b9e9d639ec1e71927cb1c9ac7beffd5a0564d093231c58874beb5b7680779f1dedd2b0eedfc4f5571d3cd6a7029aefb24646c447bbdf40566dbe7c6ec15b68c0b3213dd98bdd0433d93cfbb4db8b2234654eff4378d6909fd9e76b44a3723fe712de1fdabe4f98e1f35c5cf688ad314d7f98ce7448a0ed30a3d8e14ca33a2e340152d6463edb0c7b02eae9d4412ee80c5b3cd7e5c9f0700042f8af8b80539de85b50fa7b203088d476755f7422cc964dd5af9926db8e030fdb7edde740dc15038f513b8c54f6c16517b0a531882203f8706368583b7572e94de874e1937721b6ab063aa3778c087913dff572d9972ea2b4414f23bdcf909c30ee726da16bbe40bf0f39c1ab36299b196b5e1680aa6a81a018178814ed0285ade7c917ec3c8a87fd7f7672ba0e6232955897858251b5183e71b6ecd5463701b7362223ccfbdabb16a6477eae5249ccc2e0e1ec95e2d373284f4d0268c9f5e4f9a4f6931ccf6fab458f9ab0e2b3b7327d40a80cba3b6146006c75037235876ba0c0e242cbd13ed1847012af2695fec41311949e5e5955913743842765910c0fc4b5768747bdd4a5b50e0de775d666150b5afd6cd09626ac6108d5bc6a4cbd066310581b12122c667a265fcc3e43cc4b7b795584ff8e9c66621a828c35fc38a1470024a2b9f57e73bd156ea98e726b01f23794dc578849cc6b478f92252a60125d44b4d58bb9454685c687b5795876fac2e666b114878d6bfb2a1db9f5f85cfc255a5042bf65e250b12f90799c38122deb8df4b75eae3e68a1f1c6a2fe698711da0b6366fb9144762a514d440e8cadae0b7c069691101581756955500215879281d2de0e7d13c4b110875d0f14a2c00567718aa2fc66065a7b69502d254cc31af59f8ae2098e16ee44b24a029c4b1ab801186206e1015447e0c9893cc105f96b2dcba8f04caf43c6b54ba5ebf099ed0a5da81c83dbf360d481a9b7089481924b3c487a9a3166a801eda9b6aa864a43c1eae0d9fddcd7cca09e0515c59b0e8589c4c7e739b93a292bdd229bb3f6c2a28267f6b697daf4fb5c5640abd16437eb9556ef94c50edc7b935bd62042934badc8a86cfae99deebc8f0bdc1f2d2481a24f2d73a5b1c4e50f412d8344d4bea1e58a60b90518ac880a0ac6d434b6d86fb014f8d31ba1241a46fd6bf81d11b0f93f6d23357341f1958775cf5835068de10617b95f7c67289161db4801c697fc87c7c32f79c215d6a4d494e0290df90c0a7327fec3dadc1008ca5de99a4b429ef2b7e6b98e9eefb8309484c37683d00fe5391a3fcd6c46e4dfcde43540563df5c95c6fc21fe11e14432674f9810f11989f3eeadc6e23e01cfb958e7094be2e7ac1550683ea22ed8d44fab50590f74cb73e74d6e7c961e167e5b782aa0e566162f98c29d434f389baaf3411b563f0a64bd31f3fa73f969ef90a3eb38385860207c49e8e90bcaa777e98c4c7e70a1a5356749b68b2f456a236ddc07ef21742c2f24f7cc20dafc3a40fb085b9837856f1fbcd8106bc4fe23fc0dab4e1c748f578f2523f63f93937d5a84947f878f89bd53018e6bfb17e098909fc051fd39fad2806fb8ead6f4f68e589e60b533900d25c5a450368c6c12b82b091ba3cd388df92b35f643cb9bf0a536e9b063086ef1b65d8566980fe3f945655b56abc885291be1092d2947659baf4a11457185c147bff686408a677de16817a55bc0867e1ca062a8041a5b8ef38787f947393ec1556253cfbb1edacb3302622e3ea27d12d1e97ae6b625f772a37a45621fbcc4af54d311c5740010abe1d948dacb25790c4e0eaa33f4847d6839945a8e256adc0004401bcec50a8ea35146aee0bb5485fb6d9e4c9b6359c663adba7ff1a8fd83bfe79e35944f823c6b0491118d28a275095201a05b7857ff93caf0cce16515a0902f1723d40d572b411e27e6e4ebcf6b0015d0f828724d00039c8601a1101dddf2aa08d25270cdee418d34ece220bcac12b0fbae169fb70b2bb99854814001c461a0ad78f2b415ae15bdf2ff201ad969621c632883d46edb2cb2b56390fd55df1f7fb7ffc62e30ffe261b4c53c759d223e13ea551a1049b4b152b0e1b8c6494d7c438664c84f8b2443e1c25680a48a2be6d803b23836c6f030224e2d0e8d6f60f54447ad0359f76aa05657b2f87339c07ce51044ed0553227206096e0b6a523b35519187086f678fbfb6b3ffa9405b4275c3b41f1ddb6e0975db89db8be5e9cbf076f87005f07dadb41b717afe1ed50a1d70dde0ecac3798244a0b932619796309b87b55856e09c6c67828e0d389931e9c85fc9ba5ac7cebd14d87253800fad0d6d0f068de171d56419e90807750ad8ba2f1665dc47d63a3d805ccd28d65526935dfd3ee555a06baf166afb6a658a693aeefe2e3d039d2866c8646e464f7acfa0e584c6247f42b1ffdecde4586f0e8c7693ac959b87b4db6ee9d406f5aee79cf3d6de30e9a10d8eb4913cd1da3c725ea91cfdcd4109e984029b3295ba82451eb48682a514259ea6101f7550b0771936da180254339ce75d27cf890da0f1eedc5fc00613e6a3ccf8ec3463b8dcc41df625151c0d9b3498db5386a37f6382a591ab4ed10790f8db20f6efeb7ce36bd30ef8af77dd8d07666ed3c7d2dc86daed4885373b6aeabe8e9076d5110e6e3ab27518b8de22b3f01c255881315c74d415864494621c1dd8ec4b1a58cda7d72b8991e7243db506a0c231fb34962720fb69442520fff89a44c31d8605e3cda0a2235c4c817f4abbc1939f1ce3bc95e43a2eb944d51d3e14e0c1564e2d6a37b6653ae5290b6d5215644ac6eb388b5e80038a4fe6059ab601f7be605b42ebd5dc2e43730abafc534e6320eb7f1ed09104ba40df1e6a3f614e9d242023d4fa6b8c66567ac4f1f0568781753b09d648333898e5c15602126e975fa82f846b026f7cb69ccd9beee6624a72ce43f0a54a74c6b8e92386dfcdb52e3ac58392f94d59195d7103f8893d1710c997aae826a802f8726a321c536962756d5ef1a09b97cb645e632393f10b431d3efce9ecafa65623bf0415b74eb4db5cf4be8fd066e17f124c1946c931b96249e10147362f4111c223039f46641acaa609e7a1a5193e1df21536950cae1f69ab1875a48aa8b3547c954345bddfa941927878e6c9ea8f695561e2a06083810f5a4d5133e64660d1099ec9914b216e2b232546280d2592f45f23d55280d26b4d8aed960a38a850ebf29b34958697e25ef941007f0cddf6493d617acc4fae3d17e7ac62290360416704c02ebf00d958cd201bd7aaa58c0a80f81c213300d0a344d0c01b2c01491a2c41ce81a965c405649104e159ba795fe4dfc8176a6868f8d270ad41e32ae9d3ef92d87ab3f42e69f3eb12f8720b1bbce2b8d188534a1f1fdcc1d162184fb6a0457af4196865865d6a96221dc8312a849a9680b41936784ee218c8551f48d0d501f8446da0925106525ac4d0a4369cb59edd17b746ca9ab165727aa44c08d2f3a222b5c033fef9908775b0f8c5ead555c52c91227acb02d6dbc327a6ae5b8b8945cbba262509c018f1ad32128f27ec2bdea50b8d59057db131a351005af322ef5630dec7feb35dd92b6230e1cf285e589650b065065d61785544a5032a483b656808358177f87fbefa0c97a909479ffdbcdb3f315483a812863eff1eb1e337cf961d5e9ea4158684cd872f482a4896463231aa61cc5cd988a4440bed357249e221ff6551f1173a5bc2c8b0360c3d9cb20fe48bad1f81b0b91dbc04ce1794e2a824cfec63d245b1a00906ced5d6a49801c300673716290687335f1c8bdb1b7db1b2f3094a3f13d1315da96ec265401f365951c34486c0e0420144ab84fa31489ae07ee5b192dec0ec0b908086b1859fe8d2514fea7953e394cf680aaedee9c5186afa29dcbbfe1b0529b57cfdcc2f20cf423fad32d100de6f7b0af408070e348931967e020b2f97557c07e4adc0bae2bb1b9e4bed523f7d8e8cad96db2793bf07af0a2e96efa667d21e86e8e59ff1d77cf7e862faf253814ca9274a1a3ef3a3f319e7689f1998f979e7a24fae829567674cec57d034112c69221272a52976a291866b557c5abf6166d61b1347fb4a12e5d16e1a42fdd36305b8ae92398df08db22066b2e67ad2359c9d4f8a34924cf0dc73610191202634f5b9048cefc33a158c834d6b84e21505a5bf7476abd011dfa745ff5c182d951084c26eca8df47227a2eebbdee5522feb3e0da1e45997f004c2837c18bc5e85cfa0cf014280869131b64d56ba1d12ad81c9820bfe841a2b3c05004f084485c3251832e09c13428d9044541a40ebe21c409c40cdf069c798c363eee0f09649fe6069fb2a539628fd23f005bc902a2fe12882cc1f7bce6a8a8fa48c94a19c280de9c02166c4ab0da7cb4b5458ab1a2ee0842d00bbb388434156787c6ada28c0982ca3834d3c11dce6190c057d476c0496f535f42037d80813125959177347524dcab00e07a2d3e8cbc08e73aa5fcbdce01bc2cf36b07aad95364e2be3ae9debd627e90a874868b7b68f643d81e7ef274dab7d6f8ca7e27bb8edb23df63720ec3194b2e63a1e739a4047f0275b9900e0ffc29d002ac200a2186b04004d01548d0156b1e99236ef0844d356bde15036541697870099488fc95960a8a43bd9300b581b9001622f8ab72855045ad515226da5c8e38042a73ca785658fb48c6baa452229395de82d2508c5a1849ebd93287f31892111077a463c70b23aecaa476a82c140b6865265011fb62d81fa2e985a32cb586a81fa06e2abc557171f062c629d9662103eebe6f15066e5403a06ed2ebfe6d1c9d65211e2c965abe2e327bf5c853228396425a0a1846f265d7d957d098166bcef0f8deb01419206b01d3dd525abbad6fe91c99012094319501b572b5a791fa0e6e91ea83978080eaed960dc801429a0418d557370c4cab56abb2eb5c8edec3832a6c04a04fe9e5e7ac947dc60130629b070efd7500229bd63d3fee96ee6a310a1947fc4ad5d986d2bd8f8b9bdf1c344e800806d0dcb3a42640b338b9e7eb247b245936d2ff201952d4bdb2b00f03dcaef873c2429307d9afc060092341d4e0500a62ced4fdf692c818783766d1ed07ff0ec0e5100c3a539c3b245c3f97c111b67c9dc612c2ba33b97f186c0cbf36777dff7a29b0be2fbd536e87358a5e6d19cda0e922b3df8513f33ab07cc32d7ce36e75a9120fcbd07a3e648871584de1848cb90d0253183f099035704bf828f2ed3f8de91917126e70cd17e70b51a294ea43585cafd264f6b91c0554d336d291ffa721e5fdb1e74eafb2f0b5f65920545fbb140ea2e1644188605a1c3131f0d5991eb78c32c5dd771bd13848ecc9eebaadfd6e0b86c18a547ec5def8d1d886f501d8b52df9d3eb600bf1712b2f9fec67764df01ee64c9269470055d2774810786d54e4ed1673d5889d6cff337905bed16bf71b41a0a4179437ef894f150f8567856136fef9bf60c4ea2eae474fe3d9c9f30b6eda4cf33c3f5cee3b35389920cc85eb64dbb5805e7b92964d4c075ad689f51b92e5d04e7f58fcddeece2908b3332f20e51d9150edca38f57326615d7ade834df7862e2bba38b63f6b1bda07c75b3c9d09edc2e9789d35825bfe01b612d6e231ab9661a0e770bf5db84d6de420071753a9fb32e1aef4224ed5963e2ec72655d76a8eb62414e86f86f36d3693f863dc9f63befa693a71be21b489924c5b59c38f7d629e91ba9a9bf2e2a79f2181f5d9f2f0b83b7301830046587ac741fc954e1c0b9c68d266c81bae3a835f78baef27d7b9215e71dd4630505e01fb3c787318dcd01dda7b046a7b540f7cd428fcd2c8952b4afcc6a5d94b47d63f6f67e505925ab5522e4e961557285c91386324aa9c9d30c3cc425cf2fcef335edc14cc5116041bd27e8744530d337be95dee3729e69ad33b8d775dc39d41a160066c9b9d775d67769ee16a65a6a324d73d3d4c72a5dd8d4f3e117c0e942a5ef03429247aab43a3da64ac48a194e71058450d854c58440c4e282904199360a0839340d111bc7f65a715ada940beed2d3ec05c705140ef88eb87acbe2d3e78e6db11269af4b01910c3cb2f3e060f46409f825faa8c0b8868d42fc1e8050bce59732e027ce5b673b7bc72e6ffc1adaa04d485ff6e5983f2e28fb0d2241452061fd578391699d170387325d0e7c9abf1fd573c09199eba451ea34ebf1a51b4582280a639232f39c10011034db107e6b888b4852dce2c57ad20105354b36de3726ef83cb846d8ff1a30dc8b7b249722363f0f69b3d1d27e9ab42765824bba1941527cb328cca150d6258cdc56bf89a38940346373d41d5d239e8a558709ed33b7e2c1a6b5990345620ef62336eab38eb1f0c08d6ebd0d8786cb3ae776dce07ace71378d8d92564625a7f3fa325276dba33c8726c4ee4424d1f8deca767ccee31e04c774a1e07953c2d6903767999b7fb5aec08f1425eefa5deecb422ed04ae262a01a80b5d9fd2eb3cc5a9336ab699b0fee759565591dc07629a3f36ca9c7023e5051c198fe4087e878e98d7ed48d9e6ece06190af1b8c904599258976876eadc31108e2727533d381284c1da266f3681e0f684a0491254c001df1496e5ac79ed929c27525e86cf374d3501540018063c75dd6e1373a13c47a6bd708b21cd52126b3003217d64fabb9ea8b5a5fd5b704251cbdafa81cc8b9cf2ef0312d028513d745acfad900d9e991bd5749de2e061ceae51a440eb45fb078dead83a3ccf6a1134cf23a1548327c35dd15fb8ed06253194e2bc707c07473c1c182cc8ee03d6e88c59045c8ea6830642b5cce796124f057b2a5323071bed4d2b183f4d421ab46a2a79aac81a9476bd429ae51957a8d1a9d11850a2b5fbc06d6a9474d8458f09f8f6a1b9a0b060ab461aafb780b721e1a57c6e8f9850605dde00b9b219d1597fea213104e81e356a04d2c58695ef81048e0d6282cbb3c287a3d991dfb43b9916ae89e2e140fbeb022301b52f9a7706bcd7082143c54d28a604aaa432e5d790aaabb9c46fdf0bf4f61aec7205b7613c0f5a18c98662939178250c916e6f23769cf540e77eef413609d7a349e84a3ee4864c49abf42922530749953bb05263e8b6e02535938812d9b2c068992553bcfac2a1dd381a5960e5363566d1015667c6a2da21ce977e3611b14d40d6304f550e58da9285a21d0d299fe6d7760203fe50b948153a32487eb254177902fab564687cf1fd9f21414c87cabac12783e617d7ef9cce935c58469425cb2ff06d67b4f37254949873b1c8f92233ee33c0513ae8c6fe045eb8819614d38b341d98129077cc139a948d08c046b49debb35654479dd5115c92c7941a0156d1779d1f415d17fbce192454572bc03af326cc0f83bbfd90276a31eb6fc0459e081ebdb2b40579bea7ca295d66d77188dc216e93f593961d3760f0b9655dd8405d36249165894b544d86f22052d49f49ca2e80f70e98c336ce5de89bbdcd6804f26074666852e2e4255532e812973fd5d18d06ed49bb242e5f42d2a49cfd6a4e6f658e2667628a33892faa19a052e8394d8320dfba2fadbaa24680d6fb1f455cfd23a581708cb5bcf3b1aadd8add7a7ed10e6255eedbdbc38a2108c10e6d3021b49edd21acde1dab0c1b3d3299296b86a613267466024c929371b5481112c6303e48c6cbcf182f6aff10ba377d11ab5a6c7b67d3e04ab01aaa06d3b775d43397db04e9d6a5174542d0ca181d86b5bf5d7391c540d2314f550ed8ca9684a23b0214efeed4b622ef76ca3e89ea0a1dc3ddca1f08095851661a3038710956ae20a523140689eba285ef55693f3f603901c399de7cd047c0f9e5e1129703177a7a380bb674a0408765c7601029436b68707d072e9da25147d2cd9611c812b9537931dc1b09d01252f2afe2b218372c10ea5c609dee5315bb822a1740701c982011a0e9f6177ff5227b587d93be2a1c590b88f283dcbec4ece1a05ab4be119b2f4038d0d07e5f8e3efb6c9b8bb60f6a98f83ad6ff12c4295777d6a4d0503b3fdcbc8d4957918c410384a20805495c82347f1422318c78461ab0ab39bc172f1540d42b9058222a715326db59889b21dc23f7021c6911af2854725d36d5f57e0f0dae4022d7c7ef50f096a846c8b49ccd4dba5d1c53d12c4b8d8626fffc16f8e998e4107a646c710b372c27e760c31f9ca4d565e8f7b0393db5d68f4e0a2b446bf1d9007e523b7b95a0ca22b0566ff507e96647245ffcc400337b3272d7b8cc3710016115819238461e8a4f645692a758f06b5a2982de975de792a5d5f0d24948e95def79228c3cc3806c6fe621f31e4049e6ddf0ec8d1eb57e437ab139f0afab73c92f2eace746eb0d3a2cfe86ba6e8fa991c7888065f71ba10db1fa93f28982b45ea9c8254e04e274b6899eac941469051bb015ef8fe947e616343a7ba320610b42564449fe3685a3b5a233a6d4ae3a8bb2a5cbed7cbceb7aa831094c0f2d610e3c1ff4fd6f262181fb93df75b623c752d3d988aeebaf7d34365011ad2070595ef3d285f6d29f96597e8fe92bc211bbeb72b38c9a3a6611d7322ddcc1a5dcca0f3a96841e8335a1775900e507154197c5c379e97208aef11a42a18775864418b5e85b0f5bb902dc4d2e0549123d97acc2ef250f7688f69e500d55b0f865c42f5a25c3f6a7c27e5b07e074a6cc8a1088910b8459a5ad81ff461f2677a08c9d469a1912e83d99c1f2e118feb9e6fcc8a87ee9bf0feb21a9694ea7f4a904a9abe569d9250901b3dfbad14fbafb0ff002e026b99de526afaad71037cd0cc125b57785d3a053a4643bbcbde9d8ce68703858961aaa14d00286d42e140149f5c76220a275a564b14ce4768260a01b02ded95c8a2a09f52addd17cd416a2016afd18c8daa25e20caf2a3da31c79d534fcfcad1538e3e3175f304a28abcb651cc7f484eb3b0f9515eda15cfdc68de34eeb58f1909d2ac1bdb107b68237ac128e6b1c17a7a4cbd53488cce15071016273fcf30ecd4b5a4b37257ec9d5380e4e64deb06ffd32b901a580ee9ae68a14bb1778d5f9e1f82e1e8a98157afc24d7394610545aff0c91ddffde4b60401e871c4df115f137a86010c22093d8429f34322ced579f8e30ab8ad70987a4b541760233c65c4ceaec1506f2588a44297ef152efbdb17c1f6c89eefa9bbea10531ccb3d08fdf6be1f2cb2dbea184ec4eafdfbe36508218e8186e4bb7c67b057a6c21122709e8523781451ef2ced8e191139340159501db527549c5ca74709b5ba5c052ac6ed8ae15f1e8bccf561f87919a131441079bb16ef4b1408efb556054032dbdfacbfec76cfc901d6213d9829b0660d5065b870fc3450d986fd8dfd18b864f60d6c13988c356a9053106cc2a70fefc5cdeeb22e22aa5d4420f64e775330f444207a064e3fae1860a7a344bd67c9b452f694ad2a86e3c1421b0e02042ce17f3b935b95ec4c3f1807fd6a6099b36c6421cc27d78439d94b685a4b9045244b728d1531b841de06b32e95e1a0bbd44998a3407a3a753c02d82d92b3f6b87dc9622009a4eb78417c51a32d5f1b6c03ef427ac3aacd489bdc9b5186360f1a0979658d03a822cba0d202d2a9b8a95f7e81f2bc49d39d8398eb188a13140d180c18bf265ea6047d624362a769d112b551743ca4945af063f77558a80e0137650c3f4c1cb6865c61b08c400f97eb167bdfe167fd367505b9dbfdbcdec50b2867b4fe0ceca5c88220d3598f5d3beba019312e4e5c4cd9607ca70dc50b2a2b989df3d1643de971a50b9ef68d25f91bd3bf6385cf1ac2a590b422836c29b9b8df56ad09ef40897be577387dbba272eba799e571d36d6851588c6d9217439a0aad37b8a00a100535c9d1b568ce5e992d6d61cf7de06b11bad0ce95a88aee353ece5f9b9ed57b6b83a11bfbd2718e3ca577aac57b3201502aa72ce229d66de17d62bd7831a4b53f5062e1eb2dfdbd4b3553eba61bdea598e956faec13addbe5bf5db89d885379343a78346fffee980ebaf4401f93608bdd7b938a3af24c854bf03ad56d77443bc74e8d817a2298b478dbea1ec8bdec7231a5058e5b451faa952ae650d092aff3a298565326125188e2fa62aac7915ae713f26659c22ec52a80a4a4bc5ba558a997ac64f87d8d010fdc45fa390c682ae731e552806cbcae05cf49d1fa4da2da3c28ec23625fbb04df1bfd27d887f0cbb3d3ebf6ff83b18535c4a41c3c771dfb4058709917f7738482c7989bcff08b6fafff6d3ece3bdb544113cd715f56aebadbb80155980e91d8f39e26d70c855f6178c384fe4042bcef07ab00f4f5561ba0e64ed810d8d4aa74dae60c7b26ac163938288d54c9a586b7f14eb9e7ab1064065acb376de013e48cedc2c098babf7664b71209f50caaa38c1a2b5f9188edfdcc13181b61463d35e9505024cac018af5943253901a911b32baeee0aed2b401110502110001fa6707052bf9b120438daec3424e695ea7260082e8b7c8681ca759000000008009000f7a5774530d388d9e03926822a13225b08f94de1262b9b2376dda29a594023903070302031cd7751ed7791ee71ecf877b3e9fdebf0fec1f08824061180a8d909088624989893d8d909078b67ab19225b5d71975df53756194ea43e86a258db7fa5bbd256dd2b7c05a043a1cfb36a461eb48d3479a9e6dcd69681e16f2b1d7469abe77e7b9d75e253a3ce49e2cec5bfc6a00bb304acaf6f8d65f998b31ab05d7642fdf5e584571ce5ab4b6b5b6cdbdf1968d23bb8deb5a3ceef9e4cf075ffbf1b827e569f9f40e6610c4d7829ffeb13e90b780203204878076bef5612c0c8db87c4b32e4cadc9820ac964dcc3d6345ee8d9b2a724d1c4552568d90d6eba6666553d6c5be58d39eb605eb72f1ebf21a59d5f996b7d85feb0c11679c694d6b7be3b8ceebb8e7e3f9f4cf07824050080a8d843c92111291a4c4a4c41b453164f096933822802479cbf65432066f3989788db09223de62bf0ccfff4c92f85a727b46dbe36fcdab83f1fd061cec1147e754619c30850b37ddebf1c58ab5b31ac2b55a620585062bd847f914274ca0e84bf42a7aaad36491c1c99f7001c28c15293db38507194dc941a6e18003132a3acde9a27f45696234cd861d1ae08d476aefbd9de8332d0ccc2cf6f066e68898ed87397b9ee67db2287a8fcaf724006d6ffb5b602d8ea2ab17acc17e36f7874f1324d3e0601a1d94268a2c345837cae81d3ceebd18cfb4f2bda21b65b8d90a3bb3852ebfb871907939e79c653426cd089aa6ed3dc342676c2069ce2c4737c6f0cda2445b0bb7f7a9273142e2f7d91bfab7f67b3dfc41216bb5d65a5fbb4ffdd40c48576f0f558f1b3c76f20673efc5b847e660c8b24c6bdbda7bef8deb91f2d3470ba2577a6c501f3e64cfeafacab3ea03c6a38bef03878f1b271fcfe3f1783e1f74c645fcfce8c613e5f15a8207122ea474316759db5edb58f0483df6680f98af695dd44cace81c0ca3aa47900d7abca4e8deafa88f12a67b7e457daca2e8ddafa88f9bb183befd8afa889dfcc9f72b3af382cee0f8289f929a3c81f258028915780819c2061d9686859b695a0c2e9c578e1c3972e4c8912347a65b5805ad63c0612184c10a22e85083143af4bda1f585f148b9a069adb50e0104ad7390208207115e30c22583020b1787e9821c74f862e68622a898a1062334126d354dd3341a8608b2b5d69aa6699aa643870e4d878e1f2018024120187aeb47225f08f491211008040281402010044110044321b2f320100441100443a4e74120088220088648ee412008822008822008822018223f1e04822008826088ec1e04822008826048029120e923b98fda60421226b0f057d4860cc0d062ccc00452a48b14c61380a8807f4581bcfc915f512037588c3963ce9833e68c3963ce9833e68c3963ce9833e60831bec6d7f8ca17e74cef2ab6a673ce59c619678c33ce37639c71b638678cebd6481871469c1167c41971469c1167c41971469c1107069389c52a6bc4d91ebdda58854d0c834f9915eb3ccff33ccf0852d213ccbf0ae81eabc61bab9de7799ee719410118a563f194e23ad302ae3e65562cb4659aa6699ae6799ee7799e11a4694d2f8cf93a71669aa6699ae6799ee7799e3073c5425b2efb324dd3344dd3beeccbbeeceb65654cd3344dd38cb5cc144edd56abd56ab55a95755bbb77d19f52c69b8edad702b0d3d5c8d7dfd32925e53a80f7eebd056791e87a31d7b07546d6804bcf00ff7b5bb4b189beb9e5357e0d52cb567716db04f9dfeaf1b20c7fa2c89fe4ee4424662246c15edf79db70a581f929932ccc8ade221731fb7c3ddb2d4a9df143f337017db54be69dabc80704994d8978f49bef3da5644f70a3125dd5b21835a2a334f3c35c73bca2a3306aa2da1e5dbdfa5cefbd167baee75ef65e2b2a052a8ffe283fc8216f0002bffef170afe3b6ade9ac8f64c4108d262522c9482804815fff78b8d771dbd67496b512d01d5ac04d6c9f339d6da99fb71ed01f3efcdc43f407cc4ff11361dfd97f36c6f681aeabf57ec6237af6a9b5faf1888eda9b7bea3de5c0aef186eec22b2fec7186f938937089573a58aa4b3f8e79e5777dd42ecf6a80b571593452e7c228d88b30e8282f557e54f65257e5faabe2e1588e698fd44b5c44575fbc01fc827b60995ab1396427765ff6e29cb34c6b6d813aa3fa4c6b4ddb7bd3f6de368eeb368eeb3acfe39de771eef17caaf7c43ebdd6fbaa33aabf3141582d9b2b73cf22f7c64dc58aa435425aac9ad70dab66655dec8b356d59abbf382f60edc538e72cd339d35ad3f6deb4bd6d01214c94ea9c84ea2a518a84f22a514a5c61d38957b26af72e8ade9f4e1b29ae30ca584347955eafd2abf42abd4aafd2abf4fa9b1fb9f00a76edde45d1fbd3893472895218c56e5ffbfa67d954833f67b1c9c4fa9d47995094a9d57994c9c6749a5636ef5f7a39d03188a02ccb321c1579c1c3bc46f6b2aa33adafc57a7bb617a526c8bc013b728d961831e1473737fe4d397923970749a83d72994ed3d969e4f6b5af7f96539ec5e351a69adf3dca636d82a11a10faeb4d31d80340fefa027045a09bce0450269b6f92319dffda6f8ab92aa0df7bff90dc382b80f520594acd0dd34f315da5acd56bc37a2afaf2549e5ba6af4496474fe845fff55975ef0bbbaeebb35801ace741d2ed629c7396e99c69ad697b6fdade368eeb3a8feb3c8f738fe7c33d9f4fefdf07f60f0441a0300c8546484844b1a4c424e46d72c4939078fb6493257bd71944faf62a8cb2f7de5e5c89b6df18c01a0965313a12e9d72b80452a8c72bd025714a554ff7a71550d48d1c02ca657b640cbae99deb0f32b6ac3cbb755fc8ad684f03b18d057ff7598d368401c8988246e55d1519c06c3c1aa019fb79e23520d90e1ade7a8b0079078eb399dab02f2d677255e71d9312af1d67729bcb22386d760b38ca8ae4a0847675e9510af884c46dfb3e8ad1749fb91216c17d18460dfd56eeb3a7c6dd76d1eed35dcaa33ac1fa9e8a8ad3fdec333ef929cefb477c9cd779ecdf33bcdfbc8ed8b482ce4a258ef8d23b2a40391f7632157658f3874d4bef7de6bebd53c20d2476a5f743f0f025dd0fd48fdc9ec9790a4174a5e446e10f991f99bf4d46629f9919ca0d619125450fed17725d24524edf8fce7419e44fa3cc72ba74122ed1f8d48e23d5def23f13721779022d26587277d47facf7b4ffa8e2f503fd9bdfd1f8834225f10bd0c3206e9eb8ceb45e4c628d78f26a4129144428e902e3b3e8f8116461861b08cf8ee23c5b22c7f59967f976519facf8742a1f784a19094923ddf47da0f22b5cf47223faf00fe48fb3b09fbd67feecbb32b5ba22d1c9b206f3beaf4fa2b8c0e711e1623916ebdbd59ccd925bfcf063841307ffb4edb5b7bdadedbc6719db7715cd7791eef3c8f73cf59611565793c7d9527df0abde78549af2a85a12bd7caca58185bc6ecc539dba44fdfbefa4da2bcb9c9ed8b3509685fff2c8b361ffffbc51f22107b00f6d78b2b7125de7c9125d65c152d63cdebb8ed037922d5bf362a4bb813a638e321335486523ca40add0863e2eaeb21527de667f3713484853aa14e4824dcf9a1ce55017d4824a422d409dd08d35087a3a0c8e2e88867a3b284b01016c2b658ec8bf96070a63ff493f956fa637d35df19c2f810bec3517d7e2fdfcb67c217f3bf97ab02facf84ef84efe5abf960be17ad416298e6cfd45a6b8df5799e9ff9999ff9999ff9999f79f90d6fe18cc7f88bc378ca75b8eb33391c5c8ce9e436dc8603c16f3eb7b92aa0e740f020b80d47b90e6f719b4f6badb5e90c3f188ef221fcc553aec35bdc869b78dc4665e1285e29bd4e1cc526ce518e7294a31ce5e8e56e7025ce52eee4549c997230dc0b97e2a80ea26fd26d67dbd9bae06efc6de7aa807eeb62f362dbe15eb872db49d3d016e370702a0e867be1ca6d678b6db1344dd3344d451e6ffd6ba3b2984ed3b9c54e5b2c4dd3344d71aaf516db625b6c8b6db12db6c5ee6ab55aad748d96c159a95d9aa5b58d5e6db1d2ce098eac3c758c8ed130e89aaf350c3a061da36db48c8e31adb272842bd3344dd334d5a70ea259baa56db48c8ed1a73ec5ac9451bdc66d54163d7285b01096a6699aa6699aa6699aea13af64abd5e9d427ce1ad6a73ef5a94f7dea539f9784968a9460383b51956227e549eac4a594ead314c47493555b6948694829a754e497865c15d097724a5094869cb89460a5212357568d44ba3ef599a6699aa6e9165bad56ab55080bb984ca902a74234c439d10c6d132a5965ea5520c9fa44e5c4ab0d290d2eb33f7eedd749a829858a696c9c624638a31c1f08a6519b9464546a92f473b9b448d5ea39b7bba2397b8c22b9665efde45d17bef55167dea33dd625ada4571648b6d3112d73ec399a37ab54b48a8de45ef39cad1acb4f833b310d6bb287a7f3a9521ec3331cafd4c11d7386f5208cba5175ec9e8eda2e8fde914c24aaf951aa834d255a6ca080200028a025318000084c2500e456918524a996b0f14800a3d86486870402c980943831888720c46314408008018400801c6989a19332400f560764d08da75bccf2dbc04ba6d7894636ed6a233fd9790129a1ed154f3045c7246f1780e5faa4efdf615bdea85ed1215040aa1d0f9cccbf3ccc71a09499f5ecf433fda4899b1fd8092d69fd17c34a85727e92360b8ba7a23fe1a7c565a0be00ed34e0ac616f5a933fc75425d4b3ac528d26d53bdde2462469b1ec42f9dce1b609ef8271e1a690678959b279a590b6792e8743679b4dc229fa659c73ae498534df07b0419647c5e91b6e00ad3beb273a7b8d8c6a90399c1630c70f794e9f18b12a174a060e3e156718ba38ff7a33e189a017e17425fdf9eff62ffa6830699092b92682a19762dc90e5b5473062361c4d22b517b10cf273f3e140cfe43077672201e7172b11b5f1747de48d3c89058793fbb20c477560957e3d371534e80eab94700d4ecc136fb70087dfc88a29fa8433c084e5db631a3d0c3caff8042d5c41e9baf6cbc4d672ec2aa09a9d8d340e66f9a16aa2a039aa6f36bba7e04263a09af3e6bfffb38edf83682f416a24d7fc0f6174beb719587f3396954f5617135a3dd23dde1e3a14142782ec24a05be08b557b1c42db10959bb81990d658a31de32460649c8d1b12648f94cfc4296b6c282f6f9405e1ced47d1e1ef7d0777acc3dee4d7b91d7302941841135281aa06d013af2143a6a3d7dc94135931f70a8b427d10b5eda9052543fdc6447869de024b3c1349b3a5cc4839914fa0f252dae9b2b423ddcaeda7e666f5d26bf03b6ed0ac13f9f6685d79b3f70413f9165ff59d8636e454d2289cd5797ef3377dedb7d12d2096a469c9f6a1891371fff9d8f0cd4d5051c36743ca0e68ec260f6cd5fc4e47aad41cbb5cf99a9931c6a6ef2921d89d574ba3e5f7f3c4cd48599cda00f116749c899001670c13202672e3011b4e81409f3f8c4940651a3ef55d903f8a4a1876e48ff84a5319364a944e3b5ad8f01e44d56d473416421caadf768c8a104fc40cb0e37a0637fb64da4af13ab0a7613426daf896b16bc7792e794a454d045afab8712c11765cb681f10d981099d83e461edab18d112748622e0e570ef6c046f2ee405429b54ce30481df55f1efc58e9b5f327c6769ea00992ccdb1e28c1d6bae17759c43d4d494536b1301b6e0b002ebee91a40b335c61adbf2b32e85622836500ab65f0882ea84ce4c392e9db100c25b41f41df48ef612346c463b48e56cb93b16fc163b438ac0dd5f2ad69651f2b6490caef2127b349e3cf769934ad0d35a7a0b8c2a69168f68cd7595fdff688dd4552b67002edbf4b5d19f3c10adde6eef4f035be9c9db889e61271841a58da0abbc429e8db90030c6240218cd12abca318be5d3a2420202eec8e04fb4041bd09b52c7800996fc9dbc9375f223300580e0d877561d92b73cef8e7e0e72de9ecfcaec46f9cb14da2cd44ccaa6afb67790daa24a10106af68469c4cb934e655b20fd398f5954680e7c782308e2781ad45fb359928e3f5131cf66816da7356b50540c2d2de7aa947fee102ed8304fe3829a7904d15e8e729da4f5a4a34c9df1e08b4dec895f6622e4848612f7a9984dc48ac17b447b629f7866b4132897c06cfd3be05122642c25406b61cf6c006f4dd4056326a9b061ad826e8261fb0f0de165116d50ccffdb3a967339558982c6446624b7b1a0955501396b8b955a8bb2121277d5179787514c6d6128ffc4787ec07cf5eb3114a0493041a2b7edb97000955cad9d52c3baf03e97dabafa6767a5e7fec064569fb4f1f998b57f61e63fb6fe2abba6be8858e4a32df0c479930cc1af8a2a337198ea5a8a57cb5fdfff7fb33087d3091f8b0b12100522b1c97dbda8afeb84059d32967d8953917364371c61030d2dd3d83191b406b573e85f90ab30690997a47cac2b5c786864b8746a5d94040561dd58ee1af3303495b03e7d60df4ca1c14022516442de09959e201185768f4b952bcda53b10309b94550729945b96f6b990289b90b383e802e9d9814f8555440695b61a4b0f8b2d0a234c9452b9cd090baf0ec7b8607525c6c612edcba89400daaa70be7de3da24ea068102c840249c91074512d3b1e469eafa54d88ab038050d0bacdaba4cfaf1586015a6547b1a5e2c9a6a16d59303dfcc7853d0cd90fc88055455e8a5997045ab903f466ac22892851da87d32272760f5375c209a6392a1609d11ca7202950f33e4c3e076bdc9151eb14ffdac3e8c959256bdcf730ba6856538d0b1fc6af10351e010291ca184de3d10f235c3256c0ff764000e88e5f0f63f6228454f444aed5c8158792f030da36c8dd70284d22d6cfb0a387690787133e3137842f8731b091257730a57478a7f1ad98cce808095eae0c1fa7f5cf8911626da280cf609987a925809d9d6e1d91b59c867696e590faa237b3181ace682a681c8e182d6a36c2d025226b25d3376922e65dd00452f1c25a9dc23d4382a7e8e506e9fca2fb6e04c11193d0237039c9de6322e632f1b5de1a7aa3a2925fdb33cb47f6273d9877a131c0fc33924d2c134d8c98f7f577f70d4c07a4b3b14c3dbb7481de493274a1710d84c173f43afe1812b7edc781f3c0b6f09c7442c999481e70dabce824370521ceb3cc01b7ffe486d91dcf19eb00c9c1e4812ee7836eab48d15a240185708e90566b5c4049a04b78ad5240b5cfe686d0b0444683fc4b33af3a0d3873fb104626bfd84bce31ae7e46d3f8f0cb1fbfc1e378ce585260c065ab8503c926ceb836cedd02392a4539286c01d569fd97607f994c74c4075efde8693a5fd8682510769aa72e89f7ca1f7df3fda81c6e58c3aa2a0664db18ba4accd516ddefb7b93ea9876128291c812f8a05c7924ddcb7340971388908455d2361aec19647630e5214553b58b2621e66ba5676da0533270bab47a769477cf7a31e3313925a7c3f24015aab5c5425d20f76e11624056a794b96f344a7ced17dc0bcd98e29d08922cd34273d6491d32af513a76701004eb13d6ac0fa98ca92ddbd709196bee85129a9a5511c96ccd846b836dc046562fb1979b0646da030f912e7e61073b00736967706b296507f1a48896c958d7a89978cd50a0453c922c72a58680df54a3d3174d0c789d831599a4bf466c968ee8eddc070af88a44c4741083fc03b62e1a0c1cd550db7579b8032feb693c61323102302266652c86bb29120a4a488ab8741d7ef01aa38c5e9649e96de1a6bc3d13419431df8c32b635f93a54eef3c1d1328a5910fc77b01b5fb13f83278d5e7fe24f41dbc351f6232b3d0c4266367a1afb991ea5825464e2d79df81c93ed14c0833d884f6ea87cc07055f904d5a3099f04c5bb6b25f176abb21e168ebf4a07424816be9703c0e4d5626dc238ff713504ad1d1b6370eb57bfd48caab4943ef8a9456c9a4c0f770e1544aac72d58c00fef9e597af6fd426d90692e105bfc69103355c0fa6009e20f4135c9bee00b12e2e49bb80febb87d478833fb69fc2c0e72e7cc13633eac17cf96ab1581fc22dc275330c681c6d4b8f2346e11c288681b40e1bd2103f59485c9b50dc0adb8352470264535b0f385fccb1b8253fd424210d4f4513e7cfda48f31dce8add14dc2e853af9827823e1d55e8ea750967ce27cd0d79c4c20153bac1d3f109b68d78fb5b17d81a15147288bd201fa1925982ffe7cf0df3ae6e04e2b32c5e9da30fa1f1613da0b4b7289cb64f8f6bb13fc1ced2f2edc70022f5374baa6205f262762020e367ddb799c30d5c2c007df2611f30e26f2c83c273aa986e8539bcd46bb512ed312533250c0d8965cfa2af9fdad10ce6d7499f6000d324b38ffecfcd8651a1c2ca0316c5deef197cd622e95030a016615b6fd5483325c30d76556340404dbfe689c6d1f92dd650a5eec972288881a7dd28153af5f26c00d971b6423951d84196cf232894b3cc9a627657ae6c3066c4fdf063052d10db591e29b6f8d79337a99cc85d112ee996c6b5c120f3d881c902635ec82dc5e660d36383aaead826508a7f611e31c385a9b9799b548501d965186907399886c74d446ce999904548894def43291d2fd2b8252fa28c3d3afc8dd6f44cecc4cec91b89065efc1997999f85a6f0dbd5151c9d7e69cd357d01f3d166f425b02f3cf489fd3d2d18cccccc38d93650377808b7eedabf7dd83384527cf4698886c9eee4c860d13ada21ce13050f4f942652be38984023e980d2ed84ce85c2f5bd1de1ba8b5917c75e5785036d092ce90f3611d37134d0f026c5c23aa59df87f271a002fb0fbca23ed92f64b4fe4d1a51f21a690a7ef8e0cb87f0396663d6296c048b101d32ee6614f0f4c796befbe5945bce96e5e8dd70300036c3ca3718cb7942e8c0123cebd79d6a54b2bd1b25878730aaa36ff8f2e94216391f0307568ec0e78ef2efe43ad32e5866a3ad10a0e38f8f55a1793082ab4dbc120c3091680009746ba6cb861592172d0a05521ec1953609c47309cdb2743c009971e42b3c3f181a60b614096ac80fab810131947a994626038d9839783003bdd7a4614886b95c1568a79432c762590b9cb824067c4ee4ad4d0df67b04fcdf4ab5b795fcff4c64e84d06796f0d78cbe14a60c302477473c37edda912f08c130628a969b11f6d67eb9867eaf4602a54763d04576d1d9be0ac1af23531cae8a00a7505c810acd5b6a9872bbf0abd57766d7038ced4e81d3bd1de2bd08567e5dab3103db3d1270b54eaeab0bea9fb1c833c72905efd926e1e2528bf1a46817000f38cb49d7656323971800e44eb86ffc14670fe213af235206c40c96fe4f77bdad9dd2248b4ad11cda29f660b5e41f4d90635036b82e901ac3d44c740ab6dbbbd380391bbd6e966f42ab0c45db574a20511c1e360ec90c5aa7109429e6d4e878cdbd681b730b6897dbef9a976665458db0cd1cce966b124ba5d39fe9979448ef19e937347b4e8c30c0fc44b2225a44a6177054d91e9beb9a8ef8d08a22e3d83fea6abbba6e7e9da0bb625a74d67a25f90e00c95a3286e9789b03d70e1b53658307903cd1163df15b32e6a1637452a92995acc90bf816af6f555e1e66911890b99f8cd826d633909d0408c8ad63e66549a0cce171f8f2c35df8d48d19077e5b359c1665e3541428eb45a4d5fdd5f606a26fde62838a334d1e54c2b106b52f331e48833346bc3420ddfa26fee397203f9ac15ade4a3d3e8d1fb30e44d85b49ec0af370c4636e0288fe17b6016ea39e9f24025e31990de7e7b8f813d1723d2a01f0fd0777cd3dcbee219b9912fb5361020dac5b888968a9a4880e7baff9491d22add32fa2e8529b7e147f0c736369456e0740662161c547e5d6c204ff8b5b9e2beacca43703158ef158001d647bb93addcfd590df2bd49b5580b6a5c6d0ceae18ee91d456bb77b3c86f1cc11c2a2727ca841599673324efe96f2858028ff8717dc21ee86c33287feed1e4dc48399346408fde48ea4bb6aed574aee2e9aeae45e0eb0c69c6be3f86cd79fdbeaa745f2067d485a62a0cdeaf5941a9ba80c80a9c8b9ce86813200a176c35ced276fd56c6e8610c467b5e22c97ee705ea0154c6f112f75851cf158bcf699c8a7bde6a09d6c4e3ad46e804a795771370dba80ff35474a490005fca5f40f620a802f928a1715f005c7862747b4d09198e40a92454bb772811a66340635d0e1da103e24492cd1eb956170a68bb9363d2d90bdc4e38867bb6843770b469c58c7b05816f1e0280b428e34f1e244d2ce0728b9aabaccfe1ccd26bc866b606ba95a21d89c055cad4250ae73200a3dacb9b555cacee79c111c75a456d34edc3c8a69040a49fd98b7100322601186107d26f64318056182147e41c69f125bf2946727dc934392d8027e476028d223362348d91ff2d283df5ea743d2f0444c1a2655037e3fc4c60ae919c36f87c2c56e3b509be8bb62001ea93c0517c52116b9826a2f8edc2871a8309be8a2e491f5bf16f7bcf8cff48ae46d87ad6ca87473f26878a49377b8ac596b1c71986715d2b528ad6a52d063349a9f2873d543e206cd68b38cc458ae877e464c42bdb26cc4f1ec9395f7fde68403335065ad196ed539cf839798194ab520f1da6ff25fc4f1936fd927002f63b6bc5283b52116277a77120f10b2f47574782cf89c00bf800f95bf11f74558758a0f7efeb0fc8a6de65e2cfc3481932894c42b7791c161613241be030e4cf8c7dd6f32a8bf04022e986ecfaa74ca42f4ba5db51947dae3e1b9b90434750ce28e4760726cdb323d0c39d4ff058bac9fb7d0aa25c8ba3101c4d42c8d7325c8ce150014beb2aa59a2f86cd7b6cb8254b28c42704941a85372b05e01ebea3d2da020978be2de7579a4d3d7de41b0c459344b0e999f0d36aceb800ebb5edea502ca2ac1069a64358a4a006475611b879303415bb861291a7249b4cc1bd13ef4ad93fded4a88e9b8ab1bdb031bb0589a9338ef7f6ae7f45e1ac1f20540e8b1f535dc967c2d853542d4fc99edb68f8ab6fa4e88b1a13b1cf7031c0a6526ec0750d842f321204669e286d078050b3d5ce45baef697407b2d852efde341b937bf251ac41d49872952c16541c1d1ea9de94cb0fcac1156a4a8573ca7a3dc095eb48c72a7f5ecbc908e81c22317dd638e173b6f667fd0d3b732a3abd703ae88975edb3ed04e637b527cbec88158c5be0b00322edd0993b6333f5363dd2dc070a9419b54e7d0ce5aef5ce2a7545ae9118013fc0c7f0b7d321490be6ddd78c44733d7cafa8f288ee6ed694eef2f09fa9bed52fe4285dd65ee7ba2ffae2a2e5cef81d66a1a606041d9cb8401d3b057e3d6c06a928c91d861bbffb3578e1d3b8f398162db9d004928c9b8faa86575c01de5db5012e3c811fff422017e76b1520653b102d038be3366b1d6eecb5518e6830dd0dbefc5d4148ae50d3399cf95d1d8ba315241e2e86a8c583174c241121962d3dfd68b802c80e0fdef81aec6dcc5f9b3ff7db85734e7e5d9d183bf2e429419612c6a84b1009b1dd73ac82270a70502ea9908badb64584155f7a2034b50935d41f55508ff90ebc6cf760b441ccbce24b3703b19855c1e38ca916efa56b65bd1e9038b6d40213622b2dfa5d7cfe3e36780a5ae58abf2cc9364fbea725c6c17b20856cf627a398613e9e5cd105b4e796d35f25133a7fd8c4240e70e968d841b190903ce9d64a72f1c1a1073a0a1ee9d08f3240a7e3857da280e0070b415d29c55c3135c3b752df8cd5c7b58a5330e6a9e023cf593d9329ff0f8cadfed5ad899e260f488980197088fc27c8771c2a77baf83c8d94d82a166bdb9157368f78dfeaa86536d6a6f60ccee8bb7d06406f4208b8196c9bc2b2e2cd950b20473de570354e530d09b1af2e32aa1e360c8c0c14383cd4bed15706be426517cd56402a408bd019746ef25c5d510347cd61b4047dfe021032307ca1cf406d2d63318386c1880431e70326302e9f40c1c3a6008a0a0187863ec5692589d8bc63c3c6470c0b00d5a07b2d272441eed19a42580290e64d71b230e39828db6e43eeba27555ebca8be5bb2c1a3fa2564a0a7cfece31fe06c432d1c59d97c8ef14ac13511cddffc249af8bb1d94e2b1c839ed3301e5febe1edbd74dca02628066b52703b6da11ebf995adbfffe592682e9fd91e2dde4eeb8a6336e7cb35981c33e3111e39dcfe0ce010eb4998a2111f2245d5bb92502f929e6c1019ab1f8caacd035ffc7081a8464cd747db2ad3c41cc2fc3a831cd06ecf5ea56b874b26a5c74e901cccaa2f460f91711f088f95b3b62a192c152870fb5a10e08a85d7b90af4365816b1939c3a9f1a1d8e62ba2b33b00d25703e96319c6569af1305d15e8f653d12d7f6cdee0bd2e6b08788e8b98a8f50f4040a27a438cce3da5da994302d456c79edae95ca080360f59ed62f9c46c6975cafeb2acb5afe35424422b05b9a9dde4ca712573cef0665381c37e2211c4bff8a73a7b884d45c5ca5e3c25af0494d07236c7b75f225d89e51446ad5b39fe4c01f5638664c5549746b1d72f4f2fc13bf3630617e31c586e9cf49a0d3527ef4dac519a3989e3c44072878416ec91082f06242a281065bec0303a0114bc6c35a83763490f3230f105e9ec30156c1f86ac4d7abe911a2ca2290c487d4b59c0771286e5100df0994275c52480909a73c3d8402e0a6020a2736adfd2791e004fe734b7b7ea47ff9e229a79cf2a8b596d0e1b62460d261258d2658f479c8e2f165d8538d66cfcce384e25e30d0aa0086a36fa6e9c476708c1a0329171e7713a81110254139d2b8f87da433aae78cf5cf24326daf22a7b21412cd12c041f30f01b0f3032e5fd51d84973b1473b3a857a13114b03ff9a18a6c1648add6ece2dfd770e49eb314cac45d74bdfed6d3e17a58a5372517f261076f94f7d6d902eafffcd520f3196c3f8ce38bfe250652435804f42a8b609ab4a033961cbc7f3947fbc2ed8629cad48c2316b92f8109384c7599971b4425a1ceacde73864c4622a4637b0c4f1a3b3373f5bfe32a2b08e2dbc820acd442edc4953c8121ef629142604502b8240ade94efb6a0e9134aab588c3cae1786128fd21e63257e85239bac8b8439b3a6f1f29560124e3eb1b46df36503172a50db35a0e9c8a3b26152f61beb85647a4d118b5622b361576afe930066f6181448dd4e129df204e128824d3a7c1fb3f3463290f3195070c710e4ec34b1deeae7dbd91745621296d37f2b65c036be7e40b51f7252caa6c4b39bf0545415a89df8d9737b91d8fc890cb367435cd3afd5a9e22652c87d9d7bc1f42f9fe175a8e079e1efa4259e0cc447ac3b712c7f99294cdceb63e2aea50beb196aee3a289d29b88633eaf427dda1241b92887a0ac76202887cf07caf4a5c4d1c503d169481ca9a7b77ba92773b253cf4c25412777bd804e8b4c456a15651585a7bcba7af1b48779e9fadc2ac7d63dc006f28e901fd4323ca894496cddcd07cf302d90aa7dc8ae360cea52f2cb9e58a73904868982fed60cec9125c2fd3013ae9e9133636ff9727a630c93e5eb5dafc2dbd1c24dd24bd5d3a1ab52dcb82a6eaca72889b9d2464d501deb205b897838cbb01535f96ff4eeb28fb4566ff0315a925b5ebe0cfe4195d624438faf9c74f2ee1ddde4f5e72a1a7ae2d1e17ce09146e3c12d86a4d36e9085cce8e4fae364e420e1c23e05561b5effdcb241916ed9d916b757f887f1fbe332c63aa178d6315cfe4406e2a36c4d5cb231d4216f0d5615074710ad890bcf7fd658955699a4defff176e8a911306958c714880a2b1c12eda17fd0656adde7b2142073112674344e5145a85c3700239613cdd78bd003f5b76ad423c524cb484dcb9910bbd370f6f6ea3432438f184f8268e8bdbb9d296886a1891b6a5d1ca75564fe9d45fb01b8c7ac2e5a4b181b5da828c26fa70894c0072a19f624276b678d7478e2b6998ba66d2b4854cd78bb68f52682445a1714acb46a661365e6f114641b1196ac9bf6a9ba69ad7f0a40c589d5fb86f3d9083010d198f5121ddc603ac895ee55f40a4d45663579e109290b32062078a2b9ac9969b8b8fcc3f7a2019fba356b51c8f87925853a2ac5062863e2561710bfd87040b9d221da8ef28bc4859b4e448c82b6d9894c3aa0e779808e375c8b2757cec5990b7dd6ec38569ee72e703a34f449df03a6d093519b52c8be2f2ac64acdefa7b7ad8a560035713422ac5e13b48b1f42cf7ead742bd56bd31f3dcab4c9d3cce6795b5ce57298439882ea9ff748a58d7423922f1922eae4fae54206494cbb8bbc1486d31b0acc679b6ca17619c0df84a16eba6cc5826690d32d60e24418608141d50da90898a0f6d9258add46dc68de766f166efda646127c9b9eedba159a6c75765d712618d0c471d7a5c0e4e766cbe25cf78b08c2f1d2fce80e0849e8aba091eb7207e2bfc5e65ed6d5dd4dbf3927c848a59d07c7389b87d4e4e401928d9040b81abee0b644937f8674d5727636c58962d172646cfc9fa374017e6b03d0436ffb737e20e7b047bf785526dfb7c349356a83cedb332ea71af8006f78f76e61d4ce68f39207c85471cf434b6a60079b1671d1cfed57337cabffe226308a2cf592ddd67e81ec90b06b0b88425cc4c53dc4bfdd846bc27916f00113398f4908f8f766d0822166c404857e970d1e66e561ae74d640efafc56dc441870a3fa8d3e66919051a65e987f20384fea7e62bed75c0a17bb1030e3d94f927a7d00096440f3ecdba0a3e302718cadf8beef9273987ce68b8789278d8f519807d99e1d089b57fdba7a3d06f022d51eca7e0a50aff20c072c5fa11e4ce0a544eb604397541383ec3db6c169b3175deb8f5cfd97e5d8b7f0bb67ca1df045ab6e827819628f8b38065457f10748942bf045caec82f221807669ad8035c4524c46d31c1f8f3f0daf5003fa22eb065e3fe33c6cee2aaea0eece046012ecb07f6cdc2ea0f2a2e9e16f43b76211f20a2aebfc9d8297f900f20e62559118edd376d5a19eaf9ceb8180ca20026d3ffe5142cc1b46b216253f4547899d8444c378422552694270d3b3bb504562b2db0fe9f7bc709b226be9ec2fd8037003d00741b87dc613e22a82770adc144c0b2e0c9eca27fcc60662c36c822c45e4e6a653a16bdabca68c32231baa4531eb826179dd2c054cab7a7d15a9f3fff45a644333d8a78ce3ef55fe049e0344a5954533a35edf1cbf11c733c8675129efaab4a1bdfd1240eca3661377d7bfcef0e3d10a94f88ce6b9ad5f27f91f9e383ffcd71fb9075d90d9f281ec3ccd4e4bbf20522c40e376ebe02092a8aef1a646d30e8763c6bef40768375705099823dd61625dc183ff0623dda9b1a478ea5b12924bab90bda0a792873542fd8e5889c44d214867e23146b041c136be84011f7981469fd9dc5d71d7c81f24e8c57331d6e497882ed167284e6efaade9ecac2a30c2e07b31a22ccb1611d8359442b1d39dd69510f6a5c22bbbe6c8763a309992aad1539f8a7ccf00cdad0d30dc48f1be52d9337aa7295ca684eac210419bb4f04de364e7be10c43dce9eb43589d2a70642826244a10c7a81bfc1100e24b4457da7bd3267e0e20979e11aec8290b42338862b42f926db644d54c935af14c5b619d44e97c65bc5b93dcec06a124bebd9ef377204bd52d71228bd09d18d76c6f85b817a9af18e897d3ef196becd92493b26a2719a85ac9f9bd1f3aae8f70186bc000a7ec0a42f3b60a3b5658396b1a8132fb9f3aab7bd65a0c03bec5da5368943269a18e1276a4aa270696a2561b417a4c63d66e11d8395603834a85d3912d635441b00e6b6a25509e7e44159125d70d892ae35bcc53ad4d86a1b08523df2ae6ede86eb49561a7368c0ca5ccf9867995ede4e398ef7411a7a9268ef7002762ae52011183d6ea846fc7e4bc9ee35e635cf35b3f94541e9959fc3817b230872ac2a033df1b77b5f4b0da3703698bed4c442394b8940679b16ee46075108ceb49f26463e8f5680763744c7c8abb7f4eec9658dcce6aba2d1cc2556f0baf92bf72362e76be89a856081e32d654e231289c0d972d8c1f5ac708f793c092c67cedebd10c4f90c8fc083bedcd1d56121038e70e5358115e23eb553ee4e1c2b9c330f4a6c426ada362199b5717fb0ccc0e3adfa02e3e2512e2b76fdc7187e10c18afa50982d07ed625bea1dd4f2ce8d73ac374c1c43891803b4bbd1f90a14363e5065d71ee70bec90b298ebecbf14e5428e64aed7c3e8b0b244c4049de5c58c146e3270761adde682d9b3302b7986b7128027ec4b1cb0ff13d236e31118539b3b180a04931ce0198ec4c8cf5e68d168adcff182a7c1ec26c1a367d54a74f409f64a174882ef6a97df10a456e194e713b3c87539868d78c3e637d6541e97ccc6e992eaf7308a95fa42613abc01f6ff0f2e7ae466354ccff0cf83696ad6058fc42387ae18090c68b088201725ecf9d37ac203def2b16f02787ff6d6043d78123978258c802ac5a793702d5267ab1d5cacea1eb4a292eaba8435a293bc1d5aa0b8205aed4ea17c4d20f20554e529a3faf38e64e1c5898526966b9c82dc802e87e6feff50700cd1f0f380a0bb0ef6936506eb1881ff79e04c675c77c00719866383aa5ca0a39b955193f28e66a2a5271c727c347e47ec78a8692f1ea8ecdd98add1491e119f834997c146696eae6cc5bf7e86de707aa3bd8ad0610a0f87d9d4585f91f7e452f9c9427eac2d4042ed97eb5e3187fdd0535612d05e7588fc6a8d87f171e7a6109442e4b04975ba5e28544c95ec729e31a565b83c6784c9e3527527822f8f20148df83f42607d7e64c0bedf80a707318849535ac1e538139f20f01248dcde3e3b1ade6b025b17c5f470822828bfcaf5f41ddb07daf662933cf0b07b1b7bdf86ee26a436da273e6d53a585d60a6a7d0bcdbf692c0a7c914de6ecd69634e362b47746f56c618e527cb390ea2b0d2b4f80b7c50c83a1c1b69c9675c22cef2b6d412dc41581147eea53940b3511c6c15db0f881d74efc1a03f5bdc49e4bc63f9b6a07ece523c730f2062ced0fe9106a979a82378e47f4bb47ea3bdbd255273048f436b122e43e603607c406c3d2cbcf1b73bc3f4d26154a2ca17baf8dd9ec34fce7cef0a47a60a0bb9c9a466335860a8dcea0ca00dcaa3b792594416f58844d22227feb20046e47593853307fa3580c311277ab8a4fb1dec67748cd1a68e1b3c85f5e2ee92886bf7e302bf1501072a03cee84aa96d8c50fac1bba864303d427e27d236014c1006279e1c95b32283891d62ad5d970f4c340f8684bddc10b0f203584335bdffc730a16ad20fb9146e46ad9a01ea6fa356935e2b14a3565639c4fcad5e6f9eaaa04c4550a1ab09fca567131875c0dbff6c6e12bab23967ad0fdd74bd57acc0e2e60d330308503407fa9299003941514d42a823ee87d9489aa1a67aaef75b69e8c9271713daa35b41f0fcb1aeb2a73d217aeb757fb18cfa5182a8e1bc0666e7c20f49635f00a41cc5c50fef3e7b558112ccb7144f28980d51823a4c6960721de2e8d9099929393aa719184ff6c54a79cef4fb58b0766c4af635b90e7b2e1c8b172629324541cfad1063077a496e6b2c63831ac8f6dca69143492ae086c54f8a19328e94777e9e022c3293c2203c94b0f70f7b98263a269296712c2ce2b6cea468164d6085a796566a7c45d551e1fb84fe3a158832c692df89d862b64f9120aea42f3ce37c426fb7ff02ab9762b72687d97283c1b6c4be0bfc2eeadfb5b7b6f5be28e41cb3362f9a3f89f9881c35ff2850abe5d3565c3a5781e3fb41ddaa3fbcc7448e7d8e099246852888026d1f262d3507620286122a4ed4fd19a9e9a011669b6594902ba84ed5322c3c741c41892c8f821096374ddf0c548d80792f7a12be15fc006340751672eec44945a5755bdab8ac41e27db5b40e216d5b34baeaf056f686f637ce6d2013c876723c897676daf57cb8786657844a636446daf89acb63517ac85c5ee13958adc741a84d39b3fd19b13a7472db1b3c40d95d5f8b1ef46607e08b84c159f6efc88d3d5a299d754dadb83d54635ba5edce446877b93d3a9a5401d6ff45b639c52d288ee5d6fac785dcff82cc61d24e9e0dc455154200d1cfc0eef9eb4a51358b803d23834587cb7848813570884c15949cca203a52d58febd75f34a2fbcff736a7252c1d6bd4e9accdc16c7f50c63bd7759e05863ccaf3e34321f7d883c03921cd845ddee1adad6b189d3c8c19b9d2e2e891e1d91dfc30b169992dddd0b41650a9ea5cf95e70cfde9ef874eb5a1b621fc63513244a4606f30bef373da2cb8b224ef26aca3f661bbb00528372e05ad361d72072ac6d67f1714d0e0683a35caae9c420419c0db86a53ee90de3fefd665df4a82687fd6786751916272df6809b16bafec2a5e8f01f42addc1978beecb4d91c69fc9a4e4f6337c38c2558c93f8725bc1c107e54b8cada435ee4db29b6ffdefbc064c231ca4d0081d45ddf0a40b0841e72e6c17256c8eaeb952bd892254e021f203aec557a59a9991fa3cd46b27f87d2d83f6d6b5cd679e3b0dfb599ef867ee613f724d073f2a75aa9695158557e7bd4e6992cfd8983b82ef810fc7fbfaa58e2e9d52248d32628c1ff964a3e267e7146c723b56ecb9f96ac5fe1a31872beede549bd3022ba6bedbf5effefa52fbb6c912b682b2381a102ada695aa562b016db35272eac46c9af110afec85a640345939cc6027bbfc9879fb57e54b217e8bdfe1877afaa28ba216c614303358bf42fd08d2d6dfb163f92e813c971f044e1554eefea0ac8027492ad5cb796f410571774add40ecb83acdcd13e27697ff10958d566b7a41235ff20d2188d7b46b97f46c4e911516c9b752fd9d5136d1f3fae43ca630d3c613ada83d93cac1c7dd152e43150fc375974971f45902b88be14cbad74f953007b25d1bf62d9152e1f8a3bd79aa98b38b15a9d65224f3fc9d4ae5870cda4049d7d9fb5bd1da80d2bd9df2ba147e4fa6d1ff6649b027ba5e8da01af106b3e525bb128b44a812a4a29bdb6f08556b14f5c427ad88af9504a438ad939cb453622c3820fcba2ccbf80aad631b74bdae5b815310a2586b617850683af06dbafabeae1b00d1e5cf79798d96220771e23d045ba2a425887462c3a051daad136caad2ed59943f8dcc98356acc25921281974356b701ca8d10a383d28b0c688331600e66a942445131695d2b8f439a1a60edc4fb46e2d7ad63da587279b1b01cad67d2abf2571af1f1a8808cb57fce8425406e50351e1288f1a676b59c875f952d8b9d24c5c847898cbbd0174d002aaf941635c509a0da70d386a4e61f5f979756f64085297d9a9ef82d4791468e791dee71da8312251e709c59a86503ee23c5b5c49e2e47a0400000000000000ca58d62f5216da38bc43560e0b6decb27450cdc8fec6ee6e9288904d24b27b73e50e5c063906f805d7b580c7200c286120223d8c7831bf1ad33266cad476cec664aa4c1547bad28e4ce52567d968970dc34964cc8c7923237206bcb565c08ff2658c93642e6e8aff626fc08862761489b1d951ea0c47ee4a9d8dd93176d96ac78fcfb39aeb8a0ba10f1742196d7cef6e7381f732e907b9f39a1e4c49adccbcb5df937e90bb6c6d36a3ce489488f483dcd94cea81b4241f3ca9072e8056402a825404a9082034d4e1feefd5902977bd8488140391e805c9c68b179dfdfe7da213db46a6d1218924242193040e98040d1031c83ce414e4246ea450914411bbfb175990b191a94922a592694929e74cc22589969dc40d2cdc17afd044143eb210b60c12bbfb1751092728815b1914e820d3030bd432375051c9f8404688dde5a72d39c83df78d597d74c3393fbecb29a18e4ed4ecf877752313d52b08faee7e95a5879c9f7154e41eb15d33e326ab5d8545ee2a4b6571127c495f6dcab90d5613238a53698528257caf24981845b1bef08845114750a20a4398620a190a231f86900517b02401891f468084113bef48811f61878844134a0091b04929fd0b2a24ac80848fddfd8b25504185bb4724b8b7dca3b790f0c20b53a66274994202890777d843be22e7fd544348d15185d521858e1f52878f12641d3225903a9488f961071813936a91db7e2a1d2ed4860a74a02281112d50ccc0c5478995d9d68a322806180f1c56cc0f231ac45cd513b21572dd4f1563e3e626cb20d79516b20e199555f211333a1c41850f483ac0b899cc8fae4733c8876f221f4ec0ff3d0422f4bca6de114eeeaaca718c114ece1ec9b6124d316e774b7956abba2396e2e454d1e19bb3d6ed337a4be5b0a52089d3f84c2cc5af2a57eda8339546ca904bdc717b6c4a2f60ebabd974b4856c6ffd5b235bd9f4338a418ac5483177a7989452526cce3927c528a594528a55176fb1a9a137e24b8b150333531035b3e9574c3241ee64cba614fb8b791098aeab4dbfd247d93062d53245df9633646a477889b8ef858e145f893ec5a888caa79a524a6f1dc1e40cc8d496411fcff92227919974912927018542402e39927cc89e711f50ca49a287e8d40e6910c865cb1437728c1bf9833c0a4e2c45142c7938a415e2a1871143b84f8f8f4d2c6d2b4ca69c243e37e5cfe16353e3a618fa58f14aa5f8a1bf31a3d8868f15cf147fa3e299dcb39a43d8f39fd0df995db8451339e43f3daa30f984e8ad472cc50f7d6a1e0cf1437a731b600988f61087b44618900ff237c807d13486f0a781bd7cd73780fcd534ee83dcd6b6f28f0828a4b54923c8fedd6d81fc67e52420b0136dd872d36f33dbca49eec73cd24e926d76776b8bbe0bbab354d402d1f4415cf7b1d9b1bb9f9a1d82964c396b77b7f56185b47614d5c73a13ad9e9b301bc7402c9195d6272991fdab7ef4c954c910fe30220975d5cd07a41c7297b74b8e4f6a45fd5212c27de1288bbc4759e4bff23e185d4aad0381e364f88e65b07b03d97eb154dffea3ff244af5a0cff8eac994213cfbc9a5a87cc910f78790d95baa1d5fe533556c1859795f1a96d408a3842eb50e04dbf59528eef50857de514ef61fe5e49593c492ceab8bc81359be0813b9ab2ed585eaa8ab0b57841cdf25c68231c6512818989717d20ea41d9e4a45da2147af33f8582add60bfbe0d22b7365ea94740c81d49247293a721ca96765a4de7c8e4eda847f06568144a3a01104ce4c7c7f00c52c32decebee1f5de320513cd21e2edcc2bedb7c164ba248884da28dd8c4b36313097735d9e69cd8843ead43d9743eadbaf39a1106fce3df605fbe0daf242507d7fa7d0ed66be44f1d84e47c65e2a3fa9584b20196c4184ba2bb0d5e123929a52c99dc9c73ce924829a59496c45a6badb5964cce5bbca5a626bec417160b0606a220eaa93409952f6c832d897fb120a29e766a13aa51f6c37334c346d90fcb40f5b3e195c4181770ed2b37c197196b1b6591451635cb22dfa88345478a1572c84008a3d7aca49493e668e560d55aedc592c230ec6647bc1ce18231d6b423ec1130f988992b7347588030874a1e810508618c2b23e0714757d051848e1de890d93cb8ef41187323e60708618c47c4784ccc163d9fe28ea810f323861553139384ed5e821d5e143e1c21448c1170502306251712fb22020b9785d7755dd7f5d94f75841336b69f2a86c7142bc8b1d223470aacc8c13242410e16ec90a3c62825470f2254c8d122f223c70b72d850e51862e3fd54395c0850b3e3fb8bc3784bcd8a6503637497723e97724e4aeba4b4ca73ce4929a5b4d65aabb378cbaa26bac4171b16bc011383e484f497aa07836bc8bd1d9f44b3e34fe086a76a4226015b64772f5d9ac062772f46bba1dac1b2bbb7c3e193f3083b52f16a6c6a87080f920a56320b9ad861f443133c341103957bb7f79e742070c0a864fcc581701797724e4aeba4b4566baf6aed7561d8cd2e0cbb37cbf0cd5419c634da167d788aa39cc55722cb47b42962876a450353448438353644e144976823a2705a3255ac5432363d5432317005de1002b2c015987a343f561bcec018dda584d15dca2927a5b55a5bed7561d8c56e9661ac6958dbb69c3b9e0f080402120a853cae232560c3ffbcf8805e8c5b1647f08e2412faf3a9456d0027ee7ba1932e328b3886f6f7ca4ea40b416be32b43cb18a6bdd4b0c675288eafbfaf01456cf91f2094a8b1b10f512265cbcf88f063cbfffcbd3583b80270cbcf1ad827be65642f5fd35d88868f7c09f25277a0b73ac752c45ebb527733e44313ecb17c8cfdfbed33c6619886719ef7bcf69d8e1ee5978f8df2dfd7bec38db29601fbdbf98bdda798f61edd4247d6f40c99da1ed332364e729db669ac43febdf490f698eeb4d427beb3d73e621ab2ffe80e7638ec19ee637f31ee723296b00ccb8f618869e8f0dfef4e7c67ba13c196afd170b1eeb43ff113df9dde52eaebca1eb2943d7a5ccd4564c00fb10c1d2d5f77d984657b3e73da77b8ec1f8ce8c939638dcd70e90b3e46049a8dbdd4344deb608f85a0c561ad73bfc3e5cfdda62bf69df6770b5bcabfdc680b59caad3d7e187ecdc061773364eaea80cdfec07b3b8370f700dcf0a50b68eb715fa456091925a68831ba7ff653a928a5b4562558990fda0f2a2244b10445b1a442c2b66d39ab9a000aa140407a08797210228aa55028140a0951b124c87eaa2576b880ad10c920b70416a325b22089a8b4e8b800c005220220daa25882788b6209724c4801efe09292809dfc6068ed8ed4894859e73100ee98df7eaa246c5ea0844c0b5c50620a13885aa08412ac55a1b6b536b4adb5d68e60a06a810f2ba01f3e44b07874a4a0f3c44a5621e1049baa093a68a81e700f3c643960c115820ab01d3c5c56a0c02e81850aea1259e840555e309970598164820817f8b3f231c1440b134c40011352503181b3e77e2a26aee0223b882f8a2371476bbfe7dad6207712d5dad50620b8064a2047e03bb729795f9522140578a5f89dd364fb3b7781f19dbf40e03bbff180ef1cc601df798c471b06c496a34858e28d04c418044496023c8a82abfd60cb2f60bf4f7dc1df9280ce11d0250778057823f1a58bddbab31986eeb20802ba13fd0374f70ed0abf8d66606e82e8b44bf000d5fa6ca49600d4539499c79f1a254fa178906a029cb493c555f5ebc2895fe45a29c59d6e62c12fdc7607f3b1c2c912c20ff912b22b943c8c7973abc18425a9e0f7120efe1e8cea2ff88ac288baeb0e2a525519e0e2be40a2b3ebe41b82cd22f963edcdb718b42aeb002ee10e83bdc470701d2f9b9ac3ddcdb2532c582a97cc910187f7eedefc431b4a718ee8d833b6fdcdb0b7012e9e2225da48b8b7459ad56abd56a355926cb64992c9365b2c4b7366791e8bf145b9c84a2288c9be2a35a502da816540baac5da9c45a2ff1265b929d6172f4aa57f9128e7ea31d563aac7548fa92fa41cf9bdf6d7c57a8b5ced08e5aad6c4c842e34bf4a99aac28511206a260769c300e518fb276a49415f7c39e9423d7178debeacb8e8f39b8dfc39ad31df4c712e02e532f7080170788e2d5c48314438a21c58440e0d69e1577575a409cc9726bccddfd01f9f89d1703c8c71b6e8a200e847c7c9127343d5ce8411cdd21a1d7be13ea84fe863a213d3b34f546bd2177c86bb06705f270efc110d2d12f9642e2c60f0610e7e150ec077708f776a8c6a383f8e8100e6b10f7f6ce4e323fdc8bd7f69593a40cc1010cf2f19d26f49e8fef3cf2c7903fba4de72307f21d8e6e0fc8e70f8184401e83844034d7e1a62704729bc7c90df20ed03d06891cbf07c38b250ff776878b1bbf0743fe18a0eb78b8b7413e18a483f8d0aae1c7fa3d183adcc332b7db679c2462b8e216b7711f31d7ef25e1c89ddbcc2cff6638c6a67d074fe06d6dd3386b6da6617f5bf174e813f403076ac7a9a5cf1f05217712b5d57c8d6f421ffb7b35f6ef0598a4704f9df2e3da6ab65dd9f1bb0cafa4b20d7586a241eeb6d68ebfb56a86ca24084585ec92d5884e097861432028500b24754a817e8070405240ac938a5d89256959b67ce1216bdf8287dcd91b5bc2b7383b624934134b52a47a30c807b164d602b1e208fc1f5b7ee644ac58c269815859c892d2887e80583455f4f0f103889797938a44b1b4b89058d98d7b5ff6440d2794d8776634422891f30df88e31e29b5a980b544808aee1218641883dfc09c32f2ef40fc70861d88d9cfdcad1cf1c9df9edfca6d6db34df87eb0cd749402008eaee447e6630b7343146857ae4b2a5116a6c17f65349d1da1766241e5906fc3937a4ffa989239f15cac7268ed07caa88233d503e3371c4be2987f444beb2a5450f59fb163de4cea6b6fc0f071fc4751e84f36c216f38349f901727f1bcc4b297cf0c08376271937c10fe6ec309818925f91e2ee4850bb9b165f65df6f299c1c974d4b2a5105b3ee6ba101c5b7ef699d9f2ad105116b1a5c5b1a5cc962bf2658b93c4124943c3f0ab6295d3ce72ebad3c8a786658c8bc6d1bfc2d6f5bcddbf4fc96f3f6a6960927772e5636e9d9dee32265f378f4f4fc7392cf77de3a09e83bba3b9179d39df73cc84d9e4ecd9b29c79463ca31e5c82dd62808b1e10af653d1b4e40e7c294f353a52d64efd93b8ad9c28343a9d3fa574a4f4747487d2c113eab4d2e93c8ce8919dade6af1dddc1cf97fc93ca49e5a47252911ba438d8dd3d9bda7c2d9e54b28f9aa6fd2945839ba6633ca14e29a7154d7b18718b5a764ad177ace90e668fb9ec3aa99c544e2a289a430a9bed623f951438dcddb739f17c9c99724c391b0a0d6c6ae137e160172b5b76995ad96f2e5230cef0e602357fd33aaf6d99d67efb4e4935df77d781ecb3cc9463ca31e5b8ae19c2baa50e9ffe18fdf97be8efe1a9c683f094b20231ec947a386ba1ca16d327d7b6271551a62d9a148f168f191e311b01fba978ac688ea296ba4055295168985a261c172b97a965c2719132e9772e50d65aeb577c2bffeaaea4dada7d7cafa65ddd9d489116aaac2fed669cee307d22f7a545d971882898b42d970b9475eb0285b940e5a8c5cb57f7fded6b5c6966dbebb3ee4a2752a4856adb747769bf1e5f2f82f90c5fed8a61dd892ca91c9a724c39a69c1b11e54a0a832870a2a089426613603f5514365451aca8a05859543ca5608e99f538633ca5ae53ea55fd2e51bb3bb9304ca25ae8c8559f5cbb7e7772f9a5fda47252916e5154d836788239a5f6c5b2874a49c9957a5ffd8ccbf5452ece28842955cb20ac2fe1cb4a2f1831d31efe49e59ad9a555eda21767f9de8842e33aa14e29d7a9c6c61e873d6576429d52600cf2e369e58a8fd5909d54600cdad318673ca536bddfc9a9bb934b8b8fc50a60548fb03fa14e29a97d4a6dda5f5c43b6e56ff0ef9d5fe5cba0ba8317bd3fbf42f927d40966df1863c4b4faa7949ae19f73d29f504aa94f28c7d95e5b8e736d19f2f149051a00df1faded7f528131d0ebdaf7e75f4f67777f6cff8c3bb94e2a7ffd0975bdc431ae53eaa4b2b1b21150a076b6414f6f40a1da0ad84f0505cb9ea9d9a5fd5433307b86b5ef862e505b63f98fca610ee2d7b8ed2f07dfe2cf9c7f87932f72fdf51befbd574646356a3fbe09c75e4d7b4b2ba8868feee2ceacf6f948ed47cb889f7dfdce568d42a33ec4a90f5dacec0eff49fc3c0ebb725d35b54c382e527687ede7218e559fc44debd78f7f12b50cfa9fafdfcdf055e702b571696657dde1cfc36a2f8d860c7633f4287bf8f8bafedeaabb19ea9b5a7104be7d130e8ca1bed52e50b57627b17381daf0312e6313d0e73710bcaefa18841da43e08bf0cab3b88a9bd7eb3a69cfa20f8a6d68d7d23f728fdfac16fc28106a84fb189a50fc3ed33b562a93e375b71c433dfcace429be1b797ee4c393086ea798fee4ea4eca0867fbf5678752da95610cf80e1cf807a74fdf675daaf27526eacda9b6ea123cfc05f33b769d5aef633b9f17718ce9e337c65ca8131647fdfd4ba4f718ceb02b5b1b9afcbca7d596dca8106a8da6a3311e53a6887fbde8b363d6a5a3f583868666270d454118303264e08e5a415425a2f08ed855d08b19be197e16dcb9df73ec2d8fac1c24133e32ee57c30ba4b39a18cee52ce49e5a4b4566baf6aaf0bc3eecdb09b65186bda86b56dcbb9d3f178405ec87b4f040817421cdda59401ff62a923b9899bd8f04a4cde869444850dc229ee0803f5e5df505f561b9b1a28a3f5fcf03ba7623fea2b5f3d185e8c2ea594734e4929a5f26fcd22576badd55a9665599665599665d92b8b1c8975b12ed6c5ba5817eb625dac0b8b5cc431208c1163b8531c434a1963ce3963504a298d4192420c92146a6a582c18189214f2b5563381113b51dcf782678fb9ecc23450db75871fbbb2cd1dffbb4e2e6cfd3b59f62035def7c7ba03fdebbc6b0bf21efacfbbee3cff62f6f8b3c75cd7803feb00c42e7f2cfbed2910faed61440b641a7ba9698ff5687bffecb1c7dc68fbebf168d3242c72967dfe0b7f06c36716c2afe9163a32d61ffa4ccb085d1beb936b8730901940f48b25ef3cfe4c774f4b8f3ef18d69b8dfd17e3de3aeccb3cdb1bf3ebbba1301a6652c658fe90eff89ef0cc721b27fbcdee6fc2e02b10cfe9ad61e73f937ee6a5864acbb932bd317e6ffb05fd73be6647cecd996312dc3ffbafefafbfc69a072f619c3b84ed3f4babe03281b3f769deb68a04858647f8cf16318071216b93bb9767621d78100b51f6abf7f565ebf010781da156e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6ede0b73fb2c9b9d88eeee6b9dbf32b687f7ea39c36db2196eb351776c55b3e7cc9e8f5731fbbe687563cfc72b973d1f343f6fba0b71d04f17fdcc1ffaa93b90b73adfdffe7a7e766ad8fe9adcd7323db5fb1e0ae4ef58e06aede9e7f3db7b3c9d9f7f479dcf7e7bcfa8a365b89f7df6f73d9fdd596ffed490ff6a19f93b5a86e8ef4faedbb2965af4efa5e31944fa85e813dfa0dffeeaee6909a24f3c621af083f4c433e3b23b6f676a9ffded4430b3fb5a4777dbbc3ebfc510797e67331696b9b9c87cdd754433fbf31d6e7b0f873f9c48e73b5147d398be345c3b9bab156adf9fdb26da38cd267ffd8e27d332e6df3bffd268799f71da96bd87ebfcc675baac67b8cda4d142f291e79cdcfdeb358ee42367d76db087e127aa1b2d6e43faf104d20f2070d470826a8a14951336aa13de66038cd1dda59472ce3927a594525a4be4df8d04051b35090ab6447e7c8f3a08e9519b788cb6c6bd2f8b19cca04699e8d1bdda7bc492bf7daf229628f48f32fbb4149bf8be7f658671264ec5b62671dffcdbe7a03dfe8a4718c8bffd0d79d3cf4d3768da3ed66eff5ef721ae21fbfb980cd9d5bec234e98a1ceb53fb30fced7aeda99d8aed8f8344b9a20c8244c1594fa94a69d4a714ae7ba79892da16154b530939be4c91a9e9830d9453622f3baf01c185e20245e9e300a79df39a53e39872aa8c8aab31b5c2ec68ca59428e3fa59c3417ba8f0def431eda6316e6346c84dc39abaeea8a5557ceaa2b67d1d4d5aa56516b6a8f3842ab8f38c28a23b8d5c2c1da8493995aa61c53abeea8aa3a535575479d8923f5e135eb0c89c735af8b8a5cff55550a2a4593a1f596e3a4a052a61c172995556de2485755cef21fa8baa3ae6a15ceaa2b538e09c79a5a2c538ebdfed2563b749629c7a2aa6733805a947314d74e913bd9625fdce46fed7e69214991655c2ff6c50a71c3161147a8c5111347ae4ab5c39e524ea893cad4d6464bb42e2d71c486758923f52136ad0b290af8d8c434465ae5facf92a4c8704b1b2ef2c66965ab9ef8b16d4b1ce9a48589239d6dd9ee63fb4b1b4ed89738f2544fcc6c7f2b846cb12f27154c9f52e285ea3a8062e18bc0dac9167d69fe92a2c832eacf4d731c799881a8a494f444a6efc1401f4644c5124dd954ea5bc596ff56db882c65e887505e73423fa1fc6bad61a2cc3fa1ea9cf5e7bc60ad155af9734a59b96759b6a42794fc4eee27595ae0c894b26cf8180cee7d1984746a0f239a5a10d28cea6eae76cebaa335a4d0871c85906e9ca65508e17c4a5da020f76af51bb37dfe25f1c832eccfb9edfbe787246b3bfb637b0b23f29ce136db66c06d36d53226dca616e6ee8575154b2d8290bbba6a01845c5da493d0695dc511db42952fea36db3a8ed56edfb7bfed2eccb5da939b3f9f52a734663f015c9e11d1a9a7d409754a39a14e2aa754a773429d54b6ed4f29db9f502795532a8e6c27d44905428b0362915851805827959ba5a864ceb4563975884600005000d315002028140c08c402913894647116ce3e14000f7e8446664c99ca83c2248751108324638c21c01840000800c8d0cc108100830805f207eb85b741f43ad6a4f4e0534a63f6e444e717a30799f28858d4871e646cd4ab126bdd2cb1c45d8d01b319eb6126e0f3200e0e596689ad16078f5b4b2cdd3d2869e6b622cc895da3839cc80254f4200892fb8b90f02844fa6a79215a96a2e86b28abb8c6faa058967f4fd278621f107eb2ba893d8b341ecd7499d81d235886f1127bbf4ef257ff96d8e2ae88c1da174db1162ceb8ae6fa63f60e9053ddc53e6252d7f47fbcfd3e6cd25588cd6f5bf89ec7a612f4f91e215d4248a62ff4f226e4f1e5662b6c722b9be71a8ba65188f4ae270e7fd03596b3362180ac2e96157f2cd758be8384dcb2ba5031af476081aeb106124d95129584ffaeb149eb26f105d7b8b1ea48d4316a080d5f7d1781c71a5931458420222effd29a4cc34db88bfef54028c8f7cf2e4bd2d2162103bdedadaed95b4442d6b78e3bfa8e8e349b77426f125bb25378f0a409b02f2d70646b3b0e6a6d6b570791e2130120b058b62c24746db8825ac5fe7ffc210a34269eae3b72ff444c34b00c124c967f3cf6870ec54b1bba44dfec1a04260de24c681900fa530a50f1fba91e4edc4db490c5c156f77ba8b4eb1017ead11dfad7cd825d2bde362d43356b2301aff4ed69faf603b5fddeeb49b2abf437f8b621f9b32d480b9aa9bee239d9d326ac1a420d2939020d75e0202c79c9588a6fb753dbcbe3174cd20d968e9502ed483084ad5038eace5d4c930ec9e5b77d6ba5f31d2eb322d244dfc3b31ca2c114682f4640ad65f4e7280827a9d9dcffdecd455447bc52ed939593f43b5da5ba6eeef478b9a0cd41e110ad55b13733a6d8cec8d4db3c1fa92b8f8ea94715b04d887c2ec23a2bafeba03310b41b741e8afc0e17e043b4cce4729a380ee4246e475d46a786696c44f27725a9a4427c021f3524af61838e0517ddb80b438856e44e8741ed56d65722b39ecc6e540525ebfa0a45ca849ee15169356616afd4d1543fde2e84abf8c51b49bd1bb568736215fb8078780de8e984c045a9391146b5fe52236778aa7022439dde3b2cdd63c9562419a3a2b663b3dd4cfa12a6abf3fa5cb1b480325115986d49d07085b0764d9310c4a956367bc666a2f1b5f1a08a1ca2a646f2458b5745e7da85bea25dbe9910bb67040bcccab2984c179abdfdf7e17a00c64efd64cda5d5457aacc443d60bc9704da24c513d7f6dead791863a23949744672ea0c3600af5ef4dce62233d3dbfa7a439cec84e47a3bf4734add739057a664fa8a480ca2ab8ead8581a56a234211305396e2565199818e0d194504106cec4535808517697d3a0179a0d0d9be3257b979abad8fc542e7cab35b2834e5ea8391929763629541870cf703fe855c1ca8f344809d42c2997a04755a566d3822a455eb420f525e1e29272341c39f78735cdc54cb168b632794bdaacaa9efd92ac86f899c715dbdfab4749539869b695d1fbad00429312ff4004cfa2c50bd6a44923798a285c5c6441cdb469d5a601bc850b172faaa888823468d4d65ab336d050d7cfcd23ef112972a260f1f8f1bc8b8cbb87113f688d7f5625c2bbe0b3ecb62f32cb560bc4703b879976efb87ea91403803de8831e2311e5270b89bc54402cf57a77549cfc512e87c489d2413b4ddcdc04eb3a468a0215d7270ee74491bf1b29c38902c968cee85867523ff4cde1264e14fe2dd046d91a8d320a64970fb000422f71af718d297cb452f17ee251f35fcac65f961702b3a238a0998239a2571ffe24ec949de9b8496c27a84f72a260087bc2a5405e35fc2ac6a56874b10566015af47ff97fe6222eaa2b51608f9a22d32631522843bd6357beddaf32c754ddcdf60d25e4d06766b597952290fa7e6ae2735f98244d5ef397ca97137562bd19af85dc13ca5efde6f7614ed4d192d22932c782720dc48131f027f10ce644a9f72554e4c578ee0fed26f1eba00bbd5757d98c9d31034c0572e87be66a177f797658ab539e7c445cffac37555587957d2bc0830a34270a8f1a8910d0768ebf16c83dc40b9bd39075e481a1d7c3813f990a30958f2acb108b1c514e14897613425df4ea8313758cc5094f3b67514a08d8a1cb2f27aa5985d2e1784e941ff005f3bccd4d210639ab2b4b45057432dd3fa9e9c62a7952c240a6591b31fa36276a7e21127ab4c8cb9a7f86d1947bb214d518be992f2a4604e88a3a23ed9268918b60134177ef780608e2550bf8fbcf22c757a6e3be7a5c2946d53b608d4b2d1b502721752a270ac4cd596424c8e2ff0c6cf818c82570a2706679731320776f1a1e569b1d11b7ad06dd2ed6c6899287f6da36e2d266a32511ebfecd4a3e711878d6338289437935e8afa27b6ba714852cd8eaf840dd3c0aa955269d4d5a01629a241bad037f89dc606d3696c4dd71654875d909bbfe52e954380bcf3bad0c1c938290d1e8e5ae843ca90e3a90048f160d34e42bd3b81ae3aa2aff7558993730b8b29714b68beabf8b3f7887a18acea62902f80f36d4c9c598638da5af58fe2d16f372b8a64835d6dae2955a64f10b2cdf535e2d2ec3c07e4f448491a2211d5a8c18a50c2fc2856f7ba60d491dd1a8e6d8342a04b4d9604abd97451bb78234430610e533ef47aae4a318cacea31b8b367915a4c73fb1cdc5043dc0a317d7fdb9102761f4a28e9a828f1563b0fca8e3a1b727702209cb88f889bcfbe7beebdfccf0880ada920cd286de079310c4b5ea10e728335788087f2e7259959233e195ca0e98019a909d59b293ecb87050fddfeba1317121c1b1e2fdc4df57e837dbc28be4aeecda68d77889edc8aba0642d6465c2cc00eaccde7e4d0eebcc826e662a2bb26c585554507014fa540f1d5e23bfe81841777f42b7d8212561d1720d2f92aeaa1321ecc1064fea54b8d005e5ae7719867a23f2955889628b019e0f3f34ed37927038b22a29572e1462649e458468725a3e492ea08970000ba9f8d703712c3f3730fa2a95a3794a189ecf687cb9380ae03d40978fa6481d3799171087fb7ead30b3cd3d36c82cfcf3a00099163896e978abc3c9be29b00ddb6809e8db7d11ba212836bf51a0814e119aa3649919f07d3e8272a24455909e16a53e9c2287fefd29b5c087d004ec20d2108f2a35fc820377da764f2342b93a511e4b13be4cefcfc23819102dbc55dea788d672de2abe33963ff3928dc813605f176ccb4d8c2302ca6e0d272bd6b788bfffff55fd6ac5e62ae204c317156038292a598abe3bb5d3228496d7909dea32c038ec77adb2c8b0a06d957f5c771474d43ac625bc1c6b5c3462c1d1083d378a1f2570eddadf9cf76afe04f45094948ce4dec02ee77db53b534d0bbbce415ab402edceb73fe02697cee86e30a98f40c5e6511c845213bd65e38f750bea30e10c0c7cfc9751e484769e4998299d8337c5270ef711572d10e772bec2f1c2d288d7d0b942db792eae5d2cfefe3d5fe4e9cdb4c711da38115ead0c793fdd2c78e24b9c9a5ba9a0523c19b7999bc90e7645e8667bb482c905e3260e4b55ec0ca1a0b12262ff340685dd4c052b0bda5a5eac57848c9e98d7840445604a99d6f48127909d0dd4089329d9ff14a4a8c66603e8c5c12319d059d358a48c19607f9d95be11824d0a98f1c2d2bf5faed10b5d3f24b0fd070620e2a9125412b4011de1535c45338de781aa07984e84864b552b02dda7ee4cd3fe8c8e35978b459842203572a473a0394cba8b521ca6b0088b54a4639367e02f3a4902b189b546d87055bc0af0c2acdadbe21397da30811c8ed9563974e094b680ccbde3aea3168abe3ea18c46fb3aee4a776ffe4d4a8896a2948b95b81eeed56845cf3d3520a9a30ae726f64eb6f94f72b06879d8323cba66725224d5fedb886d2e70b7cae12c1d0d1f00ed1e81ecadb4a91d1b51e4603104db1d9a124e5e13aa77b5a9f2afcdf31c6c50f88744d53537dbc067803367e5ecf2800d4fe717e4b1a21502a6f5e0a0830389f4fc7136cf45179d09d460f3ec2de22ebfd6d97ec7599f4427809666da37a3d6de1bd836bcccb5ccf9277125d016d7c0bdfef9159e61bda533bb5a6ab33ef6ac1a7d7e1c828d67e93ab7ecce0b1085c0a6f244edaa3632b640d483a76c6e0299f9c2481d3a53cc9ce49da9e16a994dcbf378fd99af2e9a38e5bd71325ae5c6b7afbdd73581221210071a96e7487051f7cab3b887d85bc9ee825e9d12469b9351c3cc4ee6a593db8d667905d63229ab89ff3390d026e79631b3b7f8296ef5fc4bb0b63f27a483856135e8c595a1c811f30b1b4158cd93eaf431c9f16182f15ce814f36dd5ef7e6f05c79d48091fc91919e4c3f5379dca7eeaf6b7d42e3c73a7e9a217ba1c04c1a6913b2143d2dce0b7920ee3fd77030b75965c744ba6b76111ce2d6dda46a072db04b18e61b0b48dd891deaf9f3a5c616cc17269104ccb03b65cd81d27ebf9340eb9d190f8c8859d923a51bc17a048a3b56d88f6e84d3dc696bcbb54625542115c73669c257cd4d8ac45e91c0c31dc56c9299a25b5e11eeb8267ab864b64061f853e688065add676845066d247a0304341e978d2012bf720850219ad9db8aa7bc705a14a915ab22ef8e7d17a65e6bbec7365e840827f3cd466ad74d1f07cd995c0f4f2337495679319d2c1bdc43a697f69740fc853c236ec8c7d58e969cbec70c5ff126d1082ee5e9273b6518075f430a8f71fbfd2291ae471276f8c35743989fbd56d46f1125b41c8f4b82cc3087f4c87a9b1672ae82452b7befa2550fbfec3cc63c0406eb1904dc2da1cbe13966a09ebed57c8abc3d2f8d107bc98409827e2a24cfa877ea36b6b0d125e1ea72861a5908549953846739ddc9a4259d89d9546660030dbdfa61fa7a799a111640736b197dc5911d5523defd17fdae44f2021f6dd1c687bd462b5b493c1d0c9630ea7d2cdfbbdcb1837edebea451d221c6e332578bda670adb1c57e78c0c80acd18d5ac32b9963f364017e9eb1b942b5c316dfa20801acc8ea64ee6712460d8acc36aca037cf02970de3ccb7519aa941d1ee0ad219c8052adcb60c4fe7c605df348e2ef6835043cc89a4261323b9240a16c564a48228d397a5bf1c6306d49d1924ddf5714a5555198e18185ac520ecf67780cb144b25caebfcda448e98790f238c8dae6dff7d38631da3ed931097d307fc805b8aa2ceeeb542eb389d05ab503b1781292ae11637ede5aaeec3cee54bceedf7419b1d44a8f8a0d39f0ba18a04eb9f3e294c8da9da7fa29a0032ce62dcd0807d08a3db8e1367990ef685f79c351569917cde44446fad0204a7658c7a92450a63aa38250d61807b3350e561a069688ce3b9197aa198f48f91f2b60c3c90deee62da52b574d60285e513c2648bd1247148d993e29eebe62868b1ad95344682121ad990e4c3803034f6e3f2422d31817b837638de9414fc541254bb9ec01b467bf927255b2c4117929ccd8b0a1c081526e22af2ae55e2ffc7826deae23c446934ae98ced57483658a36c2ad49b43abbe7a28863d27d994535850aefaba755bd7880928b10aafee6a83652473862357e4d3e3f928cdff3e2424a94d61f49b9016405c951333a95a50f31bc0a2ddc20e7345e7f32da65e427d74a6b06f878a9ca532f0cc052356e4c1634daa6ad2c64f74802482f94ed94fd47fbf6234327cf439daa00224d3c868dea1163b5a61d6211991f8db9d41ee6bc56da622ed41e018215af37dd3231824c2883c03d595531f35d653c5328e7292b508bbe269af15d19719443cf61dbe636a7173d6e6a0484766837b00af290391ff63e703bc27051c425c9db84f309f9b49bebb159dcb4b90c59dd6238b1a5ff2f5e82a74decdc1a145f147b758a6b63211d82be57885618bb8e758012d6f452b82de48a159cd9a8e9f85dbed9cd09cd5a464f33b207c22b94101b24c50aea3bbf3f0e297b2c8a991aee97373c818c0535c3b1f4e5ed3485c9c32bbcd1644e892efb816efacee75f96e5e91e54fbadde457880e9d8fa21d2d1dd43786137f39868f0c006bbb3bce61cde6dc3412a22ff83332f50fec6ef584da29e3a9a5eccc15d51df8ee6808505564c029d74525b936858faccd17c6d659ff1ea43d7e8998ea9db8e51bc227e68f506683b7aa4c6c0041c5bf228b48ab4285a9988e157866eef896c561b85c2639341f4a4b21a04fbf571ff07ecc014ed4ece278e982b6c9885944739941d314d307925f5a66544ecae57ddf4b3951fa6f8d0d1745af897f0b201d6d0858a3a21ccdbc3532ea10f5b17b5a6cddfe8fad5f4fef124ed827422a2c09185fa248d3aed65bc7785f044a2f0808c3bf98299b5ba59b2bbdc18b5966b2244a237598c235d46f1ba6b7dccc8b4e6457c1f0be118854f0753283568d1f7220501fd730f5dba67be33cb3d1803551c827f10e42aea977313d8589434a7a319c428d7b7360d096901004327268e06791facc498446016756b5d7d75140826c91658b73f45a78a10a45de16cd8871a190a9cbe4cf6187dfb717ea9617318b58b99fcfb2affa409f1796b216d23f96360c31d2096e78d6501ddc0396b24e2d6206931199def9c7d7680270e8219c321d9222dfa80b438ea56462e4144b81293ac10b1586d7a6a44f4d332ad4a630558de5f5369ad8cd0ea72e178afc6faf421d4de731617853df93b511339b7f1c7c9e16e074b804463380f5fdb761d657f2f72ac53971e25e56b0410a2d543edfc1dceb0e7a63b08b230ba05bbdd49f5732faa3840798e12d7c22399512ce1456e7f14aee8bca4d39de70a10c0ed731d495cc5017125dc9b6ed8ef8713b5dc966f624615d5c96c511e1b965bb068ba0b9a354b0baaf520b6eae644aef260458f55536e366ed62a50d81e68e75b45ff240ff3997c5e45158874d8f01857ec8a0bfcdec78fc0fd9b91f304cfd580478df0d979c7c9fbf9f89d38c4363ba11cc3097eb64d3511d466d158f6f60b4d6d49419acd21e115f109a777af0bb5e432d52a1509db237dc566f57a77c399acc64cbc62f48574acd50b2a853ce807fce2867efabd701e671c83cee0d050a3f7028b8ac65023f2e27fe0f76680310bec5538e7742094ce80ed55b437a6b94b00984bd4c607c9d8914c261e97418b3897b9abca4cf9065285dddda7e6697517d3703fd4c4d934b3e676237a43c5003ff67987ab0baa9c22832592fd364316cc70984fddfdfa08eeed8962663dfda71990477255e311f57a934399cea7ee441eaa9ef6f0a4ee5e451c4db637e3294b5800f1e9e3f00a5c97c8536ce548b8b30c227903a4c1747572b02cfb76cddf2cf40d78440e7f3d75a0099f97fc1b2d698993a2eb96fa4e0cacfef76dbd99025f159a0a55f665c305776e65de4cf259cc27e6a93b59daa7f235cc9d633130430cac54055b45ad317ba4a1e0245d2aaa7ef3961aeec14a40fea35633ea0da74b40ad77c4f3d8fb1e6724d45805477c6a0357ae6b9f6f2894139affcf69d3cc3462c96d5eba76777654db00c976d3eb9decf299d5402e8d50d5fa2b447c41c21d1f7bdf16eb2d2d8f7a825a3f41051433f1d72bccca5fbfde337c9c8c4ad1c8ede9f802f01b40e31c94ba8708306ac6f314c2ed05e50ad68bce03d48db6b9e07e2f94a99d0059576c0e503e5528aab0218363545acd7dcbe1a396f674976726d3a03ebb237b6c8c72882927cd74e60e3450d94af2b32b9a7484e1d4219deea2432738cd4c8568a05c731f20265008c894affc302e5e7d260b002e5455d1ea7d61757d4a9f16effd3c042e84531c9f849e382108963a49505ac58474478561e6c80c5f2701025c507736c4eb2fd730fa180999aad84dd6d9287af1128e7a99df96be944349a6524c21752a6277571c08fa60b0c53ba2f2fdb535fd2e114a6768a30a04b808be654b1f3bdc9a1167a8492d86a80c4966f907001c9642712464869868f8bd508f5435612645e2e133aa49f191efb102e259deff606cd1a8342281f40d201c53a7498e957443742997a0834fe05f58d14b4ec2150b398f9e8b71e09d2ec7f77518d8f8b6e0c426a000406f1fc9b8ca2a9f28c287fa0e6292548493cb7e8c9468882409ad8d5f62f4f23a71307e9b44c913d7ed3ad7931a61ae74315c39f937b4aa261b58c5ba226a3187ecee06fbaa24bb7cc853335c274d9c32d8912022bf960ce4b8ebe4ad6ea413a3349ca7d951d101fb275021216430e947edfedaca6ef34a880230da7bd61d142e86941522e772a4c9dddba2f8030dcc46c58304c18a5c7b5b7f0f81a203cc8c1858818378a0fb73d431fcd0103917edb2e5ce8f3445079964b10fea60849931c200d4f573b3151d927ab84f43f91c22a0d4a5ba417d978fe0d1600abd214bd131783dce78525a8539205b8f12a2222aa8461489fdb888d946ad792d5422bd74db07e75612b01353c4b00ebea42c0c710a6e24f16040fb6902fff7a2b70ab931edbeac8ace3368ff7bdc0b80b136bbc65972f3aed93d75f1ecfd8aaf0b4867656f708129dda7d8636c50d89ca117781305013526cd2fb4cc84b30f63ee30045fd80fcdb23f168c09c502e7bcc5d1e0054a4f7d179bdd5b0db8ac34619c2d5fb1e565d1e026abc8e17bfec610356d5e5fdd15b976ca9eae299ed05031fe28595a73b9d2a994033dd1b95a45d478459a6354c5a37559716d8296fc7adbf88cc9f0b134230113dd204cc5586c6c001dfee2aa0024f6ff3f3450981acf8757cd5b8d242fde6f0ac624c511d83d0b78a83c8e7c30d0c008c989113dabcd2fffb6ab22c1ae9c0dade090eebe251a2bebc9a8b32accbd1a49b6248704dc7458cec708075510f076e5e9f0f0d0ae13eeb5969432ffeb076d37c807f9fa17f1b95bdff4097c2ba6c2f71378d70f8409d88ab5052e501ff708db02e10a917bdafd96d90625d2cb74a07dd564146be68b60f364dac050236d4214300fed27d44e6f8ddfb1241402e03933a5764ff7bc2707f2fc06aec074ab42ec8e87f6d765c260ec648df98e55d13939070cfffad76c887d5622ed5c24cb32682355b589a880ddd9ce75327e2fabaf02d6873a374706cdc403a0a253a60120ad052d7a571b795a3a018f81fad4c191d70360fac0a68ae4beb6afbe63fce21a841db9a2c2d1f9c3829f7f2a15069ef2e1811a281791dd4d2151506925799aa26a2c3c66068240aba75ba604f54dc25529a482f940bce7f791045d0180cbc29edd652db4fad6fd12eda44f6dfe2e678378f8f3126c496bc8b06045fec195fce1957e896f34f70b3c4ca2bd89268a8c490bc36b602c36cab8f98798257a3c5992580fd559abcf3f354248f9df80091d13be7a14a5d5ed96fec4727e778be7efc081ec145a833cc6a28298218306c40df28ba2a209658b3b888f8d8670b6950c174dde72513b5611ddcffef8966bbd6f26a005563e9e710aeb5f0dd7737696a81a51ea5cbb5e173821fed32bd3898adad412fb8f3b143882dd33aa71babf1a6d4eb932e0c1a58b5674b83bb840371de4b753387ec8059534a57ef4b146fcc16a7f0d0d2a574d854ba3a61209278a9e80cb5c948c11a54b228394f00868f1c0cadfa39ea97d6e1b08f3acff0221147b0718be0b76e6597b25c0df3deeb3c9620386952fb796014cc9c9c8b332c1c42b342628af721a0df7569c4e9182e06cfb2944855ed9a5943f2227738c5867ec5cf19bc359877f68576bae1305ab41936605de49d84b45aea42746cc3b4937040c99531f39853bf15cc1b2831b1adb85a3bf8e4d89949ffb573b039fb0f1514653e768a0b3836a74ace41189b2b4c9477a1a32c32d5483c2f5a0a962ca27a46bfcb0aa089e7a511ae69d4ac0deaf9f555752d472fd135f0764ea7ef13091c551e114bb6cc65a851ded2fed0f0ebeee1c69ba06659099f1de2790cdc0aa4688c52051879072fd4cf089114becfd01ce3d9b633b1c7c96d31420b7a1adcb8328fdac16751d45657d3fe2478753207f2eddd82c13a630d9c2671d312bb183a91705642d1ebb8df52b6884c4e5817e8d0fb1a7cec94db995c57251fca46118bbf75a0ca757e5323f4909be1197ca1530f956d40ad6195db33545110c98da84490bfb2ba898249ec19071b41a8050c5fa581eb5221cec867bfbde9f75291f6a54cfe90fdfc2abba076a82f9ba364678fbb86793e8dce61716688495fff27a414dccc7a5240f0edc02d68604582125ebb44f351fb98336a27c7f8431eef24c5d12578c5244501b73be5dad5f040f608997af817eec348ce562307461f99ec0cea5cceab6cb8b3f0af7a5c07c32a070f7f5e0e2e08086c7fafda3543397a89f59d45b5e4c29c3cfe846ca2482040557fa7ee26c9fd54e54a9a896072c5f7409743cc2ca58c3fbdafa0c49c3baf76dbee5ff71809f866cbe9d5bd97d82e4a35b9e764b01281c6fc1324741250f8c26d180d6a0102aeea67d45c869c08964bf543131f6bc4ef857604fe4ac0d63386e695356cc6fe454cbe422695c35fff1120a306f87e45daa3d6d955756e6642cc427246b419ebdcb79412814bb4f73a71a9d6712de2bed284b900aa010e5819479c1d362b7c335b1093c82c1572d4e56a65f387b7c9cd0e94c78267d79e1fc0056bf1209524de19f73415e07d928d208600d58c68bad4a81c998f4de170e1cd27b5d46e2313560fb752b894774e92371f935aae6f8fcbbd974933991d2595dd6cea624799b3f83e199923a9150b02414fa7c9c5833086cf89c14e6976e97389b272c958ded6454356cd91f5278412101524002ce2faabac530830f51b33ada896963c97b8102a5fc029bbe4483284949d9d30c0fb1cade35076e90b4a5ec43b0f17c2931d8c24b7f8b98dc39976935df62a04b20363b2db6859a719313fcf339ba061bb921db0c7ad6aefb736c3d6a91e72c4feea9800805bf8cd332b6eab79dd1520d295f4bfba1f1fc6bdff765d2355d69d8cc6e44de3af8625dc5eb4029bf3be6783aad8f91608f68ef079ef864ab1d63eb9197db1308fd587f3c0cc741ac021843b7c63efcf6529802ecf17560a6e757f040b3bdabfb8188e260303e1fe807d0067ccd395f3502467bc299be50f8c7497c96c96cdd7a03f8c1f641301e84ab004e17ec4ee122ca1649ecb52589036d11054cc1c4db56b9e11eec2f9ddcecc4bd6a2559e3569d13a5692eaee5a9fd5d7496f453f343fa3c9108a37f92f0b8893d36a37ed115f7e1555f86f39a055dc24b686efef74c96094042d8588fa8d2f2ed66e37d54a346999037214a064c7a2ab08dc66de774aafaaa683cffe292b8e7bfdbe61bab55763daf1c78cb93596dbd11512008641cd5704265ebea21af868e9f2ea7f7bdfd162c2f1eb528a1336c15249778a44be2410729f392b095a029f1d9615b0349a80c9bf1bab82b00622d57407c4591b334adc2042d2e25362ea62fce1ed571c675af3f50f00cd7dfd7c106e960fd3bf53c250007af7f2594bf69b9f816dbbfaa890d1095391f24fbb154e400d1f9a3eb4f934dd608d469d4980a9eba41aa3798fb58158610cc69a2b603f01855fee5a50dde2ff30be64d5e17f1a2aa72d1e6658c843cd474d2fe5caa7b9b8d26c00f798ef89950b84fadf83611e435503e27cf35d8e65b4561938166a0695132f5c8fb8e2a57679e319292c520687e474ba5de7bc9072263b30dfb49016b36a8707a9c74f760374620ee2d015b3cbc63bd775fa4119883a10b0880de5ffdbe6223a9409f292a1387069e5344d5de7d99accd58c9c696d8ec6663de1802867b34d9bdc591db9561e0a3672adfa946843ff0d0aeb775927cbca3d215dc837467c2c0239b00f2363025958b68eefc310f154c6c67ff01f7198e46e7a8a2a26e5125d35f3d81c75a9a06160ffacccc6bbf59ef0d8d4367d0a2a2647265d35fbdb5df5b4a8e961ff2cd2c6bbf31e70d8e436750a09a3e16dd4083576dbc2886bb09b8782c35f9a9d3d8cc212532274dde0a7fa60014c1ade38ca378e2fb7d262ecd6b192f3dce02f43bb65f336eb65a20d9c355975b9e7dfaf84935490b89caa28ac196687c5b96da8ea0a355718073bc3cf226435c229351d5442c6434fc02e1201c7fa3d751487f54c08d846edb2357d91779f5d0384498b83fb7800cfe45abfb0cc9759f860ebdd2f55d5e5941a79291729885082ace405e0f14a7c156bc13f2c60bb3e918b500f83722a17b6a0c8e66d3b341f62225c93f92c716d756f47b4e1a5ed481f12087e6c1637310aaf8820d0a93490c5d83d593d3ae7add8abc546b02fc4771d496a3318e5b1b8eebfa60a3e6056da236582e2c44fb2b84e70467da09ecbd8dc99fce8f122744e184b679d5b2dc8cdac966456fc46ebb05698ad1bfebe4bc202865c909039881165d1e743c15d4d696541fa653c98ea897f8b4cba2f99ef74ac10132353d6e45c889d70cba4903c7877afb450790ca704e9fbbb175c27fbf449aa84666473d005ae905f04e74638adf70bf7fa3e0dce771d6e56a95cedc5712525d9557b903b79196c0a4c6c6caad8d15ba70b37f2844b39362c6006fec24bb4c4b8d1b88b2adcc6225c96907f6db7913fece8d531704de7ef88ee91848aed7df3f02dbb1a30ee17bfd6966f973a765607ca40fcad39222f4a40b5e29d8006b65162474e18b26b11b607d1144e535bbdc4963225355f4d545307c822b097374bdf224464ddc66366047425941926c36f92af91ffdccf2ec649d66893bbc379673f1e02ea2b6f6210518128874b6adcb2316444a2c2fd9cc6b760dd2df5b16139c4178b975277f1a2146eb1098d68d0c1452c30b8729aa875b5c5c81fbdaaa773a0119379f7192d3a8bcb788833f4f23e3139d596a8ac67a171ee0b8a95f25863e97a8a350e8ea13ca3f166d22a683f2253930fb287417da4df58e58724568ecad53f4781d13b2a3c430f46abceee0d113db80efb1113058b374e8dbfc6c0a16ec2dd7287459c10189a8fa310ce653a36c34ce781bcfedb0c3ff6166778b380d8238aabfaea8795f1f9adfac07cc0674e0c408e7bcc0c7f639a62e31b4779767eddf86f009c12874c168605f90ab9b4f106ead320f97cfa3fb64b305a438714b07255410bc890da28c24a34d84a96844ff7589e391b9ac00d4d802bd1903788c6b080d36e44af1ca2fad60b94375c55ce910ddad758f9f82205ac5bba0c04df78824186cc1d99e9c2ce7774e9141e6034cc4826d7004591b2027126ed214a4c609042abc7cb4209ad59f00788446ad85ac9f1625861a370c071d3bc1621ce238e3cc9ba602c04e4a9ee81f6877c523e42f753a64355d04fba2fd22c22126544fd6bbcc2ce3db9a4e2bbc2db24b39ea39a733e52bc441bc122cae9192fab6dc0b6893d78393871a2d830eb4c53e739f37a8d74bd38d4bed14e31f65622a98ff876df2e698ac0f7d831ae36009ab50ac105a600d4c3807018a6cf070b522eb357bb8e11de24e787a14f5aa6bffd05475492628c7120e7bd8a3d5a490b6d01bb8663d4a4465e80afc28c3252202cc057f1479a54480b5d97708c5c52512fc8d7b072e4055cea4e86c29f226537c663d6e4e0ac283b088aeb7fbc44cb106f17e3a52e6c6fc6096277fd28e87b48820981deaf74ddb2bd90e1ed50e61d750e76a4cb4a7f60cf42562b909f4c1a6ef2911c6e7e2a9c044d9d29b4960eeca6278a54bf2eb692352c5b2f765ef148c43dbe68507b9235ba7ea54360a9fc47fdb404ed07381c6bf5beec6aaf4e16102eff1dc5a51e8b9a66ce40904d3cd9a9e867a63223f98476d6b4430df51ee672d600b888a95263df4055ab6a95ff142b15346910b6d11e430ce3d791498f22378460e8e7574105f9c6a4a06c66b74899b7c6a401318d498ee073c9a450ddfd7f747202438045472cc8fa675dabb8fd39b484314dd76a6501a68d14ceb956cd5a982ee65a5d882335bd281b674108b8566486953cdf5ad1b42335f3d62a1f8f5413ecd68a4297e94ab06d6b6590a41516c72cb602c19984dcd70a52211a1770ad920ed1c242b1563555b55a664c62f8a815cb20a92c1372f5b4896059abb0c7481a65adb22349c13a592b5e1795e731941e6bb55b1f8395b1563433492da0b54a5a68d3fcac15d9060eb59db55a7768136cd60a41a20dffcfddced6339bf5bcbd65b44193cf0c2186e79e900b004bd8378047c4fb0d54ff67173e0e14677002b6c91bd9fb555057af06dbd8dcdd3c6cc85caf3400832e844fbc21ec10076c65263bbe6d78646da8dc48f81c4a6cd3b23b6802d443008bcd5e553a1f2ea5e16e07940467412236d2ea4acbf06d2e76303c113c1a0e07a5257d0a216db7831c214962d66b334be2d15c1667f865496ef9bbefe5809ae708589525517f83d6fa56fe2c89b81a786c0e0ed7c651006f176e561ca6e7fb6d56112d2cc7362b750f49549b95267de8e981096d56ab7d8090f10e9fcd6a4fe928dd56f22ac324af8dcc0d9749bd5979debdf43310f46615e103ca2b7e63cf9202c60eec68934e3649bac8c2d5c366e5e2bbc26615af310b9b95d747019b15cf3bb8b5227e2fc3f2787e26804b96942e73b9cf8bc62fa2c5bb5dc809d44bdeac04d757c85f184a96b4f000e4b15f607a9644715480566766dc1a62799a6149ecd120d8ac468522d8ac2c3c6861b3e2fea41896b4720d4003e82d27a1eb3d2007a1e18c250705bf608106c93a6044b31aee1ae373855ca5a4b8efbfd2bac732fc59356e9f3f098ed1eec926e8a4b98aeb5798f8551256425c09696508a52d4f6be818c6581a1cac941227f532cf58a8f0f41e58ce4d42259e0d06cd63ff970ca60b4132d744d42b95a65f36bca74ddefe6ade535f2f2ffdcd49ce1a8db858c313c676f0591de453c4870ce46fd460ab52a6a42841e23569c760c2ed2402bd898bc5cf544fae3a5184e18bb70de1a48446d6cb105b788916b3df5153adec54a836e5d9c034fa8801cd2000af7fee05a4bd6755d32245c49a21d5072c97ff2fc23702823161ec9f3ab2f8c8dd7d300beefd34aef801a7ae075241818331d1da85c042a20ca2903f5c4abf8b5dedb2ae3a33418c287cc1e53a5db45090d04979634fe6ed7ec09afa76253ce5a075ae1e277f94af605c1e380c9808fd73ce6c5b7bb58d5b4bc0ab0e7c5676721aea90688c89dfea59fefb222f536f07ffbef8ef0848ecc74ee091b415dd38e5b353498a8bdf775e9caca9c53d2c0bdaaa8dd11245004d3924fcc35405622524442380435e31d90f9ec20ff98fb4362fef6ec1baa0050a19230581457b3c33313ffed840042e10c2b35a4d53c897b21a4e65ee172fec48ccaf5e6369603fb5efd2b9559af8c958e87ebf2ad16586518efb2b05094a4fb207439bc2bb04704cf266899b9cac12b5771587cb9de5a3a448a98f0fedf65d603023762ef44d934e2a69dc785e30d8397027cf6064953d303a8d6a37c75aee1e43b43a5be3e75654957814c1b090381ddefb1c7477a7357eef8a8ab2c78adb8022b6d96efaed600ddcf7e1b2a48e7f71b8a613f6f5b60f6f7b0981a81da864a1c69bcb6290a7fc6dec389ea8611e66271150744cd7119877a2456ea094bdd59f51cf238db4b4a3c3df0260390225782dd842e8cabd59bbb0ac3911c8c18226daad6e2a14c83ee503030bb100ec08ceae6db8d603c180ed701d15cbab97dbe8217f80adc4ed2a42cf63f546031060519355d418aec35dbf2a3a5f4b6cb31a53bd9d4958ee40f0bdf74aa682f3692a932d413f82777a416df7df3d9a4bfe1f5a941f65e87430b68abd762bd09ff31ed12ee9fd08e2193858011d5f108a4f89633d7cb2a2e5d73a8eb8609282acb2e124ca5c228450bec5ef3bd2e554e3a71788c4f882a39dc4b802423ee46559eb681491d16d82dbbf2aebf052f1264670892305c4a111222eaa8972103bdc6b76f350c3386ef0014b79e32b6f64119846ec93a6d004e9b54260f4b8d02292855f1c9779d37e735946d56c14ca8f6609193697b06dd9dff42932af597d1b51ce1a64df093eae5ac09ae2ee2ac2ea1675b7b784fc2bda38fe2ac2e83e7d5adef9b7b2547fb2626fafe44bf6e1a586f37c917e3314c0a2d63df79f6c5331252abda43b14e210ed74443f942806a50bcf6e195d66db099dfa1fc70817bab2eb25cd9e79ca3a1968968f6d1c4c97d0d4d294270c7aca9054173da4bb8f3f02812bbfc1131276ec65e2cc219596729aea1c3882b2c301bda0f0b1b072f00e1d8843372604f5012d1618249796f43b087e46782bdcd92bbfe8df60ce9ac6379ccb364eb6101bf6b47ec93c9ecbc70d1cc6d23892e555a1198768addd2f276e07abdf7d283971bf842db7643c495471fb703e28f7c6dc7669ebf35ec0cbec7a53549d015136e426a4bb54e589a9f982d2fac5af52c18e72b640b4b1ab18dbd7927efe8b7150d3abea948ab3b2506892632b70305c517f747140e696289b8cfd3a5d9ef822291bbcd4d84de3812e333437b91be3f0dbbb84a2b618c760dcda8390f8b26cf40b1d74a1baad5d34cf76c1636d6560541a43b60c26953174776c40b0fbe53379e60308ed4dc193343a05fc132576584858ef109ef33728e8b51db511dc6974107604f880635a0377e0c59945eb2270a4e245df86163282cbcdb3bb3230537f64073571f88e92aac2e505050ba2ea7a85818d2afe802b86160732bd756554e6217ff687c74e2733467873f1fc2c6a3fb589140db351f655a48059a9c0fbb6035b8e3062163cfb18423b082676d8bbcc68e7cc90aa30fb69b5a8b36e8111a5435373e1d4dc72fd62699ebf5c36dd3a3aa29dfe3629347056e3b534b0fd2342436f022f733ca471b3adac64f256070984cb207a095655963d774018f4eabf2b3791fb7efbd199a2b1e4ee2080cab490ffa1281749fdfae2f8da9b220086b262a0b45fba818e9c2304990f544996619c2118481a5c8404d204e03afea5b32ca8b408708e6bd6c88001b84b244ff0536f4dc0e35fa00a3250a14bf44616829412a8fba6b06e29f43ae5f6243e04c00f2f9664fff98e585a966e25779b6250f7d8384d45974e0fb8c74950763a618b7ba83c84dc114132220a719c22a1e870468488d6c0c5e936cd34f93125d193f561f4e58881dac12b9c4915db12235b03b2c9f81158933f03bd7bd03c79e0eaa6c1d99a7680c040d99a2b88c0112a0a4884cc4434d7bb9dd612183a1f3e51f27e70a7de0d34357ca1af3e86c3918526f17257913d3c9388f08bcc08cab9d8cb8801db1a0989a1fe183f8904763545e564541ddd8964a0fedb988683741c51b034c200e1890c2141b5d3cb415981eb2214669b5184c753e0e635b015e7fc6863fd4cc3218ace432f165dafebfb20b426e75879ea8c22e736b49181efba7909bf56cc491c07e3b28b5b754df2908fe8b724dfab66ac97f8705360db2cad8fcaa19879d1fcaa283f01efd1cf04986b6b55d9a62e6b70f46cfa6fb684e6a340f0a23594e7e233dd722608b2d890abc2cbe0a23e20801d06e7f137bdf3893c18c00812fe93dd6f8d641bd0cc12b374d3f52a8339a2e25bf5b54c3900105f85cc88307b6aebe2a68a1bd7a5c84f952066dc6c054503296c80de9529993a8d68cd13932572fff94cb4dd28d30600f80c54904b0000b3a64498653f459431a38dbec1ccdb06cc86d75e9ba508076d2a3d1d2b20b83b90fe8e6506ba3bd5ad347a39655c1f62de1db445c7c0043230c66e85541d099cf447802b3f4eaf1d1b90c541e31edf94f33aa49f81d367c7b24971960bf0d15bf57af3c3686c90725e4850528357161540c6d216b00eb552760386e588e9b0a2412487d5d27e641a0c69e946332233b870dcccd9919971a7f15cb9a9388dd306d9e0219570d45aa99b2b20ded92fb670eb3aab9328899840c911378c2be72510bf2bb007f1a05a17c05e002d9db862c26e3007419a2b16c751d3367299cc84b0b82f1ace2f1e0a5ee25f8105350d4c82a2328ac48d78de4cd749d4c14b225f1c5d7f0e40464b15edd0cf07c6e9024f774fe17cd077b38d902c99b2f606c32f0fe41d79b1898d87739ef61e62b0b000fd3aa45d54d811eba087284f1ce3ccdecec78016afd18cf4977a976f9e986bcdc4bdc2b3c6f2bb90cb4cdd5a7c229b0991ef80d432a9cb7e9bda89ef481580a2b8c74ac090a444a4b7458f59149853f65be1d53473da1961c1d7124e48b16854aa4dd0e5ec94c5d9889cb0029439ec9fff1f589d9574c37f4bc122b9e7513ea44c3ff1f9f3cf5327b5ff0cd9975d9d431913a918ff6b47775f6eb32a48d506f1464a368f50876b03eed2529b40ffb4523057734be3c5d28740fd120a6198a3fb30eb8f1557f7300a86c1565ea5554073bf7ea5401315f0581cb85c51853a546ee21a5ded4d114c71028846f475869268744cede7f247a05352bae8bc72b50b0e43293f33797063dddc85104220a4fda915cb7489111de5709c95471c6c095b844a8b36a0205989ea9cf7ea0a4e01cd49957eced99e11e7037e3c612afaa7866da250445f304da93310fbfc07d47299025e43350930435e119e844a506caefe42c07ddb169301bc396fdd1497e886a8da39e1dbd5ebd2726110b3ec37e92c1f9235942386d6afe78f55835fd68d9fcd0c42b096c16484dc6688c0805f517811a5e2a22195b5266420829588c50beb1ab58c52c3e9d025da3a0215a8c65725c8e18c13599a9441c500515b267f26707e2ebd3c792cdd9c5fa85fe61fe84272e92206043f4467398fab9059d20f301506620c59437b6492456fba0816d4b46d9257c017479a4592dda2ac4ab681b8faae77ad45de049bbab21f0dd0b923ac413455ea7cb687f0377c97e9f471b1125f349838e41e066fe057667e842b1052489121b11010a73828ae4da4d4e40241e77ea9c0395fc5918feaf15d4acc02295c18598e2426421f8df693493a4b138723af912099333e8d0af36a517f85b8794a4689e65569deca6969ef1f6c774a73e94d4b3dff1060266729788c9febcbcb3d9665e17349615a332bcb6f96aafc1fad09bd68f430b6693d7abcde8d6bc237eacd2cf9c9ed28fc0753fe5330575f40a8e37029d79f7b1ca87c902a153f4154454996b5d26b0d4d512f9ea6b8ca181d62f2939ea626476f3b5e6cdb696c451768b5913a1468d14ece8b6c54626b0eeda4a24db3b6c6c7de89b0cc621c9623072b44b38c8adf27bdeca60d69e2b44ea46ad5b487dcba56946d7ce4acf1fb5bae8b6a5594820b4b114adab8b9957995e7b5caf3eec93f14aa7fd613973af2b795af12b5c8250f27d6cb4efa484b6041b026a75d0965abec8d022a33a709a2fa315e37eb87d45715a877566889e104ff3222388fbb1c17f793a175e9b0bb081279804c9cf8e6d180ec25177324510aa2e9b60a827976fa2e116e1b13c88435fd5fea0c9d7b493e82b6ac20393d107f0d18fad251da2564ea9f71ad554d3582d64a13dc52121f45d92a5819480718413bbde08f535be9f7d951cc7f86bf6132099320469d0805893c2afbe48e41c0e2cfdb0058499b2d260da9f728be6d1c0454045fbf55f8411e0f936d479cd326d4389394c94612126ae650fa003cf2cde4806e520e8cc6432349ca4895d4e582d90cc0098b68772c0775094a969751ebb9bde39af5a9f408eac4c46535552c768b714a66d0bb298f431f1fd5ed29a114abf430a643da9cd3ebdc05c0807f7f3e2a4284e2202b32713e0ae5189989c85367b9561af5b6a8e3399e2c258a940a25a10a7affaeabeca43d851b9d14dc7121bfae3293c44685f04b85bb3add3d26cec536221b8efad0d104ff67cb5c0394970466e4ab1b732c1a7da3998a2018ee0ff4831b0551250f458bcf69f7146e657e2c2881297076fcf2f7701d93049a31583352e747ef227a3d31f2145f9a9577a10ddd37b92b45da5d09bb2875d36d611f2e92580904efabcbceca1a003cc5645134621e2b2040168c6f7d08a647a25965bbdd5cb204e81654ee2b26c8407d1af449edbaec079f1340dd955d03ee4ea3365630aed519d9276fa0f0aed824a105b1916a4f13bc4b162f8ba720f53bb75d3df1932a96527fd4695b60358b5280d49c941647655b0053231e554a4081104a6b54ebd137b5a250a24acda9a792d38cca0efaa59658d41451a2188a0f79f645cd6ef855b98154201b9b1771f350061bf3f2b5e1f42b6e8a56d0a63bada8364b168355453e796f3e7e909baf5e85a8b917da4cc8fa3097156d237f4b5ce86451d5c3cb11414fce7a0e556248750718c017ee9787d19d18095c06b33deb51a8553d9f96314186dc617de1c4c30021a0fcfc1fe98b4c09a1fb11e8885168f646f1844a1046c981eb1b9bbfd303845850b04f8e0663ce7c0ea9f30ea3f072240c05b642ecd18e8e3d73aec944892b11368bf3a588c352a334467cf5201046d4f11079bc8eac16ee8b3d24afe1eabc85910f61b86a83e8311d79e70464b8524eaa818100caebc7d90437d656c2bd865bb220e34ed2152c1eaf04aa94b3cd32cbb73276e28cf356540552f7bb47dcf41d62b1b8b4699e6e30d1a80d998c49be2da816d4ce8c1fcfa01b106c7e1a7ba5545cf423f3a8f644069d3cc2404231266362b05aeb86b72d0be86971fc2045041d522c8ace5acea695b6068ba00738691478c872072510ba4573144c9a69ab7b3621c11c9f83585d3cc60bc6c4ece338d114b22c5a15cde0df9c218545cf2b4229a356759844ced586a70bfb0d6505486d80d16186c02b44adbd424664cdaa4fbd2aac5d00bb960d517812f09f519d0069e263ed5cdce073a23bd347ec0c714ae385cc9d51a40f2463b840cde75688ec1db3587257827cc221c428f2be29f5ddeb5c0d022ea939a5f4c9e639053664731f5d1ab7ea7988651360d376769ed5d9b4deee9685820d517d6394c1474304c008afa5a0995c4f1a1333ecf801703254242c35c80ba1161f83b46864d893949d4950bb6af4e8c2a80df53203c99d16465d9d19b10e116a5e4c2ec03dc64b3c47ea90fc857ffecb926827a2221f6e85248732cee4f0da8b75c5ac9e986adb503930596da276fa0ce3f1941f03f868d4e377b8436ac658450331ab43a39e1c5503c960397f3d584d8c506575780dccf8e57f2d4953f8833a2192e64f251bef995db2736b514c1503e739780c30192e2a8191e3d9647fcc93151590c7013e4785df7120043cd6eff1f4ad54f87d23948955184f192ffcd0648d13e80503b3a6c45de5100c23ebf66eea34782d83f0a06e4dafcedf0470be2936f7204af11243f1b68f22d2eb3519682240c22e0ee88faab61a8b7c7dfadc7e9cddd0712c0dc294ff775a27cad1943c27279233926ee73f1df9c1cc56b74ded0fc6cf900f818b51da8f28ffac6d27cfb8edd53ec42dd501d535dafa7f9db050a9e785a27d44918ba210e00f6501b76ff0c8e4adf625e72ab49d0c06e43885c323c9d1c21914e72288333ed2758d31dd215a36375bb9bff0c14b00469782bb6a63c0b80bec6fe910237f62cbdca3088d376a1b837d2e83687acdba55f5ac90bdf739961fdac72f8279f0fc284a2139d1ee67287697c69069c7a804b17d7c3dc58099fb385ba7046122049fea3b1c2505ed30728035f872b8fe63a76525521dae771bb4f16725c4d9e64e86851fe9ca19861c0262d5ea3a5d4a11af062357d156866c302a4338acd5bd8817032df9862f536db62d38056a1f597e44b4d0a393707466cc38408ddcc390f13afd6c969e84ef5ca54e73575914935516800c0ed6d67d620ae9c39e7f09cfe2f11d164301125703446c98f46455540413881549099e39a67707f74ec12184471243b888ad0eb13053e0f23a4eaf6b6d953a128306bf710a5154f0153b2ecc4aeb3a94ce09c6e2d778ef977df219b0b6f666b563b30bf1e5ce27426e5d8370453af467226c3df48ba916ab2568801043f3db1748386c616983208e24a60c0832ef5c5964f2c6dd10a58e4c5eab87c21f9293075862a54c12b8d01063b481aa5ea4e393a4c1a7c083f8bae4b1806b9695a7947821a951327a3190e759261b3fb08ac649d097845c2478dc26c2708740ef855645c578c8ec0afdd1dc3947218894f729d95cd3acb5458178c8ac1c43a5f0acc46d69f541ad30305ad123466cd51115096d71ab7201dad249c9bbc5eabe140e61d697987d2103ad62195d13f434d797b28c435c5db0732c637e56f97c99e6845ad0a05a4b56ba7015ec968d5652ab0e801c4c25ceca3799acae80538d31ab5864ae7253c2b97bfea671d27c1c046c1338c8ea405a06641a8f0f851566b1293b7cd5e95f30fd7b78f6ecd822998bd4b88f9f2f608e651f73bc9388ea969792e4a2f4214389630282b4218e46529d5075028221a7a85a932ce52c73979700c74d42036380c72db5f5cf03633fd0a9a0fdb9541b806991e9fd92e2c03fe37e7d810695e8fd37c5ed3c40a7d357da1f6310d7a29ba4eba548e0f07ea26650c39ffc92bd3310b28ce70d828cf2084c0f0f92718a80ca6b984d50eba72c874a217da106a5f2191eca010221d742dc6844018cbe327ba20fa0362d2a90e6a1e58a0134b72a0ae1f6714d3b44dabb20ad887815a6fa980b600fd072ecb81c1f87c6bc78b41f82b995620b0b822293e28340930d893463ad6091c5c541514f41f56df6574e77fb3ab0132e0a833c644c593262d133c73c8e3fc1a9937723c4787b03a99d374fd51b3e47bfe9c2aaa09e743787b7d0b88eb9436e02674dee34904b6df54fb9b35731673fb4bf1665abb55783e3f542e40c356c01e06817cf48ecb2e65bf70eaffa09c89f708cf26d37e8b7af9f278e39a87aab2f0f6667e2fa707326a27ecedb9214cf448e2118361541a1bfc6255a7ad153fee723cd97aecbf4e45fa609c1f4b78645ecf553db8b60b3ee4ca7f54fe49cb8c87324ac76fc050f9fecf3cff58861262eed7c0b3e76792d3726857a171920de39d0eafb9e028d0ffbe87704893023957bbf050d3b2774cbc594d1dd4a5242f21c88759b17d0ea23cd6addbbdf856fef0a975124d7a803f27bcaedbbe2ab6e5611d0cf7fd145c335cb450c02a6b889cab5a8b0bb47f79a269595fe53c71bae1ce09eb18bd4de80202eeea4a787d74d911ccd56a64cd95803ad5dd8a9dacb0b217a9199512495d7f62fcbcc04c8575874d6b073ce8f687262488a9a75d299c5e2d81d8b770b515f631e0b41d3b9b6946ec03a755f689788328473235536be192552f0d31fe028a00ddb513751ac2fe5f7108075dcc18cb3277c810444cfb6b56a44fa604c3bbb6af59e4b8723d5f5fb3cec91bb67f5c654b413ec6c08d805396193501c78cde8a4a04c9c00b85fc90e82182e38562765dafa8d12a5f5e901a7833fb4bd3c0aae0ea2f0d18cb189d5310de7254d9ea6791cdcd0cdb279eeed4956599586bcc262f51470e8bd2a1cff1e1660c6484156e4c27d910900df561d1dc30f774583c6e7bd55f86dfc8146f855f40ad5a1b5119d63a48dbe555383ddbd25c71f89e0ad8dabf6e150a88deef347400c1183b5acf17f7a85d90ab0863a7c51733f0e0ce1edc21e51bd581433032a21c7a257205a1da903ae0980b1a94a54d40c6193424fd8a0a9a88143445431092a8d19ba20a878c2172511ff969241447223c40849bb29b1f097021dfa4b76e01f1b9460370577f008ae1935e75ce013acbf386a4f36dabdf74e01630bdb0962095e1705c8d3c1e29d7341a3a028a5295e4c5722e241a1a204edd8b163c78e1d2f883ccf34caf1623a0f803c9cd0299504d883dbe958de11cf7358002e093f1940589c74024e460f2f243977029850c7e286c2ce05204f13e5ecb070ab148c461f10ce3df7563ceeb13a16271376a14c2a89d22828e58218a32792e8ac10f54cea0560e74d5942a78344a58be9bc8a952e5c91829486b06b24c26e0889aee61ba211724da36371deea1b22115d093b9f924a02e4c2ee58cd79d735ea086f0b9e15cf4ac7759e67f2be26789ed7795eaa8928a630258a2900610a50583895254481480798c200d8c2619c678707a36aa1423d4145b9c1bf23daf5b5e452787af1e22efcdb401fe0c53dae1485632945f17494a478319ef742c5a285857f0e03c689050c16a38ee9bc859592144f8777a5633af74a52ba17aaee138b9547d4acce4adbe8bc9085ca23ea667d2f5cc8e2f4a2c5949ee9be6eb4829105d0c579504f3c1413a826bc4f051252d8a14e8062a2f3282e543c1e14586e50f1c8849e73aa158e7a827a62857b8e3a018a09981528281c070306d7a53c7044878ee5351142cf795a8a4cc7f2767461171ee9900051dd8aeb0e809d8f5e7c321cc67764380c8ccb5875ab9d192ec365ac92c8f019ab25352f3b420fc66538cf8ed0c32390e872b838004a527674395edcf38e080050ad70cee5c90e1e542e2b1a1d4b864a46e7299fe1302a1897e1466678ca6538cc0c950c158caaa444c7f24a4f3a96576ad233de8eef084f870cf74aa5924724435582517d517ee8589ee733aa803c5f1454e9c90bcfa5d0861b62b8e7a5261e0c477909047d0018eea19eb4f80e17aa17315e78e737dce0f2e286171d4c0b18316e403d413d710123c60d36bc68d1e2058c1837dc002305306e038cbb8069b163c5c782c5ea53f1b050cdb042d7ad58b1a2fb542ebe42b524ec5c4a4e5a3c37398f67e5a3d1e9e89a1aa1e781a318499c524dc0ce4fa08f564a9c5032f2172fad94b0b80a2ff9894381237ff1058cfc65b5001657b1fa5020e6c216f7d2f0057953f48cc7e3290d80de149e47b4fabe162f95967cfe8347f288ba2724188dea463a6828140a8542a14854ed41b90a158ef2ee54f225359ec94bbe63f2d22a89139d2729b9c9eb563b30a62535a7929b6ed0e5e0692ba52762d0e570e1a318bec2bf291f0c918ae49cffd07d535cac507d533a16958fc8854b8e50ea08f0264708c66f7098951227764c0ee34a4a2b199e971c86c3f06ea5c4b492e1ad640401c34b6e04c6ca080c8cc3ac606ed0b160a2c040e9991148f484a7c3e42390050b9e6f0a0c944e0320e83f7430503c1da6212f66e42d5a9c560d43e432b4e2f1ae802e6c507953665881e8e424d20b6f49d8bd70e12717fe836783ca8569280530261507d30d852ede8205cf3705158228958bbfa838a11537c40575ac266089880545040346e732c4c3b90c85a6219721d3104c8bf398864297219e125189a84ac9442a119588484d401e18a29652019007868828e58124d903faa65899a2cb41faa874393c270a475da075ac1149d564c71a91bad40b40927b242ea8638dbc519782e86a4aab520a05200f17148e9ceb7494bcdda44275311c2ae50190c734445ab1b4944a303a18a26f4a9783e444de12c2afc404e4310d9986ba1c46343131d1e590d18d4c433c26254c43e188eb54a9244e9ec200588a3185281cf12479c28b29410947533ad668e4304455ba91bb08ea72c8e84644e1c8499df378ab52e772e3f1a0c82960742d44744b3c52aa0c5c0dc98a17c339e98a152b57ae34c7828ae17d2e37328288e12d7c27c6aabd9816ab9dd30845254c3501bf262edf1155408ee73b8224e4442e852e609c738f4a2e8537b40be59e13fa002f9ce3823c2b302a1bbc53b18437a87c4a9cc380f1c1f0bad0b1465e958e35f251f7141d3372ef0b61545e179ae542e5530a6d5879569a3572162a21ef4adb18f9048808aa61e127cf069567e506954f2984b1f2aa340c9557a5674623f7a8d034a316ee429582a1524d0b87597956461e51cf8c3ca504387251a14285772a1e6fca0c2b809d8fc04ee5e2df8b4bc95d54260f0aa1a742b1c86fa87444b7e4e533f1e0d434521e8002a2c2f65428cf591a0cbff04b51006c16ef72b07c5e4307140fe1c7f2b9c7a2fac49081f6a49098202241e1ba158f47e449e1dcf325352cdc4a46109f7bbef3b9b74ae204e7493cff563b28fffc5b25f91cb55a52432249093dff9838c5a0cbd1a726784e4f7c242924d214228c46a7d3e9a49a610590c57948529230d1c2b1a846dea25a1272a4518f485454a425742cd29411498a47a43a49e1462c38a53ce08dbc8fa7a3f87e1ca105e9727c2ea5a97489c50b5317005346809cb7f777fa91d3b1462b24dc1aa85441b5b84c47c33b5697a34849982a01c8e28ef225353246ab244e8c48abd10ab54a725a2da94991c0f3195640d3eaf4c363711616128b2a87a05169341ab1fca0ddc09841b302de2f7416550e411f97e308ed47901fa55147a54687dee5e8c28e867f9ed7a136907a927a927a925a22b5446a89d412a925524ba496482d915a22b5446a89d408522270e2c48913274e9c3871e2c48913274e9c3871e2c48913274e9c3871e2c48913275de7a49a80edddc30ba2d03bdd203c4539a59a803c24a20c40f174bc403911bd9c885e4e442f27a29717279d482412a97b21f217503c1d444456ac5ce1694144c454f332e279210a3d276a41d48288a8059111c06ec5d38228f4dc7b41c4c54c919200c8437a53b09043903785e7791200bbd58c2bc80ca1e0d43ac0cf3bad48242fc90409a96859b578c905889610d5e224171f2837f989f41dd1b1bc0f898ee535691f8d5c6e50a7d18865f402b258317a0147a3d1e8c442b5e2c5c197af73152d2453cb50e772d382042833d4b196b47c324c62782d3e6a19720a3d2bed6a51b1849e145d8e1647b9d7852e070af582526921e4dc1486906b162a849c93bcd0d342177a5af09c107a573c1d9eb7951407404ed5b9495522a93c27c8301981dc890923f44028ac11761446584214a470bee2035590482f2516a59829628aa4f0a638f98805f417d5d7f948858b0a2ca14a31453904a154a58ec5ad501d0073f83e934f1995869c521c0049feb1a28829f24a44744b583c161ea43690da406a0333c8e07ddea586c01715298a177372155184a793df2ff4ac7439507e3a8d5c482e232f0b56502acf4ac7f2bc2c849e7b9e97857675e8b1944a251797938b698989b4ea518dc9b3c18b978652d014a7d14a66e81b41cf74fe44f53da102c8f38de03302896f04edeaf01baa02c83dd139a1f424468a0660c9882e470f859d874489a77444c8f3050575242a61479ad2334320cf17543aa20a20cf1774c4f705793143abef49e78553d3e0214551d1dd8aa7149a4c4e4a0d813cde94ae89919a01f8b9477aa2cb710396d1c85990706b085da6ccb002884ac2c4a9432d093bd52aa688e36141297955c291abbc29aaa631fabc23b473fd845237c5a96970bde229b1b47350003fdfc1228305e6033b5217721c67527d1d0b9117815315cfca4b6a08fc3894c9e49d937cc9c89b4203264255d85148110a4fdc2a87a09ef17c0611c8430a497eead1e914a256560051ee4d095b5a7c5472d29b3262597d4774444f6650f19008bb269f12a39bd1a742712115838e63b1584f3c0bf48c2b8cbc2099a1094441a507514001ca0c2cccf0811a68f09cac94ba542a91a854f1ae90a87857bc2b1dabeb54a001e4f1ae78574aa922c091b394bc2bde15ee4322e43c5504d884a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a222ee0bfa823a9650d8f90c33805fcdfd846abacbd1b5b8e745986404d1e29eefb4ac764c9cf7f9e8baafe4c3f346208b8b8f2f1cf960e1f9823c27f818a148a5919f4ca3212c3e4203d8758c26524c409ece53e0b991aec6e3dc53b517c3057da428babbbbbbbf9e81021350780242e10828083d418a2778e10944218c8ec5b912a7ee7c5c1f3e7c34178630f8f0aeab5183f37c70443c10fcbee08a9c6e778d95f6b88cbbfc3e2eefdb4a1d1ce6fa77e6886fc32fa03c13abada3155f6a1a7c41433786cda8ac5a1b182ea7f831f77c3d67c6561381befc12c94b09c017a1ee0e1b7cb1e96e52832f3c340ce63efeb3796dc69eebdf5b8a8e7d1c06f34a274d9ca943bc15f39e43a6cd682d07a78994f6c3724cce7a3f57eaf8ef24c51fdd3500050c4f4250057c5b342e17ae96e2fa19e85daeda677cc3a00a0874bbeb766d9e639d351f67cdeb45ea73ff5f351168ac6fc325b6d93bd64afc77242d0dffa5e5db147f7c6591de8cffbec85956fa029ab597ad2602bdba3bd6dd938646bc18bf0fcdb446af0d3505885a42776bfc2cbe0dfff56cab63eaee95fab5597c1ff7e932ebb43cab4feaec88eff37af5ccff71b9622f1b16dfc8f8632d6d4dcf7c2184c0147f7d1f2f568b23be4d0768a7477c9a8da95bd5dd9c8869cde5c22ed7eb4b24d336c4f60fc47d9b6d5e21ba7b06acc153134fc662b402a0010d9e7a685bd963ad8d168e1bad1a33b171e6e9cd34386eec10df00b1d10006b8914314dfc64ccd8aad5849cb747633a6b3bf366b71ee8fd7ba5c36ee8f7748ab5259c69f2769b38f9fe7682bfd638e6ff3879c4e92f4c731a5ed78cb88cdf1e9b34af31c29397d6e327adfc76df691b4fe3f9ecb98cb544b317eec3f5f7dbacd4e1333fdc1fe3f5e9ff6e3b01f8292af6a615ea9d7cf99de9ffb3ed6ffce4abd859f667a2d2d97d39f969f264ed1f174fc3ef775bcbb7b1a34cd984ca69616a6b4ec326b32995a62f0cc58e70ccef57d9e8606870f8da5ad1616ed4843e3c2b69c692c07600678cd665cda984ca616b0d4846e8914577a33d02de6e37fcceb143d4f5af62763d3efdb3cd749eff4f1afd671a533576bb34392d3e6d5c22439451fdf65d6efc76a65b5ee4fdb714c92d3e656a7106b7766acc4371b39da5a77bf74770e690cdd3d3e123f803f2d7ba5feb5597d3a9e34f7f7a1599c7ebbef739381fe356f395fafee4e4077ffe86e20ddfd8386e6068e1d64376ee4a0b17163d6d08143d461c48143871d355ec7cce779338e959806e7d2f6884fb3b33bc596cb75cb94a4b97ce56b6db612cf7c6d5e99cbf5359a6b794931daaf95dd19adb9ad5e841255781f9aa70fbd3fbef024c9f9c2f34513f3b4613ad2c43c63af17af95d9fb43f82de63f521f3abacd9e6db5cf79f68804dd8dd3200bad1bdfd6fd4c695ea424fe6b451a71d610471cb21da60e990e03e4d8a1a3c60d03d89838748c3a747803ec88e9d07123c7e790ed20ea4023665c5e9aee46400f3c1c8024a798b1adbdf27c5d5a22f9dbddaeb7ddf2cb0e41f1eb6713e3afbd80662dd7a7362afebd3fd6c7d71ae0762715a9ecebc7ba7bc70b68d6eefbd0d9ad8940ddad03ffd8dd3932ad51f2d5dd3be07f5977eb80237f8f487377dfc0f9319e9936a3fff3ba2fa059eb6e1b237dddee9748babb4677d3b4702d522dc5f78d7c8c5e11c74a1d5b8d4ed206888ef56db630bfce7d72acf3c7ebe092b4dd5267aca5ec89544b73293ed0cdadac99553a92f6c7e74933ad406675d244a09b6befbd2132d617f1f3a87446ef903b9fb499558a2d69337eb6bd2886f84b244fa4be6d08f9b54e9acdcfe3d86af74716e77d19aef3ee3caed6869fc8ed7e19c4f8f95adb93bff33ef4c527327ea6d8da9ec7fbdcc74f243fc6e1cfbc232d5321aaa5592c6fc61508494e9b1b3e2e574d04aa8947ba9b467747a0bb7f68b01bc2b715a36406fa9979cb4983f393e4b4d18cdf73adac9633b824cb5a29d2643aa3799b15f1937446f3354ba3e96e6fb083e18c7f464727e7639f44cad09fb4d14c96351f6b697b909870d160e79d2969c30ecb13c6a2414e8a6e72dabc68908b4177c334c83de91eeee34abbdba57b1483cbf8b6465ba311df876b903b52d3dd3634c8c974777dd279f08ff9489696863dc6316539d08f95fafbd8dadf976dfee0ee62dd0da341ce6b7c5bb926bbf6def73a7dfc7acbfcd7aba579e6fab5276d35ea99ce9b7d5669ceb376adcc6737eaee190df65077af68b04fd0dd3f9694ddf7b17ecb549cb629e2db12dfe7f5332f8d78318d684972d2dceebc314a76374b77d7dd23efebeece072126c840063e4c2fa2341143832024c98902143bb223e8a0051479c35261618794163fad3334e9020e5981139876ac624660434a8b1b2cd0f26c98070d1f78868a30414909252a089d3a4a5050d85ea94a0c4ea7d40f524028754da762c2e473ce3b95d010e74c523ee819f9b75ae2710938f5372a094920025ce7ddc7713d9c7feea938d3f77d379d9b9c54fa48a6cf23914ca4158fe79ca9b4eaf1beeffb3caf4bc293c4a7cb1e4f9291374a521a95bc7349c09290e4f58cbcc34fd5333a9d96f490469d77cef913a7eecebdd3c8e43d5a71aa9b3f6759f974cee223151218610f8b77d8b24292243479a74202236459652f3439e7f2830b4b5e685af17ca51592249d8f3c67f1babdf312d7e9e054f27474dea76ea81bfa8486be9513487ce8f1bcc38e127a42943c1d2dde2c281557d339cb2aa873ce3955d79c4e5e3a914c9f9bba4e48a5a4e45c57422d095231f1a1c673934a6888abf19c890f35417c8ef21defe42daaae399d1ad5a242a1dcd4e2435c8d49e854123a39ca399512937325ce95b478776a51a16490dc87b0c7f314dc3a674109b5388b4a08e51c6a15e439e7dc4a4809119e9b56419e9bdcb4121af21a947b2e0bf01ca5524284e72dab20cf5d8270d9f1bc439954435c8dc94baa21aea6e42d2a21263ed4987c88ab69f193ea14c4e7285f80e72767510995845852835a297162a7c539576272959216e7fc078f45d53526958a8913487c0849ced5a4820022e93584a4554f0a6e9da7e0f6f9e79e8c203eef7ce7cbe99c25e7736791c129d58392a7234912223af79c08ce3f67f12442435e33da31f9c88928798baf9230f19ad12a09112ceeb96945446935e4351c112c9c8f569eb713c1c2d553d328813be0381e5238e0a6d800ec848a28c2f3e139a1599c7b2d9e135ac0163f7da39616ceabd2b15a5abc292b6f4aaa069c872ddf508b73dec2f20d7d46b850d8b9d75272d3ea33e21b227559f0d12114292838285250040541810205134c409182e2ca1528506e5250701cd782ef891951f03e264c4d8c667821250377777fa2e342a949251926df271324c34466a847aacf88cf08ae091240aeb9a02126ba4e26488649a7fa8c283d41012229a660251c79d3e0219172080abbe3ba4d2c2ced23171f25377537cb4d9b5425d5145e95d2172405ecbcbd295d4c3b2b8acf4bac28ba5ea574008e38af0ae9a3020681576ad4e8283bb2a9460b402e2449d15c78a5cbc1b2e2e92a3f745d0d1d46a3a0f05b491196ae7c00bc1276528457a4f054f70b5157985c093b1a61e79c075eb1c14b472bf514369652a954b2427b02e4c21692e338e738b009c79d807ba2040736019f9048aa51104f4f01e4e9d8b163c70e1ae94de974b0989c6bc2643275a1893089d1c97354948ed56100660826a8434589510410e6015fa337c72663fb03d71fcb63fc9fcd9cf0068e22b996d646f6449eb4d1bb6377c61fe79dd98a3c5912e96e1c1abcd1a1ef0d0c1e52b4bb72fdda6dda5cc65daf5b1973b970ae5fadad668bcc9b816efe96f8ef3886e5cdf8b508bead574d0472b9aaadd5acf8c2f7e9bd3366238676b779028f0f447be0dbca310ddac468cfd36dbd7dcf2b037dad09438d947697e7e93132b7ef617920e86e5a833547faa7bb1fd06068a51b47cb46cbc60c59eda53ef5b92042207c5bb79bebd3d8668de6ffe6180dae5602ddcd450016c3b2cdfb534b976b08ec86111b466a18318204fc614a77abc6172769fbebf67691f083adbb44f218013c5cb1d223803fe07023735ad8abfd58a62e336f19fab53dbc356bbdb7be463319a3b83ea6b49e6b7f7089ebd7c79626fa2dad02bc85efb4d9a68ff6dabc47b4640e39c86474744ceffcf91a6fe1faff933fe6a3a5f76d3ee49ff94879782bdb380c0ad020021af062b5e39336e3ff3c4e0f4ef4b0030f52009a425a78f6f8929c337f6d95fa5f5bbb81c367958ea3dfb7e159d3ba81e3f63de32de6b0981819164b660be03ac01c539fda674ace6a69a6e338bdce917cdafd3cc979addf44997d3c636fb3eef56d8f77848c8f83c9195a9c9fef61ed8e6c482e87e0a7d7e609245b9cfbf56748b638b36aaf10b9526bfb1addf9b141acdd019a42c6bf367fa638f64290b7c88b755292c4a5254b5b79455c8bb85e2f9c21407488dc1879ddf808890cd9d179bd5c2f7b7f8857b575a7d6dd41dd4d44772fe96e22682e9748ef8ff37fdc322567be56c8fdfb0ba816e7b523a73b3f9e516ce3f53ef6da6cf385e78b7cb14ed14a168abad500e6b842679abfd76db599f1d7e84e0ddbccb846b30672d4c0b755c3f3479cb2995badd7ef99b9849362991870619f0368dddda01a84107577979258315181091ce96edbbc3fe00e10b0cdfbe3364fff4a6bf7f38fe3d3f02475c6cf93de3c6d4f642c32ea601b24e392c7f83f76ac374080a6901a04680aa9d18cff5ad9f87e233d5b1c079a35db7f4faea5ad4daf95355a69ade7da9ffcd57fbed668d568ddf071dbd2f1f16b13c75b6395793cfed4a959ecd53aee112de924a6ae9b9d2138deba91d56218cca7e3c725ec76e748f1ac5a72c2608effda8cb10c96c9ec8ff366c75fb3622e6b1ca6037b8bc9595a05380c067325ee0840000f334f1e2e73735c06013cb85c32f27578a8519a8e6d0ad1f11efcafcd3afeb65b7677878013717f92da6a56b4150683ddb800bce5d59f766dc6a4ad3681defd69b9c4983aceb4964ece6c71b594c82dd391964868909a5c9f8a54262b7105424e9aebbf0f2543db3f104f96e3d3449d99919bf93c7077bf7407d1a000a0e84e8286033440eef20e014d90eeeed640b7aa2dd00242ab2a95d97437d9d33cdd4dbb493a7b08196d76eaf7cc9dc7f7471eb7f1e96d9c405f8be4fa3aa18c1a64845ee3df5e634d047ae5b13e2ec0eb36ce2732ab74ac9f73bb5f065113815e637d9c431198c31432eecaf8c7d7675b590db292d0edae6b65ad5b9d2ea32ef3b399b1631c86a08ea9ccf8d3f3bcefb01b384a18692b7978cb66ff1e4afef8ff784b66bdf6b4ece3d7ae9555eaffe3b8bef8d733b63592fc1fc7d3656e69fdefcc357b655446b3ade367fc3e934692a1b71c938e4bfb636b8fff4f90d2c7bf3f525cad882dedc731ecabc581d51f5b7b6ae998fae8322bc4e688bbcd9ec972ca9e87b76248727a9e8e337519751bb8647dec52fc359abd75e9b4790c0ce6e3cbb0f0a4798e1d6ef88def9964cc9f767b20bc856df366c714e86795da59b5feb41d71fead45fe96249d3dc6fa3ae3dfcf24edf1646cd6224fc628906c712acdf879dcb2ad76732d4dacf389645bebb4c115c8386baaa5d96671c6db38ff92e12b3f7e1f4ace97edbf8724e7ebbeac96330218eaae894033ab29ac74b00a5addf08b75923346e3719fa9597a850e5af40a1dcce8153a28f50a1db8a8a090a4155f2a25ba1b9374e61f5fffb296065543dd565655b6ee9eaa1d950edd8d6fdff37a7d9ef7ebcf5433fa7ecfb53f2f99ccaafaf5561a3b111ae7faf7692a1af418b812fdba9136db7423669ee3cc5feb6eb041cfde80ee7ebd07e96abbfbd4a0efe86e0606a007334f9256a4c160009ae8eef1952d89c1007c20004946ea63afcd679ea3e7d256a98fb3a63b150168a0af94a453e63603dd74f728fecbe5aa8940e38f56ac373c00804392d366d4a937b9be4eaeaf33def9632b9267edda1ee3ac9935249d3d307e512c75ba5bd660aabcc54c2653cbf839d3da3b03fc693b2693a925d7f7b99991866e612136472af559a55eb357e6e33ba64ecbb4fc3421bcf55746d2e9333d033d192bede81693a1b760b0f15af1afdff779c730984feae3e3df48729675d66e4fcb4ed25c4bb7cd1aa6b799b1e39f8d65ccdd8166cdc71fff45a017696dd6db48da9bab154b11d7d05bf57de8cca7579aeb63ff98db4ce7cfa5fee5cd8ea993d6c6ea8c62bf657a2dbdb619da8cd27cfa581f7f7d3c45afd4c7034caf74f631c7e4ac5d5bfd5a5910dec2b5cfd477c0b1c30e39bc4e5af63b735bfdc7de99e3af95184f7f21bc058339ac67086ce2b2e67f6fd956c39fa74869d965c8592279fc221d2b75fb938178cb667ca98c96656695d6acf85ea9cf545b7b444bc6684620f3ce1cbf6ffb98dfc86a3fcfd9dfd96cbab7b0e8149779661d1febebd89d9a78649c35403f562043c65993698d06b9ef33048421d3ed323692ce1edd69c0eb51c34bddd0edcd78a14477bb4b88cd91991c2136477c5629c62fda9bd3dd03e8ee6e9a43030d9736cfb8e4713c7ffc0f70cbb6dafbc73ce350a7d8dda96eaf060dda40a5bb35abf446e6fa24c5def24add7f088a5d3e7080e0100985185fa702c1426c35f1482e87e019c53493a5107c9fe2fcb33b776e329a2dce8f6a292e49b102096978fec0e9112d5963a3347c2d2dd73e03b9dd5c6f9e146b91eef64177db1a7461021713e8ee160dbab035be2d1a7bedcb050f57f66cab2880065d802dda20931aa933faf77dac0e0843a5c57967ceac523246755a0a0e2c6a3370a7eeb60dc2c818ebf7883366eb19641a6c11450bd7b7d91f4b92b3d279793429407797400416e8ee0934d8e27b1afc1adf564a13676de6f3cc787cc734e349e2696aa9d662c7d3c7b7d9ec1d7dacd3aba539e3f9a4e7e9b44c7ffe8a98fa97e434729be47d9f215ec355832c766ee01881e45a5a510cc7af33aa23a341163874e3e0b0d249b3b94df289e0db9aa9894034351188e6738cbf830176a0d9f137e6ebf03b8c3a6ec876e0a8a1c34cb6e3ec21adedfe48d232f6aa8940d58a2f97abd4e00a9eee8ed1011548a2023f0c59e9d6e349136f6913627344c6673edbdadf99560fa6d7f3a430bf56469b95d656baccd01da2d1caf467754eefc1a18a0629e0010ae80052e085c90d9a623aaf9531e9a1bb751a2c620b4508a18857113d84aa0865a0bbc506850a30012a4c2006dd7da4c10934a0bb771a9c4089478312e841cb6fd3e69a69dda6106ffdcb6c16f34ceb060e98d7e9fe3199f5d05d3098cfb458368ed80c8b8969b5582ec3ba7104e61f13a9ed969d24a910de027a172ce31f613ed312627364acd365d636453cf1bfccf8f85ff62f83c92c0cc37e9c35c7f4bf47cb6609d0ee1ed2a0046248a0a5bb8934180128dd1aaf95ddc8fc03f39916be73f6d771797f562de9f84eb21469bed346240235118809dad1dd330d06a5a1bb8d34188482d693b189af75192136475c3098cfb4b2b54484b80b06f39956cc9c79d258b2f93a0888d951bacc8e92c5c3c76eb3465a1b9b2f4c6f905cdacfb3577c61a7577ca1d62bbe70822ff8a05778610cbde20b317ac51774d0e1a27168efbe328ca2001bcd461ae8d6acdafbe3b9fe8f7fcdea780bc74a4c13ebbc352320505b298ad665f446d6d7f8b89c8961ddb2adf62f4c5528008918bbfb473bce9fc70909a0640942ba7ffc804a7628f99ede5c9b7f33f6a737777338b81b5cffe8f69164cc73467d66158a61757336bab91add1c4d37d7eae666ba39996eae00dd5c0edd5c4c37c7eae670e8e608d0cd0da09ba3d1cd09a09b5b7573aa6ecebbb900747300e8e652dddc8c6e4e463717a39bbba19b83d1cdbde8e66ce8e65c747330dd5c8b6e8e4537b7827be9e65474732eddfd35d74b60b0ee1f1040756b566916a7ad666d6c86206a1a9edd3cd8da0043c874cf3cc721509e4b7bb3d2dd3720dc72d0dd0168f0f6c466977157cdde1b5077ffdc60b720ed2e4bfb71197c5bd936c7f902da0050923c693f2ef3e250dddca9a59b333de9e64add2d2349833f3fa88ff1bfc6310482084986e3576a137023c9f0e7714622b97e6dccaff36449c407073e37e51780a690160c680aa995d8d6d693f6fa7d1b069a426e24195e2b7bda4e90561022451c680a693d2dff645a8b9578e679675e6dadfd8f8e652499f3d7dc45bf95d6c7ef11694fcc636ea4b5b1fcef94d96ed9e6d16fe2a54fcb8e6d5388b7f0adceeb36bf8f7fb63e335fad93938a6fc33eff96e9b53cb33673df56629f4f96f7beb79e2caff30062e33a3d728074774cc0eaf60917ec6e245c4042846407f82949ce1f4b922f731977e1fbde8d40b2c5b9916438abb447a4405cdbc3560467da8c1299559aad118b33dee4797dd43048b638b8f61908798bcc2a1e6bd963ace16d92364c79ccc63201b73c5aeb23979696a910343c7f3c199b36bf916c7172fd1a15220493ba39966e6ed4cd7ddd9cd7a0ad04da34705d37c7adc1a2e0de9b9e21373b44def6d9fad8fc3e8f2d29e24c2b7db2bcaffc78566a792aadd97a23c9f9fafc97e6bfb5578f487bc671beca57d31a017c5bb9acc5c6da176e4bc4b44623625a036a90ac826968e2e75ba677da683c5f7f3c9fb4f901c6bf3f9bd1bfe5fb505c5ff6a3cf8e8ca2db5d6be8ee16403ba9037ecd2abd345f22f9f125be0f0daef663c21048444005e439d2a38296e816a7391c8e01ab6ac5bf361f2d2d7fcd6f31ae49f711a09b9b02f2e8a0bbe9cda3155f3fda4a6fa6f92af00d7d12f8967c44f4577e33902a3105299c5ed0dd421aa42edd31acfa644b463ef61e78f091d6c8d8cc652d8635821e7af05b8ab018568f7d61da8ac19e24e6e532984580242e8359b7ef79dd62af570b63fc7756a9bbf0f46e606652acbde00c89ee26e2a166224dccb336de2962ca23ec2173c0138120894ab90d544bb924403438dea043ebc3652a95591ceee676e6dce58e80a30d1ead6aa90360e37cda2b3f76b95ec75b3018597e4cf4d05b5fad0c0f7f5ab6b5d2d9fb58a7cccaf2a4953ff96f9e6d7592a4d9fffe4f7efce3394288fcf0960dc75ba2e3f17d26f6b1cef1c769c931667dbc95ce1cb38e27b6343cafd7c8bf96866db3628f4db7989c19cf9accacd298cbfcb5b2bf98dafc65d3f3634af38c43c56f47cfd4719d5f739a48efd79e66bbd78ad7de4b6bd401301803605fb33a30c7148fd7fe5420dec23336eb35f4d64fb7d5d2fb4278ebe9cdd5310e99deb739a68ea9036098e2fb393006f897d66d7519a589f35d663f3673236b59ab5991e6c793e62e970dbbcb5b3f96a458adf893c912ff75c00d8f21362e17be7dcf8b24ff87010e80fd6845178c01244965c8713e6dced859e9f87de82cf4d6f894b4d966b574249fca647cc43e81389e556ab3dd6ac6cf344669f6e6cc688db53b334f1e61b63863b638b34a69d9e28cb5c8919e233f1a0673ca01f0c80bec724d978b0242c8f06dd1e499412344ddadf201865fe4d7fc3398cf2a25c929e6c0c890ea1fffb5f9c7c6ffda23da99270f2a0332f3e4011a71d12a8283eed6ed7b7c2c80c346200f04aca7fed88961af6a61773e293ace3ff30cc45b34f1cec77ebbb3d258e93f758a163bf66cfb1ef17d46975920dec2383cc64f1302dfbe07fbf8e59748444afb98cf2acdf547ea22add96ac527ef8fb5f41d6fb57c808816e3d0e2dc1e8811df1e088b637188f4a0bb3ddbdbcd1240b78a480d7c5bb7ef799153b4dd647706ba2b10c4083a082341ecc82943ce959e798eaf577e5cbec61297aff9cae2acdf75608814dd3c95d6e69d36afa5ccabd58103870d8a6f380add0d85eea6d2dd5018d224870687b0b8eb472b7aaeef2efc18dfbee7f5b35bdabadb34e256bcd4fce059a1d6c87d929c365648111e35f1884d4d3c920374336f19ce5b86d5be8e8dd2704eb5d4ca2a902174b71082d0dd517437107ed0dd3ee8010fba7b07ddfd75eba03bbcd6a65a9c5b0ddf76dbb901d99b030611eae682fcc4680f360c56e8c016ba9b63a2042ac869618328747437e703071830e4880a88e006ddcd5d800b0188b9231e56d0dd5d901b1fae70011c2e5086eef65c6840ca173ed0e40649e86e961078600a6e09aea21fba9bab42860d2449c307aca0a3bb3f273012086843e0994277734b88ddf041033080240add2ffc3ef8f640e8d0f8f66600b144b7ccda6bcb96c4eeb749fe9d7f59ddaf06139086fe99b746eb868d568d99fa636f8c86272d0153b2d3f0fc11059503287eecbd364692658d11c8ebaf155f64008150a031ae89475e3675329e41788c78d27280dccf96d4f9915e3c83903f8f837f2c4efd209824437cedb5e393b189290fdc7367ed7e9e42e027c55aa4c84879e02763f37e254b9f0ac456bb3fc889adcdde1c1a9e3feee7e0fbb1da0bd199559aebf479f289dceefb5811531ee30ff1a3b5c9af33521e334f1ef8f3f897e2e7f1629d25c640c899edce8fd666e659ad117c7b20467c9f92b6ff1e19e87164d6de9ccf33ebf018e7ff1091084152e391f10c32565b7313e748c73a6db0584b5b6b18979da8e4ce6dc6a91e26195368666404080000c31200304020160b470312995cd5f2a4d50e1400068aae6480461909a328c7510a11a38c210400000440000044300c4100b89d64aac1fda39e991434b1d75597d044ee6a1b84d23605fe2e255afb28c4e25f56ed8f1e0f146bab106c54e7ded082af03655b1cadbadcf376b757b3e930ca3a57444e198a324ef881bfdf9ac06371101fdbe9cbe9cc191f9cb5f1ffa47ce629bfc9719f742a5c6ed9def9602216099bf55974e749cd4ec9d327ccfbadd2b4754dc6e94a19b5166922d91bf024db5302cea2463f60b2ada77d16c45021878d97a12177f115b27cfed921701c7b4960e499181e78ac7848ec98fd8ae07231faa85417e19827a0c43b4d6fcda5ba87e81fe7dcd3338df557c89ceb16e2898a5cd68987f2f2087f55a94966aa9fa2b6d18ba58bd50e54bf7a273ad759a6a6c95358f359e97299bc8831ba11227161218603ec9f1d392507e30a528a8a59f9c3d76798680c2d387eeb33c097ec75db5d8cd7b51930e682f4fa6fbaa5bb85afaf481f60aac974a191803a07d7df847a7844ab840f9d741513f6822b08a3ea5f694a42c63923a4135912f734147451e23bf26db2ebe5e4bf994c938f80fcb44137113a92060417cc1aa2585006612c2fd3372e7c8deb716fa062a3344bcf3933fa76b3ef0bf065c2c2b592bd1033642548084fc7637d97ea269e58f02ccc6e5417dc4d324c01d7bce970f0fa6af571f2e281983488c2ed4d1dd05122b85e362bce774b85708de221ef3547f348fc93692c67a4641cb241919cb408b41d9d9aba4564f01274888f0d3d49da322492f7b079c0582faa06e09a68585dfd4a009e73daeb56781518d53e919caa50f7c560b7d31de18e60b59596bd9fd3d8ce8181b1b439a23203aed67a1b13cda242f287336681d02c8466c545223445590ae350fdd7078e12882068fb52827f93a007aa8ebe373ee6e61d2d413e45981ad062021c3f6c355ff9fdabc6f5168bf28015efd6dfc8c0e6f1a59bab3d84b83150767881d82c2e93e3fa4c260dbefc3643a2f7fe2e947879b27e4cac0266efc5e6859eb5730e2e5e2ea3ffd454fd9924b67a9860c1d1b5e27f505f60e5fc3b2ff3e62832d41c950d771582a8c7dbdd24c9a706de1b3f39fbed166945be0a8bd9fe70ba444770eb40367ade4aec1b8f712194276eb6248c4bbf752595b53284fbe147ffa480f3a2ee2e32011ca6fcaed8624c70a096f04567d9df9defbcb54508e3bbae537d067624125b5cf50b06d835157fdb84766083fa3af437d091af34e8994447995e33cfef9572fe76dd2f83b3b16883958bdfa33a6117275dbff3e4b48d14fd9e47c8063d9db19074270cb8af06c4fed613b8260b372c8ddebda3e26a14b2417333db65c8e378108fe1b4ed237dadeab543eb9bc90d42fcb887129ff0c6ba53995aeb783f6b4851d1defe2373ad57186a257ab0a920195abdcba8ca9a0ee456ce3e992360a3e101a12a27da08dc31f4be6c2b2762c631ab53216b46cd362f8e6e4263be2ded0f488f7375414e036ef8e5dbd9d1a651392926438a2b43ec9076055276ccb140d19ad9dd03901f52c190712acab9434e9e0d40408684d8289944233caed03ce1e636917dbde3462fa8c20cf4d3050e84f22f571a37cec2eb48a4c9d3c45b4263e519c1aa72da36a68c8ef6c81a163a09472acb6b270edc6b6db193384c7bf516d25cbe8135f05c661e1142f8b876ec18133afb9f588503c6a6df22b41c6229da060908b2018aaeb6f4900a0bc07d5994eae5e7eca3030e82dc90c3ffc11671758f982625d86708f7fe80f47cca0327b81aed14cfe46b2c44d6fd77aa1c11f420fe3bd5dd3042fea385e3f60e537e050de699fdc30b9a8421dc436ad30423ec7103d16f8fa28e56004a5eed69ee0429bba625056562a7342ed140205f067add2807eedf6809614775f6ee72ddfe23d984b27d890a93f99f6774b007ed1b37497b6dc1213c7d8d47e1ccaffe4d0ecd138e8f44c0bd1b63f81c1728aa77619687427c625a78314507201824ea85f5bb8fe9e92e7932c2e79694020a46bc69733c81cacf31b2ada6c987e0a32a23261bb9b1230376ccc663c6e6fa432e5839adb4ac6498301e7850592529428d3977fbed94beff945dba03ce6f7f5b296e763ee5a21858a0093cbf61e9935dbdb9ab6bf41e0188842d5d85067289ed22f470a74a4e698cf3d603574844f427dcfb381b4a7d760aa37c55bbbfd9e6b8cd3387435fd8e149cfaf33bb0b7053f975d87cc0ba4b9dfc22a332e72d63ea9544f6c97e25a59ae282d31e4e9ecb1d1b974d608788589fa173b887b9d1b0c182301a3808bf6406f566c4f6b68377fcb3cf59cded1138f7d7b9b835ec6aeb26005274bfe9c88b0be1c5ab700ca42b57cb7639c77fc07f93c899fae7a7937ba54042a26f23651c83288ea62800b94c7ad978357252817c46ae6853c0e0ded58f991c3f841ad9e3e1873a70236d8fe5431035c73c282b4e60648deca31f4ec159c11d3feb64b5e3f6f84bea4b9dd8a3c0576728cb264e1888dbb4fe219ebfaa0067a474829cfa95bc73edbfce30f0fdd823ab2798e693e13e13aa68e952b38ae45ecf0800e384fdb54fb2939e3b059634e285cde6819e9da37fc829cd781a5506157ce06b3168aa7436f118f30483e79f62a420351c52d1946592ec57e1988cf377ed3c259b97d5e2915fd37fcba14fcf151a6ce1aa860d7cf69f61e85e5b50dd427ab12af8fee891100208179baeac81b59347cbc1d132171588053067918d031a01d972f338583c8e1c245cd0e667924e30bef50f8989ef0dbfb9c65c53f4d1086959d74b685542732e4fb63c43a653b956842d91c22c353250263e1306a920b5eb57edfbd0088e90fe3418ba6e43452a821fe43d09b17f96cc6720a1601a263677171a4d3343e9343bd628ccf8ec91929365727e32e1ad23ab512d8950041baa3d4b949768392960d9e8f97f89c84dbaec3493c846c28d15505f934f3c490ed8a420964ea55ff52d75daa231e342cb664afa22684e040a173925ee185184ac020964836cde99b9ecaecd290bfc1233c8fe69d6ade31881581cc03b5921ed94c795a10fcb208c7b24f214d38d7671087367f291d952e4a8e9d8a1631a24f9aec6b6190c2b3c307759366c794c8aa2f5b16a728a3a938f322c8080369596712d236e5f10e4585c1ba9010b9627daf01eb2e41f9c501240ad21fddf78248deab544b6c0f9911c55f04784153eecf618e58116b3f89443cb237e5589e65693868d3db78c7a4eb1dfb908870e407557416e56417cd4f5fa2e930598619362ae807177b849a8aef7b6aee3eda011c00d0ab2b140126403c583cbbd3e4d7af60ced10e7f4dd52a4e02163ee17ea1002ca17dc1d299f93c2964c77846301a41a8d01051895a0aa26e19ffb8b39fd2013e095938bede990640cc552a10f5425c09ce199d4c144d6294178ed23c2696d536bfde0fcd0c90ae2d9cb5f48f0db264e27a46d95754908d36f2dd767b74d6c9d0fa823c135a44b60de0b264901d40fa0d3604d8822059986d499eb138ea380c5dd0869e3fef1236dd2312679cbeea305fd3fc9fe466c42c1641aeb5c6209eb951d31e3a9391d9c740bcadf94807b7e6e169f5e1856655c5c72167eae0fca89a5bdd3f842aeb059d3df4de99aa983c2e7c926a06f91d6367e5af9016482beb5c28126218dbabdef0c83cc0308e4c2412eb962154bc17110dac0c1ac13b04c1100b5e6a6efece11091730a9668d604ae6f0935256fdea93dfa217a89be4d23b3681a0f7625dd0c4cfd80592c112789926578347ce2d1d8841cf6c4eb0e9b06b98d861a84906d85039968f67b6740d6ee4a6e7d896da3cf8178553dba64c7b9d7f0ad38e2660b8d9addc9e947d66c5ccffdcc577336690881471e076a60167a91367a843d6439c8c9d4c616569db43f80cf92645d591fa6f1ffb533aecda84a52ba81b041bcf570235f2c9daa2222a76928b17a73900e0d4bd298258006d827a3ac5d7335db382c18a86aad9e09da71538f7156aca1370d4578f6f5114d7de07491d798f28fab76eb55b7ffd79797b5e921481f0f6ab69c9e86a475fc0d390f80a9bc83eb1bf4ee169623397171caf8b66774f40d40e159be31d5fda47ad7b0406514d73dff26244876b34e52e4cacf5437dff744f6b6f3999dd522070d3a4230eb4ce3ab0d53e66d8f1e5080b940a503c87af72d11ca6b065089a8d8f59947366361d1b21aed3972b27cfd2044f514092bb0c24c86b8a7baeb3275c24517a43e3a9b9860b2d9303e996e41aa8c3a5b0601673c1b8e4cfa8c1cc36b32fd4295d22824eb38c9c8f331b32827812bdbd2da339514c0c2c4451066f156e755ede984b3e0a727a2e138cbd7c2bc5a0ec1a13f3f5facf736749912aead283632f66728b74237fc4b6417d97c2dd653a9a8e784b8556c046cde22ee86fd57948817c067b4d12af9875aecaff646cbbedad0102b46a3dcb3cf61c8a4b60cbd5a57e64ea3bcd84a059e476a4eaecd78343b8520dc3d9bacfb2d3553b392bc850207da3a151f5fdab737d3d4f65c652ed173ea2068af623965962aa97659c9fa9a1d696a656c849611bdf9abd2a5af4562404158671b1cb617c0385b0962029ea917825938557f163111fdc39639e8123041d15dbacbab5a86c9110fac70ed5f7e9fee1f0b29300b5778bf83ce7ca3de67b4c6997d07e066a4f18d6426d976d60108d4d905d40e88d84c719b210e39ad805d8d835b83ff042f0dd7719fc4f92c03637b0e1bc6110ab114bc74ef433cab2858d8227067f155b7e4afe8d3be53d4fcbbeae2cfff582bfef2a707a7ac9fbdbff9883d8ca54b19283ff8fc6a04cffa72bd77aabfef19bbcd29f7a7eb3509f6203345df404976e3a41ca9f6f0159b7c9f38ba32a9afd209006d4e4b7b69ddfabda2e2742f7703e92c7de9a1137059d3142db504bacbac3e57df833db18f00361237f5e30a1ee444325448e99328005de5441fcbf3a6f53561fe63f5faaa8421216835081aaa12ded6dfb3f9dad345b1c25419465e8e912bd6ee8230ac70f441555b115c083131d97fc6f07e72bc1fbe3b3c979845c6f5ea5dc4323b03909e35f51796b950bba97df3accde6ff44db3061f500f05437409fb141882cfba76cba210493ef3b76f25145ea1605bfe7303df885eee1b1e824766f0999fd97841cee1f4bb938794c268afc162d7d180dd0d3e803f41f10aaa706e4c1e523911bf5aa701b9b43ecf0b8b96c12fb8530f557d8450f3acc91ad9e4aec4350bf829358bc399ef508b11e17a72e73eca8726211a274a6c6830f11da1d54decd83b75ad21ab0269c714cfdf6d6ab92ef1d03bc18964a9c07947aafdfdef1e264982bd7bd6ee9aa2284681fc31c173ff82d1443a3b6e1a8c4f09d2e089b1e1a411342b4e5d2ac2462501d41661e14d9d04967039fe202a44a9017fb0a363450df0ba80140a855b2b7875602763af620bcefb014012bff2f52434fd0650285e187f4769340e4c7e14686fc58e3475d6598c90c5b20e8540b807f86862dcd48f269e52f4ccd0c2173316a37aeff40cf16ed4f7d19ebc01370f17781ab3f8bdaa9b6083f8107123482e0a48eb5edc3ad419fef9bdb320417f0333f9ac58e0b2df7a75b4bfaa3bd9adebd32844a4eea76b685df62d6c71fd8540a80901f0bf60dd6db3eef2c79aeb7b481e591002a0826b6d0f71e43602f7015d5d60419cd4a12075bb93ca9bcd5bf48f39e8cf07d938ea8be10de6633924c7258c3ec034c732b750b3aacab958502f9a3e5f32f83b77ddf3deef3c706c3d201e2763b4ea6bb0ee769df82d32c37916aa3208204950b291b1c34282fb3bf87bc8d4ee6ea9171ed143ae2b86e4d6a0d8f554e58c6ddfd33896c14fe8e13652b84256915a3608556691084397e9a085e58cb5752eb197a2a8cf5b2451db018d106f4ff90607801ea3d2e6b86ddfcca919f81dd86f880aa28779fd7f355d307479b8ac5c924d1cf477974d62f3e8ac7d38d347780e96db490d28f77d295723d3aa1bf7ac35bddbfb6e8b4ed810d2f377d8486d587ce927fdf12e34a1eae3adcdec3fb50e35589f0e4db4daba385b29866726ae7990f5e3d0b24d4c49e9446fcc30fa1d4a837c3cc1c26c843600892fa34bafdc28404e1f639b4d648e7c94065433e93f80f16829d5b466f65733a644281a2565d795254413340fe87a817a6ae37fd8d12534a8386f002286ec35607083357e6ba99aa768b49f5da2618bee59b4c78f0515d65a24299d50239dbcb0e3729cc50eac418116fe1a8ac70c9de8964e5071ad2666a5cf8b59369a0a176d254702a7808cd0a2d15247093edc178308679a39250023e1246ca5a97eed3d05968c78a75d34e3c7a73628498805e036af8ba22624da6f0887846295735f5750119676abb077f0ea90db18da8b854cdae26ca764681fda63a722cf42b7ae0f9c0101876308b83241303a9f72105d7f5a39358983f70dd99c13ae878bc94a2ea65c49a90c73e9528042fa3f1808c5f4567c002fbe67e157ebeb6f9a50eda56871261c5cccc145d540d7f8aa3bfd04df8ce48d6659a9ff11ea9f1a7a373c1de7fad5c279efc4a3ecc8f109a1520331f3cb7a84e378b75834d94aea3844388e14f36339d3cf9e1832cc03ceefd38f09f5536101347eda0bcee59af5c8f7642a3c7202ce9c087a69589b0dfea76206d6913d8079c388a93d430b0ac5c4983a77297b570a8d45b64bc00b1855ba13c3487a72248961d8c49d5c53191e32734c515ee839b3a70938e10253bcf8ba1e3348f5f15685121f1d211929659d70938e5b805bb904a8043e256b40c494ed8d54f7d5fdee0ce3dcf6543c977918d186c2bb0402ae7546542a86522a88dfa560b70696030ae445714a0383d0a14de369022c6e1123f407503b3e2c3bb3865099c758c0292210b14026ec546cdf50255e8946ed271d8c301310caffcac1e637f00a75615a3de89c43f514441cb83e8d4ac79e5ffa2894129b930a8523196198b1806804f4286ec39f5a5d838abc0cce7e9e0dd3c106e0ac2cff84e62576f3599bb43dda8bdea0fdbb89190b3158fced49abd315bb6e572c3432d9290979bc2d3713dc4020e42cc3fcce0ba53624aee36523c960329da0bf0cbeb8279d596a3899ff5be2d942c26ac7c59e1b3cc0e93a331a45225535b3f108313dc05b61e0c079a22528ada4fd1f37190e58df2ac0d8869e2e1bbefa205395e370a979a6c81c05a3d84badb9937dce2e3ed774630ed4742b383c21cc27400fb1cbf13db2804000f339725a59b99acd35502b744f5e10de0f5db2563543b11d545617bbf8c22e8a497f043a7f0d452e80800d7b4105809726e18b4d768030bf79bcaeadcf715abbacdbe3c3e7894053074959153e659bf66e8524912ae82a662192e4b01a20ec15e6eaa3f12a800511982a876ffbb798dadb98e41f5ccaa8377c50937ec4101abdd0cf31c70f30a6a3a7d627a1dcd9825c664b5b46476f606c9484e10e23f737a661e7ca17a9671353013e0751eca712039070d37bb67e9d8b29556c1a39c17fe8235d367b1c9aa043c68b9b0ca1106459dd025f77957d6a2d66944f9b38ca11e0e9be50b3be02f6d1947658378d15bf2551fa641679c89ad4314d336433681b2779aba179aee471f491e91c376c00015ec8c2dfd5b2b0320f227c0b9aed2888f6ee1a41c4630c6bf6a5f9bedf6357f370e157ab61115c29cb53e2a922011095c6a70d702d7be6c0f53b712f6f4bcb382ff7b6af3889d0f1f8fd1adcd0318b5bcebd094c65545b81e222a5108aff57fa532c7f5dec219f50aa48ee30e984433e5ece6c2f39d8770828960663ac7ed6de2a3f48ff533031e8d49023459a7a9e43ff108179fa09b2b589b2196db1fce181fd56c8c048dde018a5fce13f4953dcdf6c1d26d9ee3bf59cd2fe4ad9038e3f7bea857d87b85f2b899d1c9c9b5be81aa6b102cfd3f1db189a965b08776d9fb46ed3d6bb8b6bb7db2f51cb4816563440238e4a91c781c2abf51d004c4ac92b89cc305320bf19116d0e24cfdf361c618d3eecf0925b4f77c2c9f9b40019eb0a7427dc2e258b5b32613d0c035f3b4fc68be3ef23948e91f924e078a9fefc0ecff8efec072a8510b30c6402006e022e1a8476c78fb2d79be663d26e41646a5ed9cdb2b8bdca758716ad63500f278d37603a2d7c4d849669e6f1c254684a0d987d24e090a7c7a748a263dac68b813ae2ff6745312cf1a217ec64bb1adce51dbe4e91f8ca3bb1554c69cfcf784c1d6a204eeb554fdcf97589b5bca71121345c8295b3219c7a0ac6a8e6c45a56f1c421800045e8ad4343de962f996704ad67d6a16492478e625fb538788d94f6e0bad7d4b3947bbdf4c7671cde7a1f1012e94033fbd07b6aed77dc1923b45e819ca083445e74d3da2491f3ed2cc62d95ab8791598cff88c123f25afebf94f7bd64a502fca403c4f97f747e83d6ef2c4ec250a8cbf43226d62ee5d73969246d866d744f3c6132192560f6431345b026e8a5019344fdf047df2a71cd3199ac8f0fbb715ac472b08279cd08fabe67ee3fc1d483144704de5e42d31216e04a13a0fa90bc25dbaa2f6a77071a3f1ee84c96a0b3bb1d1bda31b0e0cd1489476acac931132c49def791d022e63d584333e74a7797ce4b359b74895f0a8d779d1de701df30310777bd6c95b62660c2aef1903c42f8298cac343e92d25a3d05f6202258d06d1ba40717e1adb8c959619dffb393cc217e3f9f7fa85ce1c76fff65b1c9c818e61c55b95895783538859b9918f700c9236838704e8e3d62d606e5c03c6edc8f43c3eef1c5bacf9d2de03b7fddc41a3504eae09de4842344a0fccf0717b12e2b884067cb88d8b618b5e8db020d068e19fe1df64a71f312abf2cac1ea8090b7988efe854a88e96ec8981a8b23b088e1ab8ea1a0b27b4fb37dcf19108bc4294c04bc7a0f7bb303d3dbfd52c9ccc05bcacef29b262a9f7e4557c51f8e539c39450af15a27a491c827ec891e6da877696966a6934f0879cfe0efe9410f8b1c98847cef0517cd394f3957fe68b591314ea9f99b2f37bd53b6b887c989b00f3a41650dce3080950e123549fe131e5c4d4091cfe99b28c3f8a247ae0a084cee3a65ba34eb1554cb4c3ed636ad02a32e8dc4f20f3983b9756f990b7602b25f9093c8c9c9b45fd80918e3d238d6dc78265e078c2f2f978c5c9a125726eb89713f7f9a194e7c0bb5cdebca46e9480aa52e1d8e529a3b86f7b98d6901fa9de98b465c6797a9c275b16dc4b79f990ec44da6a51031dc6ebfe39e481c2b8f0151ba2775c2f0979ff9f78b63f255523375d423238c9a09b14cfe6248f55bd6a379d777337ab0854b1ffd1ff939eff2f60d08134740482905263880f5d06f1f5c0f9935c9a06727f2838beedd9a0a90d0d7fa34452fd5016fa1f7462045b9ae8a42318a834236afccfaf14d580d1621adfd05f24ce93cf22da074f7ba16bcf69af7fe8f36a34b5d2240d7a96e520b7624593e01cd8ffd9e98f7ffe0936b6e9e6bb39f4fe86bb7f06139192fbfbe4ae79cc58cdecc6e7f4f717e1225a576fa04198b9545359f1568668f7626627f3d5f3be5af9c07f645ad826cb1e1633f95343ec40755a002e8b26571f313254455a2a1e64d2954f3dda43cba399ebaccc25feded758e82315dd8972e255fc07e22fb400be6aff4dac9f77153819bd1a14b4dfd2e5a9f5865f1461d4e5902f36aae8c4b9509c3de4e0a89eb535e7a1e6cc3b25c400205db7f57f45815ec389fcdd0a9fc1f7bcf1ffc90f04bd48bda3df1876e4b2ce34c7dc2640eb2bc06e533a759aff0e06d3021f9e67fe4ea6d23bbe493fb245cc096e6f492388a4fef7e61fa3b40a652349683b3daad23cdf2b429aeb2f69d74f8b5ffe28ad74a97277bc4a56097d8ee740e9fd59325873eccb556550da485e2ab2de044ff7148f17398901b05c09f7cb7e3b8ddd16fef4ed34189196b90da34e6404770c14e9cdeaead9014c4177fa5d68f8e5fa21ed968fe60c01d1311407db79be1274abc8859599f2c633395de7f00e24c7808edb433625caf4b6f1ac1b3ed9931f77968e3c836097270a0bfffaef9f1f7ceec7d3b1e20d6813a549f272d12a9c1e6f85eeafd8c21bfd90a926787ed97785fc8e0eae8c25c065ed09651102be27659bd229b07a9b5323bf76616d60e5f9440c7095641401ce30924268a9f3423b529b0042e8a6cfa11413c6ab2de1e2a83686de448b3a0ec86c797b6fd1bc0a2e57db90e6086cc4e5830959edc5d7b96d433168f6013cad9af4db8e3c70d6fd9540306bde2923376ab7dc170824d02a6e093b531492fa0a94eb938001aa5f292753b46dc1a5590287babd76529aee1e43423510fc4b555e7a0937ac7308333ce0aa315123b70eba8dae9207d9970c71052c04fe36b79412499839918af9521760374048b18f3d5010ff683aa7322e35eea0bf16825eca550921ad65ac76ea19bfcceb9a82995b262c2eefeaa31d99efaac7f9bfa375475abf34d8df1e7ee095d1d1be7c1fcd4ec343e3169f385858eeaf5cee8476c02488544d83d15ee709cdd39d11fe9da006da9a6b67af2092a705fb00000531dbf75ef69d58e2e5a07c31aed6a101b2f77d9296b4854490feca8214872d1dbfe34533737f8ce85f0a672b781136d1c41ac28930182a05088243badcd23e05fece49d2b453e86595b1dcbf9e63fc577b90e7851dbc10d4a7f6beab9171d0904954cc072d958a7431a9c3520eaf4a1699981b6adf15b6a124a499f1022b85572c246dc19fe80fc09a026f3b8bd69943321e5b0a105ad916c11ddbae174a7686fe955ca78c562ea167c811f206e2d0f8f5fc708f456029eb2b4dd3c7148b264417f02972a5d9f1a623801df8f71a4f546bf2a51fd82c5ea7082042a4af868422a056e6a752f3a201a12bce0c96f3419cf6fee672273267e548851a697899115096a10aac0f4f1c8d0a759585f8e2ad3315d0a810dc26e1256431c922357b780a6fbdd9bbc576653eeea33e071ba03f61cccadf794bcc0aa3212da3c20b6528c738e8c0299f7d0c2f66f21ca8648ad896b5258e591e23b18ec47ed05dba036854ca79f4546581b97b8e23b8bcac201d137c8a087bdb87c1b0062ea96753f69cd11c85296fa22d5684c6cb7ddd14b740c2758382040734538fa873b6e8905a1737c8435d2252c337645f83edcda45014d0d37f11af34bb202a954889c06c1413992c8fa73def720e5eeb31024fdecaeea36eabb2913a64b7c7bd5b68f5aa9fddffafad6fe4d7471125df0d6b9e17daae2be8db3a1aeee5513c32b745c1eeaba8fa77c80a7f3304ab83e1800ff9b86f7e7c561195a9fbe58ba310c2d9274a5db99ba73edb642df3506e985f6d6caace32a1a900049a2abcdf2fb18d7c03f61d7439b77dfc5999e36d3cba050382db048bcd68d92af4f500dd426a61b0927c39c726937f0a08f4aca376f0649f24f42ba48020252b73d24346b25c9eceb2d91725a951360206cf082fe2ce548c23dfafff0f5e6f00921092e26cad3a3943f2de5c7d402932f1018b2affc05903ac54d7c16e450b5e4317485b21836ecde3c0410b215a81e0d81b9da23f548598be02f23b5f014d40840ec907f58f6228bb1146e56ad63ef404915870eafcd7b176f70acb0d955c45af7f4b38324061ccbe2eba43268d6b41f9459905182821276c616e32e5a039300b4025cc7b0a4a221a04862172e34224efa756917381613f44f910dc900d6e7b9b4b8a802516f4a6ddebae080acd915e66af657430267d988d80fd28da80d9a278ba16c06ba53e4638fd1b2cdf3f8fce50c7909c83f1168a6f921bb1c4060a5418668821101059a6d335f6c64570c3be1f994aa7e436f8b18055ccf77e06c6060c90f4c3341452fd786ae6491533fd660788326c6d3f1ea889a4e5a3b5f39186a4363f40cf9cf63fc910abe3aa98af1bbebdaa951a5b16f90beffccf5920b08338ae1c9e1d1556816a5cacee4317342183bafb93fe87500f50f6f2bc8fab69bffb0da02aae4daf0b42f72d5cfc4b34abfbd01501e8d44c06b6097550fbef839778a71c0c0c86f7a0c45d963b81977955f8eef3a304d6ac374eddcc3ee059db3d084c274c4686c0825afa9fc14acb82f9f73fe36ee01f348f38d1a2cfac2b9121379ec6d3e4a3498c18cfcc7117d5850600ffc3e29ae8b9b510052ce645d97f18540d1538e0b969c03f9c9eb61ac8680a7e02db08663ae7d674a9951ab52cd70669d71f3d05e60907a4f21ceb4d83029552678bc7df5811c30449a31de4cd7b6f1ef3fd099a955a59db04ff0cbdbbf124c8f762d8e501b3e1502834280f6fd60a343f6609909f2e2351e8270955f1e447df05e58af1b76984f45667dc52145bc102d5f1e824a191ebedaef4497a0234d29fe9fb036143a22d13cbc3d0a4614b06a5bae037bfd640279ce8c557e4b59597e3476428b2ed3b800a1dc88a60471e2521b01761d2baba8d24a933f30fee62484641995ea33cf3357c92404a9a1a568a92709bed4f97809a4b4568f671295e9a9f5efd36c54af4018c77a0713cee38e813bc1b0a85ade42eec0a0185834c68eec0b73eb5cefc6cbfd6843fdca91ed8d78201f5f15341de13594765c248be08b781d841966ea66f90a899c206128935f40d558e9f8203be5816d12d0ec25c77a6e48743c06675f8df3d10179d4746ff6b97c86f5f8ad086e5e6eb5f6db283cad891825804a2c1b04b5e31c609a1800c44276b3006e2b1a547b01e0bf7b39ec5591a7e2058fd4956be4bd6caf770ad55ea42023169847eeea2050f3545465a45addd180558df7062a3d67b40059160cbd4a5fcde82dd307721821518bbf842997bc6391208a041da562bc19a094643718dcd67bd1752074d01d4c18f0dd0056c2657d342ac69d6f7ecf674ba9d439aab9ecb478dabe2d9982cfb79b546ccc344c47815700fe993b10fba04adc94f32ebef6577ae9c6d61b33bbbe2db3ca7ea9cf90e5b2c4336344461003fbecd36301a87459c9376587b41410fb1ba895ed4ee876a8febf76e5c043ecb43043a3a5f3176cbcc57438e3271d2d61191e73a988cd37dbad9a43621e3f40f30230c028490889fbed679573774e582e672ced5bcbfa009495d3001a5f47ed95215c3a0398db167f7f32c784b0023ea8547fbc8986879dbc1a9caa13d2bea17bd2483bb8c78f68807d29fcd3d08ccd0103e5001fae45cbddf7c5b7c14ee3cc67d8585d0aa9a453dd209e8a64a302a71d545bd706efc8cfbd11e3c2b72b0bce587abc02bbd4039a6e4592e31af90397463b0436187439b816be2e4ae9c2fab12bf775cd6ecc6d6b2ca1360bf60d977fe6b5f1100093db658628cbd3ddb465debc63b31f3bcb6778ad9b5557dbc3ea6592b5dfd79355e226a7c15a1310056c0b2a097634b8bd61273535020966dd018bd444f63c790e40b1dbda2e7d68381c83ad7cf6a0505583e62f541abded27f17be1f24e3e32177af296b7f04a6a6ac3afb8468c72265f39c186fb4673d08de3392b1549b30b0833c5912201feb72a70213e4685673eaab2362cef12a0cadaba030330c0940146464d0df662863cda302ec36c43a5c0d7ef9ad92470c98944468381fc398248c78f7ec3f00e00768cbcc126f5722e7e3aac371f16864621fc00bc683c2d7a907581de8e3242b440947633e4720e7e3091ffa88753fc0eec3365d09a744bb03a3aa53d1ef800bf1a219ed7f9a3e2762795d6f5f8282848fb90911eb0c3f297f6dac01a21512b0ce77c72b39c6d6fc0a910425e30f785f08800e676776351d5fc46c010bece7de4cd8ee227234016cbfcd479042a54af1b22be02f037d809a8801e4053328fe7a88d35d1e06d01a13a1d1614d01b45c9e217a8856a1ab80460e20f449008639c81ca94a464f9711d31f45c8ec2c86c5a47cc7c4c2496a4fdf7e28a76e583180f901d760f299e8293eec8cdfe67fee26078fed765357e0f368dda10045aab3055bac331d0efe4fe961ca94f7e1c2e21e7ae5d8a831a006b2ecc31f77e1f9a7b600266335d2bcf1c422ab249292caea39450d064fb5a896974068503973fdc07f8ff4437f91e98333d4f779e82180b599f2570d08d4a04520863ce6ca0d0e287410489c69ea874a6eb5c005bf985de9e1839ea26a1d45a42a25ed68c5c6875b7ea931054a98bc8fc93fcf5f40621318eda68bdddfb65e2d7e45b64ee32c0eea7c0d8a9badbeb20d12b41f11439129d86b2c425c36cda4105d10043c552c4314ebf2d187dd3636390ad6052724c6fc4e029db71b8ec2dd8752f95de19383944a72c851d0453b222baf84120b667894cb7508a16c6a27139f6941b5c3d74d0e4817d80152693d7022034d406043de20d06adb40e827ca51987226d5c781447031055abc1ba83a5a35c9423947d0d4ebe0026d77a01586d134647656909364f0f85c3a7e0615357970cbf37de7dffe8b5e9dcf7be66fb13dd8f3c729bf7786cb3bbf594d8360efabf51e816637dbc93d56d066079b029da0d410a4a4c073ad71c3dce6346d412b0e00ff6b25a08c237ec1cfa235273401f868c3908281d2136ce109ad5c7229f9215decdd299d6da8cf30bc65d964bcc0a43ecdfcca27a9e5e1313aa38281d5250b56cb331040d7061476266a6252e67d0e136c41e50883eba62739ecb26702b904408eaee805cb210b19c68a3d18d2127446443e071e7b156249cdd9e7c6041f833cf52ca94eef95456d90673f1c0c399bdd852e1898a14d12869f244e7dd62f13454df5b94f8f0dc361d69f4935cb98fde634fafd6edaed9c66ef4ba8731c767a1329543710135a79d2714b340216e55c5bf00e736e0d96409339dcf4615aceda2bef1bb8d963776694106fc8c753c643b42ed5c4491348a535cd46ea5eee1a4c5e220155806adff82dff975778b293ffba1cefe56e4161fa22925c709b6968ca7180e6ee553cb2937e30d41f7e74a01da8c438fbed39a9beb6545ce8e38f99408293426bf6802dce09c2e214a5e0b4f77be78c41a80077a333096bde8882ac6b0dd08abeb1c596e82561bf2cfba2c569491ce15995c971475f9b8f0e51515f2eabf8d989bef40b574f75aed52a5e4660c6f03be76906403ff0ec4f4b152bc19653e06c823dde5e7f44e1e1ba69071ae6a2c7cb9f8052d880d86e55b74962bca785f483799c6502aa4ebe3b147593de2c81be01ed01e40dd7c15916705165bf721d3f7cc0e4555a0b4b282717072653b1e18e4a794d12e244868e801b13da8c19cd1e6e4130abcc63d2018bf6257a486bf7ee9ef2c36626688c3836755318b9202e5e51218cc9bc9342c86e89fe4c7eae6a3c1a37bb686b6d3f56467e1dfb8a18dfe633a48f33f73ab6e19552fccec0858a578f7a4437449490d01fb46558abfbd53502ff7b0581be5aa9305dff5c5c69e874a57b9062c9a3f48462fa6066f594880d5cfc4298304b8c1841ee67c0ba8d6f5688f6bd322fe898636db37d37c7aa9c2f027a7d094315ff3da84a628c0d41d568457b489b720eccfb04cc4203df559c688800430daf706115442501aa4bc6338234bf38dd92f640a3591c3e6a013b74f2ddfaba51d89b837f14b2d2544fcdbbe55441a2098324146394071830d483c8e5103f19be65cab78eeaeb936536d021e46a281b4b251b552ea641ca2015a9bb11f834428ae09850fa26712a0b1480d59c51cc0d56bc1312f77871581f66d49c2eaef940da33b0ac145d5b72964d18134f6abb458870aed5b58cd2b4a0cec069758fa7599c5f56dcd189849a9b12680035076a9181be774721821de16395b47ea12db53b92a58e504dff4f88180966eb150d94481d5f58d5be42f9d784e307014889ca8853e47077b219046924cb1e2028598eb4262f906fbca5774020be43817a01263d9cd1e7dff79404517a2e643162cafa9e3315ee0d51dd56d8e457d7f7f37297e7fa7976813ee7f8212e89af59a66bfec72b078208b69cc60462d452327744b57232f9fbefb124d53fb6b7ed5b7653c4c89ede2f98a273ec8952fc5f6bb608a9a4161e07f8b7b5affd22016d4367256c88e641686cd15bd0a97fe2e401d98d5d5e787f023aed19a6b899e43ba848bad6f3d1c21c8777fa0f14a645fb8b2884996eeb8552d0bea31b94e8e83485c434a23103d407ca8c789f161d59d11f9cb671c4da882c5b7090d3503832a43425c88274d50b15ac68f15eec3c5e77929506a637c3e883ebf194cb9eca47febf60dc5a37ba03456365f3132413cf6999047b26a2584d5cd6600328fd33072e3848a219711cc619e5d3e7ff3b2890260dfc752e1c83a7566366a3665a1115e6dc81c0b18af72288f603dc8ac883dae28a86358e0c615054cb0c186849bb362d2c1031ddcda2ada80b985a9657907b9820a546c091feef2cb3a306b283ab381baddf5976d0f105950327f7fe52b4f0f1fe7c0d1a729c80f8f26b188ffb97e20c4570efd14894ef4c524c2ca496d3e34351a31366c4f178068ddd90324900725d0c20dcb13c3af75d3dff02d4039d6f9c9e309d9eacbb0053f191e59cd35c3022c8743b9429c63588cd47544efa231d8f1988ea43c1c74f98d2ffd96b0b2318288564993d80f66564214d43c799c39e02152d7ca2039aebda939d764ddaffe516dc41712654591952ba9f55d1cf285a71f16a7ecc78ce1c982e9d81599686734f8be66a7f5c052cebc9d3b2c58609d07832cd865a784c2e78bb0c576afb856cfc8e7a7e2fc0e6914fb6ba205c03f3bc0f05b90863569f108458209fb4710c54270f8853a607edb46b1b10b1c01f99b9f505b9b3cd6523717c140e069f3f8b4ec59497e4d76dc6161fccb907693f87e081df47064c9f6ebbf71314af8bd2b9e6250bec5844ece4991510e16e72f739036bfb77f3e40536bba2ecaefc6decdf5940a7adea0f28ac53f822087519a68019d944ec693e200c12197b98cb4b013013a73724dda252483e04ee12f4a090dd4d5457a7d3458bb28f9f755a60600c2695d2bc04455ae2ae742ac959cfdd44187db1392de1fbd42b67ebaae8cbd60fa9e3bc3a56a2885a1a0bbe47fb21530e058b8c92a3adfa7dba51ba58f7dd2d44c61cddb3cfd29726ad963ec90c35f1124890e159fc2581d2e020d69ebb3c342ffd9d01c8ab9ae8e7fd52a821c3920ca1554dbb854ab3e61aa74de5ea017eff9f303971942e508f4dd0a94ebe0262b4beb39961d6a221c0cb46d178d948cb569f479bab6d488ce690ae30cf2083030ece3746fbd23467e4b6e28c45fba0445bb185f57862ec6320dec0c279380488eb9d4f43436f9631ca0fd5968297a5e234f347e8ac89448b99b5162ddf0125b80a4d9e7c48105305343f34c2185af3d0477f9730c35de1530954fcc8221f8f055695f99088366734430152626d37dd9a95b958884f4ec263fb72df228d07df0da5288f9669f2ed2f342bca4e5a1f722c072ee31cf1de8a973c4da369197ee521e13f7aa1d6f4a00cb4e863b451e0edfc19c801c389b6d22e3bbb6b32cbe818443053e68714edeed400a415a27dbe3dc6dbdfc26794becd4656b5fc1116a46d7cd549f34084f9ae8b81e2471bf8fa550dac63006c3b754786c9c707ecf5fa982b209ad3e23829df2da41a33cff2a169248f8fa8dd7870e85f4ab89a4fd3b89ccc60c2f369db17e7f3864d0045e53b3e21744b6049b24b995fecb292b3edb182d851917b072cbd29f9032cabed2f2f63d01b7e99f070d20f27e64f9db5f8f37b39e764233a032677d7d9df675a8ae1be1e29de51430ce69909c6b5bba0118245a4a0ab5c12ff58adb54da7f01f934c4f1b70912d08d52902055ee8eb079c25668668a1c59838aabf211c899bc0bf97ef92f8bac0966dd5588d5be98d2d63f8a391bbf11d0952c0720193e38802cc011cc85942b804b0ffa2aa80851c7cd8f82443f5d5c9eb9e5ad3dabb73e30ef6226b4a3e4f2dbdb401c706ea5cb07e240be97a4813c563821ca47c4b3de3c8eb1affac9e817d1e0b10e446c5ada7835e079c82bbe67999df1670cb31d6959eda391ae12edc065d5da19366c83c5c0fd59ba4783e4ce035dc1e99b905aca2d15c358898c1a14ad20d4333784e377056ca6bd29a07daca45d00f06886dd90140bee3bed4cc8470b81d1b5535b2f6bde53b6e6d2ba4237421c2e9e02a40db8de6196557524a401418424eada4fba38d1ce3b8a2d6a36ab7242b9ea0a15624117b00fb53f9c860e3ef2c05d54be8b7d726dd36f6ca1ac3f3e4eb4cfec69e0e7f481c6db8875de59b93f1d10ff3f055be29473ffc2157a7a31fe6903dda70fbd08b299adf2bae1fa21b570dc3c1c8ef889143ba63b9eceb58933947eff722e1f2e3a9d1b3ec750e5420c1f3d8e553e33d9145db362fe295eaf922b92ad359bff2a6490dd4daa620adc68bb94b93aa7e682a0f6ee4a99b4ee5521138cae76efd7d9ef999dccca0111d35bb081e79f09a271ac2aee7c9989873ee52850c5e7171e8a4e57c22cd458e40d6d6e5805b218d2607226ca612ef5fa0437cc24f01625b275126b24bae9b173476f4de208cb976a20d2a37728cae924a0844c7026fad8afa7268f765a3df640c55b8b14d436fc867bcd2db6daa6b29998037c98577544e7ebf8b20a40135fb428d91b9e330b79ef0e22410bb7ee979755ac1deb00b9dea7f538a0562afa9de1d4f13ddf32e08a18e791f10c8aa6bd54f2964df87195e3ed87ceeadb330dd59ba5cea0c62cf35f7afe9f6c3140356ee7bd14bb7af830527ac7a73a38265b06c8a6254f4b7ae7933af9f3d3eaeec3721c9d9dcdecd96729850124c93bb93dd0c8e47d34d3f70f9c44126948a7ba7373cc26fa09569af060a129652136d90b44c671ab4517b59763db047e6f64886d8e9cd197b623e62bb632a2606d3c9eab1ca79036c8badf7a144c1c64cac0f75601f881df3a88fe4d6f2a83e064cf1c84039f5a91e03597fc647b60b4ef42a9f02005b036b922090486fc618edbf07ef103df80a000740e9464a5cfdf32e1d10c366596c39b0396f6badaa357eec68fbcd61dd528644987bec67552c2d44dff74f4d99494d1639e043e995a606d011bbc59540f5668e8a765ebc6ec3a077e44bbdeec8191b263bce6189ae3d8785fa12847127497b1234ce73b187219d788b1df60fda6a2e3d74c219fd316ce3bf28a80119effc6c6db2960c6672150f896f0236f32d825d549f6048dc0f2e67944e4f9cd950a67c6167e832eef0c201d7e3b69e7c8e414a4dabbb5c9827035c68ad83134d9fe6243a0b29b77fb57a74d6e8de303455b336dc780b66e49968d00f3bd65a2700e3aff7810d4b4c48c08a8802384b037f38828b825d870c125bdc7ba69334b4747c0b2bb5812ba9c048f5ce9b5eefe66869391907b6c49bfc1f56c49b1cdb1a7590c221ddc1d2a0b2a07fb36bd2d5f89a7efcbea047893aad024756f47d2268b32c6c7a0fc7fa67436051ca8d9f27cd87f0263aae12225424bd354ef970631d433a5462082b2dc9164cd66c8aa0bd701d166ec7e3675ad7e10b2f1b76f24f95be6c74460a6b2a3bfd6d4143944c41e17296624a46aa1636684a1b6cee2fac10ac81031cd198c69f3d32685d8b9a1110e181ec53e8872530ea3494ad73cccc7cbd358141372168aa89fe085e50c8038dd79fd7c445a9d3ac1cd0f820b79ac13705bce09d568e5eb299964425e88f90c1bfbbad045d1defaee8076a84f30e997baff1440508f4b94cbad3abb3917febf39a11f4dd4a6945f425a71ad1ea37919e45975811cf117af0e761acc2add031a41f5c4304d03916607b0620c51701851289e221e444bd3cefbd44c5d02b6c666b2e329a447d6f2ea176b32c1dfe54a75aaa55a0290d13bacdc2782e08744b0a2cf8ed8ded248d32a97fbb5c587e07602d1e9ddf6f2ec63fd5f8aaac8b99fc417574a5c2dc2492cbb84b96de33e9ec6ebc1ef96077f23fd312b328a1f816ccbb7dcde4e0d761e3626eb92aa7dbabe4fcc082a2eb6d80d84e6decc9fdcd81e132cc99c61da5df2c5c2fe43a9116f1ee39dda15a86e78b2a08378b10379b76ae56243f7d696bfe54994cb00e45ff62f324e6a045a57c18eac91537efa823d5c7d3061c8c5b2cf8effce93600b7878649999b8eef460fb3eda3bdd29e7dc5e1cd32135a36dca9b04a1228c530c9b29158d4325a381f92d196849d8f035f24589e1f7d3e20b3c6ceabbed17523dc067c046e986b6814c311beba9568007df19c450f28e1816cc47a682fe7144e19d01611b8c6a862daab8e6bda06b32938966df635f84c8b9612c8779302ec2ba23b6c5b029fe0ae7b885675e7cdb55cab876080b551ac6a1739f7967cdfeac30daa2622b61fab4671e669c5327904473c0e29724f518f5f8e5c721a24cc756e40ff64d95eb8ea11ef97ceb6ec911b85dd39f50427cc4d1e348a763fdd269a096e7aac6db77d1b17eac462ea92020b652fcd104d90105503e14ae4da921db748bce24886b876e4076f9a4fa73377660d1e7830f59d3ab36dde63aa5f38a290654f3e3fd5c85fa8acfa11444270ee51581aa8e98e12dd770fa15f35b4bb20eec7bc769f8346b5ed54e1a9d8ea9c4a60762c04f9dcd12b0675038defe8d83eac43fd0f456eaaa11d93cc6e05c0fc518ad534ea77b8fd5ccfeb2f1588daf6655b3d570d1809cea02cc46ea25c50d79903cf6d6311ecb03b61a3145dc6d1ae33e7ff3586db014306223931a871358a9df8c8005ed5929a5ae760f69608476c4dce2314c97de3985191bb56853da5d5ff9ae96466cabb66d0990950b0ed275e1840f48711b39ae4d52c4937288c60415e3b9fd926e94696c4cc1ce7123b480d1719266f1038549f36495b44ee531e1833ef9bbe7093f8544bb8288ad413f8829c7689fa446ad92ef3f35e9174111c711da7df2a53b5df9e6e7743b02e16b0fef1685181f999ee4f41b77f38113571db48037c86d35030a22d85ff4a86490ec9e8dac518c2c6a3bb338fd124bd31781d2c94ffff9c5ca3d3239df822e09c667ea4351801471bf71d039ce634538e1eb4ed130b2c39485a74707b3f08ee02fb280c78a0dc05c0fc580b749e637d43628316cd3f4a60f1e513b5d30ef1816ff42b245b521341667e25f06ff49a9f6d54024a7dab75ce9d34fafcb8d7ff3bfacaf3a74dd5903ee3134f5fb9deda07faa6d812a9587185387053f3ae462798193ccb1d9275bd8eb08c51fb1c19b6cc203f8db0495215b7993023379635803cc6bad41b3ebb22eb2409860a83f7885d3054bf57335a26b1666426b266a44c4b31b79a56246f08d8f49ebb21fd4eeb1a567a972b25433fbaac05f0572d1211f4e70634f2401b9594291ee2788361f7bf6d82fdc01f7cc5af5f7266e83db0c7fb749fbc00b9e305ffce3939adf7c34755b57a657a6e0d7ac9396626dea301f1f9b39be98836396cc1673bd36054e61075cf9d8939b5f4ee217238d1ab149a49bd333da495bc80e786063eb62808d2a9482f0442e0a9c5ef7e80ebe13ba5b606d39614581c823b0172489914f37a73452fd8617806b96aec2409ffac766d4706760482981adb02077a0408aa437f80431bdaa17b80431deaa11f9a071ecaa119faa10fcd031afaa10cedd086f6d01cf05087fe50867e284373d0c396f64b77a1cd7b1e444afa7b063a0b3e6727608538b29f8cd760822e7dfe65ce88b9f438dc438eea4aebc799cdd7831d2881f9cd4901f47bc41af756ef409f322da7e9e77d4691f87fb8682405779a3c9d3279f734767fa3166256114d70cb52d9196085b803abe2c5126f4307db92285a556271d26f729be377a3a7f1e8dfc7d25bcecd4d6340918db1af7e3b7eb9628605cb7f019aa4b9d9cff0dfe4f8ba9132249ed1959a01aea8c8f8aeea63902a16432f3df2b12a10cc520a08a14802b3f8abfa15918a21669ada6e7a18cf7cb3aacaa80a649b9c13755199d012bd01f90327bb6d98883ca18f228819ca254bfa0a5898144602931c412f81554170a4cbfdcd24b44824c8e34ccd013b52a4e89c068adda4a0921bb579daa4e209ec233b05704d45596e9be12fbe77450f1e1994b35e209c02d0fe34df6c3254f0399c4e9d2378b286695f88f9f3a95257559ba831b9e423e39997eaad8fc9d02b83ff33c2068d35ff35fa5c115468f8f83af78bbdd660f1dd7b44ab6a93b0642e21b4c2a07925db63dd4703db6768d9347c9a7494a9029b03f05443b0f73f5c7950c0f875cb465b812c8e7dfbb3d4838e3b286e57b9345fb97990d6fa2b91f1013409057ec5043310531038aea83afc992c9ea1dbd608e42bfe6f41d7ba907117cfdb32476c492cf04f066e406fa9564dd20bd3221121948d5a61dbb21a38610dab610fdbb02db7dc72d50db35e23856e959018bdae8678a037909d024910641025114ab40dce20a36da065834f028596c44bff7674ce4ee83ce1935d57473b78ca87774e8cc2e6c9c33bdb2ecaac75bb2d7cbaae56919b597c82384a14ac734a799f8bc73455aeda2dacfdd479bbe7899d6cda09cbae473da7aebe59d86ecbd1ecf2beb65bfdd93a67577d6d5715f357d3a06b4045d340d3326043cb20890cde0cbc0c6e340cc0c040011a0627062368484a80e40a243220f182c4e7823fb40bccd02ee8e17f8a1ae4094569f9aa25e8a5b554b942f453654fa1d2bdb61855374d35a8af1e8e92f2ba17ea62d576c51dc53b186f75e7d44ef14e9d4e083bc159b0133ce575b5b0cb754e0ff3e0133efba61d89a2e9a1695368da129a164d4399c08485a909cd0483a98911418c2ca1192142334264e48b8c402bb28656848c56e44723028846848ddd727cb45bcdf2cd6eddbddcc8e56a3f85fa7bea0861acb3dfd53d059d18750a1ded169f403b9ae5f8cc7202612758284b516e332b6d5ffddd45ac4bdd6e4e59afb6670b737ec17bf5be2e8ed3b588b345b93db7d1ce89f78a088fb0edb5bfe749c5ddd272a934dbf1deacd56db156bdd3b5c57b0a3edaedd16e4fbcb3b5d615132244444a181288360405da10096843a0d08630a10d19d2866042e2f8ff53e7d4c972f6730a15bca3b3b3b3d3b3641961846d6f35e35de4e6558aba86f0d6d77c44b4e976f7576efb7e654dc8114268d8ba264468a3ab9053bb6a427ed372c8f8ff1c29fe9f4d8952aaa3dd6a39ae2bb5593c8b69121df11667013809d070a068377d58a1dd3ca1dda8a0dd90a0d990a1d95cb16de7bbbb6a8575b698fc9ae689557ec21d4be7d4e9d0f3dd436dd089550e74c2e7cf799e2f14e7ddf3aa95ae6d6ee92d861bb56b51bb16b5abcdca867cad0690ff1eadc68b7f579156a3c31f6d55ab11d235287e99b4ef8aa160228d460a282e8ed45776d568c8df341aadc4c66f2ec71e51d2ffbf563afd076933806cf9cdda4c131c489b39f391bb75cb5b54cf474c5e9b69d275b6cb5927fc6a738a888765b34f2ac5a36145ffbfbd8695daebf13f089416fcd18206b440851698d0028c0560b0600616b458500a6287200810e48a2058206004821488088160b0822e5620801504ad405301163ae789d5f5d4711327ebbbd595c5fd5df7dbe90c1571f614749e70bbd91da45705154e1d96cdd8091e3a059d278a65d7be06e1edec4efc62579c5dd479baf86b7d5797e37ebafc4db395de5d6c0ba3d65368ebf00e56b9baa6ebdbd7ac021d1524014405804400100200920232420ad04841d277172b847776cb817cb06eb30ad80956e114b4bdac8bcd46ab6b4c6b4d375bd4ae1de79dac378bf58382150a464081062738c109da3841152788e2042e9c0065020f3c6132011226684d20f4870afe88e30f04fc51fe71538208fc63144685f93264ea8cb139850aded9d931773633e8c90fded9761ba4f212309bcf179a6ef81c5abd1cc52854efb9e5f29d966fc13b1b9b757bc22f5f1d611d779f54ee5ebd27ded98a765a8e51299e76af8e5cce936e2e79686f57e52f8bbb6a094e3b8f2781129a045f4870f3ff7db3b95dad6cdd0f32fe373f68e0ef090ff97172eef698fc48b2e9b87c35caab8df695d5071e7d94e99cc5afab45bd2ef4a88f2bbfe9e49e8ffac0efe44d7ce481f968e28b8c700f1f484ff8b8f2cff9cb47929fb2071bff6cde2387dfdb555547bbd547bb354da23d4e7a08f21b515090169f6da728ce7ae4a087901e424690c508904640f4dbf972ee9eb8af3ae7096f17e5f2a3ddbed896ce79ae5b168115119010023e800881941010c9430379b4f258210fa13c4a78c8818701f098824706203003043b8000ccffc69a4205f3f6e572d666e1760dc23bf94875ead6c5e6b7bba868395547bb55b5dc348f36501b845daeaeabc63b186fa7aacda9eac43b189b5a3617466af5ceef0fded9f61076378acde9faae6efaba5057919ba9e09dcde5e7893ae2ec46715f3193cd3df776ad9ce71d82dc21c61d59dcc16e23b0ac77b56dd8dcacf525a12c373139cc17bc5776a861070d7670b1e33fd0800f74f9c0933a06a9a38f3a8ca8e3043afaa023083abcfc8f80f1f6767765e2eeeecadb7dbb0b005867bbdcf784b7d1ca66cc5f8cd2d99dcdea09b3acaacd9be57c67c37b4534b46de9bb31aaefa2ec6e238eb6b6db72f1176a15833376513ae776b9ef799e70df5b4c9bdfbc7a559b4533ee5b4e5b3a6e263007147378f96db3f2506fa1ce13f79c91aa884939162dbde53d6f37ed2b6b6f576d770bdc55557babab96a32587142b98bf2f968d238fff389a78573d7108c5813d90478f078ef0c0159d13ee190f79e0b4bdbbf7c0e1c7eb9cb0c66d86a30a385adbd9e1b802077e438bdf582e57dddd6abda1c3bfe1e5ff3716b0e6bc08bfc1b991c77e42e486179b1b47fcff66e4867e75266e98b6b3b731c76f98fd69a38adfda403a3b9636aefc6facfdfeb4b1c3061bbfe98d6297b39b8d2a7e7bb13d6cc0904aa57e785e2c9b53a9ebe243a6994ad737bf584c938847af3e9b75b9a9d40f4611f1a841acfdfe6ce149379735ba354a5bbaa9d1851a46a881e57f73f7a672d48a5118759e9b8b1aa6ffade558ef971ba5a1079b4699ed95f72be3360da2ffad07abeceebbe578280d1c34b4f8dff6e6bcdd5e2cdb8357ce02e63d681cf11b1a5e5e17477346c38451bde70c3bb63663d6de54ce20e28c2bffdb1167599cf5d6edc63daf5c8ed2bc73d6e70cad7bcc20e368b766d8f0bfea99cd584cbaa2c0ba5bcc28fadf88521d894fe939dd5cca2053c6d606193890419e7abf58fdc15b6716ead4fb6795be79cab9576f9b31ca4584b7b7b35ca9bba6ed8ac780610c2a28cb7277b37c75c462f1378bd100317e10e305318ec41003c9a673ea59f5639a44d84917bcb3e94ca182771b8477b6aef376f5c63b9b4e770ac23b9beae55c8b0a6f7487a1c3f0de00030730443092983af0812d361f1d9f5310cb669fddf314d3ccad17da4f784bdddc57f567d3c1eb099fe6dbe6b7b73cc52f6f5f6d6eb9dc9749cb8f7abb65eb1d00a103cf81283840c481992fd0f80206d31757b613757555cfa7d73511d279bffdd4d9693576f1579adf8ed7eee22f7e53177fb57c95d11d576fb7fa83f3b65d2b1bebd572eddabd85f56ebf386d5e00f2547e80bcd082037951668bd1db8b2bff5b7f6d3198b5f28e51db68655f1b850d2460035e36f0a48b35ba8040172b7461c30504b8487a54dfad57bbe255cf6f3fad3a2ccbdd7cc2197726547ef046f7d0167d6c31c6164c6cc16e61658b4c036268c0089306ba68e00353ef7775bba054f0ced95f1b851769039d1875aa41a8d3ec3a6f2d2815a455c57dc5ab743d75bdaa5e5b0c0aa64974e2fe769ef6e0edd4e97cf0cef6a65b55b7cbf3cb7bb6b3bfb69854e7dd436c2672395f1da97606623065e0caffb67ad7a3ddf664e0f46fc2401e3d1890e2370ce8f0ff9f8f7a30b05a3190a433c92d164fdbb5470b2fb6feba7b45a4c511ffad1642ffbff55db4d9d568755bb8bf6b4efbce3e5a98d8b7e5fc45b16c1679bc90b0d6196701c5fff642e243a64994123b97691221f1292c9bd314118f1ac4669f0b087d0b16e816302d80440b2ca4c0220058d05c81c7153d5c21e50a12ac008115655cdce1a276cd82cd202a414419c5ca1dd5ee7deeee7abb8b05177fe173bb4c5cfcd56ec19bceb959b9a37a5eefcaaee88ab45995bf789f27de466cde465ce5abb7af47fb6db39b5d45b8afabbe5d1567dc1ee5d6500518500155053ca8a28d2a74a8a2a40020ff9bcafb76f3b97b9e72e66db7fccd4248394b6b5df5edba5e97bad35716750951e0870a1250b1012aaea062f51bedab6e33d21ec2e6d94f6fbb59af763b555ae7b3af27cd9b2610c8049a98c03a01122480c6c6dddd42deb896089c600111482102190432c021a0648a124c41c414394c11650ad3fff7bc3a8538d06945f522ed13ef6cf9e8c43b27770ae1ade7567615ad282bf7f5c43b9b7be29dadc5cf76558f72ab577993143f26296a4c0f58c1039478000dff9bcab1cae6d54671cbc564169bb77be21dd7f5beb603e470c00f0e607fd32bcbddad7eba7bafde13ef34008e0614a0015d034abfe9089d709326dbdb39db3bcbf6346982b7cda26bbbb6bbe51aabeb115f61d4d95d9cf56a799b4ffc4231dfda2d518031452146f101147d400101289880e285c2c913673cc1c4d6f34a08ef983d78c754393ef1ce667677bf9b95dd2cb4a95447f8a5739ea7def2aca3f78ac4ddd60967d95e99dd9addfa85c4dd169bb7bbeaf90acbe674b5553d5fe16afba37f889cc8c30b279af81e276868e5a31e27ce76b75a79d5063941fee7a39e2600414d78531352fcb6593ced7975a4d774750d3531d44492ffdfb89c2ef759abbc69765fa4cd0416badddcdd2decb4bc6562c5ca4c5059c204dbeba65ba7bb9562d91575b790e669eab551e0493797feda6240d1f5da282c01c4001530400d06e8807db6890157feb756de2bdc99a0acdd7b0fbabb14e51603f0ff03b28bf21e52228affdf5eb54789169438ff4f9d6e53e2f4efcada6e666d778bc9591640c502560b58f2ff1beb4ad99c66d795a6a8abf3f7e55ccbab0b6ed2a449930d6955b7db7addfcf62da6a390041549d09044988493243a40620548ec810411ff8fe54d4808216105899dff4ff1e011369675a9db7dbbe0ede56e23ddeeedd439e1fdaeee518777369d6db4f6f6344dbeaa5afdc4277cea0c9d824e6cf2177778e7dc9aabda9c9e58453a87cef3f439f1767586b013ec730a3af14e8a078fb06dcdd3a33dd4d3b5c5df2abbe795d0ee79d5ea6edaf236bf597777b35cbde569cf6e15d3245af5bc52ed37bffd75b53877553d45c4936e2e61bc2f0ce76128a4eb0bd2d66d8a74f1a49b8b05fe3fcc9b14804777376feb366f67b339ed3de3370b0599664a0c3d56ea8574e91f0534316205464491ae6f66f1d7955b235023866c3daf8ac0a208b5880b88d000112d2294fc8672b7d56e2377bf6d6edd6dc48b7016bcbd5874ed9db7f05ebdddc5dd5dd466adf3ba387fb1cedb3d6d2fb6bbf86ab4dd164ef2a621869040661ded9635c49821947c16a20b21a010828b1028bdb6fc4d337fddccda2e7eb97ca3558270230829583c7d5df9c814c40b4108850183fa02666bf350101e9441e33f0c982f60da1e1fca1895c161c06014959f2f6038eff948e7d507800003958f7a80800108158028fd20c59f3a18a57fceedbade6c94572e2827cb669f13e7d6f503024c3f80c93f74e0c320ffbfe54d3e3ce10351183058af18f5058ccb314ae3bcbe72c6abf4cdaccdb50f20f430480f4dfc7f18309865336f555b4c7ecffcd2d9ca9b7a287bf8044891002f1f060c46b1d9f5a61985d22bfe02667b59d798bebe7dc5d89400fcdb4e79d043ad79130f67fc7f9737f13080ff57397ee523cc5b54cf473cec90c7ffb655d585a6b9d5b1cab19834b338f7565eb95b086f3a45edfabab8cb35e6efb6b7f5847728b3e9fd6eb77512ed7076263bdcfcffb6b35d930e5afc7a9e984887329b9b7568fd6fff9fe44d3a5c31e500c8a6e3b6904eed5e119972a8e2599873a21cd8adbbd68efb9a4ab16cf631cd547f0de19e31114fea5d592b962e3c487c4a2aa573e261a55e52291e243ee5ed5b7b9f0b872e70108303171cfeffbfbce90606dc30c40d574c3720f9ff8de3269bc57b13282d5f5faceef9e8d5e4e56d13dcd715eb525d1df76c5b67166ff3bb576fef9be5ebc981b617cb6697e317bbdfcdb6583cc57a1775d689db9e0da5378acdd80623a61adaa881033520fdd6b3f87839f1cea6b756b9bb7a5996bf48550e60c407aea2a11d74a832c58428236ffbe0e3091393911b9b2f2a04010d22061a668090035706082942c8b1c6181bc882020f60e2c956c20fae3787ee9e80047ec091061a5c4c0086175600a3829720a013ac80f08106196071050c0f70c00b2ea83c50c25b108ac811c71856d2202d48010ac07cd120036d8d0d7481812c2840c5143920e000aa1502d02508e8670c31ba08c30265aebce1c618626c808b2c2eb084123610400612f8b1461a595c000b08cc90b4f54f158d881f77d821c7175c5c6185049cd80187ad552b80f9d2e5a70a145347233286185f1431c40e336cbd02007eac548162162152fa3bec18430c0e747185151298c2091e1030431800fc4481628e60a773442bfd2077d8110707bee8828b2bac98c2091e7640000e33d4a10a03c684279b20816041c148110f28d1e1061bbc74e192c0c1861752037006996941c6029a40b215dc40517a2273226302f3b26e86c336213b334e66700620644ab00e6c3898d9004b52d200cb00e7822347664c2523448a988870306403214a72341c9b9b1a9baca686866606fbe7008a39dad56d3dd99aa76beb82018a24a010028af7c4278c57dcd7979bf3bf0b1c0a11a0f8000ad33f8ec2834f5178b098279478628c27b6f8fff78586d9b6edcbcf951a0e9e206addfdbeb9f5c47d9fd09c104467a7ae8b8371420c27aa78ddee37e38e7f9ca001236dbd4127bc7c77b7274e94e00412ec72d5fdc748f08ff9f18ff52102ec0e26f2f8ffb2c329ecbaaeb4495992e5588a655882e5577a655772654992e4488a644882e4477a644772643992e3388a633882e3377a633772632992e2288a622882e2277a622772621992e1188a611882e1177a611772610992e0088a600882e0077a60077260f991dff8895ff881dff7795ff7715fe991dee8895ee881dee7795ee7715ed991ddd8895dd881ddd7795dd7715dc991dcc8895cc881dcc7795cc7711c12d7dd8de56a9fbc2c35cc971cd429e7e40276010b0063540e2a4700ff181fffd81eff981e226042096c32917432a10213404cf03031c279623307759ed87cd5cd629c73eae057ddece98c12254a084bb040108c62c244cc3f3602116cc05ce2b544001ef775b366776599b204f8bf6d4b74b004126d09243a9887077727fc016a88131e43d205032b58090cb8796e1bbb8ddb7939770bb066f785c231ca72b9e9d6bc55f1b75d555a8ca6c41232e6d0165085b68028c820038be31ff3c03f06c73ff6c66b0b58690b0083b9f18fb541c6df8c918416ffefe126b8955b39c5d650e33f0d34ce30e31f2b830c9d935eb3d0de56b6cedfd6bab22d563e4fdd62b9d022141fc2dbdb5adf0e45c70986829b6027786f5575c251706b7d55ef66a1e8b4d6f794b2395545c1f8ddec932718f576977b9e27de508cd269adef09efbc5837b32bab75b93b6fcb5df56433cb7d7f70516b7d71ce98bff83c5fefea7277e55c84d6fabaab910878bfae93cd41e7bbb22e568ffe51db1fddf229af14e8681f6da0224cf0dfaeb928e3deba5c0c8508a73052661541c6e334701062f3bba6dba89559aa4d4c9a51fc3a716f5fbc21e52ce79717bbf58c056fbde52beaf5aead8bc542f5970375bd5f0eb499a61064fe3b23cc5f8dd9de66b773d647ebfd722e7aff6c2aef2d76af5ee8c9cd2ae61d6f7de5186fab9e57bb0c16651e50e6fd7f9d5337c2fbe55c5eac9bab704ed45f6dcef2470d6e001105102c204c0002f59bce49e7040404063fe8f13f027e333edaf90724decc7dbabbe9d6a5758ff6d17c20800f447a988214cf55cf574e8c3a371db13b65a49c45e53aa70dd55d2b227cae2eb6b5e9d71673c22d47b959e38e777f71a0cda2b9ddd26e51d93dc481542a956a47a57a7757bdbbeb96a3aa57faee9e55abea1f1b438c303030fe7f10d56305c012f0c41150582beef9685557cd595056f7c5ea8af98bdf1569bbf0fdc5b66ec6db88a33f5b73a02954f6ea1261dd66d344592ed7678c0d05e8eee6f237bbfb5d6d88f26abded6669d5bf05b4c8ae90409707644c6c48afab08e316e76c179c9c0db7bc672b38395bbb5b2d168ba7196f578c9b59abb4ddea2beb60ff98d0632576c1bf08340360b179690400a3d53ad7bebeb9e7367337cd2c0ce544caac259807eb2065d69227634eecba53fc048f39bbbb7595bb5be9fa6e16868505b8c0b6d01af87f2c9019ecf8d5bbbaf9496ff1ee6e9ed193d4ed48aae76458b29d47bc3dcf0e3bc1dd3d7756ef7a2426cd5d707ff709aba2f50ae7447ab369bb45b3417af3de3be6847bd472bd4c8e5c8f35314627ddf08f4d1c42cbd73d256900d84c2293c2a49bdf700aa742e8028316d80c61b75830e400030c30bc9c932a525ee8e3053e5e40437b018c77b70af5049b7a3fe92ad40b4ebcd083deedaa62a54829920b2470210ecd850afceba8d88ccd95de5a50d05b731f17aab8e0c1d000ba1022c3a1a1767565bca5bbd571665f11c8b0771142726808ebbdf5c6e4048c52d97a7eb33e5af57ce5edeeea725bf8ed5bb3fcd459380b163169dfbad94bc0785bb556db5dbd5c6d5f9d13de9dcd56f076b2727b76d7eac51c69bf6dbab6ce7d84d55307753a577dab7cab2a67f5b5cdab74b37076dfd5bb8d36bbb2e9cebb2a5ad9746df5f064a2ed9e30ce59ce1411cfb97ad723d65ebd2adf795d1cf322fcf216894fc1db4ebbe2cc850ba99a75718cbeba75e10d85b7f31cc29bd6e94c7a2bb34e186f7daf7a5eb5729622fee2d7d562f3a9e38dca4f2bef95b9591928ddada11f4ed4f5de406fca897c5a0ea437cd50ab8e55cf2b0ef4839ba4b9633497bb5f5c20f70437e5829afbb5f8093fc13a24601409d86c718c22019f3036c37cd1dc6c4c1e3a27f31fcbc06318f8c7b4f87777ad5586655755d5eafd75f1777715cbae625443907899e14d5e7478931724dee4a5016ff2c2813779b1e34d5e44f0262f2dd0c0641a027d6d08a4d786c8e1b52192786d082a5e1b2203af0d61c66b43c0f1da101f786d883f8e0c49a2df94a4bf290901de94c486372501c2742447d380b0e3352052f05a999cd7ca70f05a19115e2b03be56a6e7b53228bc564685d7ca8841f2434c64ca788d4c1baf91d9e335322a782d069ad76238f25a0c22fc3f9122478c945abca90ce34d251c6f2afb7853c9823799376f324d6f3293bcc974f22653ca9b4c2d6f32d33799ef9b4c19fedf880647307882c69b9e7ce04d4ff8781347f326aec89b38fc26ee7b1377e5bfc80558d3c0c8101b222da037b5d037b55a6f6ac9f0a6d60f6f6a39f1a616176f6addf1a6160ade34c6e64d634078d318f14d63aabc698c97378d297ad318d79bc69079d3181bde348687378d19e24d639aa8d1404b0bde3464f3a621226f1ae2e04d43ddff0b19f2426e72307a2d0732afe570c36b3994792d07245ecb218ad77290c06b3960f1ff432e780e3af85a97f25a0f7aada3af75185eeb4114c921f23447842c59e14d4bf89b96b8f0a62534bc69090f6f5aa280372d89e24d4bac78d3922cdeb4648d372d09c19b9690e04d4b04f97fb38a77cb71c4a0e05f63418f530a20ff6bfcbf0aafb1b06a65d60c0c29dccaa9ea68b71887f5682b1129bd5badd57dbbc9eaf98887dcba9d741bb16c667d3d54a1ad4348cc014f620d08c077581450b86e9513b71814ff2fc3135f471118a5a2d6efe02225ff63d42fd4a0be8bb2506f6597a80bb13d85fc662a3d5d5b9c68d5f3153548ef9eb160e20d4fded07692fcd905ffefc26b5ae8cc47ef0038d44857d8a8a126f82f62868c097a64e8e55c0be6003ea42a5a59d82e86c2e114bef2ff2bbc964fff2d57379555cf577436a30242873f833e6f7d662e7dc459159b58aa6879c2d596c58776cb8188b8a0d0ca59f67689a6b4b0f66e87b60211d8209f99a0ada00453719866152585dbcdaa5e75b32acd7205c8f0252b34ff3554bc5de3285170eaf619923abc1325cab68bf4ceba06e6cb6b1e00a21f9f1ea11e1fcc8391f4daa3c71eafed31e4b53db2fcbf06ff509a3c084cfebf1cc192d74600e5b511e0f0da08bc786d0478bca687f69a1ee36b7a70794d0fd66b7af4f09a1e61fc636580283df6830fff580fff5802fe311efeb11d7478d3d4ecba4acd7f2c877f0c01ff7f83e100a4c3108bbb56f4eeb6bc3d63d96f77e51552952d56b40084d1bcdce10587ff2285d5ff035df18c4cb3ef977361f1b7cd2b2155ff39ca5a72982e2db42b3b54b4f61956e0a2c7ff672e1a972a563dbf5c925c171d5ca86ce8eabe727029616d6cd9824a19da16a1ff6db46a5b2ee8dddd36d1e941f0d86c8f788b42ef99f571b7906b6825c46ea38da5c5898696e835b7da2d9a963aacf45776b3ebca5a3a4841059fb62ef7c5a8ccdddd425f8d56ed6ebd24cc6b594ef0ff1abbe11fb3013bc07f77b7de8558100223948210f9d84c55aa556fd7678bc9ef7a2d680acef3bea3ac45ff206dddd620c30a404d74eeee16589d37dbdf15c5eabaeaffff58972c270069d17b0c86c27d2b78af36e3be59ae50765d59cbe280370db76efb767658a997218ce271b91516cd397ae55c4cd3345397ab52b55beb75a55a5b59d5ea3dd5edf4477795ca345369abd5c3894c73bfd94d97e09ef193265764a0c913fca409141968f28427bbaefc6e31e9faa65697affd45b7de466b51cb552f9b577d6f35dd5c5829528a07894f314dbd91386a9aba5d5148a5744ea9144fbab9709e110f2bf5629a9d9166b95a956a0c4b6b3d68eeb922250f2229474841ea91426edb843c4ca0e1fbdb3281fc7f136efebfc86ba910a4ca7ceb72317fd7a3be62b4b5b2a9f3b7d44deb725d3d8a06fec5ae1c28bf998a90e66994273c78683c11e0d981a78727846db3562e546b7da1ec010588ede4aba373cd2dd4de6a6b7d4fd4b9b7aa3a7b74cb51a4cc82a2516cc261066152f9ed6cd72c275edbcd522947502a5112fd7962fe9e278beaa0a76d94573af9b415bd469ea191af4672ffdb2b1fb9457ae337f76cdb751515ad2b97bb76179b9ef0d6eb08c86f5de784f5da552add72742cf3dfd771f5ee17951f3c4af9774cf2b8cde3ffbf38c7f72da2175b6c4244fa17bbfc131ded364441a8c49f2dfe768c551e8a1a180638800eabbc87bb2deceeb767d5dd479cc53ddb2acdadae8199f6a1f1ffaf8b3fd9b47c3c689f94f7e94c3c1f3c2add1edd139dab23faed5d592b9613ef6cf8c5babbc5dd5636cf13ef74ae0e8d2b80c6f1fc6fe78b7dd774655b481beb5766f12234e3edd5e6276c3cc980f604ccffc95fac59fe6e29d0362cb4cdcbb96e168ba7dbc5afcc7af3bba62ebdddd5bbf3c78e1ada0e16ffbf5fdbe9f27f6ef9cd544e2d7df5ba2eb5c55d1da47fb29b85f4eeaed4aae75556bdedeea83c503aa084febfdde035d4490cc7282764b870eba48acd49d2d671dba33959fd3b11fa3cc509f7ff9bce539ae4f12fa435d1c0ffa67f4c33dd46a6a9dfae6a75bdbb4b55d4aefa676dd289341d29feb7beeab4746efeffdff83f593999a0315901933134265e3021a331398189065a097ffc7f10364fbd6356d9baebc4e6b9e59559e7897bcf2d2023de52216596cefb8a4a1586d44a709540e54b28fdd6ba484063cbe2e3a5edfba591200409575ee7849700a22dd1025d72fe73d7dd507a96b45cb8bfabcbf3daa38de08436c2ea7fd339d96db4f6bd5fa717e7cd62d40bd559f5bc3a8d70d23dda0837ff4522cc1142164d042d5e8426587dcda2894083268294edc5ba791389f021b0f12194d14248613b7bc64768180178069c056b20d851f31a08718040c3ab41a8261d9bbd4947ca2c21a14def2698ca0781681ff4f18110da072ded03d0092e6a57a1cd83254af6505287921b94fc28c11df0a175504607337480ea60840e70f07210493ed060830c9460704222c2051d1c51a2b13e30b9fccd4a8c80a2074590f8d1fb011131f486905ea75215b5ebaae7151682945920e4742aceaa8adab5a888b31be07cdc4d6762e3bd9cd7e8bcdd130daaf4ee2226335d6f92791cd6a9dcbcd954f5226d9df7200c0cdea002dbacdc963078238bffefdbc888d9d756560dc1083044c87b61c70d3dcf8a6161dd3a45f3a95a210c982f2a04c04b172e5b8886b4a420140494050b0a00f8b97282952a54329f6c4a0f94d7c298e3353188666810f25ed03143cf73176056d0f1ffafd691275fd4beb9abd8dcddadcf71f39fc9b1bd47ec7c208b23f3c01b2a38def877396a8623a896a9f7cb8b9c48e08893254798b071848912474ac0e3dfa7bbdb11122870840425fedb1ff76db7b0accb0a8be6970369965fc1b25b5887aab0d1e26ebb85b566d66773a2beb795970355e19ca8955d22cd818e8c70f39fadf19f5da14605f4665917d07f56c6f734feb32bd0f86e88957ad9ff5999ffec0c33ac94b1ff333234bb7661c7508358b6e73f13230ba375a9ff19187afdcf3ab0590ea47ffe330e6c37edd1bb5dd5ada978a4adbf00bd7872036267c57bdf2bbb5d708172760acbba80482fff7ffac7e238e24114eb9bdb0c65770cb4b359ec3ec25965773f555c0630f03aa7ee71c9f92d7f44c9069ee3d27161a548ff991659fc6717c82cf0ef7d7aa72be7d25d2b6fcf1bcbdbd3e615d1767916fdb35ef155d89caeed2add44db682dda58d8bca6ab7601807bb53dffd904b0c8acdc5d28b0f09f5d6185f7e90a806215190538efb551c8cafc6754fc6713786d144ed0ecbaf2c924f0bab9f59f4540afae8b15facf2030c5fff7144fbab9789d9169729d91697246291d94f79966d7ecdaa56b76ed52d4baacb42e5587113bd2e5ae5be575b3d04bf329af9b5bfae7a5f914d2eb5ca42b0ce7bdb6185074e955ff00b178bb358bb7dee74aa5bc4f8332df01b0dd7da5f3e279f9bc805e422fa297d1cb7f2604e9c5343b23d3cc82f8cfca0031650828e887c807680b00545e7ab2604732d0d2ddadeb3aa776ff673ffcff4de6c3ffe3d85c8041992f61cabf4003111890b0f1420cf1066001090a0413febfc9ff1be002222670448b234784808a20421322d589ac1ecb7fcf11ada66d570cc5c324e076b31c8e12026e373b47943a860842e8b9fc9b70c4881d47dca793ae7473e96baba7afad5cd4ae6c8bb516a183892345c0fc1311c1fff7ad797b8448f87fc2a78e0c09e2c8100e54fd881016d1bb87724e7024c7fb22ca14b5ab0d05e8db7d1db901d3da6f17d3df8df516181738fcff6e0571200ccb6b8bc12e5771d6d745e1e0e0e0e4b4790adedefd7add15f71ca9d18300476a4e474a7afc7f76c3927087922969001fe4b7676103092f80239914af3a929d8e388231f11b1c7941da232fc57ae4a5888fdb1523e9b6f4c7d16e694a175a302854945414ac83a4d7d3ab6e2ca6e906bdeac68231c62d18016024bdaa7691deaa359858820688a2283c4eac94b210640e2c4814ffd80ca48fff4c861a76cb81368b0fd51088fecf0ef09fd1f09f19e0b54078c4d0e347445b4c66a7b0d93546b3790fb942d9ddd9ad128661188621088220088220087edff77ddff77d9fe7799ee7799ee7755dd7755dd7751de7711ee7711ee7711ee7711ee7715e5996655996655992244992244992e4388ee3388ee3388aa2288aa2288a621886611886611882200882200882e0f77ddff77ddff7799ee7799ee7795ed7755dd7751dc7711cc7711cc775655996655996654992244992244992e3388ee3388ee3288aa2288aa2288a611886611886610882200882200882dff77ddff77ddfe7799ee7799ee7795dd7755dd7751dd795e42886e0e77559583fff8ffa67bd4682f3ffddfd245db77077abf09ac281f64a45b32edee588b37bca6e81bb56fe33195edeb63a4ff9cf62d022c481c8fc7f96f49fc1a0e595b170a0ffec85ffcc85ff6c0002c85da755aae4292cd7a7bb1ca8b73dae2b4d79dbb31aad54f68a66577f5d287efbba5f99c56ceead4ba7efada2b9fdd9aeeb45f1ea755714e7d596379ad9adef0ea568ed387bfd6748ffd99151982a2afc0ca9a854a112e4035445a525488b962aaa2a58b65009caa2f2d293c5347bda2d86136dd6a5791632c5daef4f1167f5cf6ed7a2b68a4f08dc7897a33d78db5a08cafc6745eabfcee9dfc59ac8438aefeef64255bde7d6dbe67665ad6eda578d59ae76e3ceeaf908f32bfd3f93f29f9990a2a2379bdf6ce53f8bc2b35dbdf9db7ab9a9f785014311f43e3c6672d7e90645170858e06c7f393ba46ab5b2aad5cb2e0c3db7df5103e9755b6e8ab0238aff3b94e0fcf7d73e30c88a925ea7eaee6eb17be57d2ed2eb5c1f38c0bf69aa5a3dc8e73f0bc17fd675aba49c657beab86204b78e247430f173ace07fe83ffbba7fcde1450e25be488e3c72ebc9eb7dbb4b0b2eda1dafde1ed3fccfbcac2b290981a60ccd0d722089a3070ffc84f13e385eff62e85d793c8355703c1cff8fc4fd3f91d66b6f24757753bd01c60d40dca0c10df6853c23d34cad7abe52d4db23ae59ce5395bb52b15cadf7b9d8f8e27dae14e95ae38c2194b3537495dcee37a72df7d13fa6d9811a66acadac9a01e593e2f9cf9a7ca6737a56ea45b36d8f4fdf45f91d4a834443028f8651efd19bb5df9f77ed728602b43384f2196f86149bc5d90ca4ffdfba19e6bff63e57198294c1c4ffd63346619563a4fdea7b8ac7a5ede9b81c6d203204793210a09121a5a8c8d5310a8853712a8f0ba7e2541d97beb5b06c4fdad72c7b5be943447af5e9b8705c4c73d5f32a9522451eefdbf2f696fb6014e9e2014597182978b16ccf66b9961a320c41fe7fabf8ecad4b6524a6dd6c7edbcd5add9dd716f33f761bb8713b459c0de13fc3ff1908af858146f641185cfc3f57db9f17db6af51015b5abfb0e9966ba354fbdcf9552b9bb8594593c4899b57b4691328bcd441d88a3f7cc9aa60a7b820352fcaf504e95cb559a5d5de839a5bb5b7f5756c6c1ff631bfc6718201939a0a4bb9b86f24514adcaddefaa6271577d926e23ed8b1df676adb45b0c7fd5f627cb2b0bf51d000ee48513ab9e57ab9e571b28f3ffba7cd531e7afb9bbbb8db6dbdd8dcd5d0cf1dbb6317937dbd96dd4c564b7d16655e67f66ca8cbccedbedaf2cb4b7aaeaafdcea3db3291769fc6b5c0cbd06e0b8924af1b0f96d790babcb57299569eed57d55adae2aeaacfc660dd47a9f0b03576c967559e140f9cd543abbe677531113d4c5fb5c9955b19ca3aaceea605416485ebb809076019dffc75ac0020b20fdbf66811b0d0b22babbb15868582811e4b3902310ed8ab722862d44a5e7e55ce7ad85cd796b79393bb45b5887da9f16cbbde253a5c572affc632bc05400c8bfca34554359f660c00570a461421221b8e38b26dae0f982410d0c3713c8d12630c60ef88a16b2f60f2a9410e00355906084005882084107229e0f454840023b2548f2431231d27082ca0b6610d510258e57155b54c1fe7f087da7748af4eaa23d18a57f78d2cd45c7fb5c18e57dae533a86a51ac3d21478a5a0049b983473970395408500fe7f7b77af92df4c25bf998a6eb7bb775116d226b0feff637fb4452b9b770baf8ce5fd483adf8665f3a528d8db3c8d86d9bc118c2603ac0876e395c69fe9a1f4814d767343539ac1b0d720db3e7b2c859209d8db40a1f9ec310c9bc9ae60980d9661d84c4d0b1996613659065a30ac06b3f90c23b2cd643535a71c8c95b2aca40356c2b02c073b4186e13c0d56ca663686b190615876b325eb20c3b29a52868d20c3b09a0c4b01d300c366b21b0dd0ccd814c132c0300c6e66b023b09a0cc3b2191596957270c06c0896bac16896cc44c16cb2acd4cde46419a66344c40450ea8404917de9330660a599538926c3669ec607ac0eecb337994c8f3d56c2328c0fec266b8261194d96cd60d8873dc16eb021599665353e18932c2b651837b309d9e0a6048cc8110e3220309a6c03ac84cd609f096538072b7db6d63c3e311c663e040d602fa58b6c06abc14a3618116ca64c96dd98331839836559096743704e180d86d970a50e040ecb726a6e320cc3301b0c33b12c7b63a606c3c94a33469808990bc36676301c21197663836552b20fb20f320f667ee63123584d9661444aa69952b6419665580d5652319c2598109a0ca3c18a8c188661580719006a84e064187a33c426c352c06e306c26c34ad815cc83accc946442329b8c069bc1322c1392d994b0199a190c1bb119ec84e16043300c83827d90e5ccd86037252cc33013c36a32c89060a50ca329616526049bc93ec06666b2ac9495b032cb300eb21c0c07bb29651886999807598ecd0c56ba29611836622c49931b9e192734d80c86839592603838a6902f1d7c808d50c2b2ac26b3d99809034ec8150ccbb00cc3b09db7f9d6771904f3a34bfb980b1d7990c105893a1cb025d3c10dd131c76b09c18d4f018932760a798c1742028b228442e0414174b0e00796103ef8e3043a94702512499e94b90814231d44968c21e460221d180bc473102344dc82dfce403ed8399bc850732cc151986be2e408541f209c7808085883237fc40561fea4d9e1714986ff992aff5809feb57441610a323533e490d081241c9b9b9b9a9c9c1a1a21331ee0d8ccd0cc603084880c900837a79a9c1bb234c408561a62138021ef0c9119130d1b320891545324b3c129a18878403a202987cb105d42152193811dd06c2961353c19488a82858a264356ca2961d14941d21c336034a606821432598983999d34929cd0910482d00c18189942809913c8182069039c2e43900891640583d64dcf414112cf8b73c2c983c9066786088d98d2016e207353d266763e32782481d3448d196e0001a2482684468a66539650d85fa488e1029a538e959c126ac0949ad89431540089136228238727331049b1d4b0459210973a840c443c231805923610c9e4d8943539374566c69f13663cc8b16243e687c8d0cd950eaa58c9c1b9326448f354204983124acca9312f20529323a48a082b2c91947373e503d486249a19130d5693424d0e0d949a263d260871e130b9b9529363b301112a384b4a40381a20515202071934b939016929814ccecd66f311f9c61f219b21251b0e68cc1911674889099662836393537a428342899482d1743013024d061cce4d3a53568192e42627039c918c0f9010f0e6545a525a52f344529322252a344e683ec059525262a49bf12086a4ed0936a3ceec9466680420c20a09e0ed031c408616523ce009256a80c105a42e46dde9b9021815bc70d93224840500574cf23b9540c208b8d4051783f4a1071e26a4481081830d6c8e08030c269648a18a09a607180c1152b305165634a00926945800124714b1e5c4e4c93684108308620254853ef8c842c579c861555350726c9ad8418711a70d369c68c22c450d9008c9b9b151d20105a800b3751010007eac543102010730c09139420b3cc0014fc0d085cb282641522a838c3fb8a4a2883836355314c00a0824f143026c1080028c30228720a014142643b040b215648094fcc07c647994f0c8e8a0990373235b235303278d2168646564636458cc3c20135362015b72e3018d12221b641a64186048b40b688e641a662a15c984d0e464383737998d0d4d56c26630ace6891899e960e60249251c924a586a9a60cce604644c4b24d1d00cb129c10d322524ba9206439480a2a686a412169c0c72942491210927002515663e10f2d60cb9b17243d6e4cc40499243d381a49b2a929080218333ce145182217224d10c9244338403359286bc225c2009274991cc060acd139a1e68c040c80640c450ba21c94808464298d9d19edc24d1068981c6c90d69c333636486e74689a4992cdd939a9c9a28926684d470504209e966b0d290122ac70a8d139b00d470509353c3c210244390e024c1c9c02600332c88a18683192962a0f1228904164a2cac22c1839239c4488d56c26676667c4a424432a8c96cbad874600344834111ac46c80c4d69c8cccc4c36633373338393a3a43463b3c5e68811a11ccda6c6069bb12981a52725ec6683990ec8e080400345529128c86835a50e6ea8c4509223061154f80769011e6db05106195f78114a74e4a873e98d9bfbb4d6ba5c80f64650fdd23cea4ed5ea372651a668d8712039e6ae14f5282291ea940333ca7d5c0e476f1fb1bdb0d31dc86591e45074e456a91677a998668bbbfa4aa600cedb5bf5be2f454110ed46d58814243b4e1d3db4f3469db95d4409869d2aaa59dc2abaf74e89c8dca83d527b2958967be73c840e51b224514e153bcfdb9a144214bbad725e0aa2dc37a22268250b22cda5f6d24c827a8f9d279259b232219a8e5f587adfd6a4e87d231019fdca9114c90fd52058ee1f50550d3f4ed4e3d87d28e8893da829990ffa2bb991cc2a47822097bd4e4ad6033a721ca7b74a66f5fb4a515d8521fac2639a67968054d4a9ca85e457962aa8eecd4316c9adc1d053c9f4e3c230efa0a6fa1bc58daaa517eeb02b75e842cda5a93a761f97aa602ae6b0d16e93590d450d869bfb4004ec746b502d552f2d3f0f043d1cc04da6e4a8aaa80886db1b6f20c730dd24377e5b0d3914ec523f9801321bb8141cd30e24bb318b28d99135a86017925d4a826039ee0e140fb0bbae0bc931ec40310d47b25bbddba5e123bb5cee9dee1155c32fcdab279901c0912c49d053b747a6629a925901b69a51f053c9104c43521cbf95696604e052b44341b5ec38920bcbafb392cd008aa858966a088eaad6bad33284212792df0e4735ed38f04b63e8ca30674fdc25a93bb5dca34f4606cda017aa2557aaba534770674969178e5b0d4b35eb120dbb7410b4fc44520c771ae68ca2626e01daa1614e534fe45230f4becc0292ebf248761c5a86651e41dd0513247bba2c554fe5c650fdb69787b04034f7a1610635876a321db97095da2d677d4c73b79c4d53c056d085e8a7869b2cbb91ebf41e572afe9a662add5c5e771b8949f3ca34a5602a1041516f8ed35987e4deea470462807060de9faa9269b7d1712c7397821daaa48a861ec76955cdbae4540c05dda87639d4a4d6a9fa6d52ad829d4014c9310d39ae444131d51eba0533813a8adc97bfcc795e48e6f2fb82fd41725c597ea046510e1453b03bb11288df1e7538aae298bf91fcf6ca3453284682f21349d20bc70e1443348fe1ca3483303fc04e245115e5ca328b25b73377dd2aa6d94706c98c96a3a873f7a9de0e3b3ed490d35de7895c198e9f9af7d81e28a26929e67497aaf8852bd34c0d617a683424d1d203cb510cd35414b911885a15d351e4d29d3faf143d15278292243b71a3a3985550832368050b011872eaa8ee5c6635e4d28e5ba552dee75285a1b751dea77f7878d2cd054303cb630c430ee54a72cca2f6c64f7378e8d4db2a9ac992e4c84ecde3ca34370682b4144b50e5526ee74fed3a75659a2917760758966348a2e31e3ff1134b6d479992695a8a63dee507d05144c99d3ff523bd51cc641da857762a48a66329a22a397e74749cd7699553bfacea1124bd39400f4d45f15353b5e4ba727772ec31443bb50b3dee4bc38d72ab54910bdd54884ae0e1b038b4ce5be534e7ed1415cb12f500da8d5db7cb14fc72f8a99c0887f7811a2db90f0c454e04d337c0eca5fb03751e4514dc29ba32cd1416cc8d8f044111fc4a552df51647340bd606a9352a8e6319929f0876a3b832cd540a63231dc1b223bd52835d078e5dd8626b905d97a2de16334a6e95443d35424d7e5df6763986991cc9343e0f15c3b0f44a910c49526734d2922bb9fd75e5d8a164a87a63b0333639969953b3163b7244d5d40cdd7ddde640f52b399dd53497e1a56257769c8a6611cd9c5792a14591e4ba34832a87865cc9a9d818dff7796309963bcde326b51663f452522d4130dca1ba3397869135d88129a7aadbe3c252d46088398b6197a2a958722557a61d185532d42aea8d99d469e7911be3001a96645635a7399203d5bdbfd021f86d704cc351ed3c311dc1605ea05caab5988ea9d7851cb8f306d20ee5403197e02eb5e89525c7bad061b93fb1fb4aefcbddfe5015c605098a2088aa59d5e557e62eaf4c73bf2f54b5eaae96696e01723b44d3512d514f8fa828a656980648142ccb4c7ae416cb12edd40ca45bab796f8d76a5ee464d6200ed465454bd74733a553557c28069a176fb53c1fc65aedca3a8ee2c462ff4ba3224c7f24bc11c7a2bd34ce9705a505c0a6c8bb5aa36db72bdaa016017d06929e6cefb48102c3f10052d80829c983d30f5b4dedd087a2bd34ca552fc6d7f50443cee7e7f58dcb592eed69069f2603360587c9bfc38b1d360e871aab8b7ce290a7645f96951ab29a8d52fcda8b8add05a4dbf0ceeee53530f25b5601518d530a35ce7a1e306cb700457a69952f1b0522f61b02a3a0e0dd1b0fbbe2e875e4ae69569bedcd73453a6c9e2ae95974b64f2b4300a80e588a2a5086e32e5c2911bada0b6a07e785a39cb9b592ba6d9eef7cdacea6254741c07e62f2ccbd4dbaab8d509a0de9776a8a8d150f5f61e5509a01feaa9e2a8963993e338aa1120bf91444b4f2d49317761ba21f095e0a8bf0ecda9463d90dc537879f4c651e5f498a2597f5b0a11cde5c8896198f397414e3f004c53ce233b500dbb8ed3e4e7004fd4dc0ec7efeb3aef53d306747becb6979279876458766814aa87ee942cb72653556f140a2efc54b11cd33224c92ce62742728be588eaf0cb5f1e45274255fdca2edc68a839b50b731339253f6f8363f985e547924c78fb2bc34ca29c2649315ca224734976ead87d192c4190019d178ededebbdc59cde8572a817e5cd995a55772dadb5a25175096ea58867a6f0f0441524ca24c495473bb43d591ec40245012f5c05d8aa0a76eb2f3c62340ed71e907ea4e0553345515e071a406454fedd0112449d40815dc1c2aa6e00ec5d213c9b088f44b37c9815a454734fc3411281aa69ca88adfdeba234b7008719719edd28e54b93477fa1302dc20b8f7f6c2b1e3c45c7a41a8fb23b98f1c39adc1124ccba0aa188ea2eec01055bf70044214b5f7852a0992e948923fa41e888ee987e651143327fa30a22099517093b9fc48efeb7ae0b4f634da897b4c3fb4cc5c02b83c72e1988ea32e3f71045395c678187349a63ae54872971d99b91d341776204a6e7267aecb21a703ba4b35cd689aa69be45094cc8153391d76e94ebb5245432f4ca51802c62e7b397f7a9729c8a921b84ae94c41f59c5a2f22ccb6582b8f697615170c8790e37628921e995570043b72659aa96e9a40d80de856c5aecb5c89769ee869bd32cd1769b7a69932cdd414540f8f699a66374d77bf2b0f8bd9106a4d921da8e68ed329a8a235809eea7d5a54396fcc6ab7c10384397fa8973f708f652a861f0d9b545175ec5450fcc630d4292f3c00c00c806a2f7bde47925d9772a1160b907a6906d3b2fc4830f444fdad4c93bf2a13300284e0a8456fef9d72a1063d74659a3cd80c9eaac18da6e3f8a9a0087ea30c1b0d4794ec36aaa25fde69b7324dd3ace283c59082797768b93559a2a85655321cd989602ed1ac414e1c552c692cc31144c570f4c24f04b586a11b49352dbd52cd1c987e2a6f552f945c5aa6a2288629e771a9565de0c2346fb00b472e55d18c0ec0db5f888a99133d115553710b80033559963a25c5910bc7dd421e5135e5c4105541b1fcf26b2cb9ed6950043f521d55120955c11205435145457573e2d147aaa23a7eeae7711efa85469dca7169f6ba14dde3dea076ed302dbbae1443141df3565f8ffcb616cb52dd592543ddbd31fd74b7c32c961f878aae1a82694e439144c76fa76376276e9daa29ba49f2035b6a97aa5ede64877629d9712e14f3a741758f3a1439b0dd59dc79875bcddda8825dca42bbf1db5d3a96bad4dc9859711cb55a72642e51bd7529864b3b9014cb2eedc22e4c459405aeeb542d7efad3a9da657205354776ea06c72f1539305c895d06d53173e9977623f915715d1e3f6e7b61aa869ed765d5533339a22a9a663d8e9cdeba24c3718b6249925c596a2ed4225966ae44f53886394547d10b4950454b314dc5af44d58c8aa89a51358f9a43f318a65ca9a6a2faa9a947e67324c59d725e98a6a8bad55135e66fd45f1ec772d41e07922b907a2c394f6f11d4e8eed430e1e6bafd89990cd5904347307924bf2f7b5fea959d9abb2f62198e28a8553115c59dcb5105757b65ee420fec34f9796a004a5254b7e7811c198ea897bd6cafe3c0720c43afebbc32ecc2a5ea97d58f54cb5454d34fe432661104393124434e7761ba65e7b2144772eb4f7f59244ac12d6aad8225f991e1570e95e4f8653197e5e642950bb584a1576e5093e9e63627a6307e6157a268d7ed516b5028f536c7a1a2eeca6ea7dc17c4716a497a5acd9f2786db03814094445355ecc4740c5351fcb2885af5ba30cc5c487a2aaa6219d15497fb0bb398aa1c3aa2906a75dc9c06f52e3db2e43c00841adda8c8ed100535d8a93f5dce68a9470e54c93145afa8dd88e6114cb3a837eae513c632ef5ce6bdbf114db76845ecc412453d322c37a98661958c96dfe7951f89961e2a7a1d1570a35d464794e44a5daa3e2529a6e947aa1cd965fde529e8a837886a508f1ce9a53d6a2a867aab63387a6929825274f77522f7899e97c35035a10b51af2b515254bf11143b6e659aed6655e9365299a669aa543d29944cb972aba8176e51cd5faaaa5cf5ae6cabf74441d532fc40af2c735a8edfc8e379680ed372935fa73f95cc29285ae454f1cb69f86d4e4d556e659a2ad34c79276a30f4bcb24c3b1145d3bd324d124a16e7aa2257a5ba21c30d6ead7a6249861c08967b659a2a70d41cb8c172ebb0db1a04396ff589e41876293aa65e8876245a862bd33ce26ed1167ee0377aa338e6b1fbc6cded9569ba6f0745dd6d954373996e8fdc65ba32bf101c49aee43a11d5259872dfca3455bacd2aae4d13c84b511255bf4e6b4fec546ed55d2d95cb559569a67a5047598b694ae9b84c7aa0aa4b9d77e8e50dae4cd3cdab54659a29d37c59aa696e1777c1af8b55020f144e771a55bb8ef3cabd433245ba4ae051b5ab69ba6f8b7be28deae87921f7e59c8e69eaad4cf3754dd334a36c642972e2dea8ea892289ee71c555e64edba0d68a699a666ff172075543cf2b43d51bc75205d96cb455a6d9ae226aa364b93b2d8e994b3bb02457a6e9eed649b9bd3425d3fc8deae87d61b932cdaef7eeaa771799664a8b69aa585cb7d95d659ede44d55dae4ac5810e93933702934e4542091e8ba7aaedaa549d1831f45ae9ee2309aad392974a35c208580411421001abaf0b844eb5572a251fa8c4d06be2819b5f264a36e880030e9a6cc041a58ba8641169d7991a640a19020292480000007311002038241a8b062432b9704ad6031480015cb264ae4e1b8ba47190839431c618430c010000428000c08ccd940101f1fbb2be0ff4f39af880d3921e80bd4efc45135fdf4fc4a586b8b7c4255071994d20d5049d5184f95f8d367f76bd4f1fb40b4aef96697cf556c8177c8a57a99e8117799258660be20e872aafd89028f26d24276581eeebd0937c9c7ed3e3deea716f7adc5b3dee4d8f736b8f8b1decb52d00c77895ba43bf0c31f0dd4afea459e7ebb1235019e49c84125cbfee2ba9988a3888c1aeda0503c94d67777f36cb03199a7e6a086dc5022d0ed06635d55ac0500f25d73380f26e1c8aa5922e6f7095b87db9a6076df87a0035f73dfef8463fbea160f5a1fba9c361050eb9cff178b67dfb44cb6e978fbd249844c2b57caef105a2aed71dd38277fd8cb5895f445879f61afea0c43b7b1340130ead9859dc97dae7e10ab58ad13a508481d2bf61eb15b29de10cc76ab90171f2a7a43ad0a35e37886cd371637a7ae72df54f34707796af1fa3085595b0eab3f9283d01b70a71b512688aab7420dc63ddb3cb81d1788b618aa2fe870b5f0c6019e2fe79a969b110153de0ce2832ff08ec4700784b661ae0bbd96eadc224d8348ad2925e5167f99cb649643633402886aab38ccb714e63890e3c5b429fb871f9f3b10eabf87a06ce159a7a2e8390930ce9ac15c4ecb00cb36f56fc326eb7995a117760753390cf328d3a1ed89041459c151e2b15d8d893241c3b62ff77f77fb1ffbbf77f582fdd8a0fbed614361052b2dfe64635dddce83b15bbbd9d0eaa5d917fc64b025da591407812e27baffc57da97caff5aaaa336d151684de0064aff0d41ff823b7a314bea70b12c19cd98fa9ea82f5a89eb63e2621f5598f59b5e5cfbb9fa737fb9aef83972427d808316570ee5a36bee32ade0332104e91e498fa45c5fde8aee2bb2581e908613b3e54a3c428be400f3b6b085eafd3a450df91b7986141e2d8b8956f56941cddbcba3d5cadcb2e21066fe59596f49e58ff9c3b3875ca863f2e3845a8d71ccd6857f1842dbc9e3f69acf3c7439c31519f674750225001bb6e92e94e85902b4b78f90c8130d15020b9b987b873ba69a44d1d7b5753d74e1ee0eaaabe473637c091a132624df8d00cc3ae87fa83b16057d1164d505d9f03ff5ba5f51f00eea3acc7d5758dd1226899923374a0497f730a976bcb95e0cde9be8c5d69fd0d0f1694883cc54ae486221884e5cd322c5a13aa72ed5fe7bd1415866ff8008e82e89fe8ad15f51f4578cfe8aa2bf62f45714fd199611fa3b467f44d09f39fa3382feced11f11f487393a43828ecfd17111744c8e8e3d82ced2d13111746c8e8e8fa06372747c041d97a3e322e8981c1d1b41c79ea33324d1f149051d171b41c725d1f53a6018c199cb0705cf3a9a3d6cd70b0add62996ee2124aa9b4a4464ceccb790dc9b02b1fc5da00755af2ab2b4c8b67bf80fd3a55d0c25a2eb39dad716823b864e3b38bc0b175c672a951732dca0e268cbca9a58e1659773488cc761a8dde03f673ee72c84729d07e344b07eb1b9e0c3ce0085b8c7bb5681714bbd220ca1fb3b334f06f5012962b31dcca60298d4bf65bd300d00e000d7210f4cf788d307c870142b84cba8be222fa7fb528d778e36a395678660599acf0c60a62ad71e8d5a25ce18d15c45a894333472699f3462662c571e8d8a28ce18d38c42af68f182413c327714863ec1fb121994c3e89431a63ff2313c9c4f0491cd218fb470c9289e19338a431f68f182413c327714863ec1fb121994c3e89411ab1712b73049ac927714863fc1fc496238667e29089d857c6863432b915834063f8240e698cfd8f4c24131b9f64228dd8382b33310eeeda34ae16aacc97db8bbd2ee1d7327833f64b6c0d80d2cf26d5646c18b57dd0278488d43bb3f083d427ce3b3ca439e047a20f28da6a4523750622db3d102be8923c0c45b7c58dd6754560c0d22c395c7efe68191d53b074ed1a6924da32b905ba62f63e746e39334683ede9f06b5255e0bd13bd33ddd9c488ec7ff3f5645b3c3af3e91fe23d44a7b44371ce660b6989b8e720488b3d788f3e6a9235db80610c1c5a8d60cd153a1483ed33a4a739fc00d141ab02477e01150ec49c3e66b5bf5515a60b98b8ceae49568a5e2c4c151cd03d7fcfea746c2b9dcf1f2e33693e5be5944e15909b83f36aaebd0415c53cf141f4b059dafcd4e69f9d01015a6f74a71d901b30174e43aa3196200b890fff8b7bc2a4017e320d37d9636729ff911f02d50844d70c8cad6471d0118d0f901c13fea9c5dee2ea90ee8088c4011453b5a4bb4b63ab08028d3d0485d023ab3b4cc25cf4811d84428ab380d4ea3783eaa312030e821efc1d1f8e44c477080e7c22196062006ce5a5cd8585091fd99185ae85e131bb3c205255a0e397f21a7e62dfd087b550b272c8d6321883b1f5af24c0cb7dd4faa0e239842131037ac29322caa146252d7897014e420f5c14ff20563771c3c48e3c3d298303110f39a402d7d063ecbcb95a3bf52e4ba9ff3440039071320b0fe13ac22ce26dfeafcb4fec536751578721ed6edca08a0d0ad05722c3a6e180f385cb754fb93802a42936da0ad95116b7bce53e0087ac586c713b0adc0b24fd61d927c8ad71f40c51db0837c0a6239cbdc5db74887e30e90c5e87017a83a84f6cfb05bd05c6332dc502e81dc67629a3f4b5fa5fdb0c187e3f5e1c91976ad2cf202dce0c0e3d0e44eed026fe011d3b76cbe7d702442de20f3ce953563ff5cab899d6793a7254a6eabf649507dbbb5761026f28c7c2ec9ce389c978e36c910ffb5d17d719e60783130f8b1ff6eeebfd75b62deedf4e3d6447e0510e5d1ce09e5df6cd3e8aec17992bdec0d66c1957205706dd676b2ff2b041dbd327b3cccd52ccd1fee417c1897ad06fa42668764dbea2d951e04ef5037887a09cbf8485a602353e7ffa9978926932e0c787b577b392a3e7c4d70f79dd996bfe10c06c5a46a23d7c93c977b6d9eee9d5dc1a8fdceb5b863555b3e91b1cf8685fc5654293e9f54de50b383a630976ff147c308e4af72cd49ad6c345a648b18517a46aabf223bcffd910a40d597b00f742e773cb20f8d95fd563ee042e03fe1aa7e84c687aef4188634a990ced3eca906a297673c4c30104d80b61f2cbd22e770ccf04c083f4c22051e3e6d16dafa90c0982a26c5b4a99b6d8fcf22961b553782524ff52c45e8504ac461bd5e9912213fa329407f9b3dcef88669491510975920c4fa564c8f544433e535f344580f0065d0455a74b293b947ebf98b047c827ae08884e23510109e10e76583d2e2357c81ab885ed80fb4f0cf1967b4c982b21c60158de20d949a4d295efb6b3557e70d33a18af8454d1bb64fdfc339971c7dcfc3f1f15dc95de3b665862deb964fab72f0e3a745fb5577fa2358db16c5af4712178a0702f662ead693a2f8ab0e695a41cff296549937ea9ebaf368fdc90605133ea3085c46b438323c1d87453e3d80ef36f5b1d6ef0c3870568ffb64b53f3c4faec4fd95e0ff3aecfeff3ebfd8664aea247d12e8edf3987a135a091f393db307bf195be3cdfb168df7888b1349a89c76a5e5533e85b3223b4024a7dce5d5226e6878d7b70bf087e7c8b6fbcabeaaef377c6a82fcb7c9f00952ee160ce840002cbe477c6da1a6a34b2cc8418246328d3f2dcca59d68e6ea7a3fc2c70d2408470273a24a673a0825524e5097226529d455a8ce49340309533c11c36db48bf7dd031d31ef106efb2288c6e4da138af510e83bb9ed5b34fc96bac26bf018c4ae803fa22ab7d936fb8cbcd1a47ca5895bd33cc5d6e3c875f46f336cfe581692eb3e8f4825339b543cb34eccb705e256f34f74ad631dc2cbab494d3adc493cdc91e33ea8723c00abf177c7b2ccd4c47b5848d512277369954a2d380549a558fd5006e542b74d6bdf8ff5b03501d32000c232ac66d6e3c47674a685f559f6d7703b7969ebcc5874a362b9927c5d99ef4717aeef3daa6f142a6188947341d85d80219c127335df197a21969a87b485dda6386add49afd70ef5764a29d26f047df27e117fcd825437f4aa1e545da747b1b2da787ef736860561152a7b755d0c6e317f333694817d654fbb0a2a04943732a5c05ac655ac1da0c74758b5c1f8bdf06b2f8e5cb708c56fe3cc4ae54147b747443d8296005c57abb6c96dfe2ccf85637b4b771883e865c71a342ae04fe72064f0482965b609f22ebea996c90a60b6fa5a7b07cf44a4ecc2aa0eb117c78315e5e6b76f539148ef1005457aa74c492ce9b1ed1fc27db8cf3b3a66d0196f9fe03ba67a84f96384700e608e6a5c6534697b96e4ff1551a702c8292027c7184058ced4b1230617c76fbeb27699cde8bf3a6b1a69638803de1ae4e6dfeca707c2995f1fe8166f788cc6e487e98bd470ebb0ae15a25f07e73e79075995cc27d48a66fd40f7da7abb77753eee129f66cb7bac7a97993daea56e779d3142e2378690ed3e1e10a372c6ec4af1bac9a1fff190dfa1f25477fbe56681231cedbdffca9805ef0ec13f98f6dcdcf550684732717ad6d186997d539e85fe837e9ea377f3dab025567a83fd27b2bbce2cb10fc242b61a95968de677e797601c53f9e9c3363eabeafbfc731f236b8085da13fa5cda87cf325473e666c2616245b3a3543409b8fcd679ae95d7925a3e1d56472bdc37f3d2a61a0dd5e2d4e3ea0373c863723e10e4d02609051e550a884e24c093137f45e512745306b048fcd69edb5f7ba5cab0fb95f5b91741af3628f28e51ff0f55eee4a6ab2f2fe593d9b7298d7e83edab24ccc0530c918ad26797c235fae57fad902fe616d017705ca02ad8f426fa170b71c09a88324e0183041f589e395388e17fc86bc4c6c4a78d2be33841ee42c92f72384d231e673a3b8e998acbd3a749cd8a623b20277049b5ed8c0060673e79abcf1e31fcff7c45099ba99c2adcba3c924f2b98a16ccd7e97ce96cc8b7a61d9477008a5ebbc23fc8c01bb7b2fa20417228a6104691cfed97ad247f2009eb3fe6339302ed7028c53b934ab5e964ddf8969dbf161d752d6dea4b0b32346bdf753adf4bd0ddd41ea24a155082d463e8fa313ee0fa3f1b37644f690ba959da04faae11289ebb7cf0b584fed51570e95b22bf0e2523e4229861808e752094d19dcc43be5237f3b2efc1bcbdf1fed9948341ff641ecfcf8c0b679ecaa38e36dd776af358f52b5f10e51007e71ac916df1fea3e804343b7b18f352b68b813c0c71b2cef3783dddf1431dacd0094e08b853ff191a2e6d6e9bc00497d3d6664c2d9e28b9b30b6c8da457d8e3861c67f0bff2d8be23f15f9aa4702dfb81ed8f0654782e0e527a6cc60f07f4512b4cbdcd86ed4e7cdf164c4faad8904fc78a3d173c70ae8c97c7883c2d57374051ece968fd98c8f10a5db5936edcaccd55dbf86e7a35cdae712db36794e02f2c317d107cd859ab7a8be5b1e097fd67a53e2412483ab340f1dcca13f36ea4d84ae593267f33062f41fbdb16d7180332a2b9a8f8271f4f7e0c7918480ee4757d3dd84141b476770e42484bc2fa5a33f6679a0e67f546f206bcc0d08b3e522bba16517cb9005a4fddf6030582d946f2d5733fb3e3bb65740d2983d10e4824f3e1171402705c86c244437421f9617597eeedd25fea50637bbebe1b2ef808222053ea5efe15978979fe7c2a9ce5e2eff4a1b7ddc3a9d9643ceaeee7b0e92e0aab9cf1e483c1fc7911b70ef8c27579da34eeb64b6e749a41ec5f539e49c12585c22bcb592f8d22445b0a578ed531a4c8c3f352d1536d7604c976dd506ca3829e8abaebd02335a8ce9b3ad62442947457dd5b72862469b31dd366a0c29e9aaa8bf1a1b8a71a07de76abbaea0bd2a31a0c4471d3bed0cabf8516553ab5bdd1dfab8e8e7a6b687125f3aedaa35aec445113ff5ac1598d16450af5df506cab828e6a7b64511531a8deab5af62441937c5bcd5d8286452ab51fd366a8c28e7a6b0471d2b05cd6a35ae63478d31e59c15f8a8e5ea1c7189a525c4b95d6d735fdb0fd91e61fbefda6f6befaabd40ed5827687502abab00db41de00589dc16e0a405720f6856d8778bdc7d124687d63ea004e0701f516613fecfb00a935dc3d216807c186b0ed10aff7389a04ad6f4c1dc0e920a0de22ec877d1f20b586bb2704ed20d810b61de2f51e4793a0f58da90374260c4a0d8a740b9df0d9e7e0be6907a3a4e5b8617b5ba4dd089a206b89614af91a17fa44e38aaef7837181787fcb369d00f51a184436046c405600219014441e3196f9c66fa919eaf5268c01a9a157fc1aa233ab697dc6514573854bce5e82fc462d90d10192887a73bcbc0fd492b0df72259f7042ca53fe5a6faaae5bbfe0bea6834f8a2a8fd1c2a2e9ec5f929c7e09c65932ecfd368a63dc78cee21ce5e181c9cf1da7c2f7a1bed35d86e231dc9b5a63b71a2c045fd0978464e6455ecdc084b3d13077e186fa2da86aeb1dce5834dc3e77bbc34ab73b012919013aabfb65086cda038312ea925b679923cc73d783a503ff7129850070c05650389a6c4367665cc2d5d8fb7799fdc68f9f315e5428c2d235f3cf2e2705071795c5aa71b964e9f3bbf2729d5d2a0a6539ad1068624299c7b24b4b1700df7cb1fdd35d06d6c78c858df3cc5b3fa6077146a0868b4bcc944c24c0c1fe66d81a948658e15b683a5775fb21219931d1096fcdd79b032e4350f40ad114d1924129b5ffd86ab2bb31653227f1ec3f7a1a4461f5301ae44d3956e9842c7cd108cd74cd3a4dd40c16a5d6aead32789f0a385f874544caeae01c2051c720be10b69118e046f29d1aa9e70f5fb8ce3f35037e68e7f2ac99d5f9c64949bd467846130044693b449a0a840e7873c801eb912a63a5e750a2a3f0a40b1f6f607913c1a2bea190a326333daa5acfa5f603f66031a2569bfd8336df4a918119226789eb6017d4892d225071d963ea7a10668584530a63aba3e38a9e0d2c2094db7c3d69fb39c66039ed43a232a3c9e29aa1fc1ccae2f8329665d40d07cd01ab4646f2048079de56ba0bb813bace24d759ae64b506653fff441eb3434c8698acad192ff6fb70fe5c32886fd8a1aa478641ab99721edfa6fe88839113f3b2e0c66180489991ec9efd66baa68ddb1645d6108cd806001192a7169e05656d3a13e0a5387004b1a806bcd7098b73326c90b6c863dcd710897b54dc97bb4eb040330c611a9dd3540746d6d879c542c49c030ae518013320227cac473c177f7481ea1ddcbf482792efc843ff0c2705e24b22a6cfe4dad745c8e1eeaca6251dcac0049ca0c95428a6a7f58280e89bd6e08a6267f27084a7b3b0c5ff3ec36c5ebea1d08b5c397f23cc213fe155a469f2a032fe250f400c8d83d06c08337fc5be6440c50e876d530ed89dbf33b1d3542ca85bb8a04038c4dd7f94d9764305109d64ec7f6231e43d5838bec1864f46cee96a5b32f623ec656c8c920068287133e07b3da610342a7b94786d320ad7536962af496eefdbbfbd826d0b788a3d4eaee1bc3cb052689e8affba3dcb01da1ee0e6446ccbf644fff5ae99efd19161b9143d115e4efd704b52cd26206f69c659e03277f548bf21fb12c4c9287432b7295b0a79d8d3d50aa1fa9f748b97ea3bebd10c4ebff30872144c66ae9d54fcf2347b64a2fe8a7a1afbb65b80e8fb3c92fc6d15848bdc61dfc507b1a8be412fe7c19adf1ecceb4ac637207d6fd8743b188d17f03a6d1d79c65f6160759707fd8eb6189781e0c4a974cf08048f15d0f4233343ec8b6f1bff8a68eb8b0b5c6c1023e9103cdf08abbe7bb01da4d2cd6dc28d5a6dcd141df37a2d104c1d735a2a6deae2911c9c1ead6acbef99aed5c2b493efd616198b16487c5f8bf56ef8eb1bbdea90ba48812ad858c1e38733dbe7e46d2f07b239d279424f661146fef0841a5bd36e3096b6d2c091a0f68373104731df673a0787b059bafdcef8d6c17d83244cfcd77aefe8e60e3591d1bd4a4234300a535ce7bbd9dbd7baaa8d8177efb5a39144bde256d05f8c7ea013bea7031156e5acd453f854dc3019809023716bd547b6f84e73a33dc19ce2fb7c110662d2b0d2f66850177087cccfae8fef408247b21383d93a4da660b22b142d006b0191ca7ff640d34963efb10249cf19506dd4943253fa1cc72512079ad985d0e4fb15897f66be776547c2f98346f86d1dda94fb8c8920b9aed3a2d67ba35742a1b3961eda1b7df2c3a75c17742675d8bf31fa3817d05be943873a0a539d3f2c1dc29c85d16f3e4132c53b8d66ffecfc77e12d34d584715c6560bbc7273dffa5e3eeb8eceadb9977dee46d09d308d8ecbb80437ca17eab10651d47d0313da2e230b4c3de5e48a438db474807f2fb84722cf2210e8713ebf80af35af7c4c8c4ccae2d7386630c78607164e029892aa65b8edcb20792c855f84a050160d3936db5325c1782511763d73fc9d8e75f2f0892a74dea7f63a0e1398df1ead9869bddfbb92ff3793b75ec035033bd312879602acad6ffa15ee9db4d94b998f859376a5c17c744f0ed35236b482eff8a5f7706d2b0c756c17b933a62dd1c6aa8282d57b8e0ccbbf69cdc39965c17f528fce3ca34e25117301614bfefd383e7aa58106488f9e1672cf7254dc2fb11e1c95eb6b1d512b8e2840680de8f167762997a80f3f199e9d086fbbfc9bd373d9df0881a4882146cdd9c7caac7a47458275a06a0bc063903663e02fc6e980a45f274f65f168dadf5e652ed21cb1a06646ec51db5216b8676ab9cc1c48259ce1844b78148ee8a306506403d341c2ee5f3099524195ab59ba37c909fd0e1f084ada0f32dfecc40f42dd7d754f1782d23ee689ead902c998292f298e82ccbd1ed54ed1f4f5bd969f6487fc602759ec5e63edc5a5faf330a67898b5af68f0bc830684c2d5a4f47e8759c8b2f8b99f0003f8ec477d904a857517f4b313a0d990a3b84f24a6de8702be02837e31667c2493123070593e00453ef38bb9505a9f446fb5783df792c51927e5df62697fb68cb9560829d944c346ad29dfc1556862c3ff470df53b0495162d0b8ea3f332fb3017902006c760b8d28a9ae079d8c24552ea9f6245242981cca298f8e895934fd2789191de49193faa428927a892b650b4a11fff8aeb31fdcfaeae0aef91e7c96f7e0f1ada5a8523c45645f5a41cd0a1f431fdc91d4b401d0dc19b3d8ec9cb2491c7d151bc23337f2fa61fed167e2294297658f6e0815713dc6ae579b2e8cafdd9e8c16e14a877da55f658c6ca62f13f18f6679098c4074d6e7592febb67f00bac864507678159c408e8c2fad2c5612b5b72f37612dc6602c51ca8d02ac0d3839c5b44b156f4499fec0213a2110b59d30f1f881c6b00aba3b5f0dbf017103b0a0d583d194ecc86832a3baa24fdf442030c1a4f6f230552d157719d8bf47d81ea595b289a0b411dc953fada047bb3a47e45a5cc8560d28f00cc871427c4d80edb5446acc3ad382209c7403ecba33a9a8fb8a986943dba62a81f26dd8964785928b8e1dea79dcfabd168bc54b9e7a8dc435cfa3a7a1aa000f057500e814df11233fe33e4b08d9b2b89ac35e5473714f7e5bdc507aec22618226a45e1943283b32e53e0474cceb6d1ed33638f0fdc1d094d557ec459db2e22423ea073b32f1341cf0e053ebee0ffdce5732d215fffba1429a49ce93b6f8df4412d5523a7ba57497fcf7cb1d1d2279d9345aabb080953f00fe86701c4df2f5d2864ebccb7023f80bb338d0b95b750102980d68447cc10d535c092910f8692b6a55e558b1b61b77caffafc0e7705c8f199949701584518d17b736c118520253e693c15d305b171d845a7fa84d2312d626b7360d6df949ab4946cea0023eb4fe5f2e4cf621774fa7be33c9778bf349bf2f6226b9a0b308bff4070b8f877532eb2ae21d661b4afda5a7b38b69d98d71c663a6fc27a75044cf969383c5a9d844e3bcd8a685c66dc2150dffaccb845e769a77f84da2799f0def175cfdab14a3defe26ceab9f1692e21926ebd4422ae9a612895f68c950cc4b3b009c7b56862ed7114ea99dec8dffec0e8eeec0fb12dee3fdf6311adea2fd4e3d285bacbf852fef434e5057cbc38af68b5558e154f7b6ae172b0df4aae4e87ea9ed3e007be305aebf2debd5be8391604b9bd15b64aa3ed7531987a0579a8ad7951e99c55366d907b79dd3c8904d93ac196b7d3d482ba62fa8d1863e27c0361ea05c38cdb549728c84ada63f9e8bff6f9d57f478b3fc266a88861f6cb7aed45c60af09cde82a8940b2c00c5106e8a3de3f94f338be1b7361f6faf3da69deaab607c9c8fe1a60bbf475547521917dca555ed0f91ad4056327cdce2397ba032f18514e8946d2adca54ec3b4b1e143daa741141d20fff4d47d8190db8b2eef1e3722f88681dacf1f5b95c5611c6b9b5e3d8f90840fc5bfb05bcc2dad66aac4b5df39e09d3ebd6d36d59d1d4bdfecfa59e77d6abf0ac542dcee98d22841d273d288f5595a755d72f8bbbcc5beccf21869e1ef2ac745f970acac02e9c99da7a622a54fc3c764ade08869cff8b1ef69ec8264f475e2867fa9c68a802e69a7f6e456dab96eac29201c4a82e11e8b3c58e8b5bbfa615cf315688f0730fd9ee82204eca09fdd7ccf7a8442f5eefe58dcb57d384cd4d31c053288f82c3a22c19258853f46ce6105d44eba28527d3ad43ed5ac2af567f375d43c3361f84f4abaca7f9e4e67d76174d9e4686246f124da1d63099cc71fa034f7a80c0e500d8f5f382426f7b7396eface4f5a22bbcff18beb9661bc8d324b4706c2e4311c3d87f50757f697d75411ef294095a0e4544dc7d542937442d9ee5aeaed07285a20ea9d91968edda4c6cd6e5ad394b5bbeef62c44bf6b0c99ca0ace5175bfa076a3c1e1461741c928e472a9f9f479b39dd009ee438deeffe7cf2863a4dad3d2e42c0551283b5fa32db69867151b75eaa1890d34893aac2df3cf241e0d16692a8c4372f0db11885d15e1a1a8742f3841396887704ea0fb2669cc3d761893fe596f1d3dd222784894849e6a56e803e9705cf750902a78830721d53fc996d686444d0286abe42f876d626cae9dfbb9c566ea6cd0fdd74752653787d64d9bc763bc0b3ccc74660917e0706f169fa3ac727e308b2cd06802b12607bf3c9072d0acb80248b4022c48081631f5294891d2c542da4f23212be3d41312b969269c15c6d871aebdff2b43470653273ccd190796c6a348df8e18f3f4de1f87071a190d2a1df62d157829f5e4886981b23fa750f05f8732e22ce2c0f995309089d2caab0ee8a08320f5fa27b2e3530555df82376b24020a392b48f6dc0f3eaa6661aa91ee6fdf9ad581db7135e89f3cb5b504166706fa8619bc7d5d27960d932a0c96da216a93d6a8c0f70d4ec97e8e09009e8b6609d7aa6c2192079a42db37ee20f47d8febd835b7468088d0fb06075ccf187aa4a9ef8e3fab525d828ab5f869945381038f5f32f0e35a272c17b6e0839e9de072b6d6426b4a2bec2a3fddce8cf05522048c19d5586531afdc05a7c2724a03da129237a355d76c55a9ba9f1f21a695b32150a8a82302e28c3a8bdc3ef470c31455a435682c4b3a0e90b8c50ed70ed883024cc3bc4dacf4ca98a901140198bcd8d38979cadecc9d8a4a561e5e9532beb848ca1a5f2c254081053596acdeded9c68b789a62f7ce2796f639edb3f8c850065f0b1e512e14a86f3706daaab97d5af53791916c74a612715bbdb4e4df1e0f62e117f521b33d1fea94a5b65fccbe084fc848f6a07f9f8443362e552bf1a520d879b2323682b3e041b57dcccfbb90a85030fb4f0c62ffe53b041adf9cabf61b1b6040bdac5a6e68ff21377be16f23bf6c5308cdb308dcb13a6b11da686d5d72b8ae2db3dcc85161843621b25e16e22ca2d2cb74999a52135029f28efb7e9f34913fb894c9cfa9d3e32a75af66ebc28615bf88cb58e317e97bebff6d3bd490ef867ba7003a4261b3d79b27f46e893f1b1fdb18f2d55975a0f37055e95a3172e8c8f4512962b39f159152d771c76be9887cdb944b7ef7d619c3752cada637a53a9740c704a3af62fcc029ad60489192895dfbe21ed7b6a1763519a8fe33c5c9a2a46daadf6001389b4024f5911dcde7cbb2d6f13784aacee50107bec3e7f81c59f65f7cba2d8d691442c8185a2f5bbfe134ddd4d93ddc7d6cbdd1d3614cd499fcc29c35d5832528e981089da1a363e79f5f52001ea0374127810168c2e2d66d3e636a11d637f8613b99f76355a2b527f3ada9d2eaadd676cb9de001c26e9711f7795163d8c4b6951ec7f00f7e4c36aa71315568806d2958da3e9597e95fb4842e1c757d98ac8160ad5983695aee346abcb94e36d25323aa93d5e902d2544979d8911411d5c786cee87dbd67b5591ae702d4fa7252f6466e5156d551d93e5655c6d290e0602abeeaf2ddab6e39fd721c7288eecc02a40adf9b8591534f35925c4f06fd31796ae4ab757bbde5a356de506194b785096e6432eabb4976aa61602c796612e594d27da4c1d764eb1e935f427d3e487eff27717e949393cfc0b8cd737dcf739a15b071b0fc27c9274ce2f93ac7bf0ed0600fb38606edc94c6dc2afe2c5c9a382b89c86cfb3e85dd0ea990dc3a269a74875509d02058f1c5ca224dd4223f80e03d2b7ea58230d553b6931300b249fac603ba9f6a6250cefa4facd6957fa1d3e4716e6abc9fe73df1b843d3b0f4732857db24c78bb9bd46cb75851ee5f179fbb010fc8ac7f7eb507d6e567caaf55384046722a49332274df870d54a30e506f3615232803f914df8201457bed017c9588e29d8408b422b934ce774edfc67eef99b3ba845bd62c3ce774488d646bc9bf113de262601920e9ef95b2a69ab896e0f2a85d4360cb1f6f0f89f4f54529ba7baffa8ea605eeaf3fbe1baa1c4aed2b63377a4668118583b3d50c49f1e8b2a98a50cd791f3e7615bcf1ab3cc4e125c757c85b411b5ff5e8cf04703dfd15a982d3c9be3b6ee282c01c903cd50e05f3ea44106c426e24a47705662e4c6882613f915ac7de490a8b428332e9ebd02ea3be771f0ed687e2898bce69b0837fcefaeb2c194b7e7bfae7e0fe516048fcb4131bd349633ff2e185c75a2c95efb5a29568fd6fcad9a9d32810a95067eabc2ae5570a673567c11d77c1db4c3bd8e483f3d173d6f098b307e8867766e600449787285ea7fd8f624eed930d631f384d687edd00eca4df980f71d0e3d898a46cddc3bab86cfe4d855172e82789250f7f6a37f552dcadb1beb1291f6de8acd8ffc85e5f1dd8258364c7770a8c857010dde78076d2474c5a09fb3ff2e543dc81d41da8b413fb53902ed8d16b4dbcd72209689c245d84003651d6a2ffe47bd940453c9cf3615301a10200c78e495340fa9204e471dea86cd05927c5c4373440080877bd82cc2b5ce86662a804152ead50649ae8ea9ba909c6a1f3f47a906028ced26dbb2bb8a20820ec11084a1931b2eb3e4fa8ed672e56f5f9fb77868e18c7ede42e25a242a3a000111a2bbbc843888810395f6a80c4497e0a1d932269bee166da9f5c5a77400705b339cf9c023d45665159969ae7227e1905b6e41044400346f48e491e3dde2f08505d18dd9a932230092156b7200a14845f5ea4e4768550ff2a804835437cfc59ed79bf189924b4390697c96222668e2696440b4fbbc8e2ea9cffdf097f5c73b394227b1b9f453ef48b68abe99bc6497fe7f7a07691b64f0fb6eef2da0fa48d21aacf1ff4bdbc893ad95b35950de5ab36d97a98ec9eb6c4ef3686d363ccca80966fea136497b7a71e542bbfdfa23401d5c37d5bb58fca23920b9ea498a0fe4cda31e3af03df2ffb5e7eeceb04388d0564b94eeb64c0ee6aa20664244de5441fdc841aec94fc2b6ae2b62b32732f436313f878696ec0f724d363958c9578633b779abc76df808cb65ea931bc6ca4ffc86b121de90a2afde1a9b8a643208945ffd1da171697a2b9ce505cf1d3980901de8ed420efd95b2be70a2f50e7952cc702214a5c35c9c4431e80e913865868c5b38873a3eabb193c0583685699a5775133b7de342254a030a66c0c90afe1f05a295216ea294226132b0abd8917acb83789474a0060bb4c5de98d58b19a08ba9c3bcfbb4b0570db562b506e177fe2e82982ec5ff2b4c8d319075b8c8be2cfcd32fe89bd18975734363ff467d15782d4a6f62e70a661a34b768e5f19f13e6e08d87df7dd73ff8fdce9caa10b51f30e61812fe677649332958741c2dea860e03acaf621246c2be52f3922d28ec924b45a2bf64e52e968ab0473754d55fdb2856f3619df445a7141525f40a304846451c93c2062a2bb3c586dc4c70466d9911b468c9618bec9bea3341bb0dda5560c70c2ea5d1b4522aabd61a861218d67e875682d86904a7c1c3e7dfd023b4dc7bf99da2d460d8872779c5611f058f89cb225e0600c2617fe42e185603ac55363d199b2e618d9eaa6b9ee4ab1dfded8e0b70181936a1d9fdf8663627ed57032b125a0e90085c3b688736247fddf057ed099691d303b151f1f555c50059ed61010bf78dec48b6d27027a14808a830f60fdef417f94f8e9bf00541cf2eb447046bf640b5b925c8c685f5faa34d532a1eee7048e352fd42c6de5118554b24a79b8363ee44a8790c543ceb21cd302edf0a75361d324cf3d874c5e032722b1306df1c59896b9ea649b17b60d17ac5a522275533bfdd4dc79182afb6dfced26be0e41b2f6ca7fe0fa12ec608e7bbb0e948a1d5bbbd0b7c300deac5d93c364b11aeca00cc900d5a96355284e8cf87b629cc1cc9668970a88a7b3454b97c9ea0417c4df39fe00b5ae300016600a6c9c54999e7ba026c160c42a210e2ee00244c8bfea2f1ce6986e496f5842a1657ab7b530e7a625a9c8af827fef9b949c7940eb90c6e13f55bd90044329460e00e37c12fcb6a7b942ea841709eb6c9a5f46d8c6840fd30067e9da0e8845916746a5a6a30a78e82e0631ecef662affcc7cf656a5a1efeca3166d26436934a94a8d312bc24f54acf5723fd4ce1f5a4d8f4f915567dea370957648099fd321e1d3adafb8299a386c3eacefd2de267752f46f5ddd8a75c14befa10ac5a3ebc1922887d7ec1aafcad1e2be1ca4bc50b84ad876326c6541980a23d3d7c3df893e289a152e8e1eb2c47c70d492b3dbf49553dea317c4e81fbbe99840f24ab19d04ed1b1b6cecd6adfa3b18aadf76011f6405bfe9c68ca1056d71f03e1c059ec83c85364ef778d38beec5447518514de44ac2a6312cb17cbc81e16f04b0d27f8ba1bd8cc87a6e8711fb0ed8e8403b0a1f3db66a3bcf25e740870c03c6381e143b27090f28439634fdbc77c3dab58b5a36ad1c5ebdd01df768a41e9b612ee848dd2cdc415265af1636c83dd5c1ba47db759fdfde1e63f9e13557ededf3ab591c377f23e8c2abab417d1fa9b945166e9960def2d7004de75d07875a101b42083c3004abcd7c0eb5551635843dacdbbdde5e5bed0183847ff08d1e4f248bc16814403a1c9d3ecb2941b26cb56baa6ab612a22d367294cad592fa3f8c9254b44c7e1ce6965f8be2ef853383e8a713fa92151be25f77c2a65c51325f7c87f76389568ca59e6dd1ea44a277f04a06d693e6c2c8f1dd11962c39c75158879b9c3b849c5cf21f08cad766b2632e1396dc0190956d9460597760509f6a7137b6940cf9b967a03b1eed9bfc6e3266bb343c7e3bc6d5c30e30dfda3022d92474a29d40ee48b396961e0dc47c4a0105b36ff227f2f007e371352245799126bfd3da9e0c3400ab2222b07cbfcdde1c13edf07069acda49c13abfc3b56704d1f1fe3bd4e3bf43520fd6b388cc69c8e9ff5d81b399062fd8e56880a01dd46e3de183914201f1453a899ee17cc5477fd7683fc6fcd5bbbf847f1c017344135183276db4baad684c11dcdd3c853e9920f9bc5c3c7ec75c849302d838c96d8ed77fb14f5df4636ffa294cf5c14b50a7d1d820a122dc12e5cb311b74a67271eb371b3f541a4f8acf0235b5d74bf22a4b3f7d5f7dbd55e2c8b19e8cf45c8afd79791f8d18d809cef3bdd519745d364a0736c8cef3a8e64c42246a9b8d0639ced2c3dc9aeaf99b39414e986564cf5fe2e8993a9813ce3c09ff22248f06ab06fa4248ee4e94454a8b2476427aab1013e74bf1a09021fdb7b94e2e7c992900e8dce5eb0d8d9c88e7ea997fbffcee9e32775a14a19adf75918283bd5219b446f3c923f9133d810aa471ffcd42d7dbb0f78bcbe54b65897dc70997e586f85e4cbec534d8708b42cba15170c9020780cb9c00e0319af314f6b63190c4bee76883202087937bc7d784d2fbe9abc1b5e09210e9d874e8c4478bdd5636eb4fa07810bd9ac27b378095b5317e1158adaa61a9da077f406bb54dbbd0a442f853efcc16dd5667b370f3e25713e67e2a05379ef2a1d864be74dfb6f40fffbdf1cab024f8961d7f860ad2139a7feff5cbbae337ed0236397310be7c54ec221d07b8edc195000e62db917c63cf1692d51cdc4c726e9f4e5070f12a92a2fad422a8b2d1e4804269475558f37492fb42b5f97f50eadefec993c90bc714a258893e4286631b421cfea4ca773cebb7b6689db362ade3aa81d636537242cc5f5736344857e75d74e46a7ae7b77cef885ac78bdd73f7a8362931f2a5d12fad707ec5fe0700472620500f22b66c9e427258e5d1c7cddb074027dc70ece17f908ab67b064c619dba8f87bd3e3a42cc87ac4fe068e67a16f98cf3d47dab9da0135a9a3b655ac34b087751c1c372af1621f5642e9153365ceb0de82d880c0566fcb6d396b88f225b85c4dcf842fbcbf21774e47469da8190d234586c1d730f9e96871d5c9c671d42262f6bb161fae7d09e0a7e4873a0b701f88dbdf3c5c676ca899ede8f540b7b589fda79b23b7876c7bd7167aee9e8059e02e6626d24ae3dfa71d30f95a1c0161df07358b518a6f37cf2de2ce25c3885cdda7e2630d12cc266874d6a1f11db87cca50b12a4aecee991e3156b6902bc9aabfa5a5d281ce5f6eafc9cb1168f4de78bb25a5c3f708e6cad08f4fb9288dfb4d36d8b8041c792e94e30350e44874bfc71181e3f4e78b277260ef46bffaff5216c78a2c90a9e51229f024535ccdb284c8304191d75f7597156fd01dbc18eebce35080255de931a68d9d08df5b4fa7735677c07838bca7790bf2b23f57f567b73410264ccfe539f44271f9a1e662227be357d48820ac840c005fbf96f7c690e781aa7d8c8ce6641a6e88cbe86a00a05cb5d0e0ef80615542a00373cc697f9b04017d50a343a97dee859142f875a1207cd28659bf5470a11b46f472a12e2e053c081b2781d386cdb1118917ee18caa830d2a5c08c94626063a0eeb53f43f8f178e013f567d0e8dc454de5054f29faadd0480fc65e0140e73c7cd0514d1916c1bd30788e145e99aa1cc7a1491789527fe7c8a5a31f708632567710d3e881372be0c2fffd95e10f7d8cafb7d68a8eee58b5d6920416f28eb584db6759bff553f0cf867550b4e2dd855208d8b33576907849167d92163024968f24216656c736a388f5f8fdc882f764d91f9214797b64f6dd5ec8d29bf59a2160afa76fc1a22c22efa13dba77f699b2e82ae45f51fca4bce21602d6f64d6841e2e6ed4178cd2e88f430e279347597ef5c56b136600c3f82835232ed1aa818bb6b8c8ece110857171b08ac62f26b9778984b4b48a4e70cbae2800bdbd8cf4dd95d41f6b7d3b280134976c448f579f82f86cfd8fff66f4a7f4bc0fb4e033b732201d69c1e6fac2e70f6fe840a8c5651ebdfce89f4427190fbf6a9e445dd61dfa295a88db72c5d5b19a5e2e117ccc0366a6d0e0043f71e38465fdee28f56a08ca1863a811021f8c430ec5ded7d96f4e162ed110c31d90a47a4fb658cb6da2d97167b3a6258e1facc2b1704d94111a1a761e1f2d73cc1ff3d22ca330fc5a295e5c37b24a199472b77c6d315fc40f85eebf5fb2a18c515d5c58884bcc896edf808a02c4bbcb09ece3ee9626b1e25312eab811e590d77d4635bb4d8ce88d8d936fac978dfd71d234a6b4335a14315f9a8ca92f23eb9cd151b63b77885dda128eaaaf16c5dada7b329310bc9de31e635920d4b1203646112eb0d7df8fc1df6a8acb114cf8d3693cb927269d90c1566ebd4c0afadfd7e0da35b858ddcb1e3139ca9c1f71295f47182bc26a2188bf1338d152b07f19661ec00e96690a3351ffdd5b28548d7a68ef3cf76a24ee0f025d48d14cf773b038684e5887b3b360483b0e8b7c148c936b691d65f7c2269c1d6cb861264744add88f70bfb6b97afa32476e886baf9fe99fa9af914b6c52d654e4cc00ddc948a588e9e031d1b17f08a79a82a5730bd1b3c482cb90e8820b79473cda1db65d61657033d4cc29ceea46ceac2f6931afd0425d295c854b87f2c9607e77665fb0f6decef85c71779d8cf46e557adfcb96172d8e189c6097989a910b8238857f002c8177b91ff44796c038b361a41f14f298dc65dc174a58aaa5ab7378a62a2a4afb78b3e8d3606223878c745c1fe6773900739c450afc80e698147b5074a162133e666a5413060f772f6de9e82db472c4f80e0f22b12dd8e61d456141604d37c73d288d3871b6e1fe168bf6dd1d8e3a9c8947a6b0b23c3c7a40cae474bdae5dec51e4517646a00517a004f0075ae3229ba821adf6689a9dde71962464d17398dd9387f5f732b61f12565321a271cd5bef85b2fe2dc7553a89d4861ab60e7e0d276ae05097300088a61601a301a26b49e22c62b726f96ff2a4178c13285b2f6c5248992cadecd6fefc5b8fe33a5c8edcb84413dae26ae85a563be87bf3ef9749f84bbaae4de9c9224285e007ab1f2cc47681abd720c45810f2bfc7167bdbaa3844bd1e99bae53b6739fd5f49cebf1a0d168a7f9ba66a323af77a2f63690c33e4aea42363b3736f576ccc811651768a1fdf9f1e5496b8adfc6dbebf8b4302f5fd27cc3fcf9aced8c08892703da26536f393f8394d6b02b29438571e91a2a8052f68ebe21bd2d82cd8d7c4952ccf31da18380843006e39f982eb080d218a88ed04b5743238ba4a791068fed97628bee4eab4c959c7598f16479037e52dfb73be3b3ee39b16efc26242f0e491d21747d46035fe49c9279b4d5b852fb4e9fa2ae55877bd448fc998f89edc9ca13bdc6152c3ba29371c9ed4b7622cd9834f6178bbf2106aabc14666aee924a96972108cceb444516faa94bad99e6a7549000e1e77c0d65b12184ac648f4ecdc60aa7dbba76786844c71837aeae93a9d2ab1d5e9bd11432ac4283c522ea1239b74be6acfc17777402b5a2bf89659319fdeba4a4793268e6a661b5c82b893d98e698f679809d6477c25dba1716dbe7337a58ce9bbe8fbfde1330db28f8a6ea696949f808a0a0f2875d1f81a6bb030d439bef4a85aae93667d295e7db111467dc3d91e9239093797c790b5cb6d563332ab5e548c01c6046158a14a8ce4307bb20b1a8a8457e9a097de7e522de9d233eeea7490458266182a879206f6d5068b3e4af474765283662ef986dd0984bc198cee153c0c53d0e9bd68c24aca9802f7f20a3db2a1f8a4200374c410ebe407e8b33d679768db1d4c933ff33c0de71ec05d5b321975cf2a787522c61b1c4ba5859ab8da95e100a4240accf51bbddaecf03ba7a6a5866439c83911057ef41d013895d7922a3207c2640628fb2fc915838bb711b81c4d662d5f0999e43c553e7929020feb792bc0397edb789cb3e02882e2dd08793d060483ee514a2ff4fed0470c2c60c3fd55e169542601522109fc400d7b20a2fcba96f1681e207c32aaeeb15745d1988abe31f13d42967cce5c6cf994a4c9f0b16f45253bc28e034ec229b31bcdb237f3ecb1aef3954fea3327698508c6970cdb87a68ec46e979eb14130d80210c64de8262328f96c9b43b77768ed8ed9f6768b916fb51326b097d08fe7ecc1a565090a4c4b71339034ee2a1d274aedbcda283d3cc628be2af90903b11365d52e9675739510063d77f4da73c5b2e6cdbd171b4c2d2e6885d1d7bf11807e19f72c12e58fbcbe423de5e58f1ab88289d5b13ae820c8292660e3005441bd3a8e17624020dcb0024d633065e29898bf98a850fda057f63da73ec3eb8d455ac249ff339507d692a14ab577b2561ab72efed5aef272353dee77f0777888c9b19f03f0f20d9cdfc90842411bf1dc3abc5cdcedbb659793f10f894cb1c587bfaef3cf35a5e0c3893777b4cd2d6233fcb4142a2a01b45fc2e667da86bc3baab356334b1eb7bf93750bbaae0c49743fd2e217afc01cf6eda3153738ed9737d01628a3509b6b569dfef4fa250b57c40180be1d526df09e6d013031ee022b18027084f502be8fd22fdf989f434f0eae2272a31cbbc43269120c850c99863a2fb42d75548db452bbe34e4cabc351e9d3628beb481a5408953a0333d9dd122cc7c9045f86e4a848045046e013070ff1776d4e6f9ea25b0436c4e1b9411430ec64f00ad1aa42863e53b6026199750d3b62aefd4cd6710d23652d715365f8bf5614c9d296bfb06570fb1bed72baea297cec04bfa1e11d99273b11dc047aed74b78cf80be6f86826b214b820b3979743976a371d6e9d22f511f447c4881d40ddc2639f2f239fc341e46626c54d01b7db72e79f6f67908cfdfffd6066ab296971205e427455a60aa4fef24bc5db88b763b8a65c3eed3399f73597d4900efb36a84d861a45cd3d3095bf15710e939ccbacc8ed83496ac7793d2bd0d3c6343434b5b64d276c176dffefaf02463236c2163703c0b966dfde39b4300c525318cd9664c35b2db476a8c6498e5811cfe0cee665adb2b7d1b51bb69cc083ad766aef006ba9785cbdbaf98588944f0039d3982dbbb07d7a9be4bfade06e33890adb353760237d6b3eae0fd22702b12a35c293df2ce531e262411f389c7a472c47f5663485dab9c66cd87b7cef5873d94e1fa6d69eb0d814b8c47883d6a6cbb46f18babc99232c4748bb82b01bb06446d086ceead461d435892069aed41fbcb09626917ce897fdfe3db7df3f664a1a1464dd8382ac0495f19f8175f6801ba3b540e9005502f8fa1a6ced5763a9a7699fd4988ba54b73e26d2a72dbfd3d1fde8e81cdac98150a3467b91c8b6b8898a24df2724393e2b6f07e3f6d958ba52590dbbf87da0c3e60d77ab102287aa851de91622e97c5c13824d17ba22c83e0b1ffa7a3867f5c79d59fa1021b037159f0061852085332b06ee78fc9556d5c643af503b2f0b6b608c065b6149a42744783ffc0884f3dde7a3b8e4c879cfc9b5303bbf477820f86d29ffb5683ed8dbe711f30203c6e53a7d19fcfecfedeaa2ea82b49fc649ff21dc64f3f5242cf3fa92dba29c51ab58fbd9e146cd9578ea6ca0fdd8059244c7ca3ee4f61bf616c315f8067ff71bf4d8a283002800b16719a6820e0588d69cb35a113ca41ecdd03296f047e4de985dfc52048ba412d08590dc99e9e0bd03b3dbe5f622f0bda07badfc068866eabc749934d5089e71ff8766f8582bad131c1d050315cbd4e934c06018fa7cc30b82bfd603af862e1599f87b3b3b93886551044e905f3c34f4c557b3186498d8a265d3c5521a4ab5964a2a70a7ed8fc1fc3542f077f30130808dee8f59eaa02f08365b27eaeb94c2613e5bd8ad00aee5ce3242ebdfa500b9679343e8e7e65f936a81bcd32470ea215c8675763a2893dc5147789682b1b312220190a333947c7dc385d409239e4310d1919935e18cfd679124d208af0a36156e88863afa9d516f3860675975fa8748630fa4fda1f5e19825c384240aef77a2403de6df14a3257623846c329377c1dc75518839553a15a9160ecb1e24f2c999065eb9253a74fe00654df47ee4e60985f11150f806ccd1eaaed9275e26f7379750d7708a44341afd1f6cd67bbbcd227213c25089d9dc30f3581b3a6863adf06497d35d57471694889e043dcdd4e0050d0da359c79ee4b568e067eb5f27a22540630143352ed449a0df1f73f0ef5afb23868bdac3167ecd9dc2a0c50757bd3e750f3a7e0d1c2848f923a359c5b4a5f4dd069e878f30c0ae6a2e1ee0258a86a556528dff1b3ab6fcc0976213b6a1c92af83f165338e57e9ad7465ef29fad72c558ab7ed8ec877747823c012f5c43d203d6e640b4373770b21ee4005652436f23c96e343bf6c6d7e6140e7be96f2fb6d0a8b6eb3e31fb1d0533b528bc867dcd141f26dc064983fd5ee60c7b10acef25849e12cfa4fde3841d783120be0aa4dc43e6e01b75e62432f3117af10641ffb5d5e30b1747214c8fbb85f7295465417e8804efd63d4220066340a107d809f64142d3bd788096012e66edbd6f5470d9585ee9115a2e58caf36cd0ba25ac3af313770e1c7d8e8385099bed85dd2f7679639abd8b7fae37ef105534b40080c44b357f13deef0c783966a0b8cc99f0a74de44c5585a78658d197afa7ccc8aecddccbe83a1bc4c63944f1579824b329127bfb33dbdf8e400d1bfcdb3865627824d82c6b98de5cbcf77f467fa1e0d587131f9ee4c92ce8db72bfa3cbcdcbff956fc406c4ac21f2047289202c39821db869e0b153463d4a0eedddc9691744a93a813969b78a03f1bf444bbbf581136c7b8d617b8a0d627b0d451194e4ae1003ea9b8a0a7267606d4128ae59b5a4a86b43802e5d8a05c314aacc85bc5e3d4739430e7051623e665b82fdfab3741d42cfb226d0e66d6f10c5e65f19ad4c9c4508cc5d6a8e77195cb4d4b9db5e21900f3e857d63a153933b289ef2788bd026c808117b13edceb5eb60817b39a5c7e2d7ca76d19190e3cdc859ef01fefdac7660969512be9723dcf4a042c27c836149410c213bb3fa27348682ed02ecbbd84348edacd1f67b837e6a19ed33f129f010ae02f7fa6a2cf6035b4f6741da1663b5e765f6006f00062ec20d1b4f31102fe4b757e8f54ed8dd8a28e1436af17488b65a14812463bc9ef89d32b74dbe824c40df1de73e928401175326c6e281f3d23d5fd77440d8554f1f5802220483841c97eba03951e854ce0caea1c23e063f87beae9e315e50692cd575f4b1a8746b76f6cf6d1dbb2a54888ba526228638c9fe9746d1aecb57565f76dbd1bd640600f7ea4cdf3f165864fd76286434df8447dcf9ebdbd14ef70b901d5d22caf06235f2c11534bb77e67138293faa108dd6a03448a4aa06689dec43084ecc500e1d2ca2734ec4aa704dbace8599d9fd75146c81b5ba8247c2fd6be8f62fa17361fbc7407ad81f13ce52cdc0a91c06b192260dd63637f41126cae4b21b1eecd59fe4ca34d6002b0aa5a6512b79da93453bebc8ac24c0aba047b537ac6e6052a10c9962fea193d2d93aaf432ca8314d197597c03c24ac856d6e037114314c3d2e10d16d6ee7a0f24d589e7a45241b25f0569608ca9af41ad2044d17fd9c94e95568e12ac25a830d53fcff74cb05d0db4c8832bb3a23c092b8a83a482420cad94c21b4491d69c274636f8d9a7be25a9d4ef09fa86017497a2b95b73b47263019cd4b4fcb55d9298e421b9d7eb3d1c089b0fd7a37d85f6ac6165312b415f42c91bb0bad21703119aed551cb486f9b040cca8be3386c98dec7f3ecef51c17a81e5c5ea6936475ddd5922e24053643c2060dcdeff6ed1e212e2e75fc7a1dcf920190257f122b64bb6339e508513d8c345c8000d52c1226a2545dca2f856f627ffbb6251637b2ca8ae9ec89ecb2c6dfb0295b7b969aa265c40a0d2cc3f0659d6f8ae9bc8a7a1ec46f24c86924bc0a2b25e2ac1688f48d2aa5c4b02e4c72fddc220e89fd81c6f03e007fdd96cfff6d180ed6ca4c6e0d5e7c5bc4392c99d7af77a66de7e7eeaaed9842393f80e5d527442abc7c4aea50fac9b2f70134a702fb6edffcf25b9960dfac79668232e1b75a0d86d49cffcfe19c63a7167d90c230fb4714b7ee3f90a440b402de49f12f90a39fb5112de7afeb245b94ee119171fc07a5f1c7d04728c1ae15ee5346c25abba31076173d0299f5bd8db92eb2140962dc14f58ff35807f45050f8694a9992fe045093ed588991865c31d616a1a2e8d036e340b53f2c213fd1902ebf2732978b0697b4534208aaeba8c18c33b7c348ce3e34a0828f9e2b1843d4943e2117cc338235550435957950919db943bbd43558d841c752b2d49b5fa29b82f25e901a2e6c56305149d6344b2bb00c8cfc5f3fa2c42b266c3742ff9c843afd3420f8bf754e314e5b5c7749b8e216859a0f1683c37e77242407c0b74d9414153ed9c81a3d91e7c84e46c34213ab8c7d92735b3ae8dc46b90bf9fd2e4d5b00aeb78a5867fd6e14fbfa6a4a107f64f87ef6fa8451d3e61db767e753d952ead33430f90bdeaf7bf236a6acfb15c32bcebae7c097ad04752ae67327f8de71a99a7d3a208f966843ca880a985f2e19368e625255e4f7e1a323b0eff9c88d413f5dc07e3fd6fddc6b9d5274b568b198bce0bb813d0782442d898398e9cef5dfd97702c085e796bb5943977608d7313020d122d125a4224aa35a1e06ac9867741c3ce39890c3f2ccf3adaea0fe40acf3aa1fa27742bd377ec0cf10f39ffc66e0ef1d4b982cb312b0b0dea046fc1833ec9b3f972e74a3493c50545d24e4e35a4a5050f317f60c46ab99b8638e18afbf9673a8220f82f1b1e02cdab1203d39430a72b40b329b1ca5a1f90d4e753a1ebb74e026464b9b59537b61bf88a2c094ea15520cc633ac22521128ee0856ee30ee247113cbadd48692696cc03257c47f40ddd7c22ce475ecfe1e66161b65d5b756bba6ee0e7317699aec1a324ebfe20f8c34adeed3180bd4e27486ae3f888845fb723d1062bf2965071a0f4a46b2ba2e495257d74fe4db803f6a2576e9edc106d69d7be6262a3b5a8d7cc04f76530f02593de05c3eda0c03c2a95179b4ae36a54a26ab09b7b710700d6ac9922672321ae74ee7e0f3dc1678cb26625003d2cdcc95eada6376cce6179116ea27e15ab648a059332fe15fef04d1264d9d7157797f0b6c8c58288c30aea7bc034edb0ae79680350b9f6d9a87363abb67dd23af805d4c40d2d65e84a22e1aec8faf1d9343fdffb5d2bc937b1294b1999b559dfaf9dbcadc2be09e6680cedb03f49311263175e77bbc448f0027fe3ef2d9baceb0d518fff1867a6797dbd01ff1d84fd79007d28863c4a4580f056e39eb0d9ef4743a3950de2abd4608569c3a1b88a86522908ee576441e0887084741b66f597d73d704ef800a30860b4112cccbef18083498a775a72d4b4b3cd03bbc3a9bd8dcafd4e4707823efd30ba0f645894c7e2fba4df388964e7a1a48acea93613e785b51ce9584aa9c6805550104f3fe2e74d1e037cfdd50383824a4f4a5ec43cbc9945c43e1d9ad13c952b58d4fdc540218127820abfee29c4797bca5ce127b14855f8dea7bcbda2299037789e226a98a4fe363fb5c52c14859131096df18e56fa27ff4cf3f3d67f843867c856db6898cfc175db8f7b3b16df07c3521160d06fcafa1ec7274f0e9f6ead9f234d6e40080d5200d261e4a2b48cf76bd3e9933a5ffa3ec7d2919b1b74b06644bbc7e4eceacb75355080e09e146f2d2b6e1aab0a5bd0865404de6d637df37faa962ad316f9408580f0bbd300bca7fcb3380cf8f87fc01b79bf1c3b3fece2a84e8fe8689c3980c05b300e9ea807676496eaded621c9aa90cabb7ac4ce9b68f9904e23ed47abb053d6921a57c2f1b51d327748901b8973d4cdf6f38ac9dd8438bba4aa0f75d713f63e0d51574e9d5418db5b9d25e7397a648c203c7ffd51890cc315af6a0093533926a33f00170153705f7447da420fa671de869db53f8d1422dab0331157a88d9b27e9a9cdf79c18555269b6b328a444e04a09b0dbd933d802afe8d0d8e84f60470d3ef2c1c889a5c217e7c868181dda39ab086a91f7cd7351e4b8e0fec737232a13837dfbe9d5c93c22f8395f3a4a5eb81cf8f4ff4597014a362e46dec6fe2ed969bb21e70ba2fe8ab7fb558aeef69a31ce7e7bc8b6ccafcd3f104ac8d8d7ab6053c04f423077da9f66b181c7ddc0799a4e17299804e12c1fe24fe270c0419512279b1b72436b142f09da823d279e54e378a88aed6d890d4d5309e400281dc00ce55ee7e8ce6df4472be298494d044886330ee5c1156a1618b6ce777962a27935efa5477e378c9d03dbf436cb2a8c277519a6c8a76b15f6c9560fc6df02e1550d054b0298ea642098ef0e6ad301c5d08e754b2d0a5d9899998509f9a0bc7b7cec90a7f87226665d84b9735013213856480d562b31b129bd017ccccf2c389976678553b8808acb9e037309a377d1692f12fbdf8f69ae949e1ac9902a06490b4dde8fe2e228a99a620fe639906074e5d18ebd52b56961009e51102f323eedae6abb31a3b4d332dccbecda70f60e8a6e86f05f99ac6e6b91aebf4c0e0bacd3d89d3d2563b6631d5c1521033509908816612636093837cc331f18a1eebd0d2e472168c4d46aab620af2bf973332874bf777837bf186c7ec4007a5031c598e58f2c36f35c27be2e08b89f31df9e6f2964d684cef55d758e81991ba72fe67f7a1748d777aa8e405280cba338c89587cf56b50bb40ed068c3199b4892f848288d4252a643e71d171d59d5232936ac87ca4a3f9538bf564fb904312b610077049dfbaa4ce1685642b57a44b120371f4152f5dd150954c04998bd9efa8d779797b0e5321ef72549ad8251c7c50307fce4a9e0692735af0d25d5092c16d181807fb4c8e6e290ac1d1fc90c4c8b1897ff41d247a5605cd2a3f06b7f9d305f4a14ee14c20c77562083980bded3c1686aa88a4142649df03b5ef648260bb3f76dbeaec13567b1d0e9de7622084c08939c2dc176b22289e4018005a5d12624eb6d59c75b22e0a76ec6fc30835cc3dc79c1736725ba44a297c6ac085143e773c2efc441ccc3ff10f37e53681b4f08632c08de32b96e204059b9a599a4391887a29ff8c25dacb8bc4a1d85d5b9389e53a397a7a6ce9f7858cedd8bba4a3ed92082e1970a2fee66b2ef43a1360516d9d44f7c41901454cb1ae09ee6b55431d1fbc6b8949988240f9b5508e86ccc7bbfb0c9835d451c6992593cad3c34ea9eeebea8dc85ca69acdc3c1e86f154e985de9cd35ca6298a97808cacac806fdf33de0190d4bf71dc54708324582240c3f38dacf06fb6ce6e58cc96ee02355455cfab31ec512909fe60cb2c0bc320d93f641eec8aab27f38683a13107a870bf2d8b47b4a8bf4c42ddc1564f1e5869ca2d5fe221a5c47f6991b94c415104cf60d1ee5c8d3e85a696e62b57fd0463fa546c694b9d511539531af419a900a3dd8cfa5c77a89af46cee0e2ced1fce68d3c063a135f55d163880543d0b0298b229243ed0480fd318e421e091616cae92f288f2a4fdacf6dec2afa09b94f9e3390d98b840cd37edfebec507d4142e5313139f875dee2aa303b5d647238ea5a827468a49793dd04cf1456f5a272de05d8a1cc0c2b634a9d11c4a91e8d3c2eb9199263366700538aaf9919fccf024ab24ff06469ee66f85dd0b1609fd04f036a3646e56b9e7ced9937a0b5170c5aa608dad4e1754853e227ea1f5d963236704f3a995bc115188976a2977a6794b53451eee6ebb0308da76018198d2e20744c25ef812344544636de441c50a1d36c74a941ba804ec266496be63152a0c25449881478a2234419d1ca3efa8b6ff35e64b137530816d43ad0fb7cd839132b9f75a8086686bbe42775996871f506afcd49dbcfa0f06b2ae513299c2631dd006d686cef1954c21ae730b11432193127807acac907b4cb17812f0453d1b8726b74bde58bbd5d0dafadd51cd8dea0fbc9324275b8885b0a309d67c19490087fa1156686a718bbbc42f61d0d26dc677c26cb58785553125088e51138b09f09a87c1862f9943b50b92e9dabfae97933632329dc1ff0298134b1c8f72b3565f52bd804b96840801e15254973665700bec83bed0400857f335a74d2c1a7d5f52624b8260ed1ed332380589b1a8c9dab143cbdbe2bceb2c53fb6a5194c130e49b22c90d895808b29d76dd2cf9b11e27ca8b1a84b1d6c71039b8a5a17132e3b13519188f05802670f86e986c06a7f60b90fd67588a62717a3806057f5e8575f82866a55e494ed4cee628050ef70c9e6cfb2d251f0a40610df919f46da284bbf23d525520ade80f9dd7f12d7bab0f064b0ff3a3c79c426b23f6ba229c76a1cb8ff86e46d85775631721138ac2bbf0c79b645c00e1cf640bfe5a13fda27f6b01c590f9772073c44d0120c34b0263d2aa16e10c55a638ac4bdd74eb833736f7f7fdeb823349f3ed1d7462233913d0ac496be6f1cda6c9098e0c7e06a74fe795ba4d3af0e4476e4a8ca77191986b2686c9002598b85a03b94abdde4e474dc193364f3c121d31093c554d2bc8bda7359d6713973495dd1e599c099b7faa6b5b11ef531c17c43a7bb0f05ba6d84d670804bf2f8eb5c81e0d3543633059f15dd9ee6dbc0741ce78c1da93fd8ec881229a1f0a346ec71e0cf8574307248a5cffae566d4bae50ec96711416f1d52d12986851155b29585f8a9fb16bba26193cec64e3d0534a995ea04c467027386f0fad9c14c5acc8aa4c20bc38c111a0d79afe72a4a77ea78a04a135049a061010246481a5c3d23f2874c4f2ea2e7c9b4123d1bb3a5b32efe77838551f7d79855417744cf931e13868f3d0a32e832f45863929391dec842b18dbf8ff93866dcdb4b70b6d0aeae559fe9b4c305fdb090b5d425820da663bf2d35e3ba6f1a1f0ae9d74b349ede7f3260ea38749e0524f5ec3aa9b40a9cf7db339b876d5912a6c5e4fb3e09e3a0d4d7dc3894bb1617491c466f1c648e4fcff33a554e5a5dc31e883528ab050b8990580fb19e22b284bc532cf5a1bd606f80a45b99f240df3835e0a7cda8ffd4c59f19bd9b23b20db54ac047fc6f1e656feed890e999d2cce6cc848d04784e2ca6d5cb503e728bb3e8c262ea0eb7b9f09fe205194cfad7dd5ec6a5fbd5ee0efe7a5878b9eae44eae3f3554c7160cab7b14aeacf687fa19e4cfbea800f59ffbc89db6e04b7ea77898b998e06f26668cebfcec10121b932112dfc5cda25210ba1f62a9543ac07e9195eed7b44c8f6c746cf606c7f6ec5a351c43858b0e4561d1ee0997d4e6decea323b2b38ef6c4c1bd36a869be0d1694d0579670c5731a3ae7822e64a56c1c6e96e1a0aa256f847dad0b064a0be2da1c90a7e9386a2ab91d5dfcec5b80024a1fb3b841448c1a273ea2d35724d4679e5dc20adbc08d107abf3cc070e7d8920367c12acdda6e4a499ad413e75ffdfd725be8335565e05470f6f4aba49bc56af5cae3f18447633e5afe5cd1641ee164d147ba97e8cb078195c35914d8e157c32cc7e0ff0ea747e0bfce8d0c419c1732ec408e8c26c3bc3281934813574ab776def517a7f5acddea9fd119f693fe5d407758a768e8f3d88c8806cf8fb20a22fc731353849340c81199631f28257c9acf926153505cf33113c58302a97809392f9d00cea8cf02badc018ec47cff325f0e916513e8703a12c090bbf6a081628a0f3164cc147e9ec4d084b421335ef72e4ee8bcdf7e81d6df30e430cf3734243313b2c6ca3ad365e31432665e8d9c7470d9c315639cde14f5b29e1e2a738f6b4ca9e7dfd462c622e4105d7509185cb01c8506fac4e9a91fd9a232f9e0d602724e87500a7ead2dd1c78782ec2081b86bb934404e16f18673d97f02e871a804ef7619a1b480a95e958a6b9571698617bc4610d32623a2438cd5e09f4aebb6b858f132de1a7ad0c2f66a17cf51e740cdfd21adc4267e32b0008fe22dd6ae710098e91d47cd31c1308af3d9e551004b12c6ab9dd37827568c9f21c24ee360b2bc2c8f9c6b745d64b6da219bfde9dee2e9eaf1f107f656222f0a7facd62bd1e9a2089724b12ce5f48aeca421ab610eeb27c40cc7f955733bac42860eca681238e9b5784a483ca05ac2651405bc00058071287afe7f0bdbcc3c047c87d9793c4f34d00bdcd142b8c57e47c4444367e4e08ee35aef0102f2d25c09b0138c6947ba83328faa6a42ab9459b480b8fd692c5120e81e90dcc00c594024543929876368ca169bf597a376b37f729411f8bc75fad9f0f30e84eb1451522ceba1768d7bf9423311b9c8fb7d73eadf8f9820c2d38030d44c990884914a60bb4939037d95383a75c68a0caec7c9d03d3462fd2dd3a7d6a77caac9b49c2b3a09f9ceacb8bbf377f53f1e461775a80d08cbffc3e05558cfbe7769f4e3b6fab053899329cfa7292eb3866b622bca61bed83cbeb49231c8664f5f78c8da66a66c3da9020d623b7749792efc2ed7677094bc6b6a4ef93f8570da13481c274080d082f0f97b5a02388d9e9856f984df59c647edb918b625860fa7362f9babfcfa29778eebfae76d02ba1b0ed69749ea253331bdabf8ad6c9828033dc28662584d09695dcb1363dd40092a0a7e76c955fe68d74b40f6fcddca2fd7588dc81897eec1413202f6f0ed648c9421e0f65c66272a4d98cc870f865d53a751f54a643a9bca6bd4846d1b92d3ed3ada5b30ab8b6137410eacaced46333d6b06e328262ceebf15f89970ce5feb4051b016a68ada588534d0d84220b07b258d92c7cfeb9599941e491c3956cce3d30ffe0f94a59b05f457c10f6c04855116d7b894a76a63e80ac33d1ebddcb010374cc674f219fcd1f45936795416e7c7af31f5a23416efe5b4ce13b167002a4c45982342166d29bc32630c37be4aa997b7c9ceb2d5a77d2a45034335ae6c059cc892ccf164d35da7816e7699b7c46e9ec14dd0346e442ef197f23a7298ec0aa0268a42d7625ba0e85e64e14a0e2ec3467c81c0e797364902f8ec48765698d0722df31716f82ab16e679b22fdf8188080620596d01bbb7bb4654090e9c8878d4a69bc201a2a773970f25a051edfff46ef9f43f656e0ab48ee63e81417d6325ea00fa55c733d8520687b9915b06e689a9f55e68d6190091b771e375a31d531924e1d85e96640e2c4724246aaf17cb3dbe08a088aff6916135c45d1977dcdcaeb9bbbe9eb28f6145f364c98bf01f5b71b374eed4231d09b6efe6d6c3d16cbe61173b1610109867d63ce7bd80abf32e3ebb77202ff01e4741715e5427179a52bf3e0c19068019714d4b5f23e794fbb9d95e1f5d6be79c35b302de02f094877ab6440a9e9a699802af64d859213c31013fa4294d50e047173bb9be704a2f8cb0189b230c70942cd6192e551151127510a1e908953b7f111b08875d9e3f17c0e53d21f5d9bb783521a8bc21349e0b8611009bb87a93c16135d68c23b9c612ce8530e95ba7f3a7f3584cf01680c46b2f17ddbf89645d5ca5ce481e30aa9e52aaa819d33c54024d42235f8c0cdfbd46bba12863de025863f0e515f8ed19362c155a1cfdb9b3e72d1c5eb7fc91ba6159fe6a05cb5cc297f871c978b524c59cdee4806d7a0b9434dc551f75fed849cefe723d1057cfdc57f8943177fb64f404b2bce072dff18d1eaccb4e77d906c8d111d115ee062a21babce219862c318917d33722f262aa2fd3053dcd2aef1358adf3ad39e44bbf77dba250f5eab6e88e8b6040e5e622a04cb6e019d40813b60251965d95474176f90cf3a36227c1409d69aa2a2469e517409928adcefcd1bea01876509558c487da325481f0d59092d44896f01e8fe80fd7000661a1e0bfa3c20fccbc36925ea060857ef25646bcf86a10b74de075473914236fbdf4012cab7a56bd013706bf0f52d99e13f060e330c7779b7f598ee5bc80c20042bf1a7c335609447b581183f79d41362e4c5a0a97836275a74d661e7873e0082fbef199513ca9d4f85f3b4fdc37b73fd189cd0fb33be008e0f8eae39185b708bab05ccabf15c0e81767bdb88aaa3f6c67824245787c4d42f8853963c38e16a4676b8705d42bd1ca15075539056d26f69632f77caacbcbfa9494e9e1b3c1824bdb300f922a1010386f4f6f83a1cac3be8bccc2623f1fed6c73ec831d447c8637102ac14a0851fa844a58f99a0e9e983404abe7211e6a5d0f96776f91475a4a97ed7144cb0af5a6279bbedb96f96a7c98839b2973712f9a4e54abfa49b0d8e1fecf8913305e6eb7e8705212e5c41aa14229efd847b874076b0eab8fc9d016e597d6b3e53a2a799e2efa28fbef44512c38590fe943782937e6995f765f0fd01c3ae911bc13022030074bdb29d938e058614e4724c7f4fd2575a021a052e044f33f8b5eb1382fb5f88d8b6ef871bfb2d2a7fa9ad2165b909260da50ce013944819ba9e0da23dd5e527d84eef7fb30440387c06e807722d8b5bf37a36e46f1521131c2e5741fb604cfa31ec81a338bf5987c34645674243cc455f1f8ffbc41492f6350da31c6775708877b25bab0f29809fe7f27ec48c19e32faadb95cfe8728250d670483a330d2141ce03a2169ec6d5819c015db3cbff9b5d328a88c5d11b00eb474634e18260a2a35e40a793f6c631d7bd5e9635c093624df7dce3805d3ce5be8d3bdc68df9aa7e539690f5d84dc6a14651fb86d87a0bb94f0f291426fc1f269b0880d7578dbf4934f18bcf9f87234a73bd2665054d33020e1045fdee7db0c272736cc691314e4b352629923cced6801447c2a602dcf8aeda5a4d2b79ae30a5b869f4eb318fa1f5192bf5c58a9e4137c0c40fcb3ebefc1e6ba4305c3447ff7521d069bc5279b09d492d04144be9ca715141967a72c7fa1df1eb725295bd4f4f603162e31a42f86acc617136148370c0c086972322182c77b8b56f7509cb474be722d81ed04319cfa4451da42861fc1c6c60aed34679f0c07654b77861316c81e92cd261b94be2e9bbf359100d2981574e007b2e992af4993b451401515d24c1b71d7bfee3acd040cac4886ce76ccc99affbff34a03383c30f0175923ad860e4c00299a24162a739512e2386e1371f4068697cb5a298f4f56187c75424f396cd6f79992d3ca6d3ec89c149046039b936dd09361e6728e345d790a75c5a62f5cbee2f6bd62066d6605a06302c0b45c444d630072c8660ef253e8a1b3cacbb3bd7f7ef8d461581fab4722803acf0f69e517d98709af8cf7483c64d8fb4430bfae74ae13d369a466ec18c1fe7935b3df851d9226f323d8f557219b91f2f05b3fe2121f6951b9a57041a5e9000c4f292bc2fe2a06b0b48a370d203659670231b4ffe90a8767a4f7725e49ab504629f616d9d25d0320a0a346315a81bd11b0c225d5560d29b090a484ed9cafead0e66c0172345ee71470d62f2ca93d04cf01859b5dd7541fd8c268f1977a2ba8329e728e637ea5683f5eb7b1b08b6ab9ebf57e6c2fe1c67fa74a34c1e92eddf42a7dadf165dd8b49b7d4d8df90e1bcd3fc3b57fd61581d12224eacde4c90f3c1b6e3a0e6e46f067ba77fd56e19efebb7f1a51977b1dc4283c92d9b40056894d3aa3d918576d7a418933a2fc4ce5f00f3a0e2703d194fdb13b2e3f6f0d54982bb4fa35c2c5c5500fa2469715fe18e86849e081e8d0afa098c8a8e7c52adc767d5e0cf14a2db1662a32e432e8e12e21ec95fac03e317ac76648de21adf454ed287d8ffeeb92a0af59fcf00ff84eb4df68a1624c831294d65c08efdb76bcfb9b0ca07ec2e7b625476ca8255202990bf0eaf6235b261a6c0e557738ef7ef327262fe6cd07c1882cb67addca46577f45440d60518732fdeebf738bcd749cf8c71c4c2e1fb66e58da5364b7af671c5d2a5c5136ed21189e6dce19ccba47b4860333a701a70fb36054da33e64376dcb561334b526d7f15f8726d9e69af58478d04c587c067e62f81fc49b69649f475de42dfa6bea82789b5a7cd00b489a7860e0097ca21f6479014e01206730d9db6e3749707c7b54af5822cae819184abc133c89344ebc6ae0c456692c8b6620ec991ed6a6db65ef56e5d1d2e255c221a8738bcf3e561a19ba5ce7d1378691d6220f67d446ccf1b3966b7ae690539c5f5a9a2f072b0cde0b79bfa412918cbba6d56a5c3626e389cdbc61109db81245698449adbafb4013ee307df45a9c8cfd09bad073e7f7f6c07531301612e984052a9e056792853e578ecdc2fe64dd7a5a91802bc6a5f63e2dc1e15ece583598e45381dc9d554281c99423b1854c4991fd13772e064616ae650213771e013b8e61e1dab0b4473a3585bd9b1ffedbff9136b8f501a4d78b90c03b122621dfeed1c6652f5fdb456f28664d8de011450c25d4a33608ca6e8ba34f9554b8b6b12c9302c85a130c7b4bcdaf187c1395ba1566827b54aa308645680f89aebb1bd65fc68522dd1c01da964897ebd8ae61e0ff6886e4b7a59505e0e98cbcc5d2031c37d7fa9a9891b19fe372eb17d3187492c2caf6fdcda9b5a9bf04376a6817e28b2ce753a3b181594d373d38b613754b52401ac80eecbe3f882666c69102ff5607a33dfd72be2b050bd85ffe5b234118aae4ca3a00b77765ce4e7bb3c8ebe6973a269c162e021dea546c7963dbe06e2f9fed0649c0212deb94725e08a254849e684752d6a35ee535ac20276850e2601f56d8209224df1721f24c8f9d5bf34623c0281a798c043d86bedc4b41607df32df20a33a25697b2e220f7066bac0626ebe9e563a9f49458ae0f70661f98a38bbca36e72449021b837f4b9f99f3ce8c9105dbd1c030a77223f28875110ede96482462fa5d643d39bdaac9ff961a01d41729d563bd20c995ef5be299832d5669f94ed00cea8276983b266892fecac0d90f79be91b462e1689863559cd1919ded540cf5031fb20d97d79eb6f848708236bcd82c110091f7a55f80cebca575382f976d5877663b53bdd00ceff0248b181c1a8a13c3fea46c8beac9fb8ebd3c41aefe0a3b2a9f945a1336a651d464b447a3749260d40ab49179cca89b868e0e3ae67177cabde88cccc5a27a2f686310a3f0a8a9604f06bf0b77e06e438250c50af9a4b53f1520c6402034ea0459e0e3430b224c301fcf33ccff33ccf6c11b6b56e5b533a52644a32b9f7fadb26764a32c994921cde43e19625380837402f4b482304941b730e220f140fde00b002082caad4a96c93ea3091d15718a3dfa8f04afbd4cf157a96efcbb417b367ac159ed40b8b1eb2e65a4d26384a00005380b0a2f1f6fad120e321dc559cc4a7945468108d1f035145428d5023a2e48ec60524159bce3f4a897bcb69d22f80a0a28dee55ead4f3579a2560f00c0074003945424c73865bf3b9a8974c2638d0003105aa6534beffdd7ae75040079052e8c9eb6c84fcb20c5ec9ffd8c13740010829f0528dbef9544eb497a30420a3389f360b5b1db219fc92c9048d04021051a0a6abf37228934f4fc964f263071a3c3e00128a7b4c73acde96b354964c261a984c7cc7e7007167000414ccd8e697d3d992c9248dc904070e1b38148d33b8047f831d93c9ef28a304b11939cef001002d807c620b17748632bf9cbbbed106104f243b23e4aa8d3cf1151b37d400d209cbb463cd77e66cdb25931f384e706332b901802e8070e278932257c4a7e8d76e229fabcc3b3e1f979a26fa3fd54176a64f69ad4c5c62c1b53cdc9848d5b4d4089dc9fb724a2ec1ad85d1e1fb3c447b2c6166967d97b4ff4ea54aa44a6f0a15ee26be33252e3fa5358e7fdeead1082093d04725991ed292d6af92b85b7329d575b144a944020412958c53a29edf74dccb0b208f30d75ab8d8a84db19303fec10510475c261f5a6a99a4e852232a71a22feb48cf7037238ab935b5fa06d549264b26931f7f832d802c02a161e6357cfebd4f5144e9c963ebc4498ba34ec4efe7f175736cea140482085d936bb8fc3fb273de5106fbe80197c0c68e13d8f01d658cc0860db392c68fc046e9f128b841069043f8695174a61c774a8786c04fb77ee54ceba2e992c9248dcf418e1c678014022596738c07fd1b1c1f68810d1b818d32821b6770095e479fc166f4e09105104224e2920af27e4f3775060122882d45f94f496729bd6ac964a2830768e0013774d001149c6106020944622b47e9ea5514cf954c26931e68f8d8d181138000e28dcdccad702ae8585a01e40fc6ebfc9e453c482fb11faaa42faf69577aae0502481fcc7d8dbdd1f3be295b00c2075e833a75c24a9b992e06207bb8c2a38c8c25d36c5e2593890f40f4509a8ab374bde641f32593c9f7386332c1d1012180e4e1fd16cd8ba296325b008006103c20424bf3ed98a5650f7207367468581b1f006600b18373be3964d8d4cc942e994c5600520746654bdb5319fe323406103a9834bde6fc6ba16dea0dcc003287f26efcf8f519cfe279b4838709768001440eca87511ff23fa8a549079038a494c6bafc782a0f560f7e4c26007003081cf27c7ffd31ce9f87de507eb20f0f9a19ee7237a4b2de06fd24d486b2fb74b6c82036dc69daa2a9be0f59e135fc9f96a382d041ba6ed490b8d0a6365e909ff36930797c5175498cbe8ba1c1116266ff83d29fee19961dd561edafaf9e62862ac8d015995539255519b64fdbac6b75ba6267c046890f06810d298090013d97f2c27ad2ea2f3ec8183e1119465c6b33d43782002206e4c433988cddd1fb5b810d326e4c2637748084a114e5754cf9a52c65974c262060380965ea2e2b1a6e3d8fb423043ffe03931e205ff0d4a88a56862bfb0c3472e480070f1d0ae2057349efa0b46b789728053648706332693f20205cb854c5361d36fcbbb734204306374000b205168068e1516a55e1b1b1cd3e3e60009205198060a141ae006205acd72bf4a608a40a965ac5d21ae1993f20542873b04edf9d7a94d09902dac9f2692aa5362919208048e1aa5c3b1666a5318b5128c562ce3f6b4e9d050a6853ad31f345056ff7097aa9d217a4490b2a7c9c803669a37b8386d3296c026239a46cbc519bb9a501c28464b21c74791495d6ec25701bf7d732eceeaa47095c0eb320a4fe6edc4c124090608a97d2a43dce27cf0e408e806d59577d927f997b23a47bea848ce9f6ef3e51002942f264125f4fa13a850984085c4afd33a74de84c018118c3385975d49fd3ee4107002788218c3467515f5ffb94e3954c2627102318cf5d36551ad34e29c500862988a6a4f3a5466f8f18bfb0dfd4a9e43157caf917c3178d958f570915c3c9de46a1c0469dc04699c04695c04691200200908218bd487a6ef07c499a577d8e20062f4af9fd5d4285cd98f3bb503b3badd8c5a0627649104317b6c6379973d26227cf054af32e64e9305b410e00c00862e0a20a2a06f3dca0728f521a62dca20eaa39b9daa7c6b8e98118b6289b4eabba99540b7438ad3b1a4bb42845e5750755e7769a45c172dfe9bcd8a54db278d52d9767664cf9c7c2b1b8993465f18f1d16c8a7784ca1ac93c65f61f46cffeda75ef2be2b8c5ff367b1b99ad36f45ef419cded02ff39c67c5b14e2e46b7627bf057519875b76041e965ed5581ee5cca9655e6f053a15abc16a164babb1e156e1e536a2ade32b39fc23f21754b5d8e294a37456331737bfe0ef264bc14c5853539c22edb5a9c14e8cfa7bb676f722d1f45b92a658cf371a4e64814675e376bad12d51885c213f931bf6297cf45a0408ac56f1425bae4449f38a498b96d0cf2c4b5eb3a36e22273d99d40bfacd87abbdce79913a7b4639f73fc4edaf326328d1f35f9953c2db3264a952bd8c5e698d6e44c5432e88cb1f5cff818138a559ecd214f8db2f025b6f7a0e331a55cf7d712599cbbab8f16ac425b8973f0b9f84f3b39f752e2d5b4987276ea9cf54ee270ffd7e839944c7325d19aa9d592753187cc4602f5a01add2d8d3acb42a25025743f45cfe3957d44db9d54c7a49e1baf7544dbfda3fa3b6a275f1b511851622c82f1f9f0b09f7a23524598c2565af86e877c3511c96bcf75573125ed29229a37dd71dd4d8bd4f410e59bd418dc624c56a92114f9e8494498d0e9740ae16f10194625a19bff21c449c712aa396e0e919e4194733f9c8d9ffcf68e20d88a9b632ed6e8cf9d4094a66ff5d2bb7e7807108c504169a894a357eefc01b5d49afb9cb7a375fc50fa5062f0a153615310ca3f4511ee21cdb09251f4c9b74aeac1b658d149e4e99c3c0fe96c2e1964edee83f0d08572db60a66fe7be83db39648c0565a6ad1dd60f352a66f3fa57eb508e49ea0593a6b5493a5ca266d7c4ea7c3f8752c58529f313722b2307ad64a4060f525ffb38a85f9ea2589fd07938bc3bb661b12ef6f537282673ec145d6b67bac194f73b082b8bf70ab6a1649e1a66a37f69131b92395de68ddd4e29be062c37ffe7c28e98f7d4a0680aa64bd44b07d380484b8b96b994d02534a0ced57c3d78ac8b9fc10fa5f4732e744ea21932256cefb38c6b4a5919be7ce23c7bae91e593c1d5936f1375ae278f818d5632b67fdd4b5bc4906aaa66eebeb3d386a1edf9f71c7637c71c3020764d562aebaa8e55c96492634719938908c4f8c2bb595c46c66fae3887c0460b6c8c600567a0e1cf811c67a0e1ef934913c4f0c2fd7a22841a4bf3fb75214709c4e0c20ac4d8423906557731ada8c8980ec4d0422763e912965563be9492c9a4076264410c2ca0644c9f347d888b2cc5b882f13b2247b377b7e9b4400c2ba43f7774664cb194c7552898cbdfabe9b4d95a2a34ee1fc2f37f85a5398513882105364be76290417d864b0c28bc6be6a9b76d334853c9641284207c0f347cf0d0817ef0032c88f184a2a6eca994a2096d1aada379070b26932588e10445455e478b968f314df8844ab19452ccb93f87838c1b00e882184c70ab348bcc9c638ccd4b2693d7e165e0781d1e821d27984c7ce480078f9206f8e00648a0d8a80ebc8e33d020230237ce106309a70bae1fd495a753ab1292499ba7d45732dcf232c448c2df6649776ad3119ddb808d17888184af4de7ba7ed6c6fe08beb85c8bbe099d6263844453ab2e499116d3224611f63cf73a1ab48a552c0611127165ba726d4ce5611a9021033202308c3b7c52e2b677bb43a92300c2e082a7c8cbed9c7a0fc6235e226d6c83ff7b377c0400186daadce7dfedc5ceff4211a537e9b427362bef8b2a69af3c32dfda7f502f7add6bf320cb3ae99a17bd9eb2fca0f1622bde859fb3e5c7da24535c541726ad4c19ff4f2eba14637d90a1947bf8e0e2dff78c9a553b74776ea1084fdad98397883f6db16eb0319d99daddcf5a1864f090139f9aa34b5aa47327cd62e159144d6a29cb1f547fea64b175fc780559c974d86251a785eba766df931758147abbc4d3b8a991960902f08ab4569ae95db8e07b72459bf9d385bb78de792beab6585bb2e465ce678577e24584c69c73f85751a874bb14d3b795a30abe4eba29ff2a25359e0a37cea57055e92f99a8c8cb5230eb0ca5d943a738c7538d9129adddc7147b9da5cd9cb5d4525d0a5bdb738e889e5169264563add5735a326d6914e86779b6d2a584aa551426f38d7a32eb7838148bed6ae7509f72c6a060dcc73f5392991acb4ff8292f58daf92474123d61ef6d7b727bed387722db1c6b69e9f4ca9ce072df9858dd5cc7dc2652aa7474f75577f63581ed9ed648fd5cbe66e2324f6b29a86f0ed330c15cc86efa58eafb5f22a92745fc96b0e4b725d27223db74528d365722773319973e63332d94d043c6e9ffe8a0b23f09742e9941d6c4eb8c85810048c2d13dfbced6e134859128e5e552c9afa8585bc964b2a38c1cff832b100048a81f93e6b022a6c5830178446aba4effb46638a5e4084b95c7f4bd9e3765de087c5d6e3699e7a0839a11a5dce964920d3e3ae345ac29776ccfa5b44eaa8af05b45659936a5fb3f89387f3c534e082d612722f091a331c813ba3c3787d85290917d9d6ac46a0ce1ed473bedffbf2174853857dcb83f1313025de1a9ed3d779b3c88469b79b7894d392b278845e6f68810fa6bd381d0aee45db52c8b5002224fb21bc2c4e7f63f683957292ccf4b34f3439f1b77bc4d4c99de07f3b74ea7b751755be183b656eaf9f54f995d214001d803274cb67f4ab193b2aec40619377cc7ffe841073a007a28c7395d26429f6697f2f049515d3166ce9acce3c1d817ad54dd9745c5ef80705399153389d5dd0e59a9461342763476ea906c9e3ced13e24b87e8a09956ac12db398bce8153199412ffa1d308e5c086c9de4a7944c76ee3f078c62cbba0498a090eabbe781ef194528fdea07508539e97a386d70d6fb5b8ea66e950691b8c9f15eb5c536ad30c1b4aab956e9fb239056f0d7b474bb9c6ef3efb86838c00a8a1124a335a8fef7bfd69e062b646bf5911f1d1248ecc15d3bbb75c892ccb6b83303ba131a30625581395468b14a563c339a83109f4b6652d05753dd297c4e5c1948a8a5a31873e1286c80d22e64efd2e874415324f4763b9e6fd11b827df7fb3dc6944e40846442ea810b2d243dc0857e44da613fbd93d8c50d47dd2f77ab9373c34ce5804221ac284dc18f4674c0d456429bc77bcb21391724d2e1f5795a13f88a892f20a3a5399071b0f5185acfd5e6a9053311cd430c43f16effc2a2d43db42fc5a26966c3d84c5871009d73ce96ada493d3888826e51f98486ec2a09e2a869a56b4509ad200b8431780c6fca3d3ef8803007b35cb97fad42d67f603b2c674df5dad255c964e2877e4bc6b6d7a0b6d6ebd0418d3e1c62b53fccf2d279928c1b8f860ede410d3efc1dff3ee755cd49ab92c904471a3d7ef878b42303377a7c082613004ca1c61e789341a920737cf1d895e058c16492c3461a3b9e0337d2e841c68e2f21238d1dcf81c984ad50430fe6c78efb713a2593c90f6ae4a1061e5cd39a32161b32ef5c3299a4efa1011b19b86143a8710783beeabda4b26bd22a994c706ce0c68d1fd4b083df9da9c258124debc2a0461daa509ffec9fa3e5fb40447096c6cc00619375650830e676d9bcc54faa7f3cf01e9f1d3f7540e263a480e8618ab54415c6b3e95779cc00619377a50230e35e060821a6fa8d45a87da984ff6e9a0861bf0b8b95d61ff3624f3a77b6b95fcde908e1a6c3885a7fc6d99f52ae521b8010028d458c317b2ccc2c35e92290740116aa8c13475196e5ddfb4657cd44843e1c19387ca8b562234a494c96a2df1c94246cf80ab67fd9c43c80e5af3821a6630e9cde1692b3c6bd6121d3a38478e921f67bca31a65489f101963cc39e7f87f630435c890e865c928236a2ac663b8342dbb7473a5129f180ead1313eebbb3a9fcb18311b7400535c2a0a8cf71d3f7e03199e068818d11dc984c5050030c758ca7f2674b9ce7d10335be80c886c768d2f2e7b75ed8ceb73763b61be15f8d2e242e6b37a2eacdd3e6c2c1b62af372cad520ddc2493ea7201f4ae4f16347192cb8c1e3c78e10dcb0400d2de49b638ab99f1e333b5b230bc79c316e2ebd18514d95d4c042e3e9f347c6fa33c7cb15f4a0fe737d36fb6596063200410d2be023bc4c787e8f76a1010e094440061fa8510516d4a0428d29c8a086146a44a106146a3cc102359c60c58add5451edb24d3ecef081811a4da8c1841a4ba8a184f2289377d93209757b8d24b09ee6b387dd58239390f08e6f6ff4ec13a34c1cd438c29a2ccfa6b76a6d8c1a01a54bc7e9fbd16442a608668b5b635fb1f172578308e686be8f1ed466c77603916114ad84e950a7e37b7a8788303abb38ba211aa7d2498748302aad14da35676fa70e3052263ee57c0b9bde73bff8377c8c1934730ab79621e20bbf743c07953b89f4225533cff019b459b07951ea67bf5a315319643410d9c517de727b1c1574ca952ed0d6723298caf6fea65c947a37bcff8d09693f2eb81671b795ef5b643b9e47e43393d86dd1a5b439cf44bfee5a8b37fd64893d8f169555925921d2643d26328b72fbbddce90aa63e25220b4ba851f51075b2538c482c446021f28abf35586eb874fd690582882b9af9a026ad4b98109b482bf2204f8f690f6d39342593092b4cf12a232264e59441256d1059859f551ae6548576ca4b26131c2dc821a28aa4e5adef57c7c65281788eae26e782072bd941041599e676cc99da257b2d994c7cf09083c829d478b1b238dac2c88c04320e22a660339f5a7e52dac4eb15102905ff95cf2d64fc0b0ba640841466a59249ae5c781d2510888c02cd51a39e504f42c62a0a63aa0dea1b3ca8d0692858d36ca364b86eb41c268880e23a69de754165c4fd89e5829d924946df67cb12443c61b2b51c2b15b4d5e63be1c8d89bf2d0e963989120c209f355eaf3d1a5fea317d9c49a6a4d48eb98db31543299941c2310d144e254a55097f2aba22a994c26130f8864c22ab1f6f41d32c9cf0f4430f17b366fb5bb74997b914ba05bff2fc60efdd10b442c2152897d4eb66a121fed79ddc005229438296fcf5b236a4106954c26229338b768dacd9774d0750b44247149f35e0f994fe8b5e4f01d2c1289efc32a481f8940e294cfb865a65378ca1079c45e4af546cb39cad1835f070c441c918c79de4697c9f3f48a3442590d99d2e99c951e3342fbf97c2a05d3cbd880c8224cafe11d43f6efba3a0511451894b6e98d501d63f0a0209288e496a9b86d9f72b7f70111445c1ff6b23a6282c821ec183468d974714396440c91341d4feb50cf14f10665f8f0824821f49472f44f79a366372284283666fcd716d11bf320cc9a3ce91ce4426637bf202288b46344b99ccedf9c0fc417a466fed31e358e9c0b2280407dc7a48aca6739adc81f505157723f7818b11b1f44fc90a9a0fcf2e510bad603800d227d405f4ef5f57b6da7cd0fd8f0808d0ed8e0808d0dd8b081081f1ecb3aa3c662d04fa63d142e4fe33ae86ee6f5806650a77f55a4e818ccc39a45c7649fa6783a45470f16d810c1c3db2995ce8ff7f11ebd43996c2e53de67cbfd11b1032263953e7997399afa861444ea6027cd5342e64f074fc577ef94a47330d36a2ea564a8f00dca2115347cecdacc18213b43240ebe498f1d1a3d3cd948040e5e0e4fe2b3c68e9f739137d8219ec43bd885119e121c3f7e88b88100226de04e663d53a4bd897687081b3ab5aeb35d3add67700f174c266488aca16cb32ba347450dc638e65d57f5daa994864283c8195820620691329440840c2263d8f2f7a512d2a3777d44c480a71f5d3b5ae4c97c110943b9fcf793d0f090a201c35a295483f0a02296e204912f382e1e4befa53d697bc1b40ba2a626fae2979a20d205bdee3b6dd8ce29a971a1d8a247d389f5d1735182c816ca0a3266911f22630644b4b0851362bbf922e5532593898f1f2a10c9422947b3b5a58f9f9240040b65856ccd985533c70d81c815dca0a5ddd50744ace0e5a44773a8f0be3712a98225b22e5736730b3a05082254e83f9c67ddb09762b492c944870eced101912960dd5f39cc326d64b644440aa7a0bae7c972eea5f840c37394fc288307689891238d1e3f44a290bce81b25a745750c4b26134d8840e1147a19644c9ae9474c883c01137f56763953767e4b26137f1dcd9f107102fe621ecaeef2557c2593491312a73dfebb683e199b92c96410224c307a9e861babb0ea4ec964e20891256ccaf27da97ca336064b26931bec2823078e34d064b2081125b0597d9fb93a5cc52d61c18e134c266d4619371049025e392f85eff6d4719582081292b953589633b5d9d0a1833760e3062a03004f1039022a4f46e626b9643239828811da505315716f22fc2e994c8020520473ca97f73adc35e59313448870c878d1c2ae2f8cfec3f8544e55749937990be3531f3373f4515ddfb210120cf3c88a37f75d554f438051922d4a290bf5f7ff954c263f7a708f5fa4a6724a19447b16cf0921c417dfa6cb4ed2674f86b517faced58efc4b1042785187f6a9bc54a697da5de82217b8c8528aa57bf9e35b5c7d10728bfe92074db2a1f2de4c23c416cdb7c64ca372ec88580b54b3c7678c7e586e9f10428b6c73bcfb51493ceaa50821b3089145c5e2dc2b42e4b55568ec2593c986c0a2bca2425cf1a824a752c55ef64c2af19121ad40cd9dce7149ec997676a0a18210566079acf3343377b74641c82ab4ec3c1a72c2e75a2641882aca7a5a56365c90499f030421a9084145c8291ad552ea75327797ba6432d94088298a22b25be62d2a58a6819052e82f667933a5983a1c0821c595376c46a7fdfa797410328a3f7eb79f285dbd297546882850d5d2d2747acd42470809456b1d84254d7e7e1f0a018575c9527c8d234fcfe91388929b333a89f6a4b3104f24ebfaae4ae8d81c5e891965b08f904e544a5ef673d6e4ec82460827d40ff37d6d1a4fd3691327692f9b4fc698b436a5095d3b3e4b3cb3c5989309b398e5e77426c7731d3c3c1082893c850c56bd95bb395b2ee1c9be705fbbb6292d4008b1c426b5dd2c9587f01c2b914004661052895f73e730a2c448b1fb063bcae0410825d2db79439f860a5e59c824122772e36ae5d52c94049a9278ab4f112743543299e090800d4c346c281a36148d08882024129040258da1928aa1434ea66432f91d2a08798409421c512b086984755b32a38f78564c0a4218715e0c6117339796ee253b4e3099ece0b1883e3deb78278b0fbd8728c217a5ceb6df835e334b70f8f07146482278a41d21d8c0062610820808841c224719673420c410659c918105841482012184f091c6e7c0012183e041196764a0c7e7a0070f179cc0012182b8c10d988c098404c207207c3420e40f0908f1430e0584f4a100217c4040c81e728078e8680384e861002179f0f1651c20040f39ca380301217750bbf4b287ccfcf4dc0edb2725e32cbfe5f70ea94319d3a8a456dff5827a630621744829253a7fa97d48cd97241e3c7aa0a003217348bf5387ee3b8d3572c9c18ba93468bbb174158e43b9ce3cee863ba14bf340081c4aae3e2fd7ea496be90d075997f7e427d74a69371ce572fa88b8cebdb70d969c7153b93287ff0e1b9253a7458ef6974fafc153bafe5da96aff4535a0f3a2313bc6dcd4c13474c1d54eae423494b35487e59eda877686ccde3fc4d3c8ce75093143481942c82083903174881842c21002061a847c018d102f5ce9db634ea2554b7e2408e98256e726c3ed9a758ab860cdc9a4df933c7d4add82a6df363ec3b65ba685b7efe347645c8fc58464814ba795e39db6e8a40bc1423a5f7c86fcb78b975730731e9df479be53a2b2825666e93e4dee05a12a642a7c90f9fb976a562aa047a64e729f94856a86103285c4ae5568ee974bfa9742694149ada0564186521492b739e7fa1bbf0dd5082150b843b48c28e59f3b694c0879c24907f9eb7fe36bda7342e29fad46e7dea092de848206a563071dda3d258409969ade933978a84ae225842861d994d28387b87caffe202409a720faad63194cc81212be4d6d3a5c8472bff508ba65d1f462f351f563042c748eeb26273200908490226c492715f2d553871022182c7e86861f9d4aec6198b397faa06229d789c240f9b505757571d7d44980044353636a693a97f29281010418657aca8d991762c3fd05905f7c7283dcd8668d9fd717a7d638da2a56393fc905905e5c39b46c52f5b8729717df6aeacba6499f6a4cc964b202905ddc2bda4b75dc0cca4e01882e1063d2f7d3788551cd14407271a79697cdbea5d47aa400820b535ca50e212da6f516e658a534bd9eebbaa96432d1e13b7680d8a2364f73aa4197ca3904811c406a9138bdb7186dc336c62593490e3680d0a266514064d17bcd6b78521f446625938919e805bee357c00490583ca6ec2db66a5634d883478edf51868e1d65e018a30a5c1c75d9dd23c1185428d568d98688d735ad04634ce14be92d87dc0bd79ac16f8331a4b00769672d163fc6f42593c9648263053318230a081984c8a52bf1b2b91b1f18030a633c01d94a0b6777b152d09da06705a539ea95474f19a309c71c374f9b56161dcfc69f91061937fe063b5805899f0493c90dc66042df2696743535975ec658c279cdcdbfa3974a7b09e21d7cc6184a18230963204106631ca1c730c21845b0c018445801c9304884712c9df452c9cfbd7b6a8003fe88cf58411a3f823f9004e3cf59b56db4c9db1cd3f81194f86010d84802093014d1e1840925f53ef83e20f905236b2eea5ec85eabab0524701e264883c41724bd20e1051a24bb38a9aced286a4693ddba306f50512fe47fcef6e4224f2a6a8af929b85e1617ad5c74d16a2ff283e71666e6d7b8f89b72fda30c33cc20c18d1f6894200324b6409fd2b14d67a39a6a383c90811b3820a94525d57d94764af263e301092d2c9df96a19d673c555c24d320b54a610fe779764f89c1124b2d04feffec9113a739c6df4f812f4834b60e346061641120bf5e35d9638bf5031860416df46ddf020ef22548306c92bd224df6d2bf69cd25dc1e6fe6c6adb90b4c298433ed3c9db2445d6e377ecf841c28a527ed678f93e513b954c263978fcc8710392559c4aa9ea1ce35e1e0d5551ca59f58c5db2bc638924157bd2d26cb172faca328dcfc10e1254144be56d7968afda52c964c224a73069f7ea38528390a9db80c41465d399e9b527eca3a60624a540851b5d999385529d93908255d12a6263fee539925178953f598abb55429e24a248a4e77877d0fac92f925094f2f2498f1664ff4424a0d02b654b319f32a16c924fdc1fbb4e9b8c7373b76432f1442b56d5b16b5a3d6525930949274ca7f268f3d6cc5e9270c2b84d6f555ad4bc0b906c02d5fc4b77a531636bc96442a289139064c2d068a2699f4cc993954c263c7efc0e2c4082894cfc29153b56884f6fc964720955cf941ca5ed6a6d9358624df7df14f3aec1e692c9e4042495487595ae98103a3f09259ecd32eee1a6bbc2280424936093997c6cb30a5e35892432659d3993abcc88952412e53f79ab1f22741a12ad7dbb27652b17e42e994c481e81c894546638cdd42f974c2632207144312bb3a73fbb8e9f4a269346241797a36ad4aa9e841189fbcfa7a5296b4d26248b7084ccd226c4a2c92e79ec8044116b0ccac7aab47e8673f8e0922649c4fbde6349c9331d2f593299f828c306248828fb62a95d8b9f82e64a2693c423c7ebe0d123070e924314324ce7e83ce6abb30470d8a11101124c26432031c41b5f63f852c1bcd27b0249215016377e32f17440092484302525eb34a9d31ad7b40492417465a5f7da3f25397cb08f0c00e008248228ad57d3d666874012882ee389ce96fcc34313020920ee94175329f9ff50f0309f76b3e289520a02891f3219c542f38fe8701910d858c18d0edcf001491f48f8f006bddb9f6b44ada994b480640fa9a0c92e9becac1f2be761023378f4f0c0094070430593c90d1f90e861cba5a162ab54529a21c9437762be45cfc906170c2478408c8ef1b154b0dc5d91dce168316818a574d6f4272f90d8612b1d2d651c25b39fe1e8800d326efcd081060e48ea60eccbe94ba3b86c8549e8506719bd8d4b2ab58f48e6608a696e4ac98da7b84a2002378a440ec8cdb9d16b31dae7bf6332312471c8d45eae8fb9847e5c400287fcde84f6fec81853995e056fb0a409fdb30dbba9b51bceda1954f024f2b66e1b18316ef14173cc27231b4ad14ef1a2eaefef39cc205943716954d2d215396b9690a8c1af0a5a2a058fbb9e4b839e63ca2bbfb3395c5432993c621d6798f12b204183490519a5f45edc139613909cc11c3f994ee235253858406286ffc54c878c3d21554dfc3a1049198e172b3c7cc98c977b32141a5412af7e223be779fc2001c918b08f99d4e6e27bdc9cc78e109088e11c9b49e98a272c6ab4c40783a0c4079794c006192a20094323c3a636f59e3a32964c263d78df51c6a31dbc830de400f18f15f4e0400a48c0d0664b53d531cfccd5921f883140f285fe439aea0fefe30ed671460e10dc40ef3c36f0cec30493c98d27f1425293af25511b2f32a90b87f28e3bffd28aa1539223c78e94c30c1fcc831c3978fcb00009171ccf4a7759bc37a5bd05b45eac38a3d35ae84b8d7a8b4174a56db350865731b17f2546af58a82cebaf734e6a5ece15501567b73529adf0058fc14be759854d9d5cbc0c51217e2a24961b5af182ecf40d7abc19132099829ecfc52c877ad1ca934881240aa94b315fb2bc96e460c1771a5c82c9e447193bcad881c66462c69b410285abe2474dd408253f46f2044cc5b59c35d77c89de095dcaf73b2a0831f37213f2cf994f964ecad3b84c3077c762bf6c4f8474095efecf91d51c15bd128a4fca673dba89c993c09d9c7e141555731709124ef23584dce4b95d12488e90ba7ca9c6924d358b0d244638678f264527b7ed8b8bb005ad51992d3794e9ac818408976bcc1c459c4a339e6128a6c37c89ba386e2a348c08c3360f8ff91ad4150cc40955f263a9293b47c208306e3153d5bb3bb75729994c728cfcc2ce362a3aec7eb83c4b2693188cf8424b36574ab3ea6a5e30d20b534e6325c37cb5de72c1082f0c6ee565b5a36465057718d9c51e474efb37eb747cc4614417c6bfa5c6ca66c964d2033623470e1ee9c77fc00d23b930ca89b913ffe9aed57f0fb4610417e58fe377512bccc47a0b74ce992efdddf5b0d822f364723296069d2e538be46f9f1232cab4484779ed8a1b65fee72cca61de4fb36abd3f1c9185db2694e51efb8d3936120b63cc7732dcc6e4a1649230028bf329f94d5adddaaf8463e41506b9e419fa63f26e7b60c415c5e917ddf227573f34996060a4157db42053f0f6f1d45f4758e15ecaab319689030437be8c1e644c260060c2c82abc32b99fd329debaac8a928a3f7196ffdfeb2c994c5430928aadf394a7e84d42fb23a838947a6986f12862f653243b596c3e0b5a49e898a23695eed733c67edfa5d0df4685dcdff6141937d2f811e860c48304384648a1b6e5eb0c9e92fee6a3e835b534b8487105365a60a3c407836032228af4f9a70a999e83c7c3c70e1e1bf0c0086c80e086063850821b698c8422fd50e149fb0714662e35e3b9724a7a42bb914f9cd3b67f98d50b1e10463c81927572e2af43ad8d84914e60d96e64b60cfa474b9c28d6e36a88974736c1a8f3fc9b2de8f07eeac28826d42a21d48956d17fe648266c11cbc92ecc4aa78989ff4c27b1fa1462cf62c1ffe00e8c5c222d221acd5e2cc97f9640a75e1331cb1f5dde4a943bdb6fbe0c9af2895e18a10432cca60c95d74b2e93c6c824de1857649b7fe8ea392209a46a0795e72d5c35a6072391c03fccdea75c37e2cd1b3c1881045b979fe99d3bb888366e8c3ce25c7937ba555e7e4a3b82cd9829d6e6f35117d94823386562ae7ec6114618644dec2eaefa4e1e821bbc0926131f3718598451b3eb686d9c7aaf4b2613408c2882d194bd645dd2eeadea40ef39cef0218891445cdf15de9bd3268c20624dd22b670ce6a29d1ec2f568156bfe2b8c1802edbc5fa9e4c80c62d5a1430b23854094da7811d155dbb1114608c146bbec4f2d257b3f00a630328894881e35d557713f8784114194ccdddd52beb6684b890a343012883328d1a6b144bf3b74c20820fe11dff6a59794ca8ffcc1b4ee0f276bf733233fd82194c7cb119be1b47db8757f2e55df78de201f6a15a931cc69768aed410b319bdb389ae36206ef984c70f0487a308379b80e1554965d4b7cc062240fa67041671b714bb93c7840a69431b3bceeb628954c46eea067fe898ce2e322c40d4c61c40eb7cf59f42deddf395e87ac92c7a8fb252fb9964c263dd2e8f1c3072374684ec4fa83e68c9ea6643291c4c81cb82c37ad25373389931cda945b51f13c870900461889c3657d991f9fc42c653820b4842e71b527f3632593c9c81bd6b8d6d3da1a327e8e1246dc80fec5ded34a223f05b5015317fb216310233d4d851136d4b9aaf1d6b2eeeecf8491359455f5bcd7cd742d583299f890808d08d8c0218108d848a3078e16dcb881030d923d8ca8e1cae7235f34a979d96928834e6d391b53f23d303082864acfd7a47a550a152b994c7cfceb68268307dc6332b9c0c819d87c976a7e633c3ffd8819de74afa1524a4a687ca40ca9109963e560c274ca47c860fae668ee757ae39e23631811c3481846c0d0235f18f1c248170e424bb6077d16dd4f2569f480478f33021085112e682576e6d51d1b3653826332c9e1ce93098e1f65700f327e31b285b49cfd678ecbd1b62d994c70987187112d8c6461040b688c5ce1a4b7d28c85bf19cf5ac1ca31fddca81e934bab6049b1286e2aeed154a8803221c49e459d2d6d995146890f0aece0073f00c1c8143231efb933f4fec7b419397ea051823322852a661aa5e2ccdeae9128601fc53e946b8c6d110a86784e61a3b7d9c3f504343f0637df242c98e88494eacda95dd31869426a1654a5cf65f1428809e6943a7f0c5de9ddf5124ed25f741e0f2a574a2a6124095509cd15664468ba70072348e87f2cc7378f71b4ae621839c27a397fc5d1a64da66504acc4e7e8569327fa1f2982e9c38be5d49c9d0b8d1021d550f97dffc4da66189f874d9b6731a9a0ad30cc0f2b1ff4a8aecf6a30ee0e5f31c520b2741a18991c1d2d78d27e615a7afb9fbda0de2a79a8e18be67cc5a37f0c1f7b31d14063472f8cf2e9c3afa3872a9d92491adc830c1b363c0436fe3d70830d3578919689b3eed241e794964c26386ebc8ee631d4d8c5a22e5a69116b29378b460d5d744a4bcd8996ce994b0a357281c8a84199bef8f4d12f994c70d1a9dded58df68ab7a0bad2c484b1d45597a6c51a3166696adf466da82f6841ab430c71447e9bf91af904b261330d498851f457a6efeaf7f0e66e0c60e34ac50431655ce23cdac9362e166914199f08eb6d7c3025d99b488d395c406f92bce9a4f07ad18e37e0ab9029d53a8aa98c2f5ebd98ad73fb3372e759049861569ee58698b514f8bb244c7193556a1055d1e37c75cf3e755c1d5796fe546112dea5414277bb443a71e71362adc9493a5ec8fe5253f454907a9ee39dec9d1d914ac0665567a84883db914861419f25abead364a0a2b646a2feffc12ed8c42f535b3bed5746b4a51a4d931e3252f21dbcc503097deb27267ee4f1a50dc61844c9a2cc6341af389356532b1fe309672e889c27dcce1229bd22fec449a7b454cd39cd862797bc6ec06add984a7e13dfeaad304574ac8dd512a9940f5f9c7ac22d2dcae92c90413e70d31a1aa427a56d7a3c6256c7d8d5316475e88a56432c161460d4b9ca60e8f76b00ed6808d1b94e16300bc68753dd9eb85feb67117afa5942e3637623ba48b348cea385d0b6b79cd4517a4c7b831d596a7071709fd31a6163334ed798b8250217bec427334d78301d8a29cba2e5774bc16492d99ff5d399a32430b83c94e558ffa2b6e9985b71fe3c6e7dae6a01a802cf0a0c2e5585ace96552cb23af97bb7ba13b6616100b0c8342d9db4b06caaf70c06f08a764ba6b44a371355b9824f4bcb99298bd9c85506d08a45a9ab12317dfaf3c38ac4c459c694dd6c83aac7005651caa06abd4b54052363dcc5666b8490a56275712d31dfa032e573a457810e06800a65d32fefafa728fb65b95c67078b650f06600ad4a7a5e73856713e278d1f010e06508abac24f77bea7cb34499192b1d2b48b595d4ca9151d031885965a3be575c6a4b4a248f68d88173d6186c28a2d2528cea2728cdea139bb5d3e7110ed7945a79ccb79fd407c8619391880272e9d4d5f42c4e9534a9dd8f46b35a736f1c94f9cf8746ac709f9264e71c63c9f8a9fd335c199efc6efef15bb33c1bb48bb8dd953a619139aeda66e3995cade4bd459298dcc312e47d31229f9578da5612183a912e6a8d97d6bd4e7fd1225ce9349e5cb7695c49726f1457dcbcaac31c92d49a23ccb532a53b44e971489c553caa5f855e709129f0ed2d4f27c9f283da2ce2f96db5a6bcfe4882c6cea9e49194f428d504b97f2a0499bb7881166d7556e0dbffe418b40576edbb88a315790225cf71271b1fba6d289e837cdd2e991d12223a250a74226a56494490fd185cebcdc972733c710288d33215a7314310b815c72d16c1e21eabc39fec9cdaac54178794fb67d552e888258cdca638cc143a703a1c76ca24ef826551b208c77d7a43ef67fd03b06a1de7250495ade0f858d352a97d587d75b933c8fa78259cf873d698ae7532fe7ff1e10192e99acae18c4ae07fe3ba5b3cf4c79cfc39699f29527f1194678a85a7db7fd84524bdf61d7eb3cadea26dba16bb9fc6925cf2b5b8744755ccc3145f7553a689fe22521f45345e7e0763cd39dcfe496470ea82d0bf263124f1b138763ca682aad57ed0a07cc8258f85b8af0f00ddca58ddd1ef2213770aba3b4c45432d7da708a56bc0dcb756371366c97f5ea4234475f83f9c4984a224e966ad0733a0d963e67bb4fc3713284ee4c493d080d7586cc39e3b4f6f6339473f6d30fc23dc89019ec9c3cf7d7763fa8cb70f5e80ad579d9e36438c698afbd1cd3b131f0497e85cdfade292a064dc6ff8259eadbc3e0854b9daa74b89439604073103ab6855e8c7ec114f3fff3492fac355a5dbbe9026b9fd546e74249b97b4e4278120d6ee1a876e2ad31664f6bc14e42889b5958092f0b9becf65e9a8e9ab07010ee95ae41c9946257c8ba6389a57e3a252b949e36f9cfeccd5650153eebab244d4f8592a6f4a55b9fc2254bec6b5cfb432405c48cd2415e639cdb51487ea99c6356511966281ccf84c9ccf60965c51c537a693a4ddb09c714a7fbd4fb2913bb09069d29e3a69009a87996ca9669afb484b229192ef9c650f2290171e2a92a9e0c9ab1247c6e6a3bf574d86c41425283daa062e6c37f042d86d01657ad37af36c222d38753adafcc5311b0ccd197346f6dd20088605a5cb51ffd3072b9d296cbcce3f5c2e0c6fc47dafb7ee9c1d072e4947ec67abb81917b2e8ba33a67d3f62ff4bcc9e5ec63ca3afbc2302fe3a79d5b94db0b33e8d2a16764d014e505f26563ba9e7bfc8777c175e9dc27eeb2fcc3ba50dcd2c958ecde063917a9bc39081551a5a9312e9c4bebdf6472492b7c8b6444c57d34b7ad14db628fbf9a5df2cab2a916551699e1b3440bec9386ecb1d839fa2cb24cbacf54ec7f8e6491ca974ce7d04d9ba3589cd97ce3a8fcab1082451fbf643c9973eeaf5f510a993a6a595764256a6be63b8c655bb157be322f15d9522e2bce947917a6fb36c5ec2a4a96f7299b684d6a5955143cf526d98ca7beb2a9b054fb4ba86a51b186be454f0fd95f3a45bf7d59679f54fd37053efebb9664f62f7929bc8cb1721afd3e22440a43876be5e8286c9d8ba27257c65c8be2564d3acfa1b864dd5e67150028d08b95559fd9bd5805f089946c3717a51f3dbd2a004f384246dd4e762211710f9abad333cb092b73a5cd5756587613a9e95e5578aa978f26d28c9e529477f65066c20ce282bfa99838d73c8831afbc9ad14b7cbe1f3c26995aa2ec11fd95d274b7d24aaca147e894a5d34f89127bd0b01daa954f972661eaca660b113ada4b4251c14d9bcabf5b3a12e8dbd353e9fe965a489c4deeabbe4fc8bc9e47209492794ba8dc41aac711e8b2947e948ac9cb9c4674417969876fb6090f231a0b167ff36ad2a93a8b28a736f173f924e3491166b43cf7561e74f6139190cd8a232bff7a8f8846dee25be6f4f9fd1046d15e7974a7b3d80dd1a81c56e9ade6935e085faee46c724d737142a42cbf6f5a9059371a0497d7f26eb6a01f468270d692784bf6621b0ac4ed398f69d77cba8200517cb553ba496d5bfd876be4a8a6a05521c37e3857d2cd1a2e572adc874f868e05b19df5b27ca8c28a909693c814a37bd8b4a9cca0533ddc5622da2adbfa67320f57c66497df74ad8e8987422c67f1ce254606f30e8b5f079d435a1cd1a51dcce66e429e75c836a920659385cc1d1daccd7e16d43b4e757328da674cd52aa74c93c34167e8d806d38d57c6c1a064f0de13f2b2a6120ebab6acadc6dc9f93de60b8589add2be9a0f36e382b8758b4b112ebdbd0c9d9b051d7e2579c0dcbeba5bd135ac3251be349a7651821357cab298ad59d86c2ef5f9039a64fb568b02a6e7b4cb39aea7306d54ac8f5ca8d194cb1e389f30d3a8969cac0ac8d8a467fd121346438ed7e098fb3d6b13363408fc70d2a5f8c18cc31fb3574731c7d0ac36325277762348a1e0c889bd0e96fe35ee95fc873a578c2fcd63ee485e426d5f1830959f1ee42f9ceb2cf9e5abd9b0b57d9c9c889bd477b0ba7d393de5a4a65d65ad8e7b6675ebc8256b370d4f11c1debb2a2070bf599ad6abe79b79c2bdc96664e29255a2119b62ae9ef7c1a935885f53e77349983a8954885f2bee8becffb9c313885b2dca814ae548f67500a7b25d1f19bc3578b1805b46b4e83c6e91c11a1e08db2f11454c8584114c0131211d2fd736cf2f350004e50fc2d6c2e55eb19430134e1e01f738ed17a3f9a04c084b2cc44951add987d012c0195d16b3d7b595f1780120e42a84f9f3d4aa62e8024581544ecc91efdd0058004f367abfc9fb0d9b0008e906533b51ea1d53f1680114a6bbd593edba77c055084845608d9ff24c7dd1300118c1e357fc8cbe49bbd61a0d664bc6c96ad7b3d6194720cc22c6ecba6ce05e3ec39ceff860dffe701e37c5d6d5b96498ce67e71b8bc646ea93bf63b5f98328a4a5d2a658a97eb05aa33a816d3589e29c78b3c6c34152baed6566e177e6f8f54f7795deb7461b053ea64a47765ea72916cafec51bb33c91e17f5ff68abac96b3e56f9150419c88d2e176775b705932efd5b5b8bc63188b9edb644b0b3699f89c35a64c576771c5acd93e8ef2d75416b96cf9297111fb9d58a4457a460f2a276139b0d84fd3d4e906d33f5fa1e5a0543fbfe68ea7b9c23739f32754f011a5b5e2921a3fc35d27bdd358f1a92ea13b87d5968dade2bb1bed3519eea4c65471a564953a8d968ab6e22d85529e2f7f860ab46eac07bdcb1f9f9d22bd3152477e73079599a20faa495cc78c0da752685e3ae9bddaa4b24e8aa299bc2f6dd274e7a3e03c5355b65b5b131245579943a86bb118a25014ce5f63d0695058f12ee7cce1733cfc894aa751c1a205d96a3d51baad2832c4575ced0426cbc3ff7a348e0e274ceb9de3c7edac7d36616fd8f4e2a62dcdd4c4f1e4bfef4fa90f329930cba56afe249e39a660c2cc49c89c26f6941ccb25febe4ea9d1e462f48a257a1df11ad433898f954a383b97bdaa2a94a8c49a9cde9cf3e7691258296142c54d41cc2489d26dce94ccfaee5224becef6ccba23534b90287954112aff8fe0dcd6d3c9d85ce17704baaae57ed4c7ec7c23329ffdadf5f8267546184e0799b495ceef68117f8b868c25d3ed458ab053b634aa636ccea2449827d64969ca1e73230215cf472c567f8efb10866fcbb4f9adbf6c43b8a25a4577d4b7d6854873459b5b51254d4c083c274fe1d372bdcc8338e81995a3374af71544a96ab63595fd581b084b3634c797d89c5440dc33ee1a33fae9a4f38762a7749b5237e477fca0bfa8e45a9d1e54a70f6813be318e3c4b7bf2a1cf5aa1d4b9877454fbf7ba5b91a51e12b6a1c694ceec99c9c31664c83229765d413c24c45cdc950a153d760754cab52ea7e1aed9c164e2a30593c919c30e5c0c8de92e05fdb994eaa066bcac51276372dbd0e1b40d37b1797ea4bc73b88236e1b137f965f420430e85deeab20b62e9b21d076e94aa256d19e385958c31e0b07a46fb0d08cb14d56d444b4f5ee286c644da9cb6b92ef54630461bf6d149563b876ed5870de9b3d7167ff551a35f433157f78ea9941dd7523299a4c1a3c70f1fef6a6844c653e9a8dfb166490fca4869e0dc728549fb98bd361a4eee2a9f3e7c4e27639c41519aeb4e4f4bc68d1fbf821dc30cd9891326adcd54ff5c86724ef5478d2a6f29870c7bffe52cb2d3a5d3a5ebe091c303638ca1b0fa7ba5b4ff8f89c59007bff4a8fb71b5e5b1a38c1c1d18230cbb450d15c5a479c955329968600c3028322893330b3a8c8af90242a5ecd1f7455fbb2ab1c0185e48a918fd695b19cada2e18f36f43b4c70ca6943848c08536c7bca922becbc6db82163dba29d3418cada785e36d50aba7e6637bcd8279d9648ed5dd7faa5838695e8bda6196ec42577047fb94c7b314dc946358e11053b22af5973c8df5a81430030249180c040281401000048630386f00d3130830304c248cc482e1a0b28b7a140000403422503e26202a1a1016120c160e8882a1504010080342c15028180c04434a41a4cba9f01522210967c753dac63ccfdc0190fca3d721ff840da09580b7e8038ac78f8f6f1f8f3cc2e016f8969b6e584d61b54f98b8457f92095345895657f4f7ea8fb49549317603673eeec8e34dd9006f5a267b5f39059fd937d0e2397b1b7cf3f41f6a08add4582cbde457eeb35adbccb0f001a700b67b351a5b7eeda98846f414dcc05997257af76db0d4a6b2592536b661404dd5c08aa382193e7e7f3efc2cbb27b038d38316c9c0626399200c9aaa3eea8170956e4606577e50be039b91ec46dc588821097ad5739a2f634d2371651660aae2d738e5b2d4c4dddd29ee572b9abc1553137c030c9d4e4e81e1475be09ab40d9b64c5bb2bafaeb025a830982923da63d9b8665a60ab3916a897f8a4763ea9af605920ba166f3279b7a7b7898184697689b7b3113609530684a2af59a970927d8cd063b16d0b79f37d2aed6897ab9972d5c6234258cbc6dc595dca47f38c086173891474f1b9163dc37dba26196da1a709c715d800c95332f4cd85045b422814a2f5497b4d409aae7feb47ac26ee0bec0f389675f920c6c1f2896880864fec06958f401b6d6e19c4b4896ecbdf5dc506ea1b284b41938d90bf64e1a7b9522ccb295c53aae5bf0cee9795fa2c76c34cb58af0cb830fde2a7ae9fd655a6582129977e57e28eb2e6e19e12d5b14f23b09a20bbbbd4703713de0ba9e58f3260c9fe320fb6eb93f5c1ca04c3533dbb8bf49a4edd0258d6a6d49e95553843230f5453d436c9e7ea090c6a20ec8ac33a409ab0d6ad208f65a30a69996db629e05f6253e1bc1785e7f009d9acdee48e011d37a40a211e21d5833f50d99d41679e36bcf283635e018546ac007fd4a925f73abbadf3a8194ab04b2ebdf52362f3096cd9d0e74f6ae42135829873cd4696c67a53ed42b64971b48bde97cdef0b33de30e1564fc5608665995a695ada8b8f6f2165cb17a85945a4541a4186df9fb5d8a8a00eb88c4b299d380cdd63d58822aeba8846aa0ceab043fc53b7455093669347b2ca9ba4bfc9cb173721468736b0c99d0eabb57aa6e85448955233b049825a0c9164117f103ad55af69d4d59c82652c8d842693c2ae16ac338c69ab1b64aa11d6c34b3cb4f0ad1eb16a356023b6bdddb36feebcfecf0283c1e38226d0448cac343e2a0674bf1e2d6d68784e8bf1d0a8c10278f1ad69548d247079f5d1e47739b66e192f1741c7382752946118746029922c1d31c0d3a7d9e006d1919b3c9a6afded32b005050076921fd009bfcf2a12228e30aa71f399698c1430c810bed2422bf8e8811c0a6b00ba236902c0fa64d382fa6d143ad56615dbbdd334b06fc598880c6be66fd8625ff637a3de86d4e4f8d014c4c12d12d90262d3d8791ab055066c3773481703eb321099406af312507d9702ee580bf48cbd67f923e032fa8819608c517de31ce3e1b568081814457e3623be15180165f9a66546621d76402504303e1cd2ad7e376602e07d28ef19dc23ab5092bbedc7743c0480f1b0efa02fcdf50d92f35851a948fc97ae644f803cd08cefdd0dffab9774c1b1c33a0a608617d160fbd4a113e82e6ddb4fa9b9e157191ead41289892f6b91068958cac29e474f7d9be474449a5603345099cf4147a6c08dd6673948052d75261c58beb1774b6b44aa9d58cb95c7ddd36ed92feb289ae738f5a05e261f9a6b1e53432d31d8db90255fc151a7c646e2f21cb81119dc27fb3178746c9369484f46d0871c2ec7d683f19672767fa969946cea09fe811b60b45a975fd9dc87da9c2f70b0021109f7ec25543e960495572d77a3a0187226e997e3afefe910b4bdeb5ee3298b8b8047308e9f6ec784081b48b686bb1adf74e8379656bef7083326d9edc868d21ec61965e84e076c28e88a4619c77af4d6f745121f9f7c84ba752a51ccda1a4d309cf7b4ffe49ac8cf421b7183bb9ecdfa3b3b4cef055f0d8da543f1db525ee203b793b6064c448c2837e1aa554000927adeea2ab29a7c36b2bb4969c5050efdc7fe83293d2459fe194b11a982d1fed86bb11addf281aa23d34f9c48299db3b007568626e482bd1dc0b571e7d91879127dae721c2d5431539c516b37676ccc5ea47df920962952cf61cd4264b4d5722bdc269a50ba6b2de94ddcf56f3eaf74663b9cfe9ba55ba556ab16a271d7fbb42627d5a4ecb79d6ce9af72d78a58d9de9875b5c934dcb63530a7d0a9f7e8fc8196e149d44f0934ce55b7fed1b3f438688dcd5c2b49e10cd84479f25788d479cab93398bdc8a2838700abd16f27db0607e671316b81dc1f8b907972597077540f2789e7f907bc6abfe2c41cf0dcbb39f6831300936310ba404408ff6135b6b7e64a28bfd14c0505438a7682c7d8c15ed77bd70dbafa5e9c526fdec74ba8eb9b712484d70c9e4704e4dfbc193c13d7caf0fe6feb3a89d1f13024a36f70c100909f9b32f12ed4b3e386e574cc978258f2bf5534c6adc47de8c241d7b4726eb1dd2ba172792c29462664182f0d00e58508e13c9bdea11244b65defb752d09a7868565a341b02f39e9d7bb92f09c6ba51f2964418200648219bdd22d7a482105ee8b0b4cb61810b4dc71f6b54f685b6328b413161b0cd00a42433cd44a888df9f061f6666abf56446bc0520a5ed512ddbb5846eb5ceb70ae59e52f3ff5d35cedd9b191807a30d8800838127ce7e5261be75ad534209b8c3e83bdac2b2e58ea760dbe178f45d59a17f281c328a7f533ffbcb78c6269d89b1dced62da116a790e73ee728237dd5d9d0ecefdad4c0e240b17fcdb0737b247b006c1346a5737e7772650903c643f01de163443d8f011add85ef0150a5c681bc85a9f97a343b57e6d0d9ad919e849730d8158ec78fb1c25a185b993c24f3bf2e6f9e530317046b22300a69fd7b106db37ee1fe3f72d614b888b06b11102f9dc003094f1ae305fea58b3e8dad7c903a2ea3c36224bf5421d11fb2e346ec525475528ad4fc47d85fa3d7133aebb0c274d7b060ee8d1eee8a07a3117ccbc523324185bbfd50807d053ab8e09011656b5167b5101ce77c70e485fadc3184c4189c1308dbccdcfdb2d0e5d67a5effa444b6c0bb04869545bd790e6669a2ac3ce4ec446653051e05581bea9f41115c9986102fb5cf46e5ac06cfe8c6d86758ed7986ad55263817142347689556de6b7a0cb9bb9265db2ca25d5d8a256ea127c8ee36fcf398ab9e8c784332ad67535eebfe80c889d7f6ffd15443f8aed8e0bc38accb5ff2fb784e4e44012d012d0e2bd761d1f8d84e9d92193da1fdf8cc9a6658eb5d9a09a624ee3c55fcb6a12818583fe34db9f098963928bb2fff578486fc4f4e1b3e5a088401482e9a48bdfb26afc53bd0ea0218dee9316a7726d389c452cd8fb31e6275901d841a47c7d67f74150d5287a8371a6717a1ef5bbd12e102467a8b4ded05a3981306d4a6bf1bc408d4a9f2952b76a0b996828ac06d205069b84dceec198b0ec59bafc494ce80a443331fa5338e7cf1b80db78875f8ab8d228a694c640b12a15fc8f829228d7de2fa6110c977516a213ada31c87f50bcb8b4979305d0d653691779a5ac4004c51d8b90ca757dff9bd307f24e1a4b02946bd77273974df4d26e5f3b594a9e61b893e5b47a18167f7f04f225ba28b393d2916101135242af96c693b21ea5af488ffaa3b55ad3110830474e7103bd5cfd283f8de268a67e26272069581865cb0f4d0b7184a286930a0848921893dc0e87de597d959cd596e1b8e3ff862c0b6c3dfd709b71e47458aa127d11993b6bc9d12fa7cc38f594c9ae799c797bc0ae52a261e5a07d60ea6a351d66600a054a820b47faa797b934377d088caf52fa41c3bf45f815675082ee3d8b6266f0e8392ad66456e22401d44a5914011eb11d12aec0d8c84f4bd3e0c1850cdd6655931238fff5932565e06b772906a91d619946142809793dddfe1859072a22196a22da51ff60b4a71b2f90081d7ea4674fb8f0f36ece4e9b69d4005cb31fe8ddaeebb88d8ba0ba534f82df1f9155178db5fadd19af12bfe916cdd1822dfbf14f323bcc465844a9e53cc0669270a8ca6bdc727c4234182962ce34888f2d67538041841d655ce8ece03a913d40c1efb23c5ce9ccd679296afe49f520e3ecba016da1d5abf6c36a8dbb28d62a4f78b0ec237c91e19cd0d55962027d15a35ecc7aa18e613c540b0a1066c37a105e675d6ed0c1f7593f518e8d428ef404ae3e55f41e92e24b9b93ca62e4e3131de90b97772e1f84ffaea659df83bcedc295331feae5b26d5cd24b1aec93c960a2c747c401b3bcdffa31f02500729d3eabd9603c728ae4d185eec00355a49fdca3351e7903171e9d215a56cde820ffd7bee37663b11e117467c5190831d146280c0d4d7d8b66ffa30e016181eec007e72e3b457b6d27172b8e07ed92db98d3711b09ec0b1e9bc51e448bdbc33464b11d61cdb1dc73680b69a245cf2cbf6ee661311830e057181775306bca882ce260703503e2b165f0d40419472824ed2d86e278b716d9230404adaf5bb87ed3b1b30cbdac1f96381ca575facb50304bc5b917b30bbaa04bec3dd13ee9034fd04b92489264daa518033d1de5f5b02fbbee9e1afdd96bb231cf5266f6cba8132cc841a2344671ca20bb1e68ee3a4e7f1b42693b17476c0f3c8f80f7e32993764a08c701330dcc412eb1367ae0e42d97bd0c301d1ee75d34c45cfa34b2c466129e03534027bd17a9b8b65f328f5edbc8f01ff0de2346e022eab1fe63d212a675f29944af4f5cd121593f7d3db730ec1d876c034d0291093cc7359c6c2fddf077cdda7defd204dfa7b2d488f28ae543b8474465b36b4b0893de434592759ae491fc4cf8b743242cc06e578f1caf17a4c795d641c4349bca0ff3c9285419a30a4dbcd032a5e4f0d171cedd51fa752c11f1b7e673ed5fc5783d012cd03b2b31ebc792fd278c74ab14f781ec05d4be3365c308e00ba31f9af1c037a37045a77832dc68aab3b9ff7cae1a0d36810dd6c1830732d19cab19c795e83381df69217b2bc085be05336df300b8c1434dde8aaf1f2fe052fdd5830aab01c71ce61d6acaca8fe81bfbae5a9e02b290c74b0b1afdc31d0e37de049ba7f4d2a3778495fd8f9313678f28b72122c71e8d1a1d091122b4c5655954f85e05807bb996ae3a94de2b797b64e11216fed0f3d0def227348514a59c0f9d0b829b2baa5951412ac3fb993b9ef529133fdf462dd34c25cf5c45d852a990b5996eeecb46e05c9b450eae46738466b32edab7740bebcc10e95ee3d804ad07dde99262832ab32a830b5af4c13536c7faa79d85b774bed09ecf31c690a3b24848b55c6e6523814da78a8d250ff7fbc26a3ffcac7a924d6541ca7b2c3aa217d3b1482021b3b470c0e9eab66564ed5fba56b8daf7602afceba90c762a4ba30e1fd3ede7aed985be8e6668566f8f38be20db2a4e6668d7f54dcc20880159d95cd388dd48d12cf841cd528c32c761b318059a9d18268b1a72e20c02cf1dc8f8d5535132d8750a884e989052887c41954a860d739f6e2143238726cc0f8bebb0c01c4ea0a1c23ac79436d00e0fa927154fb4d08b46683d9ea935196e3a6a36ec29ab9f39b38a00286244b4d81f58eb31d4302d907f36513f82cf79ab7f7defd4dd270bac014d7f1e7c5fa2efdea60911fecb23fcad3767edf7d7d7d6605f23c21de2896847442ed0cff3f6cda63b2f659cafaff0878dc52d0b4fad0ad3495bcd6a973fd8e69289200c35c61c576bfaaafed92b72e3319e1ef22f9cb8c8fddfe2bbf3ad6b5cff23ed35b689217f4dc6b4a4bb52d1dcc47b4820820a5be2adf3c2a80851dd82e709283d87cde996ce9d17278afad7103be0a429c359c86b6f013c864fd9f4c0c5f44a0d9ca348d2817465ac114f2c3c6ab014ff2894e4e76c6b0a70a697de725abf46dbe64cf42294877f57181ed46ef537b6898794651ecc142c12619f24fc395a3071ef911098a5c6be50cb6b19506c3c6883703bda4e00189d33197c7d8658563be5b56a316048600c81607cbaf1210bbcde9959ea715721604e5e4f522ac9fdf156fa27c91b76af449e4a2cf2e793f402ac03b9fb16dbdfa5e945f5526869880b4fe70ae3c051b29aa8ea34394ac93272062e6dc3ca1833894c76ce9a49e61872662e91cb281eab2d6ea6322d89b167e637a2e8a3f2fcae7b3ca487e7a6db911a1c2c4008b7a59e077f6fd2d2f3ccae2699e46bba905df2256ddfe9c7dc3279e629942a4c2183b42366176334e963ade2e3f5c53132a1c93c35f9ac2efbc2544f35b6f83990ae39897b0cf709379a55d30113b69108cb0cf701ab4102a0b9e1c650003238c2cf9e73b742b6afd4001d73d7761dff0656e18ace510e5b7bb554715e5b982f9bb19d749141fa1db88bce1b4c70d244b95e4a36af439bbb03c885ccf9f7ed481c7dc54cd2b56b0ff0ab7e06c439650645a5e2cf37a9d19894369a6cd900a18af9e4d005fc85c9313677f3f6d15e44c0826e161da9304d0a3331acf0f4ecd17ba7eef8f1520d17614b761ebd42016bedc1bc39429e7d7aeaec4fd1d1b422350ec7367de3f748909d5f09451cb63224939490b551d16565ba20519a507cd48e2a645a7d14ee79f4fcf8f501df900a687be36c741be53adec41b215597c165b1e022c4b1597d9a7755d13ed621f700c1b593920b0e7490ab34d0bedc635a730cfb5f71ca9c119154615526e22db3f69eb983e5ae469ca86d4c58fbee25a8c6ad27a2859fb7c528e45e4f3906c7c68449d9acb610de658e4619d27162875e8ce0e7d1fe945f0edf1fde1e3fc600ea05d277833cbedd2a9cb3bd8e14be3e628c00ebd369b0d656df43b7b9482ddc835ced6073234b2ece79e330e281a530edd51397202956c2fe481858a4e82042d5709bcf491a343593cabaf23fad793ce2703e10b3a084a004592709038cff141dbc2f5fcc897fd1cb292e78dee657908939d8d013ab00a26ea45eb5ff6dee14bdfce72dd1da95bac40a6214387b4f5a2989f2da51ea2ae8c23edc22c4be366910ad6da102a6a41d6c365850c58dee1b5669a09df3406c4e4085d011de4b1dcbeddb5d13b6ebd5ba5e5d9eb07718e4e19f439b8037f1ad86a9b6d5a557eb2a8bbedb3a0ac58be62f67f96ea128e97c0d4799025aaf9479671b90457223d6c5e6adc8b60b6c095c79600d28323fec43a5303f7d215b600d85df95ce140223019a473ebe176a0f247c846c13a83bf1108fdcec53bcac6b89921aabf6a93142882fee0951df12b2dadcd04825f7919e0a716d34a157e5b0144c48e8d1205c777151e1ca337707507b64489a0376a707569ccad89043798448cad1020443102e21d4ec93e687a259601cfc58413ede575f76e4bc3b8fcf7c34a7a990583a46ad35bd730c273668b80d0820828a2cda17ebe29d76f58e864f16d12e1f127da36826a7ed8dc80a464185860c97beae51172739913fa8321a666676c46ed1ef42e763c7dfa60edc24a6d1e713143b1efaea2630a9aa3967dce9823ddbe3b4176809273b05882d66d70dbaec0c3a709934210e3a3286b79f8a4938b33e43618cd2cbbd81d994efe4ebf7d7bdcb4ecf00f80a0b48995c1586bab51fc98cf76c4d9ddc94f096d5310a1f273547ecd2eac6b63a4644c9ab4b34f4a3a3766bc4bcbe9a084698ad7e71937b49604efdcaad73317e011ff70c99e8a595c88c4884ecb8e330c664bd7e59daac2525d7807893ca9f706b77a7e3e276610255995ca1e3a696d5bea0f7fd78907cbc914a7f55755c809ce599648af9c1c900b5d2ba46971a78f88f2a5600259f84910124d05447c934425645f79e2a50438a0f64a9d35bf9a9dd1c4a10028d7c7683930fcce826e74e41109bf2189a5687247613f8216c323996dd004e47636d756a0be34389087e161251b9e0dab7293097f01fcab1cefb47816c7d42232ca484c91eaf5cfe37dd85c8af96e5e09eb347f0383ce2f33aea1e823dc0efa1d3bbd26989f297d4ff33115e244dc59b1e2b70a8adf73ca456f745826738722622dd863ef8cfb6dc11be97855c22834bece89d5885fdfb711b4a51ead5e02d0e8b9d02b064bb76e2786bcdf38e77a3fa557a4b9067711a1c4d13ac2d8d55e0e485c04533199ec91a81567f09b2b6b95497ce3286677da8470256b210ac76f39f663f55430abec6bf5d54adf95dcd0096a9901958c67110bc9bb9d2d24afd3d1c20db2dadc759d4f24660962f32eb219b5ee3a0d1805a49be0cf54a524b81a6212b7763c80103a3cc8083eb9776052b188fecc86e87c1772a27d548f54f908177f3548a1f458eb064cb3af18b259dbad3d8ce1caf82ab05984d76691edb466a601e0a87288f64a661d75aa4f6432bd202d9c3f847189889d4cb8c1e2df4108f5c84e4af5f43bad10a0493371559b910b48de77232094708a2d1966bc29d804c9ddf380b1b688844a7321cce9d1753b1f8ea5ec1a605a9767aad0d73dc228ac13a11f699f58c444224ecd6d1705098764184843c86560775849fa03973e14231f0b6eaa482a024078fd9b19b9b1ff8149554b3f2880ef234e8b8e492632980c33b2ad6d22106e6aa852b6a7630b9267e342b4ef35de8a7b2aa9802a25001d95a71386b5a9ab2cc3c62e8c0a980db26f0c248e00ae18913a73e0d9ee333dc0838d1963f54c79670665b313b3642e4c552b48d6404daffa73da268d36ab9acd33e91b3dc01568d16687bcecde2156966efa807581f035159618c90edd73e036fcb8bab4c66a11bbfd04a252785fc8ec0152b034512809615c8679140cda4dbdcf378db14f44c53818728c198e85536b505632c481f75c48857d4e5e159870bb05cdaf6f3915cbdccd78f1a976cc995d07152392d68057af1800d39c92b9d084188afefb251a5e5666c46ade28471348ae0e9d4d23ae7b30f47e98dc04bc0724be483e149e74120103579d1d1a1442d02852ad833dee6c5e0416d364d9e246d933d7deb7bbd631e471c70ae69dc5771225c10c55845cd9aa7b887e8f4ec80fab725275dbb52520f6103ad252b065a63538e680e30e9023ea0245b73e8405b95c8a5a5aa036bfa0fba2189790ad675a6e5620be79bb307f97f82cf75b5ea16fb38852f00ada87a9b10594af25fef0b19e4b9a362c6d207f854c534d2668f084c574407fd5b73e4d09dbbfb0458e3b2c1efda3252f83f60903f4e586c2093eac4f5c454cea0c8d306d3c4f5f3e6dc987be1a6c53000ac045d47893f6a2b0d19a25a258778b127c6245c764a62e11884b107d2e4455513bce730af824dad69db7030fb0b71d68a1142b996c07222da1a3a8c64852577e8dbf8606ca501604834f366ed8563f3eca70e60aacad176b9535f3d83ad83394474ee1b2e522baa9d836828c1ce278feff60d5054c870802b575a79de2ca13b00c8eb1f930014d94cd833a01eba02419fa144c051e39567664dae8b0ca7ab087fe9cf40f59e2984dbfb0d32af7cf5a427b450d430a59dcc3270620397d6b77d4672c8f53b026de1ff2bee37ed2da6c48ae8874c036522b923aaefcf5bd8160839581ba9816abaf64767ffa4080e3d7f45bb5b6fbe63b4e9f23e71aadc88b014f529d6ba84d358a27bfe94f6a54182a8083df29e822468ee704c60f988e234d3c3c1569341894b362dcb45ea3a1fcbcab8e79633410e5f8cc1438ee0aa0b549e7f3a53b7e00c39be4ed9d8899a12330936748a4ad17e284f215ae108c752dcc5987035b70663c147692a035e6a28104aa2a427ba673867f03d7c9b924c5de25062c093838357f66918230edaf290380b1a07f3d3679a9585836eecb495ef35c4d17f210ffd301b7e4014bfef62de601e174e01d99599d0370871bc6d21b6cb673cf054f6b5c171721bdcb81e264e42b6f99ff786450666b955ac6fcc3570162f44dd6104458c5c2b75893985b5badf914b5530c2d2c05d3f761a721f62b3f6fe1502e816f05a3eaa824b0e20937e7067518392efb14072101537623349a06f61c639db1d21d48f57659ba1addc515d6b42c6536be761fda5952b52850c24d13b2f0f2785b60b8b353d955182319384e9e4c04fe1b10c099e0bd51e7cd1acecab0305bb32abe9931eaa42d2604a649570cab694ed558aa071e87484a16240e4c5a33775d2090fffd032e022b90411a393cca1829731acad9dd53b172fe98ef3796a23637586272549d6a1cb7fd499fb49ce15e6395b3077c5f5784349702c2be81ca13a024034985624045c8d6673e46c129abe0542dc00f9f55edf0d893f1d84c1d0d145a8a5925bb3a6d21fc415f81890f11ff4ca65aa604c469082ab26e8bb7f51ab2dd001adddc7cdee23c702d0915f5d6f7d8fc0be242b9e418d10fa6bb583eb94ca6ffd08def5b75e37e5a77e414f63ddb994a1a0d2a3d61d564c48c1c563af96adc4c35406efd9875d22ddcb16a337f330b658049600ea85f9baa6acbdc319ce781bdcfc86d6caea63defc3fc1964e319136e99fb17f23d6c1e97e5ad1d5c772a517f045ce0a6065f094f872f45578767ebababc46b6e6d2e8d118814b4f7a177ddee553c340823084488eb54c90880f3b5446430e6a87fe30b09c4eb5f4072a4d36a99380ceaac6db1ec175f302d1a5ed6f179311139fe97eff6c538909f21e1b919ea00df6530beff2987d0130a6047b5288ec907f8aee1e2ef89b1158782fcc892a61a40bb9fde9a4d6d55730493dd1c0ad2067074048db8b899972af99071b26c4eb5e47cb359658ab3bef9c3a1511b2ec3034eb60329c346e2eef767bd09298f1f154e6502411235b89931232c6c3bb4d266f27105c3c74a450a33dd748a01bb5071b7e6d98f14fb8d1ccccf26da4167fbdb5cc682b61c1cd5f72ad0a858afdd12635b4af1199ee2d553f05ad2d55ef52be2d4d4b471ac9fe7f0ed50c3a75c418c16295008f267534c4af33564ae243bf7003f1e677657221059074965519da70234bc211459878de498ed0a05ef62c7031d9401e84f80855ac48ab4c129839ac0653e7ab7dfa0351de42800e03b160d85839ace5f6129bcbc0e471579655bd0fa79f32825ddc49093540016ebaa039c5fde01726b2d43f0e9e6c260a57089d5f9b24305501391c303735508aad9749b4d93d0cd14b18b6734fd8f8189f3381ef73547b578e60325f9fe593c158e4ff42d87baa3a2ef80ee81d826938cbd7b92ffb2247c06805c16843d278532eec12d975b845060065cfd448fbd6315cbecb7d352887b17ff8cfe9c9ebecda0a052e473b27b8d36e23f347710b470072d7d79147c5ba0dcc96abeec870def96d4ebf2f2b332b18180545a85a704f7a07286af72748cd2a42df5b7152fac4a6f2446873d415a1e8a9e21e47814b1c69da1b90ffd93b4702a9fe64f2f56d1fa51f4d4a3fc4b19c903168dcc7d5501b013e506738fd14f7e20ce3ed9e000cb9ee49527e0650ed82052724853932fd2ee92cda5bc15edebccdd20328ccc17198a5d69cbcf969ccb2fa5a7ba03bbc9db9df46dc74e2765d4f5865fe614f3cb0e10bc547bd02133669f523713c317a9461228b4679f88cef1a70c8a05975f01d03aceea4c631d170cf20b09c088279c0e3d81007693b3043ebdadc907e8be6616f570cb1cb24e8d62455f0b9efbaf2eb12b092e4ab31a90b817a659c8bf000e3dbddd064900d6efe08ea4eef68430dc30444f79821706a9a5915c9775f3f3767a399eeeff1ddb6b8a202942d03670e05039c9e8aac38c4210b2d6175463830f07e05a69f5025943a89a898cbde6b77c19922a919d286c9a3947dbb9480be7cc8fb7ebe9ce12f5cd73c6cea1664b78d862081f2060881ee7f4a3e7c6ef19c64a2d45f66ce565b45e4082e1596c9f7309e90e4cab85abcc10c795b0da68262f6235bc3ec30267e53f43fc9b6738a9e5393ce96a86bcb19b6f2c6b6a77b3d335858b3135a5d2ce75270d3364361788d961c4ed468d0f51859ae054b6b0d52ff8b8033a3b2882302bc980283991d584b6e41d881a9224aaff2c62ab8439b1545aa368a10643f5aec5eeada6ee4507b29c7d67ca251ce122e4b833387de51abd481117d924004a3caa272ed7090d48fd2a15951b22c115001b8e331aa27eccedd69ad697329271ea5b28807e924ce04e658887d047e1a6c390f9c7cefb7bfafa0360cdb60bc89b43eda58c42d796272db630cade40f9e205eb799a77f23688a83d69031d453cec4c7c8127437cbcf50989f9b3dff959fba72090eba626c77d34825f363a68face7358dea6c28032c0cf605623fa7d5938c3c8cfa1ffde425bdf8655375dfb85bd8bef0d276899a1c5864f10c177b072f8791a09c7c68f968a7c476eb84e8970ac9a9f5f0cc2db9beea5236b7ec71fb04d4525794ce7c06ad5ab6b3c900f97260e4db55e0d2d13626413ef1cae4bbee42695cb82c28a61fac41abcacad468d52c4a5b01b3e2e1da384256b4fb1dca50491c71f0fbdcfa7e65e0649eb6845b1376202d632670bd3c2720684ac9482ba9886d8ad40bce3273037081d6de9160a5bcffd92794334678bd0d9da583e5ded092db172803b5f68a9d507b587c149be82445aa909213e522319043b069196ea581725592a93cc94fd5943a111360da4ddd08a107237dc898dd83782a4d911cf616437aa4cec071315da761701cc4a17c2899aaa1c4c28ad38e3ad82885335a40b564b4f18f732efe911fd2676a061d97f932ce26d7241c0a837c68d5bc4349cb6b80538607456a14b011ce5657bc052fa51334114cad891b352ce5baa4523928b955a692152901527b756d69b25c29992aac2452452556b4044edd8420bce9199330de218a99b32db179b1cd130e6539db6c6b0329d2337e376dde70e894524b641eb2a43256299648cdb20a3ac00ab6af9da3f598c996d25fd2d3538e56b20a7b5ec7498746d49648e644e28cde342f38ac0af990268ed8dd0ce4eae2618b4db3639fa33a4cb3164acff60ddb1b574f066c93eb3a671e03319d4c1823f7f64bf024887bc2e66923b411535293ea5ea2b9e126b0dd05a11f3581d52158eb8903822c504dced95010880077ab050c795e6e51ff53dc6323e337bb8675aa59c89cd4ded6e805135806fd437319d3116fc0512a4bba5f599209d8f6ccd602e0189b93bf2b4d6365baefb060950ccfe072fa2f47b7771c4db93254a59eb20888bc46fb6edbbfe5280a0f7896092c128d5b186bf93d2a724ad4edf75096fe195a92348ac186ccebc961f9e14dc3f195a87339f26b43b92c3bd2c4de238111cee747628ff5ba626fd865dd2eb766dd74bb551fb4d9c54b6993dc8aadf4ec91c95990ae072ffbed7d291cbc2cb97bbb5b73f4da75806300cd7482471d25b0f4c6387db4df4f27ed46c44fa303380a9a52dc35948952dd1d9481522305f71606e6421e3c7d47954ab5a941aaa0887157075f7100a045ee76c95a4c1458054b215dc85eb20aa9a5302299e51a117b424c3a3049665382269694494a3f6594149b3579613dd65d6f751b6608ab020326513e47e1da84ab568c82b5a3a7db25b04acb2bc7a1e2f46720448553f64d3c5468cac6c44185a1ec509ca9c0a9fdd130f7711f1a9413b43b7fb6afe785c62fc9027cfa02de4445b50d3840b026c3013c0c3c0c3c0c3c0cbcc6f05bbb6f76668dfc945292531946dafcba654a29499928cf88d53fe38c73d08834696a193bc1fec705c60da00db50df5a3c786a0c61bd6b1ecf12c74d2a069306c50c30da798d5adf7ded6c769a8d186930999b6fded420d3674a93516775b3faaa80b35d6608ed3c1d446cebaa85ba8a106fcfc3afcc8ac24a35632997831997c61022fc2f0828c1f3ecc80414fc01d03ed3f5c8c1e4b82c9041035d280d8efe7525d1ae6e31ebe6307185e90e08b1a7893c1a30706ec50030d79d090e7f934bfff3f03fb9d4326f3cfe8c13783f95ac2ad4795a8e96530bab7a837cf92a1b89deceb45c4b4a5c7f06ac61455bd18d0a6330779fb9af3290ce5bfeebc36a143950c867744b528e1f17b33fe0297c9aa9386ee0e3979a1a44477ca6ff9f4e37601ddee9b99bff4fb2d173ad513d13126bd8a6f013da2ed62871e954fa4857464a7de5de5f5106561cb6cb7eabe6241d394aed48ef8f655af806ebaab69911538391e736dea9adc5461b5cb4f4984ec2c16158cedc9636d058b63d12978bd31b333f6d3862905a4960ca241bbf4cd15055543dd85ff5c5d4f1035a0a0a94e991f377b4cfb097e0ce57f99f4f3e6da095d103abba7bcaabcb8099ebd5b9c7ea906130c4299fe5cf7219ada1a4be8648e2ee3312dc630aaa1045cb36885cda756b5f2458d2414dfe4acf62da92591d06bd99a58d8f872fd114a1b93269d519e19a7110c1dbfebe35d11b8affc2c9fb25c7aad06114ca6a2ff6ca9f0ef1a30bc98c1136a0ca14baf9d97fd824ac16a420d219484bca4223d07a13e97708e1a4138e894fd92377d97411f26a80104d682a7cda98b71f5a9f1833bea5a10de195f4f5e420d1f5c9b529a9775b2a07e0f6ab7923be1173eb47a841a3cd0e36fca612ed84953a140631798583fb57a336173e96291f2fd1ab39e27cb73e17974b7d8a91a1a35b838ba59debd9eacf57c0bb475bc8c8bd1162695e9fba34fb5f3538bb354fa05a553ff9e460b47c35fb47fd1f97ecf82862c8c26a392c56c7be2722c8effe097ead2eacb030b1aafe84576ce3c3c6bbdae504786a58b2b55adb4e2b958ee6232afdf335660babae25c6793a14263156d304b1e5fb221e6a2031aaab83a4b66b3998df72f15cf6bc61c253779a70607345081b40c726454fc146dac783a9f3677fd638a83e997a6556a90ab29994c108d521c835c850ccf11a64552986633cf4c8c78877314484be1399a78b22a4561761d19eab456d24391aaca1584051528de4b196b932e6d8da54f1c742575511a6ef57ac20f1f234b5392393ad589724abae2a677baa83a27ce9653e964f83661eacd1d4f459126ecfb8af99fc2b3923e13797e9aedd931d18ad2a33cbd3fceee4b64ae6a6eb9a373d29325d8d0ad71c3ffcf3e8a40a31275caed71a72b1ea6438973aa5e58d13e5edbd2984467b9a4c94fa51ee34912858c6f6183e822e1fcfacc9a52417906218136edf9c64d8c9a111fb16d25399a496fb094e408647afe39933642f593516ff972b620c308563ce74ba394c5656e1175304be29d4ba48e484311c8d1d13929eba8ae9e44b0fbfe4954ae533956682022d9399d0e72a387c0bd34a98bd5d93755673807bcf0010d43a453bbea5f78acfccc021a8530dfecc7b5c876d5d020049bd72dd8d6ade59b83602cc9d86d7174b3c5a32188c4b25f458cf6754d92018133b6478f094ce08b2fd84d30c6184b461893c91734a0110875d53ccc68b3adf831a30c09d000c4d73eaabb746d8a15fd03a6594909bbcfb0def941b5b713df3b1e7ef6d187fd35e8202c978640830f9afbe9937721459bd00a34f670facccf1b6546c5e84ea0a18743e52d68cb780834f2c05f50aae466ed7dd2e9c12307d2c003d24a868ea5e46768cd8b0b7c41e30e950aa254d2b982cc0bf7c75ae00b1ebfe30634ec504c7ab5b6734fa7340368d4218dfaa762cbdd966a2574a03187ced3a3c8edafaa104b76e4702f68c8a10db931858cdaf271fec183c70868c4c1bd4b9a748e9279d487432ae72c89bbc8a42d7fc33aea1ba2bd65337643427c977d1ed3f4296e435b296fd28e22d7351b92711f7dd3296b69d01acad7986ef45bd88ba71af6d423336392277b3b69702e076549e64fe22b47030dadc87842f996da4aff078d3324aa378f0acffaa06186e242db462e8bb4cf97210fe6d9b61f3225992743293d688e5ea5b79dc7e07a12ef162a778a278b6153a7f7f4a9280c281dcce2c5274d3525180ad916623be51466c62f20475cea0d17152e2a2f9c57db3d94ba1c34564a687401e1693c9ee594d2464e830b7f3ced14d6c3253e560341a0b1052d9b9ce7d0f92dd8490734b4500717596e16a791052fa78b6b3db9a1848e8592a7b8e8e129c7e46b0f1a57288ed0b7dc78ab32b715eaf8413b9356f97a78d0a842379bd7b27934872da9a0fec6a0bf63ee589b338573ab45db1cbd47eebc34a4a0959b5a68022f3880802f7af0f8b100e8018d28a8a556e1f22fb5c35030c9686c7689ec06f51312df49c4dd9d728f9113fe9331e99266425fca690232856bd42063c5f48c0905cd5f29274e5f96b5842d7658952b0f196480c1061a4af8bc32fa874fa9f9f449a892fa98424be7e8dc2341ad7d3395434c06b98f508b4e71cdea1c96b211349fbbcf9e16c12cbd5939ca2eb7b2443086ebeb659b3a3f0de133cb24c34cf735454278ff459f6b6ad76cc22070aa73b2d8d1feb434404086e73925b4f77b568c1d3aceb0401e68fc20156ee73fc99862192ac951c23dd67dd881860fd2a76dabf3dd83626951d553aa519496060f14b127839e68a98ee52e5cd1174a4f3f3b6974f16af5a9935ac5600c3312264072b16bccf68edcb83063ba64e973106177ba85154aac6976cc7595638bc4d6fa5ffea4fe54e6a38719ec3d72b8187d0108fc30c303010002482d8a6e956286d72593c91866bc8e1f3b7c8c32723c8f1c29470d74fceee801825fef8009bce08017ed3b680082c9a487c7a0c792f13e821ae87800a4028416e7cad73432c70f32593af0858e1e246001c82cea114b0b7d2759682b37ca4b2e75dc1c20b1d0c278aa18762f75dc2513f8a247182c0081857677ba2726a4018f0a9c00e4159acb88cd7b4a6f3e563299c4c0dd478e1d5ef2234708405c81de6b7daa746a2f073b00d28ad463df768d5ed0a196e4e8c123070d16841568562fa53617bb372b06c82accdc75a24f5d4aba3f25930982a8a23a797926543e5c0c81a4c251693ad888875c8f3000828a42fc97d805d35ccf4f615ee777ccc579cab6292ea1365888dd956e5129dc5a9f5d8d272e4c2545326c3ea152c94e9ae1289266227f43070b6f124541ac7e7bf04251b96d99ef6a40f1eb47b3af8d9dfb2e904f701f4f7d773ef5b9929e683d0565a5c358da729cd1e3c701e944267f837ed19b32df5d4201104e9ce2464bea743b67f5c78e4da47183aa6432392369c21263daf9336a8e34550092890b806002e412209600a90408254026012289078044c220000289359defa9653a155919401ed1fbb5d57a1cd7cb3b007e00e288f405a1a974e7e512a3e2014823401801b20810452cb2f3e236d0e1030c90446472333e9d864a49fe8830e37f4c07995e93280f81efc77fb820f783ce31444ab8a65cf2c464c3a503a41069cbd88cd50f0dfe1202fde3de31be3708a489f8a052790e97328248e9ad10325cd8c8b53c482030dd6e6a4a4dc6c55602020845e4fe857ffa0fef8e559fbc134b2f3a881f181fb12cdb396a8966207de02fac657debfeb5182b80f001f54c9fcd3fa90a207b304be631194cc87ca53302103dbcb98486ccea664126e5a19853c48d6511081e522aa968353ac9b1dc90007207470661a393cd981e1d1640ec709cd351c3b826bb0b5601a40eca77d59614bbced97f02081d4e75b1a72b6c4a26132680cc219da2b57285e550cacda759ec573c47e390102394df76974cffc0a1deb81eba6af34b66be007903a2fb520899c17d5d37203daf6cc6eb4a57f13658513b65f5299d6b52367cf14bcbcb7d38193f90351c345de613a6abc1bc2929fd779ec16e0649c3bd15b36d55a64daa2480a0e1e41e1a5676ad5d5c90332c26343b43e4088d1d182066386b7c2ff62fc5d4f93340ca004206479bb0b77a59df3801640c7e0a76ba73901a933a954c266240c5242da94f73c96482049030b8d6f1e14bcc09d76c8180c1f9b85fd5496459a5205f30ad8fb651d63105292a994c9200e285ee3f8752a22e8c4c09205d28c89f527963c71c55c08b921f3a4ee0638c3126e085173f6ae03f76f0a880173e031d4700e102c816da949a2645985f12b22f8068c1d6d0be773608bec8e1450e2fc0d8c143c78f1e3dccf0b1e3024d00c9c26d216e3a775a4d7d320208168a213f66548dffb9321df0e6c10e72853b0695b5c4b6120a7ce1c3071893c9e7f041461340ac60bbd806d11742d9782a005205fc672f555bacde7b878e9f4c20d03b7460603201a1c2a6b284e913572987a9641206c814b24a3967f6364d19d792108048e1cede398f09954f5eb86432f15106196d81c9c4082051f04676b8fa789b71f32050682bf6ae66bc2de7aea32487db40870f1b803ca11793222a66d1646206881356bdfcd5e163755a91024813cea4fabe5b5e7b4c64c21f2ba98719d9e1f2fa0590256cf626452c5bea780a4409da25f96071413e4092f0011024801ca1986b39e55e116bb13ce3878e1d3c749801c408e8f4e1b593fdefc615a4086a12b3b43e1d3a689f042044e8458d54bdd2ea96be18408670c7ddd0baa217af4d42488ad0296c92315f0009022653b986baf6035e68e08b25800061bfabf294f2ae81f78e2a80fca0ce2474bae5fdeeb083f820154dcc97c685cf3ff5c0d3b6e949f78ccc4a82f0e0939d4f6e465f95cdecc2d1b3da69532b63d875d1e9b50beaba27ccfa5c3c16bee205add33b1b17bb07f963f2d3b4b9988401dc624d213f2b2df8c9fc4018802d3c29967469c8b9f8a65af8b9fa9fd92a5f4c163672c1ba9ad86d0e1acb465cb0d6a172d0994a84ad2593898d5b682944689edcaed9ae6432b1610b73a5cbf01b635cae16c56ae7ced0d894d7964c2623b0410bb3e7aa14e9273a7c66631668b514eb19d5478f6a43166f965a6690efbd16148b6fbe2aa4c9f8504f26b070c5657f94907141684a72f0f891c3c9d8808d576423fe969e34e6d6b4e18af542dd4edd9f8a236d45aaa56a5fe542c9fe6cb0e25c3ac59b1e3df51ef5c0c62ad0a62a5b8fb8cdb92a4a4184750c6a73321925d8480516b3af656ed2b12a4645fa63b6f0b499725c4c828d539c94a87ffe7850292699e218ff47e8b3ce08364ad1b856c9782652d89a827ece79496a278d82edf49a314da7c7cc11b0218a7477f40ca76275b0fc076c8422f161d44a5df4ebd33640c16fb27cfb56a6ff27bca4b5a2cc7810ba3b1ed8f0c4321b2fe9cdb9d2b35d82011b9d4873ad4e8e57f669dc021b9c4829cb41cd6a68ca7de131831c3c9a05363651ec18cf5fd33bf33f5c8c1cbd6377d8d0c41dfdd368ebe5fe626023139cccd64d336f96530c13cc565ae8579f6bce974c26397874898d4b943e77a9b0137171226c58a2f4f895c2929eb7cd88b051091b94309b8e49d6ad05811e2ec6ee580f70c1c6246c4882f5689a723c9992c9a47950e08ce6418107c1193f74f4e00183f5800f30ae60231276b8139662e957780d092bd76ad02b9e2ec95c09b2f1883e6f8c51e1fcf38d6c38c218fe6ac5443e08fd3722d5b184de60f2a17d6744f24fcb464477efee8b382bb4347ab6f6f0b8224ea5739df5efcc267522b04ede41d6a952f93522ce1bff2a19bf497bfa10db5a4e23b664f4986a432c239f16636ef4925c88b32e790c3b21773226441b6fc3051fa541942bd3d9a8a43be55012442174ad65301919bf1408af5c2ee7166d972c091025999722ce649decfb0747c950bf3739dfd0faa15261c54d8eaff5ab7d407786b2109f418853f9c0596f6ebdf64c31a37b4888e5f6482bf5d07c950895eba5b6948762c653abf5255546880793c7ac98d13a9e3fbc43f235b3be6cc815d9d9c10d9fa2bec469ebdca9c31f74f02045ab3cfe74c83cb5fa99cc1c126e15367a1e6551357238c8d9bb78260e48cbb623e42f577906077ed3557d4cde88c5dee0b7594e3e9f7bef2937e0de2975d818427d4cb561db1db7d2b16243b163fbca75e5967e0de6ef9437be7faae46a30b97a8958f6552fa5a10e8f1321dc473e080d59b589cca5695b34e50c273ba5c3a7bb30313947056c98210b627bd573b5510643fb83eb7d0ca2f99201771bfb14a5f5c0c6183019e45e4a2552b3c462c84e478cb8bf1435736c84c1cb34d73d7ba7634e3054517753d56e2639978d2fb42f4ab63248cf957d800d2f94c4fd35c5c793414e1b5df8746e5f34216b456c830b6b4a2fb24ddbc598a31eb0b18532fcfc4e78586b9e6c68c1461652137536d24d8637b96432b18185e4e46645fee57a934aae50acebe5df0fb1ce7fc96442011b56b0bc4ecf747374ebd70c1b556073521944fae68cccf961830af6baa8cba02bc9940a6c4ce18bcde46bfa22e6325228be664aada52a3c4c2561d88882ab9e31a9f2ac136c40e1dcab2253cc6e77459160e309a9a4d3668d796de9de09e98e74712d1d6d63bc0957dccda361d34c38f6cf34c9a09d9d739650b6d8770a1eb3a18432a8d7659cab77b704c14612d20fdb512ed948c874579699c75c17b723781bdf525241e5d5af3e40000790600527b061845347f3b6aad3f09ab35104a3ef67f7f4b431934d84c48a14e95d9ac473c88b31d818c22a5a29df3f9dd0a1b321044f8ba7d6a524ba711b4140058bb541aee7948506368070feccba1aa1d2636bd4c60f0aaa3f6d0cf5aff1ab0e1b3ea8ca3657affcffc7d4033c5b29f7caffb6494d82306e608307250ded9b547d8fd8cc21bb30681ed9cb25d2ef2a2344175c52baedab82d89ca692c92447482e8e395bade62984d6cad041831684e0026f17a9e9731c655aad41c82d92a7523aa54f45f7cc08b145aa3dc920be69af4c573299f808a985ee27f26bb2ac62b4687cacf3a638974c26b340dbdb469197eb11220b2fceee7869d2a6a78d85553b635a7a7bd3ca2304166dbd9892aff55a17741faf307f7aa8132a16263b32425c9109bdab62972d994cc6086985e92a7ffc4f7b8c3174c48015e6d2f023e279a63eb40a3d6b120bc2ff1784a8228b7aba73b8cf315ea9c03fed7644eacde66310820af44f549051c5d7633cc5f1cbf67546563299e8083145233e771ab31e751a538ac2adc618a5951821a428b563105d9a4bfd6e1fa3d894da1c7d451f3ac6f01f3a4a6890e3878b210aadc28aa975b08db1138afbda93d229cdcf860b28cca7bd9355783de1499f3827ad4d96b3e6b3423c911e4f2fb271c4219d284e846c224413219908c144c825528825422af180104a68a5f3665b4b964ff53d7ef808994488244222110289f3f6e3dce53bfe948fb87653e8ddace9fe46471832ccfe34c88b9ed588e6c2762ea7a0eecb104624d6435f9706392a438b58b47cd2184f29e2505d9eb39212b17e68e89eeb5356c14204329faca7517bc2842187f0eba259da8ca3ea2743f897572f85ffec17dc421c73d664f2e3f9f28208f1aeef8519cbe90819847aa1363659478f3d09a2b7ba20e3295fed418148e6fe8bab9401a258f1e46c8edd26717dc81f0a42bf5f724d93b5911f52a147f346b86ecab74307078a18217dd0767bd48ebe7ce1497cc8dc3bea5879ec4c1b1042f680a95aa60937bd98547a08c983bb75fe4967055142a5f420040feb888a41c754f72e9b2a2177c0b46cac4a3f7d0c21c40ec69b66dabcc94c9e85d461df19159b7ac4e4c41d84d0e15122937692ae1f22d441c81cd22e37293a8c92c9c792c924440e8c6ee5e6ae38e51dcf40481ceef091225355ebd55832b940081cca9695497ecf74f63881903718f3586cf9c9f8b13b9309043ec40dcffb8e87ba8f27e5521281903684b0c1144e55ca1b43e5c85f90c128709b011642d6a08d8c2e56e137be9d4c10a286903424b46bae1ca5a2767043d0107286138498a10c9d927f5d59f364300a1e1042064dd63ca3a5fcbc793486f23e7ff6534b0f42c4f09e9b9f6578c6f15318dcf455f9b5fa64a643c090ca72565273ff42ca455d56cd75485d43bca0a74f41cf568eefa6902eacdbd77ecacb2ba5dd03215c28778e53339dff952b0b846ca190532575f409152a6b46881692eb36d11c32e9f0991f2159703d05153a85b3f51bb1f07c9cb948133275944b26931c3f7638f7f0104c261608b9c231eb3f978e0842ac70c58a390999bded9f2c994c7c6c481542a870e6b02bb57052cffd121d63fce0b12347c814d2d16ff79d642521089102a74d75e678f964ce9720240a6ac9ac2d657afd6d2f994cc2088142c9e296744d53177f7f4249676f4bcb543125d90965d116f2c47c46fb52134e212c7a9bbc4e31499970cc369a6cf7ad32269760945173ad9849c46794908dee2a1d96f93228edf019b80b429250d07a531a55375f4e2141ed98b39b3c067d6af1a28cf5407b8ef61e3c7ef84045c8113e354269951e15fefd018110236867f36f1fe368993ca4085a9e90c13ca62cb150081190319907df6dff11396408b7bf675fe8f354d134851021b4362a8910b1f7b8a520840421e976bf39e67ed9a84058d5cee742e709d1110b427ef081101f9cd57d8358bcf9107f480fd02bfaa3ac3736a5afe4870e1a84f000a583ceca3b952b899da383506317e55842476a9833659d9463070f1d3ebc078f1f61e428c38706bef851830bd4d085eb15fc1ab928284fa5e973dbc9fc2f3c064b82921ab838e770f96ce3954c263e62c05ed2a3c62dd29bbe647e758b1673c96452830b7ce1a3862d92b94ecffd9754955e8be4eb3ae7b7905be2d3c2ebd693f7d944e94567718c144fcf205388a8c8c238a5d2cac88cdfe18f851e479c6cbf9ce4e7182cfc1d4da67d2ffdd2f70a6f943ccb31479afad915c636f5187d74eca4fc56e466f2f71de743e67532d151831567f74d4b314a2cc3be8af664985d532b3293aec40c1f3976d450451a4587364bedf8d36aa422994ae76dcd2b3d2797e818638cfd1d3a0e500315493fd3e35ae9625357e314a9b60d1936ed54c314a5e6f89cc6d5ce93bc14b7b8a69f1acbb83d29cc4c3978de50d92a6914f9ebe55c664c97d11685d97f4f4f893f9962381479be6e9dc77ab818148cb525fbeada9cad7ee2d0d9cbb29d396aa327ee50b6a953d67cb1349de8dd7456ffacb86b71e2bd55f1a0be7e7d3116d4d8c4fef1ff63ceaea763af89d2968c88f7f0b436cac495523625eb233762a5a006263e194f6d3cc8cdb6a41cde3c769c1a97e853cab9dd63c3b96b9640c38a8a6939acc4769ece62ae4684d680518312f5af074feba963b4ca1717a83109849eecbb502a22572db1400d491473a6b994543e378ff3082613ee61811a91287673fc6fa5811a90a85fb64b25fbd12ca51a8fd074ca7bfcb69461778441ceb4c818d2630aa546a0a1c54aa66897a54d46a0f2b9979ebad1af9845d441e6b4e4934c229622b0ce27cad69408bcac2ee5bbcbdb1897e4e8f1a30c1e3dac06226a1ca286216a1422d520440da2845143103502a1c6ae182f6b7db6fa4bcca80108b646a858f95be1f45662801a7fa8e1871a7da8c1073d7830bde1f31a7bf8c45bbc6fec341a7fc90f333cb003032535f4501efde6a1824aaa725c230f68f3cc7ad152eaf4530d3c241a7379626a29dc9d831a77586d4fe67aafee98643b146aa63d594cc96c54076389ca988398e837253aa4364a5a9cedfca05338a831079392536faa779621960342f6a95269e3777f7130ede910b5d9a38cfee0e088b64d2a9ffd277d7d55b046de70d0bd499aacf5bd588fb8e11255631b9fae62c646da501232870be249b5ad1a61c329c6f4cdf79bc37466c68ffd11c6c81adcfd8bada2f4e993691e8ca8a1a44ad80619fdf46ee760240d7752fa3278d575ae68040d886dbbd1b42245fff571c686c08c9133fc5b2aa6765a906e560546ccb0a5ac5e9aabcb6069b06097946bd07f22c3bb29a7091dcd91311c4a85fcd19b4f8eba47c46066fd245b7349550c1a09031bc3ebebb22c64f460c8849217f739fc853428b32f314a1f18f142d9b3d5bdc993275a77c16cc282b60c9e1ffd94c008173075a6b24c25dbbe7a640bcdee685785e9f6af235a40db488f31849e855350d7579a639e73584009ad9bb7d53a7d0e5e61b16c7983e66ac40aff57bab04984926d268f1f3bc0f01d235578358710dd6449a7b8bd8c334860c60815f44ee2a229f5d22f8b9771060946a65085cb35aa2969440a56ff88ca99ec2f7563c2481492496959ecd28f40618bd172e9d4fc97c4e263e409678e516ca36f89b28c1c3c7ef4e011821127a03a3356b4641831ba532688c04813543565a562da234cf87fc3a5d49cb37a4eeed8268c2ca1a8b956e1d2c7ce9707c0124694f0654a6f7af1eaf3955333184942dba7bf46e71f095989f1ac36cd17b5468e502abd9d7b4ddd32b43d86ebc08010468c70caf6f3bda36a64bc98e08c1f0030c24811ea1c2dc54c29f878c88c31420453d6ea113d51adcdc810109b2b2d06b3f5717f6ce758c188108a759ec973a95c30e548100ea72ae988a714f6e7112074b9c2ec6208a52c657fe0c5ea0a17a7a6e774b830e2033f46549a4fcd33ad8ef4e00e3d75da963b467c233c784f4c05b7ac253c443776d1d987f54d69baa10bd4ce6b4e29cb4b9749702317d8bfa898f1d49a99b9810b4d7694502a851072db1bb7c06ae44a995c051d6728dcb0053a557b54d0fa27464e851bb5f0bdfc4d3c73da4f715aaca5ffe6c25be3e9781645d14145d35ef5582559d89a6ddf628bb130e954bf1e2b69cc1883c53f42c67a2879af6d5f518fd6a68b8b41db45ae40dc8dabba89f1b0bb15afdc955c5ad2e8576205a22d699ee952083756914a22e37fcc41c8bd64126ea8a23bcf6ad2dcabe3e99170231587774aba53ccec7808841ba8f0fa62eb3acd9ebaf5831ba7305712eb24bce37d4e32c5174a650ae2de720e995218468edcd47121851d23f74ee76614887bb2a8f5bd28fce83352469b3c535b28dad7942e87d8a0f82b586ca88aa543ff44e6d9af96629cb54d7ac22c4236736d3a717534ad4e29c9469d135550425d8a1b73e5ce36a1877d79ab76363b4b137e6c75a8bb7fcf95cfc41a9a1fc77ec6745c31717a0d1b6e9bb2f7f98d4bd461e305a1377fc3127bfefffcdfce8d4a244377cbb7fc97d09b921c3926930e4c800220e840066e5082131de27addbe31894e5350b15be3a4967c4312e670353a5bc307b5a90634500600e4702312057939566c2ffd5eb21b9048be3c783c7d1964fcdc78c449e88da6f329854e49371cf187df20ff416d842784dc297bb16432413718f176ec28ef70523fbb1b8b3845fd140d965b2a8a371481908b1bb3730e9be47f23119bf41cbf2c7df47d6f2002bf11da1d2e4b9ee54b2c70e310058bf12ff8b8e87fdf10561eab39158318e17a210e32d4f3bce584380895cb4a3eefe6ae07c108f116f6435d78a5059156ef1c6c76462f9802d147931b545ad1785d02c4725ab5a76eae76df3fe03146dd11277ffd5e3f144cc72dc8aff4336e1ff638d61e3566bee7101f50bf109736688a39e71eca3bfbce59f3eb92520fef7cff6b90b34fbfc983a5efb44fdba9dd208387d4d8cb858d317748a3ab8dc5d3953fb3836afb7b96c262c3a5eaf0c713691a34e5061d9eef8c5174de92572937e6b098caaf73c173385582c10d39747729be42b6f9f581b81107b33ee5e3ff05ad94f5804329490ba5e27490f9c6cdc1430c1cdc78036a3b7cc55ac96f30959891637970c30d0777fd3771d9e29291831b6df03b06cbabdbf10d3668eafa3b8af898a94e6b48892ab567697297824870430da70de2a5d472a3ad5762801b69308da6adce6625ae3c6848772d838e99c4a58e9ea17b4f4dfa4767863269e6d8e97bf3e83cdf2843fa52c86c559badd3de20c3b92b35a7f8b1435c24841b6360fbb665e77437c4f0fe8ef67cdb10bbd18d301853e967314db5aa991b60604d6697d6d8fb4a991b5fe0f46cab7ea790c13d2f582a098de9620c6e7401cb4169d3772ae9644134b8c185f2e60ecab6cc639c750b5f9e2c6921f3f55c16f37bfb7b16d01c473c5cde9c79452593c90d6e60c10a3aad2da43f6e5c01d59ad95f33aaba2e3eac90f2f592ee5f9aa1cc2aa099e372a58f8f212a2a7c672a32a7f2e29ddf98829ec5d4c7cf96f38e66c60d29f4dbd983ac8d11313a3d6e44c16e53993ddb5ca78e1b50404513fbacca3ea192656a75eb2ee8d19071c3094973d998b2758907bb09891795f51b3efffe0d269c3ce4c736d5feb72cc68d2518db32c7f31c2fa892c55042e6fb31e66ed37ba794f48d2498a3a6cb79bff69f744a26131f3c4afc0612d2b1dc62aab64bd133378ea0c5fd249b7e22fffd1b4648eeb8c7d0bdd12c2b378af0860d968208f50d22dcb9ffc4c6ddc678d68d21e47193b4caee5ed56f08a1ac9eb76774d2dca37423089bc7eccecba7eedd3ae00610d690a56a369f88cfb91b3f28af5f4cc76cb5352a1fdcf081d92b83daabb32463b86407377a908745bf4aaab11de61b3c38ff3669f77c14df14915d9439a65b2ad5fa67491768522d5daada154dfb01915c1cc38b521ecc2e6cf81210c185697929c9387a915b707b19e5753c7d6ecb186088d802ad2e5b31c3e5209e5aa45f2bacbe9f4e1f3bb4d046f42b2f7390b1b210109945e695c1eea349d39a520f88c8c24e290595440763c19d7cab3491bb0d74f828c164c2a387db60078f1d1f108145a53fa7ad9ddf18d41e1e468f1f614c263bca78857bf7be796d6fc4ae92c9848c1c3b7c8c3278b02b2e4f2d4a5b7213b7159f0e594147df984358259349044458d1c99d513dca7e4c735bc25f98c82a8c656142e98a3159a77ef8f8a24454717d8ef32266c7aece92c9c40b91549c2f789cbdc9f5ce60054450d1e8c938696e2dc264444e914c9956df29ea08d131454a53fade354b763a2e528a52859d9d3125b5452f428a524e99828be9ed53ab641425d1dbd516aeb4a61b20220a43de4263ac8718be65fc58327af0c0c08984c2cb18f562a95b3299a89519397e90f10a1001459752ae2094b08e3dfd413372b88f1e5bc627feec7c6fdb314f9c8228d9f539c9203ea8139b0a6aa9e771d29d4cc2988870c234bbf420f4427c9ba8628e575f8be5e1ba92c96402229ab0ee84070d29ee97d31b8230443261e5b8a2a516c7bef632b6070d76988109d34fd7734ab5dfbb4de00b0b885c825326679bae326957c41257063daa396a52a412674cb669740a9b62da397c5062cf5974900dc24f7926714a49bc44063d42ca64bc24ead0a52a994c122012894fa9e879fc7a6733078933cf89c7de47d19bc93063c707441ea196ecf7e8b04faab223bcee28ba5b7e914658296d0e5b9562a6a6b08e1d1b822f4620c288d45cf8acdf024416f1654b5e1762662fa306ce001145303722538a31a698e1994822fed9981b6c7310a967c964b23dc4984c74ec3003118ae553a9a6d2b87e4c490e31cc48de39bc8c651f3e9940a0c796b0c8213e916fd6259b42955603228628a8e7df789cd84cd16432c618ce22852866767d2bebd7fbced83181c9e48c1d5b228438c99856fdf8964c26051019842058cdb8398db24f0d3235683026131763c7f6984c7c6c402410278dfaa9c63f73181b10a588eb1c5f44e6c8f50fdeabeb6ecea31fd049937755fad8ba0a45fa60084d9f295b3a5e5533bea8c064d2aea30c1e6c001e227c4847a3bd5f1e1d74682d20b2875ccd4eb7ef6ed6baf5f0cc7545513ad70521e701b1603936a99c1e3f4a040fea46f78a2522c45a7787d537cba58c1f5e1ae69080881df02b17996b3dc8db75302ebc8f58fd3cdaf592c9e4478f1c3b7c8c1c35f0f61c1410a143ea4b65e54b5e8c45640ea8258bc92c7b904173ca109143eb9f62bae952d9e989c40151d739c6987ed2410505227068f79432ad20d4280bbe614bdafd535231b3361d86881bacad4fbbaefc3919b5814baa447be9aa7cd38d40840d8b8ae9fb618607d680c50dd1d68c3968bd2010510363bdd7736741e671c96014f40e0f030522694029557ac487edf0a15540040de53a159356b9a4dd2672064de68676d8fe93890744cc704a617739952e7925c6c0ddc764a2019132acdd153478b632ad190928600112889081dd2adfcb529fc3b3317463fb9fc4aacd44808818d693cd1b6f1bd33f74c68f32c8f030a47139970af93985d08321af7bcbef737fa1bdb3d894aa671b4b2f9cc384ede63c93bd4d897421ad995976ab73019911fb36e7263d955b783eebc9a4e2bd0899db1f63782b40440b225948a70775a9e4656b69c0a3871866c8c02d7001112c14432835dd98fffa0ac8967091efae9f1916b14215635076992ba7145344aaa0f77a8ef58855107fc9f6e8b11910a182c81444a42012051128d413c2107182481374b3386e42e992b5b00813449680fa99dfe565ef8d5d29c119b9a3793597a933752092041124881cc10c1123b031630e5fa1a652f445e074c46573754851538408c9fae42773a3dd172ee90f880ca19446bf57b31211218804c19837f9976ef5368a5a1001421a535edc337b4fa516f98195dabd3a997c8b97b402111ff897734aafc6cc7c8af4c09156e2b3e93fcc28830c1e3c9940a006223ce02a88f98aa23fe5b7b1606317484b9dbcb53ee59eaf6043177e9a927bb169c2324885384641060f1e02c0218adea183063bccb08123145e38b9667df95f4259d2001ca0c0f109344397980ff1fc9b8e510619609c41011f3e360424984cce48383ce1c774d37fa13c37a8e8f837011818c0808fa5c1d3004727b819ad96bdb92aca553299cc8013f79edc4fbba473924fc964a2ffc38c4d94bc5364839a89ff70c964a209f55a8338f968422965c9649289e433a45525cb75a68209453789722da9b9a3ece31287a7309e4dcff907a9258a9564b26ebdbc684a9530ab3f25a575c53ac30ae0a0849af9f37a2fabdbc9491c3226db902949182fcbef641232bded4830db17fe43cd27f12148681a848e9e93199d641ee185fe8a9b7deb46df02381cf18ab8b533e1696fa1462c37a3947ef3b3d98b0c46acb9a4cf597887aaf917c0b18847080b5d65496fc710033814b1881711429d7f8a66004722aed1f4569db6528b678850ffb45e8c674a261330701cc22cea3b63f2a14d592593090e43b49d5134ce53304bd90a70146217534953ca6bf03580831077b8292da6fa5a546e32e1a1631067316941538875c44010c8c8196516d5d329cf4720f830daa34bd7c3790e204e954da8eb5f69131911e0f8c3f726e4c7ebb00438fcf0f8a65c69b5989b6e0870f441d7a8a33f65dbca2b8681830fde45739ff3bc1d449f021c7b40dce5ce1bc6d53cb41c3b7a8c00871e8e39c3e92da593dafce581d3216a9a9326a129c581879296f0dca26754ffe90e697fd029e75841c860dae1d5d1ee9f4a690238ea90577c4c316f0e071d0cea35978d89adf0f11c3e99b35436337df2270e39b81af3ee736fa64c138e3838aa1f64ca26f53278b00f0ae080c39b34559e8da23a8ec5c30427c0f18662503197fde6b49d6e3778c1c294bc69bcbf260638da80cab95eec3fc82ce6b3814f9eed42770af9d88d81630d6be82826e39d1d38d4c0bfcdcb6812c277f33420632e8f93f9ca753568c864b4afcdb40effcf197211d1cea661c4f56638ec78161537694c612cc3dd5642c6dfba34ee91015d9e82298f994a543306c7c5c55e54f08ed116432f269b7d3e280c5bf56eaf0671996603c3f99d84ae4d2938bef0e8942f3728d3614a8ec30be8bfc9f0d89dff54787d343b0c7074e1cd6d9fe6252aaba43f788c11061938b8f026793fbac62d6c9f2975d09aa405db94deb4418695d9370bc6af4ceaf9c182d72e7b6a5be43cc55ce14ca5a2295d995a5164054b375ad6a0e495901300aa80a30a77785175bf22e673940ad70759b92153a690bb898b5095d2688a4ba10d21aa84bee652c28b82b199d17fbf85829bf7479e30f91b2ff6848392fdb154a3389cc065dcc558c878260f4713d222732997bd3898900e5d4ba32d54d21ec3b18484aef72445b6a36e92047028e18f55174b777dc56a702421252ea8c7a60e001fe040c2a64f577aeaa09634031dcd011c47f8bd3fbf9a667480c30865ee1afdd67e5f1f84a308a8111f66b54dabe57e070f1d1bc04184fc2ac584d2663a8b0c00068e217841fce992da9d624a0bc11ea5a6237394e6cc974c26397ef830a3470e1f3a26131f63e8f86186e20842b759db9da479141d84030808ed674a269b71fc60fd9c295fcc5f0770f8a0d1b258a9632aad1ede630412c0d103ab5e572b8ba58d2ee2e0015f4a657bece88725954c26ce61bc5b400c925d94ea33780c2bbe5bc0cb3883044ba28bb4ce4d86b3d51925e6a218e4a2d5eb7b858fe1a2dc6d6736a313822f7ee818a38c305c40728bcb9306bd506f9a2b670bb5ac339eb8289af18201925a5ca292cea1930969990d818416ec76b9998ced239377c69e80070d48e0009259e8232b7b597ef94f2659a0f3c58de7f8d5872f16a6cee8392eda680d222cce9a4b2e5b3a25b39baff03354ed969aabfb20892b780b57f13b651b957f0210d08a4396ab790a1b7ad6c28adda28cba76cdbeac0faec2fc417eadff8c0519aae24d1736853badcc20492ab810a7e37d45d58c304850c1e905cfb9d1ee3263f0e0914a40720a3d578fb2e46fda45688aa45ededf189995db9094a2936b3ab467938ca94948d166b2b3b56469578f1c3b78e870315240328a53b8c80d3ac7fc7aba28ce967dc3a645120ac399bca850fb1c17f600092870511693dfe9d8511f5f907c824b7931bf848a22546b249eb855f4a5ca9bcd73567bf0c8d1c37bf88f1d3a2a40d289525af18a71b7c684b0e4c786603229f9f18384139baac7f82892a1a3c78f1e3f4836717fa5c7d1fa6ac2d11ac4f77c8aa9123381eabe57d5927e723d98b84d54669fcd5cc274b25d4bf4d95941d5250d163795c06b2db9a59a8e759812fba7553eb7ec21c56303c9241af7d129c5b83d224c12499c64d3c98b9f09912549241e996f84e8654d174e1248b8572a84dcd95349a61fb19d6bae4d6dd7b7391247346bc23d5fb855cfa146203ae52c95e2725eab18f1d7ede9553d2d9582248b40c5f8fa235f4daaac887334fb7992af0ba74cc43934c694e43756d00a115e34992de6d11f22cb39fdce694f3b326e884474ee68e962a6ad18cf3490430c9242bc392b085d9b2fae29d5c035d0c369c0a303868410ad8bd6c79862acfc7110a78dd7519f524cf29f1c93c98f1d3a788420052482485efe132d4b9104e29bf18c9553e8ce584900d15b06b931def26d12fa4337bf173322e3778e1f7a931b4d75e31d3c6504250802491f922563be4ef3cf416b4220e1c39a938f0cea83c6ec9140b2073688c8c698c21c6590d1a3c404247a78df3a0715a5935f1275cb80240f68fd3d8b175486d70f091e6acf1cbb0ed36959b943a1bc72c9feb9270bed50e8cb362ff515b71c923af031bbdb9ea7d89d36123a14c6764b54d37ad3453287b56d3c564e2342ae4e22072cf37aca799831ad91c4e1ca292e76e7ae2827091c4edf7239bb9ef3e60fc91b0a3a42667ecca6663a6e70eb54999bd8d89b3f6de0b73af77105123628efa12dafe7fffa202790ac01d5943daf2fe79c1f82f10312356832e3c13be42290a4414b9aafd4099d3fa64c8206de43988e7249d48a7906af54ec86d3a73267c70c8cbedcf5f3b875a92e435a453b7ef4c5568749c8c0b6788698d3fbb08ce1fd2f9dd182fc7a4c9388210b21b629e7bef8250ac339bf5494a9a867db0143794153cd08ef0d36927ca1f02ce279a4a8f9ee48bca0884fa63648b50b9ae99f1375d3119a4102122e20d4560c2ae9a89bf4df425294ca559e4ad97222d14295dee3b1eb4fe8fa3e409285d455a9a592a61090604133afb3a44eaa77a9245760e35758cab9baf5345628bd3ed7774eb6be7355154c2a871935273bc61f49a8f09fd2a92bab9f95c22453b094523532c596ca7f4bc1b5b3ac591745812f657b6284100b3a143e992e736c8b8c9e26c913eccd3957d69375e2da239038a1df5377cb23f5f582489a70dcd8b64fa6ea21b338206102a2df996e6ebba53bc912cef698622afc4ad84fe87cc1fe4eff4b2449406a4ead8a6e99df4b244840547d8c3cbd919ad611cc72a1e2bd436cb9586280223182ab27ae6495a757ef2445b84e636aa8ff74256a1e2444c083a73bd1f39df3834886b0c64ce6dab976231221205478ee9f2a1ba5bd314882700c1976b3a2a9ef13f7200102772ac4632ea635ff078fec6f67d1ead81f890ffcd4d1cc4c63d762f7a058a5e4c618f2deea22e1815922838b8cf1828b7a17eb06613ac62a757130eb56ef334fb33d175e5c565505d1082ecc77d73452e4b750446fa61e2d2ae7b6d8e27061c293c6ee69b4166bb62fff20263ccfa64599ba943c7d1694fc67818bbaa9189792c57139b5859031e39b128b32f6edc98b225824b7b2e773a5dc2cfe2bdc1032a22cf8dab5c915a9a02cc6d4156fc5b79bc43c7c523977cb8ab67316fd96e73bb55e45a5836d68089954a8ae0acfd266766c8d7551ebc1482a92d958b7967d97ef840a3f2fc7d2d162b890a1198c9ca2704d613abd678a520a27738a0a1b4e588a74e3a5d4ea9bd37d8a1489aca4c3a912ef96fb51202be6ceb0dc7974cda23066bd94719609855be6d9435f338a3681221561e7639bfda299188c7cc22a55156ee3317d476130e209f6647d2ead2f5a679dc832e6bd7d335e5c9d1367d2e9b7f483c919e126dcbf14372a4e2cc77644138d1cfd5173664dd1cf914cf875319d491921e7b323984868bde89e6aa76bfbd8121b8c5ca22e15a6dae25957ca9638ce2fa78e29bcfd4afca554f9eca73c42894a544ea99753f28e9231320945a95c6f32a697af4712a94d9e73c9bad6a69848189ed2666773485c2a7925912e3ee20e2a67b1ceb5c4788ee8d2faf5a6d2222d2795e4d051c6e6f03272e448c04823aa94be2ac5d2733985633c8e30c20e9a5f5e7a1743ec9233b288e44d89ce111fe24ea964321183470708e06309a0238ad03fab559de713f2ca1231c4e0d18132787c60321183c7180e1849c47b61479312eba2af1d41c495749e7d6716bd55fb1839049fd773fcaff83129a711439cf3773f8b8c65bba692c9a402238528271b31f7f9545912219ab9d076fd969141983db3ca56ee0882bf51e31ed62acc538148478f392f670e97a348c6170905238038ce4717119af29338ff908f927a1a3666d2f819f143de1e74c9cdbf51f51be94362bb6a1f83f813653a63840f5c895a1da519d90366258427cbe3295c0c0946f470a89c0bcb5195fc10638777a0062379f04c8caece67f93e0ae0010b3ad7a6a989ce4e2677486b763acb2235097df0d0e163c40e294b32376c9c17d7eb506b123f4d29362ea974c0b37bb4ceeb1e75790eeccefde90b3a2372c04f4307e5d9259ad22371304589c6ac7bf2f56fc1081c12b15ce777fa8dd9a85490420261240e8683c150200c048321fd4a00631208003854240c8663d1704c59b71f1400004a2e20504e26242c1812221888c3e1604018088542c13018100a8503a250582810d35c12e5036b4e1c78ce69932d132ac87f376c0a7c209a310af2c5da4b01719a7f77bbeecf40b83a11003077a21b8e286ca69b912ada660932ec00b973d7ca34aa109480a9304f34a8e233f879a150b7c7a19aaab013d05d6c6f5aabe031cbc9e8aed49704377f36b64211a95952f12d2da02a0607a140c34f1820783a98a4b36f44710ac172f37ed97c17d0e98a379442f309f8d0a0a4264a38f9667c0caec6f4db33297c1048eb05608e2610b7968de8b394666c8666f83fcdaa514d5f1fd9d66652278c5688843dfd590baf611c055b20399ee232b1ee02d8e5ca8d2147214f0bc35e042f0868a2c34cabe1c41e6638ccb04e6ba3b433822ee34d34d49e7e7e36d8b5e8b99ecc208c7f6cc2c68129d7c4058bb5bd0ecfc3c0fd886ac8ecf8729a06785670268031670ac6299cca909978d92198b035e6c85f4a8d40260ec7d5d999a6b9725e63bfc5c5d5cd96c415a8b1f2dfe169d5ba847c82f4b8fb26b56879d7f639117e0bf134d0773e33ecdb79c97f5ed7fd8c566265604d23c1e97678ca6b3742d94aa15944c2cda5bbc35d07da73ccbad33361ab7de894ad11e5aa476f39b9d79206ff5175e8dcf81938c52aa495f05a1d9bae28c15534ca96eb1f07206ca49079de830d3d66c0484533427eb3defeb55a5d9431a9fba558aa0124ebfb3a48a728e93c5d421f837f5d04595ab747b6ee7860994f1a497ee5a0512ecc0780e90c9dcf3db3cf8115112060055ec5e4a9f9e96c3a8b6d674f20895cc57121831e58ed7648c96d73b3565847fc56ee08af2a44562929b70b46816d768a550eeb6d4cccdd7c482696cb3b088b6672234b428ac14fc9083da71a0b02dffe3c4d7ba9318ac6e2dee64eec052b7a76ac085e64f5f72db268c491c922328b602ad105086478d86a1a3a7896d219173b338e2710e28064a4a8dbd9ee0732d962674e7aab7041ae42d67091930c820fee3db928f6038ae4ae834b415e074a93ea6bf6c28f44d846a34ef3671fabf37287ba6ddecadd3ee4437ae0f86bf653c1c3c994e2621c48848097f5a448c9561daf6a283b67318ac6124d7740647099503374f612322731e3835d524cb9025a950970f45245c26f5fe53b09d0716b7d8b89633bcbf8e21f71636da48f56dfa876e493994054ff0a6a727fb2c2c0b84933bb2f3396b6a0882e3e6979e6df810f93a1d3a3a04656c0dc8ed9eeba61c69266490ae69508342c01f14632d3a96a133fc8e35b87249701a4998157eda678d4fae8ac089f3c37036c7dd726ce480349363d41b0d013424917139cc641abba0ee938ecfa7ed2e2b92c6084cf4d2be71caac0adc6636c5155edd6b546a9a992a4514a515e60a00522b78ae5e7b63339f8c61d2eeaa5369da09bbb7838b00d010d579119c9e32f9b0486396f9466d21821835341c185629bec68d3d7c49f3dc17974bf944073c017ac5d2d2b8d68b2647020c1d8e294b47dd0e6abd83efe96f754f5ef78121551fc6bbe7aae5b98bd05ce7ca57de446b30838c03ee0863457ba0740d71d94c0ed40a55cba706473111585407c46ad5743f43946ae5c805a28c36b57667fa5a50a15a9c2e7f725e40e3c7e07a7f871fa5f7073e9cc9ea0c6f0802770643ab1a8672c79572a8731bfd317f6a3f91fc38f74c1afa91786bd5298a1e3b9d37729e5b6826d9df4fdfef811c1228487406369a524a86fce3af67069efa1569f2e129829c74f8c9ada05824621a08f5ef295be29c984d81aad01921ea056399500fdcd8322c428c4a10b39b16e253946037d1cef9706cb5acb9206fe87e7882e26da60e382227447c334072d974ae8e2ebaf71f377360febf2acdf70c2486680504d4a1023523e6426a469f50a67680e7ed2ecc7d7e5002ff27e6eb46028ef56f937886ba1f71f60b06b207565040d3e0f71e258d68b081c0da901eb0624b55212d0c891e2d672c103a2baf64adc6af391ee119d122ae6a04eb0c34dca983ae4778ef41cfb40e1c49730d41f40063328edd2168de7e88d1e2e4a86253ddee531cf3e2db554f8fea221989e0e5ad834b3cb7e8e7e7b8d4ebba5ef503e70dc832a3b2da6b628ee47bc659ce847bd7b37778623143074009efbd83b2a0bc40f9e3c94760fc63961cdc87a6ecea255d17d86b260e7f90ac03df5886b7d7bab32889826dd2532a7e0f7f4a5f51f962b46894d52cfbee68caf350cb8392bdc345d9a1a77e2c9fb0b57d86442d6628744dcb676f319966ac26d2bf14adc3085874bfb812e1a5aa2f19077dcfe44bac7956468fd80e670856c59db5c7b035b29e3dd0773d70d0a6214aa2384290a58dd311c3d3f8a5f502e58d42a83ce0f3017e10177c8717f08d2c39bb78fd057241f1400d19b83cffd5ed7765f32ba64db4a748b10f0cfce7329e5e03bf3cd4ce9c50286d30e77f38770f2cd06a8d902561755374aadefe2fe4b9e834612010fb3d9218c2dd9e1fc39d663a72eb210065567638d76a14adee0557b751ef0eb3b45a69d0bf1b40fad4fedb8ed090d8e4e826134f66f1c0238434a8090417870d765577fec5f048494f1e9e4097222f640da076d5e047e6e04ac9b40b80106b9cb53ed9d24fd8aab4f6528225641ef16bd0b2e78c7734b7fe9dc978b08b3324af0b0b18030b6b500ed69dea45ecf007ed3695d6a12195cf43735e9513d5830894ba161805c03182736c907493996510ebfa38e2afaa82a1727dcdf78a3db7a52a20bdfd3ae791ea357de998699410df62a32352b57161460ab5cf7c7688b2d760c41b71442a70627e40aee87869650b873b5c1f2e88084e8a79ba7e2bc0a8195e4117dd95e607a91fc6c637e27d015c7a85a80a7bdaf2b41f4a2284fca1a9156cc4907cbbc6c46ae38eba1c8c540f9bd15c767ca994a2fd09318d029625d4cbd9ff27f442ff70c8dfaac3793388c87e09ea48bc09a4e9bdad72f98712031c1d5b06d7cf885720904023ce04f4c2f1dd9e6f87a5c5e4749dd4b9ec264608e5735fc818c1da042f9195dd7caece35a8aa55b9d33e31119860c63a801228f0fc29b8a9d6aaea2615b393fd06bd0589889c81302e216a28e0912cc2fa27ebaa51f64467d9e3f2a9c1411d72745941dcdc367f519a3fc36034e47cc9d5492c278ffbb27439316d4d499d9971577e3ee1496c62179a1fd5612a9312f17349111a9742c46c077337de9d55c42c60473f118c4382776066fd51ca32957a0e693f84d4ad1ae225e2d31f2aff5e057d34999d59307928139b0f313143eb1606fab7437dfc795e63d6f3d2e0863be99a00ccc14e47bc880bf945fc8b6ee86240546e8e20f7ada005312d8a08a32402a3099dc48005b04ebd0350410f42b77daaa56391f9578c851be0f2683b43c0718770e5f2953bf4db7472985318e3a431e04e5bfca6e84490cac794fc1241a882cbb33a3d4d26739ce1f71ba8d8d56e7326e8cfa06f438c49d7a5c77529d24228428bc90cd615d316d069671ccf08c9082988711dbffce6a63a752f81dfb3632c08a486012ae2e0ba16312104e5b494c2199f22d45e3c0821519724cb68c18deec3e2c1d4bce31777e918acae67030084f1eae512c97a5f3822067b7e719f9fb2dc7c671493dcb43ffdb2145a023fcd961cc69c228bc0006281284120ee0ef59b22f8487dedc948b4923017625ee71c204b0b21cba4cd2c8b45f762d0ef6ab970fc800230cd34c766bcb9d74b8c5ec0851d98a5ec6cf620af54c871454eabe43289c1678f6b5d14a210541005d530b5a8b618e7d3d8e3475bf6e30276b4c79e8a216becd9c28f2fa42aace686c11667580bcfece921be0b4018e2f8482334438aa06737e68390d4a4fd2d98d06d7ebe76476262134902774f3cd2b86b2a02a574b85584d4144575b15abd89484d4414013ea855a66a574cefa2904ca42b6bc03af42e1fca042a20f27a6786c3a26900be509d1036057de7c678260e21e45465be19252ff7c51d25cc6f0c1ecfb51d7fecb45ef00114f2df730fd36561ea68b6a491bab9a48aad26461c82fe90296a42ced524abd5139ff7981e55983c4c4803da67ae7c31269ac4fd6fdbe7783db1bc66f89137c16d843e85a738b59666a3166c0594d7119bc25f895078ac08cf50c5c2cd0305d37a0912ec683d05181b91a86b148565dcbc160b15eeda31458e3ecb314d1a6939255981f2335be6927b73c937161576344f8fa0280db8d60f71270167a120873c80da051ea40afd078ee29023534696881e25508b7f7e3474f31f04054a338d3b26db5e9dc415dfab0787445ded7c903a564df78ddd24152fe6e8ad4e01db8e717fa99abafbb29233371b16f7351b080b6705962aba6af20152a1408fb108b66d83fab7abb4fb81e657745afe62c8964f08e19e0b7242903b5eb2c085ff8e03a7953370f34bd6b63c9ed999889afaa02460858988dbbadadb8b776f938720d0cada19348e1d0567303030eead4dbce4ab899ad5d03c5585c4647bd3d72a22ed7a3fb5e30a570462f1a3f9cbca0d65d63442e2068bd0db3873f00b1f0c9b1a2b074400c505692f761a62d667fd7d0a9aac345ac4cfced8664d64db5406a50f06dba1298d03708898d20728208a220fb036f31f609502042220600d9dc18768f309098b02c864bd72874ca841e93fee0fec2620c816145cb19e927290894f0f03b7a71f2bf15add5c93a9de4b71fad248c66bbd30db2ae99710c9e97252744d9a634d0610ae09f5bc8ec31f92e7693e8a272928fdecf34218c9544772a0636fb0818f9d95325d92d8effa1e8b22c58b3eb345b100992634b606942f08665ccf1a2a9a2e06f92fb858d055a932003cd9e154d1e9fbf56d5dade9042954c75460d6547e65a470ea1151ddb21a54d4594b3f5453571d8b83b7c1871de7c72255536ce41a98c46fa615d28ab6fb7f50c27ba8ee56662587ddd46810669bcd2cb8d271769295ecd8f650609e79ea4788ab28a078a2fe477e0b864b87bf366c8975215a29a669b6d0f40e899b50912f8b76b9d88662deeeaf4be0baf760621546927b2c0d25fea91e5b61417d10c6a3534fb5a60d8950f8c6d2d66dcee84b9452fbc80bfb5c2ed2b59a8b399d27b4dac4e54778d339c158a03dc48a9e34793046e3e37f40a9a98c426085c12049264e847b5c6f2323275ce1489010165fe223c96115140352403ea5eca2e48ad76664aca547b4b9b4bb14c9099e8434f5a3510b14e602d655fb27415c4e901da09dfe039c0f363b4590b1b78f24e557dce7ebc184bcbb47e9ac58d9666c8290484e9575f3b8ab3f31dd22cf753ebfdf442c89e34507893614b3bb07299b927ee03b2da468c441c351d40bfce8c42402604360c49994ce2958b031c14496bdd1a50aaaf02ffb49a3daf9ed9551e5d59004a2e4d37a8f6bb20625c693e88e959749c169f68db8277ccec9a514c12b1c3f91a3e2a43a72f52359a3b2f2fee09aedd29dccf6db5523e21299bdce2f293ab6cd48a1540d99100655d1601926bd8e8fe68c38e50c1b77882736a5156e68f74b077573e64b262b5eda1d5ae9f4550738d4f37477e6dbe3fae722501d6f83cda1cc456201644d0deea02fc86f4068a15cd3ca95a805aa9a8108b8cf3292bc72f28f4958731653a2006c90678bc86bf8f6065a648185ce8b5dd4f46993cb6783e5893a9c3e92cd24efa4b4e2c5fea510e756b4f8cc7d0a4e59c1413eb7037b70372f2c3358077fd9b3d9a125540f9082b53d885fa50ba48eddbadc6173b44b5fe51d5532e31ff04c6289f672b2b1bd9e9bed4a526406a0be99bad1d71a1d0b71d66169c835a3747e0479ae9d8c7944ea714dc724f71e6ca6118b7711f0ea1d14e14822e900eb577c7182823c7ab9e504fd1e12ca70e70c1341a6f6180ab8a3321ff7ab93976014af49352230862a94df25bebd623c4c32fddc652f40281b21d0a1d2238cfcb59dfca35cbaf7de910ea3fbe9db14271dca75c91ada22b8284cf1cf4668f05ec6697b8dc2e57d3c069db3865f3d482255a6881c06842d92111881e933f5fb443b402f0b92753310e81bec7f9dc374ad4671c0cd51aac3aef43fe05cd751cdcb411620c88b1e2458d71bc3ea874c853e42fdf436e3eb92b9d999fbf78a5f4155bcd6c2b506f97027e24aa80dc7b04fab6370c16ea5e18540b12e9868eb9f212a560d83b1bacaf6681f8081a8572bf77ecbba782357f2f7cdd07a5295fb423ac3b8ba3759d68e290bf6a8abd2f765b5a3c68ac2d58d6fb02235b1b2a82aea8f6b57b2b68b921e9212e1aeed56c7e1e263afb00ebd696a9030128ecb21ec0487bad873da1d10ff35ccbf5cd49a165023c18f8df1440a09fccc6be0efb9db4df1b580cab7dba59811b147c45ac5f898fabf9fa66d043b860df942d36ac7d83592a51384705167bd73b106eb6b355a5d8c50ca45ab65bab13dd1900f3e2a3dacf10eb25be48d6f8653c48a22ff2e813448532ecff188108b25ec8e3fa0b001cdf7e0c622474b33e45d307c9c9fd9942c03d7f774a54e3c3fd5f70a4b7f437706fb6c15b2fff38c0b59936e7f1320b833072823a1bd02ad3c34cd04d012fd6f716af2c290b945f6dd528caa7f70d5111e43ff2e6e7de08eb5fff682d9056f1f6c7a74b1116262d3c837f14e4e54c383c71f0d18b0df1dc5ff77fc85ba22643595e4af71d1e90d75f25ffffda1212941b734b8c3d910f846d95da8145630df6c374610938cff354c098e126037267c5384026da10c8e7cb7b2300f72fc46e66ef4f1638972a5462c33b4ea2b16426ca5a4482c8bf5d7b89dfaf3bd790eaa0707aff17225adfdb2c62a8f2c9fda242b9722a31f7d37897e4363a47939942ebfdfb239a341994c68d0ad792f29a280325249d3d00020de2668e8e482689fe80e8c8483bb29a292321ce725964f6c1b2654d286ce280d23d88e1ca933610efbf5bc4a981d12b1f0605a433d97291ca7a9b4be2b151cdebef5dfb649175da8945370c31133c8931fe018e6a42a575b0883d36f5101aebc0b9d022f71b19561f5af5d3422592d0c2b8c2e11935e01056ae90ff455d44c5f46a4053854aa85394b07ee53d0ef1d02ad0d569a754ee636282437376ce2745d3eda1c7f5d9774a8f50107218a54dc815c372a483c976cab057d50987832a14afb0e988de437c39ee53b720044aec89de5412d05877c49877a3070a6aeb46423ea242b7a0cd229dc752df20967810eddac69c1d82e41fa38624840e9bcb1d9f39b4d4c3039cfe7aa30464211d0825ca8ebaf15a00efecebdf0074523b13202b7a9399004f5ae6939c89dc98bbe519013de305967b3d17b353c4ab93e8c1d14fdf5cd663cbe528f0fafa73d9c7ea363b531e40c1da8b4b69f40ca49bf96fe44e623cc05dc6478aab04ad9caaf687d2c81a5204af9acef6891c82beb88619b62dec9fc27162a3c81f831ac23d84b1d941c3dc3fd0640bcda1cdf877e4ac99272d58b6364dfaa64993b1496e5a8285c86bb1903dbdbc2f1d4b298871a0b3f35a77d86c451e2ee413a966fe0b62ff2848731200dc89a72957879d2ad5d2890345c54395496d61e2bb5a5649ac826457cd4412c277603d093e7802a4f483176f07ec86e36162fb725bed3c9a817f635b08af9f11b233b2aff27e78426ff3f3be311c120c2a8de2a434e7c2a70a83c19c3801d23691af51cb380bf964a99235b22fbcfa6e7bde36a6435215e939cf5bb32e0caa02cc016e138f7fc67d43d87cc0a582dc563136d50e25f464f235223cd797640f91c15e6d39c6b760e0c677dccf4678ca5c6c1b47efc9da8d8c02e0eb9ad8f429dbebd240c7340f02ccfd936df0ac26288c70633f19a115a0399dc99d41f937338da3ffa640f30c4957ba0d953a1c21e63d71a893ab4d7d94d85044039f6dfc8667bfe21d20481beab89a7aad43222b06083b07c9e5071de4489119d67eb51f887da0ae1e95807d55277ef6ad1004838395e25b824b760f0bce27b2c106a0ab8f22a5eafeed0033bf3550304b2e1f4c5d9e88aab7e9286286141953eb8af3f375acf284f568d268fc9822d2a34fca8f8704523edda8707bcdfb677dde6e7accbd0ce4325acd34ebcb9ae8c6e5358641ca6e628ddb989700469b695ab73eb6f636e3df0aca4eb981f63a3090e78dbefaab20c86e7edcecafea2207ea95b89def7ee933d1fee36d9691c129fce04d138c34735e3419529b4beb103b0d11a6295a2baa7dad2306d1137d01b01a76c3e46db0bf4e65ea33ee8b6a361ece640edf420e77268cf5985e4a3f0e37be0a6426055d9c841c38a8a0c0e8e4f6939b3631d7400d8697d3a4e8d480722d93e06433148c08fbed825215b052296727f6a119890f9663ebf1553a800e36550bd1252170def7286cb75c2545a7b7798001931ef1e2f1da7e1b1290b6c9c6a1b3ba629ee88fda62b2a908f6900b5f85400118e9e843da5323f33e1f1aaac613edf32ccc2bc2292712eeaf27bac41276fe540e5a35f23d6bd8f55c249824c7d93eb14dc70d7dc4bc1fcaaf587599082438379c66d4cfa9162064eb3e61e2658f2ea332315b35e965d505f5bcd746ca4356f5a22312eadf806f21edb43dcadecbf1300faadd9d8059151ea5d72f3ee928a086b958a2c81f11c23f6ff817ab13c354f7253e92f40a0bb257210bf611562a83a8d5e133491be89fa2aa4a45c859139fbf4da8da12abc25c9df28a8804448f1580758d46ad8b4b1a57ea098a4e44b4e972886adafaa298382279893a896e743be695dd2b1a86befbeb91a8313fcdcfecfcc9165b6bba316a36f0107e266a3d84a6a7a6aa0fb27f1d07ae76e6913cbd7bf1b8b089ba250cfc8a5e8012de97253f5f641720100af0e30f3583b19f08246a7cb14a91077690a611474b60544213611ce17f7cffdeee430d6f9972bfaf4ad7ca85ae17cb5bc902686cb1a477e8da74bfab77a9b52a9fd7c0bb78997498446e483dd4c49b1f9a2e400617e081d336fa0a44d88edea42ce860eb9096093090842b51b3a52fd94f6c7a35a4220502b766a37048fc92dfabb1d2eeeb5cebd3d54991e73e839bee98fa1409c956b9a03095940106a0a080a99a6144f8f51e1aa144cce6dc0818072cc456fd1c12983a3bea6a6cf9387d209636216fa0410e63391aa4d1030cca584d707e641f8f1bd3fe47a32e1f6c7265ab7c4ce57b4d127b751545929c0c6dfbd0892a7e9fd65b0530aa3106c88bb50a3325902a9372d5a2d70730d5aaec2beca57202710740a17b647be1819a4511088fc93e54daa4feb7d85ebfda293a1ad639f3d286d6fdd99843a729580a7f11118f59ae4f0982d8198b0a09163c22e19f30b496ae5a7087f8dd4bd5c38f8854128ca3a591cd6900cf0c3016c9b3fada9c4323ecc9456998966a49ed5c1701c0e2a43d64641d7b610a0f1ffd1a125f5e57456a4c5c7ce5fcd8491d199e18010a6a92419e6d0bb3691a8d6728b88d0f7472ba3795cc5358d3f3004af6c09874f47319bb269be65ff53c581860d9f4e6b7ee63fb0160c718d9502cff639a22a17cbbdf66e22441c076f52d061d88e70b438cda3274b8486a77aa8095b0eb08b9e3358bd9375bd6321dfec46a4141db553342e6925b6a6d8ebd13265d44b8a6fc321b1e7bc512c3f34ac0c9968dcedfd4c02330e5b92bcf65b9dc97ccd5b2b9732b9d4bc54299e82bdd236f33365076081813190668d362beb0a1b97376454525ca7e0fdbd0eb8418589c4c30d090fe6178130f00c4e1814c541150bbac070e356e80b1f92e352939ae2f8233d09641e4bc5788b151b51d10fb3788cd264d9cae339694520df5d5cce20044b23e8e770bd8a26a14988c9d4fedb996d06d1c8641291983a0edd5b9976c7d4567072157e69a053a393ed5decc757e476a2b63b0dd3e6966cdd5668da96cc125d70f67ee3834c12af6570c63791f9b308831b62946950682b61ae8774775ee9bcbff29f83ab29dbb367d5dba784416234c9b2c5c355b46bd4576af64fb4dde847c52a74b81f452843918bfe4156a4995428a057420127ee16026fa36b63210d8d7f9eecee9e8d1ec8bfca3a6d484bf02e8e1b344ff5bea4cd21b2d1764d7bd23867bc84220d511a6454bcd47f1f6460e495667a53cf38689cac122eef8fa1a5ed137e0238d7b2529f972278a170e2842d3e1dffcd1ada46739330cb3b5d708bf7dd9958dfb9f7d78d98421141f2ae9f4357c719387955ed5e112c5bad10e59162c2ce1b82d18679633bc93b52ee704dea877cfd6e6599cbeac6c9da9656c9cf8d19027fbe315bb25fab9e7e531faa19068dbf4783cd6979f01eba5e64e01e1f1706d0d433b4b822f6628ce990860749231f734063c19c2cea8e705df0b09ee456b9d6bac88146b17927242a0e86caf60454258e550aa910d24d32c15568a58a568e6ca9f4111027bdf643186f8c22f01fa1f5c21369de416e967cf74ef0d8174642d0c1decb67e0c7552a145a627b12f5c362851bda0e6544f3a7a2bf9970128fb77cae1a8bf76d370c1b717536cb77aea61a78cd265a90bd3999b01fd600df3e2478a60a1079231b41099b978ff63a4b4b4ed3a33f1fe701a01e0f7fc22caca572c9944e777267dfa2538494e41bbb7c99557053b4eef4138f0f8346549d711fdf4b9686837d4433aa203a63b7de77aa117b604e47eb24cacdbc39fdcb9372c01c1ea4e783148b3b9f1c57bf3d0b6c39a4ea0fa4d735eaf82cb44017840e04f51efc279a6bf80acc20994a4a80703fa716abf9c8c73674634d9a83226c8deef4917c49c125d7ff1b4e72788d28e7b189db35d8ceaff53a06d80d881fc71206f957d8fb5176f99b5ed1b82e2c121af1ed28bac11651778b93f923eafb218ab80893ee84b0fc65af4b425bf4111e2d47815f0985540573ace98f336bb6d53d7cc7639ae3fc6d4563eca76be5ec7372b7db7e3bd2d569b63da12b3adb86d8bc7e6986f89db16b1b35d32c21e11f36eabf563fb650760e3436ea3e1561a6fa0d106bdb6a4c7d604ba7409f69a4e741c22180f929717a768509aac3d3c6921de997dee84cbc52b52b3cabd762af21ea44482920787cb958b4aa896848f2a57bdd223e017c38ce5d90311f790c89c8d77a811de353af47abcd1c3580bc589893398285400040827b7450a64f594c4aa9f00ef5413c4f135412c6d569f32658c8a612c4ddeba45a8585a3be91a9ce6ff887d41227f8b4374bae93eaab36520a22a994b2e907f93b6563915d368050d9701fe2ae8a67dab25584c7a7a2410ae86244742b07ac0cb5567f1a890d4851fc512cb17b029d92821552405ee57d522133fb115002c6a31d16d98df08c8c7e1c638b999865701eefc45386e6e84aad928c5ba4fceb9c522adb3aa786acacc4a5f2155041f88855d6e78095084f7e8fcdfb422c5dc8eb6c715b925eb3160c169268231c79d74f2ae782eec8f1793e3ad0c8cf9392b4fbebd424405d20ea1df566ff1c455b583c02bb25d3149d3c46cd815a3c4034080ef48f3645685e212a0569b613fc743cc103c18f81b5cc4a425aaf68e52beea0d850c3ed3b99d9bddca346c7959adc8a78e4fc5fa1e85750d55a2d4166d522c55454ef478bd4e52b9e460329b2a88c24f52bc9a47db8b50d3f984404c0b57d69802a08d078b751db42eda12bdb3adb605749345a3d5a9b840d90f44a341cd5101a4a5e0eb7a28324011c22c5431746f56fa71345da2ab3983d916a0600c4f7c4a7234fa064bf3baf3df58a1c6909a64906dc4b024956c4caf858d6b8686770d03e3093e46d30c2f7183403b2f56848b99d80a4fb8c5b7194303f17c1aed102c4ab177ecc1603a4d9352048be88ccef980843f4b4e7b662157f0669dcd4c1a4eeb8868ba361ee3a9fa8db6c36043caf13b5055bcb1a82be8666e5b913454f1802798d858b9639a3a176518eed49843062fa17b727c4232b505ccdca69baf93e983b591ba062bb032684f70adcc1d23571cfc03dee80fa135be2bcc042411b30855d007e1ca03db3e2e1fa0acbdf624654c7adfe5c3798ac4230e55015186c821384221c55404cf14e119c232e0692a341d608cb9b822d190318e81d706c5693cc11724b73cf25b44141c03e585134cb0c58ed374e94840ad11ddf84a4c6b9067ee87f28706ddebdc1ea8b8e231ee41eb61f0dc5f8881c2b9a0b3b61aba614f71b5c0a714ab6e0f591ebeec0b6f888ca29186f0a161b97f7fb3fa3a47aed4a316ff748081cc726bd5508a02417d08686ea92b1b42c9c51e780a8fc302822f204747f28781f90f2a6242ccba76722b0780a0e80d5245ac6ba9d67f698cf64229ca2aeb0ef84d30894caba7e31151f41ad659b3d937f60aa7c01b0ae23e0be74ac5716423b1bcea6d49233ef4b21e1c57003c14d81d69869b302eea2cc12753fff99d9a830ae3057f174e1ad67ed846fd3537243704a18720d14310de10e47b00901b10e840830deea2d7a6cd21e7dae4c8256d81deb770c396d4035b1287229c2f617017dcd0428f5da2d72dbc6dcbf7185b8840cbc367170ae7612f549275444393e3384249de2d39185be8929100e33c13059583402cbe1007612fa7228133e08775e7a9542ef030f735d536854c7fb2c437267eac39f6cf501da9065e643acd45a78e2cde6a144d8a6ce329a427323d894d5fa8b050fab9f0e48a407e64989f4e54edbc6cbac586281527dbe3b2309d54d03cfa03f304dae06323fd42d45661b04c87b009a48fcdc547b6ad0bd128f1e35ff61a37080f8ee7266bbe9be3dbd747c569b6b3163c5a87d80b97cc37580e27c4cbc83e446ed8d7f8a24128e81d51ecb3d6759c004ee99b1a0a457aa70c169a2d2b6c33094121a1c7e691328ec15837879a1444ac70317a741992a1463635ed25413e1c59d089379cf8bac2ae027d5f1a7bf9d8182e4788121bf51d335a0f316aa230e8d6833a800f858fc1e46202f283faa8bce4e7b363dca4e470551e750a2a9f7004224f20312a2c9cc6409a84b79e1287abd5f40556095aa209c49ea94121a8a6a607256143ea53335a5026de03f2dfdce0bb3d7869e41088362b10c50f926451088d3a478a4a1416026d6b0faa64660e299c1af7155cbcfb48c1bc32657a13353d1a44309298bdd0bdbe4594cc9f4c6b32b644a8e2d77d13b9b82880721ae377728e0aa02c2b8d1dde84388b4ddb69647ea81b246a444324ec010fe00b9177565b929b593b611b5e080bf9f4c890d807a48c9b4aae29322ba2507c6998506d7512e4549fadaa43178891d31ae1c5ee68cd7cf0b284fa94705b1fa81bb0b04219a1ab666da1f36955cec08de77bd34a0ebf21e4e4a7e585d3b6021d928130d85ca0a03b94e60675a491d2c091bd676ab93adab187a8fbe01f01d1e42a5c7b6ee5ad9b83019d9cacc0975b24dfd1dc30c684fee3207ed279b6659288e70c88b826fb26e30fa4320c35e3c4c4ee8255a779f31ab408554f493576e15a32646066525fdb73c696f50c5dd8dcb63305169ac6989186ec1e380423fc68ec3def027bc6959520a5d7562db44ab27981af09b65bcc0f5df682915ed6bd54b7cdc831db25e6ea6227de3209b71e2d52c40f45f59da53b12338558b4996e09a90544e7dae0749cc9e55dc5613091f77fcc7531ff7e3bbfa2887ab140a221af91e47cfe52ae3592b6e73d3a82919a092c5a4f8aa6af4a4814e2177ac6b215f9e87ebd7b6ae829c014b09c1ecdb048b7ee80f4d9730d74a63b79b23555ec448badbbf1727492b4bd54d5c6f0c64da5bd2ce20f19d006b4a67a60a31fcc51bd779ec65f4d7574513e4bda6c5e609cd7f80b30aab6fc2088094220a235bb19b72a9f059672f630430b340e53131605d769aaa456696d6dbd6183d17aa0e810a620c1a82dcac5021c071f56bd7b1b4c32f41cac8a87a32eec302b1c9fef195cbf15725354839950651be878965f05f8531c4b79ba281ea31e44107741c8774cbd4b0363ead170f97b0ca5670fd04e5dc2ec24fed01fb08578ddd101d74630dd664576b874e53955a5540bb9682ab82ab9974b3ac170da51784b7e6e547463d30b8c1c24e00062e71e9213989851a219d2ba0dad3bbc644f1d091c7ecc3a46891c6a6172590c84f0c7c7eeca44539b30b768ca7c91db5ded047daa4d87e9083b2da1b20686c6ecd3e697d3c8fe20ca4128bdfafa6687fe8e2205ba215a2b60d7e35a563d974ddf931b886ef694cb00dc26bc631267745bf0d0979edb7fbc62c0f891e23f5756ecac74b5e5b495d09e2e8a0e3dc55b8c064fd32506584c48a049111309373951749e8976a67ac4dbb53c1d96527ff23213261c904a1222a166a3f5658a278861a26ab3a6ddbdace6c001822a51c9dfa576607186cfffa53e96d30dafe1863db6835751079ad83d68983139bc39a33175640aaa2eb3c26a31cb0c2721fa3b8d587591cc76378fb9eefaaea2ad3ba8bc4d9f767b100f16cb0a0af9251729f5bdd804c73130362163256c40bc04b98f9980f10d0ad690187978169cc66945c4733d25580d5d2746e0acfd92cdc797e8fb764a4f818579a6112a0cf320eb00136e09e3180a805cdacf2450adaa013a4f5b863240ae24c901033ccff33ccff33ccf9fe30ffd285aa1b58814692754efbbdbdc69574444686c18ad7badb552ec3bc06e4ef105eb0752084908a6ceb0dae897c4181be29b59abb29c936c312ec4db3f7b9279f22c1213a22ebbc854f9a8d30f42f13649d0ed7b5b5d10eec5132dcec91e533c1047c9878af7c9686940b4369b96b397e0eefec1d97ca7df7ba9214dfca0c79cc4309dd287b2549958b5b9964f3e646e166c7734e5bf3d18e24e8a59fc83eda787b4840faf6abb71ba240ffef9a447893faa568207fe04cd1f636e2d85923b985dd6a542c8a50a2576c04dd672ccf89c62be0ec97b4a27bd7438ad2f4e5438312e9d4362a9a4922489c9d923073fbbe48769f13c0e4cf9a69cda2c1c7a4b72b46be60de7dba8d9937a12c3c50d59fce4f292b216c336249914fe83493995860da6bf9a13a53db5776bf8c28967864a07570d09aa129b2459934a4b83dfdee3d5e17b215a34144f520bdb1b2ae59f010b3a91db26e969da0ce5c93165cbcaf6c93234255ad285980c674993ea7232862f9994eeb6173353319456f9cce438d9ab138674c3e479f9d3b819305c52166395d12f2817cda42fe9f2a245bd40c9bde7943e9b8a45bb40db7c9eb415e5c273d298db776c3f51b750c63c56795c4e484db580488e78fe09179fcfc2d1d2ce243984f7f458e073e96565a976e657f832a63496e40a8d692bb4dd9d46d52a75a8abc0a789e965a159254c052e8799fcd77493265338472cc75817b39f891412376dec3349f4ff350a4befa5f6ccde26a750d04f70d1b7546df1739e70dc28eee7abf2f1394e4836cd78e59e425c7318d0846ca673eef22455180f039860f2df4d52dc5462120f0396805caeda39398916c4c3002554e26b4c93a288a79f0149703af4448b644cfa0c408237e6aeb3d215a37e8ce3fbdef47498d8db189ac6932c543344d7c52889e50a954a88b1bbf4e7181b2bee1dc6a984af8d69d4d6174676266e496bee9009c65ed5ff39f226561418879897d0f727ef9d5fecfb5679d2e98be54a334637bde8d3a269495a9993185e1ce6394ebbb68bfc349370aee3972eba386f5844daf40975c9c59fc4cca1e49373d7878bdc3ae6552ae95cb95be8deb596c458dae2f8b1657f32637d95b5783de3df56d786ab92167bbccff6e599599c2b5f778cb924d94416e78c499caacd9237b1a0fcfc7e35873281c5922657f4e0bfa29b4a37adb52bd8da4ae1f2e5c5326945c24d9dbceea9e75a56a0f5f7df5b792cd555e8d61b2d53de49545594eb2fa68d6eb6c94c45a61296efc46e0d13155afe979cbe555537a7f03a9428677527ab31452667e84478540a19538a2e5a0cfe52498c7931a4c8edde324ba2b243330aa567b3d34251a8fb6bf277b61f37138a4fccfa396b984c33195030972b674be724e7ff1325b7cd9631aa99f59ea8e4b0f631446b8e7b27cce5b1cfe5841377dc0f26c635cd65b289b385c4a7fc6a8210372f3d3161decd44229292e92657e70e26d8d3d31855fed69d4b203def5d69d91b632ce19d6ca95b07cd26a51249feb7e61a0b25be8fb050d5cb98af4ca24b2f3b6927487b5724518e3bd3e94d4e29632512d49b7bfd94ad665620611a4fe539b2f28855cee495c898d2ade2084f63facaf723c3541ab14d470b2a69194fa83022cfb61c17dcbd737e1165b4f8f958d2ee6145a439fd491df5f11d27e2b3245cdc6fcd758c08f64415b1dc1119f12188977d338b275fb586a8adb3c3868a85d0c492da122b749e1409c185c9dacd17dff28283a8be36a6244e0995525010ac98e454cc1888838965933a35ba2a0404a6d71f647b3306ff0f4693bacd277a56ccfdb0eaf58512da4536dc87b523c773123f5825e1c3419398f435477a28d9435e5d115be92df8ab0732e50ecfb649eaf4e6a12c3fe175536a36493c14a6ed7ebab93b94c3e6a01932a8c5cdd9a11bcb7931878fc9cdd5e1efdd7a79910ea64a9e62aa5cf629bc39f4916a2e269820db9d1cbad1529ffad529ede270d2d0baadaa69327670a075a7bb3fd8795bf78693577d7b9996e7d4b921e9ec3b2ada5a53be0d9590de3b7a278ef86c404ed4c84bddd0cbd76096b013ff4cb06c92a861cdd992375a865b933424846e853b99f7fca2e1581b9e77e74bb2e8194c1a2dc48431e1d634431a7ac5648d1b5b2f56863405ed8889f7cc8b9181f1d43c7be9da2cc5c670928eb9c40afa2aa18981b03d29b5aca48fcec2509f44b7a974fb6f06863e6c300dd9fda0ff17cc521dc3faa40adf7be1f44d6d963e7cf5de85d3c4ce95c7bff6c35c40b3891d53c9646abc8563d7cf9574af59b116f23f31c9bdd3574bb2c054b47a87be717fb140878dfd1ad6397fbdc22649d9219fc7ab3d56a0532af1a478aa693a55d8c376fd86f5654a52a1ea5431896692183e660a27c1575634fc7c55a4a0a7485cca657f0ea3a08665895131c7550805a378544dd749aeb62770d9b7af72ade5b172025eb7be6262d6d1ab16d084ac3dd7b2cf4ae6550b60c2d3d1df659ec1dfaa052c01134aee760fb5d2522d400996e05df1c4abbe8d6a0149f83ed78d6d4671f31780044bcc132cee5afff4c7283b2a7c8e4a1e763786c9a4af2449ec183d1723d9f7dddfe6c4b31362bce1325f328cc5bb62d2a4d871af30fae4b9736f8977adc1e0434fac57aab59c030c326b2fb464058df317063d39bdc49c157f244f12e4a334bd48362b71deffc4185378c1db6b5b8ed52ecea431634aa5956e2305e8a24a6b1315a5935e450ac885b3716755733629e52504040417d57dd0784288e856c92d4ab1a46072761a0202620205d8828ecbf227c6140202720305d4c2b4ef39212020b4603d467a7c16ad4d422120202450c02c3e9d89de98c4acf91c59bc9fe339f3bc58ec9fd584e9e0b13d6c5898717284a5a5af687e0709eb130c31495656ae2e3de47082362a27da657334a1ff4e1b2f88ffb9f91c4c5073fe4b39650d796216031c4bb8b249972edf9b9e398712ca94ea0bb131337bc49184de325afb321572c3d330c33990b0abd768b8d734a7e1312c31858de61962f551c4188708cd9572922c5392530c338e49337ee19ed6d220420c722ef7ff530a9f2435a4069161fc26c9c53c17d5b57d061161a851e2d3874e52d19960b8622952b67732b6dd820830724f92c9a5cee9625c2f88fce2f774520aafad59e2490a22bee8844ba1679a482f92dbd8345927ecfc6a468417d6a5897c4f8e576622bb28d95c491d4a74617cd894219d04cdfd86870021920b638e6476dbfb5f8e70b19c70a92e9fb871466e917cd77ad67edb02cb4bd9b6cfd62249eabaf12b29945b660061cf88d062dfcb60d6a5b1779364b8a00242b89186191d88416416ee8ac7bee84c166539c924589c63f1c958da309632851823b040ed424cfd63abc9455e51fc1283e6a87593af882bfaa415539d65ce921a6985c9d286ce4939c6d81f6105111b675e35e579f94240408460c6dee0418d164456e1d59b87bd748ee3abe2f35c3126cd252757a93044c5fa3c27981cea244104156d2e592a7d2e1090c829fc7c8f9e72e2f57ebc820b444cd19449e9c5444a92d3a602915254ed3a1d532a420ac43fd3526bdc8c5f4546c19475476cea8aa72d228aab5e4a0cf76e32662414dd4649cfe07f041487fdcd97c2cd69b8fb13b7e6182649e6bcf92fc4136f8e693ffa7c96f3bd1376f7a76a1af3f00f27f6f09a394c9e0d93d2914d24e52907d1fc9252ee9a2809fa6a59736c3aa1cd8431ae73723c0fe3418c60e24f93a563c8aed514bfc41f43eed286978962db5817e4216209532a4bcd955f093ba309ad623b25dc7ce1e369acfaf7ce240e2d2659888824dad4671e47334aa60619a98844e29c9f72c61b39892acf38c30790702a8b9fe852961ddc1b0e041ed8f03384c0022d441e61ec6cfdefe61d91fac5deeb147e62d88d288bac54bc5ecef918234ed1f5763ad7bb592ab20893589d49f8541147c8dd892fad1e2f1f0202f2031d48001091443096aed73a8f88c89238265a8ebef5f9810e6a9041860b462087c82188ca5d2d3a96c1c237c4ed666b214c6ad52c0eda3b528874ed629fe6e95c7e42883fc727616353eda5060ecc284307bc37d2b84164106b8e1f7b890b8f9a0a82b2e9bcd15e0b010199412410979863d5b3c770974e0051084d61d2d4a5ede8bb8d1a36d6d3404306913fe09f3a4995632e3b49da0fd64c54123fdbb2e4491ffe0af12967b2a57f950f9d34279b091df53d5e640f48b595ecc7f2d8138be8c11c73ae9cafe82a97c9036632a5e9a3660537d240632378483de43ae5fa0d7372913bb47d6951626cbc3f493b1c7af94aaacb4941a40e05dd09f5edd80922742893c68ceed51513cd0a2273e84cce6e592a454bccb1e182881cb6d4db26f88c5459c8227128c66cc32de3ceb50d875af37b92eaade48fe91b4edf9b43758d7d98e6864349e2abfc4915d3c6226d48d29f8a214cbce3b611369c738a757e6fff745712226b50dbdc434c2e4df67c0808480d1beb831e744007ec211bd041440d97587f9fd9faa11f2f2392064e643f7eaa146ecc130202a282081acc3d1dad2fbb1a9133e82993f1c44227f76c6f740004646f780b226630b3478b39fa151229839b359bb5c4a49a36394286fd35e79fecfc47c6406ff9c7dc31b9f3783e1011c37147facc4eb6b12cd041240c957ca9a5ece44e4f6347c080e70b71b217693949c141e40b7a65590f6f35bfd5431e60112f98f2e56d57712998de85bc2461755e552e24f96e7293640b9566f397ff8c12d3e240440bc6bce95965afc26b269205b7ef44bc523ed79e43de6f38077c04112c3427e679d48db942497d2a5cedb582e1e5bd369887789b2255a853864ef1d2ab769aa95006b7bcbd511df354640a6645f3b496d1c39a1d91029eee77252d722d7322512809a95f5a9ba523cc328050c3cd28238940e1cba17de962ea24e530e409f67c968b784ea9ee469c50ba4ad74b494cf2be186982a9fe5296a85369331a610297a2d679ae9cc4898c1b0d48c3073b784064098ac70a9792d4b1da75253ceafb1a5b1bde7e26c1cacb1c2dc4c5041124ac9b926839e4fdc5d41fe31c56599a69632fa5c640cb3493651b53ad18038ae1e62839f889666f9819408ccb53747332492e6994020c1846d3f192dcecd59f2f8c5385989cf08fb37d30b2f1ce9cf3e59fd68181eb9d24f559695fffc235d1462cf794a7ac2fd4d89a551e6241dc5e78f272621f6b46a3bc38b33da879ea4ba8bbd846e44dce39af8b848d796f3fc9612ae67381d4458b7d32b997f2b838f34ff643b7d554fe165edcf954f198b1dcdba2d571d9247a1cb1ee6b619cf93729b4ce74f6b4384abcb7f82a753ffd2cac4c5ec2d4f4b2506c75c544b774f9c7a29cb14bdeced2ff715898e3344929e5dfdbfb156509995ebb2c5a885d61ea34665ad6aefa6905a7e13d98fa7a4c0d2b98555b9379b3922eabf8576c433fc5d91454c56523b7feb9546c6e7a927841e535e5a828d9fbc58fb21d2ce4a7d836c7cf307672dac84d5149e94c2cfaa5a084b3971413a27b278529aed372cc65f4f82892da2dba5d164541c692d02559921c0e851d2fb4c778d97562509462db3ee57ce2d53bbdb9b4eea827aaae97cc59bde64c3a41c6cfbae8ceacf37202135364fdf36b8b9b30dafc9cdfab5cee6842e9bfe4db71417332a19aaf099ff3790e13139dd0a953b83d21ec4b7c31b7f54c92e673c61255aa5849924a258a12739460b2347788e8d3d12641997ce249a2d3c42591247f9e2f5dd9311589bbc2a6da6c9704891a129fe79c64f98f58c72c4a54dd11849510dae94624a5f42e19c3a6a6668429fc56244a5e441e6332546647770c2b824be6995f19ea7be144709a3a49f27fac1c4446446df9c3e7877c880adb746e34c90e4e6c827537378db579f47230d0a109dde3ebe9491b621d99e8c0c4967dc358cefe253c393f9bb072d9ae5a4bdc7e5b7fdb76796a530953c593ee4f8612e62ee193601ef79f9549e0f7761e644a2a5f49547e9f63cd3d26fd446253cf0bebcd233b1e24b89452d8307f21f3f988a4f49725b9558ed84626c584ddce93a2462475f68ee55be960c4d6b94edeac93ee8f2fc2ef1c3919d3b746651451d0cb1a37ca759a551291247c5cfd450957bf21e28bbfabe31046e6abcf2a4b87210c8d295cf80f2b4912e28e4260d515e25aca724ad04607215efb7c8267bd90d13188ecbd3c4705f39acb9cb183ef10049a433f414720ba8a949eb9abda1f6760820e40dc157a266f43c752bce30f491ed4673b6713cba91fee781fb99ab50f56e9ea581ee949b774f0a1d38e4df1f7e3d2513aa3630fe475885d889472d0a1873ca849335cb552e72d477848923a4a10c9fb0ee5fc296d989322820e3bf07bf1772e98b8774e1d3c31e86f54b1bcac207da0830ed6e5e09af57acc33650ef5a539ad306fd919d3218724d1b2ed66f7002a74c4a198ee4ebc306f083ae090e698dbf2d4d23a75c71b0ade92e93cbfe855d5e1063398a806bbd45beb78d0d106364b6e09621634a66848071bd4b6e8dbb8f390f1afe14b6ac2c95c10d7935743712ff6e48fded9ecd360aabc19fb45375af66850d774c3c27892f4f43394b29bbcc9e4ac4e62dc0cc44613f3982c6aff7919fe2463215d244ed89c0c4731edd4b0961fff1e83dd166a723acd7ebec5c086959236ed7774b1c3c0cfe6fe8e26e6face60e06a2ccb43b5c74ef3170ef763eefe7ae15c5799c4da9049ee7017c819ff29d56ef50a73e12e6193c8b76f768eb7606a3f69eb272d559e6841ad4f2f9d56d509932c78a5b9f2e7ff5af2b1a08c5c89f56e6942bd5738780a4f76e35ac118efa827f72539c5adc22575da245b2c39a79e0a7c78b3f99b750a4ad5a630d9f3456d550aac6b5b12d1340a964c9698ffa5cb3814124f3bc99b642b0ff7138eee59cfb4a5e2983821133eac5c0a9bcb529a70c9f7f67bdb1775644299fb35d35ab4ef2ce1bdf5aefaedcbe01d257c7b279fb3e76bec49f0939c2967acb3030954892942fbd62eb3790c4c8e8d6e3de998348d419724e6db98b218c74bbb1a4feaccfa1b62a4edea95efd4a34bcc30f60d13db35cfe9a011061ecfde63c74b3072939245e2d349a9a400c35aafcfe059924969f9c5d131e65be7a4984af14597b155412b095142a517aba7f7bc64232f5e8bf9695312555cc65db81a6353b97c0ca9a22e083d312ddefd86493117fd5a5eabfa3cedf9c305dd596751d35b7c92f0a1ad5a131bdbe294deeb254aeea9f46a71f84ccd19ad042b29478bebc4d8a0a1fe726b378bbabc3a6dd38fc5ea6491ac79726a9c9293c76341091a2b4f422d8926068b63a83ff96ce6d593d82bbed49cf2e4fd39abb92231c69d6f8db5c28ff630b9635dfa6cb102570d9af1c5f3f25aab504d08b3d4d6287a962a3eb92afda4a954186782e592a205ef60a1e2f133dbd87866e13fc523297576a92d64dc14ebe8ee4a8cd6f45d8a5c6ca3a6c7a430c55cfac1e48b994b4651b4d2abf3d5aca58ae20b5249f07028b829d7aaa8e992e580a28abbba6d9732a5f909fdbaf3753de2f004adb631db1e3ac65386c0d109e584f293a4cf16ea921c8183134c4685b05c29f55b926313895ffe61ecb35d924a02e0040e4d1ccde4d8515b391c99e0c0c4d1a3a3abbd0d010111c29761e38c1d9481c625aa241d4c2c7176ae50f2558e69420c0101b9a1018e4a7072621aafae7671cb073828f1c6e09ac4b8739ff3b9362ec031094b0e97b752ce774ec27ee30c0f704842df54529d657d9ae432c01189ebe274e349af1dd7c0000724fabc1c69e92d55be1e61f6a76023e9b171061a35da8c1d80807480c311c54b4d9ed94b9856310404840c13703402ff0a1534e8c678b916233a33abf827fb6666896311faa75426c9713a797f3814a1cc9968fc188d137024a2127a63e7b99831e720c2d96c5b1d26b4b73c8e439ca4da4f429f14a3936c1c86f07395b8f39aba599a34be8c10346a7014a21c1dfbed627c94d78cb58182e220c439cbc49c75732fef07ae0210901ff88de718843b3e1a0e41f4952fa64c8ee925368e40fc31e69cb3636cb0868dbdc1018834458f413ae354dc4e0808c81f92d2c414af3e732b0d1a6ba3c6193cb8d134e0f0c31a33c79c312b2de0e88371291d1da3e984cbb2ffc00c1770f021f18c2bb3132b8d292164acc0047de3043638f680b59c30f2d7fb195c1970e8c15fad8ee929bb01471eecfbf1eb0ba5a1bb9e01071e34cde7a12ce5dbba14020252030d339ce30e7499749f49538d45c60a4c0002e23692a48c1a1c76604cb22458e5f0abe839ea90e7e4fff58b05b11f071c7438bab9bdd76e5ec03107254d48bd124f1770c841d1ba7c592a158762640e9bd1fdbb4587033d26e6b87f25d97f83b93b1693f0ad1bf46ab95aa90ddddcdbe9c69dc9a5b3a1d3caf59ad25b9dfa351c35668dc9b6fc182a0e35dc6f51f39f0739d2a064664fbfc9fec48ed7b0b11c68e82443437bcb1c67f0372d4e8e99e6369b1c6658a77366d433d9d72a1c65c8542cf9465ccc41865ffea433e4599283c4310683498ed745478969730e319cf13edde7b69fb6d3081c6138a7c8fe670b9d3c49090101f9751b33e0008331e553b733a1a43b45e0f842b69dfb525209651af6027db1c4d7d59cc24aa50ba8ff7892564d8eb4900bd7c89e77f7ff88fb5b302541adc25894a55c6a418d97725be579773db3c06c66fdeacf26ca6e1c58a0f6e2c7a509bd7efd155a71d33865a7279c90151c3fdbfc397dfb55d879f06684a06d9411b2013238aab06a6815f9f0f4ef3954f8725ef7ab8fed9a64a740a5eaf08ca6a3e3be14cef4705287a81c51d03e5c765636cbd8a880030a693889dc8b0b6911c89a40a10998913500020d10828d34427050861913200a9ca1403980d340c30737081000212413480000d240c3072a1840001c07eb031c98b1360e2000346e38fba07970e30c04b4000069381a9438630793b832d2f841192d892b230d1b21686c8d1a08f88884013e2091c97f6731a1ce2b5f421e513cf9ec999b734cc90d71446a99b67d3442af4c0f26d6c1e4fa60c49591c68d10346cd4a881808f45a0ef951b35e7d7c768c8b1f20108c80efc468d1f94d135d8cf400304040d33ca48e306093e142184337807be83027c24e26ad438c00722ae8c349a073bf0418d1a08f838c48721a810959c4e2a69b4ff20c420dcb4cc9d728a414cac0822106bde1cf2e45a3f009147c854acd7fcc1f96bedb4d63ffcd088d7959cf9c384d1f4213f0f33b7f79c5d627c4816cd294939c7dbbfe8630f7af0cd5a773db522c5fec803db7132ac491a735bfc030f99d0953cfed86a67ebe30e4c0699bff1786131d9214937654faa54b5697dd4e18bb93daeecfaa043aa19d37a8ca1df24d13930177c2f324f22f890c329598555d08e19e2ef003fe280ee9d1835d4688e121fa0f10107ae83fb06332974f6e30d5c5d87dfce76ba4f63e0c30df9597b9ab86e72c72c0404443fda7066ffc6cc3949993c1f6c58937062de3987243e400304048d0b7cacc10b312625d74f7da8210d850666a52b3eb4e50c13e9e30c65868f3290610c4b67590be9fc8718aeed74629a98a5937809711d2c0b3ec200066dad2b6dccf4f105a73ae5d31cda0f2f14ba1b5bc3c59f71733fba70e8d6e826a9e4eef75c284a6ee9630b1f5af8c84271af75bb4fb070bebfb7afcc1925b72b98f227c9be490e0b96b182d1e48c1fda33f5baabc21da2b24249c25438e7503bbbab244e99847c4cc1b5acfbb24e7ee0430a26f3a439952c7fb9a47c44010a5f74a5bdc9e849924dc2c7134c5e394c5eed4e60f73ddd546bb7a48f2668c942b65f0ca6b17626f0c14a8af20c9792f8122a041f4ad0efd4f543a634c3e7230995e57093ca7be64ffc40c2318c41c5f0834bd77ec8748d27318661567fb87fcb48464d0808081a21a8c00d4f23048e831b5e021010c7c10df71046308a9b5dbd638a42e0018c5e65f23e764c9f73e8177c98ce8dfb31be38ce64e724e7b69436f5e84542c760c29750629498c48317b40b5d502e7061c62dbcd1baa8bb70f984cdc316986c49d3b7e56c0cb716b4b8fd3b98455e66218b5830ffb7e7c10316489c6aa6d817beee040f1eafb04dbe34c7f18e7d6957aceb2a6d1573d256cba315fb5b7dceaf61c5a3d9e1a1c4a692f820f058453e365142eb79da883c547158c9d819e3a324493815e69b754d2d0b203c5041ad6c124a7353095a728a63797a8887cac3147889aff1cb53aab74b61a5e612fbc6f22005563e7dab171e05a5fd721b7de3ad25f134caa8118059788882f33c17b4a34ab7b51ea138fd79c85eb3d0d8567b80a2bf4c25e5df68a2f5fe89d3e6a45791c8c313e55e8c97e2a713e5ecdb5ea7490f4e949e67b17288f19c921e9b302bdb7de70e1276621e9a28da65c6e83772d2cf9930ad86e56e8e522a9d0726d878ddd14b8c423c2ee16f6c7d9c349ac1e5103248d000139cc1c3125509a204b2251aca4edee49c4d822bad24cc98e0a5294712d9c9a56629ed39f088042789ab5e5972ef4f9be12b680f48e059d53e1e2e75b68cc7231cc15b76ec497171c0a31107b7490b53ab2a2d33a2be29a10451cf516f5b44969d92a0265c2cd12b0f4514c4bfe498523d1241886842c335259393607300e6e07108435ce934cb94f5746a0ae141885c65ade2828ca7147b0ce22c7143ee8354122ae3218853731a0d09d38bef06624d9dbaec2c2ab34e1e8028657d4ed1279860de8678fcc1cc99769f4ecac30f26f0e883071f3cf6e04977b1f7262f7ad67ad044b24437135ad3253df260d489255c741b0fc9a399639b4c1e77d07664a437ba9ea4277620a7d363562d5518b50e5c8a1e6f7d7f9d848e071d728beab017edd5a0d9c0630e7e92dbd7742b1af090436f17b3c9319f591c0a9e4cfd525ccc0d6b052ee00187e34962ea2bc1fa36f9211e6f480cd79d9199927296abdca0957c92328dead18662a9aac796554f824d35f0600311f29f3971b1bf9f0c78aca1386963b231136ecdacc0113cd470a80ab327e4e8c514a234bc416e25aed66a27831e68f038839f3525b8e718028287199ccce89f49b20c78f8b8b6d1b55e631232fcfaa9a245e5a66c2963b8845c3d792e137888c1582947ac85c5cce987c1d18d626b9b01c39a732ab776bfd53c7ea14e49deecf33cbc70091a4a30e9e43dbab05589a69cfb25b12444f0e002a3db25a54ad15b9ef1d8425a727f9c922fa6c3f2d042299a64268f957864e1f1bfb83f9153720ab1e0c907132234b6739a5ce1f9ebeff2a4d22afb0f3cac90a0b696c420e50d8f2a142a899bde36e7dc3a55103ca85053e0e2c22d6a9448c1230a8e256dfdb52865c1030a6d7bf0da4f614a2c49080a3c9e70da9c0409d30a973bef14783881ed7c425892a498e0d184e3ef83fae60d75b24b050f26acc1d7becc7234048f251816a23dbe09dfd239191e4a48ca8f1ffe32f748826fd14c6392cf22b22a0f24f83f6b69a2ddd2d367041dc73046318a1aec272bd82125e8204655a2299b6f0a9fbf0b7940c73028616e4ab0f6b20ebe302ecd170ac6f5bf31ad64cea3590646f6ba397bcabb954df2176bdaca61d2dc8396ac2fcc9dd1c376d37c6bb4178c54dade7becec1af282edb9133ff4a24b731dbb404a7c6dd5f574f194b82dd629d5c4ac7261cc99f3c5180b4f9de3830e5c306952f64793e43b9c48e8b845294a6eee982cc7f9451db628e5d1d0a9844eb9d46363b90c337860c6f2073a6a61aaed9bc8781ef7be053a686112de624fd65b833cd0318bdcf32e3dfd9f6d7b38d0218b585c3186f34d52c1d3e53a60d1f10a2d7abe91f3ab46872b8aa5166f212e34e8680527e51463e2eaeee67c3b58d1b18a5245a5a250a16ad0249b7249afbbbda0e314ba987f124f3a11cf260c3a4c91c6cdd9ca45099f96a2fd9b8e58a970828951093a4841828e519cf746bd6439c142fb28e810c5194e92b793a393e9d9110a506c2fdd275eda3a3e719cda5959ec67b3da1377644a71a2d32769d24e7cf94fbc02873da8f33549240c06c2308ca2180481c0e9690c93144820384c1e0c06435118e6b9ee031380804902b160240c0842e16020100a83018130180641200441208e41306ac61c4a561d1b6a7ea69bfd2fbbd6894fa4056a289b4206a10b401002ddd329fa98ec8a388c9f707a20a20088677aef54fd77fe4a236c26e7c1835f5db1a72a3a30c618189c6190dc6f3344b74bfd18085784cec044144bfb4cede3927b1ef037423212d7aa938bf891c1f722e0895f43c45466bc1e65b2539f063fd6f92ae181c1ba2c44181d97502f550c8e9773f9b8ac584987ebb1afb476d1756865db0911af6e93796c2b569c903ba6257e2da7b7d3fb9a8ae1dd1797c51d667a224958643f0a687159c91c375d782f764b7c405ed787d8df1f8f69f1016cc292b3aa8bcee0142e4ee3ed0f4f0d6879f97fe27cee89dfe8e339b57fe9a4dacc974ffaa00051ef3bd76991f628c4df052f4a9e27314073c3f7a07093541816a4161203e1c97bfeb8d426097c61cc2fbd06ea12ecbc623b72433f6f6e0fb172b5b2f19cb9c03eaf7931e8b933e8afdcf9a20c5292bc57bde735eb424e26ad63385a8dcbec14a82ed56985add5c18ba02e4a41574cf8d71ab7218a25841251494c99afb7c25aebb9e14dd13c662d96dda65b5bba2d0288b0c3c6e618fec5e2c6b397c15d6d9ce5b70780043498addc1dfc36a043ee963352cd1055fff2bd07face32d0cd917a1d281efbd6737766b295b4dc655c8c51d293540e600b3e7a111074d04369693e33168bbcb4dd1cf43c0a495868dc56895fbdcc8bedf24863ea39a62077ca24e06589d098c345b61d4570a8996e5f94cb80aef4c250f0eca3a49c884d9035a4ec0f40c1a3a1ea8a3670c6c89fc4a3a37d9a5a09ffcaaed520358334fe7f44327ea479ec02200cff725948d134c54dcc0a846f3b77b55776c1537fa13b088a8aea92c92da3e1f6ca5da4a3947fa07782f6b81abff1eaa98b5810f2777aa5decdfbd7e2ab9cb60c09bee210e3de37cb873c3d330831054ab508256d5b971352aa2f3f8f79b9d207dc7847a67c463843894088940dbcc70699f8f209f2935b80e43688c247199d179510ec49a5ca831d55d42d4445d7b2c8cfa6375608f9f42a86bc6eab64a3ad9e0af442bef82127352c31d13fca8f64c1a32ed24fd1ca42079b5b139dd588c15a4fbe7a35a39f021d34c727a0000587b9446a059bf0eaa0762bd770bb145168f984a09c24feb3acb10c419f1ce875969cf44844f45744f054447cf39b02a6df6cff8af03c4ed431601a9aa64b8d69b219b094e1572443a62ff8553bbf820c8a5c91f1d874ab4cb4a8301bbeb8acec185a862aa683f82df349d28b748e36d0ec9814e2d71ecb5a6af0ff1141908820f907d3b06fafade06584a624899e86a9f541708d7116e966da5e7b9f9afdeaac16c6fab5a1e595ce03e44b66f78f8990724fbc449007824889b9bb22c3b292e916ddaa202358cb9a8a66033d525f570945d3641eed2d96185fd998c5d5babd4d1694429108540cd40b029bc87e5262f5333791023d1901610c57b5147df0b1ec4e048e6dc4d942455c560937041790a1ced1668b95a0c36d00a62c060f2073009116847b9fe403c602580cac1518664013a7135f872fd59607d07238dbc5b5b24c3af08571e235c86c5db1bcff316ff976d14a576c96559e1baaf5b251a39b2ce4eb4fd2451562d3e06334efa75c4afd94f4458995897373cc56468e8f297e67066fc4240930f6542ea30be0d28ca1f6caf36adc2a974ce626438816f5a23503249e14280bf54918363db89354b57a64fc728ac7862944cf181bcb8145758b92afee3d36ef3b98074db1894eea1fa05275c1c20bcc2c4025772818540decbfda84e184f24d961295a5ca72669ae20eef01fc5cbc09ae00291a7c2f2349e6b7604fab2bd84f4880adb6247b904e2dd5cb1b57aaf0045bef133e09980d313c41c4f1dadeff7dda00b03c92e8a4b547a07426227eb173ea6157c33dda3d207f7951aa04e56564193f2cc13f95863a7d16652526e076d729205c506531f924f16074a2f236b3a9e76ad177522794049f2f73b796222f54d2a12d78206fcbc68d4f52e69b9c7bbf7e4a14e4c5de96d577d2962f55e15d088a528de505cc37053f78e52d017aa0683338c5297cd9819b2500ae2cbb23ed4c8037be5a3ccb4339f941cd28918bd8351708ba4ce869399b9affe0706629461891d1ced209e7fe93c7c0f0afd437e358b293ceca1cb0da6f8a4fb7fefea84ea2a6c7f1a8491debca8f3a040e24008475949ac47393143a797c4eb67fee01adb49467d174a58d915acea6cc5c6c7a5d575727f330eb4e958ba4071e2c08efeaee66cce4565dcd2bf13b5722f2789ded4a97e0c1d6cb5b50f99dcbef8b754a42615ec71261d1e43ce1148b701b9d750705eb67853d50316d4a6003f62826676248eb903dc0402f63c98485351e69b80f4f957d08397ce3e43b1abcc7e4e96f46f4ea48df2242676bc26a5fc0b1741bc1d74177bd402f27004c168e3c386da6ef746516becf0a794d2c54d0f99a9c844460bbb3901a1cdd45e7c8599f0eb9a3e7c1498051b8d999e7938f991286c917427a9d3de141e205d10776063c10bd1684a511daef03b6c345839cb49659cbf85a1acb9eb237da8d44c2bab828db905c3bebd8f1bb59005b34d994f35918c50558e66e610437e48dd704825eccd76319b0937e3abd975df85f9ef1e8550c67b7b39d60d35fa4537dc33ae44bb4a5a17b6966cdc2b04cfc489d56131e4e74c57b3dc3d85e997fea55d27b477e132d693b9db5c508e4213331d672d1eb9611740e04dc1aa086538573eaaab4cdd326099fb4cac8514ff749144cac2213c3eb8b32893b14e2e300b0ff7110ad423e443051b6418343ad2b3eb6fcf858883129a98b650dc2bd77c0b99c2915bb7c2b41b2e01a40d25fd0da9d712431e648c5746e71c91afe2b8fdd731cac0b548bca2309abb1f0ee0e6babbe712e246bf4cab26f05951807c9d197a4114fccb66ad43a373ccd3d639d5927cc79306980d46b4ae208b5497b8bbb6b5334f4790a8625303c10fb9532c335bc2ce96ae97ee0fc6f93d833b0b5af93001cf9b01f18fda82e6f4c907092ba18ad9ad2c5bd89d803704504a8bd39f4b73ec56a483ad977b4d01b7b30dd474181ab61b4c60993c86f4c12d8acf364e03147806ce20361e44723ba1a3924aa82c52ebfdd19ac9a3c7f58e95957e0052edb4c5e86677e9b462d6511008177685248e35f8437c310032842890125f77f73eccd82519433886aca1301d706e541b0fb08a4671e1c182843691c881231600ad93de03811ee8a8a034c47907fa9aa1a8a0443ee333d66b0cba30feaf54423f80f03bc179c76138cc81327989b1a5c512b38941f57e03585652da860e010fe9b87a8584ce639fd3f929c5d0433f8f5ac1b852eb16a2229b3bc3456ee97e2520d0138d96c497bf77ccf303b22626dca8acc909539254649d3fff86987fdea59d13392729c105b15bb6c6b1078fd4e4b705aaf80d0c00c6495c4c9731351dbce92119266da7e735e79ace97a356b29b43f2fab3a8131950024c7e4a85acccc62a2a4744135d482e542d6743a325bf0a7a2673b4b62a2fc8dd4c458eb4991eb5daa472c56225eb92fd3c429a1cf63ae2aa41375cefb8c6de79a678cc6e6afb6ffcd47ffc4d7564310e0bfd08e754286aa68c61ed32f21b4777f65d31c8e0d86f65b2c19989e26537647092313ac6936c3da9763ef7350d5c57b68441f6c4bd51b17ca32ec409a43c5587aefeb58f6e5c683bbbb10ccea4783f1121b1b9790a2f520c2d324bf2a6f0c6c3c4e60e496324b45f2dd6160b9d4529dc6a93ab615ced2c6fdd179aa04885c84fb548613b3e1733b38e5262d0b492c19284b3fb4689ad0091aa488b9ff169a4677e3479aa2c4266763edc9ee679af8fbaacd80a481bc08b2f882130f532a1c5d634a3207b1c9f74d56cb6e9b7278fd864bb60064d3bc27b24741345158f8eac14fe9351af2f319258b12e0f2db8be3c81010406533f7c97f0e6d4b3733890770c2a034ff27685605f7a66ed3e89ceba4286f73297c45261e77c5d73de0289e47b711209552dd9896dc45c9095850275ccf42540614cf3581db579205fb3577d460cbd966d89bcd653b4161db1e20b57136cdc4829be303ce5d7d0807fbda5a0a2ed4418c8030b515cc72e2c6599391a58baf90ab8bed170158f5fea9cab8520a8b60a70101498b35d663102af2e59d2866f71cac745241680e4251722410607d5abf72342129f4f991dd5e5cfcd5684b166fc7eb303dae4168aa4327d5d42de6d9c29d9c2b0a8bd0500317a6dd65cddabe82dfc3c14b08892e7cb176247bae2a223694aa152211faed5b7ce346c160c3c4e8530157e0f19822f0c803f131a475f22c21521f72b0908aa9a1cb390f7006626ea65e887335c0bebbe8130d8ce244b545bfa65ec1b883704bc788d71cb362d866c016df24ed8cd57592d20fbd7ad3f777e98ccadfb19fe10686ab828caae800d7375c4c3640dffa34c5e814f818071edacf87cc1694f63f97854c576d7abbb8b594e3d8875d7b63dd7e9ed5b271993616a5b56b03f7c69a28366ede696004ae92a08af96e2684c4aaa01585959309ec96f1e93487ceb92b7c3041ef5bbcb526296c38f8c6dcc071a768a5e58abbd46cb2270ca3228eb71d33988fdc52e16edf4a99c2f36360b97f08589750764a1b7102677153eab4500c450b1ec427b961300a8ce204df7b80505c6a321c9697508ccfcfbebfd03c8517614f907cca00582d5406c90e8318c45292d7c8348bcba08a5a8869f8da68572bc7b0c08c54e4cfcdbad01e667a081e7d9e783d1a9bb72c54aeaadbf9d43c0bdd00c30913874ac2b58521526e3e9b18068656eeea057043cb68080b6b3ba67b7411782a7774452f3f4601d370fa4b34a85dc00f984a20704e3ce11386df56ccb69b18184171263e801623ee96e55ebede96ff10895e4fd10ba1be3da8e480ad99faad7fd9c6a3ea473e5c83132be67caf1c1147c1e0f08fc0b479cb97e002027a896724d87b7155070f2cb0266a333e0bd4dc15b213a5f1cce8a74081e40a05dba3798f9edb1ae138a73b6cc187908de83c2e1c8ca1ea72e67e800ee236a5db95f2b21ec879be77117bf2dceb7d30608607300ac3995181ffe577fe08971ef95aa29f82d69e9b41cbd2d3ca87c1ccffa863b9267138ad730ebf249981a1b3c84af7c9861338d98237d683b90e385c018a05aeeb4370d2759801b217c6d6b0d3cd397a445463e3ba955ab614a2b2c028bab745bba085c81a6d00f5e16cee016f93884e235a29886484af3da2961281b2934c44694fff13511299a92a802e5a886f7f4031e82ea325c027d8180231bffb81a51adfa31f949f9a58f55595d0560549b4a79823d96ac40ba81a293fa9e334a7264d7ac8129da6d5994552a2ec006b8c31d99e19851a31502f869efae226549c51fa3ac438dd0d83153122b0c096d840a32a9b3a491e8d12b6a66ec49b43320a0c33a8679ab02807e1aa8434b46e0c2b2720885346504382919e50d6f87e862e597f776d902e194dbc821a75d82a693f9dabe9459bbe7054e67989b9b5e1d174acaba796254351b454471a1a8f3c36150352dea07cfac2216d4fe9e4e815fe9c975ccc166280a625c9d5e8ec2235ba6229d1d948dc3c4b1d01c9d79a7dd959939d3f268dce828782b848d0504a9e11c7a08d811c2d7a96db13786870ac8a436c75ac3ae4869bacaefd462b79a9e6f5d09ed19f176e5c2ea0e5db843893e6a382845c8ebacdd776a712e287ba7175cade2fbed24fa6b9011601252cd71b4f59d80690d6b8d636a57d7a660474fa958818869e12869c82132ad2ee47bfc5ba63250ba5cab28a0fb9bb70e80ab0a9e3d1052c6a1c2affb153a86ffe449d6d96d00f0a91985fe75abfc80e7956a198754b37b8123ac6407e0ac4bfa061ad441627d1d7a4c6570d3ad5345ac05fb6262e599ce7cef26097aff5a62618519e6a69237cc2996fdc5ad2b5f6871a7b1410144adff525e6ba0432f837f5989691f7cb6cb679d96da61d605587026c62e92c22167f5047db735582feaa0c4953bac025e6a1a5cb4b4a9c04f68359090922e4a3b9184bf84f287b7098932107035d394c96695075ca2fdec8ffedde07be0d85501dfd8c2a0934dd86961f417f07573521a595024bf7365ba1548074ee887bc335763aea23ed06dc441a6c6ad4a8f7abc88dac14ad125de457a4a69d4441e769781f65b38858596b23a36a130d26ba32c94e5ca6d5a49c4ad7eaf91a8e42a68da15e855dcc4ef36b59cabc9db1adc30db3bc95f38f6c771adb5c280658af4d01402d39661c295ae2dd4982025f2c91cf7d85795277030e00b0db550f0a8767adef8ac39d2e9cbef178d7fcc914bee671a2b9efb2c8d0e488ca64ebcd654349e8349594b9c9683081e6501a12e8bd1990b3278a708ddb6362d2aef38f6ead934163e3238140c2f736b974b544a1e31d401da55391c7e3e9d4bc22a8865ce359a0503bd237948dd96c45345fd279305a6bf1e4ee78ad2455324d6bd94994b65375311f72acbf82b5c1d5d89a2ac6fcab54adb5918271800f6bd4e93dbb5e1ba6277b0b0e7088dc5bba044428b8952daad2888cd92db72c355bb793f5568fb4914078943e004855f7782f1717bb6b1c6df27d63921e1325755d28de86cc46f8da8b355dbed41b4acf10797f749d002d83f157f98d9ccd48a744a64d7289864de9a225713b6b0a8ea4d3cc3012726da5959069aad298b836eb1cf23351efaa5947f87df2458057713d539ae2a6f4bb3177997e95099d55131115831ed0df357b06eb6244f6d33228afcb49f376505e8fe13a580afdb58c64ea76d2d928ace74bd05e96d2cfecb721d25fc1fae06abd2c356ff2175752c002d9e0aabc9a4d0182b9c458cb5a76455829d8fb57a5e6bff1b1be552afaabe9257ed5482dbaab956a361d3ee492d55a4c27b961e6189158d24d2d5490435c761268573173912406a80891d2a22c90f72d7b8a1d5669612379a5e67f7878d1da641a12ae0885abd3429a46b519f4e4d2ab78ffb61656a8953e05" + }, + "parachainSystem": null, + "parachainInfo": { + "parachainId": 1002 + }, + "balances": { + "balances": [ + [ + "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", + 4096000000000 + ], + [ + "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty", + 4096000000000 + ], + [ + "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY", + 4096000000000 + ], + [ + "5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc", + 4096000000000 + ] + ] + }, + "collatorSelection": { + "invulnerables": [ + "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY" + ], + "candidacyBond": 16000000000, + "desiredCandidates": 0 + }, + "session": { + "keys": [ + [ + "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", + "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY", + { + "aura": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY" + } + ] + ] + }, + "aura": { + "authorities": [] + }, + "auraExt": null, + "polkadotXcm": { + "safeXcmVersion": 2 + }, + "alliance": { + "founders": [], + "fellows": [], + "allies": [], + "phantom": null + }, + "allianceMotion": { + "phantom": null, + "members": [] + } + } + } +} \ No newline at end of file diff --git a/parachains/chain-specs/collectives-westend.json b/parachains/chain-specs/collectives-westend.json new file mode 100644 index 0000000000..51ada3fdf2 --- /dev/null +++ b/parachains/chain-specs/collectives-westend.json @@ -0,0 +1,104 @@ +{ + "name": "Westend Collectives", + "id": "collectives_westend", + "chainType": "Live", + "bootNodes": [ + "/dns/westend-collectives-collator-0.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWN8B1ChzED6DkWekX3QnNo6fZ6gGGwjnAhSkhG6QsWkLr", + "/dns/westend-collectives-collator-1.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWHeAG244H1UfB8516KVspL1V7ubeeKLLnHNfxxDfbBAvg", + "/dns/westend-collectives-collator-2.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWFZQoNPiCdyPg5yzUhQJyBDo9XPYfNA97njfhH57smsud", + "/dns/westend-collectives-collator-3.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWQ7p65S7koitvskQuEwsoHHEM3g78pCdwZ5RpJi2FAtxE", + "/dns/westend-collectives-collator-4.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWCui467sJqUd7GzxB9HWpxrvXQfHWuYGN14KoSQwJQ9Sk", + "/dns/westend-collectives-collator-5.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWLGeRp67Y4LTpDYW15ophkcn8VAbNf4mhw9MXwPUamCss", + "/dns/westend-collectives-collator-6.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWDVdnw4fU8KsvVmXYwC7ifqsXssQgQ5rzPpBNEJPZewEB", + "/dns/westend-collectives-collator-7.parity-testnet.parity.io/tcp/30334/p2p/12D3KooWCYmG2HhYQTSs7PHcrBcsdfte7SJhctW6PeTYLLDyN4Yb", + "/dns/westend-collectives-collator-0.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWN8B1ChzED6DkWekX3QnNo6fZ6gGGwjnAhSkhG6QsWkLr", + "/dns/westend-collectives-collator-1.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWHeAG244H1UfB8516KVspL1V7ubeeKLLnHNfxxDfbBAvg", + "/dns/westend-collectives-collator-2.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWFZQoNPiCdyPg5yzUhQJyBDo9XPYfNA97njfhH57smsud", + "/dns/westend-collectives-collator-3.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWQ7p65S7koitvskQuEwsoHHEM3g78pCdwZ5RpJi2FAtxE", + "/dns/westend-collectives-collator-4.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWCui467sJqUd7GzxB9HWpxrvXQfHWuYGN14KoSQwJQ9Sk", + "/dns/westend-collectives-collator-5.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWLGeRp67Y4LTpDYW15ophkcn8VAbNf4mhw9MXwPUamCss", + "/dns/westend-collectives-collator-6.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWDVdnw4fU8KsvVmXYwC7ifqsXssQgQ5rzPpBNEJPZewEB", + "/dns/westend-collectives-collator-7.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWCYmG2HhYQTSs7PHcrBcsdfte7SJhctW6PeTYLLDyN4Yb" + ], + "telemetryEndpoints": null, + "protocolId": null, + "properties": { + "tokenDecimals": 12, + "tokenSymbol": "WND" + }, + "relay_chain": "westend", + "para_id": 1002, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x0d715f2646c8f85767b5d2764bb2782604a74d81251e398fd8a0a4d55023bb3f": "0xea030000", + "0x0d715f2646c8f85767b5d2764bb278264e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x15464cac3378d46f113cd5b7a4d71c84476f594316a7dfe49c1f352d95abdaf1": "0x00000000", + "0x15464cac3378d46f113cd5b7a4d71c844e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x15464cac3378d46f113cd5b7a4d71c845579297f4dfb9609e7e4c2ebab9ce40a": "0x20dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d905973883670b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe04367684c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0x15464cac3378d46f113cd5b7a4d71c84579f5a43435b04a98d64da0cefe18505": "0x00a0acb9030000000000000000000000", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da918b763ecdbfa0e9efe579ab017a80803b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da94f314a8c00e8b0528b8f220f6b1a0b6bb447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9784d118b107450ca9b35a386b83111338eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da986d8ea84569c9b399ccbfa6db93abd715cf3f25f6fd01ed667f9a977a21c7d55ccd118245b028f066ca98c34c442dc73": "0x000000000000000001000000000000000000a0acb90300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da991900d6fe6db15f208663354a53d481584c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da997e66c699225226d9a1f5d2af16a1dbfdc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d9059738836": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a6c3ff8820b374aba7da18a0926ac4088012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b092f79eb1087906d0daba3075dd7eef70b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9f1513d64708f86b3fefadc2d3a952c84040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe043676": "0x0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x91012c636f6c6c65637469766573", + "0x3a63": "0x", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00583ccf026a4ca7a9542010b34a078169fc3a6ee6c8895ee4c191b2dc3877c0737d80f41c9f7cee2eb327c74a1fbc2c75b6be9dddb4db2fce03a984699f83e21d6acf47457dafc842fa8bfd75c72f194124829add7b6f22e59649a694029d0bbe09710a3955724ad0ca9253440e11393ae428d1e2d232a345474b06ad2e5a3068896995d122a335464b8c56182d305a4ead2f5a5eb4a45a77b4ccb4ec689569d5d17a6abda0e582560b5a605a6fb4dc68b1a0d5468b8dd697d61a2d2f2d355a69b4d0689dd1ead2826ac5d182a315a6b5450b8bd69696162d2b5a55b492682dd142a2a5446b8a160ead282d1b70c4e040e1a8819306ce16384ce060c19182c303ce0e3839e00cc1f2830586f502d6130b0e9617961aac345868e4646181c1fa82e5054b0b1617d6192c33584cb0a86039c17a8275858585a5c4ca8f551eab33ab1bacfe58e9b1da63c5c7ca06ab32aba8551d2b323852acc0acb0acaeacda589db1eab27a62b5c40a8a1513ab35564ae038dd4cddd8e0868e1b19dc44dd90b9197313e686cb8dd34d1e3765dcb8e0e6cbcd1a375ddcdc7143c64d1b373ddc4c71a3e526cb0d153752dc587153050042b8b90133420585e1602879c30d158e0715159305344a8e095876b4a66c36d8f6b0019343839c3ce81b363dcc37280e9b1faa28544d344b3625880d3c7bd4bca1f3042b0a56172ca78d0f950e377bd02a355d3815d50dada61a316ac660bdc1527035401cb61a6c52345a40289b997807760553712dac154ca7f9a5cff4101c1a1d0417868b838383fb812301f786ea0995131c1b500ae7038cc2f5b0aa6145037744cb0a0e144c0403c156d804ac04636126d8094e62c3837fd8ee7014704dd05ce12cbe448b0a9a14b813384d2c29bc099e253c896d063c4cf028a1c3829d31fc042f61d3c4a302bee24a3812f1069e246890504d4173031a2c3b31e098e0235808d6c2a28105855fa1518255c0e3c48e144f183449b472f014700968967026564f8e65d38306053b77d8e8c043e080c1416c79f050e12a4cc56c829bd069830708e6a2c2817ea17b503928193a86ea41eba07f503f681fb406d406940f3a456540eda062281e540bbd83ce41a5681e940e3a031a45ada054d02ae8143406b40c850135436950738632d5dce006cb4d142a30544e2a3f545ba8b85069a1ea429585ea0b9517aa3fe8195515ab14ac50b0b2b23a6265c4aa881511ab13ac4cb02ac1aaca6a889510ab205640ac7e589160e5c38acaaa87150fab1d5653381ab63fb633dc1e34326841c939c18d0a543b604e1c95e9c6cd0b780a1a2370be5859a153021a2638285c04a780adb8a9325fc09ac366cad4327b983b4c1e269519c5f4610e31a1982498555657dcac600a31bd90666ce6b031630303151a2a28551a36556c92b02901c60616066b03ce80c507a401b7c5d607c7850d1e36774438221e310ecfc3a75c8f8906ab8ea9868d1e367ed8ec41b1a05b6e6cc0a86044603e6070cc34e61ad30b2d8222418d6075e113300ab80a4642da2048139c0d3943605b708a68215a5948293654e20d303070f0a8e14295438e1198160e853fe152605978149ea525854d0e3b62e6951c247292b0e1219eb1f121fec18201a7074e148e29072a1611fdf02a7088c0a9637507b401d6d0405026dc07cc8a6d0ae70e0c0b1b293c64e8b0c1838497e163f81b6cc45401ab0aa7020b0336e170d96eb0d100de80238563074e14ac1a20531482a7584c1c82b241d750458955588e0804c7419f8841a8a4300c780ebe837d60285a51f811140ab5817be01d388acd0e1c15f40d66179b28d8147209b74263656507a66565861506d230cfd8cac82bad12482c3c464826b63ab02a302a688e6012d8e0805306c70cf370538312889820801b36a21c1ad7654d0c55c32227473a40d4e448910b44441ac3244b8a8888328c099a38061222262d2c51e1e88849029290141d1d31490000a218ebe4c8e848525112a2a2a2164088612c93169618118100a9280618888c9ad4a425452f80e008043e82b14548963059427484c8a8492d42b284c9039296c4c00409921a243a256182a4284907f18b7502822225444e9c80a06885254c8c9c38299a4017bdd80f1835a948454a90985880852e76b145494792181d1d9181a82886a21822408124451ef0c0110a002072b14e9420297201c916eb2469491152910b4b8c3e6ab1c4a8859d98c5223172b2c40829e9491111088e9a343942845494e4c82806212548981c09f1c42dfb02d191a423498e241539c026621102a3a3234649464b8c70e215ab040993a30e101525c580a4e849d14db462919824608b55ac9322a3242324262e24c5706415a9d8254c8c928e20c590842889c9911322a326f508520c1567b9e8a803479296c4d0025112922224a3244b8c8888725a718ab4c2454c95ba4bda3a3131555e8239589c23cec14d583a8455084208a15085b566429c33f60d72779eb28564429c598ee02e33219e39679c792624132233212de5089c6542b28c3dcbdc9b331622c4b3cc39939eb910c992337767e6cc337709a5672da5d4dc5d36f76eb6bbbbac65ed72366719f4b26c4e9f92257b56e39239ebcce5ecd9cc9984599631a649a9d2daddb1766c9332c3a6cb55cdb935cd9c5a4d6732e3764700cb8cb33e80f41af7e9cef3039eb24d6877ce32e9e3eede52caf63999597ab3b3b774ef9eec193367ecee2ce500a47bd6ce2c9bb95dba37b74b9eee9c354bd92bb3ceb67ba1cc1a6699ccd82767ee0cbb67d768b3379a89619894d33d93bd35737b904d296506a1966519cc322106288084de947066598d749752126065967130cb38eb6e09dd6b58d3bc6ddb36bb3366ce9c998bb83b4bf7e99c674fc9cc7300f3b573fa9639afcc329bd9939937af619eb2a594d1997b97a7f39c5ad7d0eee92da1fb944de39910676f29653642c6197b26571963993326a56ca9e23846c9cc8ec2071f742b5d72266796b9a4fb9c3acc9eb93390f3fc71775ff79f1f5f7797cb528ec0cb2bbb653bccb2e95b4f9fd2a50f7b5682bb74963dadc8b9c718a3333b7bd7796f1bf39c734e39bb7ddb7adbba3bcba4dc6aa4dc6a32df30295bba4b5833e7365bb2fbf413584a969299a5fb949277d761bbc396b3bd5dc6e8dc792661cf3967cb6e96d2e5742939cea5ccdabdd9b35ef6ccb98c738e31caedb28e5db24b293d63e75d9673b294eecc26485631ab981de3185b1d56a93a95b38a4b6029b3cdd63bebde98db3def03e6ae6166964d8224d2ac9231c6eeeece65072e3321425cf2083c0213616e01481f1f9f000c11c1c766367332c6187df8c5dc5202c0d99b01c02c65d7416776c9ccef1973c6cc217807ee2e85b8af0f33bf1c0467963bd279ba0b9152ce0f5c4a9e3e5d4a77ce5cbaf778b07931b2772edba594eecc2e638ceeeed2b32ccba4942e33ce985d3a3bb33bfb4a29dda56ce9d2dd1d730933e919bbfbae074922c81210038184df11928e20152d29f20092930f3a58128a9c3829426af202132444484532304152844474c449122445442328f939818426488a9c00a95c409274a403442e38315a62d402072d182115c9403480114e3881842445444c929a8000098907aff3a428c91223a22546475c40d2420b4cbc178c9296c480e4e9b49014439022178892961821352142e2c4e8059e20498a908a92203121fa3981842223a4a410908e24816093c3e9284172a40347474c42e0d1d9e160272787075bc2c42809c911274b8e2025112519bdf0029317cbd3d9b15952d4a4c9119e7d81032e2a426a81088949d211244c8e8e8ef098f013e409930f2471f073020939289030021109454a8e1c75c00527475c78d58e502443d111d193232f74e0da113cc0e488c8034b8c3ce001264739251c1d19292102c40908ad25218909139c24478a905e2028524294f4a4688908aca4220f803082932427464f8a42b859129e18b55084d484880c4b8aa0cd8e40b484899113a4221988908e141d21212af2c0112426494e88921c19b9808428e92886232d1425214a7a52e423c39222b8da06011293178a5ec06458520443e0c26837b2d1c8124ba8e44a4b4a4a6d6495967a69c9a3929292d29292d2d2d212a6a4a4a4a4a4a4b4b4b4e4aba4b4e44ad0c8122bf11a595262a5256864091a5162234bacc44656496949092e292929b911a52556526a234aaca4a4048dac92924a1ad9a5a569448997d8c82e614696788977291ad935a2c44a4b6d649796dac8122f2d2d4123bbb4b4b4e44676898d2cf1121b490014c3bbcb2f3839b20160eabefcd7bf19d68e0a1f62b1004b0aa0b1eb41468c6905737718f541301048be7bdf9137c560a32e08b410baa00bba2ae67d5f3f57fdd6e9f32615b0ba3be47b0281853e1f0433031153e8378395eabfdcf62b3a8cdfdd77e44dd53f7a2e630f5ee5f32a73a34d4d569478c9619c620fc7b243a060d1b1f9f017be1652f80b81b68f3f219046a4cac75e93dddc36b6eed727bed6edfa7caf4aa409ad442611a55e9a0de3d096310c83dcd09c40f263f4be24af31aa4163c43aea823ef0354d6efdb16b96abbbef6b8c495efbf9316ec83d761f8d1d7bdbc1b0987b2c1b28e486fab5b839c0a327798deed5b36834ce299fb1e78fd28bafc5c7b8a11839066cf5d79c3a37c4628efcb1638cd1a3ede2ca9cff629eeff614db5da06dcff79485bd77d86b4eb78af1b755a69129f5d776736ec8e59240aaadfa53d71bd4ffa395e55275ee3f1ff38f8fbdec828041fda7275f932cf8c7ce7fab7ce786240396314e05f7366fb9cd0594ff9bce0df547ca726dbe3dd6314b24121fce8ad18a2de67d49b1c697afc56ef6cb0d1ae30735866118a641c80db1f0128b32462f29564c6232c4ea9ea7a0bf66fbc78194281313130d4250f4ef4725fdf0f9bd8b9ebfa613e40cdabfd51f7243dedf1c03b6b6f7732af443cffbb50499ab449b2d3bb91a3d67e2b86052a0aa44d51145262a0d325ac53c38b543e05332d6675454180c252646d121a662ffb1e052958d92daa89a1abd27fd9234d89d1bdd651e586a6ef2fdb1cebd5fd84a558cbbbb9f57dbee9b95b7fbbc323f377bde2facb78a7d500741d9619e4f5fa927bad18daaf263c74c98c750b02ee646b957ca578aa5226353b0396b6a608c11939a9452c68a79af1a3c5ed1b768dbf331950a5f5b668e1cd96be9fd626db7383d6e08fb2fc746ebf98202f4813f35ef9b74429fcf85c58e2b021668d7277bf82840a023bb40dbab7ef747f54d20d0e63113f4810f7ffbc7bd95aaf0316e8899fa059fdb81f27fcc54e156145c2e4a37a25021f64e54e5cf979c0a5fb5d7266fd3ec0ec1defbb8629ebff78fe67d4b55be7f10d4b02debbe8daaf055ddb7622afc897143d28bdc50bf7c2cca9e9eeafd728fa9a85ada40429181516940323354815175c028ad460f4ed132e0149c8251304a420151a70a5fdb7ef7be57f5e7712d337fac8a61af61dde7d535c8bbebdd7d47ac8a71fce586e26bdc5becb4b8dcd0697687f407b5771f0b630c5b3a236b0decb159536bea47638dde6b87c0af91a2fcdfebc5cd72d6621cf13013657d86e10b55e16bf2bfcfb1513d6fcf97395daefdd97d7d1dd4f8d2fb3aa81f8529c477ef5b2ed5ff25c2d753fd83dadd3fa88f7a6a7c6c87f4c0c0357e507bd71ed6c1006357cc4361879041f93f1450589f3ddeb3507188c934b7a6293aa6269d1fabc2ffbcfa14d446611eacad629e37f50b3ee5c29bbc7ede34370aa7e0d464e2e2a5c2d726a59f6b422039a918eaffcdba5108a6c6ff5c73b30235857219cabf9c045668a1cf372b849a54022d243d28057de00735460794fa66fda0d4dc281454752f753d50e2256f2885b63d1f11975ef61f8fea3f568df3bfadc6efd922d8c7dffed13ebe3710853ef0a3f71dbdaa9463a8941fd45ad7ed2b3e8defaaf133ef73d11a5fe57d747dbe59e34fef9bf5a3157e50e30c5efd9d5bc12be6fd0e895d8d4b43fe1bbdf53e23d59fdf3915befa07412cca6e2b26a577f4f2ba5c8c1fbd25afea9e135131f42362afc10d9ad9fed914668d41ed376052a69308a2bc8a1d5ec5abc0e1433896898363712c5ec5ab4ca79a2c4fb2482f35905ea49730528d59314f42b90d124a42492fd24b4d961f3a2bf652aac2d77c062ab5dfbb8fb7a0fe41b0bb232855fb3dde166efbcdfa2d55ecf9b78116fac0dfd7b04e5baebd6fe9e30affe3eabf5b047bf7be232855ddbb7e01f514bc5ff0dd9bfd821fd477d4f89f4d850fb9057015f39c6987c0e7cca0fc413076485c3f67aaf0971b5a6162eefde2e7d79a1b8ad833c780ad987704a56237eb72eeedacd0efefde122855bd5f52aaae074bce300c285ea06ce9ff6685f0217c082194a60a2184b007be20c686336ca0f2fdd3dfffea9fcf6bf7f7f40fd7aee1a9f66f0d0485ba7e22d4ae1f4feddf7e224db4bd79a2eb540311759d98a64aa8eb448397ca05f563bfeffd23bfee6bb2db8a755cb5fda15ce5c38db921ac014bf235e654c05e7a1ff6d86bcda9402bf6cb79bffc971b8a1fd4d82f07b5e5a6f72dd5f9b2fba6fc2028bbcfabfce586e66bb2fb1450e56bcba9bcef4955bdecbe75aaf2b1eedb7e3d69e282910b54f9dff6eb834095ff610c8058b755d5c100cf9c393355b197dd5780eaaff1263b7f166495b3834156ccfbb84a0f063e73e6cc99fa2dd5882541e6ff589527c333dab6c664dadeb841d78906a73afb679d68d852f7b70662a17d57ffac13d354ddfaf1d4fdedd9206d45e88e2b775cbd7ff877abf74fffbec61a6ffc5a6fcb360c98034abfb6c2f7ef87dc507bbb360c98634abfb6f27bb7fdea8e6b73fccb41cf971b9a5bbbe3badc0396bbd0b6f66f3fffb7af6dff3eec57b2d0dba5e60868fcdcdd98419d98a0eae7b57ff2cfcaffcd0a81b67d3e5af93f5a9d3909ec86104257fff8c3d7607ce8317ac7b5bdaf1f0251ad667bbeaffddb3ffdc3df69fb43f7bd5ffdcc0dadb7fdfa66ed5f6e68fbd51fd42750fe7e57ffc0efd760c795f64f3fab7f1c765b97f30feaa0e66e678559f967656f6705f8fcf0d94be2eade722af043efe3ca1fd4dbd39e92afebc11264de42dbba3d1fadfddaf6cfc70fdf5f27081894ffdb6aff077ffbb5afc16efbe54f02e587bfbf1c0bfc4aa0b7fd72ef9b757ffbf579dd0f6a8d3bafdc462303265565b8a9e18dbbae4e55068cd3e0b65b84ff83bffdda9ffdf37185bfafc16ef66b7f040a7f7fb914b65f9fd77de8cd7eed07b50637ee60e5b60812335518105065c02a7fffb6459018aacab055fe7e9a2d82c44c15060454fefee6587026a6cacf9c0a94a9f26ffdb3b57f391598a9f207755007755007f576dbaffded694f09adebc112e426a36d6beb43f9f757a56d0028fffeaab41d42f9f757a5f16fff7cfbec6dbff6f7979871b47562b252576a8b02e5df5f559024d80a27a8c88298208813414a10848620508230f1d48067053c5d7656c033064f193b4bf05cd9c183e7881d3e76f4d8c983678a9d19ececb133a5f3c50e193b5d7654c0a365a70f9e277878d821b313b5e365670d1e2d76beec4cb163c64e193b68ec70d98162e78c9d3476a4d87182478c1d267848b093c40e183c3ef0ecb0e3b4e3c64e183c5378a2d8f962e78a1d2b76aae00163670c1e2876c4d8a162a78d1d16ec28b17345c769470d9d3076b0e88ca1c3840e143a4ee834a13384ce097488c8d123674cce1c3952e44091f3448e13394de430913325074b4e10393ee4fc9003444e1439577296c81122e7881c1c726ec8899263430b052d2d01586ac328ace3aa6cc2300cb3f2e43465301aa9da8fd1444180060afab436a55fad51a91a15ad495b6ef7999fb750fe20c89dff7647508a67762c8475ab1ad49bd6047dfaa395ca1bd6694db55fc33655b742587753b1a906dae68f62926a82535498aa54f7a6caff492b154bfddcca190b2795ca2fbb853e9f57c1ba9a2aa67ef089da1f3bba457860478ca5efacb152d70325c84e9383b65c2abfa3b0ee1e34994b011ba3f247cfa9320afde2f9fe3daffec99e5f84fe81cf6f42ff68bf6d9e08fdcabab9f5ab1f7a345550fed67adbfe31e13d1ea0e98554bfbff50154deb64fcf4b7eeca484a149c55efe722ad03aa58481d6e97d4d622795c8c7b82942ff488fe32f9702e6ad27022452f961472594516810f1c71731e02207332a00c0132e4c54de60230a28539a08e189ea0712f8d1c50c1946d0e0439486192884e8a38f2a985e72a3ce9001828c103840810508360401c6173b2cf1822e3b088943f3629382e211450c324e629ab47c0080a93da2b0c00b2862b0d1f3811cf4f8238c2d88b8028c293c5872820d2d25e8e34b17289abc31ec18c30d1f9ac86892ea9eac94155a305166065cacd0e0378d216ce8630f15282186111d2c1c49f480c31a59f848830b074f57e031832857b0f8638b204f9a24510605357c11a54b0d783e70850bb4580197a72c64b083059430b888e20921b8a8436789091b98112688a836c4e02267e560b2a2a98f1a80a8018aab8b1e96887205192bd88106204f82b0e30b2b3558034c1e645a4fe60a44dcd134258a971598c1f92076c0838f16c8118326d607bc7881131b53a060a1e58ed51313d441071421fe98127523431572d850c41e7a94d962534215509870e8a28d2d51344e31071525b001991ceaa871810f30a26e38e38f3231a0f980161eccd02185cc54113f704b5bbaec2147193430028a33b69b34e89a5146956a53d70c329aa8aecafcf36d1fadced55dd5fb3f11eafe8bb921f8387b507e57ffc4e7e7e99fafa77ed13beaa913e383043bd916743841bdae53d3184d089ad5756a7adaa62f3900d9e9d34a9319d914ada9ebd4b405f39a9cd8816507dd8ef8a1e9874c0d4aeb3a35d9a0b98002294303e5e2c8cc8872867605ddea3a4571cacc50adae53142beca01c96854014faf0330b7d5b8dd1294a1135beb70e42f1590de442f17f8b64b587bfb0e7caa4e84d5da7283ae840575360d09c38343ce87c23d383b2c4c86440b92bb61f7060620b82b6ea3ae1f0836686e2d475bae106953fbb837278f05308e442cc4e37cc51bdbaab067550c38e76acf6e1c79983caba4e37bca06a759d6e18533f5af9957889a1ea8c9d230721aec0e18ad3123a684bf400c509a6ccfc8143964cf652165a5290a5055334a0c11342aafad11ef694d027daf6ec16f1ba9f3f1313530d4241387a50fecf843a85f8270462262626a626217e35900bed2f045262c30c185f9ec4bce186d0acfd140239412206486441c316523009d59ebd3ddccc59680bb1c02d552095baef1193d3e784cd733139b16dbb9daa4cdb7cdb60f3e6abda36d3368ec669686033cdeec6edb66db73452755fa3a9a9d9b6fb20d3765f43d57d9b1bbfb981cd3760eafe162e8da5ad345353918ae202660b67612a6c8599a6160c7418b55cbc6f9d2a7743e81e31c730d88c7143e81e23265d4ad82c3d62989473aa32cf32d89cc9a9526599a66d9c731c6ce6326ddb388e86a6863aa5b099721bd36c5c53b331a51bdbdcac7cb582cdab9b6d57dbb2b6fbe8b65adb0271b9cb059b5d361b77371b77abaffbda8ae52c22751f47c3d9b86b712970d516880301029b814c9ab94324161d36e34c9a2166b4edf9362ab55f4cbf1a46d586503ba47f3908cc6dff156a03aa81e453fbf48b892a2395079c927ed4dedf6f0251fda8485ebf09440bb1e74d3451d0afa7f2f6f48b75e02f04037da017040cea4df5f3a62808d4df2fa120d00a3584aafd9f94aa5df9b59a1950fee516002bcd1494c140a0168275fbb551a9eb81ffa0d5f40f75c041109e1d9d1c1790160e6b7563436b68b84dcb545362d161f30ed95f0e063e53afc00feacf0504bd5d9feeb6b2122f7577983c76e1c2850b7f17328f207adf7e7cff6f9763615f498410c25d8f6da0ed12a09b5900fbd3ac2ddce7f57aa99905c69ebd6ffacf769fddba4bee9f9ed7ed5f9efddac7ba2f09f6f6c3e8bc1e92d724d829800fbf9f172edcff5cfbf0eb72f06b502f31cb40dd8601738881df3fe3177ffbe51edfa337fbe5eeffb37f9abdbaa78446d121e57c89fd37a79c32ce3834f8eb7dacbaef43d0fe22296c8581cfd4e9af71877304ef0ef928f6dff43adf5f9bdd9c5e50630ebbef88b5843183f15fefa375bd8f5f7e9cffc997fcf23b724db4ffdb2afcad7fd8db873fbbfd91ff3577384750affc55097f50cb6efbb59ff32fd36147148e892b8389a906d371881bcd8335b7a6293aa626dd6af4bcc90bac87e6eee68e344ed7e486717c653e7314782626262626a1e9496e2862d18f18fb078b31c6b92fecb78acde08339f6644a2cca183189d116b318867547ae8a458c0e45efe5c5cbb190196342ed9caef9b3da17fc6e7fe86f91f82f365613be2b73a95cfd8e42f502545f2fd5fd55fb637cd5d891bba37701336095deb72d78cd57ff440c621e3baf1a6fceb1e00f1feb6027f50ad04beadadfbfe4cc5d7852d7aefe7bd578f31f911a6dfe43a1c6248c0cf7af95f7bd88dc781f91fa51146cbc0f85eca9f74ded6b685494f336974bf3a897cc9b73feaeea3f579dabfaa9f266f77d12c632604abe246174638fa6314f5216bb8389c5300cf3886118867d8c40f401a3238b94f4bf2235ff9140f35f08dc7f5f63a4f58335beb7dd16d98088401ff8a3da22d9c7e7254003580010803eb0490398003c8505009fd21a4a43b9edfaed19d8671d5755e7fb8adf04024d9ec204d815c0fcaf514aaac8ee90afebfcafebc7532a7c084020a6027de0cfe965b78e2b53d17e35a6a231953096bcf8cdeb3c0e0c6144bcaf183915246f4f8cb3d0f024a3a662de13a9b95133b620e359ae6fac3fda1e5da7346ece45cfc582cba5728cba628c3f9f23167f62f1b76218c69c0ad1db3cc6b89c0a5e1d6bf71a89d083875fd0f3ad17e7fe2b800935feb6083536911d030641fb8a4f24721b112295488563d4b84e357a3bc68eb15eea602c621d33f50bc61839c61823478fa170113d7ea1f3e34fd516516d6f40c18188d0dc12e243998fc30b659f29651db625c4a9d4d55f53a9bc8869181667b77b42f4197c7d6e1b65255e8aee34b06ff399b921eca1ab4a5ae5ac527a9f7b8b7513c3b44c158d54ec638c9c0a5fb1f8edd8f43c29628f7932c4c855066378f80df8b9c055586a8e8d32d3c755e6c6dea744a5f2b314fdb8e95b2e022db4d0e7dba8ea5e1fb154f5ef0e0a49afa3e40c9ae96b269662292825a5070f875977b1a05b46ef73a1c6f723578def1de6bdfac55f78b3cb05cd68901f3e0bddb1e7fd82419d058d516e110c7a716e85ae98e73b047b4c76bb2f0c9bc161c5242603a41d032d3e7791792a7fafca92bb8fc5414da9f424dd228e3d75b11e021121f29bec5c1c917ec1c700e5ff8854c855c3969bc63ddf21f18b358aa0fa737ce786b088795b29cbc56255f73c3631b7397d5b8e05676e88fb0f85edbf117cbaea3fff6355df5cd00716712ca800726cd41504812e007de073aeba799f6bb555794edf82716e015da5778445d5fbb5af717737773777f343e66668fae8a0fd70aaeb246043082134a369cb767019da65a0478c99994c19facd39339add21b3074daba1cced3dc7342c53f7218c82c0421f4a1d424d898e4ddf246741e7dcf46867ca827eb366e3f478568d8bc553c3a5c095dadcac6e563674b55aad563934ac27f69b950cfd66855b73d304a1f16029b3dbf1f48b8c73d59c1bfe76dfcd1c74cb18e329081e05b5fb18d8cd4e051a4f13947f9bc2050c9dbb1d11bb87c6df8ecd6c3be304d54573c3474d15ab31aa984f4c4a47774358c5f4313652eeea57565dfd9252ca393533b42dcbb24cd3bcc989d6961c9e702a3910510508f6c67c626e3fb89c4b0e7c8a638aeac8ba4e39d071868f8963c7995c3c39e0e1399c81bdb139059132c674f5abd56ab58000d1a1cae4b06845bc0a8b0d4ba7aaeba40316ab296ff3b251a799831f3a4c91138707bb9def9029404ce14187291da29e7abed1934313aceb94c393d775ca81cbb3c4f840ca9456d749872950d81b7e85908dbb14b66a0c47d72d438d38aa8bbddd1dd2be43322e884c79624a125055ccba4e529ef02d02bf3f6e9175f5abebbacef33ed87a7a7a7a3ef800e706af0d046e88eb96a18698eaea17081c0c5e41e08660e03355b543fa41e0527871fbdc71dd0e063e53f95fdcd00ee9d7b99183ae931428d5dc220b6d3657bfd6eb11acf0301ec63d4c172d5fbeb8a3d1838791d2c5c3307fe92285f94b1729cc5aa47ce9f224a5cb93140fd3c5c39c119fe2d313f3537c8a4f4f4e83073578180fe31ea68b162f5edcd1e8c1c348e9e26198bf7491c2fca58b14662d52be747992d2e5498a87e9e261ce884ff1e989f9293ec5a72787e261c0f8d2454b172d1ec3c41578182d5ab4c056e2a576af8b35d62012a59623d4fe325084629ffeafeb7e9c83a1cf17a168a0ec101b3c88a22d84820004b36ba4a9a169fba46dcf77c3d402fa452f0d390b8a496daa326de3686aa8cdcd8a85d302c2e3cad9f6359d9d4d270afaf46b3c57180aaaf69414cf16646330ec85bd04e1c0c5e286a6e0605febe05bdfe1b01addba807e2a290814bd87652ed0a7a3c74e9c86536d6eaa856cbc409ffee8c30ecff6c10d6361ee0a5b612b1ba3b8b600e1ae7016ce12840321361dfcb6d14b8412c24d81a0aa814a6a5f4583056a26551fcdd44c112a8ab7f114ea414f08659a492515a1a8977e26a24a156eaae7838df3a8e5c8403015a612b580ae517c369e12c206a19e34910242d1e0167785994200c0a646fd2294c6850c973400b0af89a0d2c005c024310275e4c3b93064a340bffad5bf5e6abf16806dfb073a170005141410e4d4807ef58bc031a05ffdcba5f66b02d8b022f017406b84aa81c80e77e5f5821e0c7ca6d23028bf26808da750225b84ea28cdb42a2931b5bf6d58a0e8e56b1daaab99d75049d5e6a6a00f1ad10bece8a5f6eb8cb0710b2809dc196e8aeb638154521f8d4a2842411f3454522aa9a1388546c2c6606809db7e93485dffefebee8b9ba294bb32a10f1cdc14048a13f3a2f7d10abdcf5575b805788d505d28ff17a172b82b2ee8d3bfc15182096dc2097cc2f6b36d24539b172842ad4f7f84c1027153d0a7b95847e5a6fa3505e5ffb8a9daafedf0dc3041f7c270c30d97135a7fb1fa6b5a54696ec08dd29b9b150b562caf52f77b8ae452f7bbb5691c901a1a4ad5b0d95c3736ab8d737058ad2ec6e84c2e9d0d6e855107ca3bcd1364630e3a80bf6dfff07685dd17e3fbc28fafc12e56afcb610fbbae58e460f32e88d6c1e6ddc72b20a076b779dcd07a5bc7ad00cf9cf1605b61cf9cc1628410421863841046acf360a36a50fee8eecc0df56c44f80ccabfc5408810104078b9fb0bbef6da79a28d365c5cf8aeebf8aed36d4c0e842ee80e1d88ef3a165b920d0c07ba43c99adb3686abe058a15cbf6d732ad0673fa8e36a1b23a7ea46352597a965369bb6b9c49c2a9de2b65843c35177778f5c689cc915d42eb7d48d3b507e8c8352be8d91df73a16f63b63ae5fad4768b64beeb37aa95effae7b07f13237d6e3042f9db2fde218b61d01d02d936f65baef8b9437788457d04b2512d283ff45d8f100cad0be11174d726c636e6db7d7f6d7dd731223a39bda3c31a8fbbef78bffc21f4873c3b3a392e202d1cd6eac686d6d0703c3d606ce029890b943c01c1dfa710087adf44df4c43c42216e1f01582cd364c08145b48e32d7613faf47bb7b3422db485d9862f44bb95346dfba7bb2ff673555bc8bcbc18cda7a4eee3d4855dacdd7dad799c42f99b1bdaff7654e01d159c898989a9ee633556a8c23ad58feb14ff428e5106104268e402770f3a6ca8877bff3c7cdef7f606c25c2ee8f3823e26b44f7f3fb7009d0a3d22fdea57d1b1dc34bc43e2ebd456aaf0796b9f7e1e1ce8e7aa0d2442fbf4f7ab022f77f8ec759dda60628f37c0d8e2471f48a86048184e6384f1851b2cbfadee874235a17ffc65e74e4c4c4c42087d3c15eba918151bb04841061757e8484208fbd93f22540c2323ca948a45af0dba95d7615da71bc0d06ec1969d9a63b818c3c5182e4968dbf3695eb88c8fe5a8fd124cff3012d78f17c055f624981d42078d02f2f66133e827c1d496aa120c6f431acd0bafb26c41595620ec3916648581cf745a43dfb00e96699ffe2da3e1e84639e8c1a81beddbdd5ddf5ddf9d1fe34f9c0debb4dd223b758be854089fd20ec8a6da22b36e11d99100cb02f8fca6c25f0662ca2afc662038c57c3090f6fd2e08843d2cd22dfb7c0cb4ec9379c73b849fa7c20adff7673efcb93ff2e16f0b843d9c53707243ee4130fdeae7e4a0300fd547f54f99fec9be1f4ad14ce5fa2ae7b6bcf0611f0b84414db5d1fed9f1e70a2b843f211006a40e399884e0471b6e087aa958c7715b535a23c60acbaa0ad7ae9f5c11b1b2b24a82b256dc102cd3af767fd87dac07851f046117df2194ea57c3a87ef5df704310cc0ee9ef2ce807a76abf06a67f342ed0060b34e1d416d9dada199fe6a5f6efa7b5516bd6a71f82d9220b6be0990981e0d4faf4b1d9b069996a4a8e067aab2c4abce47e3346db2dc2dd3bb4ff41f80c3de85e3307e5f709b7e5d6fb4430f5451e286f77e44d75bfb9a17dffa03bdc768b6cfde0c2670f36afd3403059edfe5c2e9efea1cfdd14837e93f6cf378130d9b47fa0d7ffc19ffdea8ef6abb97eb3d60d765cbd53ed90b943f8e1cfad8168c3acb6155ff7edbc5f50be36bbb902acf12be48664c759dd5363dfe57fee1dce11ecdcded6afc55e07fe275f763847502512636f42169e5878ead7981b8abf0f7dfabfedfd59fdeaf7ae69bffa3340b77ed1b9b9c00d571f2e974e102e14fbdefaf98b2fbfb1f7ff8e8868b2a766ed9f5206ae8c794afcbd5b42a42a81bff5cb839ee48eb285193366d4d8a279214d0d7bbf96eb21b4ed177b2c45f9995b404d5d3fba36f33c853a37342356b32f97f9b90694795dfe3933733373f3c3a8dea69c73ae46b33b649fa343db9eafc60a0452fd27b960b1f29f53a9fbb1ea7e0e3f36d6d154559749419f7ed84181821f871752bdec24962a536baaaa2ef3a34fc8a62a6313a3cee48a11eb68d57ce32c284fa13655477a915c6aff944eb55f5269208905faf4cf2afd48ae3575991fedd3d9142707fd6aa8d4fe2f9baafd3544f4cf7744a50688fec1bebfa68a63d34bfde0549669a884aad80a33390b328766666604000009931640302820100b06e469a02af2031480106f924c524a2c1646439118876118c55010c4308c2104116208320839a4e86c026e1d6845e8c04e82845ebc5ef04e18d9e20811eb216e3b77cd4ebf60a9c3499c40c659cbcbca4e1ade047ab0ba7238f19c19703899bb3c2a71a709d353b550a74bef8544e06a11e21b41fd55ed9c278ad4b6f6cdd660b8eba5a62e67237939106045530b83c2528b02ba0e220461af86a414e6ea015abfc2a1499bc1f7aa0c7633a24a4531bcd90d99cfe3e494521dfddf4ebe2bccf996a1559ced79a18ab4e6f66dca3e2de08db7695af7a2ad099b6cc0ad524c731c501f40d7ce2e1ca6f74213118fdd8c419f969d8bf2cdcac9378d8eb98c113080e56ede02e1ac92c4ee328bd2e99918ad6522f7d7f8e1b62e4a12b8ea1433e098798f3a210a90f373de4b497b6032124096ffe7332ddd41409fffb6f40f26bb130261c3e18fb0a7d447ed5be595c12b49de69c7b676b4bccec58af9c87a21d9e443b04ecd18dfb38362693912ee009e897e7aa14148fa5c8db0ff4ba22a778a2f43a2172d0fdef00cb42bc633084508ab6913a8f84f768d1efc87871a8ac0c8e03f593742061ad7ae34bb04b17dff545834e67d276a40ef76973f2e76cf64a0b095cef4d54313cec9bfcc1454513e0a24ce4599aca413b92981f8fc24332cb8aeb3a742f0eb646af6c667a43f7f22ca44e7939b7eff0e1046b8c10fcb004ec5fdcd3d9826fadc9966087841feeb0e44d68d98e64f50c16d43d9bc375fcfa78f3001bdc9b980dd2a14c2f8d087ad594807b0bcbcea32c41fd8bdad1e262227b52a468977e90e2dc3a103bd38b8f5d0c11de620870e0ebb746e9f5b14cc5e7712ab017ced16a45feb0a8ca188d25151aaf2ed9060078616a0e49529d49249d645d6e63a6e0e3c0419597a5f6145edc14c822ac4ef52f58b9ee3e29cbfe183589feb5942f7169cfe4dde5dc40d5d91ecf85d1bbc2c4158339695ba79ffc2521075c50de126b4be9fef9fdd1e31e38a0daf4694ef8dd242d1db66d561d05cec5bd13cb90968a8d9bec1362c53a4110dcdd4ab93425d1ab1890148102a913b5f11ff45917a0d8a2a22cf1928d6b55c8004348bd84bc02476ecdbc193da938f02449036d27e2421b40cb8fdfae2056889dabc23b8b1ef142913546c84be18538b06702adca197e3d2bb026d74c99e7d16b08ffe955b38aaeaf3950f6d99c1d89dcfd27a9fb0faed70637a47199137d351cba8e23a1bf19e7b7dc60a923464f2bb6414c89bfd5227caf46a125380354ad42d8ab597c379a554a3cf9053cfc1f55f7bea4d1648da5a93721254df0cc28d4d21328b0e443234f726e817c3d52e97e1e461c2d905123ad4939e84fcbb2e217f94636f17f63fcf6ab8ac20035eafa43f8ee93eb1ea80eb2a3739bcc7a8221545ea67621f9cca6d4be4917bf8a64af21a89c5b18577499602687d57501bb1a0cb8b8bac0cad6aa4899a1918701416046accb60c6708a007008193a34a6b2272182e880a42df9f2e36550371ed81a31d407e3b0fa14e21a66dd2204edb97a8fb8e64744d2391aca64d2d1019031b0538a2df4f98f52a791f395eb6247406cdee51685f52e7f402e7ae95764c7c545910a346b1a5f015e9d5acae6e24897761ca21ca100342bed4d29bcf582aaf5040cb10a04e3d8886171ec06c283240965c5bd19a44954d6d0d15850969d2f596a2b86d393817bf897fba2238286b5122c6a0d2e07381e6304062f718897109cda80402c30e311651c81709c5ff48d21773cc72187a2ab262ccd49446628402139c7c016f4aa05214236ae43641944e89c617af8944e9f4d45071989c4c5a7b098afb978253f19f98a72b828362092d6a042e0d3e12d20c0304a61e111a97f08c0a202ca2029d7c166b56944269f25f638d83f2a0cce29359b5bcc819328cada351d957ff93456c72221228abcc7442bb95559bf5a63f586c8e281d7ce2ccfc4789009e1dbc17df1ebed91a6d0285e8c0b56329a51b7814846f0236a3e7cc762a4760f3bfca4e459836547898714f29166a8f4e842284b56c3acdc2ce6173f3d50faab5c8faa7c93b224a9db785d39a6cec0f136021d4d561ae7c672b81849ec8da916ab38005a203ec2a6ef9f69f7e117b158728b28cd94960c626b7973cc41a96fe8c2844a641841422634682e119dfd9b2bbba9c435c504eba861420f9073da796443c12a3a1803128de4f6d7b243a42db611240e191b03dcd6d276a2334bf5d8c37e145cdce6921f1f6d43c70ed9aa50ab8d42766a2d1a7d6822d04ef6dfec68360587a85bd06a69d9dfba1c596a7550024dacc3a29ad9bd1f7a99ead403e70b3c261248b8745d62780bdc01068f77d0e53cbe5776e23093132236f89a85ddfba5c276da840922cb4595b4b6019b75c88e41870d08aa14849f8bbaf0bd33a99d4c81ff09dc3bf40e667a54a92d9701483e3a5c54df126d30586b7163df7568997d9527c4e89195e5aa5128c66d601858d80d38492bbfce4854c92c3518926a5caf8245d33174fd7237a735c888852cd96c6ebe1c381a4ca8ae01bf4c1bffa90e80f8a2cf453c5065abb37581e14713e3d3311b754a9051307ffbdd74d79068ce17cb35345fb4137baeb850519af99c2744bc73a87241c2b2944a68d1015954aec046ecbdc63e944b874640746b5232e8882f4906b9e75d1754770a4724f01ace10095f41ce115be534e8f09ea766494a8a66927640e156bb590350330d9f834ac463c88d27c4c86fffeaf585efc666abb4bcadc82702518b0ca6ccae2e88b1764ea5f4c5635519a25069deeb8d5a90f8f42096653e2d953fc14da0759a30de5432867c3a7000042f3a9a98042906315f7586a264bf326cd1e1851ae05727cd85093d9cd16baf560479f7481ddaa2ca101a72e68790624d0fab73f7f019fca41867102ef7ec236f380a1eb5e4bda998e9a76a403bcdc924bb865c9e8c39c2d0be3eeb95c25d568dccb300fe531ec645a22e2d1c50965ce8f1d78a79532400e2a2cb4b24fd407c5610a8713e0de24574c70f40b1edd953ee501d685273a1908c00852b0ab3ec8076b35946201084549eed02a06095230f70421559e7f2f021060dd2fffda96b0b746d3a16e8d6a69cd2d49024f6618369aa87614f8b34e737c90e961c8b4c23a07826ba8e224f6e740cd5389bff5ad8454a4746f45ad6310884ccd1bc8c660f0878ed604bc910be66b335482b65d87ac7e00485e9cb9200f072ddbd4564fc18d20b967106e1215b6fd92236c57a482d8fa33c3642228de3d2c4d189368f9592407c4f96112c6c3a27af623abf36fd331a4aa02f16b7e1451e60861713dc729fe038149857d5104d309341b3131742c5449851da12988fbf459d1b87c284ed6a332888558f5fc458ec5818cda3b73dfe2d190102d19085c02c9f17e20f9b6704a11a3703a5eb96e9ba01b08adc90df064e83646cee35f3b5486c7997ee82849672c9c5b689eb54e26c38ad53b9a4241e1727ee9f1d0dbb393fbd76324773d4d81e56a62825435cb6a81add12e09ce74c1b9de8bf2f6cc83fae32faa27db25f39468a088335b4dd4e40e5d04cfef18819c5094dc10b32d06513465b5563398908d78178ee54a258c231b74b0472052487d43fd3ef57746589db97893c8d4700bf76229886bf8e91a744de9892ff6e7ec76c21581664af80de29704201485df1965edf6fe9a55411f8cc8901d7daf0a72e35da2983e254c4e83e22c53e1095134eae4edc04d160fae35fb80e4399f7c99b42d28d558973a2f61622abe08deb1358b893fc4fc24001005ac4258a86938041315e958e8bf8b05ca0a67081bdcac905e17e0e06ccf272b3e92567f733545e0842c7f61778f66f117c2b2e2d3f21a18015ba38600a9d8b7e8079f1be751a0148f36cf23520f6ba49f44ec6b482a7fe2172c98a938c97ea3250cea9140eaa4e6b26722dc844e90682f705677dda06634073eb0d21b23d1df3585ade8de4829037121e7a8e4367458f7be1872df36f9b8dd8c8bab51c7b542f569ae71b9a4bddc068908acedbcaa5586c1232883b9e37418cd58e2dc3400fd08f94bbb56dd0d9cbeba608fef1c025189e61f4660ecdebe07777b7fb3bc8effb3c97cd4da2ceea1fdac694c2592f1ad0e6c58c58e06e29d636a9179632881a6ba2436019f8763eee6e37e61bfee076d0656ca859a8d626b2850bde4a1e5e5ab419917b30c4b09f8ddac7fa904493b67fc4e739b216c97c1a87543b4045a995aa7cef5a647f228f94a95d997991dd007de07a46aa5f82be9ac9135a63d8dd84f2399092a6398b51e2c2425b9a67059ebf32e1b08fccb8f5843a127ff0f289be177c5b1cc0dd7e8b2766d698f4ee45f2c00bbd8fda626af0445e6d8cbd9d108d03d595dd6f7707f900692c460c1eb4877f6c9dd364c7acc89714d7e5f59133535a100038049c9de657cb85deb3bca3aaeee7e27c224fcff857c75c5902ea27994a158daef7af43bdf1b0fa452536fdadee67192e5f98e4361e867d2fd10eb22663e27bf05518a0fecf983e3e40395839e6c3c67433059d4846693f0e63502c8b499670f8298356c298a05c308ed74f505124df869b327781be98154f1f68089b2f39e50a7044d02caf88e8bd0e84f2109fceb0a60c3930a91385e4b044122461a16044bf61966c5c0485b2e424410f1f36520e1fc6bbf08ef0a5ba4c0a17fb943c8ec97d54520c94fe048c6057c728876971f742743c61f2d3e6be45f9603e03dcf57df77e8e53d3dc0f7c60a4ef52c606f6843a25e9f52f85aa08c92cb46853593d0c0a15998d972e1280fcd1a4e3c9ba3b25065b21805ea68eb82333cde49065d440d195e28d8420a8d00bd4c49b029b0ca75260c0e32009922cbb5403cff45cfed97a6ea62bdcb16083ddc3ecb39fa89f22f969c0e7394b7fa945a4514e0c1b520786fe91ab66aa067bd2403e9b08b65188b5e3daf341c3b909c5bf4c223bc549c2a2c31486adc95a8f34654371046dd7cf582385dd08029610647c0f0d6bbd0b7fa7552a4b1e517f0dc128462c1ff5c4f82d20dffaa2e6b2913c1bc4e2e8d86e6c35850229f1404ac32c9c507d27137a5e00b909104ee2ba9b78b9fe4a7666bc5d21af354fa418fca257e2f0f021bb3de13b732b44629ef57bf2a680b4803bf93869ce9d8c5f3e0cdba5197113901fff7eaaa043a411e66f3d3ee8867b025dc09485c43b6a59a6adcf06175d995a70d8c11eb8dbd445cbfda3c701e346cd6052435dc23217a03795392df18d2f7eff39299cbb170fcea2e11d158714bd41a17941bd7ffadbcb786497a876d312bdf1f9a097665e8d95f6310b278a5d8d337eed493a002676fa6d4d3141a741cba5b4ff9d3a4b566589da8da384d68a48655f694b1581a44d4181c3f7eed9d7a5d84c0c22ce325e5a33bdbd26aa02eb65fd2baa693be30080968f084206251ae1d0b94164e4374bc0a613f4a453850a94de75d04ae3f3dda35e01b1917e0a6374ef65c092e88420e1b03b4624f8fb17a305f95a8b2b3ea7add4606e69d73772fe86709f84433c0d3a70e28299eb51629b960b4cadd2e035ae26384870fd80217cd9a6541077a26194423ad923a298c2f3f76fd304aa32cf4fd7e2382194e52abf016a1b8bbf29c9ec9e1c31d0ad527f99a3b0e24b6b14b80cff3dd8d41496c7f340e0405dfc118dfa36267a90624cd279f7ba689e5c30ceff933a9a96aaf11502c72735174cf3ae950613a249be10f7884eb9aa06a58f4cb7f499ac0214ea7d929d9467a36c9f52f576cda69e57912c92b25ae6411842880af330bfbec515be9cdc5165a1666dc198a69c05c242ab076403950a48674b800718f496749062e95103de8d8507244dfdec36ac9983b74c1e7c8c5430d80a0793992e536f0d6fe21bdad3916075bd8b056a0b4d3b49a9cb05d1b132ce2ca172d32ac283723e8170230b835f8a9ac0883f42d4c4c01d9dcbe7836b2dc29f4bd3a33fd54729583d238c239651c9e86294b0589a85a73c962621002be46120546207550adec9a7362a20b4ea670498249ae45a5020d4999e537f648a2d3ee4674e1d66e64176be864465e42238a413c5cec95ab737b869b01fbbf1bac0e6038547f4543f476a6401808a4a9a4e5053f1f454933280c398b228438c5ad46ebf00c18b800384b9865478472b3ce6fbe648536999ebdaecb78a2f5d04715b4859808f5027db5d73848c545e2a13fd447cea42c2f2e51fddcb87436b2f2e8c8a1430a98bb0d3d27f7d32e85249d90d17542418a9a8e0d8c08200909ce606b42e9ab9d918bcfdca46bc8e311da9dd64c6a26d7984344d2f9123611a3882cec5e2e99145ccd3830610d65ec7323c90b5570a0ec4ecdc27eba3c2525add111870a300e401094f903ebae430511efae0fc7cc0393658992a893344097279d0b0997787deb806f2ca9919df7cda400c617533a65be831b8f06c8d7b48d01c86b92ddbd5f2db8148e6f999508060d010eaa79f0cd5c3ff8f208800c2e928af7de673d8e7a70e076cf98c4c1a07c3b84bc428a86b09d7c49a949b33a1173a63f7e003e53ec6d6af7c2f327d7de4a7265d5006c321d28404cd485ee7224f796bda9af82ab29b14f4b7021ca4004781f20766024e1a56759d0b6f8e277953c786c62dcd30eda1ebc12d931d19306786bbd41daf516c134149291ff4a3de4d702d1cd663d9dfb6e6bdaed645caa40705e68a766ef9e098e8b1a978fd09c2963b66d7208fddd91c81eb014c7af012839daac3652a1631fa619fb77215b3924f96daad2b29ee610b76c3d78ade60b9a336e0b4170b67a72b72b152d98d3e2d4e1b9065933b6b45e1c69e01033746bbcae762eb1bbb2c908cff31390514f6d40d3cd76b1c6a8d6ce4ebf47f47fecd27e9f46d8c3195ff7efecf9a36129bef726f5e73fc55975d230b693e49d2b9155931b695bc73ca25cd1a184311f61bd31624ed47b590b9b846d36c8c9f78b42a6d8102c657874f9a2de25df58e2a6c71baf84ffb6299ef515b52c4c61a2bb38ba3693e0ff91499a20717dd628a989b668272dee5278c2bb662c7f6f8199af74371635c9ddc049b038018135f9494bc339243af9cc7044a9ce3b158931532f9368bc81be8cf454f06a9e8cfe6d30792c227e50d5c599c50fcf7afea512d353c172fa7d2761168dd9039c718e5ca828286e7ccd070e5497c3f21e1f60fc5052b463026affa3319f5709c29453e72fb041504a8ea1496da8486a296c19ab1ab550fe3012f26a8684a9b5a974a066969f30bc0d79ded0838b53b8e30fe1482e1c7b8a0a3b1c828148250f9ef1167d3c4b178f526b9b231b8c08b0a18ee2dfcf548893caab633ce0e77075d99019e1119a84fd538d21a4c33a630265179a2d6481cb974e5790df54bd66b52bf4e29750c17b2b0037eb6eb1690f0a454dfecdddb6160d2af1c408da621adaac7b88c3bd8242dac64043444557c16caf415cdb83cd7f4b85e7c26f2f771d1b104a4bafec31eb7dd354a7c925eaecb60dba35dc8f155ba9be0cdb04a8af8ec895dd770c26f1074b7fdfbfe7b23f2f1d0985d08b027449e7ec587316cb9ce7c83e48c10822475d3d18da90ae990bbe807c7c5ec3ebd1ec5b28b7c20ed4cf190069e6cdffa50a24bf1494003db9a7aee9dc4333e38bc592e0835f14b56a1cf2bc947de60602d190eb398cfa3227cd5bc6f05a649e3383719038a6ea907f0f32ac844e42f28c89c0240fa619831042a9b95ba0fb5de6a5edfd9f9b3d0a0e5148a91c4c94827510ae91682379b3ce7a85dcabec69db4dae1089cc3a643645437338f1e97307f58616e289442123822c6810c49915465441413e2ee49a1a052e21029e18de75977ba3c12c21034943542583bda0bff12a65aa71fcaa85f051bb3caa0ea1d2462b1318f93a022e8542af5daab42675a13664d00a19121ba86c9f5f9791a21108acc8e9ba78e513a708b24bb342fb73b4544ab4828fd8c9fe344fc6a04e2d0b66b9f0cf549f1f3d2a2351afe954b1127812895d947914f253e0483eec7f8f2357b18a0fe0fdcd0b2970cf4445a9187884e6d0ef3ca0e3fd3831c60261c88d622f1af89449ad7114f18808064f1efc294fe47540a82f03026f4430be940cfea33c7772edef381ddaecc0262e0561a0209e0a540cbe6df9ef5893bbd65fb26cf4b86b2089f70249b1b72c7f3bcea6eef58f784e4058c1645d84b25c056e200eb117077f25a502c6813fc9115a4d4f94b251de458233ea640aaa5ef43601af90b511f63c0d6c27545bd5f619592810512c64dcf4cc2c6fde43a54dccabf5d7cfc91a992d152516584c62c380faf913d66ac8fbf59f2cb682d9fbe2192482977735e7390d3ef2adeb64124c70824562447fb2a16d5964df6f691703a4e530a1b15c9925ed3d6c521a9cc8594ba6c9c1331a0186e44ec4cac40e58aa6bd1a4631c97f5267eef0a633e615ce4fa1fe3627e9a980c9e4b1ee0c67efa95146ed8b1d2f5292d2f5d1691a49a11e0952f9eb02610ac85e5c11f26620ebc06c5938bd66a0df9c786ba07b01a452864dc2d4dbf44f54dd8f2051758067f5c29d888bb94ad5108895a030d6539db3404350e2e6e6971c174b22773d22978b8688cedfb8ff689b5aa9de91bbf331cd310b4e61c370e31605c0437fb28348d44524f9ed894939cb69bc3d562a2413ba8d770b512fc4a72b62559be9a9256c749b23d38eda7aa31232ae9a3f66f5fac615834fb838940aa5f337baa83d84aa71116f2b3727bea8a8281281cdcae6934d55296e8cbb049cd518c420c7ed989513e5ed92ecc277bdb600b9de17daf3d71028bac48fe447b068dce0c573b0f45d666f687b0863f761a4c51c18dd3a853f59e39483043523d4d562610eb93ec06e0193339b18add93ab8a3fda27a075c547daf4a420f92ef9a9b269331be60a2850f6d1019fb0f1652e8ebfd6446e881ec99a8bbbf45352d9fc9d782e276aeace64c615754d7fe7eafd4ac253019e3c93970dc24019d74f0978b3e50d4d76452d7d661ba89ac3b913e18a27913db0e090fccd3ae304533cc8362145477acc8d90db818a8f5c623ea6879cd9064a7eae733ece8724dac1173eae3e2fe51a860865d9384689fb5047fa32ae47ee198d6222489ab1539eaabad0a12f6ac37a8859f176e321b04ad0b4d3ec8806abdb845df80ac3d04c254ef3a1d7500f8d1401831cba120a1c1149ad4bc7791bd01f639e4897d7a144073493a3f8d67c704674569a161caf74e3ccd94dc27bb9d4ed7cd28a998b6e25e202bba74b8dc764442ff5c254020c360a0cbd844a2e3c57b0ab2e248fc0e34e5223974a30810837e252a5291a078e76b7f1692bac80927a74f4a6cc982a1a8919b04371eb4d2aefcdd61a0f04c594887bdb80c37d16812ba5b3c14c9cbf02517a58c99bc16f1a24770f0e154a2707a811a2e86a649d44b238a4f19dfb089d0071f8e1dbf588c77a07be1a87217cb170c60fad1f689de51e105097b69d3d1bf67a0d813865dc1b898b7c41b5e43875b2f9e38205508ba7979c365bfd6d0c9c8ade7b1fb663b9d7ade2aa59a8cf69c14d9b6682891ad95b92282070462046fa5aefa07e8adfe1a0fbe7adbd50547366476d21041e4fda261972d150c06398e70bcff647c7060b854f0162b67781db7a42cd0d41c43699e98f0cea68c32ba4b2ebd8ebec916182f9aac97a2fa2d3d4a8c2eeea52f51ff028cc446c6cabc4376f2314f746ef069c41b24d95dc6fa12d1e5ba91cb45d774069293a508242fc17c40b67cf2d46f4083008015d38f9f197597d862395113e428585337f213a3ecb7080209a2527b4726a358ea27541aee20dc9d8a0222abb6a0dd827ab7a0fb2ef51c043edf06941cae78fe6d0c5678f65a9cb0c2310cabd24bf647bfb7cad7ceff64826e791cdbc8c85cdd4c2a2f1685075d3429c1d6d4e83e18c262153278638801c4d0ae81694683b7ae2421ac7049cf0491727bc6d5621cf2c48e11c23ce0bca3705676aab28fe40cca1a20bb80ac84376c653b78ba1b5fa6a5138b0be09fa12a1b10923f6a3b18fa9487e9b3be248990c7016e9330a34f822d70d4d70415a9e29f21e75f364210ca91f5dc009a9d071d7753cd3f9779606e886c05f07dde7521172ea83827b41ddf2f62537a89a5f3c72736735460ee03f44a208fd9d6e69fc477f9c73f094ac90f7a28f80db7e17966cbd80e744b409ad21d5166f8c074a5368eb769cacbd63d8c48b8c871e46f7f50f33babdba084af94f3809e80d764152a22eea1520b9d28d4a007ffd4d7c84ebe3608f76726167d4e358980048c68a661552dffaa182885e71323447638c3240be03bb3dca1aeb6413fb1d06c30c02bc77326eca1d4844e0785e4d81c115dd594f4522d00b73b9355093eacfcb7ab865c150a67661628c83323f4636bae5262ba94753ad9727204c88c17abc8d758895d2f458b639a834f840d7207399c904b15e6f255f876e10dc58d42b38986d9aa8aac762c975688b63ae7dcf200ac1456c3a50dfde50df45d4a763659f65dea23650c7260d34bb23ecc5c1be07f584d1d3f37cb1296a1ec6e383065727bd4d63c954471142a1dc97aa889eef5417f3e6737587c4fc5dd64a6dc1372f6c82653b6a066a2596635c4315bb3e009818c00618dc79a901fc4261b31d1549e785dd39832c6a737b01327a3709510ef4d24b90f74da05e22dce8f8bffe0b62c810801aca60e64451c91f55791099bb2281f12661c45e4387a441b85045b47936b3e5e8d53dc4eb7cdbea66e1be4bff0f2b805a8f12b3756e1751d0a585bb502c44cdd9330d1eaa70396d176d756bfc2d4b9f4ca4f3e33d1217810c9d1582ff949d20eb0c0f18d90a375c925f82ad51f30435c4f0b7596ef176442058fa49ce32fc458800625b706a5f6fdd34b52d92ce952a675bc4ee2647a140525e8dec28a0e10e3eeadada1e151b112c12eab0df8f63306ae8f0e3ae361598eee6cf2d23974783f82c73aedddece47fc8a17ef31b6cd2f0c99bb516fbe764d2c7a4f9a4296a942d32ff885fecc0a7298acd0caebb7cd574a8714a6910de9046c49db412c2056f3a0511b1f749eb2bb0fe47fa112e340b1d61fe48bdb9146f3c357667780a3b1025a645e941e2021bbaf7e80066c0906b6a1d7552e4b0a63ecf5e67b9afb1edc5f7b9ab162b6935f7e47163ce8c0a43872252613efe3fdcfedaa62069e13dbc0082378f7ab10e9017d5ad1383bcd67b71340dc9f4f49364e407533e62740e5fc9f9ae644e62647b76171117e00c7025c10ce3da9c2ba904930fafa35ef616c9b6b8925ae8d4f4eaa80e60773d42c786871f23854ee74f1f34bfda81f63df483cba4d359a4a40f5fdb1a062ce463f8b95788e255c7e4d292586226abd68c7a66582fa71cc443c75ce9d54ee3c0eb4a073b2495b4aa10b9f7f3da73c8d07d180e04f73ee67516e3e9921863d51e0cbbdd5f386e36e5e66b777ff33086e7ec76c073b401cf54337233a1fee7205b40cbaf158e60d574073a48cad4b5299c7f495a3aeef1dcf7efd22365de74b02c565bd8caaa14ba976e8af523c5a69066fa1d965283337d197cfea37930a73ed50c0a85659ffdacd18d7b3143ebc25544449c2913bf377894a45ebd70bf642fc3c7028ea1191078f8f6328adbd5764c1393b6bda9ab3a08dc5d053f1a9adac9bb6af25e17ed04554863eee01f4d780595430d5641ecf0a99befe425aceb8b38c0f125c5a545148270f7f37f426fa3824848ec0200d063c23b565803ee40e5e055099b172908917cb78c4b25341c5fa430824c25fc17f4c2bd2b843b34d27e3ef18f7782e9d98e39239c8b7caa81a3abdc62507930bde32a90cd8313996ca2ecaa0768d960a02fb6fce4a8b16dcfb479eaeeebf9e66dcec1afaa2c3c111a21a2d1e2b379a1046e4fb0b3b7c3f330d63971c4d26f74905fbbeb950245ffc905a6d1a3092a79a00e9d323ccec41bf13f3a9e4444882147b4f8b4cccd034d70810519acd9694a7197c0f0c0915d83eeb2c2d8bfa1c4280d4c46772eabb5cf0c3121cc019084e5fb7d5414e409fea04e64215bece25a528558702f354724664322a040853fabe33f6ddb9acca88df0acd25c1c3f108d2b8e20f80def6d29c1cb0f0bcfcec24e98310b6d0e072b59f3c7ae58403ca08a5b33a4687c049e3c824cd5ef2a767d9214c6dd363fa0c95bddb227d9040575d70a038afe976d83df0553480e0b8968fd12f7a8e904616717d6f9ece5d510bab8b781b2b888779d37b3512468ab4c1a798e0b726db67f14b4796861a0a51eb834470e4da5adef559e69af3fef4255c93d9eb4dc490fa817dfe0cf920e8f2895ca7ab426040796824d448c607672a41996b1e4d7d0706cb03a20c95a728db3f3ac70535567fc9630bf8ee476ad145e2602e7b0227621ada92584a5b0659c55309a7e46f2468f513f6cd3d49f185a790407b49d5bf1218e854c23206a9141813c45b84c4b6dc56180c62ebbeef4a2a70504f007d892d223ed8fb70831f770268283ac05cd861c05178fa000084de34a8228dc165080f72f91a624b757a8c8870e8d02485cd1fe2174a875315820e7429fe4a70601c50747e63d5aef4d9c374dc7379095decc2a1a1e23910c26df3e1d74335ebfef4533cb778d2f0d5928e7ab28648c8fa202faea06ff31e316957f600f176e443f9d4f940795ee0b9bc9bfba17d23420ccb2490a3bbb69409cda6e8484674715c886d66fa2f02721869c516764425d8e95f36f1554730b89a676abf183abaf69005306d8ac537da61a894cb355581340373d76335377ebadc6c2ca40186a8191c1ae543121c2fc671cbb6dc2d8e9e811c110024068047e918e372e5efd2398d47fc554a4e9a5d0696b9c7af841f9a78e817705697fb048c44e8f0b5e7656f582f0f46f7b0bf04d41f4423910516adb42c0a800237805f09a1337dd36903032661a4cb59ebff934757e4fed696c42513946352b82f4ef1e72cf0d09c743eec9d472f9ce827e3e70f88a4ef80df11b9d95b8324efc5f88612b795c0d54f2681bc5799c50acfb92a72773c21f727202e5c1744c0c562ac922ea977ba463e6e96985490ad129ca0cbbc9f92941b92d9e1fa20621be3d58e9e9b6459bb19f10366c6efc25b2593cb04638980a44c67f7b680a4a13c938a12541376bf879b5e09ec931f1d3509ba1eed1c777641335af17d30aab83717a63cfafa49a80047e97f1d3c194f081affda45def21714c8b6469757d978ca2e2f555e62596ae5e6de642e12f92b360de1a0b0e8944933d3d079ad820a2b7f8add09fb88d27d24c236ad269a5008c72aee8be60454a71df7c98045b7a031ac3716b27affc041e30af1e101fb140a2c295e0dfa5c539e9b60c9e00816c9d69b2c41d06e625723a54ace66de74e30afb4c55df569477d4e2a65d686fde41c8791a06a94a56b9734d1d16b45e1bab5941615180950a3b342000b28ce8774f260f7fad919c54a0a68f46aa79adee5b1d2827e5336969e82ee9d457204876274f59bd080a441f9887c72aa844072ac30284f325c44c530c0bbf3c157345afd6a0517cff64f39a22ef4a2a2f265c4235342242f060de6e5f60ab83a8340b9d611009a19d7abde3a0e7549b2009bfc9d5c0c187c49b5d34c72cb31565e7e4549e4d75de9ca2b74236f26dcdca18c476b82d91daee0e9c73ae3c681fbb6b913dfaea7e9cc98fad16b2ba492fff28732e4d76012c08745db36a55243a9bad9c42c372914e0b344fca9050c00224de8d3b361ba1d0b47247f32d8c31330857147ed5802bf1898acf3adcb95718a0f1070356118ec4ad6b44cc0121f1960a09b11409b0b87780b303206d2ba2cc3e860e045fa730506e620702e91a90493897ba7723ee97e4a4933da1b42014237ed03ad3a4fd0b00e33155a4a32fe773221f0f711241def33c700cd23073ba3824452d00fa48436aa3788adb13333482ee3aea76002ea6fd281fe3ca4a18dcddd81fb92ffc434d699b97fbe33f51178308db2c8e29a64a412dfe25f789f11ca7681bb148806502e40449d22b6cfccb172aa76f65d2c9d03a964cd5f81b5a3d51e968c91e09e6ea6290048c3e2f77a34d1a82076528234ce7127aef6bba168d0654e128fb5430a7f50542c80c3b7dbd316670bb171b10ade2c35a37e1668fcf6635b2874e0b986da8d4ed01a6b549729ce561a51df2a157fe1f0bf48c17a8211ac1eda76ed7b77351d86be506112bc50a657d058505ea585f5cc08f4ae6ab7d41e9a2b84ab0515c9c192933af1b33ab5ee8bd8190884801eb558fc0fa00500a6d2b77eb3bf8494174f5296356a16b7002fcbc95961ba5cb16b4fe3627d03c7dac8ac03ead71ef488a5e6bfc24c303b4a92cbf9add3b1ec998ffd4a9ab2397b5378b79c37ed7a2d2c465b39b8f40645a74ee19d9744653e873340c41577e6c0bc3ea920d11416f32a8ed083f22faa2330dc52ae17d8faf8c2dd5235a20238362ae6d93d84ab00c4ed0eda5bced726718fffc53fe2068338f95d306c6217c8cd7d2609d86a869e4fe05da0d7233331ca6fa495e6efab1beac02150e0ead5d0c0e5d630c836c7c9e317398a814dc28dddc7e129c938d86e92dd05c35a34633186d1b77e1a80878cf52913805422b3ef9ff38c2225cd76519df8b9b1670b60a700464e04729d3c86ef4c3cdcccdc77529a186dff3d4b9936e3178960fc07603acb9e247a2bf4f39d9316320c88f0ec4cf993b08f0e5bc05be59bc3d5c28dde716a2d70489bd3e3fbed55400f9189ab92069f1d271cca37eb86d3c2946b5395ded0c4516b7690efb2e61ce9fd458766733e8b012a3b1d36183ee5e8c2c9144450ce86090f545414b4d059f74f8cbc442eb254a6ed663113810c58ada52a7e2f967c0817baecf3af661ebc145b02e758e1dc6de738d3c30a30de32832115637701f306757bceb977d7fec6dc72570c88720b7c102b4ec992da961f8ea8d51f327d386638981018c1875e62818961d00fcc3eebff2b24e6603709f35137843db5106a720f2b69e77cb848da1a141a9abaf6bb37f4917a46cc239044a7dbccfb7ac488f146c9408929ab063adc5545abd2da9613d3d90222e93c545917e6992ce0243285b401ce04af218bdb800c93571f1ec2f4c7284537b10a9742c744ef05002c0d08b60a1db40ba8c6e1f0f73052c1ec3072a4419bbd816eb328664f4db5e64d085ea7e37ebf557ffc3f30e7a457fa6c23809473a68de4a16dabb3349cdf5bb43ec7daaec0731e5691fe4973a9c765796c0124043de736ff3210af3a1e58cc6d176e64dfa649fd0a8aec989f9466bfb40e847a436640a19f6e6606b081f9569cc01ca1fce8b87e9adc2c2772f4d060dd70ab01da155227252744328a1586960d9613f476dff3c25f714c894fa247ffb0d8aa0b08b263f842a8d76df35264b70a7e6c086f847aba2baaee9c9fb4a178137dbdd15b6374d5e1f51538aedad1cc5e445d0b5eb9c955b79cbfe35ed76f088397e9254c8ec2d1cbe2ba3cd329e2f972ed26396f85ff682eafd77dbe7d2c05c730b4ab688da2678802a064cdb6b7f70e3fa00620e71134a51482bea3fa0bdd08e584fda1401ada1d97c9c88e1744c057e02a828016e2efb5354008239afc477f507d3408323a7786ce88df6edcf3bf602b983a3d9ecb76311407e2485c51fa1c7048c3ed24a10d8cedb6d1e0a9d669c40e9e84a226c7b40e2b711eccffe9df4fdbaae560c51fc266712fd84b12e8901380b59ca0580240636703bf2bf022906c4c62565ae022e442bf10773b9ab85633efbdc0acdc43e93f886787989ffa55758b77f8a804b1ad79c8895a2ca20c6b165932f48f2c9bf1a8e6a53c49299d91201d07ee6190e48257176b2d96a3240c66730b9dd268d8bd7c0ff198ba2dfbf8fe51b879177ea338e28cb787e1984c6fd40c3576b1e202262fa254290a5485a13b2fe5c60c0f009be384acc42f439f0380de2e59c44c5a52f3c9837fa9ca865bada370efc07865ec4677db9c22204a9ee98e7885b4d4b55a3ca1f57e991a8a0329068556caa88e106e080a2f2609ac406313ac69382badce6514c3fe55d26a26cd34452e5402a8fc957b5ad0a5533fd70fa8ef7cb5f335d78da6e058816a50830a73c1960fba6f0b4811050167a88b611a5d6198fb3fc774df55f2299f252e75305a1c3313929dd6f865118340c54c97930b578229d89d41a5fd94f3acf59b98f5317ca1e34933bc2b8b26a6a526728889426e2194ff94fd48b4385adb5060db2a57d66fb4e653814dbd957c5be54286799ed3592e712921590dbc2c9a833637d8af19da5f655362c1b77955fb331b9fd2be1bce009acf4f44e2f05ddd11513aeda48c94598bf073633dd8a20469026e0b3bad5b0ebd493092d0f6e042307e576aa897657a407b5e435964a7800cd30910a199a6954cf94b9de04c5ca72a842f819625b6ff653b97033a625685d72c115e02e9790b104bf160e2c103769cdf4b51533c9a53e4ecb38714468352015a8cf85c821581f83825cdc131e4fd4d9ed2ef7d7f2a3cf36e9a6cd102ca4de60069549a7a35de5e615867b8ae2239a7220bb3cb126bd3ee72db0e0d3b597394e9c09be51b02c5a4adf96c285d5c9edc21ab8087b6454fdd25617812837005452ecece036e409eecb111abb5e1e53a9610c16b64feb372ec777cfc892566c6c635631e3ee36228d9059e0061012058caeac81e6a51ed27c40854b3a9f7886bc2336f6d44b347cff99082fe55291d7f12c2a1af1be9cef51b042c7165df022dc1bbdb1c81eb448e2b8a03e6225c2e361e4800bf3c76715c01a4f86861592b87df1b20e2a9175375809596293efd6a697cb847ccf9d148d6c801ae2748ce5efa637ce9c05a13aaaf49f53ee8fa4f6b45a5391956672e29e3d91df5882ce77ae7456c8ab7f66490830e98a260450caa65052d0d68290aa89416add0c07e81a88d915684828724c0bccd20fa40d137a40f7891a2cab813b637a4207fffef1261630dcd2c0b6d5fd558681a90471d3132374f2445c686fb8305fce73ca7b0f3acf1782a2982544f16c514d37587a6ad39266dc55b92de991aa79803a055de2bff90fded5ef1ce1aa15e342187669388802144a9c3fe41b03baa666825630a0d1a6032d1e79bc7bd11a0fc7be18d69fca0c4be140c00f863e7a631aeeba2acdc673ee61aa44bcd855da8803505021121b6e2cc2efe53bf37ae7124c7a7573edd912a87e5114fff926adedbdf7965b6e995292010f08fd0739089f065c8e39c6fdb8b8f756b7a4efa5c6ddbeef976bb90c59ac61238b599178c1e22b8735e55f76448b9b8d2a4cfff56a444d09e387acaadaf2127a557959bb97b27aa0842ee57b3a90f8caa367bb4560eec7f8037a3b7415d4b00a609ed93da7e7938fb005012a04e8404e3d346ac9d7ebd7d7f25daf787b4f477c620a6700c3bfd755127c8c5542fa3c0ac95e0266b34367c8906bd8a89940aaffb1fec0903b4506bdd730d9a13fd80da8bbf9f42a75706639f1ea7987bed1c720f613fa18a4037d0c9af43168ebcbd7cad733af290fb11d16db21a3f505ca78e232c6dd5c2e8cab411e73485f16082000a876be839738c7b31dbc963cf47a3d842e9be5c4db9f87ab38def21db88a637329a7cf903a3800b8134e07ee3d900957c25539b9f7401d8ec33d8dc3a812415eae12fb1252de5c2c263e3aa4954b3c4ad5accc4df7102ac1c410d6d7202fbfdb1ca944bfe49e95a32e331be67a55f10b631656242322f3cbe563c1bc6926abd9c1e86b90fff3ca23fdafcef3d773ffe738fec7738b22a1f29866abc8b177e50ddf2e842be8ddf7aa4a4281e72f571b003b68ff0139ee9ed6fd60772fece52c608410c2f71e8410422a053854d08a10565ebb821508843056fb2af8500e2fbed7d2a20ddfabd0b5a84e9676427bbc9a9a3e3d1d95d7688fb1dab7ac2dba26e605513957d2a2fcd96a16575fbeaa3c76cdb347df37d4348545a043d86de28632e892ec981eb54c937a86a64422914824122909955487f293c7a6a5635a2c9b132a75d3302d22914824128994047b4b4b4b4b4b8b0da98523cb308967684a35a6d168341a8d462412894422919278a9977a29962175854add300c8b388647a3d168341a8df64422914824120975c3bd3334a51a93cd9e46a3d168341aed694f7bdad39ef6b4a79d917f2361a6c813e3a34e664921368d46a3d16834ba193d370b8754521dca4f1e9bfa4a6c62139bd8c42636b1e995d8249ba5e59c1e8f7bd7750b8f44cfcdf242cfb37771ba248032346f93a941373325fd39cc24dd50a39a458811cdb1cdd93b09af2ca1c4cee13b1e9dbdc5f08210c17c30bc04709cbd4dcd62cd34885f10575b33cf6e7aeed34635bf68fc68238ba979f48e677173e9689a67ab7534aebf88b4937077d1ca9aa1f98bc2df687fc11d016aa7b07e2d76b84e5245fe0eed244fc73a872e0164be187ebdc1f08088bf6518552208cc6b5c918cb32c4e748c46ae4f4fc7fa45df67ab35aa4f0d5a6f9b50066973b7b51ffbd449da2259305656189273fa765883ab2f5fc3ad9a6601c29f4c8530cdd2a48631cda2c39fc351b30cc09ff7a9597ef0e78d6a96ce9f77aa5972f8f3be691601f8ab2df194f2428ca0e0f0e72acde28357fedcd32c3df873e715f7f75e101f8fbe2f08900d8f5c45c2aa4bdd3fb47da02a0dda2ac57ba0428cf0e02bf09011cee3c929f58c07caa168da877e3edbb40fadf1a134b88ee7a78d767232b50fdde1b312ed436798681f0a001b1c8684413a681f7af2d989f6a13accd0946a8c4ce0857e303121fd30004d7b0300b40f35a19165980d76c25058490910cb2963d63e61361f5af273072d46449ae1d0a4e6c4302c18d46e83360d771abc29cd0f9d9f793aff03c54a580d666a90c78a6950bcb160b8e3704e6cd8d832669d190ded43390f04c56876f0aea8102044303224ce0c8726a61ad425a9d3b60141bb7483360d84a9f1d4d03e749be1ed03a0d64807b5623833340d6acf21001a6f48dd1d277d93301a2dae6f191fed43b547a1456efc405fdfa01f9a3d0a2d72c371d0d103e0860f348339a5344d6636b40fbd3e547ea8f5365070681ebfa2428c0480532208cc07c02b148f6ec33314ef61f3f17e413dd0ea7fa09c5183da3bca9169507b0f54480a92e8c17f3841d97097653fd078c30768af685c32668da9f78f0f3e649c8683a2e8e0b569bedd078add34a8dd2986e2aebd078a9d2866736a96c71c991744c44edfbe7098ee2e250e1cd2298ae3903ffc50bdcdc50695ffa1f033aa55b4432915e5100fb448e51cf5986a16cc06b3e91c271e35deb9e5417b9b9428283c6c2e9173149ae2289b4b0aa80707f5c051f94ea9f340df73f4fddb382e94f5c0fb7a801ca7d42bfa4237b21406817ad80004c0070d0745f10f7d9f656fc3c1d597c7e19f8f475a4d70f3d125ad50f4d2f70df3e3db38288a4b6ac33f9b8b8d0f15c00d17c00d2e0814858ca0d840e17ef850ec77e371f9faa3d277740dca4e83d66cf4ed1e5abb1d68f519b4aa7c8d00a055e584562cf5ed3ad0da99d0caa1d527adb243ab05f3ed9c482b96e4db355a3131be3da34b408cd693af988de5cfe1dbcdc52a52396f45441eaab82096296404d2d0f3b7714eff780852bd7010f81283ec8b27c8beb0fce18b2134652032c6181547b6568ec1124671051ac660e612f0327aa8d443d10b64a9f9686459479b3df6c7208619e6091ba415b58b535ff83d1dccc93584b106d8bc708178be832b9538c390ddbd9a7d76f935c833079f0e29a7cbd5c1326d4b497179ee41cd4b9658b1a482cd252525cb815256cc1cca332f335c87b2c213b8db153b5f17c63453c9346d635a670fd62a4c939d0e1b667d5df8e06e0bf627814028e73339615621fe79a6696fe3854f47a631333384507bc8146adb3c823dda9e705c5c4a4cd64472eacb87b161ccaa3de7a874eacbbfa7a38a96dcae0dcb606fbc1c6b01f086ec71967586ec2a819725d49898b14c69e08d31a92b5262fc0deac4e38941c8e09370b5e5eddd094f4c808223307877a33642a181f70cb182444e36379776712e932b85aaa1b1a159e66e08e365c12a46cb9212bbb66bce4b87cb73ed700d20065906061860a0c112233b7159d9c53fb72c53c6c1419605ee0022786567b49dd1667c37178d972b92396743d45d6f6faefb0cb1ff43e55f3e5bad43c6ceb460d66773e4b9080d18b181245c3e319e3d07afe47015c9d5f745151fd0dc33c0b306b87b498ae018615629a56495aff25baa345d8d55b102d329754a560f66bd91fa1ba91d643aa64e0d0e17744a9d52e7080e17f8e0c5004803203d1dec38603aa5ce111fbc18800f5e3cf760d60ee93b24eefa4673d5b221c3ac1247c7340052c7646476680e70d331756856609a6049c90124d689f4eb92160790c42638187b619e1dfa7870b9cb6ba0a0e25f19ff6a9ea0420b2c94f102f8a78589c86752dbb1a3fdf28bab2f09ee3ee0f91fd7d2f71705d28301dc5910c83a13dc01218257faa5f41d6c49afa4840f73f68c882234c02baf024570179348823b26620948444b39a7c763aa7307037c587eb9c62bd2af6b07c35db8dccb7f86d8fa01cfff80fef2bbb9405fcad00052936c00ee26afb465591ee95bee2cd980ea21a771623097805f67369b65433c84a50de10efad2faf26b714a587fc29dc7dad71c155ee1e58a545e718f79f2e4c9b0eb1ea65b03830f272bd5a0d7e9a283a463f3dc3171c763cc2a616e583796bfbc95aa56aa872546e70c8f12a9c5058ecec94a5962eca0846787387650c25a489edb939c7e39cb66c7e081f24adcf81bbf9c945b0f94df25f62b0e918d5f4ec23c1dec71665ad5079b678779d4fb708a42f656300f131f9bf818b90add30f73ba3c06a5d98524ad99ec74e2ccb25b35c6e59aff497e42830357e16172d8f96d53d07959ff3f2a69ec730aeb64bcf249d62ccfde51dbc1b84aefd457fb4c3ba7f221d328be552aabc455318c4b0e2b4282327b9e39a7b2a55b70bb2ec79cdbcae61eefbf38e34d1c27c2528689ec6bf1214a6cf2a6da39f2136e73887ab1cdffce5330ec72de77028ffc6d235da9ef1467bbce770b88d79ebb1791c1ebae48fbc7197866d3c36fa5ef24bd768fb52fedd78d0f719a66db4f678ff0389e89b5bbe711f886e619b8be5d8e6b2f5e81e8f3bcc33ae662e7d97d8a7433a10f8efe9906ed11f995b7ee4f7f7b36762335f1670b0e2dfbfcfb84f03a25b6eb9dc5c2c97bcadf3bfad07f345df6bb4befcc5afd19dc35fb40671e22f98bf5caecc217d9f5125f6610df2eb189db1825204f2997b0bc4cbb6110e3cba0001240ce8c20980740009240ae84209de0792268cb8c08ef980b780f7de7bef75336cd8b061d793c748c8de7bef3d0a02984dfd06f87117f1cf79e6831041f2ec9d047cb0391bf80717424e10297ebf00229f1cb2f7de7befbdf7b8c83a2b59475e8450dbdddddd85d0ab585529b08a109e70439758c1181fc6c978b9a11966cdf14a96666d12b842af41cba148af2084154c911e0d9b1022a1c1934b5ab1ca60675996f1be0ea7be3c57c9dbfd304e6da26905c2bfce181cb2f7de7bfbdedbf79e11b2c7d5f772fccba13df9743c5fb629a2c5004fc7eb87e49f06b813e21fa7371efdcdb53c1dcf0dd0c34bc87d96db21bffeda09ed467cbbf49516088222dd6a011ca45f202f1a248c9132be5d0963b60adbdddbcb2fbc475425cc2f5a85f8cbdf63815e09f06be215f44b7f69fc6e8773f2eb96bf6639e15e834cb8d7a02ac447cf4ae8be37cb7bcf9f73f572e9259e493b1c2ab98bbe518dbbe81a9ddc45cfe80977d1315a5f1ef3aa25ad343e3aef0ab141986c5ffe7249ebc9cb996d5e67023afe3a5efb77b98d6a54bae6d9d2cc355ab5ce1cf33933bfb29971cb18ad7289128ee65bb6bb5fc2d9348d62f4fda44b705c8920303f5de395cd33ef60ae79766d2ed9ee72e87b3a36aad1f780a8bb8f55cdfb2ae9d1e1efc6435eb42dfaaaea2464a4b758924d6b12dfbed4f215e9d12f8734ab36970bca4b721a77b0a2bc8f03021f4b5e61872f72d9061d06add793f8ecd573435e619883b9048c1c8bb7da5ca0b5fbfa05f14a4a3c289ed2590a8a27c28ab529334babd7bf925faf25ff68fc7aa591d2e550d907da7d6c7381db36f778e55d520647b680c21e29030b23aa6b310448d5544261881a247733b6e4dc6d8131f7ab2aaa1c91e4a136c02bb2a565599665ad8a071e88dd8947c60b43e5089315ccba312fa659a49cb3973da664593731e0820631e082066cc85e4ac531f36e94ac937c61c012387ab0e4462923a3448af90138dac2acd6c93ac15146061ce950d33698f5337af6aa43cd7f46d6098eac930e35386660dee3e9b8cbc11d7be4645f8db5d65b73bad31d3df32ca31eaa32c6dc8f8ec21db3b0abf04a87ab2d1caeaa749dbb0aafac6885ec1b4048d7dd595de6ec2872669657ffacfb4ce5b396cffc3d961dbe9b4b06f37259b6050fc49ec5b3635c6d51c2b35f5c5529c2b34bae764178768babce038f0d368a676fdee5aaafe8e960ef3461d63599d6a5ac6b7ae6d19cc615e9b8b9a9ec9a42c93442b1008552430ad50614e7a60ca8ec06851aa1588042a1501c35b4007593a16eca80ca6e50a6948a02334f8f715986f9e5d945259331f7b11e185cebed5f34aecbdfe672cdd36b4ed0b064303f6099becac2ac70e60561997a5c3578e95573a2b24ccbcdd1d32184594f66467f32c3433e9c793a2a9c79f61d3d472830d85664c89462524fa4526540a5d490d2506a306db553659079e8444cea89542a95d2cae0442a43cd2b66cd4c2835983694a96445a7f41dae2adfad2aeec7fadccf5cd332c728b7616e8fcc35ee387a6f3d382fa3fb11131262af813986754a0f5bf0ecb5c65b2e9895cb071af5cbfda83c46afb8de7a707e2fafb005558f9ba7c30c7333d40b623dfbe55eefe0ebe6d965869adc454e839d4884ec7143ccd717bb2cebea1fedccde5072ecddb4ee4b874304a12ca3d54d8332fab140e69a6b5c1c71d54d83784331466231ab451259a88f6d98b58ab9792aaa185ec11c7ef40aa9888f55be21ded6ab98675ab9a42ff4b658238744a505217c3b8766760c667d2552a31672ac90bd94aac944b1cb0d61141db31573c38a5aa72173ad53cc560d836e58c50883d69e6b319a1419e40f7377777777773bc3aaad242f985612eedabb5b45a5ebdcfb3514b353ddddd68957aa95b292a036b509e00562bd3d835a3f315d9260c909779fca9f147070fafd541c0ffeca9f14a6e8e29f4b12aff0b34b1b998459e4895d5a7123049aaa343dbba482579e145e00f32c679ebdca9a17c29131f2a4f0821f7c95489eaba4a9f2888f2431d4071864a80f3010d986e0f791448aa865969649edc4dd7bbe0f659d9e857a4e7bfeb8faf23d645628ea1b4f02aeaf1e6ae6bc58f2b8fb1001fdd584a18b7f3561a0e25554bacedde3991372fdc4ac92f462898f307cc1ddfbaf92f4ec92c42b75570ebfdccd9f0861eaf04f0a50887e0737aa9d63b840ac26b33c14e9620b53175b6c117a30fb5400fafa724dbcaae4638113849e437f096590beaae4c3a3bdb916357d2518d4fcdb7abc120cb678e62a10fe7625b6048323bf30b0a475037f6f9e7850168bcb2be426777bd113eed60908a1b082210fb92a3924541662be13be971c28010d2ce8020b344dd042086af1d0a7075edcacf3e594f0c11b5168613fff4a23235ff2af349ac2aa50a0f2594704f0ab96b14be041010d46b8c2cd18e63087304290f3063114a0d005183250600614cc0006a1298067f76689801847e0c20934bc808c27841e1454580747e4c00a983184a10b98244f9057c440910220ac41b4050accd04588b3e0a8508529c0c10822992860f1bee0862f687183171069839105ec849757b1f2bce5550aaf4808c550841fd0e007271acc00b362ee20872bcc2d0ccd0633f8c2570fc3d4fe95668085afd32f0e42cfc3195ce117e671271d0bf379b340c9794e2613668af30a845170e1299c7fa51994befa579ac1155f5dc5aa9ec84017e09418f078bce86edeee6ef6a2bb211762c4a1695dc7cbfbcbdd0c9b9092527537c36d5e2ff072ecae2257db2727ed456fdceeeef674332fec877aa8defe26a8a8c488a3ebbc1089fad4a7234736b5292f082144dff4cd0ed921151cc19165b24c2ff5525ee854a7a4b4b6f06c9e0d736b5a6f570f21908ac7ba120b809e058f672b1595ae5b9892b271ab135640909322968b15abe5f5a27b7b3b03027f9f077cae76b9b0d57215669dcf4be59fb002d6d9e71689de1448bf4ba34246aa76f80d77bd0021dc1d41c65a0d1b5bccf5adfd6d3e389071476fdf2a8390b7b53141f768f28b0c6459969d68a69801c984e497d83d07983a6205c2d82d6e902e8fe0210477ecfbb6aaaaadaacda52f67cf7c34cb86fa75e50022b8631f47f00afb12f07dd4d4acb408c12b52f60ab558258b5c5555556dd5dd0dbb827ded6bcee4f95297171d13192211628c11422274775b3664200244c128a946ab3fe6dd556e5e2747bae42a18f333c4e51def5cd2abfc2af31dcce1aae7e3c6d5f951e35e2ca17674e66fa17873d9c11d9c7d79b79457e496d8bfae57bdf4b7f590aec402e6308739bce43e0df8c8714770d7fef21537693c162418d4de7e44b3ec6850fb0a214019df5e414f8c6faff4db3d1e29e796bc1d0f96404edbd67a41356322a223c6ac2b648574d630eb3b1921bb881ab53d7a16291169982f0f23fd0c11dd728bab4b24d20f8f7ecb8d10c21d143d6f12e05005f3c4acef4444058ae0958d711fe4d15dcba639b8633166cdf1fd393a6ba860f6895925a9a69ae18a065911444854c8bc8db1ac1df25047500d3434825776214743435315513f3be4eb7e56664954f8c9f3e6b22524ccfa504b5365111a3002f5e2a701fdebfdcbd54f8ecf0e11c0ffd1dc0eee98a12f850b77b7aa1c3eb8f0713589af7ec0961c1c1ac8241609b3caf7b6f8f5cdae10c9a8a8b461d657aa29af790baf4088e21cd120d654521def18a12232804c477666a7432f9f944954c84c8a79875696a98e68e7898229df2b92a90ff54a525673550cd0c22bfb5c71556a6d59964366d96159d139724152424660d78659e5cbc00af04302610549dab3cc334946c4dd10de2988189955ca6057ea861837cab87133c6185554d1a1a2634567668c31aa88534400490490c47cd6d1fca235e52f976c757b6de23b4bf10eeeb6dac232d6166b0be3bad71e44797922637e76c6615c9df2535efa6ae0a36c008eb7aeca07306e80a962aaf00ae434af275c8d2e3ddb7ce3529151e907a2cf58db8d470e879b4bb519b1691abd7ca32ce26e08778cb946b36a3fc254d1c25bad68ccd20299abca2b3740efd8cc966a73a938eda5da5cd6b34aa43dc3b0e8793986492501844130554c98ad64115a84f0b1c57377af1b63d61695ce89c508ae562ebd48195f9b86575ea98818cfde5870d78c7a8be70e0df3334411d16b97c37b73314283d7d631bcb2db1432bcc271261ac4be7987c3389451dcf1c97730df709731b171371add2f36c59de7b3bda9dad777aa2ddfd22cafa5b6bc74a6914d239b463a6f2eb23d212371c7984dc31d7369d615692be2951d32e2151712af7cd6df573bc54ad3348b117c62ef7831abf6954f9c844fdca1f86639fe823bb6f9ca42d88d6896159d9e574464663e666e93c4ba903d9679790669b57fc2a0f6074b7c84618a187adb2bc9624a2e72c0d8d10e77832db92296b7c505d14246a2bfed01ebf4c73a3b33166b62f1d120f69a0e19f3e4db8918c11d71b55df34ca33ebe989f213e0d804c7c86880ed921b7300ed8cd65471bfbceac154bc32b1c675f2cb6b447b666b768e2e29a58185e61e7d0a5d923ec126175710bc31dbbe456c85ac11d16744bdc9dfc46eb4af1cfa659a49cd3e371ef3a15151fbca239076110c2dd7b08df7bf0555b5567a85e550911f21eb731a7d91ea1575e21296608772921dc89482419c3991512a6aab6aa397e8a6a14ab1cf517a9a7a347ddb00676018970e9d9e114cc34cf5b3cf38e782b38e4d98530887d2984e18e77e5d3c1b0a407f32d10d057767cf374308f786525cc5a53c85e4ab5a4f8f59ae3e11028da7a600f45156ab62fc7af1d8a78857f1dd2f0ca917528c5c2995f874316927e2116bfdbeff9a6708e327e5d0c06a5b843750d663fe71ad5ef3deefa5f08fb4e3d1deb156a2e8abb85a2e66c643177b0955a2db2976d7bd3f7d0a5171179e8f230cbc54106f5be9cccb22c97af3fee96a27077c25d91e8904206555a6f3cd86137759941f685b90934342fc83a5d83ae41d7a086cc6856cc862482a96027c9bc8f5ccc950bc7e1f4b7594d61b63bbdf691183d7bbb33481c7f5b575ae4c7b00ce6d9b11b2cf5ecf28b4dc36c1a84d9cc903141c20760b7680de67561198659feb6ed9bdf327e3ddb3a838a19320d5ab7e8721d914639360d82e1a4501b6662b3d3c486a7654db7e625afab0676c92b46c8e94b464cc6eb9a41c5f38c196d469b41c4dfd6b45fa69e9d43438c67cf68dc3cfb5603a68f6048301b21337236464df690796d9133b1d9dd5c4c9070c74cccfc95868b2261994c4edc99d8d4d8014761625363079223e188bdc60e34ad6b30ab15e3c2f11dfcc090febab7095c218de3d4c0c2ac263364264d62619cf6f76ecef0acf8162dd2d9ed8c9e395dc4889e7de3a03a3073868ce43826ee5044980d86043bcd9069968eb3cf90e9701c530d2ccc8ad9786253eb2535913121424d28cdb337a9f4ec26a6679fe1988e704c9dcda508f65ef45744e421cc33ce8484928289d9cc20c220f66d7389dc0c19cee59ccd650611eed82deb8acb2d8a44a766902e3a43863b131b7e6256ce0c9967e79c78a59ad83c9bbae0d87090f08a34b17941bc7d3ad6258550c49e6d9be47c8d20d0f26188164566be00ffb42062b2a830b3f5146f960dad77b32406d3bffabf2c9ef0c15b253ec02086269730ab7ca52ab2acd3638cd17063f5f65591db5a14778fe7443e7e295de78ee279efbd9599cb7577d3109d783c736a52ae26278449e93a7794e719738cdc9bdd0db518778cf9fc6d44f1f59cc0aa1a32518f65e6e36a2739555a24625a59152d8b43b7b59662aef73684f5350424d2f3da56c4caf2fdf8168c14cd18cfc865ba8f2a1fb35366ca6cb6b06aac1af8d8f21578a8f21a29548d8c9c33d9c88a3f007b539ab72ccb825d13ad86f061b3cc5c025ab4fa6ac90b5523c3359d040b06b1451386593b32160d159647195e894478a549bc12dbaa99432629233d6732cf6ec5183b23d2349b82bbc8d53ecdca8a61185321094975c9ccd27a3f2b833beedc3c119cd414dc8dba66a36c6469157da18bbe9045ad8742b291152339929f599a45db8a67ef5841bab08a6bb5c5a921f8378323267b29158379ee2b9034cdebd86b7bf1cfdb6bdbcc3ce94b00918f79e5f7b6086ccee1fad4b4ff310b885a31e1d9f87dc9f1f7781fbb8836f3d2ba893735f1c6146f6ce24d3c3ddfd4a68937a266b1666662cc4c1ccd449999489a89333316ca42553616aa3a59a80a65a15216eac64255a3669152a69291321549ca543352a6a291325549ca5435cf0e4fcd226d20a959ae9806b14b1b94b449499b1b6953c1489b4a246de4cca4f194bce6aa691a15996ee4319eab06c6e2a4c7e3de344d339ad2e38d6c19d4afef8c85e2995f670b1579e646e6b965aa9b92cd339436b0b4a298e72aa6571469bd6a3e24d7e16856cf571992b47a2e4e48a322902ffdaa6996a6a9790b44e55fa935cd3206b3950e49c8ae2bdb0bc3a49452fadb30ec9aae834b6c0763f2233df39750a603dd7fa512aff3e79b52ce120ca315b82ecf24165798781593b1f41dbc5207fade24964c8b74651b8783611649c3b0064929a5dc8151de5ca05ff485a4945256b1b22a4d0a30cf5710fc19dc09c5845c3c96cb9f69fdbd950a4fbfd08b5f096bb6c29aced6acef8eb8f01b85e9378906adbf8d88231a84bdc462aecb1dccfa163ac7a199b04683e19682494966a24c9489b29866d1b84ce4f9f7987b8865c518a565edcc445535e26ebf45625598e2146a22c886f10451c888f43a555440a0a75f238d367820f64aa3da2cd26032b3461a1e2b3d6e2d37a1989968022f14615231295126a28111d1885244441512b936b4b412c9ac2513b598943a3bd85d2966d57ac88c010de00c663d815268ff6465edca6e97834f8795691be74deec15caee9eef2eef22e9f30efeeeeeef2eef264d6967797774f362273392803288319d7e979431b7a0f54ddd07fcec3eb569c86e5afbaf1300f6fe5d3a99d97dc2f980d218451d910bc79f60f14e3c908e3892a27888036f45381268448420551a8f29750565158d320fe58a0423d7bc5c11a78b2f1aa5631ed15d63c4378d970c7a7afd5cd10a63f1d55543155148f05923c3ba5c7344cf6ea86575e29e6e6d9e3149b00e8ec5519cc823947211f873c47299e1d8a9a05e3aa281e88fd925cad6c202dae563c8022ae564180a22ae6e96057c2acd54d15e3be4034aabfb84e1b251b3a9c4df3eadfa97438736e1e8fe6de7516e98564b368febc4e6ba659342e9b53721669022f243d7b314219ee7ec7d3213d8b5cc418b91feb9667cb9b0bf4c8c58cd6075e74cb651317a9640a351164bf200653c888744c019957ebc8b3570b8be76a59114bcd1263a6f4cccd3d1af71a248aa5cf224d847b05dc78f40e7e28ad37e8926e287b5b8c95473a3b4eccda3d53cb2337a198d52259a46651e14d021b8a22faa980f4cc33ae89cca5bf049dc1a8444c3776452d959a1901000000c315002020100a89c6a3a1309103651f14000f7c924c664a1c48845916e3308a638c21c600420000001043c0d0100d1508dc7ac9d01179fc4056674398e98a52485274f910fbff4b336551b86ba4279a71b316c3a0feff321fcb89f5ecb358c6736b0685e450b37eb5bce7131ab807e1ff4509cab3baba12ed56827fdb4c7e79fd697745035f7d7606babd8ac586f2520b14b553dbf0c5537e016898b559f4e104e928874b9e42e92be0eb81ea041a3ccfab9593d49c732dba0e1d89efcb6ea359e79520823ca0a4f964da930d4558579a454dd5572ffb1b85ad35ec4dd2fe74680f3f20e384644831db7b0bebfc5f79580cc5111ca29c65f89a3301430b66aa69bd4c88263d7beb7191a514e6f68ae53cf9db4808177a765de0560bf93693b31638fdeb1d8359aeeae23466df5364eb3fa63587599acfa929dd8753664e5868f49ce5c6d74cf97fb6cc7ff09033d07c15673434d797a5b52300240ae9d4a1dda6144e165ee51454bfe3f50144b336da653fe1754f43b06271bf9a1fa334855f471de0a0d845cc7f708ebe7ad49ea37c54ed513314a1befba598715392cf03bc7f3bc3c6f15816ad5b8b40a86984fd5929f43999371a1b03d893316ccade10da85cd6b1caa3008789dde09735113c690da9bc1b5ea2f1578a7d9deb6702d377e26a6ba8399433ffcef400a213920614fb7087b38905422bdf0f85663b0ae8d5ebc523d8f77be21ed8b8fb70a6c7094d6332dc23b08d32ed6569419093973a6682c10763cc6eeaee71f474e47aa6d550be90083c0886af60169fd8ad4cc6206359d0a514dcda1696f479774dad0bd1c9377c777671573901f83f53e7837cd9eb6a6c83759b863ba8de2b506cba42ff4cea03d76c272e5276d0a6d539b350913b9a56284c5316c5fb42d28cc6db4e5c88fe30e3ac8dca46dcb1eda033148a83fa2bef33422d5d5be717ba4cc8d13cd5cc0ca32431ddf310817b087724f8a18279dc9fe7bf366c3ada8cea4defbb0c742eb9ba1b1b50edead71c7f67bc444dce3305582c004fe7abf73fd7ae68920cb650dd8a2ec9d05273322e0a2cd438b3208b529776889689205c2b85f3ddd3e7b8151513a46b0b8fbcbab5959892e531d2799624cd6725e05c02209b97562a8295478d4d75c894a38b9275e1d8edf5e7ad15202131017fa9ba71bef8ca2132c43f4e55bb474affb4fada0a599840e88e34bd09f979d9cb19d4b2382f244f53d002ef13f309b71c950c8b4e8dff016c71901b08e716013642e72c9af8afb89c1b6b03e9b9c2e7201000774f88beb81b5441ff36cd299f9e00bc3721e8451132d70a2875c0531aafba8b469f0f46fb2d1c893c9f8a397c02e4d0bb4be59ff8d020029291491b50ca2ff205a2ea1f1c1c7fb027bcc198615e75904a84f8fbd00fd940ed8d8d08b2a169c9b8e4002656d0b0f0bc77163fbd549d216a85f44b930fca6f7a037499e9478c1ed6a5bbd74eb1e38c3d3edf1fcac921137d1bd95f0e63a154a116ca95422370be54e4b8de30103b647bdad05d3865de73fda6fcd65fbe77b03bebebb9c521fa3d2e8be4f3921b0ee69d2b53d1d52919bd6d430810f3ed590699f08fcd38e6e84891ec852e22c02bf87632fae8302ee4833d5ead484bc65505eddad28c8676434ed6f2f2b3334d7ae6826b0755820e71804e69ba94f955173da59f3645437434a1721784d714fac5c73c29cc2282a7062aae157a0d9e4f1f13b41f37f6378f962b2699063005dd838075ee803b67b08acf785e8d0f9c4b06468763c07915683b1cda2feeb56f78cd97bce391b19f2968d037dad82854b0da858ba1d86e8ceaeb673fe0ca218157bda709464a8bf66aa6f672fe880947d27b1bdf9bed9ebbcb7bd4bf676ec6cf1619e896a9d499b6e359135cd9da6bbd090c284d4c9b9b1823f11b264508e1d24d12bc949afd811559c85177f628ff36d9bde7b7ad0104051778ea9939800cf4cd8faba8daad93f11e43a3fef5058060b8c43d21281edbe2716215eaa87ad502dc3a392ded311c52f95614c465ab0b3ce95fcbb4b2fee525af316dd960d694d71b4df1ab93ba70b57afda0614d9716b15e1fd841fe057d593e69f2eeb669713fec2dae20b30174abc16191c40b3e9fe162300dfab41fa114c19a9ac0645094196e768c0abb7af7eb4ee232985164c34679fbc91e1b580bc193539c70c11ef17c28e1b1b9a294d7bb6780533291882956ad61dab8ffa23ca7f3df1f0c3042a5b591bf992c83aa100cf403bb8b4c725194c7d2fccb3d4685a8f606f5f6a8e78cd7a9c5bc28976468945effe906326d7058cca463a9a91b99e0358c14ddb6de8715e9e15d12636340078a9c415a981406f38a1de747384aeebc5f2276c307e82fea753d8757899e6614cdd2ddeae8ab00f790b60f4f6262a73ce339f043a39e9db6b6b784659c08a5c8ddb8d0d117d2cd8fcdbc438a6768c88bbb6aa527e3bdc9d8702b2be96efd0996a282d7f36898ca8b468f756f11dbbd46f117ba08f11df04961101f2d32ae92326a683a304c089402e7b105ac6f8dc6c042c2413d389472686ee0abd8970c575b6a7a300fb8f6575cd00c9869351361c8acc98acfe1e26a34c061437681525dbfed4609aab678cdd1f18836187b64fd8e1ae8eefd76b76d6a58db1b0e2d1e7193cebc4b6a1f9ce5db9f64b2927065b89334d37afdb808fa66cdb8e4728e07413d1fc7e7d925fe0c347963ac2b257a1821a3ddc5a35e84d6ccf64f1202a00496067505e13e787d73782f0161462c6f3625d7d18bb736e8ec36c98bed42b909e2225659133db90244d43f804923691112b37ce2ae75b13920e6bb3cb9af7b4078b34ded96abf95427e0ef3396deca310efc07df9102d48eccb64cacff25e1192c917929c289a610f9dfea7de18102688420fca97777db085c7ca78173db9481abb50ea9c4d7121e1b0cb113dfc3aae48450380e2e9eada3a2f70566d70d8843de6e73e00174722f7409d11e84d6cef2f09cac8b265d9c9d2154c9755e7a9f40e231afeeceedf0f8cb7948b65f6a1a0f90a1dd49107a24b8d60833809e2f42210484fb2ca4588226864cd930c157c13bf4d1270d0f113ee770ed2167ae51a90d7179cccabf5a92a8d0432fccecb40db66798b7a47e3aef87289c8dcfe47413e9f2ad1b2b2b42890a9526ca83a0b8e0bb031812a3e95e735e9c567b28bd3d35cbc9899e067d3cbfe28a2b369132560fc5317f90027d8b9c3c6f24bfbfea9fedf6b2201f83576f276ca6f8b9f79025e892348161d4b53104682e17a66afaa735ccbf8f34ee70aa0cc519b5e46044f4c437f372b3c44523f9731f3654cdc82ea29af02c2a8ec46096315921d581b2573e0a48e824a84fbe21b45f988222a4cfde8a96a01a6a76c22aa82513ed944675003c2eb27a0c663888fe98be637a16089889852264f16bb549e98b0c6626ba80ed94262ad0ed85a4375c3192b78384e4345b8c1b52aa4e2fffd65446422f46f350dd4951a4a720657715d7c2b2ab3bbeb027cf4901f052c53b56148abcfa894ee2f348a05c55c24a6a23580641bf7f6eb6b288679a9cac6d0a02e151216621c4c45e45d614a7b8ab3d2661e78af265d3d2fd5979ead6e676b6deb6a9976fdd9d2bf0c1766c399e0b2fb4a261ca8ed03f545ce71b563aa7f1bef58e984c6cd21d4678e08b98c0b88550b31d1f7989bc07e0e9078601aef360101f7f4eae473f86f7f473cef035b812e9c03c093215e501aff06b9cea7d64f7e05bfe7baea51b7713e667a7b49c197b28fb82b311c63b70a82093e0024a6d66a3a2afe22cef5e6a1079b7c6e029b2ce2b1a488966630c430592807c22187da20eaa70a4bf390ebc02e284da573bd95c42b186844368846d0d45b0f14a385c25f5d06ab09040f7e15f6f8e66266229042783ac09c474d47ad00c59de871759d5d2f8778487d98db0d75afd0895ff7ffa176860f15c6830accaddde0082cec0181a785bc9813e55bff0211608c59ddd630455370119c744012739035a210309ac9f3753a5be87d26d60fc3a52e63cd73a77a8a5b3513a63b40cf9683f98978ef44e4cc04887cec89867d4d3d0a236a192352af24cd4b63eb35dce22b60e895e121bef96ddf369cbdefd3db37cec7f463ce9c7b1f0fc3c4f372a0cc2ab9029a12d44edda7bd33a949b89f75a72170806712bd07d0460667fb795d0e0eb05c36acc9a0adfdef1af710960717716c48dd4b34ad4938ce4483757fb841b406c4062814f67db5dc824323ae869330d0f19e2b31abaeae41c5142332b4c5fa49d012d2ca3bb9684c171c1a4712ce001eaa0b6739978d1b12be9ba495a10070f2fc1c006742611fcd7ddbccddf7d405d7dd51640a70a854bed770b1afc67595fb4104140874626035b3e2c1d708939614f2cc7c1692647a41a2e22fb195a34d07de3a4df366d51ace00ecab57de43616c52f60e82790fd5ef0e7e005e14c84b82e42eab918afca5b4c0585f9bba0e8cb3beb624083ed19abc8b58a79f9bf705bb999b16aaa93dbd23ba3b5403cceb58993dbef259d212e55d0632fea0be811bdbc5002ed7555b653e9acbf142ee7258208d4871d03286a2a291b8cc502e77555554561275e5ca9643c266cc3dd4b07c9e2c62e38528bb72e91c932dcee4c62eb59985fed729b910b0c8ca3aced5885d5399571529331609b0e3422b1f2792223210b7b6d94cab3e8795df36d618230ce7aa204b7b2ed773ad92a95fab6021bdabe07755bc4ade0c0288499a837839b05676314907161e298b27b933b4b9e0301e852eef16b38f4507406089b42fcd068b39385095d9384b4a3d25312458276b6a49441e6b23ca4dd5a7dfa4c5d3c46c9b316b28bb9f26152c0cd132b259679dc2ba950d301a9a1ff2bcbebeafbdf4a4c9f7ec8d88be1a38bf682009aaf46560c3752735d9eb16f5e0d6571707386f014b24da63277abf44c57807e0ac30610f29f8a0f60f706e9182b92e1071e65c100dd839c5bbcd73223e87471ecbec200887207fae5a6976ae30f2bce3b594afee10f7a1ae2e76a1a98406e2c68977e738c958439fc566423ed8223296f578be63a6200469eb0749c8604444c9b0cb5925701140e6f46e0a352a9a39cc3ad05785d06508e238c6aae941d51d10f7fdaf89104c02f9271ad90966e6efe3435e47752a4d86f5d596c5b592b862d52e4bd3a04750ce84d7d6fc0196871cd21ffde7795a37dcc3b2c5c6f98eb938bbae4073207570f426cf052cf686ea893617c8a4ae5b37c1876a222ce755f720c16f5d38b3b492f90f66e6805776e1162b16e3d2fc0d07a9e790718d8e0f32605e2a8e4398df1b830d6757de645f7918f875b27776182b879b64c7446f765ef5ad155522ffc2e1840035ae1fde0ed778c827ac620f27cc89fa76133954c2f58fda3e21c28dcb2dc82b0f1c144dad0273b7f7cf1e2675bf267a3ba80a5f873ba58972aa824fa2b499401047cd6e81dc2b8ef8de8722bdcbae7469f85e3f36db3f4438f20367a13706c0f06f5ba169e20c557da9f3c940a31bd24df490284171866773e0387081e207e278cf66e8e9d7a5ff00d5dc0b41967060c6495819de7c0f071aa28d990002448e9c5f4ee67a5e02ca8f7740e922509d21f28d85ff2ca6f691ccef71dc4f4e134602cadd2e0102426014da2fe82710615f53532e051093288b9225a082db6af33818dc847d1611462e0753824d8341830454fd2363ded04d867e4f0b84d4a116763da865c7fcc4448e461da4324840315985a3a3bbe839a762fa47ffc0a407b4d338601e940a2e22b642b08d428c2dc35adade78484722a5498156c44319a546ea44dcf7d7b92f236a088855de28b2a0875afb331d55d2520725c54e6c9e8b9b905f2e0702cdb53f59e08700c9bea5e247e0ddbbe59148b50215ce611e8205e73e58e2f9b8f857b43f729008b421fee93175cb3263ec022893d4b7ef7e7c862650fd2ed1d17e9c76a731171504f2592b1f83e98a2fcfb501dcd4acf7e3dea4bc0f68949edda32857afe0e18d7e6190efc5379c5fe8741e17636f08085bf0b3a869ac1f288ee091e4aaba60eadb1d524e1edf7b0aa20ecfd77d52eabe982e6828b24c78c8c288d71eacdca9a1cb4b5c10c643ed2e1a7a889fa98f65958280da271ad27c5595d9361076484d1f6b7ada555e0fb6c9d61f2371096407a5ab9300ec4ab0fcb6cc5f8422835623b437dc9b1e9566f4e2c4dd38416db714a0d640c3f3e7bec16ffa3e31f4bc78022f95abfcaa5511e7e4d5f68a3c643ad0f1412408bb1322c869614e9297b1ecb93f02bd63ca137a04658f5a0bac54db38906f69eb1690122b4ffa40b0d690aea7e42a84036147feaa1efe95823275b078749738cd83e22fc902bc9bdbab6c5f0179fda3b6ee587d87588a2cf42f85b30ff98adf51c6d8f6daf60c86bd5d54dd8c1a24dd2604b4daee72695ab3d4ba3c644204d7e45f7f03ad6b1fa4ff30edc8d548989f681deb9e7c398b026e0dea1eb5ecd4e91c0601371d7462ba5658693e4b13f71d478ba621c40e30091d65e1a7620030637250caf393d5981d287553befb053cf25eccdb21145f2467cce842c872f2585e1283547536bec17c9bf7a1a2dddd1833890f209c1f1064e6e66a9e7ff2edbf79eb66e1e73240d6f00aa05f57bdc2601108d9337ce13ec12efb7ac3be611ba8093da8bb59c301376fe1b373c035184638b2e6b7215b92352d75aa12a74e2912b00745eb7506cb24c226e7f618f607fc4112b0ff266b49c021cce81b5d2e21b234d50110823c6cfe74f68f0e0a500571d6dd269cc2abb0123ca971d491c1347856b916a71b2aaf235b28bc9a8d6d9101ca62ecc2b600c5601b2f2f7afb6183f8cbb6ba3ee16f4f5835c1be6aa1ba71673dd8afafa5349512cf2c7057d5a7d337d537063152f1176652c54838e74e626f26a3e406d49289ba747b3bbac6cc7536e865ae3212bb461ce2fd76c3023675e643f61e120be7035c43e2e8f31102728591146942b8a0f3fe674c5495777e6e3c743900686015ea6219afd61048474161df5707a5e9fc9d91f25fb4008e9cf9e1a11e9fac0704e1ee394334f9d02f0a53447bd4b83963c37a5543a19bca3e2c308cad88e26646f4e04e849bba2634853821615e1e78177e4a9350a19e810f1b8e13b049e1e6983813e54421386ad874dd4e509ccc8175eff8e39127702d1db70779427935e2bb06642a56ff60e35770db692b950b24b3b337d6fb522d56a0242e6f057c5bc74941f921b86de59e48d43e1f37d7094d232470a806945fea9224ba5f744919761afea77b8ad3e9a8bf8498e074530c451cf01e079fa7befad8e9728f19c082424ae7688090bd1efa6fa823f3ff99384fab03c25564af82187809825e378cf9e168ce3fb91d8cc2bfc2b4a4aebf01593e20533b665607b702aacbf858737f8e350832359af3187a2ad3abb1315d015906ac6120e46de5d1e5de24a937db0fa174ed89c622382033c368a0aa962669ff4a5341668a63b76850b9653aa6387db81b2600260121db1c921d6c9682c83eea798113e360cda4cb908066a2551b67e7aa880980fd9a25140224cd652978920e3bab26225fd25c9f7bb7ba8ede63f452217c25b43d36bc9dec45c4cfe817c481bab2e5510c9291f81f592424c1312c7c232441892ccdc1570f8bfd51fe3d5ee3a60cf7afb60c6156ac5f43ee9046c58f5346700945c7fea236654d752692cc87b155793bff00a96ad0447d62b107ee8dd6dccbd82a1ca258fc55dcbdd9cd5fa8555627422c4a89dca1e13cb129e7cb902db0e810fc97e0c6027c3aacc55ca437a5ec763a8f15f4823ddef8af604665deb24ce98abae0fa215f0504332753c7a4ed8119e05e2443b23d1d83bebbacf96aa76d147d341929aa1434b2cb6e5a0668b17788817897d814ba1d91b8f0ddc52ff6b8d9fa99b67917ad3826f3a0047287db3b5d93d6c4b267c29cd231bfb8de2b914d63f602f2f1cb55da7b97958c716ac9de256a233662330646412d9354f48bbaeb2418504b177244ccce2dd7d52998bb4595b78a3195eb3cf0698ca5cb4045f11afbc5582d082de85ede3d07982a1097ee55476436e1fa09109b3d6c8080f974a8e93c2025f9d08df79208b316501a4207b55b6e0f620f0e76c06f119326e7460615d40d5886fa4559492f87a709b12b28437065dc2d81e07311cd525f93df84550a3bacd46d3453e84059bd03625c9a1ede6be6b003b42c894048c4344fc54dd1fceae96f905f2d5691222ca00e6f9b57eaf9803104ec0ffc52bdd2e4fdc12f2d2aa13d3e7fe6ae1156532c0129071c0437f718ed1cecd288057a73f350c2b58936950406c5c025b060dd214673d8f58157a228a1b63ec60bb07135099b6600f6b16a20248a8824967c9557e63cf94815ddb305249399237e10f3bfe3b254cd62707cb1b53667c6834efa2ab3cc1b815bd4bec1ad9730e876179de22078d7404230efd470aee0acdd1d6603a8f982096a5aaa5e8ba909eea068bd2a3942f348afbc8300b97d724ef68adda31081b0c4a2d20ca1c0551efd57b756e83fdcb8d2aa34433f7ab6804cbb18c7a4e89ae9c1cc3dc6be8797dc5c88447b7f941083e453d14d5f29b9c9c14fe4a0d70fd136e7528c8d1d2834b7a829111324e43b0da59b354400462c04374522904bc5decf12d1a559f6f0e4273762ecedd0eacda3c17d61fabcb032c52188055774ec3743ad58f7a1572a2509a4e36088708f82a5e0dee8692e4158147d032f7e4f2292b2180997c2002643a7b4a8e42d77c546820f13c50ae721f06e6e61c4c6ea11f9001295516927df5470a5e83079733faafadbd96e33ad94065bde302251b867a95a37b9252f397546c40c6e0100708b8d64a8956e522b08990ee0e2e767d0ae7ce7fea5733448c26f17dd4a0ebcf5fc0bdfe2f793918866e9608552742af2268b01d50cab6f2f45b7c78f70f9754ebedf6ddb3cd939eeaf4934a7a4d1a9bbd22f7dde24563ae2edc121baaccfa0450502fd33ef3875080b763650694a48aefae44dd2686d97d3be3716162edba1e91089ecb7a0e53fbba49e6975a24658aef92ce6c30c91da66666b0a071ecb0d8d22964caedf33e4bbbaa6bb1536aa5758aa53717ebe8ef1cd88974c1c5a69207e9554a93b9cc8790646ce122fbf93c9c9ed95526f9b3391d1922ea30f842a964eed9f58b25abef3e997441eac1020d6e281d17173cd767b849fa2c2893f0b49c55fad99347efa40375e93290c56df2fd2df82a82653bbef91aa761c901f7dfa210354325bfa1d02945d6d4dcd2b822a0732ac4d075782721c0cb2f64f4211dffe1e89b3f1edd907de35853e70808233437ecd1cf559271bff2f18e73b0689c1834d147ba435196bbbd3a6225a7aa8006b50aba193c4a8cb2be68b7e783c51428b89a3e88796d007a7dfef6b5168e59d32b19614633ab1ae2f339bad88694078450d22f7eac131f5322282e70c6a65066e98d7b774408bcb6a7afb483b99676a05ade670db441fdc93695e7afa9e29fec1d336f02a69b436198213b0047db8e8bf544af07bb9d35f6df76317b619565b922ec25414a5c3645877b9bc09e78413b300b09055d62859f1b824ab00cda34ec61f7fb3f477b59a57a46a296eeadf22fc400cef9e303c1f8dae4434e86fe600d0afae09106b3f7772daf57c7995a3e509abda585a24d8e9663803244d2cc40f6f8c53be8cd85a69d2fec22c37817ae7e0af6f2369825d6900afb117fe09276ed7c605aa23faa045f689a8f6183ae3c1d2395cbbf5436b1ff6587bf21221abdd603175683128ab90f7b7fd78b7e99740cd0f3891b35aeb0b016f466b6d02c46ed5e227bbe618ce908656155fe261a69ef05b061ab94e65cf98d7f7103ce476a3826ed71c57dcfc43d9fd8cfa0d91c86b8c1322a586f0d1125c0be11c7597afc235b57ad04c944750e50321fba0e0f4c0034e37dd44631a101c4a88b63a7b9ba524b83cdc5f049c3b88a2ba9e4d0697fea7bf760732d41f07caabcd7be24f82ecd9e17c3275dbfd5ab187a6a952f4cbe7057e27499bc06f986e00155358c017ecbe5110a92b377af09b5fd8905c8037cec2740a23e22a06cf35b45909c80239a0c98c6b3d6033945de404e0aef4aecca8b381865728143ab24a81cf6c3aed42c59cce48b5ce324ad1111d2858c82b7230f3c8a052072225db2a5ce2da56fb5052720ca682fc49afff2a2adeac3f2ca3196ef3c8572d68115eb1c4acd42e9128bf690306271af45a5c29eec4d2df12938e135b63f505e3f8e6cf2d25116f71e1a72bc6113a1c017a8d178e60f50116fdc2fe638ca585857d5e42293f4ef682c3a7b7a4c038b62e48f0cca593067dbffdf92ae8323352b0fac18809e0b3e8c452cb5c99648539ef46c474018a25247647502569147ad28c802becd65a2d56b28bbca218555e9cca5fafc42c68242abd5dc98cb8bc88f9bd85039336c47592dd3cbeadd10f6bef94d2db75cec4888cd9d02f211f264c1093b42d46933721971158ff1ced03356723001f63026e5eb1a278f5ed3915901cb9b0d33f0abaa21560012531819381189780e066b0426ca6a69eb2e21091cef1e45a6882f64cb054fe77fe386f51c2ae1313a81a1a8085990fd9a7a3776119aed0d77202d28326392ce30a1dab63f230b740b1774cc67630a86fcc83be17b3af3131c4da3b87698c2e96eb2e2f8e6e79fcc199972f0e6c1d862b089668a207e02534f65bb1075b08fb51595c946f0143d8f1f4d6ae7ce894d67e5b08a0fafa40e43f4a298ff6231939f6cb6d7b7aea29b43e8e608db68d343558c990979ed93d83f6ff585c3d35deeefb3b0e730e803351aa23e57cc1af2486e7ca4b61fae88b299b13af8f51069d2a70171e254c1ed2b28e53816976487655e1f1d025197c421c817711204ac773057965991a1b24deb9aa4bb3f3a35a1c2acbc869f78511727e7a64a4a8a73fd3156778e014b77cc88314ea0e9c694da126480c62a8beb2df58bbd1cd0db9572a88398c7e04332bee33ec6690371a327a3b568f75d7b0828c655fc590b71bd58bbb3adb05e2b76d860e928c1c03e274c2012993f0d507dcf2fcc281724674c35df98fd2b1d6c377c6ac666c2fbd41ac0fd4700420a96af40a973604511d61456b5ea3290f4481ffd54821aa59d6cc3175b805e531886decf9945b7bbcc609545af5f780740b97ff36606e8b8fe84ae4678f3a6d31b1d7423c49d382ddef4854ebb54040dfe7839c07bc7d9f03a60e34b6c49ca9c7a7a22549932d2840e38798aab893d0430c749166a1fe3e5f15f1656a36a9447d61108eab0dcfe8a892a37d5ab522fb1504d2c91b257047dfb422a48a12baaf7c7871367b16ea2c025ff6cce2861b326f6dbb0c06a0831155188cb068ec811fb48319e4decc1e7f5f02af0d7be3edf6e3d140eb31913aec3837b099814a03ba712f86fdc551efb7278571f0b24e7bba95ac5ca7026a9ee17fc8ca2003d15133ff6b4c2157adeebdd4c70b910fa7ab48d1ef34b2588757247b060d785b153f9014fc90481490fefececaaf3f05ab9f8405c4645b469c93e79cc601a9daf72a3f1fa31b3263d970b493258c850575853864f3e5ea74268d0766f47464b024964a646b3080b6d014e120f39b3fcd86d61326048804938f0d764aec6da3e2ad71e2ae64e7244073e19ee7342fc00ab961afbe8d2efe00ce5b314324dff33c6d4ac1a21bfdfdc22f102dcae8cb18cddc652c1c18b6e00c58500a7f196e248a633e717e76546f26379c843c7e1010418da1272b2137e1cafeb13d83073deaff0331b983628ea093abcf914e99313a4deaea9703a6f26ac6ef8c104b301f04651f9c753e03dee9ab29cbe054f56e25c2076a13d78ddf21cafb8da2e8029afd281d37c1891c9bd5922e38f52d3182ef703b51f9b36b43509dd51a81fd1aaf4e56e8015e2abd5408022603077994b591e6298ad544047afd4cfc29a1ce652491b069391b0910e25a89cab76aada5f6d659d03331cc4cc450d439e60e2cc78d202995baee4031a24ada1547e00907e42cae901d860f767958ab7c2978a5e27140711b8ec4dc4dd7e0a34295abfd71238f254980c3d01c8d2dcb49c3cbf0e3283891730961605476ad0f9ae79b8e3164bfa334449db6e0a24442d4a1d6fb6bf7e294995f84a4c2707a9cb61856444b92c749464dabd374a7065c671c5f9180756b12f8519d66153506eb2a73625afb0b248223d6bf81cf300fd9602e6fd3438b8496598708d156b5a06f0b9334c43de98a3b692da60754ed8c4b97c1407166b5e1aeb6d5cb9e823f695b341758ecaa195ab8aa14ed193528c2b47576efe67a7f643f7d7ac492221fb33231e78f6f52c340891ab9838f1b2bb63eb22331b82f23af318a1a9ef1ae1c94e22eacd0a308bfc6a9edf7bd93a10b32c692dceef9c8d2c17ea82d4b6708e96abd7f98142e1fa5911b7517a63c29f5d5a2646337b23da0d9d5c3ae4aa58d687b8ef4f9ba98b0ec17c86321bfc0cd2488e2c3ea69ca206fdd0125ed189efcd05003cbcfb6fd4f6e6b02f7339a9cd388b67a87d19340f9060109ae5ac04527ce8979a8ac8359ba8f448d75ed3543db4fdeb0bd2365ceb2ae209917fa5fe3c7b9101849e40827d32a262c60d0539eaf17d0ab65486e78bd7f368b29f15bc280d1db86c0019272ddb8a09591006f7e6e50f763c9436d13390a8c049fdd8556945d30ad44b78d41436d5760b18a171e9ae36164d2d7e164b38ae75d5dd93136d2a59cb6e38704eb189a3c12a8b2d76c7fb793b06d0ade6e0e62dd5b105f7f8433aef076462d9eb1a53b989c435688078982e8f1471e2562b048d3bb2113cb5e3c5c7e3f16d617523dfd3250ce588a12f002f7b960fe2e742fa119c9e10c4bbb0560ba50b2ca70bb1329de1cfd97b44bb68315c4dca4755f955103e2203a448ca28f07a024c41f8532e85caacc6bf146415a70756b5119ab5281c0cb44d5bf4b46e3923e1c77b68a39bd9a03ad756fdf2b0eee7e1f37dd2c002b5e4f6ff6495ff61feb25a5b76e5043aabc00f35aefe5c094a39ca696804d505a547238b6d114f175fc07592ee5df2fbea496c16edc53b6b4ffc12b2853f5a80dc7d0cd781c9017c7616147747848cbc6b9aa5da9ae2296a9aaae49b9631914d9bd3d048cd1fced378dedda8d54d04f31ed116087891b48f53ed17aa4477b62dab8a162d86a1e464c8d1229561de3df6490f64cab2eb9524590155a53f7146adc6e6da0cf8cfec0226de526caf2132910b0aab6b59f4135e80f44c5b45ad47f38ed24640d41a389cd8160b05c887f3df727c25d54ecd42e98fd0a1d698c7903b196c410908d3b7a782ebfc7b265ded161ebe19c87fd5bc6739c2e228ca6465925966a148c0d122094d84fb20e674e0c44e6f22fae7d9fa6fa09b62c3b6bfea96024d5361721da118906bb659b38a8f493ffefde7e093d8893b315dc42626eda7ffc1d43fc2ecac77c21dae7dcc3bd7faa88cda0309127c4b13be14418b1383a3066a8c558c983cbfd86c9bc8716fc50f47a3859f3a7f6dccbe1be66759e1f59dfc3af82bd6f08878baa8e06db43db6f2aa3aaedbdba129749b0d76003c8ab177031750ff2c2bdebc611a4b7422cf910ab87aed7c0fa2b185f7d3e3a1059b5620d3eb6794d8a2ad0b2f8be0f0c615288b2eca123b3e0960ba6c517b8fc3e416133231f62fa99fd2259bcf9e116ca427c404e1eba62e22650e60a603e1d20bb13d72995cc02b877e07145a769d13b47a82d5274ef4bff3567389e4bf3377b58304f4dc1e71ce13f82d5f707a71ca877cd01c00eb7be4d2f4f89a18a0de64acb4d168fd50a72cb131d6c4ff3308f9f3aa4f29d67c70e102c8f7cbb83bf2fd8ca67e6fde3509d620c28759ac6ef9377a5784adf43c899cf161a98686c8eb95240ae701cbcdbf0c8da8d8a5c358c9107473ca0c6da6b5781507d303708c02440a9c6bd1485f0d0af1fc04ac6fe1fcf1011d2b605264307e67a0078da234bbee67133421600d817280ecffb27821f270dd63a053d4c63460626abfa8a23f42a18cfcfabec5aafcff992a62116833cf7d28145dd2cb5863930736a798127acff511d0f2c2d8823f07187ffd1235afeda8212261070f8939cebfd8d5bf9d2051cc6edf0d2e1987b35890ed66325e3e16ea0a7c4db4b255e25dae5a9bb25ce50ecd8d06803ff0b32aed8b2bc81289db7b682a85bff98eebf694144b7890006204b021b45c6d928bbd867386438b34e1db50131a57c6dfd2b1fac7d4a793be5b409dff0e27f47ef2d444d916c88c9e05f8d9f51986a5a96a08170275b211367029fbc236656467c6011e86140fe019165db40f83bfef950178db6ae28f50b1afdced3e3c0df86aa4e3e6b0e90e12ed670c43d1ef714c31ad15e1de8c596783b43c911c11e3b569a653f98ccf0423fbe5805641b355b2a4ddf06daefbb343ae23775db442375f4839abd67f7c057850321eacc57b8430d080e708feafba1a4fba134fb3913b7ca138aaafd52bafd9c895a8dd2ece74cdc1abb890d639397180d11196586f5b50873696778739a6e082030401738dbb344a51a6614dcf372d74ecdedc1559fee5248fe4094618c1d50d2181c7c94edab02eb24cdd25b297b21138001907f6ec45a27ce6732461d4f614f2ed58642e5fe69dc1500b5e1d0c5299be450014cc2436c501a10769266c6a3a46227d446e44f18351d2bee4ae74a63de09cc973f036286c1ec9889ff6f236b182bdf016ab39994e70c7c1bdab4e4e5bf20b9ba093518c0a409480a4bf14e77d3384c2af1243e222097086dbed50f883542f9f447d7511a813d1f1749743b779573ca66daa2c0dae9c8fb04013d12c22d997a67262746b32547706c1abb3179fd17ca26680217efd5a6c20768cd1544b379eb2964ce8c3e230173fde20c0c32991d3f5d173543009d0e50418dac0890ce457f2b3de4965991af3379e5101df8599ad089559e6c94fd589e0882f150cc9c2001053a685e00f4e51d12194d787250e79e2a54edc66b5602c4bcf157e1ee96108d1e9b1f78e2f6517d734c95a4fe14492a043cc30f5f0356c23e03d9ecd25f1c6e872e77434d19ee3b75183c949d1fa736e3eee369e21781da3d1381cd479f5d4a8a33150e2584468741a5c4137b2fb37b368268eaba8a3321f0cb5944ec2357add1685060b5c9df834cc7ef481dfcc06a6e1dd4b3a4ac4f42df528303b7a1f42d6447ee427d90154272d24928311541f4fe7d6ac98daeea5281533b585115c078a869303c8ef3918ae12d1012dbcf3883206b49330629ad8db48058f536f77293cbaf5c206f5377b5783b2946d8e77e0a5706e70aec6fb7ec681ea34edc9b8d45b24140be5f1ed864e6f66a3e76d653729e1686be8b7b217224e8c880e727034b5606a0c3b7a9da9d1fa319d01b8d8df64bde0d847bd9f04f3b4960fc0090e5e8d57a24b3b5292645a18bbf169052d2f67878491c39c3e880ef1d3249f4671e607ae4eefa530177120773bf69c088d517df057ed71791d1ccd987e8d011a134cde5a81ba6bd4889742d00ae0b0bc0601973b519619c20a48c924419cab5f9456c7473fcc298b95258529f63bfbcb3835e37d840b91ad503266efc767827a83960ec7416d01503f12f0efa8b4adbe3079c6f444408406c4f13308a6b8a5de310d35e9a32055a8b72a238b1dfa761a8b008805c164001617c05589cd2fddce1f38897282348e0e0d9a813a22d20829fdd31c3b45b1af14136d2a556214fe911203224ac8d9fc5f2a2a8b4bb7230a2bff04a17ea031499fa67cf22ed30fe1de3a602d233a668f1420dd8e64c450d4196bf52f436f631f148192948c11eab012ee08c6094794db611873492c3c23c849dec1d22bb3e8a24233791a1e5b064811ae9183c500632cc6506c4500c48311b21f27a0144a4782a95818b9486fd94cd586c0a0b6fc91de736e6fedf49180188132e0b8be3ee33b0419c303bf9c32da8569d4618bdb0826e22b609ace870fb04592c0cd4d8c387b5981d35bfa29c1bf3479a6e3e56c5ddb18f9f1e1dfd43e5bc4c7abee72388b0147cf1c5f22698f873697ea69fe56e1a667049e69220e4d413efa709f48b51f63b42a4940852baff980a89393d2d18fae5e8475ebf08f62525670f4320fe6dda24549073c4a59b94b85dc828f179531afa0d076cd2a03a43986766ab7fd1f8469193ee26a04115882579070bea566cc99c802e631d7bf01d724d2e522d4bedfad2041333c9c8f0c88432cdcfae8fe2ac64df1416b60e91e72205c99d98a8a05004a78646d7a4b48d83a8892324b3893b26621669cd484447946ab14627ed4be224d29da900d16c7d9cd7e0e80d63f9fd6eec2d8c398b326f4e0097271a62e9937370988d86d3c8d06308bb1f3ce12a8bbd4ddcc843cf2596a0977ea499c4cc38b6992cd19e93c82e44c7a69a5c169eb16d11ccb1854c411654f40d3c5753c1c95b1778ded4331c93783af76b1f46765c2d09597b5c4cc2b33ea5ee2d0d8c77d2d8882cc4f7f1f52913a0f25b4e44d132caf4484390ae238d6a5b34d228c7663df1854f64cdb12d4165f5236329aa4ed8535a7ca212f18c2c24d07854c2dcaeec390451c80fc9e11c1163b952feb1e6726c9934710747db2bacf91d3af2d58220d932ed23f3c605420650caf0c8034537104e932ef768ca63a1afa6740d08b97cbbf03daedf5c1c6ec23a662c0ef0477d1aab617c61bcecf4953346a471c67d1ae06ffa392d30601505736b06be90ab913ffc34389853ccc32da3264535ad5c308424899c30c88761a188782e6ffd3949bae97ad2e9d26d0d0b93b19680c57083cc4518f52fce142da96f41b4e3cae7b44a6fd0bf68aebca4eb5c821ea134f01a4bdb8684a4aa8704bd423ec49738dd0563df0569217fc82c4428707ad4fd8cf07aa7a079da8f106f17614c4c7a16c1c87cc102dad644923b14048bb47e02ebe2fce950f8703cb9630f473069cd662e48f2309be1b9e100cb661870b889da635d7d9143aa4706f22f8ede20bd2403e1ad3fc75e54caa1d797186900fa2fd6b4b45d89f86d54e01157a7b36a0653ae1818044104723466b5aada8a061ae380fd21c389cd25f30815a8dcd3fdd3160a6d66108afdd7241a0e922482ceaae9d07c6a2690b8522c163ba8facbfa08d9ebf19e1e23d509ea2c2819b351ba8c453be5b462cac181f9d0b76baea070ca1f356501b46805e7e805692686a61453bb1b77053396ba613beecdd3ef12e9d72f61399cf768a613ba05a46891b9c3418bea8ab3c38114ebb646ed61848fbc3be2f6079033b964b044123b52a7eba58fd31894903a08eaa13f6c717a97d6355ac692200305d89e2c72b33451364960fff0b7fd714893e97156d5aae677c42211161a15877cf46dae54c72ff40af68006b10cef5c925a857bcb0387946419e918a38bb1def405d6e95b0b346dc1cc015f9fcc27ea22a3aafd12028879b523c01a727d28f994d9ea0a9004077498bb0b8ef4495a0f917fe930c0127e8a92c627965f3d0be13279167ede1fd26cca84df7c7a479716dc9d3377e69c490f3fe72f01d9abef8edfa93eab09a0c9f572607bf7eb4c9b965b9e309e0e60fe123831160313c60a61b85923b79d9cd3421f471807e563d1d3bb347da349b394d36d3eb64c11fb316159f9cb4c560960d188f2351304fa37fbb99733d18c21099baff61d22f633d55ac4405911f3d5daa7c267cb466267658b91ca6b0d38ee2b1e1726f35c95535d5eafec05840458c0e30b4c0b570d4c64b0bdc04cba2ea0ab050d4b26efe3c98e80a5c003ac015977de32312b287237e9736e4cf26688475701853e714e29ed303cc5f5ecaad15a6d74f02ecd15f3eb902a42fc680fb5ba9af7c765afad7a6e1fa07d452b10f304e14cfe85531e998fdc1e3adffd6eae7d484fd8d05c1e6722d0b706c8cf2238df8f8826b91e816761169df8db83ee9b6a8dc2afb57bc456a9fc725948d408cf1afc012d5a975a1637dad3ac6898eed636d228a873de1850697164a723773560b3216070f5fffa5c0b7121930b6816c42d5e38bd502e1984980279932287c8c640ea698f5133b6bccfb9d2d7af55740f5d3f5f6d7ca60a77207f826814700a53988c0b8e43f1d6d5cd1df1355a99c5e0801b1832996771b2d393a241ee664d45e5feb29a12fa180cd0aae4d2cafe76650042a6a95ee4cc39f105b48f1e6b186b722d916d97cd91e2af4375e9af1ef6e9fbe3f3272f5093394d4731922eb7ddfc91cb3921c60782b4e02ffbe4345e85f6ef091d47be22d358b58f4810078aa8436066f67d311c13b9eacb7b18b377c1813678fb820b318223cdc1677b1709cbfac419680eeff201260c66c1a9bad1abccbabb7cc45cd70709b274ddf0a3f174d45c2e803bac54bdd0e4ae858400160b877b12d68280a9d6e66ccd25b18654b8231d61933aec341afcf2e84b69834683c929ebecb5616ad9e98ebc73326909d922375137e59f7c8943d6b21e73c730fc440fd612775ea51031e1d6ea32c148df20522da0cade3a8772c78e19baeb60d4ce0b9aa9a4f3bf21bf0bef2bac2b601ab24841a16084e0127ac306827311457f7958ded0e069d42eea1f05818ef4aafc8ebcd32ed7371c5fe30cbb00fd1118b40abc463384028358d24003a11ffb041864d94d91e4fcaa6bc520dce25c89751cc40056568bdaf01a68943e7aa6f02d748a39ee881e17a64d778a0abaa20c34fc138f5b478411b2785cd590283eae6873bbcac17d73ffcb178106632b605a58cc6b862a82961de13f7e2134b68b64b453e0d40e750d0945f0fd91c6363b3747068cff257f5b3eadf921f63ce1e87ba20e62403792af1542b966f599aca838a6bf4970ec2afa0a3ad4130872c266ffc2eb78762851f18128f0d6a64d353f8a0fc2531b7cfd755c241299f06c302060f4fc95bda5b84fad5a70b04ed6680607c6f81ed896130f6e6f246a79ef701d617c9fc8055a41d8814a85e84a8e40d8be2ffbc1ec0a97c54ba573d7f063fccc5e576d9de69e201aef88afd9cfd8efe7905ce6f1b512d8abb54aeca3b590371f3c408291252fc50cbc6c4a694d4e36037ec71a6916af70fff58d22be0f70d9755e33482f6246c757df36e02d80a5c2586486d1e0181892d3f0223ec48fe9587200cf366f977ef03566dc65ac06abd91e4b991a0040df93b62fd85ca1b187c200493b6d7c25b660d57cd1d350a99a04e41d7a8cde3d05c954065a3d04b132fd5a9041e129016e46734807e2e84b276b66ab238575caca6a638a26adb6ae488b92f84282cbc75730009483785a596c29bbad7c26653af77f276a12d30b2db8492ff900bfeaa7c2bb46ccac8a354addb763ef927226f6f6f087a369c7b8402a45ccb1e26ed9d6a5f8c70c33c2d593300c5299f28f63f1dde9c5856d4de1f8f0b833a643a7e6986814c275ec12d72546ca20395cc79cb659e12d46200500a424e384258b19f9ee5596db082a685e3bbadb2ef910c93327c1211c7fa766ebcb619604fdc954c200114d2e4159cd767b83b2c30ab971638a9d8582eb0d76febe22c71def299cd7fbb451ecdc7a41e5680f542d95dc9e650b07370477b1425eaa72890a6502df6cd78187c231ee986de65fc1e912c3e4490a08249aaf5414c52f01afe90d809f979dd3c6df03cc85e8222631227c8c30a28f532f2a6462c09a85e36e26c85d217d41e17d4fb676834d988461c28e6820b24a07bb403d1761a3f10bb835a2d74f935ee9ff8251e6414128bfa00398d5021f4d3df81f173264bc4fb6f74aa1ada4af77a00abbf3e83ddf3dc934f50cb9dcb731fef897b3f6a08f00b538582bdfa0b531a322be0e2c308378d868182a0a109a623c11ac923e61e75853d5e72587c70a532efef8cb1811f29ff75654836e247a8187a6ee92300df832e205b1bc87074a733196f60ce628e53fe507be5a04dca646ba164a4a31a060002fc34667a2316f493a306f6edadbf3bfe66b83cfbc694968ec0e34cf78cca9f66633c3d91072133c587f8a08744788a45e06ab13b271b113d71b90609d33a64984c6c32e403f8c0c4dcfcbac23701244612e0b967b01db3b87af8c9a618840e8347de3aca008fa30602c14374aa4a47d679f480e35b4480ced6cf025f9eb0d5f973f4b9b034650db121ef4fe0f5e47881d28a2218208f6dda5c0b1d00112b49503cedff7157504222dce97cba2dca0e6fdfe0e4667dda14e0019d78d3035111e9b75409d3362a09b83ca44647cdc09e9c588d0fa3d9039428e022bc85954f6c52ae0478210b59b455c3a1804443820574fef1cc0563476fa00281c7820ada20589206dd14a4d90b9684d5590c468f95c90cf68e98cbfd329faca3698b7fd6489b67544dd78165ab0ccc24cc4f9e6d48481b0ce0409ea9f1121ea53cb7e04270514cead38ca3f21e4a32d4b58e96b51ae624cb7826d88099d408b7259949b624c1cdb278be48abc7b91d7dc00933395cd27950fe26c0a570baaa3b346768c5e350a83a468ceaa63d6cc727fbf63a3a96ea82f41c4d33b24db089d08582897e278d7beb08fa91ed9b932a95ea068c86cf3f7c21a00d23dd2cf3cfb4cb3cd7923e594c00d54250102335f9d27d0ed9937a00d1d3f10e69b5b31e6d7d8dc8747905587cf340d1ec4e3c24c49dc70aeafc71b84f10214ccb9782e3dccac4364f5ca90d91082e9dcb81c9335077279709faeda3bc3acf7b6f493f5cc24dd345ded056f46f0e65d8a672cc25413076381f9df6d95c38f42c54f8297c085232b6bd9bad62d6cec4daabf90d0e93aec7ed60657201c0ef51104296033fa7998894fb65a89fff1b05a85685c6607421a2f09e1a62499b6d1da83b56b9e35a1b46e41039b990149fd2224e4dc476542ae5ca7997be803a2a0ac5a83b008608a002297adb39bf8479c9e0b8cc88ef9f120bfc06004cec94f3310c741b175030dbf2e9c101ef49e2ad37993e83ee3187cf9c7e62d4c2640146941fb9a2e7548253572eea34146dea844dec3350d1aaf4dde4f03bf4538871f10d133eb034fcd546cab89b94ced3297afe201a298526b4417e8fd0be16b6798b8078fe694e587a87ed08b1678b2d50d8b018bd674addffbacf4a0cbd1221d6e2947c36289524c946ccdc1658e8b001e2cbcc4a3f7efedb5a3907eccae4e58ccd6f1855d11edb819cbe699cbe475f654733e917576ddec68e9b361cdf73fe7b70a144fb7b62696421ff1e7832803d5c54f6534110730e1e91c384527502a4b3d09901ff89c076a173a7be2c677927c9b23e18e8f5e1fee94ed30cd41a1b88ceeab37f504b092ab4d999462d314e015db475602f93a23681c78517a346196d42f08efcffca2f7e49ef1eba989cf13d546e1897d5ed9f177ed4999ac15695dbe59d948ca5d7f76e5b191d5f9434f2f2a40d97076b475152994e133d0d40f01e90ecd7700e5294e28b850f078db3a6dcebb0712e43ff28b3f91ce9d23e0e578c2e822f606e5ad90f0bb09e990eaacd944b6a1783ecf741ac30d63f9c71c003f182e817e9f0741915519c453c9b6d66954ac37be9ea7a0c18b94a62de7210c6151acdf09cb81bcab44cae0f8bfc6d5e88fed59a753b38c0ae5dfafa990aab4820b3b8e34ceae6d6c6792a7b8da5949425cb03eb50d10d96d82faa2a7d8d7d6eabe072bccbf7bc8093397d64ac59041d0c3e482b9e8b621fcd40f3b2e3a91d335808a3c0b54a188669976eeaf6b45153da1cbb92c66824c5ba6975849f88d5cf9653560390efd0c5edd2e228b1653079658766a7a7d848cfede2391548d5b56b27f6668dcc3e383e52e561b2fd5b57dced45eb5ede410eeab6c007f67aa82feacb7ac58816bf6f25411a999d020c1f71fe9557a8b6738624dee0994e1a59dfcaca90cf6b3ffcafa2421fc3a3ce295f874e27303398147f1054d6bcbed8492b8d46fb55a00755414277c2e0fa53e0931ad18148d04231a49f18912cbf3c6bb260b9d02b18d6fc697088c5d09bc1767d3dff491220173efb2b8d52a2eb9804b3c8d6a8f10e0b4623659263fad4423ec03ec4b24bdfa8dadf9dd8b3f6310c1b78ebefa788e041d160682634362d688697613b207e88dbaaf733189b2f9c0eb85a07ff58355def7d7e1492c6400b1917f70a077e70cf2c34db1314c4013b3f600f3310d3669c3956b6a14e45b20b1f0630aca194806b5d69bf4ca07dad282f1cec27a42dc2491b88b9526d0cc5961df8bbb742800a5d6f31656d192eea385752bd95c4a0b6ee80209bbe1e6f8d22b1e15e3b92a7739ff3b8f7298214696067f53e81890328acef21b254ec33d34707231d5c74cd5fc9d0d30b83540bbe8d286bd640343d64de907c0ecf68765449fb77612feeceaf361f08cedac63fc2944de701dd1edd27d6d688683746a144f30c686e1cfde3b0e1001f191edffdff9d95e528ae281750c2806fbb324ce732c8fc2984c9c0f345c98a0e030fd726b973acdf73772f6bdda20a03001562485f869d163f23f7a52d4ebb3040bd580074564e37f7bf8c884f4ba60ad34d9eb64f4ed2f1417c9c60d0eea66985c61892486019fa6dd10591de84b0118eb928555f3a7a533fd8c38ea4ec693a253f3f561011270470e34ce604a5328470ae1310bda8f89f9b105079942968ce3b8a5c6b81750bb2c617302934fe90ce7633f988f5da6c2500f6f4376e336220366c48174563a8c12a42c1247b0ce43e2291abb8a1621219218a29898f705cb2eb2b89adcd68b5c592719b633fba79e3575ecb5c95c7b6faa2e2d424663d48211a66a6e60f64af079327b213984ce15e2c195e9dd7a1b8eeea47cc32ba737aad86c7cc4c29f22c2a875d6d59b8d3edb80d91580e1e6ded51b02bde875cf6e4400c7e1e7acd43d9607607cf85a4b8d788f788c441112a7ca1a5d384f263d12fd900d46b7e95b640ec3486ca78b64cca2af1177d8e646c7f57b662eacc080f9676fc586d709cf6ef505d8eda923a10deae67bf73ca277dc7a53c5f8c346d796e2c70442ceb3919505c33c496540496cd9a802da79356a07ee50aee6fe39b36986300a29fac4470fd9b430754cb28828869f8b5fabaa067d5475bc5402a673c27c394924a0becf05ae6e018ea327533b4292e42d7d1f8c90ab79505ddb229ccafed795732a00ab9056de9d4965fc7c792b889577c35802a3b455f5369e0f093dddef9c3a31052976c34d2a5f49f4874cb97e0ca8aa3478ed08619b24acc21a70d01e5c13e966a1fc42c53f61b5bc233312e5696c4bacd2336d9e16969e83c93eedbb8ed6e8646c9737cb8dbc2043a4989939f94041a69c2fe805f4b49b71c6da9a5f4d6a15a3b8abb54ca2c81d5c1ff5b7027743f6543ff22b8a71bbaa953f8ffced711b2844c6c7b5df759736f4a070b27a59fe6d8bab85db0f20ec1a0ab3a470d3d09de4ec93e2e06cfa4858cc79a0cb604bf9daec60152630b8bfa9160b4477fdddacf96da91c60c22bc952a07f027c7b6405f6f2ae9b1a6301b78404d70a07ba205ea35c5d39e48238a4c9fd11de73a2a36e68348a88e522ccf866ec758955134107c40b916f9365ab141a54cfce2e54c42d3eb5ead65a8c4f01b00cf6315f9e5cc763bdade00b0dc381cb68d0e5bd5b73e5b2350352d5bcac295483a611000614640092dba3a12f515d6112bd6d0e80cb1e8afcde7133087c7919fbf5b745159bcc85f86efdfee88f654715b02cf65aa26338639e2d4a9c3f1e35dd4aeb178b336a1abbeb254332ea50d7fb97d8679464d157cf09a8e97b227e9aaa971e3fc3a769602cfcdd93a9a7695d9e2680f5a714e1dfa4d3342da7a9b48dee74f819364d5f6fb290a9697ab0a8739fef9b02eb4d314ddfc1340956d3fd10bbb0cab99f6277fd6428ef9b347ebdb054b4348d5e596755b034995ea38475a56983ac00aa374f4165091bb7f964ab0c4d637047e90895a6e83137f42a79d6ed50c514bce047a610509afac63b695ad138aa4bad490faa1e2a5308264dba15a1a4a96e239034e906d248532901c8cbc442f596c6dfaadf82bea37b88a3e18c6c8ac798eec811e49ceaed92d3c972d30fdcee0978f8c687a48b661a1e5483b655e41789a4c3220efa5398c4292df02bc5fdef8f4ec8c933677e240d4fc6bc3eb1c3367c15022a58a1405c80986dd30191c51ac0d9893b063a912522e39197c2ab848cbd4cb80b5902c24a6c46920de31c9f1de555bb8c6f79b79914728bcfb3d1bdfb1c8669b62b16c6dea8e32ec7b96a81b60159bc04f5a909428099c47713b2e59629a59464f103e103ed032f7ad3ab3c8dddf93276a3bb297447745bb4549bdab39467d162821cab3335cec92c15a7bde7ec74464c9c98ded499b0bd1bd49e9dbef15091d68b402f7ad18b340c10d50b38ad4dd4b4f842302bf645f52e29a06ce940a26e27a51083580f7a507f9e871e1ee4c383665006d592973ae57976aac45e11f9afff95f43850f84ff84394ff06e5a74179fef200e89b9bf7024ed0be801c2f59ce7b1f1653cb4be8ffff493fcabe781e1e0b9eef82f7c1d3f2132ce72b12d27a50e9419a0883bc0ccfc373866883d4a1f4d537f6ed699af6f52bb69d11a9423f1ab912a4ffe8471d14791b27caf36b3cf7a695273d0e0775dd75d75d77dd75d75d778f3da604f9a3d18f7e54853221a840ffffffffffff1ba9f9422e8ba1ac165ce0dcc60d2e7e96d2e2b9e8a96275fcd49f8fc1c3a9871365ee331f71df69d2444ca436261d41e04e250cc2f3b7e742eb8fc3d7f88941b8fe3814cfc3330aca93e366f0ecb960caa7f7c133fb2cd49f566116f19086be8fcf3e8ba0e70b0eb84823ca88a228aa7620ada8454ddb360cc3b0ad468988240bd1d04e30ecc444e3ce8ad09d2addd376202dcc463591b6f52762d926c2235a7fa80ea489300cc3302e894b4483243482551999c9beb7d7f5f839f47e8ebb4769fa8e3ba72931f0c2c20cf9d1e3014c9838af8058563894b68de4b184bcaa6b27285ed575711c8944faeb49703ce846a9fb11930a8934dab66ddbb6fe78ddb66ddb6aadb56edb56b7bad5adbaaacb6309f932992aba2226351951ed4fdc4675239148ae95540481296164605030214c283e21ad18c2c4501cc5d172b22c1bd930d94a34518d8a926551464489a1d013d2c27098d028c4f52782fae2e84e4ca83f71843d3b49e886765a988dae09dd10dd9d296419a654e9a08412180e83c160aa91b4e28689db2872342399dcdd37e388124f626de658df07cf6a242d4cc5d4fe444cc54494330da66e946796615c55038914a2282a96d08e2411e34e5311834548cbb38d31fbe93b7bd32bae827b77777777774fefa6a89edb293d77bbfbc122e484b37b466c678c523e8cf6f48d3f507f3a853d3d7b82deb2f89edf3d7dd31d77ba9b8519325431d173a96f366437c4d4cbccccccccccb397994fccd00597d78295d990f83a73763a314ae9f150083442f6b4622996fad3a7147aa74a28544a91c18ec23828f786b8d26436b32a6b0fc3cd8654597fbc72d07366e4c87650153574e7ec745660c856a16fe1e6855459e6a02aabb2ec7b27104b2523e44e2b032a519e19507f62d61e0651ae32ca71853ba15006ebb0e1f25af80fa18ee8d8bb73efaea288f40a283bb99c3a425aadd22192add25d09c600eb6e9493da355233ba489bbaeb957577f74ac281c29d8446374434284f7f5beb6e97509e24ecc1b81328508bd69f2759300b8925bbfae3e13e2d0dbcfae3c1715945151ef279ae9dd657baf3f275aff7b1135658df84e15851d27ed272e2b278082d21e8810baf086d10424862d829c07371009e9de5589dc3008fc503e999a1705a6f7b41797207be0fc8f1118723929a715a4ef2248ca041784a3c1fc2fbb8a83da47de136fc0792e80912181cc074773bef83bde7c52ffbd6bbe3491d17d9701be8fb81b2890807b741e96e1c853bd8fbc868276e161521a4cf9ece59662164cf5d4e9fb8134427ad588a1e9dec9440a242428a400821a4667bab3884eeefbdf7de7bef3d7ffededb8e3b2abb9c078293437ef60a774e2a2358a6d57fd4de0c4f86583d0f4f2d6a9cf83ffa1f752f62e3548333ad907e343ab5cacf8ba44142f13eae11f1a866064d06cb473928a770e7798ce7e1e93c440f0a05e89a6f46a30b14164ba422f5ff98f7eeeeeeeeee4eef5d4befeeeeb6a58ad4a5eb6abdd4cbc4d44ccdd40ce6d26dd9bc90ee62b5bb14b6b332425add3df622e7353c8d465d2876470e1036840d2b22feff971bc2f79ebf363dde8a8805f9e072f161a4fb084738c2105d822e418bfeffdf53dcddff537c902d9256f4eeee1cb2a7ef2916a12bac415a71ebd3d6595883f41112eeb4a0d7dbdbdbbbd3fb1d577bb6e3da2885f4939fb4135fc9bcc34c402396aa59348bd61fdfb66ddbb6ad230769f909c4206fee7c8cba0a83f47c11ba8ec2b42b77d64fe8f67beff5bfd76dd12c9a45db2cda66d1368b56992a135d29a4d571994896775c166df3939ffce49b8c8179e75d4511598deef495cde89ed0bde8f63605bb5e7191eede07a4602c7167230ef6ec849b14bab1144b1d42488a5addc5d273c1744bfd711293d22e16a3941cc771cced942176efc3871063bafec4956a4456227467f73e767a2821bdebfae318d6611db73346aefac189789e9d48c4253c07dd90733e48cbbbaeb1dec76993a6eb30e70e5254e1bf7777777777fbf107ce0ec342daf3811cafedd959fbb35548cee039463106f9d9d3a7ef6e0686768c63fd711e7aa03b5d8402ba93395e57a4d55d770cf213c4203eb7a6f05d2b66790145518f7a2ef47cb3da502ad4893b554555b1dac411f65cd52565202d6a27b5cb7177a7dea3dea462a42245518ff2f7dcf7bdb79c71808552271948eb723af5872a75cf93e9a26d7567318287093c4cd0831eac604f1f21af4b4483648499998f90965fd77541263c15deabbabbbbbbbb7bbe6a9bdf298aa2a859f15c0b534b658181ea18aaff87f3e7fbef8e01b394be59cddd545bedeeabe67bd5e3b4a9aaaaaaea6e07547339560b175a58516d380381a67137bd2f537134d0f4bb9bdab4a9eb4c64152058620969f5e954691405618c52c6100f15c9fe22f77e8d549b3755932b8e8396c50acc60a6d137008f70058c210c21e68839dcdd3d2e01949d5c24bb4bb8eceeeeee12d8238a28f8849982e39a68e237e514295855551561d5847cefc33f5230e59459f9ff7f26e4e3cee54ca4984e940dde2b711c07435659957995790773aeb91b9d0dd2e9454a291c47e2388ee3b8feb8c6711cc7699ad614c7711aa7711a0761c88c88cba2286e71143952c571c7338ecb54cc88b1ab381a855cb8860ddaf38d465e6973e7b9b0a44fae0c62e158313ac5791bba330d1fc37efb1a5fd23d9fa4fb43b4fb35da3dbfe37c8e3d174cfbbf8a9b065c3a36d94184b47e64c5151206b17cf4a2e7220b757d8c851ec8150631f5c76b84399ea7a1a0dd2337bd8f36755d791f8d3db6ec01d8191c4830c762c8dab5bfb7bbbbbbbbbbb7f6767777773f2c86ac582814c2300cdbde8e333adc999929d1c321ff72fd5fae8be842e3427209d19d97910b76a9171997ec6242773e9dd4ba889e8beda06f068c1a50eb9255f4cd2801825a97eb06d2a70278ae89029610e750a2f6ec8c38e4e562ea389d1451c4b28906b51d96854813f5a755de9aa815894c2a345806730ae57e7c62c2ebda0ecba267d4fad3dac94bde878b5c946d8ca2460d4a853a45212dbfa8d38b5150272aa2400a29286aabb8bdbdbd3edd247bfa7750c4468dddddddddddaeebbaaed65a6b4de10e53bbeb61923d1a65586032c1cc440562292778c1920e8abc3599b8a3a2e53261fd5a31a40bc972592c2a3a32988b4545470673b1643019cc65496b3ac1cb843989bbdb52bbdad5ae3d4ad2a765f6b4ded49f1fb56767bf900f7567b26c7af3a3d18fdef4a68a8bace20755e5bbbbbefebeeb4104c9ccbcbbcccccccccc3c97b9626666aee0bb255a2e8bb9ccd9e974570f636f134176678e68a2892492d04ada45856f886faca9a1bd79211427dd7d378fbabbf3724e79c61f9ca8f4bd8fbbd3cd2c652e5139628cefdffdf031dcf919b9436960a918341ee3c6a089ddbd17a0716edcc4a0a11fe772ac16715254e48e06961383867e633ab8847ceda9a147dd30ba2f0d23885a6bad75d44174f76e13bbbddd9f225f7b4870ea8812fa9047898f3ccf4e925862326a8ebfeeeeeeeeee7edb3268a3b027c49d0ebd8f9e1e25d2e7ce10d71f1f21e13893904a94ee27efa34fd5129ca8b5d65a4f27ee7838213b7c324110415842b0c20a49100744811cdd094f60088ee00d28823438735dd7e55766b3217ef5c74591f31c0b472432993ecb644ef090b3d3e2040fa9991dba1d39df931cf96a08144266e0f5daa240df044720f6da6baf993ec66b6e7acd4daf99e85a3044d7022b1cd1d55e73116bdef4939f2dbddbdd99cd0bf14be497c82fd13581d7da2384cc4c0b560b0679789f37b5a73e174bb7f2082fbc70bdf082c78a006860c8a963d0e9c495432ce28d47ccbdd75a6bad9b81d33b9dde290002c0a0a0c2966aadb5d617388ee338ae6badb5d69a820a2c6016f4de8a76dbd1724bda527396655996ed96b6b4a52d3d16b28ccb38634e87937513e47c9d16f391e87befc45c07a7311c4b5a38966672382da8c5f3b2c1602f06928afda9422a80d299518203fa98632d7d0c084188f546b4e7049e8b7da15db0210753ec70e2c1076a0801825a92360268cfd782419a63c5f048342221db5a81ae46094079c3e107fa6e509e9a18f40981be8da409340194b94315c0b1b17fefbddf44aa9d8ab2338fef13e7e35870ba6f9e54d1a23dcf7a81bed9c2aff02b301c0bce869382d077c2a900fe6f28e6fb075be3bf4c83f7de7b2d5e785b675be31ccbddfd31c7d2d07f9e37dfff9df2b4fcdfd793b8ecb3bce7ef79470b9efb6bde7d4f45470bdc7be3dc79d8f1b8f3352ecfdbbda924c89d2fce903bfd018082e578476ef7e6089d62c0272f8b37b793f0fdde2b71b944ee661b94034cdffb6815e8533984958d280798f6e3c4cbff05625ee63de8fea63721811bf137e3ef23ea4002377ae166f621611f8b6ffa733b407bee94c00d4a055da2cf442f2af657d068b8dda9bb2fec522b4137b04e9de3580e18a4db7b8594ce209607debee0173e1d079581a19f896e809fe3d8494620360bf7a639d0fd38b6fbe286fdb4680f83b4d881b6b0408bdf178f233663b760c33512e24f2317b00250353903432535386431aed0ac2057dc50a925270c2208351f0d7f87d3b9aa2a2472506b5e4034a8608690157d1b0d4da8302e927cfa361824b8416bcfa3e0fbd285210475fa361b88f012c429e214de0066fabdf1bacbbbbe7119d2f2aa522b05c4ffff93a08a4a45921d1172c821c36d24d7755dd7b58d8c6cec2b35dc4463e42557e1fcc6b67577378661188661dd5467ba732499da35544575aba35a6d23dbc8b661194e050d4e380104204c211f779e9031648ccc0d3237e8d8286aabd8d5c6ddedddededdd1b2497712755d6b3bbdb779a3e7b13954ee92ea1ddbda65e8cf6d59edecb45ddbdbb73763aaf4dbbddbd5767ee2ed79ee67ac21b3a3227abcafa13e34a1491231a12da1d19ed9939f52772ede9498a2569d29c689f2c17ed99829bdcb4eda28ecd4304a112120cd36a6f23b5921c070a77121add10d1a8b584045b4dfa5c0dab23b562a1384465a3b2914412223083191c411bd08437d628d7a05c29bfe55dcfdac3eb597f7cd416ccc839a3ae3b4145470673828a283ba426a39998d9b15a74643a381166d3fa50f498d60acadfc9f953639068498d7f0feebf035fa83dd46028f43e38d4d5841e1b1045bdc7cb3b9d91f408b5470869819f3d173ac01206696842795ab0febc09a33c2d208b085b2e06c9a2077fd71f151cd7e1c5a03c3baa5fd49f179275975ea8946eb8e510b2490000d3160000200c0885436381244e65c57c14000c587844724e4e30938642a128c76110064110a30c21c410608c21c6284464c60100a85947ab21f5ae119d62b3ab6897f13768bdfff6f108a8354b9a4763eca3709d27f0689dd0f571529a8b2ad0e5a54b81952e7f8269703d2828de0b70f5241098c76506c69189028b3687cad5f71d38f990e4d7af3a988938080dba3a9734bed9373dc639e3f498d4f5f438a616ea316d61711853b1fcd902ba708aa4912b1019b69d9971858a8d47c9248710599aacf5320376a6e302c52b53719bfa8452469e2eb6050f0d9d8ba128d4a5ec16b36a6d0780ab0536ab457a7e68377e940f295da8ecfb4539c47af6918319ed719edb19273aece21cb9469c120cc5855238aa5d7486e6b9b3ef0d1c1665e2d4af450f5d28fa4019e173f487cbd8308f3b4bd39eaa7353adef44f69864cb04e60cb95ec4fe182f3b70bc1410e8ad03135b705931ed71fd313371d11e5f931f507da0d80ba1675387ea0d8ada900c45b1bca1f79bc04b84858f85b81478ebc7853cd2078ef5c8a7a8055be0ed4c121dc6d003a57fc376815c34ca8516d7886eb1393b974dc9a88b2d804554f24a040283358b313fa673130cc6a9d37bac99d060b0c9f2c4f411eee11f70208ed936eabaa847fd0e325172bdea3ef3602c4637e385ce2f03ad9c1c014082ed47c5a102ee46601430b453c1d2e9c3cbc71e01e7b37cfd3b7200272566d37e6a8d968ea66ee1857c598146c8a67c57bf7b84af7e3153c3faf53a21373e8395f58bb254b28dec93c7c4e1f1406bbfe722bd300f59a21417d9e3d3fdc570439ebf99d297fda95d56c3502e769d4e6f292840b582b6bca1b22b06247bef1d79e7bb712096d8f7d02ba02d41847b88e35509e59252774cec792f2c385f74671d8818f29c59f15238a5841155f4a5bc19b2752331a137922bb5cbd01df755f7b8aae2130583cb059b71e33d864cf7115d3d67c47809d45917d10b2ae4825e168479f5f1bb9ddfc8a1d3583bf0d094c93eb74022125097c75cc7a590e7da6b16571501f34f87b784d4aa3a9a4f801a06f7eb29400687c1432559983dd534e718f25877f74ec89ce31cedea1f6ce21ee464a7c2d11487d65b17ba05f72ac2382250f322e233aa153ac7a004e217d11f79db78459ba4bb07382a049a39469487c51a5c343158d791848e20f66a70bc45477633927528a9a8c9a665ccc86d1cda47d3dbbae2fabbeeb8378b4c3f405e12b9c95783e19762f3b08c285253963a18830a8547469dfff3d786b2065774cef467ba586428cdf285e9d6cdccdb8c333f3e7d9beb619ec6735bb268aed45bb3fbb38cebe42b94b62ca51d23803b1a674506838a87a5718a4976c81b6b893ad3a6d3c429de1c5410e66fd200b721a423b523a7dd45e8aa714b159b6741b6dd224b776b3c73db9eea197f95904f0751130591c6d971dde906e26126d7aa2454f8eedf5e731da97bf6a7b958f11c5337e998d449cd41d10d7e006bf6f94e5f29e22be13e4a1aa71459f9590462e183b2d05440cd40533b997da6e092962fb4d2aea3437064e78463f264adda3274c7d2c2bc18fb1525bbc06d4d4a614b90de2e3721a62bbd7453b50fd3197925485d87796eaf05f84fb574b602cf9000366020d14ec452364cad8357d1f4c849f5df64163d791939dc9e7707cdeba5d8e6077d9b44624626aa5f32b2b1cf6c2502ea80415a647a32ac35c169e18c60c3303b8c790576e6d320e6627e47a151a8034b70165f00c1fc285e0944bc46111681a5bba0252efafcb04200b4ef72149b16d6aac46628f3a5424b731f86c968b8a0275d081b94d4c2edd8abc2d4cc76979d4b60074a6326b55aa75a90a96c13c38b92ad74ad4169acc0d19488035b405542b786f08a3b2c755b02dfa6854020a2d3676da8b08933bf0f44c4b316fdde7fd698a6be1bce7bd05a975264d7f4dc907c550858a16ebfa9784bd1e35ccbf3d662b903bca54bb8061b498f19011841d57ce8686ed0dfb18bc1c45aa6b3626cfb428b768f2789d409fa71aad9fc78eec36122555fd344c830dc829e612d3ac83f4b91327142b91229c99ba09490d906bae17bd11f9bf4b645737cc623a8d2f48803e00b901360393b0150ed3a6254de291e5b906c82f8ae475dabd4ec045b67cbf30aaf6a9587fddacb97681f1735117b5297cd466866c8a38ea1c5a4ab94d608326f0c9d340f7b430d1f7e2db38dc9d79b739a72256cd0b64fd960136e8e2f17cf344097eca75d318686953476b0552dcd759ee5a9bda138e734864606a4f2cc08971aa56bd7aabc62df71a96d034df4ba2a85c6e2137738a5512606857485a7eea929d55d87c116525a3c5e618c960ea708043143e902b876a2685a9d53c0e57e6faa75823d501ae1ffeb44b4863d259704d2c550155297cca5209408227ecd4b29ad5710d247a8efbcb19c81f1e807be9f4319951014ee24d5a193014ad0c5d7c38a64c523c2d52ae1d7bcde5687ee5ccff12047d415fc67a13868d7217566ce950fbbaee4c762a0f814778faa75fe4e70ee0d3166372eb748ba3a93302f4161155eed820b1aabeef5a21bb481596802bc99ae5845b7c58bf05c189d86339d3b861800c80daba04518952b99df84df404e55ba4ce3c7b2f3f4a73475a7c845352cf655354b388ca19f98d15696fc8b7ccdac477fb1ca09000da6f18d0e7865fe14020fce0089e24fa1812a20639d15a527458bc9b4afe8e846010536c05e041687b627203a49d3cf0c18cc6a245d96b9d84cde3b1784fdc16310b4a6b936664ccc7091ac17b0acc44d74de06e3ccf4562ebba2ac3b9699d487554a73b00516480082ebb2e4a207b41cac2bc65cb4ab4447aea56558d05f7ec38f2828e65a8804bbaaed846293e9ac56755c91579da6f399bda9104e51f48d361e2a6550eac333563ad147c7cd3aa1f416094be7db10b22919443040d1c5b13d86d60f6971e46850413310bd85af2f4dae7281104c64832b7daf35d53c97573d4d2a47e102891f412190b2d7fa756c62e142cbc18397a727b72a1ce91a8477521c3843c53b4baca822c3f5884df26b9a17c01c9214324a672169c775d3bc723cfc9baa9b68832371e58f9392d14d300b2ac88f6e32baaef70fa7274306a6da80c3ec2409b744aa384adae3a11a4838036e5330670edaf16b0f697962bbb28d29ee3a1af2261fa35cbdc6445d4a12d79e09d13e9785d945b8a6c32f35a62d0d919a50e6e4d2f840b3c23a74a2d03121a46dc116381215580b7c74a76f164bd3359c523b058e7aea2f35959529a3be06694c5676f9000e9ac6c727ba9dac0490fdb8a1c9a81f9396ed1c82842a32f783de76e9c844f0a8d63657bf092a873841cda4558ab5f5dc96fabc43ab9452c2850dcd063c7ee4e0d31525caa342583b680b48033f454710f35541f2330391242b24aa084eeb47bead899c99ddc4dacc83b63f5dbb30e7772df16316e6d8c7915d7a7e23581f6ab335058f4504146f909a3c3740f8734819c9225d044c3a265978ca8252d521dd4fdfe3f07bd8bd23f9fb0657b5320ff5a962abef8ce47f5fae245f1d1ece35686c2b517f1892bf45d2a1be1e717cda4866aaa97f1cb0cd4f68539e69fd22fa1add14d818d99028578057bfd1a94dd68ebd439dec9f11125549e8647599d16436671a06f66c9168b0ba667807f84f1afdc8dacdc32f938958f43f09ff132be1981823e458dd1b36992359420e49f808182171cf56a4a38c2c89418de6fbb5d40297313ca47dda3a62cb1e85a8dbdec60e6c33ec874814f01824c16b3c417690bb59e2764532c64acb8f8ea38f982dc5aa511f664fb6401fd0aa1e4c296d1794b964d0134e4c74e94f84118544c640e98789977e372efeca7edc8064ca8f999dbe921f37da11f36f25575d0282b1d7cec94760c11bce07ccbc67a54bd71134313dd76a5dcd51cc634d0e7e7274427faa75e88456744aa952a354e5af22d356efdd096a38665e6381654a537408e8a0d9c387e11c1d90650d6cab12f67d1fd958564b4c2c9e4ac3d41d0edf2d4bd31b5593fc63ea5b1209bbf72af2d92c38a8b6916184bf2425d999b295b438d1023c97d3e07f14193dd1fbdd90a9b001b331403bee237a92a0728e9512bf2e4eaa6c2cee3a746af924d18fb27d440cedaecabe21b63347d8a602c3a02ea58948a3a4afe7975f108843c628c8b632ad501b9968e7371ee7fa23b97da7e61a36312ecac5578262db31df81182da45cd4f2f3e0d2cbcecd37416305740490d65b982c240cb54d514ae13648f00ef8c03af04dc89d5541208a18258ae413f283e829f607b55028a021f2f12464f3b825c7906e849759172374ddc728a9ce5108e5102d4e11959fd6d89f205b84b0851f8a0da842891ad02af53bf9e393ee6b00c33e1ee65df24897250c865f86215ef9ac9b9f059198d06de12cb4addc8dcd95c6ca4a1b8a6fb1a7ef816e56412feb6c1c7954123be2a4510bb96db8a1c14f40c3cf385d0132c46879f9860695ab38ef391a57e49417abb0c74ac2acd7d80ee4829e990596941eaa5233f82799290240b3ad7e338e5e32fc647b3273c7da90031c35132bd857427883f90dea7d0a9380020a26016828e116080d3fc83e36eb61ba3ab413114519904d0d92fe06444e9504827e893e984975317c580e36c29dc74c5012981d3b2e7e052235df3835f369eb144fd6bc89c28a84d6dc38c2458b48e5e56479ce90239c8649277aa37a112e9e816f00716ae7a794c231601fab79cd74013c253683a3ee4016a4609db60f829b79907b42ca12d469f616c8cd9dca78fc8c7f06a1a245ce502de3497b831e41cf5972622d50619f1121b141e3c5a32ee852217978ae5096391051b9434f5062b6b80fea9eeb83a6ab05a1e8d438641c74f76a8c56852a7ee5c220746fb46579fbbe395703bb8d530c92513d1c0e6de164167d19675f415feade0dd407a16a67b0c6e227d6c8e266f41aa3ec2040862148c70b3914c116433e9a2892a1f2f4df061e0f1cde1c684db0a3e32bcca106390e34326eb38c29110705d61612db11a615ebe9db79f6c9c472c661a31b4c71e1bbe9bded872daca30f5cdbe1c067c5abb93e514fa0af2d8ee6eb4bd17fe554c0c829c4e5b4d13f6396a41d761174125d57e65e6d533b9f6d6212cdfd3ce3bd07361edc52c9ca780c0bee350aa9d84f4514915441be16fdcb1deb015c43826ffc767617cabb9a3062d871b6250a7ad078b36c1ea531ab5c6e5e769518c972470060c58e55da7461fd2b13931e189a11546b61540f0018ba7190cd2ca12f40711c6625d2d409cf83e53ede45827a3166da6138a055bc27930a2f0906e4ae225557999fcf0e9cb3ddb8567060e305c182191a998576018d9def0f16a1298140296b1d0cc7db2157acec120ed6ce78f74fce8717d048a63d66b1b80da1592161aad0f4e3746b4d67acad602f882fe8f6329375487f12dfa004a3495a1310290a82421d6a604166e6641fdb01d5163dc420fb784294e3824c47a4f42872438ad9cf00aa17b6ef4d2f8b13aee1bf160e137a81842480ac40c4ff21008c3060c520162407ffeb53e99bcfabf511dc8fa0e59abc2b32ad12e0f7404849715ec60549105092ff66448f3726e0fab601182009059985f282c2c39b545318e6cee6922e68e281f5ecb9f113e3277c94e14a1e419c5c5d46651ee21c8c1bc53d42bc44d87941e4df8c3b6f3cc495fc1c71461e3292564ea401bba68fb8830a1ae303c9810176ca3ee23a4a5c076fee58adbb88836b94389235fda29c383ea680a8cd9ce07e66c5beb9ad25071c4d7220f9a68d20956e514cc043c1e810a40f9c5c993372c68a23b3aaea1ff96bb3be91bb01f3637d0b7770daee1160ba82dc8b716d115e75c0c72a8d65fef23c7da5d3a9f1509c5f1e7248f2489e6ecfc8b2785836b70feec2c3cc571f9d1a42d95e823d617dc1bac3691b1e5fb3fa666217283c4b75f912a58282a01c9357d6df538c05b7081341f32920b326cf89509122b46faa3fd20d4a6738b657fd3b524990702994db0c144c9806eb443226871244e62abd9ab2182d465a7c371b12cf86d8b3467b183e3ca135bb83bbbfefa464410f660560262ad0330c67b2977afe3dca8633728906e59c0d06d688682699bdf84349d0863f6c23821a1880af0f5828f6f410a91239a44a3733d44dbd113c15469e032956e9525c2743df0ee0953d5f1fd06951b47468fbdbecbf3584aeff2e5402258e8fd328463567fefa4c49cef721012e17ac9a2dd0e9aeafd4f22b05e41a2ae7f47278a4b6c1bcb6538230cdfeec4fafff7a29a293d02988edb9e44d418b48e58dd7b66ce0a36031a7927bf320e2e8f5b0f29096aa7e42cfd0c693d9f023f177e9f8448263fab5ebbb83134171f251226457596d41d0d5489d7d8dda9c265f403019e5cc734f6bd49e05182c405c5f30a4f5fb1b9a804f13f1b1ee329d8fb012c05c839317e59afd1f9d22b2bb4a8dfb5e14a8b88c36654a23ca7a762b4a33b87a0493ce48132c6922a78de594d43a736a92f95939f11eb1c88f79d0654e1b262c4b3a464273e9f9b4b7ee3bc58bea34c0ae31cebc1ecf8970ba8dcc4368de8ea1247da804abd1bcd20df05c8d495413e512f3160970059b3ef68554188c8752785cc14d49ccbd03157c11c789b432c6d93299379614f285405a90e806a83d53b02ae8b373604442506e20033deddb09af20e630a7cc44e2822ae4b8e96e48e81867c2a63e2cb2b6e71867bf9aeedae38a9ad1e7e1cbb5e900df4296052be43b57f25aa115300173b02b855fa6f8b42513d9b8213101a415f236a724f4d3b7dff7c5fa59181de30911c485c94d15ee6e24cf724397a017025ba4c21739cb5b68cd03be492ad5599838cecb44a91f472c0ed88b03d33b82025779147776530d503686919503830718a613c86ab312d77b0946dbe5cca4c1bcedbd70ca221d7c6e32ae3ed02492c08d9ea928992aa89f0963e3cd7506f8ae036b6f17a67880ed64d03d5fc01776c932b191b95f4719c83521a2ec71ad58ee535dff4bef11af11d97227976a4f3ca4f694336ada54c320b5c342f5ca378212c68b5739452f19bc808504f795357c0667f0a7d5b5b2bd201a6f9adc9bd49d2a85f9212f96927d1278ddfaa7777aa4c07ba4344655a0755736650ce9c13ecb6f4eab004abfb35551d1ea4c3c9a361c2b8fc1e817b747e59e149530277499eb3fc0a44a4022a97af8e44ee3904aab2093c5c818119b113a8d430e407f841a8c28efdd640114819946dd5c96d6380d08f314b70627ab23e4c06db874930f99d1362287cd2db7ec7d60adb294667e0c6836f4e0fbebf9ff35a73faa50fdbb36be7b31302800743855441c331cbe7701b4dfe02aedd09c12f20d36c7a2097177f8bd0834dc05a71a8343d3ee826cec196e7dea16efdf154fd30ffd534349b8238b45e18ccd6a8eaad01b141dca1fc809585b1a96e92737695ba548d25d9b21f877f493888340c1fef7b20953ba22c423b639decf7110bd7e409f6a713168fb20fc9a4ffb7e2926d8d003fb73d98b1bb1e896c6f567974b43282d50e8bc615fe5d4b458598b624026fcb560bd04be782083b9889e4410bb3c6e6f75235f24f817e432a59fd564320cd0a7ae3fc5ebe0fc121b7e15a5c7885af13e9582b9f021ee9b8c4700bcb3004e5aa5618ec85dffa9a4e15e24f484ecf92b3b8db6f81d244f61da7d382d94553f86c6defd2a15f8a8064f6d5cc6db271b5df691534b852758affb38677a412c3a7013dc379bec1f5e05b0537e1d157f1a27cbc3f7941bb6977e19262326bf396a162d54f09f75b9c6d58eb46446eaecb1f2dc83f6280efe570bdd331a7f2cfd15f8ea966ca6c115fb05dc14e51b1f597e7ea80005f9281b9f4a0a8fb38969f82e36874be6660b43163984bfc0c0a4834c4fd1e8457112de603336d481b18d6112ecddff464235452cdafd9f0a3c272b15c7981dd1904efc015f38bb3893a53607bc98ac21351c82fef048fec6dd89475d49306ca139c03bf4d2b2ae69938caa5fc65d70ef7bc3c3a8b1f44dd2ab4bd3bde86c3cdba2458db7b3c16c62a1929d8ffe5e5d686a52c11373d268283cc657da9e8aa156d50b34797962e915faf2aa611c75b27f33f0fc68daeb5d0093b302a2b3392713d8ac2f1b92403641d20aff4cd610d8eb0e633ae7b7bd49ab0645a4440964896ec834f8d6a2f7842d65da7869570923c05804702dac912c103b6dd9c2f983062b34b2a7c9834f53e39a9a8480db511c6af10c0dbd1e2c0c11cf99ce8891f862c82021333f2a09bdd4f7086fc601d3764781d908e20b8366f25642f5bfd62b09d540efb60c55b6199f389e2a57715b388fb09cd7500b47c96262ce5f0d008844f9c8346bbe8899b08f90c54828e4268b6b0fea84874441f653308161032af825ef15b9826c30fc5cd816a341ee353358276eb24a54b85c81e8e19633a286b9fbea47e9692d8979e6580c18a0cc8a11fed9d78056882bcbd7b49592c246f8465e132ab916775e335de4af1d7626699ae775ba4c6babaf55b9911fa2ff171dc02e74367370946ff1de6eebd3615ddd00acf7bda0c1cae8f3fb37a9008094c75ce5f02b7934273a1851655f3cbf280d578022b3a73670f729cca920d21c02d192520da7e298618999f2af8befd984142651af2e184246cf7f4fcb73d592dbcd2364e1cb0b3d92d214e07382bffdbb31070f35f27b62ac17411eb0c4fecbe6e4c4fea614fd33f2bf7f36a8b3edb493c88355b7649c286e54536fe89283211f594a612e379d3acd0864320f9a40b8fc687f89bf8231d03e2577fc23d0ffb2390e501c287215b36c2805ca3f70c94458b9b4c6ab0c0ea3276f590a8febda1dfd4c07f3af18fa5206136ca191bca8d3ed9221a1bd48413e4d238e8af9747438938b8c9196af515603a5836a360ec966083751f1f53ec341d8b4da343bded4f0be5abce1608a01966b6b7cd0d1321c3522244908414e6f82931d17d1607a75645c8a70ee97df5bae211a0b1fd0a49a486e2479d036b6edbf4f7fd48fe42690e791be5d55f909c26d988c7489cd0230283ba81a890a73dec7524c27021cf4d9a2926bbb51acea64cf1fde7bad40529f0325f39557d7504eda9ff32935b34132b8934c0585470946515ca9669df734b1a3b6a7fe89cd0dd21393c92a1b36f144eee31c72f6aef99c8832d2c771fc586b89fed82204aac40e43e43ee5f31c733138ffa9a5493c4991ca19953691498bf439b88514f50238522e0e9d20e706c8962f7c0670d8a16eb7cfce944c9f9aeae1726db940707421072b6852525dc28f105a67c6a31b9aa1b6b7407ca5d4326ac7d1f10110443255338a3b7ced85354d2f5a9b0c8c9466158c62268361e3ff100cd3af21743dbe253813a68ded1043d30dec3123479177c857e7113eaef11f100fc26d17d2a06c3f64aa190f78c6d5c4bbfc7a56652ef3904a13f1e8c9f9c87fd8436a3c27cd2f41e54712064b4672fab89ba1b78636a46cd0fcbb21e2068fe00d8342b88ed5065558f7193fa5c1ea7d66de04fae0707b10545f2334a4ae5e2e53ce4d71be25d5fa1bb74f0e477ddc3850fa689ece0f6a18f88d28dab4c580adfc4666ff7d485f7795a783125ac672edab8e4cad924e6df64f8d236ae85d35a2d3e69115c538221941464c4efe373733cd04254c8db7784ed76a5bb4cdf0921ed1e9a406f160366e550472ca0a9360861c199c33b252e1e6e1769ee86073b671e6c463766c3aa0b68834ce540060db095b67b8e7bfb109e19a66105396eef2684f210680d2b4c35ab2369d86656d6db07ca1fa9dd3fc9aa87df46ea8ec3c0a44de5fe23e02cdfbf3f4d1b0e240429b64190cbccd6af5255b6d43b1ea6711dca6749a6ca2014cd5372b0ceceaced10fc5b402b4427ed05fc10fec80753520c56bcd6e24758178b318f46c9027e2930e1bdadc2d2e74d9a20d8c1bb37d6813041bdbaebc718b2c6dcab7c1519af9fe1b5b7221be8c25716504faad6f3089a83e32218682f0d5c54da9a4c050921bc7f55f19f571f14c595c4f9e41bf841799a46c1281ff31090f20f66e1fe385e8f53deaed439f50da1f7758182921f4443be7e58ab0e0472e36550ee141bc52c4d7f40cb76ebb766faca1c737474e73ed12cdd09b69af7722b1eb53d6a10942002a12c65d786ab168575e24d2bd0de7139c994eb2d54a2233dcac1e8bafe0ca87d45ba7baedc297d1aa12445f463eb3bc9baa2699e7edce4c3f22a68bfe9bc3095e4c0b35f8b3374d4b55e3974527cee2ac601586db17ca6cac39aa023b287b8478e9b4591683ba7613206c4e626e7bb3fe90a8dd3fbd5fb40c15650dfcc769725adb5ceb4e5f29c3e335c30826ee83aa510c5411f76f7db8b5f5c635158b2c57fe50e90a82b222ca651ca736ec2fee0902469288ae391526001126085dc44814cfc14b0b186ca02d93b52ddf9e3a00b82a55216bbe537a44e35d53fda9e43fccc054dd65be069581b7089c5e5457f4c159bb80c4dcc0364734ac8952878c7130898dfc53decfa7c12b35d365e890101421264b805c08c1399a133e42a9b907f54be24e21ae2189f8a7e33098465b6bcf5790c72e9b83e7f31f0707d20d8f2dfb471e3ca2268bf4d4b2b5f85250900974f0028598acf0bd1dd8a3e32804b8f0c5e4465b738f4f346d00245811fcf3e35deff2a02ebb845399c03e7677c952615092a554f876f8c9d0fe73503a8cb7bddc3850cb03498147eb6eb1d668f83825cb55a036f8dbaefcd4f5d916b79019a7540313ff5c0250f5d4f2e1eb8890b6095b16a038eca9c79f6a26ba7f86fe492c6b06758ec839a801557a5289947550c6b7cd17e31c4d697229a86edfc80acabc6a0695393db90dcee475111b4ced5104aee229d94a5227e19a05a63b4b091d709713a640ab598d63ba01e255a49575092075991c3459e79c260468459a76c7b12182c3f4b46a8d340c182c40846311cd8ee7fbc8f2378182f6276eb4d7bc125e71948b628b76cb103a31296f8a1869a943cf0b6d90ca42d645aa034d0b173ffa882a0e6f356161ed3eff4448d93544943d8134d5ae70936fe926a7b60fd5706fe2fd2dc24baeaaf88f09d7a5f55c38e6b33814bc33a8b255986dc226cba1e8d60d77f4fb64b972351ba5327973afed0123b0ce12ded2b21ddf97db87b00a87fec696bd6166912e186ee8d54bf7eebc7ffa2429a27a5bb5ea5b111f019ce0275cb35d30e381031731b1bbd312f76dbb683aaf6010cfc75d0f9ab6be33262bd79c1f00b685c1fca6887206c609451835c3a2034cce0171e434b25a8c86cef7d439e4aa3d347c101f289361bc5e9a6c2bdc00f463ae5aece0c5664024e693dae5911da3bf976045b914249436dabdb84817f808b4588c43049e152fd01a424375a733de0d9d20476a6192d0c5349720043c9a9a81e5f1c3bc1d1ffcb22b5f9c5b6ba77e3e0358a09f6d1b21ba30294fbab24588bcb7a231583f65c1cc58e63126f29c8184bdda34b40cb04bf78dbb6f1d935f5d7201d0c7f49302413104c4767c41335ba8b4c358976b6be68438f84a342900f33df9c9090cac6d76312be9f185bdb285947b46b33371b1dcec344ed8ef7c3308f7cc155f5fac9a92b8bb10918c01f4bc9e2a5be765e5c54413118fa6a6d5eb78b0a7c143ec3c96f13872b7ec934fb3d994557cd24e230db29332ce9a1f3782948a8152443195bf711f36563d2837343c7c001b1cd52cae571a25b1e0f17386a13d7c2afde50565560fa43db509957aac5e41399fd9c692dbfe23843ebf2b24ade9d94160ee38c3a27f62d6b04a6206f99a92851e932aab73bb9a0f83ad55d220878cf6bf68f0fe76ab04eb22c6dde1edfd2db5f47366851100dc0f4ffcbf3d45643d05b8144dd17a7274a2a03f7df40747e88d1b5eb983a753327609bbf5c8a58cdef4475ea9b1a59bb593c30bc010d3a401a837e338209546a8d70d2b1748d52040fb09150118d276b095622ba572f4c0c591f924b8ccd8fb07ed3b1144249485fc77c66f5b4af98cbd77eddd0884591d1c347521f60cd791a50b9b0dbc321b619d5ab5697ef871025ec405f4580fc22f802826e59c95e7c58d44124f16c06845ae53727a4a7f1113d0b8808b721124c89d977949993615fcf2b8b39f8f157c368f894c12d2245f84fad38f220db3f4fbe270579806d9210a08f3e687b63698c4faee99eb487c5fe40755d0ab746830512244ad6740b992fce221d0c8a800363c8abeed51546dd64b56456f488bca629607e7eaa705c5a8673016f07f477399470c97d4331657647d2a90ac9e367ecad36e09f83318353fb8fc0fd0c2e054216c6f2b47d6c6f8d0af6fbc85d44f170192e687a0a28fc191794aee07fc03cdcf2b7d093ee3b65eda0046257165433d972084ef8d88f21778517165a78bfd0cdbd8dd6d2e69ae8b2dad702ffa6039aece32aa4f3e5932e642b227633fd528b19e3a211e941d510431e22861c0d1a4cb15e857ba5363033aa733af80e613b771585117bddad4ee21177f9650f4e07e97c584cbd22fb0b62a4dd9892962851136a1b4320a788e3657f86b669e5960f2e6a023a28ee57243f35dcce121fd121f1e852372b0a2fcb6218b4694513f314c733f445ef5304bee32c5392f94aa0909da690c82141111dba4d37d0eaa92a1c37419baddc00a7ddfb57f90f8f0143e3dd8f184c6df2c8c9ac334bf63d2a7ea9073e69c064a7d5e8af1198d8438e50f40cad52274114728dac1e55ec4e4c924f93a75f7508f10002f503954e80e4182f03033323dd47fd58db1192e0c9cfd5e92cc9178cfcc275ebaf51c8a9e89220547898de36265c8cd4996d89122d980b59660ecbb68cf5dc7b67b7bfaa66b286220b5d4649c9f6aba3088f2c6b8ca16efd6662e657d51052b5615b86a200b8299463a107e573b378c4fae140a0ec574f1ff54991e724cbcddab84694d336104267c1aed95327a7d1cdee03770cb973fc61283446a834359f4be0d324670b298590643d7ffbc818fe5ba05baab1d751ab7fbeebe2a5943836f6e918e15399b9a8119fa784c7c83f41dcce5b52c30913456a82688558549dea8ed8cc3f3f880841d1aaec50ed8125b2526d529b79aafe020f475b6067bfb7710fd63484566ef535d42877e0525ef5f9c9e824ea1a89ee94a6a45ed7ecdaac766bfbb452e344c5c11c250f342f9c63f8ca6e8ea073f7b1b7c78f6e0872329b90119db59f3755bc407799f021b0fb55589260d8c303ec9a85fa09c15198dc8fd145f2a9355dc23a59969defcd9e58c1d3bdd26d9e08d27eff9d8ef6c25f316aae72e6b704c7576aff49d194bb198d2fda3efdcd0cbcb49cf462cfb929d5f6aa721c6da2f73fa346656ac91b68fe6463fd664340e1c2810242cd93556824aee853a2aa32eaf0eba5cba1c5d15dfd91a4416306419fd4e1a6218b81fe2b7432fd96be28302670c81fe485b7c593e6bbae112dc36df063539223077e5cf131f7014766c747b64d81c9d6c8afbf62bbd4f5fcc73eb6e32ff4afe663576e4368a5d717595db679718b44c5d523bf2e92050d61699462bc022bfdbe12e6b7020889c2a914f1bd9892a73075e111f5e69eb3c4bf8109079ee592291367762b1fe0f2eac0a78e4f8e36abda3a4880717e32041081aebd9eac6bdaf814b32f077a6529d9572fd13b17b4570ee2a73e026a0a8fcd03002f0fd73cc05452086f208d2a3f540fec473ff65f9681d7a098c6d07f42783b10a48d816420dd862003963521e8858a720654008c3e5ca4f524172d29e162a19c8841e563a1dcab7858544b8466820b4400e2a4c3c12cbea8d99063f22b3d40f0c8f0260eb91271c867d4393c24abb1752fba05c20a3315106365f6ee0cd183fb07c43ee7042072b686485aa9a2c94c2253c365bdee725789fe66bbc252a8f8a50ff3817b2d86ed337d5094d2ea8f549f4f84b6cf91d7932ae30d95dfec6ead17c5a8a7e71547c78177441b4e29f1c3befeb693ac5915c80d400e59dc34e563b893ce73a910486e4c78bf6a620bb4cbc5c9e3a36a138c6db788c8438de5416221f5ba5c078dffc5d56b27306f8f8c6a497242cabd7f29556ec46a8162d88e34b4df88c030329bdd2c8fcffc544a46651ddba4b4d12ed85bb5bf87517e2e7954ffa7d49130ee30e08de2bb56d19d9e7d218c6e94a7fb06f0254a4f5e4e2fe20be48c5d589dd2df4a0fe3b49a935bf31969fdc41a5d9349aebfc7395d76d1d9ca40220861d07e2608a6a5c4caa954f91d50a51883eb3d8dca940fea71104ff658c6ca17f69f6e985f9b56ad971241ff31242a46107f14e3127f827d283ab39c01f182b87c5084337afa56c0f0066edd3309fcf3edf2998df6750539c6aac3c8a613acc00bd9018473832c5480c8612394f1ecf1ee8fc83ed54f6142fa0a18a250b69f2f7a2be8d4b83fa5e0677f79d1f99c0eb5bb04adacec98c421ddf150656fc4ad44c7474bbeaeb41c1621f4c601accc012d3dd874dff3620f1ffd1d0b1c081a301c03f319e62f21d5ea389ff92071baede5d482659d570e941a6062ce044487c9449b8b6de65f6201abc1a5110be43cc34fe962574f6a65935460b1359c56a2b06b0d139ef3851089b505036fa315a5823aa9ac66c6418bde355048a8d7364ae87545be5d030eb369e8b2629211f98369315a1bbdea08cb997c03e4b521148b54f0c1492b04b031c40974a3c5d02a3143d86af8b600da2e5125d28b9c2b23553544d0368d4445b102fa8b0ad000cbcc5878a48ffd9cefb25550d5474e2166cec9ce3094157704e40618affb93947f0de1b2501fc926fe257a591a321d681c8c0d173d15841fff6f808a0380206101aa55dbd1e5ab5283f49725ed70b0b0850fcf92a1c7295188f1b8a9c71e94eaa231090ecdb5a339e69b6411d50df605c80953e7fff66d982d19db747426267dae411ebb0c064d0e229b582544890397186cd4c3449ad7790dc1b9ce0bca06a3ddce897463cf5366cc4c4d504e3e2fee7cd232585221a28ae6022d1f3cc7d12c94a6ed00c32d41b48cae97714c4c1197ebf0d4b86c87d40e2a69860835247ae2b7ecf07f912959f52697caa4594bb2e71299092c3aee0a0ebe6f12d6006ef571b3f4046e63c653417c7c817446a872122162ca200eed0363e504703a45becfa96616f232f49e475153586933bddceaf051f4c1dee934958e2b32333284866553efd54b2a54d10fad05baa1597132db4ef9ab9eab635d23e4af32415d4f0a744cfd3c0af09030ca93f0ea2161080161ef69fd10f544a27b968e0551b4f7c858c9852938d3554c690c9ea9e465ee89dda5c0049970713fcddb2990162b1a533cda40c99c73eed3e5bc9742106de12df357461d5d15828e76fd14b7bca06341e68cd26576b8c47e6549f8e6e971ba4830a85a26dbdbf709eb04b64d1a77894f38b620b652957a274399ff69cdc183a0d85b1a5ced0e39a835652ff8dd818e3e3d94d208aed91d047db1d1cfb915bf27cd489c35cdda5ac8548f5c5190d61ecdc989a27dc8fadae0e167824800e1a20f9693d008ec2bf042ef2e704cc50419beeec6bf5e22bc01945a7f5b593ee14ee8ca463c16687ce96e2c33f9f2a795976783f41323e7a87d972ee16e3eea011517f18defdbb5fe6a0e927b871bcc377762f23c325f61132aba49d13514ea9b94562dfc4d2d9eadb2f71766c2c5f9598a717d4feaa486105dfddde57151bdf3744a2eec5206d97d251cf42968cf662ef97a59d342b25d04ba8e3a5ef0d82241507ecc800f4746fc6ea579b144b98e5529468efec1cb8e0e84e61cc0e9a177378ecdaf4c48857d22c893487aa7f353771d2ba39b86ac5cc42fe0dfe3d181e41019b1354d78d4f0da28765f2e3984ec445effbcde8792efdb51c5384e88dcd1f6e7e0c8490c90f1ad1ad0d987cffe39122ef818f3d64b523816b9a6e5a40b2375c61dfa041c0fc30fffaf61ac2b00ded5b9ac3429366b793ef84f7163d619c607fdb4f20ede391252cc93c0b93dd61e2b6e1e159ab28f2cdc3bfdb5235226c719c046e7fd6ea427b93133c4ac8b8ecea8d96ad680983881280812778cb144888b703e22690af581373ea1cd5552c75b46363b30e3f28a8287d78d2955389fa50e47270143a54ea79813d62e41aa4445fc5f2e8f44c15543fa549625aec2c260795de9559ce0e9298464a0c916571c69e64abce7cadff3a13556e8077a8f149b8e8661e04c06e310d2a2d1de4549d6a73c6c46cbd65494652dae665acb1ca041d49f5de895d96af8634cbb751439adf770eaedfd001ae818b74246cefee2d88b62aa1dfabe0a3d64f6e74a588912a1f12e2923f6c174e75b8c7aaac36bd28181c7d371cb730346c73d0dbe401e8ee9863bd3f20628c1e16f341767327e13e9ec529d61dce6f314bf1433054870f1671cb42b0b4346b5012513e76c500173de94518b73e0aed66df846dbc7c7b54f9e111b438ba9b7bc7b9b1430e4faa07e81399b2c2af6163c147a810c04688d3df9f91f448b3a33dd2f4320e78c98f88df1d526ab0839df9f6028b65adf344de22789c5bc7c9e39c1ce34b5d49e7418975641cae013bee60d6cef19600c188b15c5bda90f7c05b57a3c70ac9f6c5e802cb2154f86de16e78f31f8b7d76f5a43fabaaa3d1f173ffcc70e9bc34c624a4f53b6abb0ec5680ad1e1fd3c94e4858ebb7ea02a015a8c496593c9b7d3d04fa8c0860b9011a5ca56636545af49dd720f8c5786982855197b13056851259551a82d4f6b396272696a439b395e2cef917381485aa1fc5b29122c0163158b3e637db6e847277fe2b52710c322f99be648eb101204438d44ef6b2ce1f9030fcf65ed63699c77309eeb8038e53aed349498f1130f125a68e3f11c5849d78cf461f566d189655ac5083f5aa3a2d5390aa0c287d86e9f616fb63aade82d713da44095b127930426b67a5e32074e5da53ecab254f8b4599032ffd2378a20864ce0e114cb1f490c48554e96581e8761ba6a403e60d8b3c3dede5f5081d00b1dc6407966abde2c2211bcf13a4c50849ccd16a1ca108e271a38d8d01b51b8a07634ed4456ef867424792da35f95435c7296e5dd53833b703cce876b87812b8efec7852f17889e77f2efe33075ed4bedf58a33617d8b87d088f93898e636eea8fa2af3c8fe5f3ca6fec196c36062b67d67815e0f35338436b1e61f01c9546c5130bf2da0356aef238dbd8dd8ef8d76bbb42caaa6e4ab4cb449f12cb0212d811e989fafc1ce2fadb27fc39ea667dcd5434558387db6b0cc2c8864e49645723894b9254837d3811f926f901f7ee8604d93ead9918e4f536e08b169301d951f1283f5b52f0104c5529061dd40140765b09b84af0f392c6b21df6f1853872969ff13caf77657931db4878376abca1c25e4546ec6bda6def3161b35a4f98b657240cd3b3ba4ebd2813550d345dc1cbc546ab2186a91d03a8eaef20314a8b95e6bdd4104794ec527240ffea616fbe265ab61a5b5e1de9a2ae03ec3d902159765d70071eb003dc829aeb6bd40d37ca57d5ce27738962b9c703df1a07fc570105bf1b8427d6a3ef95d6d27ca9f83f79dd9ace79138fa03c58758c6dfdadadefef94fa17ebf96c9472b5d128bc0091ccdfc25c5dd60238cefd62a4665e5ce02d36473068cfb7d2fe75e891775722e12cc5aa76c7ea0fa5e1177979198db4858dff19c9aeceec60548fd109b2538fa24ea028ba9bb0aa2f65bf786a6d9de2bd022c0ed5cc3f0c09e9a1fbdb0573434570a0bdff9409ca409badd125d14049b42ae1b6a56c2145ea30fa1c1a1a1f0c88fa423ecc03415eb0049cef54df067d2228bdb1ffd2e309b87141c08296b9c4d8317ec7856fbabe6b862752dbc8228def8f9e1189067d4b4c4b4ba8f0417531db441dc4548dfd69007c5362563dde507459e4a9a88f0a2fc357ac0e9dd7c99320d26404339f127549edfb9da99181af6f865e211021a4009525557790768f5a07c2fe4ba145dab9c734ed5e3ea812bac6fb3df1f10cb821d113a552115453ff4ef0b2141e27a82a60bc37ad882392c3ed7907884a4968a51a44a8ca911c066006969eccbed9069047d8df9f3d1cc0c6bf3edcd5e320e2ec6e7bae7b97873f479a17e8da87d6c16f39343440ee6bb81f23db3dae977c2376f51d382d4729dd3f302369b1cde6647ebef7e22b5cdd95ddde6c419f171dafc22575c9469030a06d39858209a59493ad519efc384bfc2a62314b0705cd137f916330e62d2517f09198e58a21c0fd9c4869c889568f342c38100001084cd449436566efd83b32096b170b416aca550ac9bc1223aae525bdb463e69a4914d08d952ee1d62091e09d9092c5e809109b3666c62afc725bcbaeec3f5392945a1fe0f16156598135be6f9d8ab09abaeffd0aaebd7137b7d52d43f58641397d80b652f54b320cef5ebb3d1d11ab217246200c4f1a1559711340af1771dbb7e6191bdce52c5754873d52062ebca629355a091c8c520b8d8ebeb140fa513316812831fdbf51e6123d1367bb015031f1b024ed21c5b60530238c50f98d08216563c49411694a0c3364a987f4eb0f2386c9680b2040d4a20edd6c166d940155f1b1bee5f1b9929341564c6c6df5853406efbb77de99d3ffe8cff4ef3f1eab3421252e082ed9f57cd92386d896a2c6cc9e006765382060b5b3570823559d85a8287a708522c6166d865c3c2560d7a604b66c85a0a382c6cd9a089a55d90974461975ca209f18685ad1a8cc1b2d84b2fe98e890b292b590ea6146a44ea0a33a8246162306d61686693c6ce243cf1020b4facb48543723e6182ddac3c4afebcaa61e5bf275a58791c36f23a78558395bfe1156c3d918295df8157989543f634270b5b4fa2b02c16b69e00d97b1b6c051b0b14141e661b6cd6c4810b5148c2c1a18b2e2cc14911e12272d869e1704d82b341ee861a4bb4e10945d0c10901470ca4885c4560bf9e04e78202bdbc9317744bc50f87140befc305983581608b064d2e9462737bb4b0b3450332d80b257b3fa8d064055735161ebe26f2882b9ac8830fabb037e6b4037a1816b6bac8828df5eab0f0b37dc35368106909de017740580423a420f108909051c6e005449319bbbab19a04270b03dd648f38bbf6c88e79370dbd22ec7cf42e6c7936c76a8a085644129c9b9ede153ba390bed78f489bbd3d2330fb06b93963e4cbcbc72d028fac7c63f58834713c13723932bed1f6e00e9733dc6105dce152b324608ee6cb09fe9a28121151c994e055ea337e278ddf8c89edff664d6c3f1245229e39733934ce5c8e4c0fee7a8962b133128543356062b1730d9e58ec32607e4fa85fcdc69c673c12b52ac623972363c6a67e51316c2a95fa85ab865fea5095ba3c843c20b421f52b629e8c14d33485423be33d6e67bc648a5c4ef61b76f1aecb6b1c8677611ca6b54489c5ce346860af318403200b731b305eb435bc6837c8e5d4432ea7c63718616c161b30609ac8068be635aac7d6c637981a87e172ea61b89c1a87b1719792cb21d7c3e55b0c0ccac8ca111748db0b4c0def465bf30d7239df2197a3fa1683a8a934117f7db904bdddba807abad5527895bddf437007b45de3fdcb095ed57bbf53f57b45b1ddcf7a3843996a70e466a9f1195eca93325497c1e57c97c1e5a82ea3c6d9cad422269be280b47c239de5ca5597d79cb91e359f71c8f9a839df4ba56696aaa920359ff11935bdc32b1bef374fb3686eba4c8a5733de8f557845e3fd68c4ab99f7a3155efd7d95d79fd74eb4108c12d7a3c6f9305e8d6fecd57cab79fc39202d0d1a333468d0f8e9d9311a33353515a4c6699c468d1a04ea471886e94617ce47ca48b430ce0159e3a7a78c445b730e486b2422591b37d2591b361ef38b1382bd46e540b430eae5bb5c7242606ea37220da9a7af9a8df740b97c39d3d685d381f5c0dc2e5f341a07e245a186ec9b7e1358dd74c58d5afe17513fefad5eb1ffefa9ed74ff86b2696fbbd9834e3c52f687811c98b5c7851c68b282fc278b10a7ffd182f16452a51e88ca77efb3364a4a0b18aa5ef7e9b28e5c5f88b77a37df9e4b21e18d019355bc25f3f860c2f5382bfbeb848d41355efa43091c8a5c6a8598ff6dfac270bb8c34844e2472144bc3abd1fa9f0aa08ee08829d2dcc39102d4cbd30de724a6f1a8607ed8b07ad8bd752e7c9a35e0f51bc12bd1bbfb0fdd29168243bc319ce70068b21799d82b2c9c3962e286cbd8089bd7e8b92714facab597e849673aec7776b5c4effc2b297e64ac35fac3f99f8933636b2bbbb4a948ff38c7ecc891c257ff23a42dc11f93abce2755db1e3149e100283eceeeeeeeedb47453876ecee8e1c59885b052db08914a5245221d484c65271828d8a1e48b1a898203431a594b265b7ec96a62329a594525e11e690525e2ff4c5a55b764bec325d414a2825942809a18c50052feb0d7750d0f84b764b1a931509a584706a1a163a211a1ff9ba3c84505e1b66ca5eae090bd70b0dcab4058d52cadf4b4a2ae5157f655b1bdb9f7d59c9706ad9162de575fda0a4c5b509c1349fcdbeb06c0a616a53d04ab04ba56dcaceb097222f73ce6c6edb659a523099ae73996c0cc3fec32d16af6912023759bab5809159eb18aec7656ff87302bbecc6a6cc93766bd3256715ad94b1c4d63048c50dd4014258c50f4f68f4d2bcb7ca886af0736aa546c59ca6d4250f42d54b9197974ee386c8e94fb9ea5f1345d1564561cbbcb66cb7364d0fda6c871c69e208a5cc4aa64d33611f8eb91d6aacd2ef4946c9f3fa872a77e08f3920b76dd96ea7abde3c41e39ba19416b2bd365e7926feaa4c2dc32ea96948199bba50853c1292002f86c11c1876e9d3aac9d2662697b40a66d984701acde64b76ef90f4922db123ae6b48ea308a0ae117c330cc13b25823450cc3305e41d81076d744c995358d6f3985c67723692d56c25818d6c55e4a2e14d092ec6bcb3039bba4c9ad392ede2459684fca04a4eb4281694e32f4c0090944618eeba401db87aaebf012c25e44d87eec2a913842ca2951d84ca7eb88eb89bce414297ba872c49323aae87eec2a8f987cbd18d14896332e32a40c296646a6d87c544be16fdb5a4336213e3adab266491f1a9185ca664496d4893587776037ad047748963109b67139cc0199369b444ccbd3b55ac5571299514794196d3fd976449dccb9994e17773459668b94d208c8ca240a2c6744cd425522d451b3aef33ba09695753bba2aaa557cba04b9433bfecadf0975362eb623c81835b5127a6a993026cc7644efccc98c8090196546462e13c6848999d176c4db510391d6683be26f3bcae6ec90ba5fa26cf2c2b2a9953e4bde9d17b692225051f7744f64725ed84a8a40f1887db8485e5836b19914818ed8e7c2b22b6b2545a023796112c256520492574366d84a92ccdcea9e6086cc7032336b405b27041a3b21d0a8492682828282828282828282828282828282828282828282828282828282828282828282828298d8784239610d62348a572cbf63124bde39b27ccc0a7f1c8dbae34f8bb126b2fc6c8a048a4f34a969cd51d33496f8836110292ab1fc1979b423a5a844928f688ff0c742944a570715cb37113187034b151cf8631ddd10f284e216ce4774993ea29530240c18cd11060c8d05ea80483fd1e80cf4320cd8129b61233e424ab27052c8bda47dfaa7815aa85b36c32ed93a74e8d0a14347843236138b89b6bcd8e8c02ec90147b62ccbb24a047f97d1e19c5a15a87cb3aec3ecf7eb1d5e6593a2b21a7df8bb4e04af88e02fcb98288b36a3bf340e09c1dff52df388b88266bf10e94825225639fdbaa83bb75f7aaab10a7fdf55eaea9d36cb5aea45d92c8b55784585879ac5441d057ae3d08c14d0ec824676625e3cfa69561c6ad5f56bd2a17a51d7b52da88445367b3c1b5939e215f7eb8cc45ff0caf4eb9cc42b965f6f9d8dc5eb735e1f831eb444cc24a8f6ed7ae4894ab6639e566424b3de4d62b3b813795a87bfcbe7462af69ade90bdb2eb5c93a25ac75e17a289b001bdb45ba61f3069e94089ed2c6cfd28b1b0250a2e2c6c0da1656d2c6c0d81c86a54e887ca8f3d5978042a4a582116cc44bd2badf6ee0261aff622284b8f416e88eea7df70c6e5689ab6bdf3a22d7d8611941e1ed21ed7ef11b6b442fe4af5bed8ed37bc959e7139a567255a3a79d0765eb4dbe9a7bf5813b3240eed0ebfd16b5c0e3de47a10a1a3a323024bab890b345a6ddb3c7ad87990bf532d495eb19c527ac8e550faee373cb91cfa8d7aa7775b9b4e9ef6cea3879b77d9ade4b19cb2bcfbfcb6713993e525963a6737597eea3ce6ba472e27d5d52097a5a73fd5c875a7def452f4d1d2973c273cc769398be7a4a5a628c431d10dba6c2e2e5a7de10fcba12d3e7442a3693a79d176dd2197733232df7d3b791afdc9bbd36a3ed8ce779f1e6f20da8e0a3d622fcb8b982c3de555f6eed851bc9ac72097432f3dc81ff5bcfb6221ad26fe60c6846eb7345fc9b4c56c4aec3dc2b6fb76d399cb319dd6d40f68e97d404b6beaf420aa4c153405847e9e7efef4d29358cdbb26ab9dc5bb472ccb3bef46dbfd44bd8d4d9dc71d722c5e12cbe2153159ae9a4e106dd8ae7957dacde441fe5e78557a8cc5682c8663939182ce679d6126e6a8b08088733dcb8432a1ec09be0c19a7d3d5eccd842413d82cb25eb58f8c8ce00e8f764646567a98302b8611174d9232a1be72a4c3a3045226c4ab4bb316af6e9745c9a4749911cb2d3841fb10864f13294c364833611ff511dc01616ca20ce6e85fb661eb063bb6a16565442d1b7c61bb68c77623b5110c2c877403217b251396918bda56e1156c826d2bec6d2b3c48a20ceee0b70eb8468fc2af3fbd09556da4082b8d1061a51752a448d981572e4f6018431ddf256d86a6886c2f9cc2f67b441efcb6691b2b433f5e70a04d7135d926e5d3c891630f1319c21f3363eff3907e9f087fdc7008f47c8044d0075ec1cad0076f08112222f043b8eab84d73777713416ec6b8c01c638c316a9aa6698fa55249d3b497be69a5184bb1a4c5d8dddd33ca31c47c386cbeefc301bda39a40ef87824de5d16c96125ec12b52fee027cf6cb66af2ef75c9eb92cd5e920e41e48885177b0313a8cd0dcc7ac1e9f8f24f8a9edd32da68b8230a1fff830f438628fca1591042088d2034a202e1140aa5123e4df8ebecf03d29fc9df026fe28864d186323351254f5a369c28614ca9f253e17257deefce1d5954c6493964f20521749a0ab686e75b6aa4f4dd078ae43f8eb8e1d7578cee71faaa64ec71d5ec533479d66459c7ee4691f7edc0ce12f5e6007881f90626cd4893a483c7127c9282ab1fdc3637a30c6a69cc6e60629a594128bb1b5d6a094d7342975dc865a61e6484484572dab5c91734a295b50987c01a560e285116684adf944043a447b4e14a0e0278388a620d9eb9b8c82f214ca903d53917d367f5defa3ecd7b718e914f64e30477ccbcd80e563d76bf6d3aaeb5287def91321b35098236ac0f22f9992d713c02c8a743da6652f067a19b217cad4830414ec8552ec757b5181c4127b71d8eb32724e09493e11c384689999b90a441f0e96bfcc0c312c9ee79c31ce189999d9e6bb0103e577efd0dddd2d284aa6d422dadcc05fff66879b3d66bf7e63cc1eb307210fb90b2acf87fc48a936a18aaf7d63cd8390358eb5fea83a6cbc1bfe9a881046d4462bd507fefab10ee10f4609e84b1354082322888ef0eac2a30b898634a51c759e70d3122c7c0cdc01a36cbee18f7f1cbbc1bc1fd88f0bbbbc1f373b74f1c30a93c73c686f5a569b9726e885adabc3f2bd61870ba75cb9817f8385ad27494c9860a5158ca4ec4bf248c92379240f4fb3faffbfea2916be9100dfc2891eb4f2baaeeb3a924b240fccc14378969425c11d10e668b882300bf8f1b356b1f401bd59d29631e9e16346bb7536fe5edd0de123fa90f2e2e1c15aad9c0904d45d4bd0db3e36feb6cfb5040331505252ab1579220f24ba96a0a5c9122dfb88d636e7a36b843920430bb91e10e688e7bac5761965d156dc4682cd86b2a1a1217bdb08094631b2602bac511ceaeece5a8d64b4fdf057940dc11cfc21d0c904bdb7bc015d57a4ce150da50a4da4a96760032db0d801bdd426f595a653eab41509680123865d47c5c08089e5ff20c22c1820d88281127b83657bafe3c256e703831bd88b5db2063f18f4ac139ee3748d61944441a3de02c84a1891e08e00c01cf2f25b6c1e269dd6bd8544e2615f7c59c7cadf88640373c8bf44a1fd2333d94b5af2587928e523927c4c92671dc94bac641f2bf9c74a06b29285ace4969511c94a2eb2928dace4232b19e9729295485306b9dedc7daca692d8ec0854fe6aa0ab8b6d08930e152b66a0620560e111b0d084a5c2055f5848450b7c8c2ca4c2052bb04d0477701230475f1e5b8e896892b3f43e2f6996e97df6e19e1e5ef1a98552f414c1c69748338e087caba2d7e78fe883439f0ecdc93ce47ce81491ad08aec6ada688944cb554b9a755dd43e9379c22b25d4b82f3eb174764bb568bd07e45a38e38f3905b40c4295554abe4bf56c96f44512eb12922b088364a82138de6214eeaba7688d3e79e66a5ae3a647be910e7e39e66cde31fdb3f1581deaa800436e628217a5156c87eb6e7250abdcd3db67ff1348bcb10a547a7e5d151abba5b885e604507a7df45cd8238fd36eac3be4df44519c4304507a767890f34b2533421093d3a386d05952648d1e1a184265a385712c178d4ac26c2c9ea651eac1e5df5c624db97f528883c7f8b10c66661aca66e692e0fdaec08547a2f5228b774742c6f41c4848ebdb22417774b30d9addb0179603a1626c1b9f4d2d8cf42782fda43b82afdf235bec61a6fd7e69c9bf6a869875acebcb81c4d48fcfc0d5ff3a4d5be7dd3bc4c7ba6fd86a7e919339bea66b39734899331979359c801998f155e803f2c3564b60abb3d194181a83ff087b15441b1431aac060191ae216c43c01f9936fe8a5e2a087c76b66d61f5c2f8e0c20099c036cc4f06846e29f2369f0be6e7bae4617e609ec014c1588171a2d3819102030433044304530546461d201e5eddcda7dbe99410f974336492666d68938734b7b66ca42972659117cbbdc88be704fbec4210dcb35f26ca452c77bed172875c7341f4390fdaad727f13c2f211cb1c44f668a5bc5c89ed47603ed50304813c3cc4a9f16c1ce38498eac7df67fabdaf889a4c3d4cf58b0b80b75193d37deb3cd9058dd6740ab2bdbbf48a90aff90671a0b005a4c442fbb61dbd131a3c98e299690131b1ddaf68024adf75ad148f97eae1af6b75523a1f580ae84df16016eec0ac89a65937ae7a7caa87bf9852224693be4263fcd4183efcb14c81def88de1633acdbbcfcc3c3e864fb38a8838376a8a1ee2dcf80d8fb62afed404fdec2c942209275800c84841674eef791df78387ea79d14a2e48f7999a0ad27de63335885a372b97a754931450b376ba67055b3d6012ad8c9f94502a0a0b3a21a504af600ba88a8d4f2d99a19d8b10af6e0c1f9728bc824eb0f1317c683cd288e1c3f9f05df5c8f550ba2a86953e292235575d558b90354f82239778414150f3cfd4b5a857e3f3523dd878cd6b2a08e46d1ce234d7a32d7606ca8a3ad1c80af53623febaba59e1afcbe984d0eedd330e88d4d119e208b5f411da208bb01d90b6f55b34d267b862bb4f0e08eb58233dc40cccc121985c4efda699b8ab117ef4570744da7a8d1322edcc39c07606368be755236d672a8439e88d1ebf59e155ad3789eda857e31897d3bdc6833846dad25be15557e337235ed578fc8c921a5eaa7bb4dd69f0525ded5a382729686aa6a678f89358509a0af9eb6efa4df14898a3ab903f54bdd29e6a3c88d3f1f77a4df67426a6d8ec2d4c44b1a6f399a8626558d86202c96e6db2e1a57a802f62dec66dd4226aaea31d043587d76ec3ab79e4806467c92d00bee6363c78c819d940b4dd5dba999999cf504ae92137f36ea6de24b4bafcf0176d86608e160c7d1c6a55ec5ad4839940473ea475110202edbe752ddb823ba28d9f39842c1a4e0f21cbc6bb43c8523dc637a366a92a84aa18ff66ea45a168a0f5526aa342a88af13ba19551d0eeb0599c0d67c3bdf3685c2e6956c4d97680e422757860048b0e0f6e802232ea807875533c9d10afee44a273a28b2297c8255ac4f089e153e4224405a3cdc826b23cc5d3aa2c28f7c46f33602ee35d0be688cf80406f0c1f97183e367640f2d43d3543df55e9bc17fe5233b507db99ee5d2bbe9312df0df10ac6a83b8aef90ba2fe2bb2bccba74ba294ed8f88ea8598c133f433b17211b1f3b2026f1b2493ce4805c2e2db803da7817211729bc323d3e864e07349138b508c9de52217fe7816f3ab4351ec49132bc2b69706f17c17877da781745c38bd1b56e8aa707f8f96bdba2e9c5e3c3f06478f8cbce95637edff499ea3dc2f6e55dcf5f6c215d3ffee25fce9e10d9f9323cbcbad1c2f811b6309e72e2c6179f13f28b27fcc52735a4b8503de1d5e582575c659af0177f6a00ba913a52a590be1f5e5d273400f1ea3a9147bcba4e6ade55c627068957d7898d7395f9e1f9f1f89412208f4ff52020c8e353348f4fd5787caa3e3ee53d3e25c4ab2b80fb787c2a0aaf6e00dea3c5ab9b73192129bcba3b5c264a6aa8018f4f4d61c0e353440b787c8aca90c7a78afef8549599c7a78c683c3e65a5e5f1a9245e5d9cebf0f8d4155edd9b5b9d03ec188047881205f4f0a04402969c98509fae098b10af2e0ecf210aafee8ef3787c4cab008f8f91a2e3f13143bcba308f8f99c2ab1be3f13144bcbaa8c7c750e1d595f1f898225e5d99738f8fa9c2ab1b73d3e3638c787553315678751f93c4abbb3aebf1315778756f38011e2fa3c3ab6bc36d1e2fb3c3ab9be30078bc0c50b38a90380378bc0c0f0c0fda0d7230ea4d6261bc7a3415380def1378e79d22f0f6380f49e6c36b50e0468def70e3f771a3feb801e4c6a946bd3f5e6ff8b8b1030d0adcb857811a35fc3d6ac8c94140bdf53582783935d490f31d28b5de1ed98fe75424d347bd39f3868f1eaf376abd34f76e54ef3b507ed4ebe4c67dd49073e33bd490b3c377a0f4a8b71e0134f57a0ff21a14f869d450030d9a1a6ad44053e33b505eaf931a4e83023550c0470f9affa871209f91c067803b731d2a92f9ed4069c0c780eff46fa6de069cc66700069c24f0bd650233aaba03e5ea705b91cc7bfa010e40e333435aec0f509150da7d070a8d7a75784b4592d16859c00f5091cc06d47b80f90dd1e1343e1a34eafd5b3e1a2ddf81b2807a9d7c1fa23ac077035424f40006a0f105bcde960ff98c046cbd3a9c01aad3bb8a64aa6c77d58caa926007ca77a0e850af13d5ad044eaa7712d0c1fe0d9839034ebd967507ca2572753c878a64ca1c4e9c02ea6ddae52075d4eb809f2a122a75288042a093678900a5a1ee40b9422e8f99030ff576a7158929012c3954249447bd39bc003cbe03a5ab3701199117a022990ea8b70053f2908077b2ebea3d9d45762cdf8142a45e27f23cd05000791d15092d808eef404940bddd7938d5cbf2049c4240c81540430e930605703fd1406938d1ef401152af131aae0008e440c3794020071edf81c2d57bba907ae91570130e1b00a848e624c232b50dae7b605524d4c6038870154966ebe5de36ce1e92cc3af1c1545377a05c075c02dca622992c1b930c661601ea65dda622a13504e87a51590f976103007f4045326dc840bd6d74b38de6ef40e9a15e27366e5303001b9751630380ef4041d5db47f165dc549164d6098e180e98d6490d6bd61081798c9a7a63dc5491986c25c10e14cef41d280ea8d749cd89e060d5eb84e73835274045422d0976a0b008f01d2830f572878951afe9317ed30d60c002860851000f09088200203f7c7802780f2f00cff16cf80e5e8eebe0e158ef26e20ce007f06cb801bc1ccfc1c38187b7837106f00278365c8797e32c6f4500ef86221a670075078a00aa0c107f310055c609fee26d3c1baa131c078097034795116a557c0d5ecd6f7836aef26afe79364e835753657c6c54999f56c5d37832afe1c5bc7aa97bde8cdf93f98c17731a5eea2dde8c9f3c99532fe69d973a8b37e39c2753657a38a6ca2891aa324bbc195586097ff130bc9295e161598820095f58949755c1a345133686d74b8860a80b16c6c3502005d216306078b0f5b9784658ce996a7b37b6e937cc793ed8b29c7bd7c6da081136bb496c66f28c64363b0d8b07eb11b6d98db40c0faf64846494905962a30c132be373659ad828f3d3f22bf34406c8c6eb58983a027ef1262f9502f8c57349d8789616d8f86e091b4f6560e34f35b0f12d1e84df4de120d5e2417bf2a0a51e64f1a009da131428850abe10515eaaa755f1a5948f8ddf524045441cd8291e9884d6147a7470342c053e3890cb19923afd80dede2ec573c55e6a6fd7eaa4b02afe86bb167f11e7a48478b2500a14f4c0f28988dede140fd79b5a62638aa7b66866921921689310216c8d339da03127a98f8e5a7a76a0d36a2ca23cb902d70cae19c06c715fac34819447d8e169517941c5d0972140b19c85ad21f8d84bdf59105245025ad0ce1ad9e2d90a396283342c4ca65cc7b296f397773fe7b359afcb4aefb237adfdf2b6a9d98959ad9af893973de48c402ca731eebee10fbe250637c45c34170e7bbd5cd7e5c1d8b1c9b0419af86d3ab4899574340b881f33061ad99a14af6b5ed3346d6a33f26c5ed4e12f2ae1d5f59e8b082e82a505266b52a209415f2810cd22a26112121d7a230f548257178a216a4862f843a1e67f342bf2a0e8bc1e83f070d5c4b3559e09d86bc61e2051097f3c343caf02648a2519c496cf95411823f60b5ed7855d879e1188412a10070bdf3ecccc45be4001b14411203ac05a449f6645a0567544604204f4c2a3c804104598803b30ac087f7c1dcd71c9f7c1a32320f863ee09dacaaad0f3bec8d92a66b16ed8071af85ddff5e1f0bbe03501f9f77fb0dd496c7466b35519eaba0e5bc551c6795df292f2e24b7637050863a6a355f0da16683cf775c9ec9b33fb5a05df4d81c6334c124b2bd820afda6e336698bc2e293b6b78082133336dd59c1642d63533c81a1694b06913429586646297859f3ce4c766292f2f42953cd4ac44a2758d871c8298a4590e65f292ac691a12429b17a2e4c0de4311e505518852822428cab041414b16b6a0f0420b545ad882c20b61a099852d288ea030ca32ec92341f8ed30801c9dedb38618334d705c8ca6f988c97bdb71d13b4b13e9ffb49702e4d32e9a0ec76c5a453b724fea24eab62277941fbd96f27c59a5dccde4eca926a203fedcd9078f505af78326f4b32edf0270f75fa0a7ff2377ca2824a1dc93205ca2c43f46e4936c9cabb181123fdb499acb9440ec6600617708108510c610a2cf6dea0022822d1134e6c7fe3727a6271c3c5010ef14b5c8e94fd44093cdb874f6cdb2e073b4130811441185a82900b602c7fde0046c001108aa8200a82cfa51b5f995d6029f0c189b7d1d1acf89b6641a2f81f4145e8671d0d8260302d20850654a218c39012295178c1c105842d581b6c5f9a011ac537a102cb4f68620b2a3f78020b2790c0c2892d2c9f06083ab07c1c4d93ace005312883d0144e20031be0643be860fea8a952fe4640bfd2086cf718e887c30737a033764d64405690903f1890172b6838e51cba7c40821230164912521fa040099c128bf6c10b76b8c288a28470049f10c3d4ba809a529357c4e0c754058d4182bdf4455bd8fb185c7902131694b6405116b698fc685acb6a4ae068f21a5b4dfb35efd3be232aac8255a615ca05abe0d117acba114ca8b4404af99728ac8252266b072c4c6115b4976e43b4c5c216932cd86f081976d17c383c0b5b34d0224a12ecbd4d3647204f53406517712585f8cb7e6518acbc6c4264012193e4c5a3852a58791859576a61e5e590b4c2267ef27228f2c8ea954375f3626bd66875b44a5ea69217711806470e350b76776c8ecd62c39f3c6582421c29d4ac2172c8fba155f258c4b06bca110ca2297888acec88c49364af44da80a638c204d462573cd24174232f9b00057b4df6da582dac1040342be2c84b20b8235af943b3faf2439af556c9db2978c84aec72885749d70eb3601540920aaf608b0927aeb462e5a19432649487523ec32e1b5ec9cb03c12bf922bc8259f0d0981726c925293648631329ea2589de6e43a1341bfe38d62b9f40bb6db27a6fb0dab7ccd3eaf46e1fb9e90b822226cf09f60b9334ac6269f9a8db1cb66c3a48d44ad8f8b20a94b9ad43c5749ee671dc21c71d76dcb56e7681de9e8353b280be98807697d4436141e7b55fbabdc4ab1e085979ee5b3475fdb57ce33c26a2dc5bb80af9ebaeb45dbdf4903fee524817145a8dda530e7340ae9f322844815e6a35296b4a1eda548f68e5d946bb490fc21cdb6f7abb4cd2cba6edbaee14ee80b6eb0e3b6f765d9dfcc94bb8c3741944be3be70521df7d93da5b0e3920da5b2aad455e2c57af3c07a2e5ced2795c4ffe4c5eb4a56f2518b9594c15c21cf21ee6a52e7b7929598758c8f58887872dd60eaceaf78d12e8eda5b74d69d4b290a209556c0d0ba5b0420b4eb2df300aeba6d020faf240ba06715dd620ae4f59e488bdde98ed6bb6a51744f79833461b2e086cb81fb0fdab59ec5a0f6dad875e1473d6d334ee17d7633bf7de5c4e2e2edd0d3f464602a211443d50c2f2bfbec1a53b451e9147bcfc8c3ca0e990579dc976d7bbaeeb3c6602ed4c41a8e7a4e5f1d0b697a2b5475f696194404ef128fe849c2a655a51fcc11b669102bd7e5192cb71d2f2c80539557a162f757ab427164e9d4e52d057147f57d0fe75c9f1d067a15ee751d8b159267f1c067ad53b35196d908f1e166d909f300776d39ca5aa1d6aafa920a9eb10c7c42a4e5d97f6b35c0a414c725d2c349053e414e905394576414621a39051c0d314d02a445656d4b3885718d218b2a32e8ab4609b04f64e1b99995966118f12fe7822d14f1e25fcf5e30d478923a0b3c55fff0a2a349f68bff140d76310f1f34996c45f049a403f168b3c6eb4fcc869df26933802fae432c9287a70c50ac0c2560f865a4638b25c8fb0bd1ebd00a365cd8b964b40b16749fc65bf1b8439b6fae487571c8555ec453b7f2690e653e712fefaf20a7a93585e62fb19c7838c36c473c5a20db1080f107efcece155acb387bfc863468936b410acd7378d67fe4e1eed373c85a2441ed076ec2345a6e7a474cd9b4a78f294bcf984552dede46996c4e9cf9ef983047a7ba7508b85522071033b856417aa18d906c3acc25f4f2b5632cb2cda92f8eb2bfc350fd9d4b9bcb6609845b6bb67959b75416f1bb5d110d20e21b9ce22fefa4ee89d4253a8852444c11c94bf224a7b6267c406692eb72c3fc218238c0db1c61a6bacbb0f3508638c313b9c52c22f6012bc523ad610890aab2203a88454f88b45962b108d22117fcc5fac12a9f0c751683cb7b01b5c31e914276218c30cb490e2042b8e0054e481560b6c9045125e1881cf13342638556690858f0ca07011032c28142576eb26945f8c800c4c1c818531d0600638975e612fca4a2f80c18b24783094842b70eeada4f262ef0d560ed9815990a50daffa524a0b210f4902cbf667eb7ed68d83bfaf25a4c1028d22a0d0c45fcc32288b986234dab01b9803072ee887618f7d5d18761dbbeac45a860f2864193ea0f12c8dba3be6853f282b27a4699a8683d52eb5d6aa6c29e74afb95b235a8d5fe67a3e3105e42b737a600e80e0b2bdbcb8339203ca39899a7fc895a2943425eb1b4d272d71433745eaca07d6861eb8912f6b217e687573703fae1d5ed60849af00a3681c5386d2f4c94ed09d0fc01bd303f9d0ecc4fa7a3454b5111158caa5106d4aafe0ca02d0382f981d1016469efc3fcc863cdd22a8c0e60a4c8609eb07dac42a8e29d34a8148cf67545ce3a85686600010000c314003028141009c5228150401a09c23e14800d8ba24c744a9788a32007521442c82043000000000000008c908c5400000aac11190708a1d133537602071518797ff5c7f633d2ee17e9d92c6f0d5b080d5d6a264d90adecf4a2e14e5779779115c51648636f58ea13629e07049e93c3e76372a6b10760e2940af415b10b740136bf64f79775bc627da231401c5202bea1613318c8e4fc18ebd683fc1dfb46d7b6239d1a0b4b2e15953776b6ca50a1e625e732a2acf98a651c3e1436ac286b3912619d96226ad91e1853b7d5d8dbf795e9874016d04260ba0840c7e355b558456ef937961ba80dcad5cfb78653bb64440d4e1f7a49da4eaab12300789900213905b91bba0cfeb650b082e7f86ef1211e29774c22f7d24d8790975536a16d064d937158d85375be14ff2f74d55afdf658b16cda1bf941e3fadf08c2d939ad61b6900ce01d0cb8169950c7a155b1588bd494d6aa4e8226f93fd720c4a23db8f5f8a4e98d862e741508eea66bfeadd76d10c8a226305373a92e3f3602e8093945a7a3b5b65510b71b5ce387eae221ca9d09dc10ee63f27ca10a1c56c6df226198fcaf41bb8fd10edfa9d31e2673f3080c2c82ec3fcd481643905902aec1638ab43a385dd50f9356a0d28b890a791575f3a844027744fb3a0b56b25514217f7db448e6baa17a3fea538b24a0ba2e4d5002e9647a0c048f92f664046319db1a9c079f2efb550566b4544d65fefe505622fa29400cd4dcf4ffd3931c3522a30ee29e5c8c500deff338a111d923ca03117b603b07abd3ab084fe4a16fcb118160127dc70108bc73470a657d992f87bc6c53f14f0cdd001507e69b4261030129e4a690b20d8522b6299497010c9b4282870ab3ef94507250d8f8840a55d74ef5144c9c406f6ea0b498c2f60d56b4d2e00c2a7d8100c3cf20b94c98a3a142060e1cd7447a5e9f3326b429b0b24fa8671254642e41e53cfa7087c75ac54b808613918e72b8c0df46b874e74770223ec011304f1f88b7e39aa2b0570db454424b1c9fc4e286e8cb2cf3fa37fbbc804a53a74fc3807dd4e22bb0ffe06b1797c0ef24752e147603d0183a44172ce474a05b4ce2a4e928236792762912033bcafef5d17ef6aa903c306691e4f8639beb924e1e3a1fc003c818c260942a02cfb3a625191e4e3a170d0ddabaa410515b7b1531322052a8e1df312b03210c50fa7e7348072762f7f0a407a198bc5622d653cb7fabf3ed1cc1af681ab562c6332d039e27b483cbf2db6cdae610327d468089c167d62a23ce7616d180c1fc38a0757c2cba1bee10f4629f3dbee5afd58a375e71a7eea88eb1f9c066bde376471f535b4770e2568d0b41661597a697d5473bf2546cdfdf137e1dc2f7c9dacd0c3cfb03b18bde78ebec0d44db55876d1a298aef9765d61a36eb4da22771c25b0d287a0a58c823c69063cdf48d15a5a3cdd9f98fbe4639a310ea071e4b6f873a6ecd620d1dce99fa3c46816d256cf77d0f386e44f6e489a0810f71265555cc63133bff7f926f05aca00e73a22ffb1a33609c340c4482f880e7f9f1038d3ae695e95f01ba7b27c3075af5d721ea5abd526dac7d532124c9113b398fa014eefebb6d6bc017f2622c7adb62dce393e316297736326ed56af7ccb73e7ae54c4ed11ec57aab8867ca43f31204c40949748e0228cfdedc4fb00adb1cb72b8b548c999065fd1f7dd6d4e69bd68b5aeaa103dc00e49e57840914528f4907f6545558d2aa130a269cd686a266b2cbae53990c2464e56c16a030d562e58f351f8aba894090a197aeadcb8ae0e2c25ac089168d9c166ee20a4898ae007193a7f2a556d8a8491c45a83a9ecc30c89f485d0aa08d97151e9fd780db051d53314f38ba98b4905842eb3f84dd38b780dc68846c74b06d5dbee88b28e1290118b739be8ae39948e688b0a97111d4aa3249b5ae4207e345eee200b88027239097aa159d22987055eef9802e099795bec409342a53e010a13b9d13b02da31cb72c6d99b908972e7842ec56fd4f8969ffd761796e15b4f7d8a6430a6afd3d89a5090eabcc21be3d13fc6925f917dfa0a00f80df6845a26f4a59ed5e85db9c73ca21dfa10a8eafd3860201764505db700555310deb36407e62e8398c6e9b6ea3fefdb2679de1463737443a28b54ab685e546b4799b4ff26052f66a021a7bcb98570d6d825296bacbc19c0cbe067b0a5322095c1bfb44c6f39d2ecd5116c680b29e7ebc3e1e549cc192d649cd060d46453a207bf7269e9f31ca2b43728d9df6c581430f8c8b02dcbef056a325e050788f2d4d869d65aae75b8e9a16ae58e4d3246f95e56622e94f875e1b81b8293a7e5621ee12c831d50b8a47c9522ee559534074fe1ec20526459e0ef870ab0c83ee733dc1ac96337ad2c302ed488c737b76c7fc2c4feab1614263ec84d8146e66fc87adcce7205c4f5f27a935a8093a85eb63a37162a499a9a1ac5b0593a16e32a8ce7b64a1a7b8944f8a38a134176df83158e6bc8e995c43f7f1a0303d33844a721c84b6cad478d4c924b34808f03259691ecccc945ffd04282f558fcb3680c14e53c467764a8926f01d1710eab4f3168cc07b5a21dffbc51d77ccfffd039adf089ec6643cfe879e055cdf2855f7fc5baa53458bd2f5c8491b87d39d04a4005d36755b0d2d2d2ec71531bd5636cc62f77cfb47d445a52702895e68f7eafdcadb7bb351026bcd4790731e696fb04e20c0d43855ee94b526c9acfd2de00820fe0233b92808d643a19536dc9da5aa2cbac49f518e94b0dce5cd00923f2356ff592e1daa2d80005efa4b42db6098390525e00ed491a1ca6be0b4a34a73a67db575b69971acf4ea029f806d284b254eee1a1667f8f894976e4f9c8bde1e3e66bdb535de53df654e82dbaf5f9440087b2e0e5b3ab8002eaf2c0cd87ad5873913592edd0b7ead530098808eee82b5ab31b1e5b5464ae0a392bb4b25a1aa709e0a1939a1660182ac51db77c265b9e1fd00bfeaa3167a69fd24b6df3fa930740dccbdb6f621d4530ce457274c724aa2b04f98e68357f652e2e9c0276b23843923b35493acf5e657e7abbd34d5e93ca884fd5090b83d84189a2a54fff5949427c45e2d4411a0d60f1a951ee3172b06c4f580caddf7f0b43f93a16642637af092ad0a3adc40fd94065868379d1779a83ab879e87c2daa12805332eda58d002a55ea5900b2d6adea24279eaca09c1c566e70b6fb86760d4c8b8cfa767e55d792270f34f8105940d4adb3eef27cf51b01b9fd12d6d5eecb47e322aae59540e05ceee059c805e58b831605719dc33be8d7dfaf694aae6789177a5adf3fe6b828a794a74088111a2496c243ed8f5ad5e825cbb953f0f8a907b8a8c327a7f6fe7027e329a841f4997dbafbcf33a247ff5c2d512137a2b38d3b10ba1feaee2f4bc10f6b3f28f4d3bdb67470b524779a960840ef4d9b915ad812b1a92998f3f4be80aa1dfb24e0c37f9132805bc78da6c5249dba1c803fcd6fae914e635d84bbd2795594c5bbc39557b1d1d49a250e615838f69ed1d940e1956b19e577f2ede01960c46cf4139cafb238be7a3121f111af3fbcd38c4fc9375fa23a2bbc2205f4090452ea8f5108f45ce59edf26c3f96530f3c9e0ace48265f9f181888003bf9eaffeb1af003f608b7c931f4587770539c4945a51baf77d2bdf5a370b75895f5418ee398fc47dc6db1c894b8767c56eea029d379fc86a05d573de0f8b7fc929fe05939bf2712ad2b20ba7a86be4175df34dac143d03f22ebd2abf9a77e3e734ca18089d263fecc25e0a7c53355d401eedd3e2a5f41a5f7bf19401eca81bd4be87a7b18de2cb9efbd3dbe4200a5c66d70da94cbfe412fd51151673dd1789cdd0c276bc25c504863d69e5e84ef00d285e64cbc1702b57658c308d303c48e53e0ed98095e598bf09f5048a3e15b7dd3f8a74c18c4d9670f10a7bb9d238d98acb1910ab0f9a4d807b808dd3416d1e28eb3afc77dd481bc108d48065097bdc1357da3a16bf400170c40ca8d10e29dca13b994d5de3d747f21d89521419a9a6fcda272bb62dae8364302835d95fbdc622d3384d368fdcacd0ace4fa52e29080efa5ac9c3a71995305198d4d8f92a2714888a4f4414693abf9329cc68e1a863f8eac840e243b5d46f4ad26ed518541cc4f8c9d9d46f8a4b5453102eca1078e9881cbddbed6e989b131ef42c1ddebb266b1ebc4f26e9fb823581f6780f3366a13babc67fe689f1f1ec85d662a512ad03ad269d8054bbb29a8008568039eb56f9374d73c3c8ce55df70a3ff6d5b47decdf62ab1c76562e063577603cf3e86fb4543eef6cf44b513526e8d3d9cbdc2d844c072a4d874ad9930354865c04f8eeb869bfef858698eece4e4468fa795e3fea4977792e230c1e151343c95c70e299b73186f4ad7618cb15afc3777898f4f0a05aed1650e9867d13989efabaafc3db9b60b455bdb80e12677d0b97595380f8f561c0d0a12105baad79127ce2660de478dabc881a4e119312c02f2b2bfd22c33b7023db6c765844ebabeef9ab2536fbb41cd67aa332ae98abf0844c4f21f5ccb999596a951807638dbc9d7c50854ac90f7416c79c8d0d8693e05f23b027153f9bd4e1259dff4055104b53988f9a4d94f3dd5b46e92e69315df6af219c7848879efbe4f424461241881055a67fbc77eb5277ff64aaa39f9aa538839a9a413f044ebcf8b4928b1c66bb2fb062a5ee91d1925216a24fd081e9b37e6b861ab57893eabc36f78508dde82a91e6a80fbf7adaa1a45a44328eed12f7374858fd9476d75b48979db3ff1e4efe5360abcbb144e0a00baf19aea9842ed26e0b09322c26fab1cd60f17485716a47dd999d316add5327837de74f880be7588c03d4ef481fd9f9db4c6cfac340db643e1829afb5efa77eaaed05dc6093c4c245f98bbd843b9a9b8524490bd602fe638500a44a26fc324d917e1dd3f494a5674863ddd2a7d211a54358ebf23d3f76b98069985ec8281ffe1f7e9bfc3740fd9f561c676a14cf8e6525e9f138a8423113201340dc4e376a469357c92268dab8eceee08268718e6a4bb1bf629e32150a064826cb1b8561efd87af4c2613aa511ca942fa9a70e8314010f645db917b1345e649d90ba53647782b1484f14c6a6105019841fcfca8f632f8a63f3d34f5058e37727d968ca18177dc971be2ef72b4f3aad3b691327d0ec867a73d4415ab3d1ac278532070eb1bbdecb9b01e05a003c75cfd5b9b80155c79a0a4000c1540dc97ba30e0f56607163b5d0323d26e48488cf06c651f555a74dcad6a8f35385a5f330d2d946e1db7c605dd0f3981b42177d9e6f4ffe1c41dc535c87110f78ced320cfb9de5b87eb24eb7935376edfe000d5b8d86b2a153a4e7adaa01766708778433977d572a5814c78c27b464ec5b02c09c3be4651b172859ed218b6e3ec5f747c898c42d3a907e716b2ca166c40ed5398a98b2adaf745b6f05c677f68107e9866b53a403c79af9c662f9a651e4461b3f58f37a1aa047e82f6488596afb0bd9cf80b919007a8f00a0e9ca04883a44bcf427175c0c1497f878cf6c03e06d1bdfa7e60770301d1d57587fdfee848fcd94c89334d8f6d9e9b6113cfd82b2365994343e76b636c8dde5449797488ea84643327b91707ffb380337b7d93d78e0a58374912028b10a026b022d0d628f775746debdc6530585cf46c9b354558825db3b029c602ffd66975b710754dabf9a4e84ae475b234c97aca2f6047f8fb65b389cc2b36542636ace689120053fd440769e8577197a7ced36a9d64f5c3057ec7b6a0f6f4f2e5a419e509effee661e1dc557e80dc45ea3bec4ee78daa18f32d605adb18f31896289b3fa1318aacea8284061219b3f995b188a23b538dafc1aaf2b7ddd240aa2804c723a2f98fb4e4b8740ad4b4e2e25d99263df38739cce423f117291de8936e0d318fb5aa2ae4fbc239234ef3d9aac1eb99fa1126e61fbfbcc83ddd9e8151370875e394d839231c6224d7e24723f6d55b64a81a85c14fbbc4180bf4a2b6a5769c8eafe0858b3376ec58738e76866926d0523f267e54cff98e50cf8e9023367ed13ea7e06d413645a557193cdeaea6748a388509a9039eb3550238f7093faf9d84646ca507b1f6843e930bd27a19c97f22eaafc84ad0d2a47ce9ee981d14186a99885ca8f122e514c8158c0503b52b6426e1cd9182600b944390895ae4f029ca5f1e01ab7291be465122d007dc06d04923ea98791237a82825469d9a53e090a094b2113a255962afc29d464451a3d0ec8c0fe18f40eb5ab4772ff0b0e5a003829d967c7ddae7b31173d0567625fbd7ff137ac99986c13fc3aaa8704043d2f746f7bfa02401400612d01cb309c969ced44e08e4ae884f77d9b7b3a81ee1f947872563fe59a89c80fadb7288cb6c70ec6d6e8087e54eba7b96db621fa5eb5404dd3212ffa361b1dd93a068ccf1dc7d88cb9eaf6cfd5ca31dc52b808ab84d007c6e2c82ec0641c465e3672b798eae53effb9c43bdd139fca813af0133a140c434c2b9e2a52166dddb2cbb5ba02f1d27b2799b31a74a502e384cd1039deca53db48d738e81013ca131a397f8ba5af4929f7206bb47879412a64f917edbe9d393544382f1f9df6d7e70cef99b974e4c2e4a06b5677a6ec9446beb10359fa44f11cff62eab695d7c58221c1f290e0d8197e92349abbac210e81d7b2ce28287c021921182a92218a48deb54c0910d23b8c051ac18340286bc3261e89295456858fbe0151be9553c50af6c80711b9ef6f6b858fc00b648cc0809dcc2f8a6a1810ed0e77bb4cd4295a4ffcab08007f541a081eda211612b15b8cabd186f67154711e1e81bcd91dd5acfd59cb91625ca709c8d1932abf547d7ccca35079359deb3fcc1876cbff0588fd7ad186b9f7f42e728e038122904177a7b4172c128fcf440a2148edf943c986c73af934c680f61c4f902eb7c2be0ee774b53692d4934128e62e785c7c7e409ee80f2854803f7e6304e4fb2c5fa23eb571e516493603fc3df780eb2a1219a1ffe3b9547e8da9bb2b7f15116f807d10b87297d557b9358b32a6d7a649621098a12aedd7bccaec1862cc0b40ae85453a99dcba2a8e28c2e72f04e84225d2079609617b7352a81dd161ac30bbce53eda71c68c3add3dc8f5289e3d68ff45ba8331b9f6952792734847cdc89e78aac85c33c4f825d993fb08a61edccde0c961a9859ac49a9d2ce30b4dbb5c1fa1ee0a57e9c5ee090ad63e84024ddbcb753e3042b43d25baa30923913ed10b7821a5ce7df61a61c86ae62fd709df17e8ae57c409b6168a53cf7139cc01acb28d203022351f0c52d404d01d7fbd0462488988882f76a148ee1e40af5303eb5dba82008c963f9d5b245a44b36a1977a4ebeec97d40ac13aba61f3924333b46703c261e2b68c4160614bc1eeec3e38728833e7501a721f80fc0f4a067962a4692b7efb79a2348f7022527a66b43ad526506c20bc2ad652c1d766659b935cfa35d1eb4e03d11fabfc9c2ff95194bdf0f388d77d8b897b02a0859785ba9d58b01876398acbec0c6bc97411507b4d1e4a13701dff2bffe5346f5481870e64e830091572c5fb5299fe199638de805ad8ea54ecf76ed48300195d98fec4ce079f8996dbcf6f7cbceed1328a40b2c11798c7d3e567f2130ea122d5d0847287a12aa5239a52184828fb787422414c2c2bc3120cdce49e3bfb374374f76d3a9335a1cbc5e78f1766789d9d6f73fd6eb709b552e9c036cd8a3d942ee42110a30e52a135a5bade25f7882bbf85558cbcaf5fdf8e6b4a9f02f52e2b0d80869c673043825310318f4aa10f613875a29077cb46d38219669853677d2c0b2db5a77c7e75fc38d9335d48e40ef8f4e68ca04829979b3e2694d4c4eed89b02295a205487158a7aed134de569182bb35d476ea0d249d6ca535b5b38dc9471682bdce6090a690d09365940378059ef424d827d02bae0eae7f6d7b8dad333776056195b96568b2be859f60e40937066272d5869b3462f8edcaedb5f4e55693f65335db0a49250a98ef98e62889595db69bb02ed35023837667092d5da9de75b9254fb6e93a595e4679b9bdde7903052801e653b70cd07b0cd4195b863cd1f93004adcbf4e0c25e35a41bea8e00d58ca1297e1bb9458449288489414a8fcb4c8b1e8b6150b01a1f0233330817a2b03ac799b47d74a1e14c70355b53d06c768d58c0cd1dfc16f70929237a8db88a3a111661140b68dd22b31db967f6cf79b6168a6f5e51c641af28fa4df5e6e7fb91bc2e82d470378af9d1732b86e22a6efa9fe167f40543f54392ac44f61689d85684956c68ca103120976ed3da3c31d4c0069aa6ff2d238d8dcb5c83a9d1e7011ca4700629f443481930ecbb1feaef9a2405dbdabc97d06a53fcd517b6c5e0699d1f8c84464aebf8a98bfc510d98f7d3066c45f20debc0e71b045f25cffa06c9318921e209bafb74b504e787a650fef76c87a16b01d1eaaac6c5dd59f6c411c9a0eca79efbc3a1044064f4a61a82a9d9ac45a0d26fae34aba64fbe5678bad0fe79f6a265377a0e17127d7278fa669e6ab96b760ab069a1bd0b9d8f25ae0b56911b965a2b2dc94e263270c23cab1491ae5bff4d6e5756be18a16ebb2513aceb2da22f42b412e698caed3656d3aa5e99e7cb3755e7002e565ec237328721e6e5d33886126e282e5571fece43878aa234541900c0bccbc50923b553ee3465cfcf61c9bae174b28d15a031ed0e3295715463524c530d6657de9aacef5e2a18867223400ab8191d9e018c48dae08020a74de738402da885584507784b26d4b8331e6c2a6f475530cf90530e1c1829843063ba3c0909c6470a0c27a48de79ce620973382025c6d4a5e46939d5397617f6016a3a4a7f7d857343e46182d4e1c964ef78ab7d779f55026fe0ffb44bd7d801302752aad3e9afa2e98fa76273f19f870105d1d1805919d0e466d8d0a3eadbfac070f0fcc7ffbb53e1a13284788e3f8559908ec59cd54557eac8e10da48a8da839faa9ceacbd22ec4812a3edd6f46159ebd989736ed8933b80951bc107f2db6b318a316312b13e44d7475c8ab4e2599c7a2fca3aff3abfc31843e48bf8aa50cbde9fb40e19ed154bff13610f2304ae9353bb661c524b0872087bf4982d146abf505536cd5459a2eb4b355aa2e0376aa6c693bd09019e905210cfdcf80a4517a7e2dd280bcd3fed200b8cc78860518c76e92d52b2b44ff23e4c776526eed732883a7f6ececad67807ba86003b315d84564d4a11bee367d116c991895e7e9d92f4edbbd69165ecfd650ae005df96c14ad94fd4e09becd8d11f645d8dfe22b148b87aa45821994be16494847c4371f860d134ef895a5684a6e252d5a3bc2564b4a38630e82da65623c40f7251ee841570bab2874e304e12ea4ec13465e9a6e282e9878f84a22b1d1aa699f55ba46045b24950031034ab7a1971286ac4f480d2370329caf0d4aacb984aae8b808af0054ef4b1e1356b1c70a31eec394a9d5c6d492b84c5224f49d1e84ce16f4445ca2bab9c330ab1323d35915a8291559291966aa80f22b21e0eac4f0bd8af1a598800ddd1d53929907a9da808578920902398c0ab9a2a7e5d9f35c8933838dae542c6923702e0a311a0f83bc6da40a813127086382a65e3d602c7e216c0cab96bec9a5915f5da7488f833937c17c3d51ec301425b44b2eb58bbac2ec1eb746d049e719e8daea97ca348b32905b698b3f4b505799f95a1223b49c0294a934cedf53b7bfa65f13d261b76ac53ac1b09b7704dc530820f6c101da5208514b518742904e800e1ff89276656a1aabb257a562fb3e257725061444838e91c5b13f82d2551ab4f3fb8c6d4f022a6a60a845e9660048c6ed8b77842ed361d275891d82c910435f81e8caa653a43108ee2bddea5e7adc47be6522b2c327906c6ed0e28c2f370f3eea06bcdbb7873ab70f8a30317f8bf24d6ca0e848133b43790f1bd2d4d13b2d895e7cdb8a15d8a60c28cf1603066dbb9fe81c47dc96135ec35bd3eab6579f1190b60d8f324b90f6eb480d6e3fa543dbac2c008e9634119a6113166df4b6778f476b5ea8e1d22acf397171c74a8cbcad39e40bd841af1a292b308bebc3e55d5d12f92cdfc46d6a73b3cdb54aded6779ae2540cd4261a5869c8b0c67edbfb2b2c1428f72419c908d39ee6c1af9ac12e774dc3dc86c0ec84a26d948956aad2b8ca684539a158bb5a48bded92c225bc634352b6b9e1921e068eaf6f53b8f7bd6f6b7f600486fc266473f8bac553d2446e5ca091b3a150429b67ab211bc976e3255e1ef3cec91d9ef3f94e1cf46d1408e4a4f37cc56f69196a00b4d009b5da2e7bbe4d28c89b6adbf6abfd0d01bcf0f0ac1969055f4c627eb3874bc3ab2174d809171cc0b1c1ab981045d8a384c4062cdbe56d30b14218ce231c902c251b59c9d837530e68ef614b26e287e2603da889294485e425813608fa665cf62d0bb84dbe94a8f8cbfa067f741f39984a7935a678bf4f34890b9afb98a4202d8a6c1586aa9495e232deb389124e9ebdb1097b1a1e78f8b0ca959680c230b360da528768f09226c4e341bf9c42f237348250a34c4df772b52b42cadbcee17b4317c9e289199b99885f9a8b74d4575832600f80e7cd901fd2d3d783e8822f7b541e8f874380d52f8178cba9c44dea03b330ecb56dd30a4f29e43a9754ab006019a45fb69e0f912de0bee66ccffe67f450a1bfe075fe67f978b20d529ee289186729ce4909f70925972abd2911a666b90cba37b0bdc9f379a5332fc4e5e18942dae14aa63042eed8cf68acefec03de419e3a6d945bd5d0c339263cab3c1ee0eaebfbfbcc8b6d4192d83e6002d019675d1c4fe6bf1c74cf35e8143cd4bc4ec98e96621309ade2c764d8fe0338847254b93607d7b7dbf204ac6583bbf876b3419a2db5bd84cb40af785e51c5963a62d842b45f77e099ca1b7f5a61199318a0ae4425f415bf62ffce8a8cf93bc64d015dc4f596507c5b178abd60316b60bfd862caf41a1295251e1c82241274e7bdc46ec08989c3e34be45cadd6d2f1c3ed66716f089465f88bddd857f18caca1459d96793f87b6d67eff05f1f5a1fce983392ee0132982bb209a4084af2fe110a8ed1ca159e46a70fc00504451b832ab60069936b48469df358ee9877fc6d49b69127d747842fa894669c573a0fbd3b94a534f9e86d4fc7def2335078f3f83d45ff49dfd17c77916f59fea996e94f4c12bbea8f68c4c97505c20c18fc1b4f4cdaca7aa50f4d6786849070e4e0ced6539239330ca2c167778e3de2fcb9a4dd5e4fc57778110def92459ec1946bc1bdd200502a2c657b4f905b6846eba2bb3d89dbc1243ddf23d778b354a2ebd4648a54cf465990825b82b254224d2df08ce2aa735763ca4154dfac4d8f4c5e0f353800b901778f6538a65a7a0290ede2ca4da4386c35f304d5c3aff1ec293071a3a1ef1dd264961a4219be3511e5cdded3cbbc2170c45a00ab682e2fce4953a7994509013ca02dc5112227b5b6b17b20d8e02af0dcee5092776600c6a5f20ed514afe620374a285b93506a9355df02cf6848d0efde91b084824e5ce42ada2cb5e28e989f0b011aa9c5a1de0cfcb4d6db6f1bbc146c30e042704a02ee12d32a40b9c5b29948de532de1e3833c1378764a619633620c9fef569d8844624cb563a4a391dd032d5cecf2079c06fdb0781db1fc9727fa7090f6bc58767816258d3abb002c4fc112ec6c7f4287375d7602fc0f05c633642d4e7761e0cb7cb1492dc7c3589015d88ff3e4c826961cf1a81b5ac9eb72cdcc6fa82dd6a47af8f4383f09efc748cfee30a3df923028778a11b025a2bb59f090b1d4b01ee4075496e735445af214b853eac1addd701a291d0b52d609913962fa0ebb14e0bdd6ea8ad014514f6e0d2441841eb99343eeaf376e4247681a61379dd42696e59ea282c68928028c45e4e286a05656cac875a89846e26e898da4633027ea4be92c17c7024fee767738666f86563bf8d8cb648dcc8cb797ab3b4d3ad1ca403ac4c2ebf35d36df5ae72536334cee97f272353aa8f97c25e692778cf51fb983e414ec270b1b472b80ff12070cee45a67143d26486685e9b542e1b249461ca40eeb63beb6d8833bdf8ca442d77572fc02657e9f8a515f0e91b70090cd18f536347943ca31f95e9f8a69e1b7bbe9835b90020208c30971b3a1b3fcdbca8d8167fbee4307ddcbfd14501d559817ab5b84091dee7f43993887684af21c94dca072e52f37ea9bed1d97959b6f0b182ceb7711d63bfe2709f500aff8895d170209efa7dab3f6d84eb33156acee8de99b62bc43b0a1bd926659c194ef106f1d5ada377fd46299e0acd0570c65cae7bcc3cf3e71235e1014c91c639b2b448deef3089768d2fd2092307c8a5b9fd47cb609448176b11666cc01eba5300507b8c6817806e01a039e270a4cb2c1a2fd6edd6d08fde0fcf4927cd722903746c1c24319f9123727641fdefc392149eb8a439438e780d630464aa5c080a9741b2ad646607d90fc9dd2384704604e459586ceb6b7df968bd76d848863c400e9d69c2d786cd07c88c09c05d98caecc4e2a0217aa5935296d24d4873c900aa592db2a8144a67f7a061261f43cd3e6bb5356de626d02f64b4d7356623171abc16f5236efcbcb57f6b7d4db4e283d21cc937e505f5c77c90fea244f6965dffe7e50f7f1c9405133482ea04f623f24ea633e9bb559770d660c1f85c71854d4175ca854530aadfbc1386a57fbc0da35a4e9aaab9c2172b4e0329c677f68bc61a9df8f991fcf54e24c47df418c0d14843f00cd7cd818d2f8ad231424282fc24e0184be53fa5749da648e8bb1206e891a1164c48e2bbe2b51cf158c99a9eec91e70dd1dc9d0203fe5161c174ab8cf97f5d6e8dc6dfc2e29fdb20300d05f68587b01eeb1239ab8c0205fb47220f59f5ab79bee42828c4cc5772b38940e96dc13f727293df6e041704c2acb26189a368e2b2d87291ce83be7de15d39e256efa7ee7c8075979aa19fc228621a1b8d28e1a92a78a7eaac90db57296a605a753486e9203fb9ed8a104cc960bbb27d2e7ceface6c6cc196b0327deb6b291f8205e8ccd70ec28368bb7810fe97b50063e26a29c2e16bd6ecf6f60fdb14a14ac53d077dea54f324b86a7e60a3b28bb94941822aebbc2a09fbfef032cdc32e8b0378061f482e9450a7bbbcdadefaebc031ea2749d0c28131e37d876de56a1c8c75fc267e79871094c16cd6622db496c69e834b1b3106afcb3eeed58bcac2bdfb4fce3c22003a1450c92f6fc7249534ded2b3a051bae80a53a0856c2ddf5db48ad81dfb9027ab7b4846a4d07655d2efe17073f8e9afd7cfab545d434ec847d4e298e572b9e8b51c494d66cad0927bff8a2b10f132898de37ae37c0daaaa278194b73dbc38e829e6bd9d043409f8b1b6a122657ccef03be8c32a4ae68bdb77bd820e711212711e18f821ab3f8d97ba891c9339d4231fb6cc488e047fc2281a14368486c2025e14d6e89366be0f4367888c4caeb4f0539dae2d0320f08423aa9058f89a1e3e11232b8175d02026524a27f6edc7ca27af51aadc43c478adf5210cb3e3fa17c6ebb1d9aee1e84c920d6963f3baf5d6a13b01483000e08487c539304bccae5910364fec7f96b86145b9e5afc1cedd4e944b62de1f85955f4022ff8f3005c59f4a7254722ee0aa3c6be5d8619119365a19a358f25da01f04459e5c5852955566cccadb0de5e67828274087e8c48c1ff5235a92077720215c4424164a9e761efa8f532eca0ae5aeccd06cfe2ba44b509ec38823d8dbc0ce86d2c69cf2b073297fdb2786fca8d233aed1b812b7aea05365d364d0cf1782cf8575fa11091878e7316332cd847d899f578cc4c467aaf6b39c8393075dc84cc5cd2068f5062a04189fe72f2f4cd5921dd487db8bb83eadfbc3bae9675d17043d9ac3850dad196473f7474aa911984a98cd2fd1d18391ddfbd91234a7804a35ece2b68c2968a8ed1b27e935a0c8faa0e5ce966f9a683e4ed712fd77c443abb74179b8e9de80435f58346537cdb7a3582d9f3696a05620ee4418e220330a9201bce168fc30a0e285b6fdc9a8bf8d8a2fa1cdebe0fcb5e0734e4640137bc2f128eeb73913f5772af1e0538c214745c0c0d5d99b004880becc5dab4048cd54dc327af681b516f2bd6b790b62a8add66c6599dda8c31dc49b476c53df16e77987e3ce4f18b53d2856eb1ef56e4e04c8b1d4dd3623a5769ac0a3c312cf77418fe4a96fe95627041f9daccb2d21d848b1d0dee353ae2b5eb56239e6450c41b95913fcd2473e8c346bf5a2269a13a471c7a8daa950de7cf9c7d1b50195749a8a50e664ca8b072a97f2990d1ad0ee92a582e5a1efeb4f95aaa50125a8804a05001124db172dd82020ae9c3b6e95514a537fb26b8896c9eff00be0fc7b99973b91e045a48e080897e451ca5b0c537e9d0679f3ea102901e03127156659c4a1139c6e435255bb5f23eeab636908b312f86cf4cc4156b59f019222c4a29458d72f7df3f424635136e1f704a4f04fe4a9f592dcceb40938899163442d0704a9d051582b8694e3e3e1215691e4b38a664817f3c88d4e737e7bff722c484343a99563ae1bc5c2979b1e4b19e46d9233976f174c74cb247506c0de70f4980fb0fe35a12ca0cfd947e627a5fd5d01ac09f12415fd1fb62f7bbf68561a6d5fa4dd60b14b68df4b0993f0418ea8e6dc4bbf83cdea9940d0026b48074d0207cf74e3bae6066fb2231a61350e11c55f023a5b8b2ed80e483ead11e2d8776dde021aecf71b53df39859a94abcb8043989b90ba7809213b23bd63eb091372370c08a2cd01879f6838719548e0dd769f170e7fe6df0c7a6be66d10904b144e26a25b26934a6870dfeefaaf3fa91a6dee01b32729f8e2d0465e88bef6246f51621b61f956e08be080371c15363ad5496bf910f2925201c32fb5ac9ab1655ba8c9114e80f62a40343bd55bb46e4f6f649effff191836a9e0559d4f4eecc2b173497ad5443846656e2d55d57aabd3c3143fbd0d72434c93ed8f20c43b0a54ae1bb851c62fdbb640eda0266328bc2f63e563061c418f74a119e202fb4b31b5b59cffde822b1e0cf043b8dd8c009386873d842fe21addd910e8f605a3007de6517d0289254ad4d6f0dce9b1f20ebe6256769927fd1002ce14be4bfc727e6bcf567d56b9ce1fe7a2efdd836db936bdaaa4818ecc9d20a78eee4b0b4ce7a6a8e8f861cac57e19915e1d69b9845f0c876079e8651891aede979718a54ba88f1ec788cc14678c83cb9e2f07f02cac11e38b9b7b5f250e3feb42942ff72d501178132a285d809e3d19a9b07ad4a8a5e098921c66521232a887a89dde2128c040b5c331121a76249ab58ce9eed67260d0d4c257ae1beea749559e92f0a789d97460b8cf536c240b09387c810ab44313f04fac574ae4c3a656207e4e87996e7e7677b4bce391ad19c87de9a1b07ab391599464fa9a148070ef21f8023390bb48661fee530a44c2c58222737db5c1907a08c1fb7832b55f8e6df3ff88751b506de0d711e9160b5129c4566cd840f8ca32631a8e2774c0998562203503d28602132409e7282eafa10080277f43f633fa0786e3011ce50f67df7b2e3c6d19a676acccc1410b51ef7393ac17f17a2dde7f27987e81a2d0e983d8f36a0ced6774929394c56da86fcad1db96ec24ad5cb4fce3e421f0c3ed30b498f3c14d6ce8c95ca89ea791420e8d6060ab8066cfbf7d84b7f4c264ceaeb085ae1b1c2260578360585d8b39b3a2addd85d50a70d1308ef24abb44a2f6aa228f1e5cc2edb934e911e89b3603ee3b1b88e70ff5fabfa64909eadc54de82b0b8edb93f62840138ad756e4cdf10d5f38a0830870bf40cf90c3d984cdface6d6b6b5ee75040a8343e1b5ee73560b29befbf746dbfb67101001401a2937c83501b835cf33a07fbf96b3cdf8d2afac962790c9758687f2584056e0d022a147839a6beacb96a6c5f79d1328f9fcd5c6d2e44cf91c4ef60b5acf5e34f32501df8f4f08292a4f387b8d1eeebdc6f1fd60c9774ca257c4faaed2a34cdcf7fd2ce7778c45fbca7e57239fb5a400c66ae4b429768002ed4e66935e01eb4d8c5a971b1a1503db17b2608002c4763cc79cb218a1c4e95dc849712c535817016a986a73d08e9377aba930b76904e406fc7da9466c81d10f8721448acc5359330ca2d92440d2dee653a1c1d63dfad66aa022c1c657bd9aa44b8761580eeea625f92c1541d510ff60871aeadb8e34508d5309ac4a386e68cfcf8fc257d80788fa4f454a7655c4c1f8ddbc28bc6e43a33347af0d89e91e07ddb59d52085d639ce746bfd0bde218a88afefb935c03a2ae6891e5f2fbe41f8160b50b262150b4a56fb1db0aa627111e22854b6b4c2fd9980eb64fe61c9917ba9255a7a258e88b844851089d494f8b62b52a0cfd562133d882c18b22f0af9326a2d0fb96d9fbed83d338fe94628acba82f6f7ef6b81a220b8b77108d61419147972c32a84460456013d9362e51af331226716c6ea1f7b0549123d7e97fbb830e2c65d000a6dc16209e6e12872fefd8481da7a41bc4f8565aa0fb22cc97bb909f35442ed575c14ed4739c8d648af53d7b0d509b9e6dd479c088fa7527a52d1a942d65d15a5979345e059541cf090a6401d19aec7591e43c11157b61a72d9239c7728ea3aae1a79c7ea756bf91b7c3fa038da6446a928a7e1af420c98ad127e64dbf68e2fbd05c8b0beeda811d21029b15035be00b726407f3e2247c8726a02abeed13f1d96a24fe55dc265ba744923dac3a0cf246d78e93ea988285de221c00a94a1033919307fc7262d30ff1b7464627344a2e8cc49acf2e4b0648e3ea4d283220a9c711cf4492feb9128a05ef7c9be90e8aebbb2615115b34d207d1113524f1db8ff1a87f604034e816b0fb14b3fc19746a5e02908e796c0d25d220ea420797fe40b28199fa5504e55bfec03257d3b61c0c20ef65632c22f9602bdb70e81bb214702059328cd5726e44d541cb9ab33a6103fc8b8f90ee61eda02a83020264204578c086e7e9039cc3ea6f0873a687dc3467402d1651dd8e97b6a6faea8e42927a17a258e2fc3a15d1a781b53bf8764f5559c56b2ac2562005f87454b61624053b1d55cf06ac668f9bb351fdb2bb39ead03cb13e8fffa47ab762b34db759ba2eb06e6a8d78603b4b60078e8017e767d07dd7cc6a1d81a04ec28b915c2a72e68bb9c4d118f1bd03adeb6cdceb2627ec3929e47f9c9d7d4c61dce19ea857a87265544ae9ca5a45953cd57c64d53bfaa27ca6fc1ed2b0a0f3ba3f5037135c214f3413526bab73e440b02da9a43220e4e5dc77e54b68d559e2c733b2213588207a32df59342a6a5ce2aab9e5a0c2e3a89299f87462f71eb5cff8cf4bea624e5a4926ba28eba92b13319e211bc39808d7fb0a9a7846cc42ba61fed824b7dcce00f27d200a1711245a12c7f210989bc5dd29705055a1bc8bea9f3f9880aae6d4a22f9f41e0ce3ceae912ce2f5d657a6a0e402c57080334d84f02ed3627d0521bbde60208ecbdd044801e12a0ee0408e19fa18aa7f0aba5aa5a72d808211513706b1c4ecac2378c5d10bddf39c074ac0ce138bab40365539430a661a1657c22118ab7e693da630867a2823aef41242460713b727220fdf36850ece87c9c5d1a007ca2c72622407102b0cbf0baddb65af025d252f482304e0a307fa2199429655000874115d898d23831795fc6a29618ff538d8cb317f5b74a55e45e09400a2b21ff4f11a9d07b1a9fffb4dc38a04618e02f1a0e30570fc8aac769eefe60ca5ce2650067a8449ccfd62f263aba98bcbeb0199d5f28d91a8fea8657b95247a53e41c987136dfb4863b2403eda74c6f38da29d6c307fa93bde5bc22f46e984d7803637c52a479a8881028a104e92f72d71ed6821a5f853860829dd44d6a69100eabde4b53f6570ad68d40c3c996a8286438b596deec834383c00078590a9f69fb72319a5d5ecadcb5b2d825fe04305eba47d0a947a8e321509cb6845a7150d004781a08428d2c03a9d69f76a8b3bd1d7cc3de44c56cd462444021a015a3cde21ea1a357597e309485113b7a98f46f953fdfd12697f8caf0f7eb0021e902e6a2fb8d47a7503456848acd9f9e32405014ccf00e71196b35e76dfbe87c0467dd9f6769bd2725588c561b8ba430ce1957299170f3a460aac5a85de92ea3937799855c7fbae01a4ff633807e7e092dff097f53094d5762f628de4c1167ed7a017da502371fb64c7f0b901bdd666499030feda624b8e3e52d7ba0faa2732a82e08eb86af4cb2bf02f307772067086463850df7f36a2bb588c4efbd07063b290c84fe99101a2132212c51f802d03096f54a26f5af335ea6baf6b96b0a885b86801b6019016c63d88b9c808452a4389673b26bc4c1cff98b2a67eb434d39cb0de44d27d3ae28d797bdffda116468656dfd83f4ef785761a31cd72cad8133242480580815106553c08b4d13aaf0c830bc06c5e760697089e513a28b3640df8532d06f16346918eae8b4c7cda8e20a9d440926976991ddbfcae05920ed0d6760b7b56335ff21e6e848fde405a0707d6021bd026d45cf2741ce0a4f7f3b0c7b103d19e4ca2cf051ab45e7e063ef30eb6c867aec2c47d1f3db56430c6056264c2325a98d94a1093c53e5ab018fdb4234e238210f082276dcd3f88c0f06f5c7ff37861c2ca1b2788980daf24f6b88b1aa291ba654570982084d05fbf80830a89339b17be9d97cc0ac77a4f7f18557ca03e5112d4da26f3b3faaf6a417bf6503a429c387acc30a6b7330376e4a706fc0586fc5826d334a71a6d78d66669c7c9f29d38e1ea438061f2bdea40920c519b167d265c5e9db5cdfdcc35da7888ff8bf47358314cef4bad132fb85592bee06c4e0f079dc75d8bf2afa4e3b5dec40dc645ea0cdc089ef1f133c3818975accac0874fdde1651ae96d558800fc7b6aa1ba978bfd81ac7971fc3ea448f037bc9e6eb50c485c7f6c6e93747ead8b28113a839d7ba5dc6a33d8ca3b3bed0ebd63f7c32b336e6e248ba981dbc3c22d5ba59798e2f08847b4794947af7e47298c1e1dda6cb32f56f415faf9d9788b0d0dcaef5044fdea0ff46bd4e2500a2438d6793bb63d4d7aa540f9b79eedf3322e503f54013a3c8839241e48b296f0accf6be429def0a67fd5e914cf6018f3e3ee169f8df7a952d7e9c04356ad290f1d8bdc32061baa9e16b27aa2f8c8cdf6ac5b77964528c34dc083e12e59a2ce2008d32750fc90708ea666ca0a908741d5d95d9e48123d7f94e33e61b366bdcbb973566d516681e8d154493d5a3a8991bcd343d67eb5e394e323cfb420dc37fadd7746be4b25f18562ee1ce343efb7188164e179948ade5f38f3d9e460da5fbe224377923ebc9df61fd0284222800fce10d5ae0f65166086c45526ca3f629c39a65e44aa3168eb24f3d0b052e25439a694446142ed509381b3ade91c0562e00f562a05120f866961dc595980a0431bba701dac9196dafff28d631784028b4f34570c5466cf42b120cd1493dd5c958daf81e619bf050b63c2984c74fe1f0427029640440a99b2cc21e4660a3a385e29475ac11c48664978aa91ee18f1ce8b738879df5ec8aa27af22858c1bb4437e67f2234c08bb4c531a0d0da61e19284df41972264a94b0f48ec17f5cceb027ad64e8b746fa4b76fe66c658eb3a86ea14a7ca1755acc6049a1f3b0a8c23f92685c281f84c50037c33c03f55c409718c4c63002791821830df605c35ec16726b4a49c8602535ecb1a7c758fb532d4b10a0ae1e034fa186aa8535e7c7aef2b747c3fd81ad4c08c645bb6913e390ec1171606ac034424521c8058c2623bd0cfdd75bb139f3200bd3f2b803aefee820e18e397eab4c5b6f19ea66ffda2a37f353fc16cdf39968a9339102ee8c51086a6801a230e669f134b11e0321a6e1f0c6c0053fca3e36fe62a7d4576a0b8305e468a8bddb501aec6221eef028ecac92e7e95bfb58d1420518be7df3bed4275926e08d18e9b274c9611c5946bd0cd4c5000485ac2ef50e60e8131e067f1eb83728416a7b343d66d7e43b4ecf34d9b0406472650f68aebffce7441b9da67565f34cd8984b1aeb90bf5ee119130e174d33ba017d5a18f42479e6c12bfe7303642d35a21a27b4946464a76921f59d2ff1ccd975a6ddc5a19d71724e7c8392e0f7f39a265e296905d69e50394246d16dca5c25e727ac735e17d74d19c1f0c92ac04787af64a48e0cf876448f53e956521571892589f95564aaaa471a701979067d140ab0414b2ba33ffc6a674ce9c711ab8031bdece8da37747d9a9dfeba894714836ec515c3079a4ffc7b724ad2c21161db092ba108e5aa5e99e21b601ecff7e9e83f7fa91ce26e943a43154582a93bea407969bdff70b74687cf3b4b999fe093863ea93e9c3ebc627eaa36986170f536ccd6c8cccf6d16b6b50299339548055095e423eb1689925a347cad61161c22641bd7dbcff5486b51508fc0838810add923ca47d771225abebac2f60ec41cd6a2a436e6ffee8a3faaa71475e29bcda30679e5f849b9eede9a95d625bcc5a11f70e904276614f2ca6cc55b73fefdd1863f3723cc2932ed05f72da645ed3943404e0b23e71ce5a2e9c24dc37126c9f9669393534abf7ce90dbf1ac7ae05dae1078678ceba171459c6a7e5e17ba099d704346d33c89ef02be7b9442a1bcc81ade35cbe815d116afdc43913341b21568e8d676e13846191dd8ea4b0c6fef476f4c749b22c5a6ddcfc3eb73c19ed33e8d8f17cd92ac6d002c48f21f33acef7fadc8ab3c8fe13d45a8a6f978bdc471d3ea641bdb5d419e1005adec9acb6c300cf90370884d2d6e3f48096b20167cb6561133e501f5bd30a1930f6a0fb9543145c140bd99128aa517cc1f26fca9d1d414a892a4dc86d9350946b807d26ab76951413aaa961850b14ec9b5ecd1feeea4899f1ef4fcde3bb06102f9a4375508297c9c858c7a3a263d5a20ef9117d224a0e8df004d5e982d0f0e09e4d2b5995143004e8ec64dee13824eb6956168a94535155f8f145f5e744428833ac0edc321cbbea43d3d519b29809a9e54e78355314b7ba810519fdce1b15d7004f32ea3e2893a4cb6582baa75b234f64a1c7df5cf11b7eae13b49fdb77793ec97cec4dc28fe525e5452df54dc8dc61e9658e38ff575a49838c21f2d318eec829ada578c5fa42a5826be7139cf1af089ca86b17605cfd6397380d4448873b6421ceaaf6c2878120e7c5a8fa1544b558400d49ccd7d2a191ce89f280c66726bcbc9038099d40642532473002f3b0e912fa89a0c77fc3f628c66d6e1c84c61009d3e0d886a4fc544ef38a631adbf3b625b190a42ff5d0274716e5f624d0ccdb3239a18b3dbc6a387988e75d977a2b460e4f1c2d2c103096b1318714ad8e26934f24f4e85936f4fc20b06adb5de236067b6bb9f1f0d4330eec721f73d01c6375bda08244b9b52228e312c964dd8c172468c3024b8a562b76fb985ab2d0db2e13a4012377260d0a70aeab061d0c7012cfce3180e723e0257adb4e7bed9b8865d219bfd4b0432ff7bad2e47b23a6d84d48c4f9561257610d77a82299b11ccd34c77b653fa0a1d20fa5fd204bc9acc8c794a6c833c736e4e0b526b871a20b389c745b29d88e0fb12cc6495bf14723a8635476f1bfa47afc537d25be41976ff14e75233b12724d0996f7563a08c9f24ecc9613ce9a54171e6d54b04a8af9526fd4274d89cd8c9f503d32473690409eb486e3ae8c17cacce8604a577116f808ac9ee6e2a8a58f2923a932c424bae33131fe49e8dfcfa547d93ad9457130e220d3a2e8eb48eefeb20d87b613c9aa52769a3c3f0b91c0ba99f9c42ff5ac2d7596dbe6e32352a7a1a3bd0e0e46039c0ff9ee4b72a5b4f1aa4f8e9ea1e98b3e40c0261e7d23a6c2dcc51c3e324753f23696f507a2aeaef0d5807520ed168c9f0e4ab79a95c8a8b124e4f02931d7cb163ecdf0c63faec2c28da1cd0d8d5828a8311630a26e9b50fe72f13331daafbf821d0fd252c7d73c2b0d58fc296b524f2adc9339b96dc1bbe75c5130cb2fea6fa26e5e574568c121544a6c1f28c81938935a09f580133c8176a01868c44970e3a0e89db8c9ee5ad6a5a2982cd8b3e8b23fcd784de78ea91c147059aec9c97897c55ea1d673590228ec5ee5affc5fbdbb871b8d05317f5b62e7624ca29497c85fdf062c79245a74f4b6557d1f5b9e412e9afcd53506bf90c1cd52e78ba12f23808a4c993636b5b1a96d250cae8e25b043d00e0cc2f305eb7bcf506fac061e14f64a145ee9408a882a650195e42e0165380676b697762b44b31f5a2c816b7f114ec653b229015fbad43666831edbe4d32ef13bb8050d71651b4a2952a88e55502e879d6d2c77a9b557fe4acfb071e876f251938c34e6be046ea521ef177a69c88509b5ff862742f4c2babcc13ae724168f574824e4cd9c68cc0100c660dcb6a79a8e12fc66a2971e5d5f09307c929eb0a61935745e136b398a0bad31cdfba09785c1085c72ca51e8955a00536c0de75bb0234c977bcc2644e04094f270b3abbd46ac8929b72627820d9aa90b2d8890f3e18a15741a58bd1f0f691cbca5f9c3a54c8bdbb1c9a955ec3cd8f75bd7d7d1bcf8a88828c36d54c1ff0d0959876bb943e58297ce5d786aeaad569ae11c060d317445bc6f72171c1fc38642c47bb4955f377d47233e10900524d5a2fdcb457127f83ac3ecea3944a95798c5ff3ff78eae1f3dd38945fbc755c55a25843fbb11154a92ad2c8d36ff0f0baf48818a6f41ab90ad20aeda23ef43850fcc316104d9ae610f371c55ab5a5a489b8702ed0f6896a11b460122a331bf7e653a9861a5e9f4390ade4a7116dea460ee80ff0d9554750a3a4e035785d52d975583d0be05bf0f1393c75e689cf097d4f2df94b3898a493760a594c6347ee2705033c101d5c7a4e92cde054be932afb3dc86abfcd3f208ddaa59ca87cacd2c5a8682a45501b5870dc9c8b88d6e252e9819e7f94f41b465fff2ccec62af37d80d7dd5dd88113bcc850f5a63393a1c0c0cec2b4e406b71da6082daeb71c0ea515f87bb97f7367869dcd7ed69b2040e7406d3661acccd4fd59643d69079460ef2e1fdfc4f80b883a280acf4ec021c7754d4faeded1357491185f7846ae027d04ab8ae0fa104669b6ea36699b3e864fcc3f44175a4a0fd5a4f36a78dfccd42b06b4609f2b44897ca019d7b688852d8528a64ce37c448840ec4b034cf0334db42fdd0d603830117ff59da5c643a5816c4822c43513b59bb57794d6f78ef4982dc08a71448f4351c7a8c3642d1b17349fd185b1e8cad08a7a8d4c73b44d93f48112886a106f50f1d11c4c452472a94264eae702b6ea82fd8820246586c202839e8e68277608e9f00957b53921f8dc8365fdf677c7706cb91cd852f1714ff6c267cb8b6f740409dfe0e42c54ef2764053dbb582a4438bdf14c469efac12a308b75fbdeb6331bc5a8b712ac91db88770648b7521d37cac20cb431d2246520c18c3ce80e34c33144628ab636891357655e9549bd8b2e43afaab2d2d8939fd24cbefc924625a1ffe17ce0a31a91526bb4f6624a6f4fc3983319b80b66566cbe494c09efa90b5d734bb5b203e7cb5a9abb4b261947e8c26b790d083a8b9324f1e9eb53a1641b956ec021ef053846141a4ff744ea42f3947678fe71a1575ed441f437fad287a2329a93a1848691a02430f3442365806a652d2fea753cd50f7d9657e5d39df6e5b0638bd0fdcac0f8d6d8acac4066ca114dfdf425aab0916565d1194e5f817e196100dde8197e0d8000015b69e832ea74c348456b488da720892ca56e8e17586b2eadf9c8e359bc1ec38c562969ec1434320caf5ddfd5a89c19fb1bca04f646637cfbe9f1193a61f55fc186ace4f517a201d19e4a19cb3a6c7be9a433c6499b39b0b3cce4b4bb01d42bdda3da3c54554274a87839f326b5de748fe75b4d8a00d2349266ce1829cd39de9158214a7caa0fed012c69875ad4986d9e54fc10aa85b6423ae41757a518a58d3c734616b3949d150a349acbe873e69316a96da9473c73ec9074ae93f63722a859b3229b8cc8ed23ee0cf921442dcbe35e496d25407da3a67d82171d871e56327fa0526cadc07b4a002b65b435b57165aaba6d5a1a9283b617fccda346e8ba9a3f16d94527913c4979b0772a87ddec7312d5cbc8fa30f4d12266dfd8e47ab86875f290564f0ec662b5a3353ca2ce2883c375e09319c232acd38e049052d0b4235c2bed28b6bc1132b0dc4422f6196bbb33b804c2df071c7f1b9ee536f453521993cb8cfb2b10a8f91c9ad206f543bd974a2555e9055e0f066fef0fb508e47f6a30b3978c2d626616a1263643c9adb4913c64bd7d6c873a01a2942f853fdc08254700af1597a19ab4dd4a259bb27ff47854f19cadb446874c66c4bfb02f33c37836fba01187baf4f4b0fba42b274c9f21fbf73718ed359a1d762b592f338553513bb5bd9b85595de6f41e6930fdde50855b1eb0beb430932bde671e0fb8ebee4dfa4e1503968e36e3eab379ce3666287c1334497f2bebf37f9178943903705c7466ebcaf6a98ca6005ab7dca2c0d824f13e443371fa3e9bc9b4db381601a1418bee21bd6c2f88849f0d6705c4f6f7743cc9826efb204d4768eb9f0b47b96ee36e2802108c40240cdfe9743539ad8bf8eeeaf696d82587c0a837e39394c7f14a307cb9fd547758221faa36d2bc26f4746b0b7e8e365c428c06b05d1ef404eb5e95a137538a37545c9b55c99eb88f6f333826f4f00563206b440ad8262ee01a589f75117a86469abd54288e78981ca33e9dfd7c40daf178789ba4230a9f321390b05a8e2094f745f8d6883e213a3a3d847ae6eca51b3b466f1f844b485f173d821e9dbd07f506eb1554f146f513a2d3d58ba0b768af1d164748bf0e1dc15ec47a19511c237d82f485f56a9d3c043d9d74daf51aeb8dc2ee8af5dc4ce8cb629be18dbf62020f3ec2b6b918eea3daaa4956f7246c4a5ac0c2af99f183cd92f42bcae90012642da73ca90f4de0c11fa2b46662f4f9be2da4783468646659cf468c0da7270db9313a0065344e29b14ab8d9a1d229506276b398467ff95baf53dfcf3d692ec56fdf5152afc0015652530b46f238d4991567de65003ec40b778fd98f4646f2cae69d77876a29044b36abfc0b1a6a1f9c37f4d0764d80308f9a7cb0df48acdf110db8f80282aaec45d2515ffa367ac0784300b8122f20044e6ba22060f9d36459ce177fcfac0787ca939dd9ad712e4371dd7028e3712401cc857df38270846ec9ae5a80298ec11246f64cba1b4ab3d7119e1526308ae244ee23c3e7bd3ee69d048de83211c80e3b3894ab5c1ac5836a01401d7d0f0274c69a22c80d610f6ac7fff98bf4c2aec5e6623aa00f51669c96af109afdc33202168870bcfce517dd48e6928e827d30e5e8bb4e0d3c1bb5f9595641a99b2b62fc86c02d9d1b427ac3c67f377ce80fd0ed11c0bc25606c14904e2fe0ed0ce8018d42a086841b234c45cc0f0266a77b71a8b25638959d7cccc0f3e9d63d9844a60c3360ffba00ebddeb15201b902dfeb5fa95c02c505a933c6dbe1024726f66fc70cb78a56b99d77111cc18bbf2320402fa74d1076af07047b4833e170321ac9df53d541a82e5daa450038a753e7c583058d6a603f1702e1a94a6d60493d56531dccdb3a06957b2adfb678f114312388cdcba6b9a59de1987710f62f71d0b63de6743d05b7cf932f07932bc0a4ea61482b5bef96a56b668df87352addaa7c6bbbad4929654a29c99307df07af07fd599c01dd9f9db33e24bf78875f2cf28e4faba08fa7a04e6af7b1a2064d1dbb6a6a06b49b385dcf549bbaf57aec8bd2c85e2acb7b6f7fe5c4b6348176ae721e3ef5674fd8096a04752cd5058f46074d5c70c5c794ca354f547620d4da4d9d87a2b476ee82caaf8252282fcc731c39a06f13026464c6b3f427ccb154a27395afe2e62bd56ba97c05e4013140d0ce55f46578f0c477ebe68c2f3752ed2dfe7359a99df75476d86e2f8dbac3bc92c97f333130973da9347dd298c7909674e8c10cda51d00f340a97b6318df562e110c5aaf26b3668200d170cb68aab35a5c502b26283eed6b5cb59efd56a756bf55cadca3fa488bb7cf0159024352e48e1513c06d2a13896d0feac09732ae678e7f5607e87b591ae54a3c905f35e3e92d4abbe0d86487cf845e2c37f0f372350de5604bedc58465a951f490a49ca552e36f4a55eca97783df8678ab9717ce7f5e04da7666707a76998a01d57391e1e638e42dcf0537ad910854de5d7c0d462b03cd69a848841bbf7b2815f95df86087f37ddc4f7a7a47fb061109fe2f805feb5a1dd8b7068f73eb81bfafc02ffcc0eb0f2e0b5339069a65f184058f224c7c6c66627f5de0afabab7a9c9a84308faea63c01d48cb870f287c2a7f0cd98b89e1f9203d2dcd94625a6251c34151a5f2f3a0a41917d669895fe0e714d08e93423b4a9d68a48e7bcbccf1d05853a801144f6c8022899009bc1ee7f133dd1d234f7e3107e317f833d1107487addd1409413b7e31eccdd7835fdcc3a7adbc2227b4f318f33ce669944f7934fc5754a63c1bab1dbf9a255202ed1eeb55f9813c00e64cb13bbd5afd547ed2ee6c93286f1405ed58c5c3a7d6aa98637ec22a768277679b30c72a5ef10bfc2d46d06e778c40bb5ead1ab539dd2bca4ab8c9e6d0c5a91dab769e0c41bb595955dbc4ce45760325babcfbbdf7ef8d2ff0cf14d0dda690ee6228c5b4408176a5520ce7e30918c72386511494f3c1834fafa68b61492e704fd0ae548aa124971a36a59f1e9e90a2f21b995accdec0de7abb777bbb574e39e594b2576e5a0f366cd06e8a6840bbb9391e85ec26884f3974f10b2ff083d2a0ddc6444cd0c7b1d9d84fb7b1d893cabf59f8f4aa3496ce92493568c73fbb3fccf1c65e0fe657a37cb7ee36d6b08d75ca376f4926d06e3e874f946a92fc8c0b3eb3fcef1c73ac8309dafdeb391d2afa6a69926040bb9f43a0dd47e181b9203dbcee7efdefc1071f7caf7900418b96a03af0e091297de2a6f2937440716a6f621cc2071fd498e3b8756b5375e8e1b9c1431c02ed2616463dffd4660fb24dbd19d10e9dabe346ed5667f2a9639d6e71d2a8fc5bc4d4623689929010949f6d6ab73a2698fdc7d281d5f7bc838497109695ca3f8167853f884ff9d794680b19c22ff47b19b47b7b4fc0c08dca3098932545e5d74a313c4850facd38293dbfc01f9750df607ac3c1022e4b0781f2b3ba094bc525272a7f4c1194a038c5ff60b59bb9599b7e2f60a9ee243f9507ae21f00ac22104cb0d7319ef60a9af0a09a3099fde146cb48460c9e1134cffd6de8460c9a9cb35f4d020d605aef1400d174b183a498234110e1f754359e6f22d0a82e35b14a4e54190757d999b877e9ab6863698ecb94a80ebcb672fa6c71ce9b327a20189122b1f9c908414285980917a8fe6e5a789b4bd9842a68e871aea8c54978d64ca41ab302d8f63a35b7b8c2d1b75c27c5cf62ffbe54164f2ce7aa8f31f973d8b20e035f4998cdef3b2d195bd998efbb30f3841414d0a0ac75cfb0746d0d58909e0bf1fe01b4162f2872620b22722b2c17f26dfd6d41db1a9fb1e4867ab41222f157f4062c3dac9c1b949810f36292090a4ba7d7e1e957710b1bb6a140edbdcde57c0f7cd278cdacf7da5f6efb69d51fbd7255a02e5676e82a0d037d99546060219e0f3cbe032f8723f1f75482a92dd0c6441c514cc5ad0fdc7cc6cf2165115a654e8fe4ed9ee963127afee96df3de511e2c7678653b614e0c65db4a4b474778ba65065ef63cbb1dab11555de3af67a888cd03109c3c95ebff75e47812e0b5afadf4ca7bd4691d879a3d10dfa243077b0cfe7d596ca1b0eefbbe7b32e1564efdf4c1772d57dd58fafba4babecebf1ef9dffedb3c4b1a1ef3b89b32117fbc097e04c70227815180443253008180454022a814a9421c333c7d5d4cccc2c919e935216cdc0a4daadc7c4307f493443cbe0a2197cc80d0562061844860aca33685a14cdd00271406344325450fe15c9d021a93cc37c1334da0ad1c8625af0040eb1fab66784d61339ad276e6290e8eef676effd154a0f80eef66e67dabdd116ef39656bbe8f7bdf752f6b3edbdd12890c70c10d4138ea0abbfbbded0e97ea401df6ec612e8c1182017f2023dc54842c80602c4e73f3e0fd90a6998702c2a3028961952404c90932994c1b70e928f99056971044820959ca9da6c752427628646fffd5a8f80b7fbf93af0a4d1d334dd96a548eac1dcba14e1eccb763b121e83e73c316d07db8cffd693efcaf61306e431871f0a619defbac1f6ebb1d6547d8deeddd9ef1ced70dd1c89efb3fdf2afc855033a37d3433e82eec3b08a1d6ff43f7bee359256493d765e62415e88971eb167c29dc7d1b62e1efee6e0d3df01908e9ea56065eab5b395a6439fc3a4d86b65277f06aca5a6b1873bc92a757f2e050e67edd28e984e4f1c07b2cca71254c2811680c96803bb42341264e044e064102544a1797cb8b39f89d8beb8b1d46b185612bfb2451f9178e62a6d1cf0cb0ba40a19d8bcbc5e56265077f9633ca69d4a6e00613ffa5e0234971dd46b1519617c221448c283fa31814b4ebda3e504aac322cba76864c2053ffcc177ffbbc6ef8b46eac9ba04dac8de81d886d7e3016e616860ee31960db88368dfa99995661472885720ee4a8c43f835468bfb6618da56ef758a9fb56f8d4ff824da1fb5cb757f55796c3c6ce12dd6945f64eb04a02193390e20220aea4caa045c0201bc01537a8fc2151107677cf828a1ff0e025860a585270323c87fb1139d5ddddf721a1f25f713de9b902a705761f2c7aacc04100aaff1405713fe3082ba8feee685491450cd53f8a82f8a4231628f1ae04e9571541542baae020083789eda8fe1a1543547f92536146f529aab72841bba839e674d7dcdd9df807bcae6c95a900a1720685eccd740460d549854e79a220d9432a704a77f65ab60e77178642bfef85a0667a50db0aa9d0d1121a35c982a11f2da113141ac1464b68ccb0d0ce85b5f96c69f00edd7e5ab011653975663b7a76bc989b3b60a325d4474ba8ac904a0b2b6801874fb2ce1656251bd4b9449d1d0e1d563c140b730b0a469d9b0e33ea7c9a030a7ad0773a5a2de0e868356ac76bb71c9069aec8c99bbfe3b5a3276bd59d3a5a8f66febe74bd1f38eabeb4f2e4eba15ec2f8e4c3275e1d543cd4e6b3f920a1ced744417647c6aaf03da751f1a19456e44bc25c589b1b3dac6a68cba0f0817428f4d0b4fd3017da5ab0616e3e109edf2227b469e6cb1dd06efba9f3b79fcd0d5885ffb27ae1791db1f74354e1ebc8c2a77df83a7e54b0e113578844cb12b23ed48ed7a3990f5fbabe65e7fd78a910ea68c92e1eaa059c1d63d4f9bc84769b4f9d9f8982403806ed5c58921503c4e6339a23589d3b76bc5c5875b2b06a9a9814d06e14836350f8a1ef58805100fefe0f68378ad5f9239fd0cf1f61e153f63347025c7554616eea6831373fd3d18ab96901a75db2ea7cee660116270bb0a699bf1d0bb03a77bcea04fd9ca04d47ab69e61781763a5a75b68053e7bf99b97d80002c1578269db4a5f5c50a3426ab518b0947643570895a6f1011da81a5767c348a33046806b08c0546cc2572424c8c904c62a02747c4d70c021070091e39a5083a29266ca66c919a41ce9433703855031d9fa20611db248d2659e8143788a0a0140d262d5d89914a31af29e47841162f9f2c1400f5b15e5390a05f1feb65832f280bf5b15e4484904057a88fb545133420b608438c2db888b245145911b68802842d565ba866381e5a7c2125092db88842b6a4abf022e2f7c38f4aa4b1dfac76a6e9226a2d250b9f3ab65e0cc10df803ead9038572ea6b0105ecd18737f9d4930cda3f79b7d93a06d8020a9b943606e7ae1d2be44a89336af77a9ab70a17a1fa3e7b0ff6d0af45c0a0421b23c078474a129a8d1455730c0b2c2c0c311a897b3e65500a99b7bc417b58b091928415df79895852964041890a5c4aab588f13342974a630ebfbeee62fc548b1a9ef85146114c75853ec3c1d30550d4d4184dabd2acd93f45a892654112c0e91c97f33357bdb72ec3ccd23de60e6bfca5f19470ea8f3f86a6406edb83aa70b39f056b3f960ae5d60aea594353e78301785b97ee3bdf3306f2e57cec3f1e0779f524a29a594529aa6d460b8a01dc7cd8eab9dedf3ddca26ff276a297f72fcdb2093ff34c16727f157c4eaceaac85ea3d078551ebabed76361004096412a6baca1513a7d6a54445a833edd96fd1815c8308363f466f7cfa1c46ef20a376d81f4131875233728b035530887eefa56e6bc839f43a9c620303e9c1608e1f1761aeb3c5df39e1bf35f22954831d335b799e1b85feeb4a5db319ee5d20b0db22c09ccccfc4a70865328ce4f127e3aea9ac769a4d168de1b64fd6f26dbe853a8d3da5ae611085a042c541e58a8fee00a1e81ae1ad6342d57edff5e6d198539963c9b5cc16866d36f64598402ffd8c80b6384fc4ed1e119540a74618cd0fbc16d369830091299b0584c82ac562c1693203b3b3f3f4c8244263e3e3f3f9149b75aaf471559f66228186b64c992250ba4c2466422cb1ab423c12c900ab7445c222ec12c568b7cb5dad98935a05de7d48d35d8ca3bbce3e3b3ab5dfdfcb0b63e51905803dacd39374aa142f7b3163885eedc4a1a937c86adbcd0876cffcd74315d69b52f91157ef1293ea945724da13c6283ca2ccc398b39978239a72d16f3432b684759b4c562938cedd05eaf85817d20b93ab7814788c59ac63fe6546827332bccf9abfaf30eed322b357331275f734a1773a0da915c304e422fbf3fe32a6015928bf482f9547f29d215242cbca3434839249da6f16fd314424ef5d75e6e3379a0bd5c8ddad48a6ae897920d3a7a83ae67b185827619abfa67ac46edfb67adf763be7f36e5fd70354aba32168575e6537d8dd6fbc1594a69682f528bd4621aff4ed37a18255d4de33f354a8a31d121288914abfe35fbc7f129ab51d9460a6daced35cddbba12a9c5a7aefea42a7c925698e3ea58aabf483dd5ff3baabddadfd398a4169f96d01d7c0727b5a48b397f516c456a412a28cfebe1df2dca8a55a7aca6f1672c286555872d54ffb95597ae399b9b5ddd1aa442a7b86bb045e1670fbe651fcd7fa9ec797cef813e9aba1c1c648a0f84a911f4bb926a8b8e7445f527b5f8242bc955bd93b5d35ed51f4aa12f6e4ee4ffebe1dd9154a50794e4da48ad118cee77a4568db1d9e12467ead09d92ea571c4fbfd784519f528cb3f1b133557455e27956cba5f289fdd8a81847c5392ad66197abc60757f35ce969a97102fb4e54537dac2f74bec0a92dd41c9f1c1e7ce1535d7c7aac2f6075bfad70c316cbee505657ca700819a3e30156fef75f3b5e6d05fcf9a310283fe1136f221ddae540aa1a733b57c8a1bcaa47b3bf8af1b0ea3ac171e5bcea2eccc9ebb1cf38b45b27759fb71dbc3a793f5e7502df4dbf3a70632ba6adabb33bcbae0ef28040711ad59bb3dfacfed98e5d6eb8dc256fb2d0bf996e078c0afaf28451373fb44c610a539842aa41bfffa2e2d3dc3427fdd91341f8314a19e37c1641e0915141db07e2bf9a854c46de13624086cd0c3b6a4b8b0cea220292f2bb179548b4c19f6f64a7e6d01f80bfd5f46ac8044a82c23615619afd3904c715946bf7a2da22cc0d616ebf08a39c3544abb1a5a5a7ae8be69340b09514031020ccadd6455a5c5c5e5a4ca26fad76f693b9111211c1400e18a0966c6a900aed9657113f02d57951bdac5e785e9c90d94fd3ec673f2dad9696740208bf9a1acae3fd584a326dc561ea64ed5a5a2f3aa8fb2fa64e85e7c28beafd20f27aace62e84544063606e33d1db18b8e103204c8d5001c707c7bfa85e56ef47143ef1a8c6b4e87e4b8b54da2816b4a32d2f4dda15b451a2df2f356af4fbcf27aefbce6a6951a9235fcaaf69d4e8e58a6880912f7a24a9185b5ad248b6468c959a81e50661c4a0f1e10f7c982f687ce82c91c947265f35cdbea8ba179e4e851c4e0dc901ed6a62e093f6d9efbe7516e5dad5d4d48ab4cfe65c50abc5c5a7d762a56e47e1a222156c9a86b68c44b465248aa28a8bb97dda0245b46524da2accb1a4606e69106120f4bec114f117bd6833e25450f8ddab2dadd7d282b942b9aa60c3dcbed48baa692414daf98baae5b7b49f8de67423d057bb1795efeb91c92694da1efb2418687749acba2d124fdd7f51edbfacf65f78f6c555f7e555f70556f7c5a7ee4baceecb4f5d524e5d924e5dd24e5d92aa23ad1af502daba9f5b576ac59656dd777f291c47a0bfbc75f445b503e64816058c04a28091b0248018d99be91cf6840f9460c663297cd4fd75bdea7e5ff131e912e873978d8643caa91db3eee2fcb5d161734913253b4d94285192c40b1d2f947891c48b245e24f1a208f88617395e24f1a2082f8aa8bb53fdb398167d9d4bd66e2c3f4295ac46f1fbcb967445f7972b19c5e3c7f8358dea07c2508a4bc97a42b276d80ad49c5336ac69de472980d018b1c8bdb5ecb5f78070c76eba8f99ee104846d8308310ce198aa0162c733e098a21add43493364dc3b7dcb0a76f1474df67d3341569efa1e69cb25f4de36a19c1285535ca6ea88162cfdf733a7ab159c852c682ca70f9ee72b28c2d307fcfa1f7fcce379f7273549cef4179d3924f4edfa0fbdabacb1fe8fe9482b77b731b1a19eb1a195d72777708dddddddddd2174777787d0b9ddbd8371e6e08442e5be475974bf9ffb7bef69cc65dedbf45941103ea13ec0c571832cf471964ade9a08e49082b28d4d8c5a9a68a14d501c10eee3dc2b0e7723ee2e2e2ffee2aa29a8a88b8e6ec2e525870a0e61136f22cba14385f54745415cd52a1f540e9bc001055c025442193cd9a1d6a050e8a12c953ad340f46b2aaf31ab883142178de6e8b5c86de153e4c7c13741ed4a714037e2dd7a3fe0770d0ecd5557d4ae5ae32a1c1a64c3c5e1ac3073d13a05b405478e866b50174d074756411ad0fd1ac80405e578597468300bed78bc9fbaa2fda9aa56d9d0e50199a01b9a3bb06911d99bd9979aae69ca78a17baa9d9da0410f172c4aaa8fd5232594a52707da0f3d31f0e931024b8f4da602aac219585c89a28b29a6e8224a28085d345183cefa585d28894217484ce1e28dda3d5d71d1c610b88871e133c3f1785fec951f27accfa6e1c3dd69546e18fb87b650a8613cb7e686bd3628fbbe22f368b766c9ddcc86433fa19fd660087dc7f5bdbae3fc0cb4030fb3f2ebe11fea2321d3be1eee737d6ecc4eabf0eb016136711fa3a072c3ef1123f1ce80504aa245165a6821a5092d8a30b58892fd8c1636888d842554a9a204d593ea9fa998f3385aa26acf56aa46c956abba2f4109b49bb559baca88ff22775fb97bd97a01ede4abf57a358dbfbf74ad13100d480526014e9981557f39b965549d29a7ba0cabfacba8649c905955dfdd35c93c61ce65a25497e1915171ed42312ab4cbf10385cae4342a874f0e1f99462309b49bf5b9df7b54b2f83059167a19159f60f59779a2a4facbbc64b0306a8188c944d1a288ea32395254af9dccaa555dc6555da6a7ba4c28ca34e15397c32767a7c90e9fba15583249f89400176a27a3a4ba043ccb110b59b135c6df21d3a2316e397cba1c3ea12d472c8d1c3239a80ea9a08f85c5aa8e72fc54ff6d83ce97dfe5f0a9be53dd1f640a6509fdc82d144b827632aa1558a1d8ce0a2e3ad5fbb502abbe1f3c5a42413480522c237c6c7a28d634ee04ed6454d5bf0bc5aabf8c6a0616454dfab32554abd9f23ed2a82b01a8b6d8b46857825f82a526b5618b4da364aa7b04a3de2eaeaebb500a15da4957296be236bbdb62235d2d36d2552ac11612b1aafd3032c8ba0faaa21d950cba4347b2623c5a42331a40a94ca7697ae453db65c54458c1b5cbbbdba2ddddb7bb6f57db7d2ff46fd7f458342115aaedeebedd7dabed5431375fafaeefa5ea6d9d7c52e7ec97b68db08c602358bf74e0e8c071e1e9d708e6c2e3c293e5b8f06439738ee6afe0ca8e8051e9df875368bf4f4c8b76a32c6714e3937fdc76f0ca3beafb111bb41bc55cac48c11ccb168b39684574befdb94f5dead6f80032a5ee3f40c8048ab00d7cc33e0e7c9a755f8724759f073e65757f6f16a70723675c51e5bbfc280a22675c408567b0e084aa308b0adf0901cea7177c769a9f28c83a1319dc8dbdb12af4e15354c8bd1ef0555706681802df02ef141ffe05de691fc2312a8c91e6d1c08790e35e0fc855e872d73aabe4cbaaf4b9937103550abeb842882adcc791c0b952da6dcdb852190095d98c1fae650666ac68aabba00c20d402542fc38cea53aad3a0f71fcc8deaeffe53a3a452cccff049c48325860fd583a8fe3e6200f20021131832c611d5bf88bf0d1ab88108d5bf037c0a557f1c72d0a155fd79e093a87a1859547f237ce26183841b3ec9e08ca18222f8d4394354ff4db23aab844f6f678c58133e3d2b2a2c523ce1d3eb62c5a4fa6f143e3d2ad51f8b8c33aaff3ac1a7e70ae2ac28449c638493f9960a00a645e5d00f596cce4c5bfc187fb7e84c6a7c8e1f71e8c67f09cdd7f24efcb13fd66efa729bd8d4516842cc09ef343f7e3fe19de4af507a899299473cb49b6ec69c35ff26a5a4524cc841ee60584142078c31886081b18417c0604008e1002f76604738a00b176ca7050ef88245613cc022a769de84b58ee88935cd9ba4524c8f5a5013e2a285044e4b0637ad264256e8a83e566b089a0dcdea63b5a8c8745a5a700d970426d59f474d8f13a2c8fc3ddefef5c0a1168880107f09bcd3e8fd2bf04efdde45f5518fa209a63f9baf7d0df1e36bd906d39fc1f40633447b1a5e4afbecb5ed8811283564db91f8da6b1b4c3f7c24a923f3617a8321a27df645b4cfbe3fdb8c40e9ad48f6f08d845e7b24a9977aa9f92f95ad6877008104b68e9e869782bf4390961f0243b0303b4d30fbf145429ac6bfc57f4d3044b48f5f83063ffb2330fbf3e36b5f43f6723b02b7f9f16b900fff453ba469fc359384a9ccf452a1697aa99712b22dffee4d8fc69f661ea0ba02de6bf96a22d9963dd99be9403955be946ac88e907576a2c906933b2804ea87ef3e4326ea732ea8412f7f1bf4f15f770da08f1b0e4d236158c2f0064324cb1e3ef356047edc8c1c097d7ca8bd9123508e6c308f24f5ccc9d74c5cd3c8cfa4dcd7cff0d81be6a68035ea089422f1437f04be37ea48fc100c7f117ff845421f7f4530bc11f1875f833fdc6a087ddc6c681a99bdf6ab89368c877aef25e5aa51a594d20873f2459a497e66921f92efbb36cc41f9513e3d82763eaa94cfa7ca97cf0d237c92af43a3e2cbc7a151f0e567d1f45236a4e4c31b1ae52fdf864635cc1023508ac007bd915aa47bd0486293026d46faa1039ef6e3fdf0b130ec3300bf7c185e03de695f4ac9bbbdafbaf24139a3242889b97e58e3a3d4429a2625a4dfeb371f08137942ba5f18b5df95daf08130c7ee6601d584682f38c21ffa3685b623fdbbbb903bf4f11d3a74e81e3d241f084308210cad8076313737f3e3df8886841e864c38e8d034d23fe2401f6648c6746d04b38ec07b86d04c7be0a166ff83e1d0bc14076c786a9cf17ae6389a43bbf7b241037ceafc869c6598c47f3eba1f52558f1b0c11f9a0af617e683bc23f1fb41d8152847ffe917ef92fd5ed6a7741fba3dad5f3c1bf878541f515540ffd94fc43a69aa689201390a6f167130e36348dff3409a931c1ad44d0eefd948cac8d0fb9b901bdfc9bd0cfcf8664de834dd3f8833ca73a8e1f28c79c7fdcfe51415337fdecabfa5a400174c9445cd30c7371cad06f687786640f84638c31c6c871a7e3c70f4517ec27d32262cc814f1d4c8d1f77d4f831468718981def87cf9d65a7227b331dc8a6c6cf5cd3007391d55816c2876da3468f3b190e1b9462dc2b53e2b00105bdff9587f2d134b13f42df5ec76df1f8d829c55fa9669cb3d50fc607e31385b6212023f68ac77bc68651e3951a63acc6e845988b0f324d9b1a5f9ae2afc80624e2c7df2a7c72f1a953a1c68fddb352e3c7df169ff8c41ffdbb51fef19f0aef077c904d23d99e5264f2b39614500ec11089cf5f037c987d13cc6e3044f8b3afa1ffb36f93f63032ac3fcc56aeafc2a4d804b39a0926959960521d0881e4af69c86c1af96c7a2d7f6e3730277f44055d29b70f3cd6813f330e1b50f8f137eece10f91935020438ac10d57da8feda98ee1e63e2d7b7807acc909bee9f3bcb6da586f7703b32ff7ddc8e402972e4f900e2c3c7eec0388c6f3044f6df17d9df8c40f1adc8fbb81999ffb6f846deef8624f5dc3f8c3f0f5b61e41789bf0ffaadfe47a0f41fd98f7f040a682b02fffd9108e31b8cdc88ecc72fb21fb722efe11f81db9018044c07b45b9b463d327af0c2811194b8e20b57aa3e8cc3f8bfd4be89364de3c00115d5f784114e6a6f1dbdd97f3086013f5b0187f6001fe6f8d7a3d72ea47f43f8241fbe06f8047af838342a7bd81386608e8db475dccbd6bdcbf6538254c43d2c156edd4ba3c2d0fb834020506bb424654f2b6c529de0f580df75099e014af060601f2a0c411df812e254f83dbc1ef0c9a0fe8f057d568d24f66c227b335ddca9becb711cf7b63806ed1e6c5b37348a01cffffd08d5271ac2358db71a05b79aa6f1e7aac31fd8c643c117fc793ff64b2ba04254fff75e3ed0c02958e10bbe9e6b1a0f6d13b4c92a7447d0f581649848a040fc07b4ffbd1edda461cedf17b44531602d10685ba0cdff86fdb975b3b78f3b730a18515c4f5e7cea56a75dd50a9f168c269c62336ac73d359edfa8e42d5556450bd58c40000000b31400202814108a8562c158248cc44dfb14800d8098467a541acac320876118648c31861040002100000300666868460100c3347648cfbca84956a68942b7181c57f62a2eb95e94b014d346f35ccd43903a651fe4bb154241a99ac4b586486600dbc010a147e17a1ffe10a11e1ce49bfd8fa618bf8c698126d382ff14dd01f45e119487248d215b6c31330442a47cdd463a5468f2939d1cd7ca9c95f3606514639085445c9f62993354b3e00ac9242179914dca9b40f7b0903c0395d386ad5375ba649c269691594296e5aa38804709405a06801d59bbed1970ebe243e3f1b7a0b13e2c8a27a3ccc915e87df4ae3248df4c6300da31d17a7d81d50350b0f1ba25618f7c3206e113de0dae712b3a8c4c538047ced5a7e6d2ad14dd9d6aed84437cb1720d9e152b8178e26fca26e72c29b57b3ecd0d6e06db0444003391f48d197706603a044f951d90147039e156be03736778bd1b8ed02654e958135d5af3d4e547b0bc8bed7a80fe22763ae67902ddb2f0d79ccb02ca969cb8b7311e3365ad6072c1e6d156f0ff16597fa74d3221a3b88a4becfd4f09fd5a0447d752128f5705ff390b201625d875605aca4ac39188d0ebcae2420b41709914875f496534986ccc5fd304a2ec816a04a3bf80fdbdae166824d8fa2fd42d5dc6aec9c099814553d846a8f769da2376145c99622db8205e3349b21e16e8061d293e0eb60932c6528b48363935dff27a701f5b5003295ebeaaa37b31706cf168617a70580d64e0bc4601a4302483f2131997b85133889a8780e468d520f1c8489c52462e4f33baaf6b123875fe31c592ec5a89733d847aa04f202882f0c0d1414b5779a1f4af5ec3838dbb1d76059addf0f3675d9710dde4a6534c14074c4e31792238c5027706df3c6ed8b1156788a289466a31e1c9c03b5c1250c46d2b9939d67658c87cf3ccc388dfc934bd93527e4c0ddcdff1cfc311b8f901c42d9be08c66b2997765b8c22014dc6a07ec892080a78eb1a34fd52f4862258ca7add2aa67154d26e024299ed85068d658bf1944a24a3582972103e448eab718f527a4467d03d5d3028104332f0e12ec217acb9ac160ff46ded99d0096db9f3f38032a52c142581bb8673613d09c5c362a9f2febab56e8569e7adc0b573cfa58b004d69cb97d054115b2ba389d0ef8a06576a16fd5261425ec6bf52841685b02f137d9757bba81a896caaf5529e0a11e70050526fdd543d3f5002c095d8258708f06cdd93e12cbe6d7ca8804517b3cb93d883b0114f00913c94cb7720d7c8e033e0ec0cdf9796603d0201bac3d40f45d0f08c80777ac50f6c55c93470fd0e2e0813580674c8c3f28fb37163aadad458738a7e57c326ede32417ceaf98a593b254858d4553e85e015f8e6063a3a5204c0e4c889230ca8406b40ebe3e2e795d4f2a2d761d50d659c2d0ad3131705041ad3451801efe5dc61c68dd833aeaaae70e7e70598522e4ea94f06e2905f9d9683eea18c40aaf61d889808d94dc3de25f8581241a78a1829f8e3f44aee1c9bcae3127cf16add649e18f03cb93489e046e68722f3706465dc521a67a22aa3a419cb0db7526e9126682b8cd86e99e4b090f638168658c104551a5b4c4f7d2ab83b08474713db1108d90f578d10ac25629d0fd849db56049b3beee4f0a3620d3a761126f968795abc60627360d9b5a0bbdb3b6f696e2a54b1cce61c2c3b0079331a8a187fcf6b739eb47a563a58128c9382e042194abb09e57ca390ea1ec93a86b0d28304348b9240af3179945d5bb5da2675ca30c7bde723de6ace78d4f9e110073a12e55e0437cf6adea9433a077dc8d31de953e9c5cb26b087eacd8e8b214ae10b55230ce94d4009f054bb756015abc5d6994dcd4d851e6335eb77703bd40f66baeeac7e5aa06101268731c0201ce96b473ee0d45002b7427ac52f8a40f9bf02fcd5aa1603517ad677eef21d740b25ded34d216068322019e08003f9cf24d0bdb22e4a35177f16a2a128825c881fac3424e9cb3f02a1d5e371c89561aaca8152ae2b11ad60872ec1c7c348981cf8d8851f908b7dccafa882104a90409175256dfd75c9682258916fa906af0821e5fecba6ea7d177babc72f070287a01fb3e0ab5b76f4c21797b35bc4cfc5bc0bdb7fbf75d49fc85005312566a196df871ecdba9b46b0dd497012b720b8e3c20db268a9ca0b7449b96d4f8b9ae4fc0ff723b829c821b3241a085e1e0d0c230c44f10e4f4d52979aaa30386edaf6f21c3b1579bc7a52e1c3654dd722b82360bc841746f480cd181f473818500eadd2493e2ccb33ff902255c938664f063beb4fa509d6f4337970505d63a1e4fbc5821304de98c1f275634e478dc92608fc95cbea70b093315832cdeae69271b4bd949eca0adf281f598a9217d39a2efba20f96bee9d4ad62b2eed23e408b09537c709484f34f8f20926ecae9081c1d3feef041e34152f8eda6cd65a9e919b73a531dc2a4ae51ebf41cfa53e54dd8e0ea5a154c91b11c791e401ba0449d014abc292eb3481c0a3e8e9a009d61a60ff0e04688846e832a36d64109405822d99f61c4183df5118d2c16735b612aeb54ce615c1c1cdde331eef2cc42a47f49c41863c984505e236cdf1c6fcefe1856c455810c95ccb226f5446848aa8ce7258079fc7bff2dce147b9b3ab2563d8a3757a39ace4f60a5c8efa767cda38b38a71071bd8e4efdbbabbd5665d6d28b8c49f4711f755402aaa23095c7894d4c6e4247e2e4c95995615c2630f84ff5e9f87c05d832aa920bb70d486298991800554c68f7276faafe938eb6131e518405aa95c5ba8d4abdc864e6f8479f12a74bea644ecc984ee601fba997cc7199b2882f5c36a13bc7813a167df65691406f3684b8c17a2f5926de1463c364b362b8eab12f3692ae6cde2e25f83be324b9bb8e6463976ec1b11aaacd122522a7f0706d36dd1df0a8f4938b64bc180a16acb5025494ec9c04de965192abc67a43a946893e028f6c23f9e346443733e531a20cf92a417846815c4f505838a10329e79656cc6d4832ee72ae7ecf11e66ca77fc4c5ec450503223e0f2045ccd28cff4f9b6ef4eb9b0d7f611c7c86533bb52407190ac5ed22563edb7f51191689d3011d5838c132f80b0459132546b3c0e968166f084025f9c634872ac79e9ebe953b01b138a2e14fd9ba19d38e33ead3f829558a439392f55efe810f689d68c47ae37739144da6497f0dd32932bd85326986fede31c2e39ea54a6e87b11683f2b8bbfd840a110acdbe1b71f882ff6502a78500dab83f6cbbe9dfa8b9f6e278f6c8c4dac919397628246688802daab5ac99137df1084c88f19fde1e2f3fc2ba8821e32138ca85caed2408bd9748df22636435c7d73da016397a2356cd76568dcf05a632dd59b90b7a05c2cb01acfc4b117e431b29d92b1310d73f95dc33855594ddefdf7cf83f9fea85e1b33b8c0c1300a1fe9bb4767f355219b512dd25fb3f2ff101511c32c738807dcd1ef2e456fb140e4a1c8e142867123f5eb3715519f3fcffde265273da1ab1c9a1adfb9f40b750b8ffac55dfd070a0b08becdb68459291a656ba27a11372c0455d1d43ddf3a3e1e951eb63684ecea1c67c422e9a93371e3c3cd9e179ae1bf00a5f120a470a608cfc56fa9e4e5d7fafbaea5bf40f1671507ec2699d8cfc4618cca658c8a6cbdc8b024ce33486a32cd3e853c9fd9f4124bf9375f0edb5fb642d64c82f10ec7e5fbf29bb60e95985bf1b6a74db73b752fa86b2c761cfd724962379c094c65dec5a2b49db65a77bdd6fdfad685c6daf147f7804384e39f5f1bbb0a7261c348d8708f1e00c3c124bfada955777a2282199a3a81738612ad08235cb94c892ab97fcd2a4355157189ec5617e2437012fcc3427ae84b18940c20f4fb470a4f74e57fa4417523a53b868fee8d83a02bfd714da4b8bfa2f04127dac239aec126113ed5dcf15b9f70ace70ff5bb0b6b3a8f530032a893568b1e47c8dcdb84c56cd0bd352b32390e4f7f538b40fe07a531da0f732309a0d4f9514506eb300d79fb44a7027b744082c0380e9b16c41204bc8ab4c95800a064be9d8514cc7398bbde43ef068457228c164a40fb058d5c8e10c7788ab1a3a9696ed475cf1b8c3e1f880293a6262b49a4e020c2c1dd0e21776d95ccabe37adb7a5c0182e930e7c688e7ce488ce5ef767e9baef3ce7bdde5b003f21863d007f85cdc985f1e52bfc7ab806243638eba6f45be1b3f00ba0d495498f728d0d35ad838d4224dcd58174464d4e972a71491e49e4f66fb737d31d2c38d2f474cec58a0773cb9ff1b163f2b48b882dca61d603d218114f37d7f6cf07005be9ab21fe4420d8e81f5a9f71be2ac6f842635a2900d4a54fa3daea46ad95657f073dffec1c3323be0dcc0358d115d9680e6ae3aba49dd9f08d1c5118c3897e65c320d552fcd49fa1e236da009e09bb6a2a751d6f3a885d546b8948b4cb1b3ca8b30e484098a8441e7d5961cfbc86bc9eb59d710b155dba9d19c049208593864fb60b08aa2abbf5dd4374f348cecc96e757fd524f2369ec6e043f2f44311fe580e761e6ac5f707139be0ce4888b0a54c7547ce2827cc21d4ca3787a10d6b99d6df87d094415cc628b1d528f9f2cd381ea699b62ac857d886712d0061dc1a193919927163f629d795d7cca009e153e934d5ff1109c19c0cb863c91eae5f136cdb0aa4f2ba09ddce2fccf83a2c31ece3c3b785d90d2c6c5dabc4d8a627a3cea0db88511910ce8bddb00144215f21909c7bcb1ea7117d20989a9e079662ff1f6393b373bfac905e026752592a70384dc232ef1a96cfd6721fb495107b9ec27e5e5f796d90fb147cf43eee79419c861d4980fa7d4364d72a1926009f564932caabdefc05f7fa80e30e5b4ceec2b3b905a3f2d1f8145f26322e97d62ed775e4b84fec06a91450b038ecdb08c4933d1a4c58c141c86b3c5a5971bdecbe3489099706eb387a2857f623f649ef3c50dc7b14ab27b80b140828204a664294f105ff03738599352b5278cd94ae64aa2ff93e30ae7c9d0baf9e405e5bc07d75644e3c668044da68b1e481d42135b4999dedb0b5891181cb5069fbf0cd09d4d730a7b97e00ed497a953f464dde138ca3be351239fa520312e76dbfc358e0b6d9baaf90cbe34b74b72757b4d4d3db5e270e3e85a22135d581de36ee958a59f6b17101f97b96855a3a9e571f151464d7e6a6aefef13ec2bbfc3aa1c5a5f4545faf821743909cac071e0331401b547223ddcd691ca525489015ceb771c6050532c8563293180c37ceca4ba85767ea953c36488eadbecab224bcab625716dc6bc146aff9958a008a2f8a5880b93962d810b52949513844644c975b1d8a803638a602dbb1f7e1c8a0cd10cf531c0a8cc259c84a1d4cc9e2a102dbd62bfd9678aab19525c865cea59ae1cc37fccd29c9496a8f0a90437a1e409392d39e6a85cb0af9ea83a18267b56e03421eb1177bb8e2782c85b984765d15d0460bbf5a13a0d4e29dc4d68e9f83375a5a32634a96f5f60c56bd5858e36729990c32ff6c0adb6d521079612e691d20753466ced2ae54fd4f7329abefe6d733d229ecee13b84f3e896c23139e85d979009aa6504c851a8541b8abb2a58786346690788ee3b9cb0ff6d113aa46c11af09c3d8e00625a5fc412f21b97f666ca94c62a487a17aa2d79ce30582a5047f570e6e11ddc32158c5f4f50065353954745e4da6514993e1db386e4de2835429505654226364063f678dcd07d7af9a51fed712c9363dd46d30e06de85891d00bf80237f2f24cc9c9ef953afe1801abc29b81cd9fa120fa523b0a428a431e120a009cd2396a8f51d27859fb8133eda9e7ad3009d218cc4534ef572a5f847a5a15425cb5ca75c5baf2dbe77acd2a27d219e78fa511250dbb3667c1f88a2c8b0268eedc8852eff81073120937f927d4891753976562e637f54468fc1e970c298306c82076132a483ccc52579baec74654023b9e67b5303256d370903d3dbaafa4da730025ef02319ec7a7c8941ea46f5bc2a7cd1c4b23309d57602ca4ca76574ed4c1be24cee866cebe3d1c75c9553ab626c27b69b470a14b13d76ea9b41e5d71362e38a76245825c8daec4aa99eb9c2aa775e4b62628b7b85dfed6a5ae2353ad7976ca92d527370318109e422885e4944dd733a88878f0b59ee93141a278db5dc5720082b0c700d523de939df77c92d10e417d1908e53f77fe796e2c58870633981fdf00921d54ea7ae7ee5c844a0627892fa97139eda8e8ec01d1c2e76fd26bb1171c5526c18d1b0e76e3d8c2cabb4a833abc778b5275ab69280ab98c9b34fab4043ba32bc46fa9407ebdb07cdf30ee46a28cbfe79a18ba423f1b4160081f5bac19083b7f4f049220fbba0e07fd92c08ce2a4ea0383d5ae777f01e06296842ff5d3aaa99a9e9d50c447eda659f8e345504cedfcb19b9832bfd9d625d760aca424b3557e437832810ad154e994e0cb53de12018091ebeb0b6cdb0b7b56e647655a856abc217e2629e018c0356bbb6fde42f5078a29d15b40b364bb63679ed6a2bd28408b2926983950ff818cb7f2dacb2cfcbbeb41dbbd6a18351bc2f317f477fc504fdd3694d02ec046b9b01f0ab11c32caae09b7ebe86e0370e29b20bdf3891c770b41a8f27daaaf5a7baceb96e50b41a991a829308908bce34e13c1bcdd297bbe0eb296f723bb89b6b4c4d91c2d6577406a2f69710586cdd872d00ead962756bf9e9c98f3da20151e01bd69748cd93f433e0467de484a6695ee823a5b13348825d524f876e9d3d7df07005e71988cc6e8a2bfe0d4d75d6d095539bd9f77e034381ed23825a74ab06a43bc47d68a45574cc61ea78c442972e27df0fd487c49b2a70ea41fc12cab5cbd2e1c0b0365bd588a168ddc2b271637e0dc08443c45c0613beddda16514ee2ab7606b1550101b51c99695d50b7d308aff9730e53171bf6ff1177883fa95c82ee78858aca58b861746dbb6d4c6664098094bdbf551d9e0f99f191a38259fb334685370b960c363907bb31ad29810da5933e2cdb32bf9e0bc33d1488aac27976913c379683f0af67fe08e1ee6dfa5ca19f8a17d6f98c6f64cef4cb22f43da6fb1270aa0a47104b7de0b830b1cdae7b905d2177f1f8995ee08a31cc91e892636b1894f646aeb04c8c5bc22938ca9dfc8a8476d92ca8a5dc01e8629cd1363d09919c2379088b71fca423b5ef80affd2cd62a97d146908a61fa50cfa7a2610fd0e8b9eb09049b563dd67bd1db8dae5a408566684b599ca7b7ce0c2638b768781398b081f12b7bee4876eac0a3cfb1c99586853483f2a40cea6fb529bc4aeea940ecbb999cee266d8f91f333d0e200043d0f53a550f22c4f348ce6e71a0f8e6380b449e17fc992f15c8075cfca20343b3d548792cd1614070ab80124d86e997f642eab74c4a04c13df891df94e4f022bcfe01440667049618a8ff6a30567b507ed9696b4458b63d193e931e6c4123cbc92ca294081824be4a0b82a35026e3220bbf0206164cca159901d9e0d232186980b9fe5b591c114aeb14184245e53db6d9441e906e1d780f11e8770075f43ccd144a85f6854ae7c59891f380606979a46d33db82f11667faa9af03fb961f7371a8af2d8713fd2674f7782f0d85f65c68f790da71e57c1f87d9910a12cf2867bbc2fa07d32d33b797cd3b064dd1421ded94a70612e960d7726d177d2557333045020878cc0116acc46bb4fc639a71bacbefcb12d9cf17689cb10c17de401fb986f28bcab9b3b4dc22b78a4b88e895b9bbfa598a10d6a293981a01aac351d034519e2b6523b1ab5e2d85845a0ad9a678907148d57ce05607946d7cadefac18403d09f6717c1220402d1408a11d9beba25e144a81d326b6a82bc836a415dbfb0a04b1fac82bfb49fe4640c7107661308770cd4672fd03cf5fad0d0368a577b120672fad8a62518a3053234834660ac9eebe7f103b4de716966b8fc6aec6a9241531e9872cff00788e968d0f58728be599cbb41fa75b732216de60b67482d98b90c3769e5250e6adcfd7d7f0de30955b62cbbbf816a7dddfcfc15b58d0524a4870587584df40d1ed544b6f931c587dea58006c470fff663297f69886aa5733ce42e7d28743dcd54cb6057a096cce8ee170906dfb9184b074d354193a38af99196a72336794086e7b488cbcf936ce0fbfda594bf342082ce5dfbf4b69cd1b7cbcf39fe8400a3e90eee560da8c12e047c3746081a1b0df3ed5b8b44029f0af18b0501fbfa123292fe6c1df27441284afeb412c0a850f01c5973b0c92268aad796ff7cddcd0fabcacf3039c351e613d177731388b83d019c256451552d63c2afe7640c4eae99b4fe570b5cb6d0ead568d90629644e5e77fe681304f0e0e7a13208c2bd6614343c2c17dd2202764111b4ab80ac3778d18808c35fa1fa55be915a7cb8f5917fd22b8ebd3dc0c6dd17886533b9e0d2ad001ae8a905aaf3be459179ece894427b2610879798e06c768e7e0ba3155f05570882c22fe724eb67d3a3a4560cb7a8e36c1afbd1bbe6683c215f355abe1a6522929f6635cb4588023fbb83d6584ebdb4a09dd0ec3218069ee04429b8b296b6bbc4533e447d4cdc7023999f9f7bb3841d9b2f43836a36094a5fcb6af692b0a6fcf6f75ee05412b5408dedd67b89916f55dafc07191905ed985ee2116d7d20a271f28e904a7d58117d0f5b5a16f7331087877f270e9f77e7a7ad0297a38eacd42558897dae9a45818c1c4c1cb9f924ea19a182861e2ccc74b7149d22645e4fe1895bc9fdc7d2f5fca3ebbb8ebc9b6deef7c578fa0d6a6aa21b6aa4b3f9c70896a90d4143e62b3237359b6bac3f2e085586768a360c492510ff3f02e2336174fa51caee98a501db997d51251c35b07869162b4b8e504107196d4ed9d57217f8b901458b7676c9ccade31d99241a8c4869f71b1ed46e8200f0c861f212374c731c6c2a0bdcae2f43a65c53b0ba49e3c6ee80d6b72b2992838b28c0e5f9afe3e70b34fae039ceaf046e380e1c7311a62f43e3dd4438359d0e5a2341b17bfb3bbacc12488eae55ec91688602941180991db17a973512bd1e74cdc4222f754ad5d5daaa489013ee1e5b3090434b9ba3b6fbc9e83dc102e5e38ab05fcf281998bc81c23fb8050c745cfea77addef6537bf5750114210208025435040bff4e7f9863d7869cf598a07f4ada9d32eef59264509fb2e263a3982e2733952b8faada522dc3b9e29de2f85db07ca103544b35a95b4e815ebcb140f19a53a8bb5fe14cb9c22b62e18a4ff3ed332de9b4850d08aae2556bb39239009802eccddea4b62bc55c7181276232949cb0184aafa54530c588346ce74def3f401e2b737a9e6595fc89cce572a21201442391a08c4859f4e6865a2f281de16e2edaf823c34352e353a01e214099014430047183bd96f435d271cdf96d1b7564daa65302f67de985411da189671294427ccbd510f9ea2123927831ad468aa823b2bde0fbb22c06313de45b15c229131b1a10da80a5f1347c5b10fed5fb9ea06faa767248ab6dd4bd7e1db384bfa9e6e9f54f19f3ae6af65108fa53a362044498b0c996fde5c8c357114ef71ef34ca81bbf09d683ab53ec03b952a5599335b76d945e0e173637fdceefcf22c22c9ffda4aa1df0d75d4f89920118c430aaf812006b64323e8713d8594adb872691229bb0c509ad810a7f5e19b2f15725491c76e6d607f851b1fa3ac79744d8f83905441ccddfaf50fa229595f9ec326e2491f897607c9e3b97d228112218176fc882f4e9f5ab6d3cdeb70a4c1d55586c0d544b048732b70c5cc02c1413764f775d54abae534f02412915254275c68161459d45a2a871c40da69aa712ab887ea28541efdc597efb2dfda391cdaf86be9cfe5a2ff4dcd34083a8011742c4df3acd2d3b85bb7839d3dd30531559594556243c5a20f2674ab8cb69012b0d2ce3d283e81f0146dde4edc4a51d55019a22c9fabbd61ebb21ac197d026ffc3211a9a5a13cca54515999fc2e2cb32680e6b62fd7e11e0f07d54f260857d71610d3dae91ccdd8ee0365c05427df115c1457b5892c665664d8c4f292eff25b0c39030d212d1fcb58774a7be4331ee81efa742b9f3b6bb11f4c12e7872ccf350e04764184a4cad6deaecd1bf346300e5aa20eef95edcde5127058d2d2c847eb7aeed489de3a406f448dafb701732abb5a26ee5b32775cad9a8bd142fa3e9fe6afe2e8da07fad9ca6f4df18f70ba9c1fbeffe2b7612c54e9f2884b57a375e695a641bbee48a1640d7874cdff8c1815f9bb8d9590ebbc162743ad27662b8f5d4cfe0d03ee636403b4ae3a7918e24a49c7386cf40c20c513eaea2176ca78848228b3a48529a09c80b06cbab8bd200e1b23b2caf17c4bcdee21d49618ba18b4649d3702832dcf057e60cbdb83505963ee8655f321247a78de9b58a2a237e6551beb60b9c6461a937554cc7087e87b23c7f3cfc09f108156a671bf2a081994864b1b0ff8519c14a0cf2f3e3a35cb0d5453a73a189acb0475d3d8f063cb15ac5f5efbbb85159c6ec930b63e7b5d768e366ea676107f35999fbd3a5e2e080eefb0a07a5b9c86e759696b8ef83c732bfd0396e899328a28a1f1baa717375b7d0337f519608f0b1050880cd5132e8c95e856dbfd2134997196202244da1368e9e8593933d6403c1fe47d744e2e6305c83651c0f6f1a750e16a3f1f7b2405c26ad7dfbcd3a5051343c7b8be40f790c80255f11b7a10702c527720bbb25c925574eee8237f15082da074ec6c334ab655b619034dc7170b7c6da0a18599c50aae1ac7bb628c7921d315b2ccced41525ee73df50ab44e592cb2d3bbb6b6c7abc353849c6ab8960cd6ec489527efd9a0ad31c122e26d53ce01b9300cf8544ee1c78e1803e6d2ad824e8539c9f94b5970a7dc8c831a3e508232d9ffe3b99752c93cb27dedb734e8985ec14c6b4c82512560b470c2389c0a70f9ad0ada819e9bdbe8a3d64d58bde48bce7c00ba14021cf1552926aa08d081d886b911e712aa3de7d2d06aec8b7feaba0c72c523d8fe2bd407db16cbcc99cb907c5d680b480243a7948ab51cfb647db9edf8a3b3ce4b4d98f4f94bfd3999b63f76fe7b57958cf364a6b05c4e6b159cd2e2955e105218e014825449316fca606d446d6688fc1758ae118cceb3e69090da9f8690406064de13190d9487dce2c940c3eaf1af2122d08c48204b366256df2868659143f8c0a7c966b81ad3eb5508a95037860f75a18da4719cadc10366fd149093c30de56f57ef7f1766b4b88651603749431a0f57512eb3be4764c29cd5d68d93075edc1ff4b6555312850f96046daa0bf7504f3e83d3ba774af9923e2cdef39cc07180efdbc978f5f44db90542f48bf29b10c20efb3f73cef39eab749eeb6f5ada478cff849cdf8a928f4060f1b98c0c3c6026070739de26bef2dadbba2ab9e22218cbf86c354f799356fe683b32a0f861bd62e743dadbec9596eaed557bd56c079b5625824c51a4c4dee65c3a3d035ceb746708cbe5d3b044926819fe848eecaa07b91045a69aaa0aff6a473f5eb2308afbeffb99b9eb816fadfd2f83d98392260e6d688db3a35c372f3aa7cd91cc80796e64372f7a0731e248b2e88d268789ac01e757e37005a3c979e4ed066a6b1006ed46883238f7024e95d4a28762d1db023c85d546dde688317d0f213f7b2e4cb57563b11305bb765dfa1864819b4487345f31ce2ce0ec5457079db6b0294558c9a5bf3b589565bf01dfc7896d02d73f4d21b3f0bb449cd6a81dac674d07a4097e6208f1ce9a3f33cad3524cd9b1a7a83ae99d8c026b9699a78abb01200d4dd4749b310e8179bb8b470cb84b9b0cf10b0c360d61cd1c8f00ed7421488dbe558491f9598fcd87783c2794b501a40eee09c1d68b18cf391e757db603148f8f6c08098eddbdad8047f71d981c5f047ae4591e1036a56d2c3e05b31963eaa85fa7cfe83527ffbdfd3127496d28795b12861c4c34e0430a7243485e24a53c916100ad0542f8fd4e911a72ae166102c40d9cd27891f14406edc88e300619d10948fcf005cb1807864ac5b0f7f428835558b7634fd1ebcd677632176eb059232c07ddf12c03c969c34880f60f7dfdac395ec1165045803ec697901a41092c85f83888d43921dd847036eb14e1b05d756310630504a039abcfa6aa816a38541fb91da7da5b5414f575b4e70873d8eed13b6f316deae1e6463c0aea19e55121d15b15fd4088bb239fca9ccab15d834e847faaabe20bdea6a57a8e4212b2bb5613d6f329ea0702e443cdb6261c3cba1940358f6bd50b5ff264f89c050ab0e078803362211ab8292cae84595c4c60241ca916ec2a490b4b51d99194b7b0e635f074fe9863e759e45760cd462ec9806b66cd3872e3c282d76208f13f463c32a92ef39588a844b2b33da6973e80a098905e98a7083cd4c60e16e7e9c8d9c5451f70fe80de7ace633914a1a8276d3333236ef5e48582197589fcc40ac1513a801cebe1c2f79e6329830d5c53d8372ce8b08db2c8fc038fcce6f250f66a654c1e063d40b00850a75fb1a26419d108b807c929599377de14bd26c4f2e90f5602a6e1a2a58cc438c465a6f04cdbe4f8ba9a58e373387d850d17683f1a455ae0c91befc59d3953c242061ae86642247dbd4d9f05324db279bceec1911be818b95014de3658c6df0f24e2aef1cf98704941d092c6c852c653edae891d420e45c3a167cbeee26835af4320b83521256f9042ffe1f7eaa011aff88ca064f5754c8c315b87163065e0f436acf4a781574f4385ccc4071d5d4d62ce4938aa3b118ec0b22f05a5aa52160fd0014f26526cde41119e87ed912c5cea1c5d23e9d3d8b78001c29f0bd9ba8873bf75c5094e88478c4fdfde61481afb84f0088b5372c4c4ba23ced509b65b4e7a5f0c95f4e389fbd931d0d9773d293f76817db061f7317bc6f1408832f28a23bb5709d7881c62298f799452f64b44718b7835da601d70dd2a8bec11a99192ed62d5eb9f595fe365b07585d6dd93e2329ff3f7df1b13d61ac3abbb40ac97dd556fb0d208628fb178b0c1c039b42c2416333e9f165a4c994c47fcb13646a7821f46972e97b4927f9efb6174b6676dcc77dbdd9e58a32ebea56c7e1f42249d8e1769207dbb6d5a9922d3dac39cc9303980697c18d217caf02e497c05e8d908c88bb1b54ae1ccf389e55071073db89f3a30983c8015530db6e96b841bd2bdf4057570d743554bf9144091d91416219a866bde805b22d81f2d340c721e65481766ee4849ff4130555c2c2cd3ac976e6622319632d5edf0ea53f213a2593320b09d031fd6d65bdaad8224d4d027d559d4d35aea42336872bf77f692c07d3a8082f42a429b2c910850e297ca018354d465b2cf40e9cda65fe5f9a4de2f4929b109fecbd26bb99b795756ddbd7c0c9c67e0b6ee46dd114089110e8ee6e812560acd538ac1e758907cb1e9f284476a910b44bc84b4a3bd63137ac5fd5691e9010d0d1e2c0d5922d085a5014ec0ee63318188c4a0ed6e034acf4e373f657fba8b49d2186f55b96ac0ceb54d855ad83f7908ce28f18a6cf606de9d47e3ee5e1c66b2e605689bad2271cd5b80b7c6f8afe76585e71221292e48170f4f3ac5006746eec2dd48c89275ab116003f01718039c42e00e416d3ee718edf20fcb64d11d01f386e057e653651acd293ea26c554e388092341ca8d237be1367464bb864012b469d8393a749429223a156bb9790a8411ef26532aeb561f7208ec9a34c667b739462b19779f3d5ab11d6cdf1230f82c19a42714b2320b8b342bed9bebcab0408336b62d4d8917c42b7f63825e4169b4636b7694216af9c95345874d6584732aabfb299a8f3ea7fa430d922705a92ca0ba68ad1cb13d9c43bdad217d4d5d75aa9a4df71d7c93d0e6522bdf83461efaac07787cbe642acfa5c017062a9ad3ed1940e977a0cd527f73d5f0cc396e35e98b68052d9b13c7881aaca393060c16ea2b3294c012043ee21220225a470605cb3a9b1c0746414461464b4f05c1f24f8404bbd740bd803b49648269f3a8295e7a5cee6736e7c00abe91277165d2a32043fb2e251a90ea7a1dea66416bf4dc13a5bb02bfb692a323fc45cd1f63c63d69634090b7de9f20f14ce006632701cd617772746c02a28b13dc67d2118a8d4a1a2df45b3c607451b34710df35fa083a17afff7dc214c3399517cd0def223aa42ee1e5a7f60bc0d947fd70e9de6354529f2fdd460664cd2208ce2c5f52a92be515049ed6d65d93ae3119356b7fef9860661bbc1942e9decde3b5e6df168089812962c20c37ad946254437ca725600ccdd123e607141552e6e60f6c3f5786b6d032459599012ef98ed2106ca8143a7a1f27e49741df8c0323d5c9c89865f593a313a2a3ca0c61ae647a0815cd94faf52981b446039d42df8640b681d281bb707fc708564201a3ede254dc9752309505752106e4ee3eb9d409b916c241070879c29ed518a4f229a54344bbe50d9c1b1f8b85de87cd6876f504dd997ba8df68d293bb7a5804e1ab18ce333689420f204191c56054581061ac08e6105c33fe854eafb813681110fd324b83ac9b0ff52e7be540ae1ecc5c2f30bee23119b8ea0dbbc4a30576167688fb1b7a9b4bad09579861c6aa94845db0665a3e24c15e2c2b90a158ce37a44ec289bd0b6e9818e14331c088156b26a5964440605928de5f000dc8a17b8317fbfb6fe1f174d48707fbcdde69736a142697f2cc635ba26b918b6558711132473915c8f14fb42123d321145ee45610b91c69a24b929d42cfaef863109d9c1b1c23ec3c23cfd6015f04978441e61655e8f989e20c9e9b0a208a625317693db83e7734337c0c7db039f5979d4b950628f8185a560e03941c24b9247462b3d1438f909e863a8d0785d407dacfb4b410e2affc8a89d2b4288403cb43e7880a4411a1620565644a31a078e65f8e9c02c55212f42561c6b37c8588fabaa8ab8088af43c4db1e8a14c53441b91307d4a63c7c6e0b5604f351dc484f149bb3963298f864c460eb8ea206a5238f568b76ee695fab0497a2d7577edc06b83c9b9148d91c05bec413f06e37f366e4255095cb4be0be481e16c10dd14e286682c7dfc753a464d0ef3e34b32685ea73d3d6d6cb003559e5ae48e82ac3dc189ae11382b9e1bb5dba492399dc969720dc7c0ae6a606d14d8a344659ba2149dbdb36ae4d0ebdcd3d40ff8e708366956b91469216fc3b3b5d63ab46299c40b8b9c3feb2dc7b1617bb151e7ceca713adcbe4a160e61e07b54c8c90737a716fc689605892181db872091d4b2a990a9ce1bb1dabd62201a60d09054627afdf219cc11ff7177fedbe33ccb5f8eff2a175b222f0c68993866da20e281f0a6df9c5af00b5701ca70a2d1246092c38872e26139d14a927960c0525a7e3c8afe922da6dd2099b1e1650f652be0739d731f817e2fb11446b16fda64fdaf499821f65d89738d0acf7f842de937ffbc747c51bfdc7056b5842b84ce44e9e484f0d77a3e0c6bc057cc922dd559b081008104bcecf35c1748d67b0715386ce20d4ce3fe67dca21bd42f30d670f67d11e440f5d36a15236e19770690c9d803a004ee479b0d582e46c621ea4b3ac623c4e6f6ae8bdb2b165dd7efd15582a8969d72b9cd3279bede2933c15c15a0132ec74aaa808fa50bf9c6250e82c0b4e7950a68d43f6bfaf1b4b324c56440244302d72855a0d93a4353030600d7db8908a0372094bd9b6f3633242bd0dc328c3e4f4fd500fa71f0eb0dad5d3c59e324c8627706e5597b34781052a859947b27f26fd37a45b1413696e9533e052fdf4cb26413d331217fb0805eec3e6bda1c821c4f45a971551c706dd16c95dfd3567d2f54b93e80b65250c64e9dd3705df1ba12a99db602adca09f5174258141b5816d4644ebd051e38be4646b4200e83d44271ae9d6350da74c9220e4ff8d3b256395abf5eea9c670ec16a562b0248294bf53dabbeb0b77b241d66c6381f01aec6d2b79ff4f24fff0eedb632f5a468b5dbdaa5846cac4645dc9f3f28a93c00bfee92dee1572f1ef35810f6741039ffd70d4204399f235a137255d120793f2a9bc2cfcd60b87178a83b37dad43e2dd0b72f9da0995c40b272861608f7c8cf6a0201219c5b478c40e2f4a1485f5d879954a27d19f2f4ee1f9a1d77d444752dd2b0de44978fb119bb33b128a843f5a5c3066bd92aad52c4e39c51d0f2fcc0824fb1ff104a60917702e2d35e0706461855d855f45afd854851e938cd0d73d68242d05985972b988041073df76337422dffdd11f28c2071331beac38991b52236513093254d8c551a8b656443f8df90638444cfe9861e6c852c35476e31ca74061e60e0b58e18ab06240eeffa2add0ef775d5090bdf8ddbbb18184585e992d549e3ccc259471daf62ac9b16aaf64fe44474b94f699fc14f19ace9b6007352eb85b87e711e94a8c8f767f18959f82bc58e49d8a2cf46f54dfe52016ec45bdc2e61d3c7a41ed790c7cbe215f80f89c328194f7d4c74eda572d763fb12dd9599686c8c06c4e575fd7c7cd795c7efefae9d8c33dd28b2491b4ab8fcf3165ac16c959356c8acf523653863fb95125fb869f79656281115f15a8c120c7b077f47fb1a27a434bbcee80ea407c0cd2449f4778c3afd83d9645aa51f31272c1e8f73bbd6997df1cee4bc6141e7636c475be3e06b42d50e7041544716fc79748818d82d8e42c06723829a3e3e7d4951a8af08842f44a264487b87b9e0f8fac4393798f18f164f2fc647b71bb722387956d488e857332e9cdd64825be290da4100bec4e6f6cd09f0d0d1c741cd2c9b44abf89ffc11316a65c1932cc41f1e975222958b7a588848670dab15ce96494d1a27677fb499701b937f516061404cd43a8b7bf54998cc2e39d4312d9615e524dd01e863b911b534f5135de3677ceaa8a56ba722a9316c1a0dc445ee4965e07ad6df722d03bf2824c97b30d940a5ebe1f5398df0f3c0d052df8cf5249ee0cbfc481adda2c5a2526a8e17e0b0da8a28eec4fc345d4a5a50bbaae10811442977929e8314e7c677c843114f81241a1132f42ce8698c16aaeab9152507f771548e2f91c79d64facafd066c4d44b879b16365c982154d9a46946a6b7d686eccad1132bda4959ba4c8b8b8e8ec7ac9414d34d5c8f5316a012e37f59138aeef9253b77758ea604ce495b9218c9527bc09ab64f25d9020c3243f09e8d4b067a2def0ee4d1b1288b8a384e6ca4299e4369fb10f15f6d7fa47ddefa9703c99f2b180272fe0108c112806be5ae2e7c7f3bf0e40f02e9e6f3e8f8fed2d9d24e98a61c758b43e26856d850e4bb985f24de5dda16fea9ec032008c13054b6e21271844988fbc26ece7257ac369cc0083c808923e838f149c089c08e803514bc74b2b6777758dd916af526605613413b448170711ae8b6098e241beaf70e58154245ac7f943be72c045c5222392e66b753cfc217102868a0d68b45408a1a4e280b41ec17a9c0220fcb400e2188417d4dc3701ff82262b8f1cbde61972519009359f14fa0db3006e2c88f86490dff247e231a86f6ba5df0eca4d1395e1a2c7162219ce53fd78759cea99a932313e877fdc081ca3e004caa84c6491eff1738c9e948a7222b62be5c3e23b0cb1501bdb5dea7f745c401c8096f2d9d84af4f01032c052f0c5dd9d6cf723998623df081553ac9f7d40ac26eebbd7a06434bcd03cdfb9849abfc10339f3285faed021160e4cca7d4bbacd5c7a042f3fd54a8366372c85f515340b64de23ca7999821f4610ffdf3528df1cdad8e0c1e5182544dad608a3f5dddf2e8f1b3de039f5ab565bb9d89aa6b3fd790cc6829c9b9c9f45483b74e96aaf087fa6420a4ec374eefd8932fda2a61117f8e3bf454630f8502caba47b8dba1a0c58e8a4e08963e047eb68c75715d7023a7077d24b267330b0499a5c7d44ca305ed351f1ff4bab974bfa90fd45bb8ced9b56407b306aa29c3f909c39630962736bb8fa13e8492c90e49ba3c83843f84bf25bb3887ae622c280d450ebe5672bdb94bfba207922eb5bcc85007dd18e25ec710b80acb0350d21fb03048d75fb2fdfcc72467373b3d5ffbd245b6621b189eafdba3d8faaa91e683118088bdf7be45cbb5e1580ed2786e74367287fce3fde4401f22ce3045bb7676e6597073da6de137e99bb8e3462bfa8ef9dbbc0ab6667d97d0ebe982e77a8f8b13b11aaf17a4d2b3b9a7ac7339c5a4d2d3a62c350f0359bf21a086721033d22845fb8f1b62172cc3d32693fb4b7aca2454f0393f85e9806d8c1b01c5cc326cdf2951930d0450c877a0ea65c50e85e079c4caf16ad548ed5e6aeb700429fa9e2e61caa414d17810ccf48abbdbf898b403840f61d356a064b7caf30cf9369ccc1a71b75929487f92b4348a110968747579bf0bd73244a252b4671b77ab5efdbbea3fc7e8f10853953094595000c802f50241a4a0801a1a6808709aee775831a18ad3e29b4dcf0010e3ba357691373e774862f4757d2bbc6c00272b37c743f3b14474ad3cdcacaf75b39d2266110ff997877f089195936de834b82324ed23036b9ec21df051c216392064e9d07b2f772030046f0a96a1e5947fb786d7e34f1b3bda3b0150dc431bd739475d9878607a67c9d2f9ea2f8ec395825ecc5ffe535b0840389dfd0ec866ee5874a7c31b8983833e3639ec2db7838999920f4db196fa263e68812a0688a82a2ad52291ab14f9989f2b8ac4ebd53f5fb8058ab8e898d51d90367c46d954f630dd5b79777cc1b8e9e509ac3fae98e618034805480d2d9f18f2069cd89dc3c40eea8847ba435f82677e1261a34494c173992cea0b5e38308ccb20d664511a6b075c7c164ebeea81ccce21109b0accd1fb1c33e809566c31cd76f1cfe4da253cf725687e3e4382459b23145609dd958b2db5c0a09104fb5d7705d57667da4307f8fbb7c30610b72d1df9caae946022d52eaa7e2d2fea4082fe1e9415941959f0360e4a65af85602e497977beb2fdc5cf06d9e34ef7927fd8d10d425794a83b36a041f680fee213106e28a1151e03198a92745b25b846f80f8d26a720e003e22925ff3144f4c866a0b59fbfe97496b0ea4537d3156c53fb41da14da7d13c432e8ef2f213200935a838f21ae21b86a994c8920a5a5554e27c41d936f35d82eda53bad9ef1b34881372149a9a49671ddd38a362ac5ac340314564827eebc4df572c8752347e5fd34f5261b63aa75e179add02cd3803d63e56f23027575797707da787fff15eaa4ec13f32ee4c47c8346c155314ba6718adac545035c25c23a1422047dc63f58be6123492bdc2a4adff8e89d42249e21104b9ec1efea03071ea1c028274ce8df905964ee483600d17dc8861a61e7f917c1208b93d3d4b06af5881a05b05cabd5cd46a00ee33285890d4d4f1df4c083d4101e75d8f18824b422c1b169d6cbdb61cad61e6d8c6aa6062ef42a3ac2143d7843f8b2ea03948bf2664f468c81eec45e29075cdb0032fa573a5f3acfc730bf1de0e4e4144d0143e552c94346d45b06408543771456a5175aa6990555394546d039985a215ccec894a68e77b50b020900a9910c68a8aa4c23e28827053295196fa47345aa4241c56c35d8a86035d8f9926088938d7d55802bce8dc3a3e18c2c7ec881595014301004e2c4e7ec8cf9cc6045d5206f218021b035069ca25842795005e5920d9f13a8c47e5cf99af78300bfb3989d210a43a1a3efa78733f5bda998fd154cda0c158540e2360b0d76a930581364c2081d41e720b7544a3cfb0c207bdc7399cec599c017aae96e0b9146ac206c68e00cb33c97d33587f36d4e953d83d883080d2d2663bcb7c4e8525e5587415a9a2c5ffba256fbbf15ba92217db6c715a2d26110e4b4cb8bf9f19aa2561f4cfd3e2cc64306c52932eb03163822f5fe4eaf11bf9fd9aa8c303ceca8a5f0f199c9916d8a3c9fdaacb6176bb1207eb7ab821302fbc01923e8514ba214277460e7cb8a0cf8363ac2266d82566991ee0c083022d21d8c7b5a0feab0a44cb5f8cd922971ec378d52aa3dd1551e67c77590adc8389c0a60a62b8db2dae742dc009296ef6c1394d6b17991c9a93db8079fc191c0660e048c6d67d0891970ce5fe0d44636d953d934a13c0e25e800a64367beb278a529b1d06ebe5481601a44f7e34610ba1e38c76f8f6893afad3c2ffbe8476b3e7ed31eac4b732d036db6ddc27902123718a404cb690154f0aba73069f9e1995754f4e4812ee24f9ec57b01eba274280e48539498778d5dc3a22b88f9955d57be9fac5f97deb48a13377e81ac9b49b31c19e4d08f96943d5aebb34782bbe19044ff9009c8a56891ceccc6ba82009428bb8cb109c15021308b0892bf133e325cea36b2d976929e4043a6b1ad1751e8ec205941ea476bc1996c7855a271df1a65d638799512a588e2495873b84913c2144b794386e270de48ad35a32cd28180d80bec3341262436d8a056e7d2aeb4ab012e578e2dd1c018458114f8d04c661f8062d3e9bb2f074a7308226b49f0479bb15eba8a109f2a1a9f1c7ddf18cb3832bf821174c096a561e9197c00904a20a022a9786bac7afc9c8b84354c28e59581fc63fd40f87a8880538c5bf6931538526697ca6a08234e08d30c35e6bd35a510972a35c01f556cbb537113af0f8b12001c4e04a83ff1bb358fe446ade836e284598c82c17fe0cec8ec02efb004e8b03816c7e76ced57ae49226da54cf81b96e8fca289242f3ed45f1a7d1cdb761e36228152c5acbdd5f1d0f6d7db04908501151e7ee97d4fa619f4243b128214725f6fe4de8c6840c0fb505aa432097c8d7b7b1e53dac96c4a594b92d02c7f3b877a04fbb99994ceb62fc21027ea0bef1e384138a91049b9351cbbe6e208972a42af427a6d36029069f6441a7c99d65122b01c3a538e283c4440f23f00594a02d47d33924f3cf711fb7fc44980be957e86f7971c89fe611e0d229196dabcb195dc7680088e968d4a8e9c94ab127904e8a67b3e868d51857a58db654deca908e686328e0e945cc9a6b750d5288e12893b25e45f2edb93a3845961308e7899a74e135c55a27d5071e70e0023fed5449a1b820f904f281779d5ba6f9ad016e2cb364a2f6261b3a3a95002955554d4f553dc0dde959bee28b7fe0212469989808c1a76ab008560c13dcb6cdc53b4fbe4f12cfe8beecea026ecae4c4a6a734f7c2fc98d33b8ad35dbbb16ca8160255a72b46735e76e681f5ee1f3c94057facc080e17ae304757bcf678a70376779bc3627c38d23d75ff9d14ea138380ab67b231e34e2540b575196c77160cbb3e15701a4a41b97315edaa1e895f9099fbbd8e4b7b3ddbcc3833ff66cf76235340e564435bb49a52981f179b16ef1d65a3fa708ef4c89b03a1a3ec907b2fcb7b0923141f09c5a038c080c7d0e88ca0944e9b02810091f7fcb07f27b5b1b5a656f5a56ca834479898ba573193c4376cb620ab423f273d46206423542043922620c9fe33b6e75f92a2073568e4ed89ad0a4e95f433b3fcc88ea68cbc4eb94e8293e25e28709b190ac40f73ffd29b2d11b986e58c8a2d49bc649882b76e53923be7546034e81f4d67b2e9b33cc872eeaf73907afb1cf590a1e30f278e809b17c4e389961ab4aa00dd22733ab9b97546a9550f000b0e255829bb34c37f49c77181d86531599129bea28df3e42c4688a86816f0f6054a70c470ef35f1487e7e1cf191e57e3c3013daf05da1aee83ebf2f109612883c161eba2c81a92cfaaca776a0b1ca22a801b346a0ad5057c448295e012a7713e3d01085c462596921a3182a0fb95a6a7e866d28f8933e064739aa6442a09fa1d461f24a1a50fe32995cf17f162f5d659f720355ce965cf85f5ddec41850a2c0051a7a44828483a25ad0a116bc053dcdf7ca90506ec9a57deb539be999ea55d59c911b127a1038048fcd467423e8493bb283587a9a6c948cdb981907aadae6daa82e0bdfcea4ddb799cdad36671ccbcc101f0bc9dc54ec5930b6de9c05d7aa9340e24724765e340601a9dce2879fea8e3946d29800fd2c26c443418f6dc87c688362d45b5b294e9202c7e47e9d448099fc8d6a997c6de2199f97c0ff38aa5adf026be57824c14ebbefc99485e34a2163a5f8a9449384ab125f1b216236eecb37ff3b971862efc79d574e41d242cfe30cee80062e2238323fc08513b03f123468951e25a099e8669a1f441f23b352cc6a4061ea827f16345454280cb04fc75e71d8b20c3104016b5b2a789a5fdf7fbb1e467705cc6e6fca6a5a84092b48ee83de56eea22d11b3df545b19c92d58c0330c90d90202e6f6701cca28ab5f81b080d6d33ad6e9bf422dfe8445686e3b7d5970a888d1229a51d5480ab435306621a5686deafcfdb41241dff25e6ccb3b43bad7fdc962d6df54327d956ae45ae0f81dc81d476de4a78df81044880ace9f9578d7d75fd5e9265817ad711eb777b0ccd1e7ab00065db3f7220a0706b044c0c1a7ceb27adcaa7b1db95d2510902457d18a44247af42a95ed28955da32d16141ef01dd177697ab359369a2045837d9398c148423951c1615ba04e80aae79fd7dfdf85496b8b21b4cd1a105eaf4561619dd8dc5488dda707951d1a9e6e2000811e1fdf01c5016a9e19e558740c45c05ae7cf96ee042fb623b9243c3a095792fc5d2377e667fc832e0ba34b83904e2515433859746b36fff4541f807ebbaee278b947ac83029f7d26f73fab82b4e1c12aabe4243ae21f9b515ab886474d829a664785126a2458505e5e7090aa8530e00a13e0ecce0fd210fd3c2b190ee67a46663551ae8029af843cf66b14b4687d0030fc3445c0f35e178fe1c8a1b5fbb9b4f66c1a7d5198bf196ba8ac562cb2d122b93fb564cb712c14bc2f1b0d1c7aa24ef0a332eb2674daedc90b52d93e91b17ab3042d7f8a79d9a45609477364809a83a86433b350076cefa9c4f8eb1c02b21ef60d7d26ad4c046b2e1092885987f4d6ae504ced218692391a1f429048285e4c809d6d5dc1b7dc89abf02ede69a8ec3784b55143d8219ca6e92354434dcc7a9899b956cdd6739b1a164e2a001def55c87267427829f2ff3e107026c3af12e43e5149963c1bfe18744739c624665c61a76149cf9f2d2a4f8f8b106297554f024b68821af22919b76238047c827a7aa1d7c4952fd24db41907609ea78b3c4a101d80c80b0e72731bd16d5789440186d23526ad0dd8948c4189cc363e095e540a925a70ee91b10038cacee974fa4296f4f4ca88901186a12ec033734a051be852b2c115325dde20461384e3a60c8a883d7b14041cd123bfc4ec41c2a0c544cc496a1d71758fd15dc57c7ae7bc89e26e65827b44472eecd531b2964343629722b5841800f4530006eaa96aaf84b051bc6475113f67c7207111d1fe8a00d3b0e3fce0a4aeec30ec43d637218f7bd01b60f33fbce4c32ae639fb2446fc699d4a9d2a6244a2d6f7e4e1d3dbea998ed709087f76bc6bfd182ce4569e281de0801f1157fb693de5337722212a5556b4543c3ad94e6c317031e620737212854dc4eb7d10b41b9596d70d5a3fdeebc7b5c538dec84b199d2ae6e5ecd98a1310f87aac081cbfb4bc33143dfb0dd4bfce5ba0889ac02d11847c8c54853405c9c5dffd87b594a9fcc448c994438515413ac5512a341fb2e9e6a7fcb9bf53c66ea6620d31891e576a80b8533a0d08c01b42326d52d030281e7b69b90a47530258834f8c606b7db6bea3a37396cc86db282876548a23f11d6193e83eb76af0cb2e9c310848f076c852dc6c1aef243b81f9fc5eb87d27fee15ddeb06e891735b22eee461f49d795ce100998546ee45ed139182da46c614479e47ad55306300db0dbf6d997b543c6a0f0714ae49e3e6a332112f4827a6b23f15264416a4888a96d0970e804c2f3e7266742503125817f241913996e3d2e04794201009a5cc6abb41ce9d4b1e06c993f697595805f45426fd513867222585beb4a378ee983abf0c7cce63237006525b133c9db408829c73c4ff167317d836145d086e0a6b9cc23885c8d0c40d5923ba375bb28e5dae615fd8d8e16583332a634be3090e0831798d75130345d29a295c9c9db834126fda659113d35052421cde2a58179b9a4862682b4a378c13cb8cf22901f318554a4d583e884c4235242504d922fff9b93b65624c05560a626311fccfffb2a0ac4eb97f1e3f7f4bac8f48da278973a2c46c994192ce7709596cabac3198aedc1b1f21e940ecf0691b8bddad61c2511b994b0e80135da4c6b47fa8db2e40c17a7b835608c19b9611ed459d8566691a4b01c8b5bdbf8d56ce344e0d7dab6eb318273451070401d000a0e9c0c355116090d0e358dd05b9513251864f29f110a6f0ebac1bc87e8220cc456fa7eb269b2353d030c18f56cec7e9696402e6c7666c409a748db5b20fe7f0541113813d2a5cca73eb31b49756a8bf5fafd02fda4ae22d649ed83fa3d5015cfacaae9e620cf3cf3f67985b61d103961f21df6473b3c6ecba3f3d7e5947b7570f038cb16cdfe980dcb81af6ca50dc1f20765e835d0e9642652a38c11606b2c592304ed96decd46b54454c9418d9aa19a9b468fe6e66a2f68b619954a601e3bb3832e89b1edacc3bd083be24686ecd997d02bd9ef9618d99a7081eb38aa57a5a204791a6c8b06045a266ba3bca7be039884039cbc8896b4c087ad92aec612bbde941f2fe0d7c13e58552914a55cac00ccd04431d6ec3a0c4415aeaf4dd110a0a773695433281763e5d423862d90d31ab7f852f5442c417544332f8e68a566af0c7a1094ad3832282c30992da38614d8babb25dc1678db1b99e423d5ddf7b3229d0be4d81d40b8581e9b8a7953e34883cb29a0399bfe1637e4ad766f6c82ae3bc8f6c4b94555fe6e495e05c79c1492e754b5a53427a7821b396248c828b6e3f07b917760a21b9e80721ddd69d7813531dcef7b217bca3998adf390f75c9f522c906701f592c037f00101a84e97e1297a45c8f5163ddfe2f29c4dc618cfa13ffd76eafb505cc57a7d40f6d05cc56d4402d6f0b48e51e609078c69a6884e04a734ff9c1cd8ed56e50a1f12770faa2505d77ab4f67bc93d906da23e620b5a44c712a0191f939b35e77ab547903e2c57cebbd0d718e24981f9e880ff356188f4a0d0862177fa364b363c75bac4c4d226ed94d8386f231d89c1e049517ae329ab0bc71eb0d25859c30e9244d791c5d73dfc24bdcac1ab2aed10ea16884917451cf3f1bd54c4a14c09af2114ce1bb1a3d4426a87df8f207410f491c14ee2fee56a14353905a6121b29956c2d2dd9d9a18f9520d09a22bad1d5a318f7f1bdd03d9e277299eb62db81ef0ea7a054602f53e7ba38a45588b7c188323753e886e0a0144e8fd0f7773f3fdb1479763de8100ba02ca1a6891827d12c3a5c41c6ec9803747ad46c77dc0f7118a8a9c60ad4a0c892b897251ddb75969288e9d3cea3e0a02266d3e7d4160bb3673365abe091d14a9633c63ffda51b95b330048a570d831ccbc9ae5d6899a799337e29cfa89ab88c591cf8fe347c7cb5c6e463a92eb16b1b1dd888e357544c32134a25849257f73fbedb0e447877362d8d6ce301c12856010d85ac3015f28eef8419ca72bef483396f1d1565cf8f07367f2b68dc9a7b34e195dbdee7eb9d78da62e17a77c052352b3f79f77c428b0ebd4cc84e662ead8e7d1d6aa795f1c6d4c9a7cda03d4242ee123a60f8db6984d6504297eb10c60673bc18f25bc7d89858d48fa69c257544070c83aa33e566620ca8a90ab402fe862e7b3d323610b9fe003b8a3023ecd8805d04742da752ee738fca195d0f620d48db6291ee397f749acfd624d189686d58d4a47f2a85154cfacfc585f6483a48c0dab3ba9abbe2c828c9a084416bd56516d22cfad98b31dd21e05d859f18a6428d9a102e30c718df8daa6b1d4a4bb37929e98048d7824be1bb84a04f39319fece65d2e183c65bdda399bdb8188d9e2ef497c9aff1c0a0af1174fb2a5ac12b5be92f83d937c9534e50591e40d0c2500f09f6e03769cc4ff3dba77b89cee717f18bda381f856af4e8a7411d91680f300e355c85d8fad5a0298e34746a38dbca577f7c78c7b110622d2c8cdb40c0d2571518d7199c7a58a24f8f6a42f3e8587d99a19ba353c7ec99a1d7257a52de987441bdb2b754def79c51c988f6c81bc8b2653ce76eb93d1c444d30cc8b40beb83af9d020107731e154453e4786d9001379fd2b433195076dca784e1b6d5463f128fa1a11d2b6eba0a45834f09e1ab1d77f2c515049e33236b93e919673577bbf73b5731648a28b94cca9e36dd798c8e629e052804d645720c17273ad78ef311eb43e4e4b1244b9b6d6be5fd509831042819802d01a77defc865ef64ca0122ad2ce786482ebea2613cf762008cadbffc495db77e30abcecbe6f310f9d9c5ae6fc67afd2b949b4e4d09d4b5eaea7790d0267a1258ce163352fc372077e653641b506a98e31cbe2b85c08caabe557d8f3db7afa26853009b37be872cf0036666700d15965d1efb87647473dab2122a28c0f2de2122e941ffa2e0e5b9f7d4b9d48d55cd7bf9adcb8c9958a341f382d59418f2adc657dce4da8177cd1ad3524e9cc0340d2013d0056436b7b4d30c005736f5fc8797e8b4c4f2c677aba76602afeb346748ed36a38e138d91101cdfbb07c2cad48c22ced5a3c00b8a4e93f2b0d10564155ae2d33efdda9b615857bdf1c3629cfb7d4b0979a4027a19729061df488823b427e5628d73071efaff51a5689592a7b367ec9a03fcb639c4869065fb57756db246a07ea720487b6c9feb2887a9f19c783f5375422ea28cc66bed0f55d4356b5329011605cd436190b137edba44df9705c0615265152e9734565efa4968d0d710119d34e9822270ec036d8695c4ed22957d79f44b70f08fcdec4628bc7c96d03484c172ea23e757d8285fdb379f9d7a4ae6e7099abc473a6aab6eebe7db5c7aa927fe670907c4d004db5cd8d48c3d0e835de346e53803204ed65b7b8f3395eb39b6dd9509e33932a5dd71ae0823bd688e4589fbe68bd7d59b3c65c4e71b522657d06cef45faf69d3ea90fe3a2f441631f18d25fb9b59a0c8587a6ccd342e68aff9f8a0d7cda1fbcd7dd05736ac13e5fd6a040134dc02cafe75645a3054324e079929aeb32e082db8fef3108bb2421eb22902a99a0666ab51d28f916f00404d735857d6270250d0449c80e7c7ed01a0c9d762d7f52daddef800eaa99f422f90289ff561eb9bae4a5e3034421a91ddd6a49432a5945266065a060906615c39be34e9a8e2c1b3026d7621f975f3154cfecdbff0ace0a7b90592d9ddf140a7d52549179d2ead2ead2ead2eac27d4e5862ead2eac2eac8f9b67aef4c36dee148ae9ce6dcfaac59cf33a4aaadf00aa6a6b313ebf6a1c0ac23c74b937aeaa26df96f78068e1eefead85bbbbbb5b96bb9f5c436d13248788c0011aa44f2729bb7d4c57a918c2303d2bb5f0dd2c266298ae65a2164d2842b6cc5c0dcb902b08b3165bf7559b6591fc2707b7a54e1e63c7d4a02e4d4c1b5383b82861c4c6952cac16f4f0438f142b3743288b2e4e6ca60675d199315383b84801c20b7a2048057cb0c0298d2a1e9c6232c8308015293d0819e15225881597a165e9810e3c30020e845e5054c4480e5830e5c70c31b808ad548dd3a3081e8e141d01069520563ac6d44017228cd1022746f8a0062b7e16f846c1b0d0a448871ee040058a25565f8ac4a0b544881c8c081384ce8adf037ca35e26f3cbb788af1b293e1c41424849949d2e90012d31aab0e18b27360062c55c76238c116259bcc820c3c1cb929a548e017859327dfa9f48f01283a9324d0df2c2439723186100539cd1022b8c40638ad0ab094c07308b4059428b16406cb14317596c5179fa9a548e548eafe1d43ba292a2630514166401e225860f3cd3b56da4c5a09aeeeeee2616f8909cf8e83b7224890a8b973fc292441985cfc4223ec7658c8703a02127653c71f22ad230b88471d5d770d962bea9415c7a30b7578da2b8a2892b9a68f72016c8c595660e420082deb32facc25921fd31ffd13fd4e86109088ef9be8a497a2c66fd34538fea20bd0f5e26e466ea99a44752d541d27008491f69b1673a1273ff694de69a7a70a050028263ba87570230f7d5009ae9dce3704e0b40d0b66bf493e970d00aba60433b61ce70af57e9f572bdb81cc9b61029f1127d9811823de9316d6663dbf0f66cd161e6f8ddee3e1a8d46a3456d319b71db6fa7331699cff5fb68e6a185e42c183f2becdd1fd995cf05b2779f69330478ad7208f05ac51a37e89e2aa463c5dc7e36115f6c61cdd4d42031b04c31a64c15b2c135754c0d0a0368ca1a8aa302e2a181142294b0e28b0b708ede7db3ecfbbff74824d203d149d2705491716e9b64925e83c2f8994526a3b6b81bbf7ffc51911951437a426d91ec0e7f1ffd768bb0f7121a2431558acfcf9c2ac527689a5e6b62786d1ce21e650c30704ab3acaeaabace5a83418676cd1738c5c20396b52d46003f0948c86da12c94d19629312623b1628ccb5a160f6d5924fc48161ec037fb25863d98d6c06d387a85ef4a1318ade237aac8eabd1765cc4e7f2ad5c86a904829556ae38e7e7e624a3ff694356ae6858e376ef0eebadd75bbfe6e9c90356ac6bfbfc80ad3d9c9e9775e441e1e3eda86a3cee48f3a71879930e48271628fdaf0c717a81e31f9a5962610532afd70de5dca4ed92b911e7b250a8c564c5a8b710461e65c8cce9f7bfe9e73eedc61a51fcfcd64a3d27b6c54a2c0e887074de9f11fb79a21c24c10a4ffca17e53dfef31c47763ffe43e3847c0f699ec8a7a8197cf3e97034e3c0810387afe2f871d413cc60dc7374ac2548881f2d403824ec91332df074cfd3fdd6aefe26c2fae7d65b170dc953bbdc145286536fdf73562c10af2ac2cc3ef5cb9fbbd96468f8e600b39d0cdf6cd6ef5abb869e1818906756a916c8b694ec7e3a01a180ae80e85c2376d707406600020488ae1630c05869e14d551d541c15221e0cace0304f3492dd6b0902284c10b87f2ca86bcd47544bbe90bac848448242c222b840dab8c2874a14421913923435080c26aaa8c10ec060d204183d5f93caa1fa01c3dcd97bd4cdeeec1dbb19ee541ddddaf69cf390106ad2a4b564a16db4ddbb1b32f7a3ba613333c347a19755719ef37677fd28288f4e5f545555559d6312a673ee2978aa84e5dfdcbbbb6bededbe3d77777758092b5b9bed3db7142909b61f35294dce39e79ce34e355f717fab5ac2412ea64ed5794a3e2adcfdb9c3e78eb83be79c1f7187cf09c1e173479ef3e784f01c7cee88c3e78eb81084e047dce1734270f8dc9157044c6b38a5e2a141aa31a81233b73f9518868960622dc889b9bb8b37f0b76c7bb6676d98bc509d730f7a0f4b041e70653f78669fc551eb15c5c229c404704f946d0053618ea9526233f5532c9e0a300902057b4a7a7a36c334566bdb46e1719ac6e281a51f4cfe7df0e0c1234a8c25203c5b3542d2487bda867b2c6b77f06f6eea9346a8b850808058db639de80e7e2c26af9527aa835b5ba0520ae4feb640af7587b80874992c560354c8f04215c73fb6cc620c1efa654e3598fd343dc696d956666b10194f668301524127b62c2104e698ab4236a7380716c43441713094cec54171768bdaf86febca94c502c01cbdab7138a036fe5f442e5a0480a9230c8ca8991746f1475ace1ba206585644a06be5f3bec464c442db788c4f5a509c140baac20e41fe40ab98ee22da1718b9adcbb52fbea92277eeb3ef0dac24d3ff5111a3afcb99b5ad416dfc73104275f8af6bfabbdc956e9213241da746e43a652cb0a34cf8bde4a1a1383c80a03827c6c25cb411da3eda4a3410bd43a7e00446865184f77e857cbff1a8409b8cc8e8990818124de8014e416c9ec00fb6a4c88d8118a871627c4027b8dfbff1e0147c186ccfeb84a54f58faf4dad784dfbb5b84dac087f0e13ae9511d103e9374220f4ed24bd00ea5568fc90b153d643bb462bc70f10386434fc9cb161e48395cc9bca0a1c3088717d66ac55611e98b4eebf585e78715924cf9720410455f827c584187265fac50c10a3b047de942052b1cc1f2e54b0f2b20f901634467851c8acee89139d198f15302cfe9882d3f536c79c2055b7840832d3e30a3494d2ac789cb91328c60ce3733ee75aa9353a5e802cbdca27c538574869834496889b57d027978444774600f7293813c3ca214dc01eed08fadfb671ee36a28d3d42b0fe0145f31cd057a00df38cdb40b8553bd410b14934573cf1298a3fc190502f70e64d398326c1aefb519203a59c351651be2260976f24ffe21b2a009512e6817407466afc4957e9072de13f1891f83c5a06050d1eaa1360543c0416b057d68ad1e4aa3b4c04b93156a043b4f9059d7ae9a22531ae1207fdba1765a49061b8fd289d940e9c474797972e984e7ac4b273c63bcfe9a5504ab7b98d07b548715a92b5d6ded7211c9bc96e48fd1cb726afc8cfc9cf541881aaeac88bc2d7e56ef73140b2068c15a11795df0ac9ee663a3e48ae08cd0250ac4490a099d0ab9b996d3691cd3c3773c7c933d7cd7c337eedf93f0374840dd40c5a0546d647e734a26743098d0653228e7147c8704bbb69da2404d62c27f5648f8ac63a334621dacbbb33dfdbe2ae4d6ac1249e6491a839a79e17dccc73c2d67a5f0f1d159e51041a16715f344483f3a2b9ff84cdefb60ef310102e037f76542574485e204713d98d0016142578409dff9fce6a498d03931a15362c2773b6013be4ba22ab0116e8903e26482b699a6b79c2788095530e1b7ab6de0bf48333e919b6bc1fe4271547b82b69dbc0659c6841a9709592f89dc2944133e1dc84daf6011c435ad24e4bd0f8663c8ad5908d85ae78a9c19bdce4d5fccd864adb32efd806f03a5d36404b5131b790fab8085601dafc184ff58c7cad62cd76a56dfc038314fca6ca076fa7b9acb416de043c833a1e399dc82097f5d4b75c07f3a48d3bfdf97f92dc91c9f174cff4c1a34d269a4b1f2e1df620376da40edc462c63a7c639a703b4193a105d66468203a536f022a07a7e03fcd35e19fb41d4a0140e302880dcdb1700afe967e4c81cbc329f8282631bfc329c83c9a4f9125bc8c8dd20f619c98872f02be193dfc208d5382e65a6d039f044ddb4646835296e668e55aee473a35782674bfb91e8c34da722c3bb7adf5c91af6b2942ab54e6742d74c46e4ced53097d54011315d59995e323169ad5fc568259497b25745fea6621d4ec1c750bca3a364c27f54c8cd7b5cab63742df8ded312d02c3346193a0b82a314183519c1b487741ceded6d6fb80d7113fe7bec7118ed2dc0f78f71db6c51706a6914819d230d479545bda9a50714f9371ae298b8d7a82a02d31af824ca888c8979c91cfcef8334ce284a025298ef3dd45e07e95a8ecf0bf1479fe3f3827ffc1c2d073ab16509d62a6a39b1174790d4d546d184b5d2950f09dcdc5098af86df43ed39f53e260bc94fc337fc43dde4798c52faa778a67af4f3c2305dca21dc87dac6ff9cf21a4ea538e5297e1fec2fa703a90df4f2a3363ae13fdfc077d7194a984e65057b49a47f90c6a1619bfd1a2c39e66e0a7357788153bbeffba7fe3f9d82d47042b6c682e68353315904e9f016efbdc70ddf7b0a44e7ab0e7de98573770c68a136cf3925b0871187f4ca84f45a828046999a0c8f9eafdabc5782e9507bcc2bd057555de7bc513f7777b547c139e7bcbb074c6f362e849a0cdb480948dee5124b591d161e0065ea9b806f6e609c0e7a816f740a9f24a66671b17caccc4d5fa52b482431370d23a70fbed9522bf08d9e3175ea0e9e29a88800456f3e6e3f8115f1d324c74f6b50c8a235a8ebb6aa2ad7c0832ebbfb4617eaeefe80162b48c7c1ae8c10954a750215171d44036ca3602f4591fbeedab9974fc87da7ceb976ceb9e67e41cd8946866df87182d04899a705d1412f97a2683d81ecd718a41b3871e5e48327a4279c0c41f254211b98d032b4f0534f15b22189994d15b2a1499477558daaaaaaaaaaaaaabaaaaaeb04a62eb5e577776df95ba170aaa5a28a8773ce3d8fdaa6cfdd87bcb9eec415929999a948666696bb5848fd2eb5a4eeb20e564e91aacd494e7099ddb12a2c10c9cc9cbde77d3ac508df09274c47a292b981d49bed738459e78d53724a6e316772977e388e52d535c87e7efb707fdf2174f89e5b77c2868c91d9d5ec8ed6685c9f9c72f2dbb031b95b1b0bbf5e771be43e2f1643931f915c2dea5c635926027b1a0be4196a2230e8708699164cd3df345d9b7181c90998b06684eceafdae9ed6ca564e6b1b77e7d633a5925058c50b091f7615d5f1bea9e88e374575bc7720e91e7e53d11e366cb066575115743e6656c424e9346256e4a19f987fdf3bfc6ad818b2a169db3cf85e1741e929be8474df3ffd3e4a92b6c9d36fffde8c10130d316f7a5d65e15763e19b930945830da6979f23b51921312f5f6a34c88f795de5985e6aa5202613aa88cfcc7bd94720b9c5f9b6677bb6677b44f07abd5eaf978f521683300dfad679f114a14c4d135ab2a75cc1f22269dba9a7c8b0a63e0fcdf73cc4373aef9be77df7bc6fa017b5ed04755891650c521333791162e77dd97d07868b14df8ffb520042b4c8188a99fb2c238f18fbdfddad6d31a4a6197265789931c4103b3a4ec8582d1a73ff95b051a437cb82d13c0dd658d69994a1bb5ff37921577bc4d727aac37feb76a23b4c68c92b8d537a2f454ffd493a5fa9219348ad774c5a2b81c1742426900335cec628e5e9f4bf71cff457505050505050d0eaacceeaac8eceea0c616e4887543193988ae4fd52d38496dc9ad54041538646401168fa37ab5b8d5364e5df3a8de32bff6ef29ac5ead788312630126b6a96d5e6930431739f0027d3090027144e8aa30c98ca63c7d4257d0696a43179bf2916f7d8968498d248238d23ac9c46830deee1e7c487da8c104843d4b47d66e2cc560f559a80ae9c16db661fdb4cf2681248d81b38d518501dfc16d01d19e042059166596d4a45057ce4b696c5a9182ca42bd21d5bd80c923557977986f9b464673a8723c82d49329d7326e77cc90b5ccccf122ace3dc3c0bd0b335dc6370cb32c8ae77bdacc0476a5ba9a11f26888daca45d5f14395dd15d80c43b07d295d104d13a64ae9e2cac43a23419c32c0348ec09afdad3913d29f31cf76345d09999a80ba9fcebd8ba4b9284522d741610db1b008d530656e52a886a06fd2dc6721fc390478ad5c9b511fbcb2872ce6c62c2137d941f82c84584394a67299fdde1f8f1065f667691031db07697499a9d98a4380574c8124e20bf51eb2e8d51125c62c5ac78a8d3568446d4284eca9412f2ae669890ab6146c89ac3135284c159d304f7c08730419617ac2f09cd1a49d7b448f7d7ab3cbbddd5d0738d5dddddeed519eb4b95588d9a1a6ba8d33dc5d9d43f553714a5f8e1aadbb9f7677bb1c352a8db9234cb50d6cf7473304b91fdfa18638efe1bf75b77bb73f0806869fddfddcbd5b42916fdbfab979466e33aa39e28829df6cffe057d4e63b9b59536f97c3239cfc70e4b2d20f9efc5896316a73931fc34a19a3b69edced583c175d950256c32455a24c28487a8e9422bd7a0ee627d734a886470aaa1c2913e0730db73522398461c277e9354f739271134ad566341a41d2c8b551cc8804d1902594d31489f40edf49a477f83e223d462a02dd83c199c88b79ceb3d20f6fd5406d5b2e3c07831625962fc0b8a3ab5270396ed4b011a34d0d544c55c03535c25ef966843d1de590684e27d54c98bace5529f078b5198d485a7201ce2763e28884394dc5d7d18c591cc511293e4a6724999c4c494a8cb747ffc633e533c3b237aa815ab531994a8061a51fa38f792c263371738cd4547598de14a36d45a2e61c46624e53a3d17b4d8d4628986ff4289d23e88e8616b2acf4c39562f6c6c9cd6b26ff6ecb8b74de31486fd797894d3af049aac8d80253f128e386d23e0c0b45195662ca50c1ecd143b3b8fbe83e73454fa67b19bed1dcddbdedbe91a7bbbb1b1661c129865782c0296dd347c87ec1a98d038b9a1d8f4b8b0b4836998c1e16054dfe299337a91559c15caeb689d9c45c3445b85ce449e2cfdd9de4ad6642fa287306af8161e01112ea768cc935d93558d42f5f58048b60d18d2dfdda6e6c71eec61655414d594c434344249286b9fa25bbbf74d1d3fae53017e672ed5caa8262446ec4831131021e94b9615fb017a7a2fae08884dc220fe6e2d4732e0c878ac179305711efe0a07391a771460f8f6855dd627098eb21ec2fdc2fcc85b91a27f2441e187964243cd144f86238f7c1ad2230bc28460a8c56230d73b50dff8c18a6a1a8846d52ddddada5530d44bd0c1e21b77ecde85ae4a179426ea6219ec9278711718a9f0607d80b73f1f0f0d038919b69c8f4e29ba12c7ce33211f1cd068bf6358a248c57b31873e3f558c502ecc868dd7d092072204283144668270ccc4768270b1213423b543028847696205921b433831808e54004a11d1ea19d1f7c078281814b1fd9200414a50742da89c65f6847052cf44319f3c654a11fbc6082ad96fa7d700e64cc54a125acccca1060603b4877068686970c898444a4293266f981c47890b5e4680a129084498c216b4c1552f282202469aa901221a890434824d2345588082d8c20df542122b0709e6a9aa9423c5b4c9f2a940311c6e86d54cef6100446d18ac8d3c25af5200a1ab45644483a2ff7fe4ecbd128c28c31b422028578ad1a8b225071ad72cc0871fdaecd08f17fef5a0ef4a1b5ea7fefa196e3dfffb41cd78898aeac5ccddc27f2bae061046c9967db286de685ced13e81f90ec2ee2eeff2aeb77a570b4c3a6666e7bc708e1d333be78573ec989979ddf739c7cdce39666676ce3976ccccccec98991d3333333b668e316b76cccccccccd3c626666c7cc9c357f89e5e91d7364c72c6b3866c7cc5a124c75d939666e76fc9899d931b3637edded9c7b76cb218057266b2058adc8db1b687821f97fb9bd57eb224ebd346411fcc237aa034482f3625440eb57eeb752025aaa95fbcd34f57901ee755b71f53498856d1a0e0db59ab0c0a176f5abb77418fd8522a09fdb5512921be672b5eb95655fc8bee1c8af6e382257f0dfbba1d926216801fa1fca04043dc00f1401fd6dc2a23afa31177cc1a2c6ca98fd0e73a98efe9290dce050f713d9dd0c75905b7cb8ccacba906354f96f043147287867b35cc9d2ba0de9d9dddbbd9b656746d4fb2cf39a32e4a6415bca874c71aa7d93288e649b459265362abbe25c6c126c5bdbe325990a1dba3e6ddbb748e0bfd76d392f12873265b413a34e9c521a33e4a652f5666ca3bebd4926a34e1da5772666f277afda1ea377afbf0d8930c2f85b026426d4b621ce00db63a46dfb4a2e90666b06d81d51b53d740dd03b516644b5ca8c539c803382b06e294c774f415f0db03d7667364a724a5d5013adf953a5007a228593a2a99a2a85932950a6112c730053856c7022c9c44cfa916f3007df0de1249365e636044e7f7e51dbe2d3a0b62d2cb9409aceff4a40de67adeda1cd3af9b3247ce30f65ee2c4faf92303d1bb43fbb3d4d945b735b1992edb15335c9d4923307f120a778ddfdf6e4d2a3abc3c8a9ee566f2b98f6e6ee1e238efb6f8e52c965605ab3610a7956480ec92772eb2257c75e5c820043ca0a9cd55215f6737061aea852c8b965fdda96bd3052ffe819058246614dc2f8579bc11e041a8e2a72a605ecdf630fe1675a7c217ef614889f6945661ae0cf3fd3823f3f107f8ca46dfd24d8e98347287e19368df9aa03f550f24464dbb909232cb777ef76777777f7eeeeeeeeeef6766f777bc7a5f93fc99c64bcb7bbbbbbbb7777777777b7b7db7577cb7ee2bfeddddddd7da38a6bf4ecb4ccdd1e86f3c8d33f2dad22308abcb578926ee7e98d3cc07a977977334924df6ac738f7fc45cf9ce6ffb431c6cc9d55934a3dcdd3d49c46bdd9caac65e47c4432cbbafb63b24724777ba5ac51a3311b36babbbbbbbbb73706d41350078804cc237a5a5e154fcbd3a2031286ad47f4aa78448fe855f1b43c2d1087a705b6200e5e4cf52ba850f9ee5ef7fd76e721104c89d2012952ec6a800b29a6e8305873677103d2a3727fd9d7ab549a82c8e50dc0267ca98e2864af76779c13a8a44d78153554884604000000a315000020100a888462813094a7a2b4f714800c6d8644765e3898c8634110e3288842c6106300210000400820c6d4d0d0090a037a073f68c9c5ff92633588a453b13b9d1cb5d2bf0b9e37506b43ecded5692bf1c6f10a6279e2ee1303426d09db7f8bffb63758a46e000605d19892eab7883cb17abdffa7656dd7bd97f533171f71db4f504f1f386b99e8c36086839a143c0a08893fa42deca9daa521ef3c4a48ded876c3d3df8e99a86a467c9dda392b40628d9a7af3105621079afdae07ec33e0aa16c6a8b1e3586557b76b190766b67c91894625e303dcd86e571797bb17e0219a01eb1febe76d9062d7c233acdba23db7c736274f23ee51d8254a233b8fefd90c71edd7334b25f67ad5e69e832b40c483b6ab5f86221aa3fe304f56bb57fff16892aad9efdcda16ee56d84316bd00a960ce740538988898b64431306ab9914c35bd4df2d210484771b455ac9b7beca6d5d98d44c67e4984e6460ee5947111e6430d2a12e59034c532d055c439f04102fb8dc06371bd043aea3a51d931cca85b06c8b375e3134edbbc5254fecb7f1d177c2e184637e0b578988f6350eef896fd811a93258a591658602f718623ae0e084fd07cd5358efd5ab2416c2558900d03a477ebe22be7b000bca1e927e9669d75f4eaea410ef816d30dc251978c74bc6c340533e852192ee5727d6f92c1d8da950222f4cf36c4bad9304e38bf41290de6dec81a14aeaed0c29ac97d2d7af0d453e462e92cedb0939b53a4f84b2f5cdf2482aad63e46c30609b59d1c034b385a3626e276cf7367a53791c466130d3c5d30db9e74da12a45c7909ec260e10231dccc326bb395c4f058f1f02b35e6676c3aff068ff5c258fc4743c6514f79a559dd5c1a46f7fd9f69a9d1608535a36e34156c13620d43c0013747f486f9a6e49c10dd6e53e7deed1c95c13056d9d9dccc6fdcb421cabbd65cb2e95cc6f093bdb091b9d798d6dd8e6ee907d15edfef9ee4254be7709a0c5f1b14501d04fbfaaa1054ac0a5917bd7a0653e694f8a68097f1c5e6759dacea5f99abb386ab0103d7985068b555940ebce9560f4e0f2cf742024da1ff5a719a5d1577142c49a28c2ebb88c4573981a3ddfa914275aa5af857da7a7acdd9f3052d0aa56395c4bfa36b1ddb34ed804193fd8fa4261439aa0ceb668e2e74e66e5e2513b2163d5fc2111785dd53c3b14f4bf54dfe5439c2fb2a32f994f3d30ceb2352b103b62dac5df924f5d8c5bf9056efc9675321e54cfe655f7bc2c1a190cd61dfb23ff4e021b1e4f0f129728a6d5212572bdaafa01ad7612481840ce1073a51f3e388fa87592b67c584c55e80d0bc97abb317e9c1f913863f839e7654164deeaf4922c3df53b0c6f61c60de0a91c049014924662b0b724b72a07c6603dfbc006b70627a8a7115798027a66b76ae0e3a48c723df84668c154a6279235535cb2aa78a5843fef54f28f54450d2a06c22199c58d6c737ac59fcb6492fd5bf138ce33abb716b78f48707daf58b14252dcd9875adf90fedc058a4a99e20b38b1f6e1ce2e9e330383b0152301909fde4c9af55c8a15028ff78f8db904c45de1a4d0e8a8f4d5939bc7f25872be12370fd15a512876dd31b9ac6e3a06283957898f594c91966dfbddfcbfc9a0ef05d0c88a6bd0fc0d4f3d279b8a096a7844ebbc5ad35753907a92490bc026f60493f8220b7001cc4e781c925e7540af0dd80d50641d7744d53fc2043046401b44eda9b9af1d80eb4151e59c3d58f78a5c5ed4b7f68c9a6a8fcb18b5072b560a0793f69430b51c692613efee0fea28d219e336d808f80a8acbdbee079a8591ac0cb09981beff76d1abfd43ba8d278616db1f38db5b27f21a67fd7acda2b60a4045a23de072ae5c7a22d136f658982f87439b40f95aed9ad54e7438702282c0f6da20d0d061ab7d90e17a3a346cd4cd427ae837e6e2841a9c744217c4b3b30e33dedd95a09c110c1fe88d34b6a595922c0c315539f3ed10bd0d2184bb531f69cee9c4437d3ee81e9c44867aaafb48e7fc0027ccb9fd9a70006b27df13c919d9187c308c11d2dd0777803023f513b18f1f1facfebbea046251cde4d5fe587b57fa6a27a7dc5ce498a52bb139e89b1abe3faa6891c819a8f5813a4398913a47a543ac8c9912f32bad10e17fa4a25305ee09c00e21942e7c5ca052d19588e79ff7a81b1083667b5a9188c36b937090a10f6ab44bebc67d2f579d24587c2422741b402a0b8f6308cd39005fd90702bb53471f9e2406f2f2c5ce206fb2735d5d4cb5892c0267566b92f0882c17668d7bed68ba868a8498ab93c4cd4a8076bad2d334fb1b667af7ff8a54ed5279a9492fe424414e035b455a471d457e01ed857e504f5d8e5a34da381c83c42f841c34e0957c66fef44194c2b6d67c879639e2fa05480138101c9c054b5c0ce77200c598778698fdf1114ee86d72178db2077dde209d8bce51d9853c5ab0ac2bbcf44a379702f0d52d8fa3a62d69bffaa97b7d32391a9d2dcc05e7e224e003540aafcdf18fc1bc6d50873d16d8242f58788549a1995f6c4b8c202741dc3b2775b9c2273825ee271f1ca736ba9e9fcbd724a2716510133e436dc81172cc811966f43259e01746a2599a5e859d758ee6cefc20b431539e65064f220bb6758084c7f2106e865b257464fa3b140c26ff17335b6506f510a7ae71c81e4150b8f2c41a1050f10b853af78bc0c9a3059811e4bde89bab77014e376e3e8b2da54ecb0b8830df847aa4f40fd702e1308c8c58d983435824cb5df9870d2cdc64a51e48dee9af079137106269125b0ee7d01369e2734d3cbc04f46782e4964f45118cd9c693a4e0a6fda46dacb094428baaedf5eb721bb5e0e8e3ff991d252d43fd47e0be09844e6031b05f061291a817fb1b665e8d01e37a24abfd3fe10394f955133b01cf53159bd8f71036c83e5d06c63f147050b35ba9d7bfd5f770deff760cf5241cf4d6fa2ba441deec30600fd74b7b6719a65e4ca13515009dff2c295207b8cbf1d40e301d2296f9824760dd3ce910dbafbde26f98caa2b4db14712aef0a6a81dd6a5fc8ebef80e32c4dce3991f445049a85d4e5140dc3f07f3e66a9c25530f7c26a13e88a05b200460a23910be5bfe350c247807710d93a3a8953756ab04e2e12e0c3e7e82e943b70cb6185d9b114d3e3ddf8946504a1ee08adced1bd211d32b4184f4021b3c6946d4a0cae0c7592563af3d0e9e423222d8ed83a25b1ce33e7ef1b4962a19fce8690afb671efe0554192014fbaca09d14d6c1da0f42ae577e878143d35f039e1083cd2c4b6321cf7a98f9c6db4071f5c85c7d4c018a2221acacd6dff00c4431b54c1d84ed669ba05297ce40836c8e83251c8be15c5464695c3b60c7f775cc5f6abfb9b304ee334b062d5677717ddd2553f58277669746a50c0754e4fb7ca452aa0c88f429b9872de4c0f333372bc38fe8a00c800ba41e6a01f2c668147968d29e8d24313a9a47885d0e202301530928879ddf464719e72495fa27a17f9bc791841e542600d6ddc455f2f6193de31a865ef431444c7de5f5e67837d30ab19131ddb49e873322b3a67e6b92816af4bd18992ea8802c6ba7b8e53acaa06584bb6bf540066a7a0ffb88d7687c94e5bbd57e6e81dca8b6cbfcf37611e9058178984123447a122a59e8d44d6351cbe7cc8a7abf8b02750a871237106632be62671b5335604feb60b63bf137be97bd618913f91d1d417649047ba24487f6692f54688806b59d0834fe90d50dac1a2d7f827373615664f24100d436060e33c6eb018e14e39f16eef21040391e3a418856fe654ee5881e5aa326179bfe0f3339451e908547e776ccc62317d0dc19f072f06d56e64917ce646ce271b4231680e681e9a12e73ea183c36103ab823fe52b98c4d377774599e94fd6a58590cac57335d520841b82f07d70fc6abfb8f0613090709d8d938e7873413376b53b1c700ee829ac0b207f32dd80b5f2926af2a8e936f84f8ec22b577dd0fec0e44d20d1fe11072c031e6d09542d69e5bca38e64f173684a031c7aa57bee8fbdc376f3adbd5971ec4c994ef98ac6bd4de7e9588e0cf91c9e2d92d31c60fcf9b7b48da41334922345f9f21de65eaedfc697db9b0a6cafd715d0e60b69de42ef34c8914693532039bf8deca86f55193e4073332347b50e630c9466e915b8fe22577c70cca8105ac95a94070f45f8f5c139295e209c1242c70990a8b98d1bae71ff4cb710d1c9d6aba4576a40cb102c457caab9ea4f48bf92c76aa0aefc8d8f5283adb7b716f37937db4761a149ba253d4b40d4e1cdebcf5a2de70a75346444124d222411f9127182c8f09164533e23da7a526a2e58f702a4efec876b2a4b8c27bbd19cb5387062c4318efbdef2370a0d9e15abbf4f5148bab2e5a4cb0e358824812cab2c92d523199910338eeee771243aea1e32b86d5604a3e8d388dbc5f84a098b9eb2dea9af9162eecfb77dd6fb41ade9f246a28c80b9bda1aa5ab6c2b345398bbda3c028e5d8180335d30f8e024279f27d41e1e6525de03ad49e241b0f90266c8758fe45b81bd8188b7b2070207d31b3829292bb0c6b60178406fa4059b0702e5582fdebf1c45c00b7d124ebf25a9586cb6ded1aa961830f68657a40b46e8fa023779ccf8558d6d0c113aff7744fdadcdb871bc8224006f3a8ea5a9f585e9c1910d2fe4a2b6e4fb120a74194016f1e80f1c4d68fc5bbe5bbceb0ffdeb673bcd7f27cc3d37fb6e94e83ec43d6652b183bc82002b09c180b6578d77195f2d4dda14d9f883e9596c03e099dae869003ec706b9ada5cfef7e2d8f65cb6a531c94099941d110a20092c1120f801301a0470c8807358e0f0080e0f598134b080160146a2d75f111c2bde645ce15a52af0b6fb8207c42be4c3abdb8b8df54badc4373d7bc769b24b765210468fe1c5bfafc4552a458f75b565c05d25e68815e6e2245cecff21f25eb64aad346025251a45151fa446961d83888e2142966413ec4dded61c5f9a4b57d6bc2c30d3fd9eb85fe6befbff52a7789d1962a9c7607c3f8ab21f5db857400cb40c39eee04b3d5a51ebe57cd2d2224957b458e452048ca35f759ad8ba4e9f4d833fc7b92d78ebfe13891227aaea34361a0470158aef84b8066d47a63e1abc4289418c8210fb4e077049308e5bb063a386a5a9aabc4b14a5dc68bb5ad160abe103d73a5c8489beaaff67833176f0538c0c079b24bb343e670413bd69e9ca1acc90b653414703a7bb34557e2589e5df9eabafb6f149ddff824d3e0efc0bc844593014d9441b3ee5711754ab6527e15d2000cefa72b49f6e5f373e853012a1c921a538995d6f8cd955356211ea61c8d734374f78e219bcc7e0262b7f2a90c2c662e51da48e249a0b5e9bb4344f2606a1500fc1295b1f1278231c2ee1bcd1e55827b0fbb1161e28f84ee988c16283dd0df55fa93909217cdec254daf837383f6bbb0ce95b5d206090f08c8f3f39eb5902b39bac1c41a7af6885e4af71f50829262406040d26f3a5945ac1681d359f4fa35cea29af7b28f491a2a6750be08a376db324e960ad7acf35883bb15951b8d3456526a587cdc3388a54463aba22ae478af64995fa1b1d2bbd10ff8509ef28948d81108575ce8ef83ac83ca78a0b21c4808c4ba6eb946f51b3df14b0678e376c011554faa1f84f849858101563572218275b2762077517c5c6ad62f87fbd5a0ab5ee08ad7d3cd48e43baa33b04fed2918fc0362e6e28bfab07a8356c5ff42b7f90f8ecd1cb9951386fc05cbb838e817cfa9114cb362c7e37a6501554380526546fb895de85b5990f68561dd8f55f6cac6c4a653c9674c5280c94304e7edd2122bb4a7a7d23329c623bff20e4f36aeda53ff886646e333a9e29e3850bba511fba10f4a92f5fa4b8243d709c2cd34b2052c3dd007520ebcd41f9312fd4a328c9918bb40e9844148e904e4910d8cf7d1ffaaf12a9a0c6fb7be4b46ce863a8ef608c2cf58fedf13cdc6c120b2ee7d3367d739cf0853a8e10b075d20634576e119bd3e10e4c0986585f53d6064bffb8d65c1ee0f4910068e37fc6971584cbbf07ed5a98015a5368a8f53c2a869cec14c7568fa15f40e602556588f953a98ed21734a77e3fed49d40887b6dfc4bc4bdc96c517412e9d27f9fa8e9ed15639a9b5c7c275d4571aaa2ca1325618c034f3d7c184f8250742d75f253097d444887485a2114af49750e80e3c7fc15f49055ffd464ac2ec710cac8ba7621bfa9edd0788ac66a1e7f77b400ea3fdcb4668ac6dcb1255ec74cd488572f1e6a38daa9bb29faffaabe900dcf8c3bb356127f898eabecc1aefddc3c2018609d0a88f546cb3256af58346c42be611624651d5c258d5043433ac08a82c547a2e21dab8ad445d8f1ede03de39da6f15e72c10ef86f65b0559fc417dd82317c9367b634658bdeb4944ef0558ffe4766ff2b06258e0bd49833978049a5600f50286ec1c25d206de7375d61a5836d44bf2899b865a8f9ce07067a14f764d3f53490ae4bd21a7ead4a2f8b83daa817ee384b2744bf067ac51af1447c9da67be1a9512617a32766c0ab74a3b691c60b9e2cd270ff6590e1c931ff45910f85f3031ecc1cebf2ba8affb8f4777d6ab29b9d8265bfc7391fde904195038cdc34f6cd758f1c4cbe429683faf23f69538b25b8cec301dac9db99cb7fad89f0c23d50185dd2fd23ba17d9315fb6f9d0df56dc9e2a68b1142eaf5e1a3b6c232c013123f7885954ed1e408687328b9ad522fa1664962aaf9e89391f062ebaf346dda66a54152e364f3163a3c713244bbffcc54af7d45797dfc2da9da12fe1bb5728210e873352236c9f771667274b70a4695447c515b351ade1902303a69fdb162f7989985a74d872f04367fff83b119eba2802eca8b16bf72091ce53730d447f7adeda1d10723aad652d074a05b6f21aa2fc5eb54594426ed02940524bb7b8197686cba8b2077c5b2783ac64f506442948833cd3c6be61376f8444e2c72ab03918a476e88fbf7d1381bfa5a5fd628782cde8c9efa9e22d6ec85e3244e8de1aa23d37eef50dca28d7702bba429512cd913f2c3b57506f6405e44b2076526a02633c0a18843d3eb31223006bc7fb5b09f9f64edb6d1ceff1dd7c1b63bdf54614cfba52bb2dc696335e0a2f9a286398c5d58c93408332968a61b24838cfc606c97032ed8132f2d8328a4498a576be85c4b1d688fa13d276891f81b9646fc415e99d3229b954df2130d8a7570411ed13403c06f03c486e86a5b5f6343a6a5b05c3be5739c08bb9020a80ba833b49113cbdef1f54101c8795838ec9b2a77c7d0120e47fabd091af0f96c10104f3ff7b0a0e625765d4792fcbbc1f003d79c02f7eaa2b20a6f23b009f5effb8e8b0d891332218b18c2f9ceaa9198300ae9ac57b5e72ced00ac188cdb66ed6d3c5b0ff3e04157b56a8cbd8fc44c7cc2f27dc205eb9a0684bdd2acbbd15763df6f04bbba53dd6775c8c195abf740f08d4342a7204ba82269f14bc96588b907e6cf5f70a6cd79f6b0a9d0e3628c4549cee7a6e09407ae94d51a46e166c6726cc98a5e8344c47785d3729b676f5291640c62780389fbc8ff88da23d1c2a5a09c44ed5f22624b77767a9e2613ad1a001efe5abb8e5163726436aec910c32c3070de08f8277ba2cd273c86a6be31e36f3462f1318fa569da622c4fb78d427bc415d0f3f2c92fe2500e438f959ca72fb1e54605fa8226f43d708e64ff4cd5ef8889f37f879b03cbeb8ab57f6b4a152030073a011d3999f822619cc3b994748a23f264729b52b3d9c7cf15dbbe4457d3d66447f800ae754bfa5ed68165a12e0b60e3de70c232280b3fd9d51b6f1e30342a22db0b46e45e7e620cc462a2c7490db15daf46f1b62aebb313d76b4c9466577cf369a9ff3c4dfcc58c1cc6f9aacba9c764db42f91f662ae92f67c59c73320d634e03444e90f570a11167f7b079dc6ae8262d72fbf826e51a41bc860d8d677087e19befe253bfcd94e43669d5e0210ebdab61cf00b7f071e6af57262dc2c0cfbf716e694ccfd61718836ebc859ab2b60137562699aafb06357b94e66a14502501d82eef00794da35a1e77f2a81bea7c9ff198215e7d95c230047267f62b6520a507e153a710ed2b8ae88952734b8f0c8eed8dedc4cbeb3d728c6e9665a12f32f462c0f49d1783d583e6c1a5677790e07c158f52575f52c318eb6d822ea74446c9e22a6d9a33f614b9bc36c1b1517bf83500aced7a02c2e6244793e4d7b53039f12abbf21d7de82d1e2098d7923168757b3c7335edc85ee67dec9e2a07a7b5d1277d179a95b51c4bb5950d5ff97695113977ca4000ff6453a8ee8d97df1ac185e2c4ad279ec8b6fac24249572cfeabbc2766f0fb2a14734a0b7e86a04e4c60c264de0c5872905f38e89dad5ac6ddfe7fcbef44be10f919e257514cd7165162b867ad97f40aac35501d22eec82537f1bd61ff88d3efec0548305651e52eb02563397cb5b4f3fe6e615d503666902181930612765f9476595a980ce3fa299ebc7897e1715f94ae628c4c8216ddf4aa757147ab9d53bcd656c7e98178209e840c41eb2260ab698b41ef2b8e4fc34e3943bbc180b562dc629d4021b3826fe0fdc2329e8568ea206755ac4c183711d43250c0b124c290454749cf0965ae0987baf555fde10a8b1d3036bdaff0629aa5eecffc9b1350369c065815dacc821a9942bd5bcb9f93be07e2dc24be79478f13a4cdbe76f1d88ec8d4644a4300c748a93f011c9d414e0fd8657a8914008ad3df536f306ac8650ce25ba8858898a29fb47e9ca7b035eed2c44d1b58d92da949b03a1f27dbcffcc7a2ec0505bc8a5dfd5538f82e3136f1a826943b5c5c4726d676689786d83c0e7e70d0c848c807a1ef8bfcf746c98c60677274e25806b1101f8f147911229d8c779e9f894e3b4f59ce3ebc9013ae1ec37cb1fa0236cb63de633144247c548d854d0b78170a50f2465c56460982bd3125bba24608b2118340a488b066d29e1b94dbb8e981fb78474c1b8bf5bb69a770e5ff15aa50c41e071eca4608a42f84abea5fecc2215b72681fd04fe38a6e272f6218c19b0bf5b6f9c15c3fd8a5c5365d87cc5f81b3b911ac19a6773acf3f323add63ee392808c0767095fa8302741a1b8f7265f2b2c0ad2b6404d7b01f920042e91d0b752e408cd350838e278b804e2b1e3be82f97805eaad5350499c08aa0b1d59be2234ce546f7c14775eb1cf7ae42b0b3ad92d54ece164571d04b993ab2bb1401175ea7d4964fe0c154edc22d913987a8b2486c20ed790e8e741854453b5f3d2ce2f5e5080a6935ab1add43aecbc713ab1aa79fd9ce7181eee5c2ed4f5caad0670e3a93ca71cbd9351675109b4ce0304eed10f14e6c49abfd9b2cbf0c333f99e90c7451c5dc8f6cab681646a838849c7c315d32f36b79dae9996339536f21ca157fa911a5b09dad237afabc9596fc4881ca92a383a46106c693ecf11e18ebfb88ac0fab7a4402c5f8218a743627a5c873c5fa354f063101bf06c567fa0707eadb8dea372f163a3b72f7e3ad03f67aaff657249f992dfdd1e7efb771267a51a5e2e30343b5f8c4a850d7fb394b9b65c377afbd2ecf661253117a0bd3788f151090ab2e50b1915496340d1256e8c93605f208cacca98b48114b5c44ce20f3eb43d510460ae2854506175ded0c51df6f5c11501395756f28612cfd3b3b7be26091f661eee36ef42752a33a75d450af71b8860fda5f239824afb849f6eb73311538c10905573a846a1dae80efad63482b1f282984a23c20f8141299b606c5874399c17d9ec438dd80fdfc7a42a22aea870a28955dfc0966eda3a2f55a13be7eeae96dbd8a212326e7b46649d27961f5decb0d86a7d5db9a6ebcff42b7f21c12c50c58ff93c69fe716f807b8b2406573eeb013acf60b6b5ab3da5b03318ea4eab6a40662ee05c8b4c7e0ffe4f9912331089c35073942106e37e2342d9c3085a6a23791511a212a7a9e72c9e2ebd6d85525e25abff48c8bf2eaa9fd9e98487709671d6c2ff974d75ccdcc6d6ea6c64789f20d22d3af7813692d0b0e9b6381b894a42e23f7093fcaeda239e2aa6f04bdbd4ba06f5a839acd7f013993d20b4bc9cabac268e2e14b3f1efa6ec161e4dbf3ca16c8dc253cad3d5a9ee80b268452c57bf9a6a4d2c6c8f7dfc6df2101f72d50bd2121c78428b1ab959fd47c19a0df095f038e1f1f34bb2c2b23044370f649276041985dbd7819079ec31431844457119e9f8d17c2af108f4a3c59418d3883c0a562bb16c7a27e751c84fd01c22224783e8b97b64b52ecf54951fb179feedf9c0fee81eb5c7c408f3defa122f7e151cc5f36f616d7dc7df42e283ed9ca16b082f8a27f6aa756aca4eaecdb1abf0ba885df91583ed95d0ee520a54479e20cc97bc58c4146ceb132861ccd1d458c268c1473a1c0eeb1739081f8987c80af11b83c6c71928b6d526345b1841361f10d1a5193e86e621c28d3b02e5197fd3e215c83e5b85c8f866c64cfdfcc44cbc0d915866bc88248b433995a994b33d5b0ef85d15f7b7e2eb23c8a01ff932791a442f183f6f7470a0dabc01cc91c9a16859d8c27b88fef51b229f529d36c2f077a8a810062dc86c1724a367b7248347255cf9cf25f6e24b16d49fe15daa2b38ca1c11607c6b3440e2c49a767d04cb93cbf3fa2200d1f25582c18cecd80152e213b251e889675691598266f53a8ee37b5e662c3c582084e3e6e91fc0e9fb39a25f5bf96043942a349c1a0da325e3d92aadd34175fccc4c0cd0fc85a455a71e565dcd604fd1174545a0e5a75f3a303c6d822e713a316441147640d643b6664ff8ad137c5293f2bd7f1f99ad7c0b1b65e82b829ad7a3c13144fe2c784fc9b663018c23e3d9484088e86efa7bbe0631f29606b7f77e161451719e44efbefa816260f49e0048c8723a9bf2094aafee6167194017698a53b94329cbdee40b037a95a1474512221f52c735f62dce4988bd177da17863ea70fe3a2dad19849994c92a3b130813cbcc4823b124d5b761d6b84e6990c96ed645e359ca5f901fab0db24622ba99c10f7355529f0ece39cd9dd1f26eca3e3c5a15a81a20280149f3a3cbd119c0d433ecf2bbc690979ce86c56fdcb78612a8e2b1dab990bc26afb669d8a3ed96094e209159c2881d012111b37797ccf7bb465971e4813f99096b6bbe61f7efd00d59b3cf9dfc0acb94ff0c9e5ce1531a40a9b746c7a61232ae7156049f7e2b0eadad6ec12e597a9bcabe3ae9a89b10a8409d0a4f85db2d38039a9208355560601275ae46a24ccfb3b97d0f09022acc0a780cbcc015893c535202641ebebd3b426ee98fb067692b3e15a1cb4fb38eb0122c9ddcdc98a900e601ade7ba9a5db7814f8fecf5682bbec70b6ce27f39298222261c495f09797337c78077377f494a4e4badf3d5210142ee1ec657c4f546675399b92c15401bf5ab92a68fd05743d34e827193c154342abdf5caba09b433fd2a1408557e8147a0d715480269e8bc7bbb243814c632b462b32d827477a32ccb784a7b87939dcbd9441d0435c14643384a43a02dc0b311cbf495a884ee428380dae84e0196d84ca07f7681e11391b8d818c71f4d8ae80ac0428d60197787c4abf0a5e6930f9d24f5770550c873ad2b0b84c464af64b28c60f01c9fbd1e223c57b25820099ed7b28e225114c3ad60d4c8e981198a6d4bfc7db83fdfb75c37c67cf240cc69097fe7552c6fda1d179ac240856ce908278513c6e334ea40ee1c6b024df0804ee0af03a142da0766156c2ca780aa0058a06c1d191bc4b8a82bcae819476edb7f3852115eabf60d05fd341de6b1b5b9a29141dd2eb9e96182767f30c8938a73598075a16e78525e893dbb1899bcb19c1d0da19c19402b553072fc8189d27387d8eecc8f377cb31534349d088d3f090c37f7a8c70ee389c2741a144c2d067dfca3ae7a4178b5a56a8e648963b93df691d12c4397b16e507f294c65041b380b5a497624fb5c9cd9522dd08f62d0631dbbe5503bbef81c31472fc482e9c71da6705902576b4b718991298ae2d12621654d820ced93e1d7a0572022d7046bab266d498ab1c6c1aa618f11049779a536f3b42c7d6b926269453a04680e4a9a006e5f9498d91bfec680c564af38f4c1651d094de4731234c9308e5309cfa22489aef031b8c5b4464ba1ddbaa32a3c6727335e9603bd491fb3f07caa4cebdcd13e4959667e4622e0131ea476e22ee78f8adc404d3b477ea5b23706fc37deddc64efc62ce2003fb0be6f2ee13d97cd798eb75b72356feca9bae9f90bce546fb44e5a093009dd3f7c017b34ea1a782f7b69874d9ef27e082e9bac1105780953186ec2119f3eecc273b7a058910d6a234bbfab080dcbae9e5fed752a4a553515776ec93e4b7dcd25f10bf80da1821e3d5de3dba726c9d2bda634a284d9bfe841afe8038d3204b266db6eea0931c50f1ac8ef0d0916c168ad417802a621826ef5291569d27e3f3e6f344f0935f87d30afe05ae6b5a637e8769d6db4607a467ae2cf6da8a9d81191f929d2c81c351fc037e7d376f134892a92063b49c364f62565923a6e43bb160dc0355164e852532a2c55fcfe6928aa56e1cd0f269e238c3cbdc752cd28a953b33452d1066ea41d687f36f70415ade8a0d078301d1a3ac4d3bddf8893fc6a629c4401febac875e359f0eb05ead779876b93d3f67c91343e155703d6449bb5298f13cd028e25474f8a37cc837fb559bec1f316b336e3920770d2dad474ca385d666d1e4dd5274e21cc1215bf57a86ed985a6ca6c16b2e614511cd572831517feaa97d369588856f441cb3173a35c5e646de42ebea26fcfa9f89c481eef5cfa0bfba61981f70cfd9c3b6675e038e327e738ac0020248311e36c135da3c9ef4671d895d2ced26ff7aae981640f26637e49e50ea8a3109ce0686643197046baeecab8f142c780414e13c6055d3738843ca3ba9a7f07b99c89d1cf3c06aa68538b18cc8fdf3793779eb969dd6659604eef4c0ed44b08a0b34f1f3e9d74fa0490b9ae8373c01741d5ffbc9010a0f9be6d9e4d2498f792514bbf5175152c4d8dc0cdc031c7b3cc32e2ef7039ee13e8c0bec52c9a6c4f2ee26bb6cadb008c4098b0369a8cb8cea487fa550b55e29c3c1f08ed0b370a7efd4b586006b8057200cc97039ba2bb9082ebbeefbc47066fc48ec393e3fa66a9ddfba140f10e7831f5a2e7eadddb2f01ee8daad542367f26f8fb0491ae22f9d462c2975d5a2534ca1b40d0b412a91b0becb42efb59937b3176709300b45e7c54195228fe7dff425c637a278863d3267afad499d8108a94611596bdf5159130bb5185a5222d6e7437e44635612102f59714294fe116b3e45e4d1103f0058beb011a8cc877ac91f48c9ec9cd0161b1cd59c7d3339705ecebaf227c4dc427d6bf695309606a9e24ab437b2b536697414bc438098384bd934ab8eba418fa76652344e0b8583a4b6ae86362c10fd05bcdc078c9b88d42c2b5dc0296ec1bc26de234daf41a29c804350066900d995e14bb3590885b6889048c3b847a51b8e853b1e254f8a737f4782f35c782342ab5fc0d90e6d912fb913dcd001122056df071047962805b855dc8a5943ceb34bed021924eeae0bcee39725854474c3930682e33b1d1304d8b97cce081abaef8e5f4958a0e84ff60c1bf504238e5b4ed530c06dd197644ecd8370c836afb68ebd2fbfde2f8840ff22b960d4f230301a283737f079cfca65334f65ecadff143285dd4af461a44a29ff21d26e1e673bd59cd8f9fe03afae3b209b1b163187290f8433bd24bdfb2254060307fb025e31d0c4ea1b028d34dba57d06fa58e4a76056b45d70a0dc084f6fd3b830f8cc6b0158afc7b79592e60ac44ac451cc299892ee74a2df86a3619809b3d6d6eb478ef5ff8d3b2751620f8057599920700de7b5ed273b25a140b9e8ad9d3895fcaee0c50b005e97aeabc8ffb2300f90714fcd6fd3562f8591fa12ac31471e2fe434fe48a7b869e8017f7077a2247dc33f42c76cf07a5e3b2344eaab492fa4f4278e2a010470fc19313944e8298fa170110cb107cfc391d83bf04beb9d69272f683b85088dac595b2ad1a996c7230b70138ae9cb4616b86c678cc9cfb3f572494413f0a7fab0d95202f366c47059583e25b5a0ec863f8cf7ca964d7a0c8b2e7f01ac9c62bfb863b41b263e0efeaaa85aea7732b65203745ffc3fb7da994087ed072160dc03a7245404ce3740c5a1bd21fd99e6a95edd02a8ba7f41ca218dedfcccddaad5071cd601664aff365957cf6d2dd24c059c2434ad9894f2b93695cd2bd5a60d1e831e6205058c0db1c9a15edd1d0f32d72f20d3d6f4d0a20566b907a89bcb78322e3fbac1a2c1be9be0e537615a1c476ad91c525e86b95f7943290262918dc31b4ff1542d2dcd05490d42c9e93c06eba1784e6464839487458ef1529c0b3e210ce3eab4340ff3cce05fa10f3c0967c4ba41d7c9c5de3b1ad4317867136aa4a49bf98530463f51030bc2dd55c28f376078761eda42a39eec07901fb1d3d424cf79c58de07338d331722e7a0f9a50ef947aedef83637aee5efd53b1e4bc2320a7564ead382749a1eeba42981521e48b4c65b5940586448981fc4039ef9170145cad50bbafadb49e0b7a6fac0a517f9e240ebc5f28680cf61ac744e5ba507dab202166c6bca18feea4c872f047e5808dabb0a70707b0c7857007b5722d4ed1ff51b56ca583f2a067453d7d8caa000a3e2e1ecf01836351717f04c2a5b235aa72e81f6334849fa5d82121a0e6485489380c7c6106d24d1c9efefb8ee7ed9df823d12cc73b0429cd046dd217f8debf289d825403dc27bc5d7350bbc3f2d7bed1e433bd6b0567b69b42aa8e92e02da2fb7ddb41d6326b5f7aeb891a51060e7ededda130ff8cecd531749c788b57bdb46c21ce0ca0521c6196dc8accb9838de2f6afa770d209b27724a8c96b503f8fe472f7e48683a66346ff28883a4ee47fa777e51f722cfef327a25183a1f0d23a75f0eea472dd2b93ea7ebc519b90cfe097a2778c0f486d5398ab60a7e65bd3068ffcf17665882b0c38c199328865b85663536b368637339da501ac17d09f84afd03745d0e68277e4519c1c7426eaba4e7b4a450fa91d044140f8fe6343c08580955ca57efac0a8e35d0c5167488419eb204c9e8adbd6beab4b83674e91664f99b00ac09e37136f0d122bb05622e9497b73b788b5b4c7553a0a423db3ccb7465f30bd7568c9df9feeb5a442bd87b0cc619305541dca61cfb74f85a713600232bae0d079dacdd6bcfbca5687e4ed62044dcec65f1aa7b2c48af84fc70985c004831e9dba88f6ef09b20516af284a05a311d6f317030e463c7ac5a62bb29147470af5cfa82a97b81b43441838a0bec624f3f7e830e8279e1561303903be8bc25279598330e6eb6f62635ed6c05ff4ae530a49743251406b10de6dc1d237aff14700d96552464be6d4fd9a6a416c49d8cf99f499c9f814d5d3f28f93c43047678507a1037d888ce84748c964a34bf9bf54962e95776691b6a70098f85d9ca54842c74306f255aed15f5467633293d4f481733a25690861d731d90dd0a1dcad50b55a24d847d6ed158e9bda6ed8f08d8ab0a61ca62f358007bd041f3f27944aff3715a27802d7707edfb6f43c147cba4af5df8eb0d0e76ca6467deb3c7ddb23d48949617c54e5d6702b537df58e10ce5b3360e861161c8b9240fd8a7063f0297a1fc146589672321d73230a3368028a87c8abd4f3106eeb7eefc6930c8173c12fbc5cd85e8a96594e5ea0d34b0082d9a3ac58b7c91dedffab88996429eae7a81d826daf5c25fb8373b6c7d41ce5518c5af08030da1cecda8c5a681f931abb96552035981e582b3d33ef7bf1cb72d0d8264937c4c7e6790c0df08bc115c372c3205bb58daab7c4e8d39baac9d6c2d2e04bb7472c9a73130b298feb8f5d87ce79c13e7d710b8028d7c415a577ad6d4000938c44a8e17583ba5bca0e23d1fc5f243a3039ba49d44c33c60376ab1072c1a915c1c95d05dc8db0ebc0d171acc2e073f23741a456216cc622739ab4757333f0f9bd7fe16531e547fa9dd205439013e2e44d7f7d24605883f70291db0b1ac65c28df91fc95792141bcf1477cf43185eae725fead6b55170293caf3f8275254c7d302cc46ea03530ff0b64723ac650d080e9b294ab366cbb1d081e54351fd7d9e33e296ebba69424a8bf524a55d179f78f06641209aaefb7f110bbe11a6f0e2a3820d438833a2602ae6db469f0d42ff593c9d0265f72511966f7fa1d06ca728036a6f3177362a965eaafcf2659ec7829d60510560fd178b0cc1d1c12cfab88fb015e2cdaf7a6fd660b6eba9a1aca2912001c091d9dbc8b522469bb946ea3c588ee0d87b7a1c00662e8ce99505c0865c2cf1b7b122debd6e9ac4ff8b93347974bd0ed59e873ad14ea97bd934a70094a3d1f1e139dc3c48999161989b096177cba6bb4cd6332d06f4edfbb066576bf7dd02f97a2c876c8f0d2700b9ece0ee6b06f2109a7257cea63763ec57eaa2877c8887d1301aa3ab468743aa8d48b85c6cd99021dd7c77c2e24ff4a99e29429d6efda3925773fda46c7e304908fb09c30a69e0947786c28cb08916d0044256031d55241ea94280f322109b0a13dede2bed550e28cc0b003cbe16f439b7d7b94602a64e35bd8653e6bb1fc8f495ef5de59915d01de6cd087d49ed2b36fd78994397ee31041f6360fe9e93c56c194a6b2e35219cd56d62fa665bd059648c2d32c83a55184adb84e166aa99c870e4ef3430316e0344dc509f0c5669c215fc8218d75569660a26be013a88092b9f6c1ee3da849b6fd113ad1eb90d9a7a92916418ac6f3dcad499c3f03d659ba967432a63f776829756c95af1560b9d572c3a343b17714fa1063e54637c7e032c3781a5418101edb5e20c28f20c997e008824c2da0de48f29a1d902e107d3792e3cee0ad1783139f32cfeb94f8db7f51ba2c63c7e8fec86fde5a3c786620f22a649bf88e8e2f6b71cf4b6280731fe849fb68f9e3b579592a4bff4beced32b4178ee8f832b406f44848a82cb4a5a82070bfab1c0376ef484a5a182a00f524860f811c987840c268ecbe88b0d41b94d56db42f4f4c645cb2e207bdce81d51a2d48bffd19db7ae3ea85de77a1f7e09000329906aaeaed723dddef2429977136c25d3b780450e26733056e9a6e17f8147f3ad357ac9393541194ceee5a4e02130e37fc54705db7070278a1b444cd6f5dc7a655e7dac19b0f705ac3f6c68af787001bceaaeefa0642c5146e9a1bd7d38d19750511a9d3f352bbd1373e8492b62e7e68845eb3a472d5d12509dc07d09ad9c0ed9fb835136f01736e8b27d69ff4a683a1925d8f201213aa75da5430b0e2974d5385be019294e9687d1ab833f6b142e864e14c733e248637b11a76cf7441ddc96128e2401f24f786bd081d575b3d45b2ef25dfedcc20a39409b7057c6ed933e5e6fe4bd95da1f1cc0ef1307c712a7f3e74a9de7541470e3c37f030761a315abd7507ae78b6b3746fdde7615a07c934bd4060dd1265ff35eb1658531c6a1858bd729a19d1f7e0467fef5f3630b1b700ef54b11529536817002d157be3371840831b34d934636081b36354c48ee11049826993cc76e533bc7c8b175e6c400073618411ed105a3930bd3e1df4c65f5868653f85c4bca10da4a5697c3fec1ab3891b406d89f5e6a268224bf2848438e8ef00e7a02abf6c28a0037a093c2858114321915ba4a646642fe08cf7814e38d29e6a9902333a8cb32a3d6f91f3b67ccbee5b4c9c771bb5d793cdd48bac6fc2293cf4125543530384b9054da11bafc05ab2a0a491758b7712342c0b1904de98b5a6a96da4c2aba846f215d17b18ca3d567c7bda7fb8a0d2eed6b41ccc1cabf5f4bc09677c9f0bfc4b9c29a200f21b2e9eed8289e78cefc003b204a4cecc61610e021f1586e53cdd398dfd2446f2920c05addfed556b565713b760e975cbb3d9d5a8ed36066641a610fb26a525ef8ff2e8934ee0b241e5c925fc5308e827a48d3a8a54288921d82afc537c02cbd6dae02a03ba2ccb0b95287e20828cd14a1ce01b4f97143d27773865d4f17a240688f497fd585827c964107e01b93ee5677b99519fae43ea6a4ab64983c53bc0a2a2ac77b53dcc98f55a1e4514bd0757099671e66bcece0551e3ea0d2e08b3ab237820be83785522eb5055afc273dcf72a8960f93fe6914abffcc83ec529b9c9085f7d1185b48da6b4c31e48f2f857650b8e5404da3c1b50f0f17a40fd123f8b7813a7304524c28dbbaa44b423c28f2b37cd8509a6fb8125873dc7476d49e451dc0afce67abfca4170114ae8d23cde8563510987a8f9315ce0419ad15cedb93ea8acdf4aae20d0b27dd51ddad02c5b7517e4525588e7940bc16603754fb977e68ff8ae395e37fe0963b3d2de0f40c6ec195824ac798b4d7ac1d86785d456e24fd258caebbfa1bd917d34530cd0435722d143c966726481e00e6fe82ae5d8e84cb269dcc1289a67d140f8815df42f082d5cce8f6b92fa8633a568afad5730721b72736b3b402b6589cde50f354d0fda90dbd98e825d2c87b8fe8ed24a07e0d5796f3bd7c24ee882cdaefc0a02be7a3a841d382b5393aee779eb07eb86ea5e11f938cfc1f1a36589fb00fc2cb183102ce032960a2bc795f346c6210b1f463135e9d3b059a9714d08fe432864d410d3134c351c3897e802bb14363b71235ad8ba6631ce8857d2f2b0ea3d428d5937a4c934174918eed2bf3a2e15f3e045dded623115d3db8b81b7c12d78463daf574e0bc01e84293c05d9578ec2a48662bef5e622df3cc8b138cb1be9709e851eb02c72a180fd415efd81452fadf7f9e99b3ae4ee75991caed251f685173a63d2ce87bc915ead6fa7d0dc686f3407abde5dda0e398a6bb2d2021e8141b1b5a55b9dc82a2e15a9808d9627f5c675b7a88edc86947852845ca1f9cd496b747764612e784efc1484072b55b84fbdfb365ec626cdac33cff47f82ca896562c46a9f70a68ca38c2c3350d2b68eb59deda71028f88c3a1f1da9b95ccd48ab9709f263bdc0192995804466b21eb57c016bc129d0d6d0094b23b8f25df7e493d9ef643c37255e63d1e0a31ee950a2a07052a3b48e4b08b888960c50477a496c4dbb2f2b9cdacd0cd433e9b73093105722a09b5e91b78c91f0349495c61825a3beeda2ca27ec9e6aebae73af0fb8fb967b8b5f03b7fb65d8b1374e6dabed97c51fb8d33c4346159f0f40c7bdd4a7d96b67790808c8f5a323fffe14cd7926f46b4a3c89dc28d6a1b6adefe56be33110144a085ce0a916e9d102a6e023f609a17afb29f18188b0698b37952aeb549668906097b58641ab1373cdaeb0f9bc2ac592309b9e67f9c9c43e65915270af8f44e32d5f4b95b9c551d22cd360b9dbb2e84c1923c5f4fb915b555aa7b2bb5a7ed4a7ccbc6e81b25e0f28f00e8df35baa4f769367111c64998a29c3d22889cf8165cacb9a8beee7cdeb7218a787065c84aa6cf51f938b0258a7378707bd48ba5c30de6fc174fa805837f07c1e1047d7de16f570e231b92aa88607c9c67b9e8a344aeaffa07abc5c342ed82b69270a03c3c52309ab4f2d8e6727dc8fa34197e54f89b4a52422616e3290e1e740b327902963a6694e00884b6c7fbbd888ffe140026288e401a8e4d29f7870c860506d7bee7f3d222cf37c0ac9effd8a216939d6e3a86a7575a22e8ee0313c2b146b37eb6a0b9bfaee1ef88f9c576d55276a564f69e6024d79af8c118992b41311951c6a0c443756b6976d7360f33bd15a43b3ed294f64e04dd7ec2fe5ece8b55ba28a577bcd91955cd08192a17cf6c13916c6f8e1e639c80fbdc8ee85292330467400f24157d2f6060a74e7199ceb421570ef55c636ded05cca623c8ae3b3981f9d29969f3de216ea2b0f5d38968eeb44a622b76b0d24e5df883dc0c16d66e7cb8576169f3ad32cb8d5d0e2b8834252ad043b7822039036fb1b019214cf8358700ebd0f5dc37de45d795ca34cb0ab6640f09ab29bd084a569fa1f127e52d74071b2b97f18f6d33ca60a297fbb7b13cd76b56a6ae54f5a7327b2d166833a39b3d55a7b7455dbfaab598b36d1ee09c2ddd8d7995aee2ce5688db125f1e7d2ee9b4e07f51be120cb1bc0d95b79ca2d777a5dcecce1d2159933c8001216f548a8b296d59a1a873bd3c08244789c28d3976dd55487c67c3311cdeb9f1f6143887af53e405f7db76b846ecff5252ca80465b3bbbd3f65a1eef97572de4acac6543b2d003d4c7c50b758d9564619bbfcd8eee60e429c792390bfe2448a79f7b3954cec13820096088b25e702281bd0434c38425d3069188081e032c949f1e31b9a3727aafe7e14d21fef1f70897e20ef4a567542ec9c12401903d28090b9aad9401fc566279c041d48b726336242598b8b42da98cf0fa01dce573132157ba6af1d018708b3f41cf090ef7e0d7b2b0ce6c86eb1b6628c38687c5c3606a3b30168666b5a1537d0d91b55c1a245e79aa9c63d09aeaa8545be1f29f6bf0f8e792c91a938a06d1af0514014746d4118e25f89e0019806f9bb3c370a22f9f1d1785a4381870a0453a9e0d1a0e6ac3557a0e7ce70012a1186ccb86f665d781399d17743f2368acc60fbdd566f4307462333324147661ce6366fca6bdc2b0fc90c1bb60800c780114b161e0ebbb35d247e535f264a116a6aa0f0581fe607ae4042a898a49671165e6f1218377b9ec6f7d99e85bf416d98335de0443a7df5a307426629ca04c3280aa2b5303c56014a200271a0e774d385b78ba6af7e0003203fea7dbb6bbe5c90261e323de7f21f42d856e967d1807de42c1c72a0c1092fe036a9b8916e660e38655df283d0216387d708563cb8db61186e27d8115a98e05c1afdc4559f745d420df7419c9876747f55909c8e4896f7cb4caf41e1955aafbb4aa43e865af31924f160829d3a8719deea59d9511bda9817a07f8c05182454ca21dd229900ddbc67cf3425b12e3ff1bf9675292c1a8bc2bb8577bbc87a65620a984ed85d23325a14893280630b2362bfcb3135d1ed676204b5738b284318198bd551116e589e01b3dc104624ccc36d76418beac9cf9a2f4ed4aba3f126d3b4cf5f80846f0db96e48ce31ba47b09a50370bc82009794a68cb698d24d8ce464444b795a86c663cca50782e7a60d0f3375a654a3a10aaab8a125c27e51430b037b4707a9e40d724130200244dfbe0def1d9b767a87fe277d4c1f1051a0a1cbac1d494076aaf8adfd78e7624c60814b53b45c31ebbb86a8a86882bcde2fb5f376078b85c65e4824e59497968c1c8fdcce32c5d6c6506095489b44ea93ffe9e43a7c92140deaeeb5bc86bc8d0258012ae18be02066a08f0c7a06de2aab9a645040754a231e3301287abfeae1b5c5ce5f541675ea11913fc5bf6fef6818ad7e7153f331a50764699599afeee474e90345cf876c11cfaaaef2d16e86e31577cb30628c10575d4842183c73e52f4f20b1a9e9f57267327072d18a5265e310e088bf24e5b8e12796d37086e42fcc196792dcaf0eb67be10f3405d4a7067a0a3c4167f38e1fbd58c09f067d9cf0ba93009e2e25a1c0f9413e360de60c96015aafcef59f322a3273404992af6bc64fc321638c82e141664570a8ea583ec5ec72b1163a8cd329e806a984ae7fee1b4156e77bbb0a252be92dbb13073fedecf613089a9ebd3adb95006437529769642c1915b3aaaac511dfd6ced7673237256d83dad9b3508e7aec9862a52575eba8551f728994277792b4401d8f2065b01521e09e436544b57d8acf178b7914cab1c659484e10845644db36d8d5d80a89b215e37d46929d02b094a75f6b25846c0a38bd05766574201b111c09784a8abba2454a7955c23cd40dd9e6b3f9c02b7b63b0c7a313467078f2cc64497204a5fcf90ebf7f950023bc8e0db6aa8945441415096b3fceb536ea1d66e28655249889aeef62f6760f87f1ccb2789bb5e08fea0da9225ad31709e97897f2e734dd1a71f9f46103d6efeb849bb97c0f6884456a6556392299682a29106fedc06e4a480b387ba3a3a896f0d757f5eee3db80947340b10f995c096ab8649cd00cf4bf0caad4392a68e6232a6def2b48afb0b7b89eacbf44e2aeb98bf041bf7408c502b0f08c6b32d21f1f56278172ed67fb161b8382d71540712db4e2a9637a0ea677ae17ab37b85cb3f6f550ae1670659df942c3b4285c3fba7178a2c74a0559ac71930bff2bf9e02fa6616b70d779a89c28b63c50db3303809f962a288b887cec2b312a520a789bd6cc1649503103745f6f7e62edbc75d932104c0910f098c2d90e02bf333f5a2817a4f48f4dc26558df91ab022c09d259710b8818b60501b897b0d9b4105da52b675fca75f12a9895b19d5ccba6c725044dfe9fd84643a81f2e554c0fac9c5f3626cdea0c18034ea65478f3e202707a40a4bfd7dc29e0ea1e70352a8c6a3c6b52ed2d73089ff2b6f20723dd94a4fb7d72f3f445b86407318a31abebd7002998868c344c18a9ae5ec51056323de57bb6ee8f9c4f51b82d97cd892a9b37cc32e285cc2bcde2bccd5c6e4f356b461337dd3f9351c6d12d1e87eb6a60e5350a342b95044bff6d54270023fb82b2332f8a4b4ce3337935b46e5fe69a085ca11663bf4f829859e376d76ebc736805eee83c8ba416e7791d30d29d3d49235c261fa625c0c45ee73cb6e182002ccb5841f5cc3c2a4964c84a146a66ec26c11fd34016bcb99cfb4b8bc8d393604594c7a12868ec933b31d01ec94ad651fda0c0769b94ddad8145ce2b6b50678170af22dd9461201bc530b683b2e0ff0c97410c912c8b6ecdd80f3758706ec9e01a12c220c1c4d1284a48e6f31d2e01215b405689b6196166201a9265c94c078a651a5502d632f530c05868477f89af5458b0be94e9fbbdfe364a8f422568f07e860cff5ca6cfeb761391f4ad50ef9deec9ff0578a11c5c4163bff7de16ca68a30ea7f468348cb593fba332a835827ea73a155e879593503ed1fb0ba06f01af58a8ddf783faf6030560a8ea02a35d7fe3820c2ae2ea034e30166c078a2c28b5ee5a7417878ca5efb43d755ac3eb1e9309ffed67e5e545f6094d7b58c0add5013b3e4504360bc25a1f63e52c1bb87186819e812dabc925a505325891f9070e2883cfd7f7cc381a55584cb320d4acd34e14d29d5d827f6cee9fc156a22aa649164fedf6ac1d032ba58b33ed7df4b7fa4e1b20e4454d08bce037cafc6d597462c56d00fbcdd89f3185ada7ca08021b93f986e8fe64a6726e91dbcf30af47b6c497ecc5171fef0e09729b5e0a6ccb0a3928ed41dc85c4962b7a9903d7ebce4bd4639d4766b184c8368c6e833aaf847cad99b173282b97045daa36ee9eec6312f521f81fb863ea3cdb04498d08bacd1879878a1beb4b3d508cd47f9268e8debd3effadda33d39eaa83a17f1dcdd62799bc32dda62b2edf8ccd4e51badeae0d6a2074ee1ebb451cc0e431cc5126594df1249b4330c4234c3943b1119ca88a6aed0563b2603efae09c0b06b8621634c076087518a91b17133b054deb45faf681bd35b45e8601cac4ef5eadba46f2d1b6ee917eb033b7d864f9f827070ae2a2218eea2de431a76b85f0426ea6b1095132e9268766427d80c6fcf01684b8c9ba632c3515ea26a90e3c9b26629b6bce2699cb0e43b09ab24107028ce3559f715af1b1782c3f224b32282fc9f5f25e69958a5b85127f8da897c856b31696263a27d57554cd79ce39ed0f5e18973bc07e13e8ca88365da0df90a12a5ff561b78edd75ecd04acf1c41a56b25634eb7a4c020fe51568923691dd5ceb74065aeeee0ac76aee42273c5c48cd8ab0533f61762e66c918c27e48f818aeee23ae80f386a61fa19fbd4910f856ebae3013586df9a8c4c7f83b947063364bf49b18e50ee16a10574d6138b6507f0f831c18ce634782ec510483069c409b6c566abb5d9961bbbe9304d9a05ce9addff41bddb2beca21052ce6c7291919164d872f6f457a48ac0304b5036a86d7b55510302b4bd201ef86d8bc296d48e34fc901b723346f8a735137654faee30e7e87511663204101094352730b23c6c3def0432d46d23f7dfdfde136a81a350559584d290f4a4ec4d5843a9f1fb5461a218410b2a59401e50a580b8d0b55a435e644d7026e13410862f8a512c28a86dfefb7bb1ff77db293d074a1ebfbceefdf94cbfda012bf3d189e9be05dd3f571e165384ad987aeb983eb21075bc2bddbf109f60e36e6f0aaa1e9baf1c9c56c045106f5f8fb30fcbe77f3359f70ff462967badfc659abd0292f1abe9b358882e74629e048e528f4e4137a22a5c871e937ee94170d5db5ad29501c2f65a837d66fe0f649a56081fd96c8aa37aee3b626c172ef9e82cbf5ee16707d7bd36aee230857c8f775dd47b5f0f0bf4f6a71ffe6148925b562526b79fc422cf9d511b9c6a2551a80436574ab34a08419d13b237a2ce46444a23b567905e322c27c10576ac921bedc2ac1abea1a264447a804a2f7fa41016150a0307902c7981ce23f6d6307006e3e6dfff613596a79564cc3284f8beebc6f3f0e0ceeae47e15cae87e315d728b4e1af70a3d08e4fd275a4da74cdded0f0be5fcb92885c845f5ddff8312779575122af6cbd43bcfc8fc596f1945441d8ffd182086c08911f63d10af13e54515464d544687de3aa50297b10360278f04afa1b2befacaf11c0b1eeb7a5dc46b9ed8ddcfa6ab7ddabad02428d0d8890bd32c4d9f68d52181cc3effb564a15ae5e8af7f5fe5d89bc17f2ab836d3dc4cc2dca2dba5bce8beebcf5deb4eb6eac6fb70aa9f675cf825493dfbb26526dfb959542bd8d51e45de39595423d3ec96faddb6a5c087a20f8819f9c226f2cfba3dd715840204060512c3a42898845df47bbae6d9f1c3af28478ba2db9de3a20d4444fde1b6bfda2fdd64628ef036d60db2922965b84cb719c10da1b37ab906eb9c96df3117adce6799ec77909c31fef8cd8a26c23d2b26e99907e074301ac7d5e7b66c09d58ae4dba5c2e57f3fe744f1b7a5a885e0844fe9224cdd3faeef9070871f764d0ea61d11d7f50899ed5c7f4c5868dd68fbb8adf5ec9379b908087937849a3f4ec1564459746e9990d4cebf7ed9cf15b22e6c2817f3dee9e907d48a2353627244284cd84a7f5dbf3a7802d8add6dc33a43626dfcad4dff94bb4ec69ee77963ddce6d42b68edbd6a34b25a60aca5f13fc94651c8b717b190a6999ac0a47f753b61bc41b6e373f952fe356d2ada4a998d060327672207033685bc97cca2a50ee3bbb37f2dc9c223b73e122174c376e1b7fdb3aae63b1d1901b6d6666666666f6ba9eccbd1c4b66e62aae10b6c2872aa1a7fed636eeb9b5ad6d7c24cd16859453dbc3b1ba40c3cbd9645d2ed7a8a4654d446832ab70544e254de4941c9f9434f9bff02fe630fcc2989c767f855c4fab70fcafe85f67823ef8bb40b9abd0338f0f8e505aa68277efdbbd2a1ce560dc95740bb158ec8bc87d1b3faf0a47b73e43f4ce3577c95b4c2ac6c403561744e83a87ccece28727f2228ef6797fbd68fd7e03127dbdbe28ecb0c35ce74b292573dc7952919f28bae817d2f0ae29453e7c285f97af2f8c89d0cfa5f05dffe1bbce778d5fcb6007ef336ecb602fd7b923d1707e77cdefb2fb3c2924bf51f96d0ac9a2a922abf0021c8bc5625ac4af0cf120144d715d57c4953f8e5904a23c137eb225a072e4f9d47d8ad69df3d143bd750ce8034c5cd06dd4b26d1bb7c97a65bdbdc4d8265f9b5442c6c221c1aa3bad1b63a10c04e24bb6462eda07bd88af1afb7aca8b4e79d1c613c4794288fc64eb5021275ee5ee21511f3122b16fa32c0af1545eaaa656031162495114a3c48edab08947c6a296d99922e2c96f0feaa3a5d78e5ca961bb0763d1949258c7450cef7a9558a15029dea71451f0e0c3b9126cd808de588bbe59795422e9476152b4c2e298641b7f2dc68eb4ac8bec88a74592068edf77d77df42c4acbfa9fcf5238558052472c8a422c922e29ba5c2eeedd7fe64b6c596f2172e7bc317e2ced85f5b146ae7f7508edd602006dd7e8c212f920ae1c8afd44891cfdf101f17b38ab0885baa67c4fe0b9f96a1af8fe07ce233dd4de473f49fbbab108880d96172a685d2daee848cbf89bb7813b842c6146881713c50a75645b972a235030157a522212f350f89ab0235caf5ff8bdbca92028ba6d565280494b726805816e4b5134ec5ce1744d25d2f5e49dab9e950cbf5349343c73af8631e1f0b225cb7df9d40ad05da270acae775f0a7673ad361dbc28da383c99055db94550ec2b2b3af25a23742b0774bf314e223909bfbb71f401bfdd225dfdc4716122508cc341978b348ed9176e62cb7a8663652dd5709196525ca4a51440efd32aa78c5c728a6e9cc4fbc245fa9e114ded8db569b8049d25ea074dd9c50e69b1b2384bd4c731e5153bd4f78cb0827ee124d26a8b34f54c4eadac2f43e07de13aef9cec7edac9a91f0fca1b3d276f09cf497c02fa8e38a41a9662299853d349499164690db2e3c7bbf1ddd2f796d688694b2e4d5a303b9c9c37defb728e84d3b31ff1657c41fb03b47fe3f5029a3fd367fa6822b2ca15a3fcc92ac86388f2ab7ce34571dee7f386c23c3322accdcec0854941fb30295852852d55185385355598538541555814edfab2aaafabfac2aaafacfad2a2f5b5555f53f525555f51f505555f4ef5d594c424755543ac1a66d550ab865bf59544eb6ba9865635acaae1540da56a18554328da50aeacead2aaaead1a26d570a9864c5dc725a667dffbae309b449ee122465e5d46d0be6bcbce64d4132e2eb40fea695807ae41fba016b8b546de5bf4b92869b2aa89a46d1d9c83b17e1cbc68ac62d18b8c3556e41b881b9c68243a1191c83518eba7c13318ab98c187c61a1bba6cac971d83b10a032949dbe6c7b1168db760ac320b2e64ac17f221638d0df90563152ff893fe2063fd821cc858c51f638dfdb88fb1dec785c62a13d292340eaaa1248de331d6221e8f8d55b663acdf711d638de518ab9803c758bfb18a071a6b6cacffcf5865dcf20c27e9c4709127a2a4a23022cfd07efdc41828a3589914909cb26265fd2876d629b13229d5b3cea96572aa671d54cba4153bebcc78db1726695d540763fd3818ab5834d65891b17e03591545fb44632da25556755944c6fa6930563183b1c686c67a591206499e931ceafe0563fd868c551432d6980563fd2835a53ed62fc8584520638dfd18eb7d6c5a42a396a47d4c1c96a47d453dc65a24e33156d963637d6cc75863a28eb18a3946a82f68ac9f8863ac62ec401cd6c761fd8cb54809100e7525491a980462c921319c0494b3459c7a06be81ea19d8663b333b03a55859fff3196b4c848df56092960c2a298a36a8057e411b7c4d309c60d512f55d13b4924357139ca3468cfa245397459bbb2cafafdac9a9a577c565316d35f755c9ad246eaa11b95750aa8252dd414f8e2328a52425695d6787fa9f580794b2816905b5bc2ffdb8cf1beb5687368fe0d208266db48249b40f2af5c1a49ef19610a480326f4b3c5c49b4b768835a0d6a812a6017102e1e687f99b6b50ab6417b1ba910582b5bca2315a2ce1661ba8d926118b0678119cee3441ca29ed28855d65d8d9372ebd06d9422c73a7456196dda27b2058da1695b54525212162a2d70bac36e2d74e8141c5a77cec6d24708b47df48c4f663b9a28dbb94d0ec196ecc65dc0305c180be0bff18aebe071888af2dd355ef91e7ef383795162bf6e5f33f702f9540a6c09dbbb510a37f21dab2d498c16d4a6e414a5468a8d0bd35695169e35b4b4b4f06c4adbd29664f583e0b95c5e17815e908f5ea27a0a42cf9a08b94c0994282d1029f2e416146b9928e45a2bc3dd803c21d7c6c573b9bc6f4d78a80ea6cd6909daa6c06aa9b2e071819e142b8d405caa2c5314bc77ef15f6caa158cb588a77f0d503c7a00d48be2f047af7d1b3a0960981e3084d4179190f4a3c28d1feeaa0fd2bc1a894ae681f84a6ed1d2c2a1e38401bf4e48c77a0fdf631259ef9eeaf9e75cdde9f80e3c68157cbb6298f877085d0bed7af134269370739e260f186f283bae0220bcac741070c39947f630c31c2a07c2034ceb043f9629e34ee50fe4fef69365a0fe5fb68c98285f26141fcb085f25f4480e942f9211263c250beeb890932940f3a81a60ce57f6cd6a4a17caf8a29da507e77851b2acae7e260f186f2b72eb8c882f2e52e0755d23152251848aa9443593e41c221872448bc5d69a2bb9b79f613611b85fdb0ad48263fb2f74aba37188c09c7ef46d86f7389fa0d5bd2524ac90d050d7799999969a2115c68f7b6935ead0d7f6477776fdf0bcf1af1e6447efb28b15a9687453128e6e3f3be8f8ca58d044b92bb68fa7d5fd07a70e8f73da8695bedfbbeef1319fc3eaa22ded0effbc63a45481153de1049422127dc8ebb44bc29d94f1483623ebeeff3be2abeeffbd7331cf4bb98867e6be894a2afe3b69818d46445abf8324a74a9c048d10ee8520d6106950dad515f52354dd1a502534589d0a56afa423f49e3b143f23e566c07817eaf1f3544f621bf58100f629571972f92b4ae26b766210a2775efc6dbb6f9106999c4d18578ba1d40811454b615b1561b5214bf7a1c298a86b3ae92e6efe16b0af9f804f2e30790594f7ffee33e665d38f4e742b32e16f467ad90a2da8ad6296b3565ad5ecf721d877d9b3a3878bdaee393431cd7160e1581c8fd6b1574a073478a62efe3d6aae3be9b18f405991172bd340cf7754569f75441078d3c6ab0d1c69edaeb3b702d0b526dc9abbdc6ed9994eeb1fbcc0a85fac47adcebe1f5f07a783dbc1e7b288f58f3781886fdda2828b729a9d7d46bd8e68d157cf8fe36c1fb5c890427141ace5a44bd3d14b689a7f26da3151eb0b94b24de9b54bedf20057cec52c0f795b4f889dfbd8be0c18be04865133a0ea1073d0b50d03fa15945fa2325f6a53bde63c62e26d15d221e638d8d7df1e277cc0a858a47aa12c18be22b78f12078ef3dbd7b63f5689f00820fb7b7ecfb812de96d4f3e7c95dd8044fbdb762ab0571cacf0a03eaf7d1809483d5281bd7a7f7d8302bbf7aff63dfa1a77d81daade48c5677cdaa2e33a5e3ac62db15a961b7f8d5bbe5a961ccf22ee501fc7b3043dcbee501fe859c63aa5888a0f3aec4ba4ca875f9a2368c6e4903c8e99e5c678c58504993561c054f101a75a0e7b05c546962dea70d1069a1ad028ca2128341c01897e97d21d569168f86dfe8023fa9cf7d00abbf78f32acfb04d87bac3e236c7c7a7d5f630e453534e195b49013ba512b0ea84894068f5691b48f44b99d7cdefb5e095698ba46a1291eb522e91073c0e0a1dc5f31ee84eeddf8e272e83cee469d90e3b6ef0e1bf76ddb5aeeb6e432c21552b92dca4c62cba4ac41d2b656ab7e599c6ca25f5a269b5a26999648f6961c925b52562775522bf56c89d3e2d6c31c3373ac864765191f38022028913b2f58aa60f3b8ad0fa41a038756e90eeb5e40875830d26d56a652c27ee4065bb2973314a9fc8f048275b0255b77b7ed8af81ac4b2894d7c1d07b024122f41f97b4941f78bd4cc27f88af8c27866bc33de9d22c2d4f081f1cc78773c339e19ef8e77e6fbf281f9be48be105dd8099c152a4cad50d93d94bf6150869de0511e6b05e8c644c298802c7daa15ba7d93bdbc713e543c0aeb5e0c5b126e2f0fb6c493122647e04e85f7d06e9c4b24a9f01eaee640854678d1ed4b99bcb6259258a10d4c2465e2a2eb020a6ad98bdf4c86e96e4d591ec80a6f7092bbe4bceee3d2ed765774ddb7675d27c729d95b874564313ace83819feb3eaf1026a5fc812de97cba4e94ddb7adebb84e52eedd8a0d03a3aa29eb0d2f116feb6d526ee26bebe426e526c664739bdcb82ab66ddbb64dca0a647d3decbeb76ddbb6adbfe9108652ca5d6e937293524a181c2833cb52b6944d4829a47c62047213c10b51ca4d8ae085dc44f062934fb20db989e0c5c62ce776967293b20db989e0c5268230fcf1ce9cf1ce2cf79745ac1bd3e77ddf077e2e49635a103411007308b6c434d2e56ab96d43db5db0255c0d549e19e6e4a31c0e54c2467851910aef8c18a7c993a5bd92b4782549dab784a67bf2c083f0250271478a8a603e40373622329928ca6fe95b92a20f4f8807fbbd3322d0566d4c1b530636a6adda9836a61b37604bb80fc7d2b7248792445e7ac1be4fbe986e64a097721f7f806f9b1b6edbb428771c8747e49ec25a9cc60760e8e1c286ca2a4e1e20e40db95eb650790f7ad60f81ecee962dbbbbbb3f6eb96d6bb926c461820c2811d1868c311ee01f828258f325894b370a02139010c366083582d07ae272230825c4240b5c40dcb9182a68820a13d0c9a2cb17f6a11ea1643419d147acd35c4e49c9058aeeeec6fa716315b7713b0f1479115a4e51c3cd195f4c40069b0e700f4018a0524ad95b52b85f21e7241aed8618a2943d27d1ba6fab1d28c34e602c7491e83697bedaf66e46e95973a85636da5dc8093bd16e9463cd218a58db8c6a7721272eda8d547e28373e6ddf2e6811ad483c3989eebc9186c867ca302a17a99c43b76741148f94deb787def4b9eccc5041061c7a06fb76ee618cc2a6cf288355b1c656d284e4bf23d5b87f92d6ff1ea5ff8d57d0c85ff9de6314f04a1f1cbf2b3b22d5f89b748197e358ff034a8c1ad14401dfafdbd478e53b38a2a94ffd14f8046b3c90d4630e9c1564cad42c90c398d4dfb62be9ada7e695e7a9d0c2b6cda8a5ea6189ad2ed616dd98cb667d0bddb6255a89d00d6bf3bc905fd2ca4d760d49f24b543e1613453ebfbbe96b6212e0e1a4384e4ad2f8fb44a9d8921f1f1027ad128b6bb343f254596fb82c26e5a496a8044e50796eaef4610c2c91fc934ea2ddf825795b7aa41d266f8da67d35d9c3ca4a4a2c0956499a27c12b2a2b8845e53d26aca6df11abc7444bb044616c1189b54475c4ea6d619dd558da6b87b452b09c6767dca556ef40bd3b225d6f03b43206bae68a1279088194c4fa814edc8042f4983042acdb7650db11429b16161244d5960d1f7858da66f314070bcb8b2c9a6a4776d01255bb62248d2ba95a0e30282bae6adb486a10e523494e58d596bb0a4189aaaa5a538d81a26ca5e24079ac22e9b644fc4d071da8d8869843b3bc4008648611108c0e809e32e8be18927964554c4e4f90cf7b6d6a00d96ddbcf0c1d406de4d86d5b89c4d451e1e282ba30ae178349bcfb24f2e56edb8672588b863fcbb02571abccccdcd911fb3e66c43e4c8bd867252a6558ad5a4b2d1aa6f35c61e8f23a3b9de70a4397d77dc1c4551aae1b34b8ac7c9de77529f03aafd3d3811d78c29c6ddbb604507976851c38392a6937db456fd020d2afe9b6bdc0c9d423d2433d25d649ae7939ca31c3200611d11f1822b7e1755ec7c4cfb6edd0a2035d1ce8e2baed424fa44c81e702b9eff330c08d481bcfd92437e713e39911e2886f8c58833e319e19d967c46744b30f1019dc4760478884af572cc65a4c3259511105e7c8ed5505d4c4c6c109abaa3a39dc8fab888b483cdd8f27f95202942fbf8fd9937d9c8c7eaf58ece7f27ca0b7ad00ec62342df14b0fc9984908c3fe5dbabc2de480d8085f1b11d913d1872c167bc996a86b82f970af1188bca1cfcf4bb6447b42f1352593c97a88c65a3459f77ddca8c55ae212e20fcce715ba7c409fcff3e9b8cd47fab40fef119f5da2dee1868936cbf0dd36ae7091fe7eb36a9052c2963cbc23d686a2b2c65de8c92865a3dda3a1c2919db4be2b9c84c5ec1af4eb26dadd4e4c7368e53350bc44cb9688cc16e92bc1475019244dd664fb3c8167580a5c03c72b39d4beb16168c408c4689518ed1a95dd43e5d8c9954c9ce4ea606d2c040a5020850653193c4eb0962f3c201fa0e2025b4f71d46083a7b6dd032526a0db45682269248499f282059d126c9551dbb2a041b16474a9b63cb1850cade247f02672886f854539ae9b48962c59f2b968c900909c1b5accf841cd7ab9d27dfb5cca749ddddda321f6ab4c26695ff580f672009c413bf4da956dbb2b930fe5ab4ea15c47e50ae5de2dd989eec5d3d8258dfb5efda011855888c7a73e4c0b8d0834100553fdb6b9b54fe81b4768faa9d0022f7d89613f6f563d88b2cd532228f1a067350602173934dff9fd37c817c8f7c7d7c757e8dbe3cbe31bfbeef8eaf8e6f8067d717c6f7c81bee2f7e7ebf3857d2fc3ecd1eb1b7e5d5ff0fb7dbd6ff7e5ce6ace4d25def34e7a3795988d731bf7a612ab715ee3df54623de7151c9c4a9ce7bc75d754e234ce2a7838953805673c7f4d25be7346c1615389d1386bdd672af119e713fc672a711967332e4e25b67326e3405389c73867fdc6546231ce26388ea9c42538d779d054e230ce24788ea9c474ce58d73195188cf308be632af117e7398f4d259673f6e23ca6127771be7a8fa9c45c9c4570a1a9c45a9cb7b88fa9c4599c43f01f5389e39cad0e642a311667103cc854e20f9ce1fc5389df9c3df03995f88a73d5c7a9c46ece1db8055389ad3873e042a612539d37f0215389ab384ffd82a9c4539ca938065389a3384b71d954e236670d7c682a319bb3d433984a43cfe01a4c250c2e3b91a934e4179c682a597021df602acd8f2f329582fc2f9a4a3f0ee41c4c25a1fb78075389c77bdcc854daf1d88f4ca51cd771245309c7833e9b4a40bf71da54fab9780fa612ec3eff602a857fdd682a81773dc954f2fe1d84a9c4bde327be30289f04d6dc4a061e8134af12f51b9cb80d18381534afe1cc2160e6345ce00f28f3295097f2f4dac46760e2322c710728f10624710690790c4e5f001287e188bf30e62e88b9028c78028a3802c2bc85a61f8088b330c457007315bedc00423c052f2f409747613a0182f80080380a3f1c0a979fe0c34de8e1256c39094b7fa2e502e0e14eb2bc89d299ecf01174f8122c1781931e80b94b84f4dadc25cac10257de494ace7b942839b741cf6c507a5ea37656a3563baf2000673d0108c0794b84731e114438ab60c9398d254bce784638a7608411ce286072bec384c959abc9198d264dce2770723ec38993b3190238972100019cc97872b6f3e4c9398b84f31824907036410967314a28e15cc78473094c30e14c8213ce619c70c2190bca990e1428e711a07006030514ce730670fe620003387b4180b31c0210e07c15e5dc459428671114e0cc45010a70de2285b31629a4700e8101ce5918c000672b15ce715450e10c8215ce58acb0c2190e0be70fb0c0c2d9030738bf39c001ce552d9caf68a18573071070768300049c399080b3150948c079030a3853294001e72917ce55b8e0c2998a17ce53bcf0c2590a18ce51c000c359037317c902ce6d16b080b3d4dc4512c3994d0c313c03067c88010cb8ac01c7a0010df8050ef8100738e04264b80532c8f07186cf1966f8eb83d47a2052fe438a94fb9872a12953dee301e7f180073c46c377d040c37540e03920008107d5701c35d4f01b540e4485ca451bfe63830df7b9e1b01b6ef8abcac32a55ee8ac0c10844e09f957b56ac2091c0b9d951096c54020f95cc2ab378a3e40198f422ccda97cc007c8429c299cc256f3247b893c9e402984dfe643a390953002f613eb90993849f304b389469c25198277c0013ca09305178943980176012e029cc2837c02cc05598297c856980b33055f801e60ab7c0acc0af4c0abc85c9c211300ff004cc16ae808980bb3013f017a6020ec374e10b982f3c8609c3193017f006cc18ee80c980cb301bf019a6035ea70c973267f89459ff8029e534cc2987c07cc06b98349cca84c06d9835fc8649e555a60d8fc0bce15666954b6046e039cc2b479a163827cd1cce5826d25987c949e71d2663392b4dd6e19c65f20e671e262b9db54cce725e9accc379cb642de71e262f9d7d98bce5cc65720fe71f26fb70066232977310937f38334d06e2dc657210672f9399ce424cee72fe32d9cb19cc6421ce434cfe722662329873d3e421ce612613712e6272d3d988c961ce622617711e33d988f31193c59c91983ce6ec34f9883399c9489c9398ec7456623299f3129393383331598973139397383f4d66e20c35b9897399c94fe70b4c863a9b995ce67c66f205ce68269b396360f299b31393d19ca32663e09c66b213e70c4c8e3aaf999ce6139838cc18148da41f4223e935939f3800a6b45aa2fed19421ccade130974e6032ddbae002493792be046605adcc0ac46a46202e447e62ac1f8dc0ac3caacc3a6f9875c886593998f5831a665d2a08ccba6f689875b378c0ac2b67caac1b869459d74e9d75efcc30ebea916156c6e28059794b0366e52e0c9895c3c4302b9359c0ac5c06865939cd0bb3721b1766652a05ccca6f12302b67818059594e0bb37218079895edb0302bdf596156d6a3c2ac8dc500b3f6961466ed2e0598b5c34499b5c91060d62e3380593b0d0ab3761b28b336d509b3f61b1366ed2c4a98b5e590306b87f164d6b6238059fb8e93595b4f9359251626b3ca2d23cc2abb2c995586116156492600b3ca32b559651a3aab6ca364564905db1096fe13c25108ef7f6b84c3fbe21a490084571808af3f407b044292d71c495e77f0d8a32446af3f8c5e83cc3d32fae075c807af180cedd1071ebc1279f05a84833df280f68a84f64afb608f68b3d71066af00a07b347383e475af70b24748b038f2ba7150d8a3235c1879dd2e56d823236074f0ba745ed8a30ec4e0e075c798618f3838a3e875d1a0b24745691479dd3c13d8a3226c6cf0ba7bb0ecd10659885e59cb963d22fa81c82b07d1658f8880d1e0958908b3471a8cc9e0959120b347193031f4ca4f65f668088dec959d48b347b23518bc329b367b84c11417bc7215547b74819b21af7cc59b3d1a828590578e93c51e09e1c28257ee42ce1e5900c6f8ca74c2d8a3518cf9ca63d8d9a379c65f198d3b7bf43482bc721ed6b34741d800f2ca7bb0ec11902c3f5e5bcb963dfaf1838fd70ea2cb1ef90023f4da4484d923a1313d5e1b09327bd483091eaffd54668f78a089bdb61369f628b666c76bb369b3473ba6d0f1da5550ed910e37395efb8a377b94038ba0d78e93c51e057181e3b5bb90b34738c0b8f1da74c2d8a31b6200bdf61876f608e80cf1b5d1b8b347621a3faf9da7f5ecd10f1b3eafbd07cb1ef96481bd4a2d5bf608f6c3eb5506d1658f5e60c2574944983d0ac7b85e251264f6c8c504f82a9fcaec1188e67b954ea4d9a36f8df72ad9b4d9236f8aee555641b547dd5bba91571c71586caf324e167bb4bdb9a0f5a32d5f6517b47e47f256ce1918ab1881739ab1c6aa9ca3c6fa1bce4e8c5566c31903632da2724633560f6a389f19eb4e41e06c66ac5b45c3f902635dab079ccb8c75afa69ca1c6ba5852ce4f63ddac7a6e62acab35c39989b1ee960ce725c6ca490e382b31565e6ac03989b1321303ce64c6ca4d319c9dc6ca4e0b382331568682e17cc45839ea85f398b1b2940b673163e529059c8d182b5725e05cc458d90a01e73063e5ab16ce4d6365ac039c89182b67b1701e62acacb5c219cc58794b85f397b1769201ce428cb59752387b196b3315e0dc65acdd14e5cc34d67622c03988b136d400ce408cb5a35038ff30d6968272e632d69e3ae1ecc358bbca84730f636dab12ce5bc6da57249c97c6da584fce5ac6da590238f330d6d67272ce32d6de6a72561aab4c6272de61ac726984b30e63954c4bce58c62a9b4438278d553a05e048639550b5e7305619456f81b14a2925bf32563905805760acb28a1e9d02f59bc0b84b84c3dc2592c0dc25b21281b94b54e586b94b64c3dc25a25203046878c0142933c8e0800630200628ca5f000c5294ff820b5594af002bca4f0002b028bf8503b0c05b94bf820a4b946f0026ca4fa10051a0289f000390a27c14a05451fe0956946f420958944fc2132dca17406f51be9324ca6fb244f94c4668a2fc252240517e00a228bf2645f95409008e66083f301076e44812e4070fca37c260c8a4fc0f8a10794043c201e5d30010c207943fbbc20d15e5238983c51bca3fd2051746e8802187f23b18438c30289f0334ceb043f94579d2b843f94576cfb2b17a287f032d59b0503e51103f6ca17c224480e942f91a2031260ce567f0c40419ca1f72024d19ca97b1599386f231a8628a36947fc1156ea8287f481c2cde50be902eb8c882f22da003861cca1fc710230cca9f689c6187f29f278d3b941f84f7301bac87f28168c98285f27f04f1c316caf74104982e942f84c4983094dfe389093294cfc3093465283fc6664d1acadf51c5146d285fc7156ea8283f94efca237e7b5c535cc680013ac3c806d2e9e0035222836ece90dc926db0a909a4756e0541b63580c85d39dbd7e678b76d943a6895fc03b427c70da5b033c205eac04988fc96bbd2b5151b0344d3b7c59268f8c326f0210b0f9c51db077511790aea75c1a2a3430accf08104b5ca395137553c657949e2caa9c652503e27c51a6d94061995f2bd5f63513dfb1e14825fd71fa32db929320eaa6523e734b9255ac6efc610b9a4e6fbe8d91917860be3b306edfb98e183c7676b8d8cd0becf95a4714e584e59b4efe32469484e6ba2ce0491859da7246a7d1fa89e7114b4ef132569485eb0ec90a76a0d31ce88a0d6f791ea196b80f67da6246d32a971b3c69d289660a2d6f7a9ea19b7a14b3526a9673eb4ef1366679b1d3b6268dfa7698d3aa07d1f2e4ddbb4be24f97049b40f9b92b4d543278e1a5ea0bca0a1a6d68755f58ca5681f66256948525a78f1858a2534b0d6a8f561573d6336b40fc392b4b5b3670d9a28ba40030d12b53e2cab670c05edc3b4fa303c3dfbb6366d286740fbb0334ddba6a69a604e2f2c4933b2450b18596bb26c20abd67f65f58cd7d0fe4b4bd290ce6cf1401b4598d14614afad9eb11ada8725495aed0463a4c8401d2b7e38a3d6872df58c9fa07d18931ab40ffbf292b3b3adcbd6e53587f65f576b3444fb2f384ddb9a5e5bd0fe6b4ad236a82ada0b023677dad8f2658c134fb5fe6ba9679c01da7f31499a5403851b2db608810f716afd5753cf5e4e92b62598c3c417619600438d12b5fe0baa671c15a5e625d5b397143dd3b333a9478f195ae1d61acd69da9614d6a1fdd049d290ce9499c28b9caa3c49d4a9f543a89eb113b41f46491a8d8d2c5940700599272e50eb87523d630cd0e63127cb0ab688e24b073450eb87553d6334b41f5af5ac1f6ed134afd60fc3ec4cca91c325fc1236add1a47dd796a4492cac3009cb352569484e308165ea8734b4988203b5beabaa677c86f65d56928644851caa35aa8650419ba85adf75d5333643fb2e2c495b371e40f3c515747e88424eadefcaea195f80f65d5a3debbbf0f4eca37d579b9d492a2a9714b4ef3ae352e3925aa3d3be4b4cd364956b09da0791c47ce112c68bab33546cf58ccbd03d23290bd616503d3479a9319317b4effad23457ad0fcad9992443069c43fb201c700bf06a8d82d03e282569120a0a9c824a92b465a34c1a3b623e200604666a7d70a967fc44fb2093a42121430f99103cb1822fa66a7db0a967dc04ed834e92d6021a78d200024a0360c0d4fa2054cf9809da07a37ad607d5f42ca4fd4fcfcea4c4b28619787ab65b6b0484f6bf2b49934b72094b2e657169da579b2d8dd1fee724692ee0e9016b045a7638a3aad6bc04ed7f519286f4031830572b9833078e10b5fe27d5335682f6bf2949d3008e17659480082fb8d8aaf5bfaa9e7112b4ff59f5bf2d7a066e495a67657d4959f48ca7466a8d765c6d37495a5b397970ba2d7ab6576ba423abdb5af298fade974e4ad25a4aaa9b92ea383cdcd61ae5a0fd2e49d22600c5192f3f889162034ab57eb7d4332643fb1d93a47979ce7c00ce1a2e62d8a8f5bba69eb193a42d176b5420a60a4c1c2db8a83112b4df45a9a1fd4e4dcf3cdae7ae24ad9d9cb0382749db3a4d28b843674c1269f0d4f888284943eac14d1972f664894203766a7d4eaa673c86f6b929495b14f490444619ad32563ed4fa5c55cfd84a891910ed736176d6581a8b981953d3c4a6350ada92b45eea252ea997b825da483e34d10689219aa48ec8aa351b41fbdb55cff68acd1a1eec3041ed90448d8bd00a83a7672edadfdaec8cb3d8a4d628e4ab2b35b4392b6b73925a922602171b487a020b8a3959b50e437b7bd637664c86cc1cda2e7e5f4af19b49078cb84a634c134a7a6a7db9d4336692b42222a6c2f880070acb13b5be6cea191341fbd249d2a2b0b9820d95099a8093a7d697503de321685f46a9e9d98cb7f0963568bfcd683c5bccc494b5553d5bab2dae60b315568e18daefa6e6d23417e4101feb4b739fb7f8b30f2a4b41fb3c256937a44146134588d941cb12b56630b4cf57593d5b0ad23e9f69da57ebb31aa6dc24694a56d819b85b41cafca5673fb4cf4c5e7ca18d020f58b0d1c66a4c1a1d6a2d04edd7206956405006176ddc90c0cb17ec85761c203600c4d41658b839a2d634b1ea528535da1b8430a3068e17387940d08576123f7c3122a98c375c98690b3673b04071a5c59b246a1d04ed17f58f00d511c1108071442024c4ba4d513ed01162d78558b7262ea91b7f9c3632446e893484a0db376e2949d2bedad7850a1c545e884c7697f2cb2c03ba2d1717a05d2761538855862156a90251b2010b23d6264304cac3713c7ca1dc837a2652ee4264dc633eb8ef0e547efba0a0f2af9e7d406507b2a041e5837a36844a395bba6d5c1bf1860ee20d2c2218b11342e49c2a084bd5a58a72dc4568da56e30e65eb50a89e6d87d5d111eb6e89a2938884584f93283785c1181c90106b3c00fa61ebace8619359525e5e9e73eac090517c2f1906135b88556d06951b9c6e027d71bd6406c4307c7549625dacf18d5817abea8e0c81e8c4124b9434b921e5d7cd6a8db8bc5f506eacdcdc9688b388bbe217e3a65e5f9ae338ae1f725362999942ec683d5d29c4ba5994b95162b5cc065ea27edf2a0931516c55785b7446a00026a60338b8060991506c1fb3b1bfcae379df52073b0f5fed3b03f15e41d81108d5fd5ba3f0fc1d6bf4baf19f833876e03d35ef9fa4f55b72b346fae094548ba47f634a2ed648ff6786534b0425a568794fc25e2fa09b837a5508ddb1b49fef83ac91cff71bacd1ebfb229b24040f9b5b7bcd27d8c3f9f4732071ca2bbe1a0cf6be3797bedacf8fd20ebca7f69d87af06fabc5fe1dbe5bd7fa6b492437d1fd89453fd70ca37bb465c233897c49af7276fe9ab0d15ed945700a1bca30bc692485cf731852ba4c651f628c32833080c0227e1246cc446fc017fc01eb0074c631acf78c64818091fe1236c848d7007dc0173c01c70111771112ec21bf0064cc4444c8489b006ac0167c019f0100fb18c658c0163c017f0053c8487b01016c216b0053cf2c893279fcf413808036120fc837fb00ff6c1422cc43db807f3601e1ce318efe01dac8375700ecec1411cc4381807dfe01b0cc4402cb2c83ffcc33eecc33086f18b5f1c72c82e7631c8207ffcb1c71e77dc31c71c6fbc3118948d2670667eecbfec45f7e04ade648d6a80c0f92adc85357ac0f932bc86e3704e3a2f9d99ce4d6bd400a73562c039ea2cb546309ccf536bf4c2f95c75b63a5f9db1ce5967adf3d63be9bdf4667a37bd9dde50efa8b7d47bea5df5b65aa313de58efacb7d67beb32e972e992e9b2e9d2e912ea326a8d0270be945aa3daf9726a8de859c9f9d26a8d0070bebc5aa3a3f399999999797646723e723672eee0ccc1b9e85ce4bcc199e84ce4acc13983f3d05976c6e07cc179c859c8d982f3789ee79f839c819c7f9c7d9c85ce3dce3cceb1f38eb38e738e73d019c7f9c619e82c9e7fce3e67d8f9750ecfcccccc0cc554f2287394cf8b640293a912254aae44c97ba664ac4814070958d9ddad0c457777b7f215ddca5874772b6fd1ddddddda57265499e464ab9ca25ba5158ca178fd09e13507dd6fdd41f707dd207487d0c5802e115d2474697443a04b5bda2e1674678b6491ec91a543d7c88e41b783ed6039580eb6688bb6c816d90d7683255aa225b2445683d560335827e8aea1cb86ee147465eb862e067bc15eb04376c80a593a742dd831e88e3beedcb9df6f900db24016c8fed81feb637dacd00a6d8fedb13c96c7c636b63b76c7ea581d9b63736cd0062d8ec5b137f6c6022dd08a2beecffeaccffa2c18bab07ded6bc30dd7b54ed00517dc6fbf7543f70abaddc6a1cb2d370186e27ba03d0ae17b1e7b04c2f7738f927c3fb44746df73b0471f7cffc11e79f03ddd23daf74ef668f63d0a7b84e4fb15f6e8c8f72fec9191ef67d8a30ebea7b2471c7c3f813d2afa16f96ef025fa12f96af0cde03bf4957d31f85ef03d67b14743be42be167cc79ec9a8644bd634c2ac64cc8c00000000001000a315002030140a0644e28060304b5369f60114000e8b925e724894c8b33446619832c6106000000000000000109a991905014058c444225fb40741c70982d374eda13f7608ff91b132fe186a9d7fbda01f9d1afe4d1dbf4c45f853b3d0461931da8294d449e342e9dd87729e38b0c7371cea83b8654d3b33f00e6c4f724a01721a47ec7dff2dc7547dc8bc12598f8481ae06a4472070fd989e4098252aba3c3473225ba3221e6bcbd7af424b53e19fa1e2f7d0017ea672aa0f20bdfc2365550477e4570a5bea972e070a0a97e0767944fed94bf3f78c8fa5ecaaadfc562a8d8e067b2832ad5559e744e7a5c5306e92087a15216038f5002a3bedcabff9726ab445876883f4984866b1d678a83b828cf42688bd61c2e0fb1432d827c60872ca0ac335bcf699e85991d52e652db72885cc493d6d0a247fbbdc81f8f3dd0065783e6c4b1aa8f453c95a9a6e70bf20923e9fcd0862d49ccbd8ead628f0db738b0766fc0e00635c4318d75c5f720f215c6ad6e8e9b2b50763ef86ba65e80f26261b20f62541f301e47db76ac3f450d9e8a6bcb494976879ddc8c559a76891e2755354a7c52a763da41f7636524a4e3022d154c6d5322d4339ea54a94f617dd98796711f41eed957796f53d672a7f4e6647e6fb7d4b2d6b730fdcf5e03e18176cba3f7120dab7b58c21a36103f904585a0011066a33e62536e8bc5cb4810e438a7b4cc2f2fad7a1fd1046459c99fdc3c8785688012aa5afb7c100d4b01feb4f2214ae038d7fae718eb816de0b81e5d4b32533703327cd76cd7227a8d109b75d59fe2074d77074bc660a2b543c67ee10dde68656d0bdcf354bb06e4139d5d9c3f861e2d383a6466b8a86f86856f6e205be7b46544447daf5f2595349e670bc33150a479e013fb6b5b13fffcccbda0b840a085becba42e2b593712317abec0b523b1aa63e20de5d33522d2431317c247bc4da3765b3d8ed9be8ccd99b168a149e4455873837c4a4874ccbddd9694e6df3f65d3ff5bfd73a3991656dfd57b7bc6d8c05d39ce4c090f80ebbdb8a6035b13dcca86863ab025c004202a08888614c49ee4d0f91fe57f154a5f9121198bf0ff47285b2fc83491ba178c5f560ee6b6bf5a2ea88b9844e62d1dbb51d9669244d29b52326cfc37b28a49c81e24ff3fe5182e6f39e7958cd9dcc728962d72a9b3179445432760b4513473cef096b321a21a48a9d49fd8a818c5b945510a759494a0e0b3fe80b3862f969b1426a07a21ba78612bcf67aeee1f3e69426fc2f9b2ec8c6fa19356b391f1419712222737726633f9f86a209e00b293fc30244115efa4dbb109b4db7b98c3379bdbc698794f8054e0c93cba863e4ab880fe5d19e3d0d9570160dc34586bd5e6a0427300ed52da59ed8ee054796084576c1e86839cdc153c40e7a589c8aeac64fd2536d7127aeebc6e76f1ac654073d834a1adef14d0782bdd469249299366ae332ac76449853d7c6a20552fa9e0ae3bff6fa3ab2901ea46089a0e936def8cfb7a5a93ff5c9dcf7fcb8c845362b426bca8b735687cba30d4711a257e3b2548e9136e49f2dbf276aa3204eb4c9ee87de6b6cf8499bb2572b63dfdb556e0853d69b86a7f2d41329fd1057aa5410713a61298111b27ba542e97895afb6440f3fd506a2a79e9c2582af72ea36b18ced2eabaaa7b31c7391282e45c4fcc4e91a3d5adba0d661b361e03373fb7807e20339edcd2e35bd590e279a67d00cc7b57e887616119e77df16f3cc79268782ee48da586178719a2987263b366dab11a0161eb1a87b8afa5cbb86a6f6772eb55c3ea7a3a65e347c1b446b1799628146861a2faef880333d10ac711a21a86784ea958d0beaa2a72f2d36d2a9f88205f7500a025d69202a10442b89df16d79ba7b363cfd71af6f50475309601137b0f63ee05efd8e05628bebc97b27027c44d2a1fa19ae774ca9908f0b45df21c16651e27d855af2bf53d873a36bae371cb429c8167caaaa8635aef9300b84f70d335694c0b474877a12fdcfc1c34f8e9d3704702af5dd4685b1c4c278f39d4f5c4354d2c83e841f4e08c91e2332bdaf764eb30f449234a0b739496ccc1c4ac243e86f5879b2ac942060b02aa291a243e9bdba35ef820c3ed97e967953229dd00161d24bdf5310b4695ac80e520323a51706663cfa0099c657ad3ee3658c84474e6a33205e656999fb61afdc1abd90b3a53f422920f5548db76b7a128515fce82f8b37e6410b2085a290ef5a768cc58049e550b35e9ae5611b68852d73f7cb4981bb13ccd7316746d104747e060f1837f9b744bae958781d06de6d9b1ccc74e881fbe3e9b185db4c660d3364e7799a1d4720db9723c5a36a9f413c3d79c85ef55469c54889dac295589ed7baf9425a8c2e21d03074a1f9c90d30582d255b0e5578687807d8b6dfd836bdc15a71e0c338c3874c1489bf8b5c48542d2e2d352b7f266cf0eaf795a21c97664f45292a76eec6a4450130ce72ba82234935e1da2efd5c0c1b51371596313968dbd22985ec228008718371074675ceff12d9cb1df7299668c9cbc3685a5ac9e22d21e237e1a81f77c1d9d842e32799c83e661055b73c7424e780f19df417c026504982f3968dd99c35c3dd99b30982270c163d165d9197faa92bd43f3749624cae48b373f01ebe647d2b3a0caec00f2398b3c988e345031195873761eece001e3474716808886ad930bc86a1791588db3d7c0ceea0ff62032f3d53da3511112fdb3fb898d80c7af80f4ee30f95b66d484bde82c22375d0fedb19801644e5fcb9d76fc751dae9c5585dcb8666a37b3a5f0019c7a7af4038540e0144d035b134a975c98c93729f55ce83892df84dea84edcc0fc42777388c9a026bf54b795ff209e2b82d11e6157ea9a3b06ea434288b206bf61a48dd60b21361657112ec07fe207bd50dcaf4aeb34754edb3b99d38c0ed7c10914c73a5f0d20c4ba3e3ba1ee7ad6d1b8332eb1db1fd701d63755e893987a99f644739338fcea068aed2cf1dde0e084c4d01c5f6be695860c9c915d078a90516d6d1ffa87e433bc74054762dadaa031bc68c5b2b751deb003892ca66b2e2edafaec900d7f1f330af092465314ec72da7a437e4e0a17c5319e0caf477f8b27c942341d46968b86c1808d037970a49b1ddcf2de9f2df064341fe94bfe1e7d44264d1e2816371e94eb254cf6301e3bba4c38a4077488f2d82de501d5b04bba03abab21fbef884352ae103ded12987f00563b4c3210ff29bdee8063e12933794c18bcd58a71236a29d9c79881f28621b1ef8103fe9856ff023117dc214de788e3a92a131eaa99986d88562b661910dd94b5ffc821e15e807cee08967b8a3191ae1964e398c6f10a31d8a5998bbe4c56ee853817ac10c5e7cc61b95b0016ff48c83f88231dea18807f9496f7c071f89c81b41a2953d285a6b14b9e4d7754e17f3a1c944a54451a45611fbb40889bd88146374438b469b751c5de91e2d312039b29084a4482577a4a86b9264f8b770502128c59c564a5ccb12aadc12e977e97680697d89c903c924cacd5408698aa63531639b90fc4d6423a7ab45a7c56b2707c79300d95319d4a7480682550fd4a521d4fa33948b224a8c2baa081a158d1ec5d748a1f74951c35237ea84a9e5fed73c642d9399d5f60e5be969b71c7760e74d7fe0309df8309f8a1f9f4cf886743c70b3b411740f58c468c0666125761ff088f180ed7227ea3d6091e381fbe242e83659b53fc8aa20e2618c885a484a9d92589309cf7582bea190f89a283e07d534bd953c8e41096bf8a9401528cc47c5b01833ea5f1fe9920884cd5039db9cdc6a466adac9cd6ca41e0e7826476a73c9dd78a45985ef441fa9a5496e2448fa8404634442693e86e048160e12689424f41bbabd26b9e8a34680929a0d0073a684482021cc4af2f09c20b224d19d02854b9ec6f743fa925f2744592226b53289cd0eae812681602355d6249011b80b6e72cb4d1311278743b6b08a4e6e913b59a0276e6e810a7d720de6371c8072c7a02cc46b588da13ce7a28f499477bee525308a2f2ebfdea3dc01703e95a4d4660158540a8342eb0ea6b0231e65645336491e65e129599c478d85ca739401e9472aeea53ea85132a88a73146ed85a857b1aa1e76025893df7899b95eff08e8df134e5caa7a83ed7e09522775179fd0a2d5e9431c2b2805e94a162c9772f6a00b23c368585bcb27cd52c84bc6e32fd2c99bff371873d4ed38e00515768e1a7a1c2ce86ad678781411ed2c94184618863c5635f182492ee2442b64edc038ad79a635d233e76bdf771c7a8c5c51a21875689fc3456e4ccf89167343446392c3940bad11a3627937c9e7c728c32969d944dee54ce725619ca0acb2b932c63f9b7dc67c9659cdf97a13cc0bc7216f3ce72cc7ba6ccfc393933e63acdbe6195c1312cc9355942676fd9f733ceddd8976f13759eccdf396414cfb9a13ddf66f83c33ede7b1a99a676e820e1fdc34875ce8235343b3cc123db351749e3da34dae8da659413aca42a43dc7934e79521a66e9d29b094ca3bc35ddb2b969cc97a7617e3e3db90ff56653d42b53a5bedc981a728fea2bd354d3cc58bdb2697596fdab5d8eb066d9cd3acc86d636775be7796f0d67a5eb95c1aeb1dcbdeeb3f435ce57b0615e84bdb926f666b3d83b53c8be5c241b73beec9b51669b4dbab6d7401b5d2f6dfcde69fba3ac6d4fb9b67c7eb6c18ec59ad1759b7de36de66f709f27c3dda13d7b90006dccfdb903dc69ad615b37e783ddde72b284697a0b20090da9ca8abae351e834893c5e828137ed09502711a96988ca32c2ac9456ad46992ba8ee450e844129634b53d9c1ec6c784cb3a2aea9c86d6df85b20408e5ea1832ed9ed33bc03a1ded8ca673ffba9d1013b84c15048211174085d4bdc77e0e2b9f971548fb415289523960d0933dca6491a72c20d527fb18e782c94c67bf93755e31181100cae972682e6331a310c5c2c8fc48d47143914b4589c899b4f24423870bd3012db4f288460f07ac9dc6eeafe03324c0939f5c65437136df0bd7c4131d4035eca583f31b486c9493077137d0bc28ca88fe32a1069a3400767eb17d0a3f02387aa95d7a3a81b672a23d5a1d82627ab2ad34e0116c75424a157f107ce542fa849617fced42aa647c15c4ed44da853a13e8eab40a48d021d9cad5f408fc28f1caa565e8fa26e9ca98c548762fb925f912edbadcc61deaa60d417d73666392aed390da0ce20444196fdc036ca0b1b61164f0dd5b2351a43bb401b912453b3cd292035832104b5f40bd6681eec08597a32ac46d881071911390a316776319712a599a507976e602c4cdb6b8b19b4cc34a96b73fc35d3d8b2fb9fd615dafe3cfe20245001b8034dc984add3730ba6356ce43c18ebf467b1b70ae474b527dcb92ee478f65f2b4dc461fab79865e43c1f56198cc1e46f31bb08f93f59311493c19f457691717ebec62016c31f8bd822e3fb70bd911846ff85cb2b30d6c8243644ec0ac7f8c6a77bf1d6549fbefa1b24808f4d08244ed7221e4a542db9da724aa95e0b0b5ff1d4c8d52f1ba5c4cd4f5b76f296e33c517a933fb60bb9fb7ba394b8f06d97455eaebc980e98bcc65523110580107f3731f8514c99c0b8d13a93bc58a83e39bd9811bc9b60bc514d91b878e83e9fbcd8289c98628c11bd935c7c684f9db8f8689c4d62cc289d905e4c48bf9f5cfc28a64c60dcb4cf21bf62224d985e2149db9fdc7a38524ae06c6fc940de2d5e4b965ec80cda4530dfaaa2485c337593475e60144e4c31c688de492e3eb4a74e5c7c34ce263166944e482f26a4df4f2e7e145326306edae7905f3191264caf90a4ed4f6e3d1c292570b6b76420ef16af254b2f6406ed22986f555124ae99bac9232f504635c33d78aee5ff779e57c6ffa4894236a1ac6e062fe7e89122fb9573bedf3d712f26df1a3333b813f3b96327a954b90f0dac4209b805cdae5689763f1a5c8d12712f1a5aad12e70634b08a12e25e34b5da25de8d68623525d64d686af54a801bd060554aacbbd0f4ea9740370934dd5951b7347d6ad2590432a3585f3204bc918945be0cb197b316827d5380f678c94fe2725b9b0648002324d62d5beee59631f6c24a83d46b9e547b754ca74e6e3bdf5db1e22f21d8552ff68fff9cfac5a2bcbdb28af79e5acffb5fc65ca8b054f343c1fbe9baba18e3e5dbc1dc0be59bab4d209624dd79e5cb1a3f06449637d5577943194df54bbe4ca422a3fdb9474d2aa3375ec760f7b876ed22499b5f76db1b2c27ad98b8ba9a8f452d2f20794192330ac877456f0893123fb99e8e760c01c8f6b572b2ff6849ed7e6d61b21d31e3c899362afaba92325033c43e13d389584e1d24397dd527f1ddb69b862f82db204f047d03cd83a05b836d8f1580d986de4773b37146eba0f581f322cf0152b1a8c5dc61b6e3b1e18be036c81341df4073b13847f5a1a514b1251093c0bc089742f6597474ed833163978c6ab037995f386c7983b84c72462317d09e8cced03d697f20bc899340f01dc2e1b44eda1f80afc49ca025a3daec256637c65b9e782e835cd1e865b427a33374e289ac974f6d94896b062fc6f745e76b2bb7ae51ce5db91da558568e46424da25abc216bd65ce47bd949a0ccadfb39778aa92aaf4b6dad224c5af09ae9c14cab7acbd3de3766c275628d608fd5dc92b65cc2b07f80ae1f45578e10e040b56adecb81888b7021016029ce55fefce7d9892a2e5ec9b46c61465c0bfb8ee77f0c7b7758847f2caf3504d24c6742881a3f00500481217f0f70dd00095160aaf3c728099ed42b5f7047656d58ae4aa72450e5d0f0798dc8659f164cf162945a66467bad1556dd91114aecaec48fc86491d9d8286ac17bf3e9f6c2c77e35f0b19cf2b24c5329457c3aeab80d92ecf5821122f9b6fbde027fa3d2a6b0722d40b16f34dc59a9860cd8fcc1ec167b93932bc2fc327609f7def807efdcd6000bc4a00ca4a68b8a4641b64c79a28ad7481d94562e2d8d97258aa846f0b04a37aba2dc8056598149dafd90054789fdfb7847431a2572fa46bcea6c807f0721fd3290b9a968d03b7c13069c06b557f9b113463b64ae71125266c8d261e9de0e88e4b3caf9effa8849308ead8ed18dbd58a1cdc7c14b36c4ba346ad28cbc7831893d5606f6a86065132cf9f0c907876524efd546e72b509fbf3981b8a32a2c6badfb2eeeb88de4cf3ad30bd7b358796f5101d979f295564f0d96a0c8f3dfe6ca7c557993dcbe5ba3fdfa5652502e1eefa2563b52805743ce4a037b96e85ed72748468afa09b91cdb5c0e49a9ad9312654c6e99bb6bea36a1ec5fd7257e0b2eba823565da604fdc4598eb36c793a84ef90d70795ed8570222e73c76a982fa07741552082cf991799d64bbe22e9e86b7d95bde94c340b3b53a2a35f838d9b1c0317508f774e92011eeec878c917d3593b1f815f80270fed84467cca3282627746ccc19b661860967f32c732614fb8ad8eecf9039f7f5cd78cdc0e40e1eebceb91b28bee58e00787f18046a82538a6fa04856104effaefb9f6690cdf732b157fbd569da90295625b996308479e5223e5d85444825250ecf2bf7ea339a4013d0b973fe4acd8f139b03da03f5d9329dbbcbe9c0ed7c34821ec9c260ab84e5092d4c35317e20c3a8bd48ead328cad07688622614e1f8433d4a8d44553d89cded9b83b8ff9b514cb768ccb7801d2e3612271a2d0ebc94872730c7e524a953419f73ba8cc32ee537a31f8ba8ae91c1c8ad492b336b2e1836f048f30f21046a118b852b4623bd66d8ee6deb41951d2dcb26cf1454e0a4628c455c0d2d7465cc054240c8b407f3ff6ff8cc7f586943a4b129c3e1b6fefa8a7d6a314e5a08bcc819ae1f2ca512dcaf2c84e615d92f6249e59b6e5cd92c0b43df6e6a246819f6ce22e12e2a34566a91ee354b4c308eba042c2d0f60eb2e69308c512658efb2b046cf1c4f64ec755f0129b51fe8fda0285f78615adae8d2125a7405610efaa0cdc0b406fab60127411624a91aa35bde572077e707b874f96ccd7d09a5df9466cdb4c310d30481c4ef38e79fb5fc36dd0b2da3f02f2db1f0005155afed749d251383f86c1a868a3be1dc00b8226751f7e3e37bfe20ebe9d37ddea03a5b6315140e06791f281a9cccfbb25b9b976b351736d3dd8f4c39652d97adae5b208b9e79981af5c789dfb82924b9f3f12590427530eb79d7b62eeec70bdf0e3a9ea56e8f3e5782fafa720b110b7d9c3bfab04e19249e311557b3fbba2a186d391b1d18bd622ba45193f8057c6fb55b760de347aa3921e8647600757c9ba25f22e02f4997f9009a4e5ce1257e42022aa6c8f728941f0e8e8e1b4fb06a942e1e42d7a42851bcfaf4e4af88c2590a45d103c9b28e667c39c113f778d48a75717530adbe74111d4f88a24cf8fa5e62f873e48208faf08d391f98dea6297b0242c57ce928b3856168400e0839cd11fb2dd5ab494ace4c76d7ad0ef20c3dbd7a6b3f889113ec259c3af237e089add3100d6e0fd0b00e6a8865d666ea72d0b86584e318edfc591a58e2da81cdac44ba54e2f31afa83106d1dee4bd8ed88fe8b75f16106490e613efecfd5bae756deaf1d6a973ab562a2aa5ea29e6a66f50ef449426784756381cc5877d1011c81a39f52ba70cd2d440c97d3e0964b311ca704376c3de46a2d24d30faf2a5f9cb0add4606528050dc79d55555958f620b0d3d18454700b0d68973c0fc6fa986c7241d8f9c864c0d954d3e43a5447233cd1afd22edf54936ace26a45f299ca69a0899b5d002ff700156da27677e8a5681d2f25413d2a48dca954df4a19d6112f8dcf0f7a2f9f7b5fc962e13039ffff926ceca96816f88aa1e983a2b1cfbe689d4a61cc9f7f8f4af532c510d13a8269c3ae32023834b82fe24527b4c3a6aff42e02fe085ac913b7a859105f4c966cc434983087ad98627edb67ef2c19e6a80d40aa8096a6591a7fd0e8941d0a7cbdd21710421b23843cd4c67a4b123c72190579276d98e708c4c4aabcc817e87c2bfe2e8279855f11f5679513dda403e34c128b02aecf43b779f140879ad0c06235d9dfec297a6512a0fab56dc698b0747a53ede6341c34f6b6c4d12b8b6dcc4c9ff73fe0684c07b1086160ad582ba060197b8a8a7035331ed6cd894b6b8fdc2a0c4d34a4a8c06e0b4c3ad815b4b54ac42c158637f8501b9b0082e3a26e3630033f9152e2a5584f6c599dfc892328067a6a760e9a45f75bfcbbe8d29da85d6c01dd9df67125fe9a40f0c61c21f3254c0495fd778d41f450eec169f4a82237206d3b82918fe6cf1e2da54cc254258004330a161ae527344995a4232ea3eef2d2135a06ef97044fa6cc4f6b907ab592d6028259148ceded4a8e5fcc36cd78be2710a460b6deb4305a2504d701a373723c560fc357d1082d46debd33c53b8f1c0c06f55eca4f49bdc2ff3c496c9d80a88abec0bae211d7f00e514ff50bc2e1a827d6a94772f7081b7d70d48c6eb4057f9eaae26d5b9468f666ef37b6b590e4f60bf2b3f5c4c530efce20dadd29355e147f8ccd46c10b7d2b01d481eb71ee60f537e63d3532ca6fc8c072c815ce0b2b8b2b6de8103be53eddbc6b4d6005167d62f357a15bbd3115e053b8bd0d297ecc3b98602e344a027f56d8c84077db41d4f85f65bccf2d478249cd050daf991b48f6ce6a7887cd9d47cef12a63e06b4516fb9b08134bf98b185e772af103e93fce694b9c00a0c77905d0b39f1fe890a626697ecf080718c533e563e0788ab0dfea9b4f0f5870550c0fdbf87dd9b814faff33de9c48feaf9d978878e4daf4eaa15495c1d1bfcfc0b2efdbf40dc78611b69854632dddb7eabeef9d1338cf568c7e7b37948e24adb9b1ad8d29cefd4d1cd1ca1202d5b0ad2375f61ff855860b754babdde6ba18595915baa12b8beb66571ab378a1cc46bb64cfee702ba4b59b491bb2bb51ecdb83ac108f60eadc393c58e56096e185c1c2f7916cc3ad4b80452e6f021ab5e8e6945bc6e7f9f098637e87340dce85e441454837e8d607f93032724a49a888cc289e739e287bddccf5983a7395387e9f7f385fbfc3814753a4d8c61fdbee73795904eaa5df59d298d53f238836773bce83850a39b1b8db7dcce5bc5cda846b244c2c32d48b75e8f7dbffaa9d1f8aa7fc850810dfe5164fc00f3aea9e34d3b15e0f0cb29b6b5738832fe4adff227c07e5b8d36a0f96916641493e0f874a6d511b5a6c6754a614f0752c55c5ebb9aed293509a66b6997a997c789d37a35458e88c936ff48f355aaa7775806b15619b43947ac3080cee93b3aa7ccd5e4b0109702cca1dffe0cc0b1c52ace63282d1964649acbeb2e1909515383db0ea2219cae1f361eb0803673e15cdc2a5c971fe13b88aaa04c6670db7b5e840ca6eb07ec5b75b855e9d50bbc9b61022eb92a69295d771e2df03976710f0f7a6274a6660dd4c130d1b5574eb4af9cc1fd7c93e45b6bea8aa62dbd8c4aa562f535367d196f199105070b3cb1051c113ee7511c0e99aaeceb2d26ec4d263be7e45a47f27fdab39463130d80225d54c4e2d6dfe79c120484bdd08a0954de546c63fad827e0da27a90c3176518b1e582b6ccc7b59fc51c2c738f77a36eb8467b5840a5097b7987f0732a1ec56e5bf087ea2373ca5f9ce429a26dbc5e3de931bc5654ee953d49e346d6762260e22536d1c8c6a6a64915cc35a272a1d62c999ef8bda727c44ac6809054f7a17419f2dbf52ccda9be2be8f798d1f16df081400746bd4ff7e7d49e6e3566afcaad430df1293edf08fa0a35879faf479ab3950d0233d974f6ddfb781cbf94d41f297a50a94a001f9a492fd1bd3e956e22edeb968608b62f385791b8a63a4a0535c30a91e6c938adaaf90c43db2339160dd7109217c0b9be0a0e02113cb44cb5ae4e2e288411a547cb81879aa6195f05107092d3557f6e6cd5ab9b2079f19a72c084fd9c57a76a014ecca8e11f4af8ab0bf5772a4f7340826cd7cb4b232bbfe4c86675b52cf6f8c372650d6961d77c52a74477a52e18536e4f18b56754b3631327a94bf692624b7e09d40d4d06648fef7c3a51d0d660825429947d7b98b3080498183e49e100f455daa465978eb658a81024357bc6aa4630b75a4a1f07aa7d72640266891c09804051e23beb674eaf1ccf920458ec7a4af2d0def3fb0f7b51f442eb3301930bbb9260f0506f40447f12b5c7ff19d1f02791ec99944c2526458ae975f077423fa4b169fedd29875e46f38557ee2a7217a3b29e033542582b1b01f36a8a3da89e5b10994e2d8936997471ce75a4bfb2df8c200157908397e3db872b0cf395dac8dcb0ff17e8b6d1297dd92c0f933b9e8b8d84d41e3ee5c885a78642fbfc2c49aa79a66eca5c57106529151c225aa9d599ca31abfe02c712bf3d874f0113950edc9efc0682baf945900d1d630638688a5dea2b0feaf867f444a3028784daccc2336884370b3abdbfca51b12363c3566b32d3e551b7c375cf83d2422855bc3ab0bfa57013928e29e1627be20abede673ec6aef849d8b7577cc652c52f1143d56f73524072c76e9687a469a77069cdca7ac12e00bf83cbf3710a63802b908cc6408c2e1c352afb27f048afb6a78eb11280a75ec3eb6ce2e609dcf60643870185622ea975e1cb4a603b4e00c9c71d248382b78ad5387a9dad804c3f160740fdceed52d3da80441ae8cdd6dcc00e986c663a6023c250a806424d42f2423912fd04c96d6db968a4cbe0c30e07f29ea0a372415bae55400b4473265dc25d43c90ece0d9c62c46445404d83ffe07263803166cac0bf051a92542d6020cedf7ba548adc14ea62a81ebfd28f10c0d9ae0e568f2a9d931b5e2ddf0b84bb59b38448c0b0ec820f02a32115a834a636acff0de4af8189d16991b6cdf8b6015e228cfc24c71cfd27a3f0e0240a3ee83368f98d24771cb4b69cd479f3d693c787e233b64744dc55f262a0f0354159f349469b6901709fac2ead6f3e3c5f1435ba2525dec26baaa744016dce44cd4e67cdddd08178cbb08c44f6355e7da696da9a0c09952b530878e455d68e20c01498589051daf1f75f5b1fae20f38e31c41f949a960c44f6e8a01e795efa5bf1890ab92f0785f51893259bff0b2b07dce63be82bb926e4259076ebfbb8d08c52f607c3f4a16a7d73ab827215b9b22c7bc48d6603b3fd9059994520fda5483506faa971ef39de784a8b995572212c726944a0deb22d1596f8646f5f484f0c39db04172c281dd3ecce4c6afa4203df7acca6d719a5732aa33deb68633d2250223b6889986e91072db37bd9bb1a6315578e608126594091edd84f84a3091223bbf85a7298c5544a2018991fff8cf509093081030999b02d7a147357aeb160d1f045cc89a9f952d01997e92f7f371c47d479656d751dd401e911deed60f79f739f42b660065a4152fc916596d8937cfc96005144d6f0e891d45cd280eb7578903192660dc57e34f3b1714b09fa45b8d8d31d21380262ab5ab10ce5dbbc720d20ba1ab86ffe0489b71301a0dbf5a820e9a07dc18f324fc3e3830fd54447039006527cadae655fbf153b1caf994ba2cabc49f4ece5b0ffe3267ca772e270f6e6a9d8c879fab54f0ebe158a7237d1f63e6100bde740e124a21f72ccc9848d9c9cf5c61463f39fecfdf7859685f85e7310a49518fabdee6e3044aa70fc890dfe27df27608d121d348a5ba904ad04a83520186fa81a250be78e134afda06ef1fd575e94691e7548342bd454a6dd4fc644d3cc417cc2db17427b8b4133300c2ffda69503729344bf57913897214a8c2aaea20f2130c9118dfc090801b14d8cc6f30822db55bc58a23f202bc68f3934a87ba4ca2e7cbc57cb96a82c6f43088238e9579d7bb862d0239617adbbe1dad24ce813d20db2a7602e8f593fb265b36fc57c5c550ed72d303c623fc7581f5427a84a95b0b9f4fb7c48552f4652c85244e600d584c438b6d5c8b4394ccc339ca6fb2e053983abd45f2161f68ce9283a71c00644954327d0f3373789101cb57179a94f0072de0b2c3f3bc7485978215070ee71197e22fc7c2ad571b91607b0a2e8c766e38d5a7942c90db55146902d84c8edf3558919104760e5128befa0ca03873287abfe938f2cfc1a7d45f506ef9bb344198fbf908438cd989d1966bcad22e01fc8988efb6dcaf39c72a35528f794b85372e297fd7afb789404028646ec668e4024131c8a34abd82d4ef5e45386c3e48ab94c835f69870363fc63deefa0caeb383d40b408dcf822e480f9810093f83253deb7aff71b81caaad9ab6a56b76887c8a10f0711f5a0770cfd11ee15c18599a50423d950313c3b845ab0dc9c00fa938357e3d3b69d9ba24eee809a1af913203124fc27b981204f242bb68c34b7ea31ee42a4982ba5d875945e43aa928cc1d2f383bb9f53bf97b45dca4cb90e91a5d36185162449931c7b7e076faefb0156680c50a48de0098da7ba55a3123bd4fb67f294725101d3c59069217c4802503ae2beb3c2104029b5317da0fb612ce8354ee1d199c0a863313ba3aef9b69dc3e5e274baad3c6018a0b9f8415fbe63d613454a0b5ab7046fbe532a5c64fef927f541a30474a5a0b3ec0ea79b762bc4d49d387fca5953e1523ff932ad53e53a4d6e58c5e2b3ab03acb5e71147a8e984178a559cc88e530c116e47bb189aba0f1c7105ebd119df624c4cf58d3e02155166d775e3f6448201b19a6a8ec60312849262b3570ce1db2493a24939ec95bc86e359826f21e38fc5a63585587a20e7ea7cd4429ef27f3b8d4c1c28a7c69002c58201fa05c6d0ff68abf8d840acface196e4c9cdd549deaf7a327c59f180ba3e0d930320072e2ce07ac01567a41fc76a3361c288dcbe50e9475ebee8555826e8ef3ac26f349079701aa773a9f144f9086d0a396f64058360190fcf0b28402f9ff9851bfdba9e437cd062a2f4fac23691168423eef9701792195d35183b10182438a83c7f9dff336641d36b8029f0bbe519f17e01614fb4b3a3ea3bd81d70e67b5031ce840ecffba9853c9f6ac72a0831c987d96d943ffc44d87862823b6806df69cb0a858e12d4f7f01e0a2dc7e62ffabd20cdbcc9bfea58be2b13ea4f34822f5a39fa9c4b427194f70e7036aef8c64863f91b1f44df593d22e087c0d82318b9ed81099e7330cb6fb6507ce8025268977e30f633572d9ab1959b4e6a746e65338b904edb220ad9fa232189a02b8543b41831bcfac537ae2bb2db2e371130048d2bcc393395b6d18f44ec7b10baf6617e1db4432f7dd0a0be99ee8c688409c4438d646e36503232bcd7ab632764d05f40cc5f2de97129d7ed2bcf960ddb3c20738880bc428de33c99c4207ead58cde48305a8255a47328c489e9ec9b4109d289f410e4dd60712d9862dad8350ee3b9ff2a1698ad19661992931f9498e7358ee14bc785885abf5e68421f5abe07e610360925573cc9e91e86bb8bc575429c2ef658cd63560477e7422b81e780fcc33a9910cceb80781fa3e305d583f83725cf80e5d27013cea68b896db6f490dd66d298fd9537aec6a00bb857f3ab4fd0d2a5dbe500fd0a4f1ac84e781a911d2ff4db17cbb1e6408fc1facc84a25d648513b22acd3c46d67d4bfa911cfe986acfebf681033461228fdcca5122b7dd22130e51d640b4565f63b8292b3bc894fbf77c9efee4b3621205f8fa99989c87b65fdefe8b926996f9ca2a2bf9617ab6fe092a9347ec63c3caa2ab268828996fcbc632a0d3bdab6a11e62a02f5100e3023a8c702c7c0d60f4e0853b4b09d4f813a1b77ed37f4a7838b92c06e96c40366f6252a74864e5621be9581baccfb5142a78fd2cc1971f8d530cba385de5e8ce9b577644d571053224a960540a057cec6ee2b7e7e743491dde071335c2a04a7b5ea826b9419c8f42831c9cea4106cbc0f980c302a04278a804350af46845e4eea109563471980a651ca6e6838fea391ae574760c56d2f07fdcdb716ab290db1d6af34820077b77e09e8e68beba75551e15e254e8bc815828e603d0f7b6c3ccbc7fd29ba15a4c4e1033e113785871dab4d935f1a34e983bbd0218545bfca5c85d0829e5f93689150f3b79ca1cdd0d63dc9d07bd7652b58adcb1065542617caee2307b9f307617e18c1b484f6ae9ad03f9e3769c6f3de449c53abe9e498551ff3ade2a12234c0780695021c043b6338ae1ec84dc006ba6ea24f8bf0e9a91970ed62bc470c1d4450a610ea66bd1f6c57450d5a2b045c3650b7b86072347a3185c71d6b474f8a4524b21e0e3cce7ffd60d8b11e2267e85aedfe0c28b5853c7ce381b4f5652f039a046c49f0496d0cd25d286117264418dc70970c14b743209ed2ba923ee088b09db635b3912e5a64d27ce16bd7d1fe49a80621ed428af2ce3897042a0eec9f0638829856c0a951e165feb91a0412c9e9734a901ff13200c57db89ae7aeac8a9d056e03514b67eae2c380aedf07b9e276d5ece78c68828ce22cbe11fe7df1d46a4c0e9a973c7bc36750aec3a4d66b6c9f1f1c7675da3a6a2546022cc8c46947b243ec0c3bd915ddb8538096fd9141020451ca571545caac6dedb9ad9904ec101bb1809cd2c99d2ab6b866a38b9dc3d80b3fc512317a8d1c9cf3b2b4c9fd945ba14bf8e045971cf78004abbf0ba9123d966169b54094a89cae8ae246b5b1875540181898f5a5908d890366d88b823b85273218770aacd0380b32393e16d3015ec8c1e790c5e803b6b6a11f48a7706d60e143ee2d46cc6ae1fcaf186ba35282f82b118c0293a23753eb0b317107e6ecb7b7d6d1b8e1dfa1bbf328f3a7fac2e1a71b58961ede6ffe37f55a0eb41ed671acf98c2ca07917a5a70e178bf5356d2b06e188a5e4fd87703eebaccfeae2e2eda01598a7581eae0552f3511fcf83c6333dd472680b0b54c4d6351eb9fcd92aea8391038bf5e43139e8e91c737701a4d91784b372a88c6d9bd9bf10bf5ac8a9cb3da4d2048013e03f60d843062ff2e296451baaedda696ece09f59c07d8298d72c8414b6facfa04610e8ef763e757a3f7b078e2c80eadd46990e80cc483a4f2d5c3aaa659df6f480821d963616840493f271a42777553fd554d484df1540b730ba236023df12abf3471578d4ef816186070917c128d08edcd396e2f1aa7992c0c24dda6b82352cb7a0fbaf499e6fc01aa0c850c89db9c84e021183d909658be24bc02c042a4701ff657c1ae9d677106f000bfb2221b8f77182605161488cc7c702557f4ffee9406f0488258dee0d01720ac9f94aaa6b6a43cc25c98d3ecc335cd1d825cb6100ce4ed55e1bee683a2caa5e7742989904f2b021edc5aa9973bd4ca01b0f73cf502421eebab826c1b58d4b91a79a33847c2a6a9be5f073646400c6ce89be55b0a499dc47a9d6254cc2dce928b82f2aeb6505d8b4238ff73cd326b0738992875aeb33bcc060a3618dfe17f6c2950e6a606a67dfc5f93294cd95987fa2403b031c904918a8cbbc1a38f5207139bafb0208d3edd66dee19afceef4eb4f595e9aed2f3c7d08b74fa6c8efe7a5fd7ef3be5c16e3e345c2ad5c9b2629ec9f6b1b0464f0f27c0f9f1c18a7be4a0d30f86094f9cb1f24ef3aa6c449b259431b902c1a264c1693ba1410c606ff70c72dafbba9e656ba4d5e7d807e06ecda1694e198270180a3882b1ff1092612a3d8748ddd40228077055b0ce6bdba5ae50dcb83d3f5a12b1ff2916a0904ebe25d8b6ac24bf0923be48983d25c30a3eeb7b0dae3b74e12fd09626031a27ed2f11ff4212f457d7c57ea3d29091c510e56a90486c8367dd19955740d3fe35b042e31d60a4ba6879f3d04bad3ce0c9a3f885557c16ab01681c65d976824a75c673357e14e97f28f14a71a5205788cac2ae3fb713804e7da1aa8489b806493bcf698048338de98fd1c2d64f2d3fc80050c12d4733b84f021d33c40c72b8f38bfc7ec705761ea1497348874db595a777d82f41eac74f4a147d2eba446bb42209ccecac4a2cd2522fa68d3b0bae97f9fac4eec06292123ac18f04a3f0617360d32f013842875b68e52ddd6b45c35cda375da00b7621711639ada60de168419c3b2e57c5da827cec9b7d0e098051b0193c78e5af142a508053075f6fa594b8c16c976e272fb50e21d62b013bf19bcdacca6bb3bd64226ad7972214a2ebae6147306b82ee43570810388b8da46a41fa096bbfd0cb8ca56014ddedac5bee3e97cef45f327880ace46398eab00cb18f4425cc07da3e6b02d8937fb5746e13724477bba659392436879a599a61b1d85e57bea0bc3e9b78afd1d79fc8fa29b6c53b0e329ae3808ced2627f18f27170a60c5369a0a070ae00a9833cb9ecf0097854a586538cd608ec0c2f53f73fb0c2a22221f676fc6e4d043b08098a762ffc0299e5aeebd5deb9645bdc64ca7baf6947c8d552bb514da37e9455b4b5c822f89bf63083175437531caa04855ded889557895aa812923b75b8dd22b1846c98bc8dfb9e7f726e5958202b29f81b0d76de40207d678432dd99fd681c3e2ea24c01d1383cd1ab9739e18ee7825499229b4a5c7f6d1676adac24352261796700d8f2c3de5a84633d6213c151c96b926cde6a999274882ccbf962ada4bef652a27306b132548ac3fb8e5e4fe7c74fcdc0e3fc021ab9571c061c90e843afa232a39f3eac4c1667fa54190b280a8a33124bd4e9b4041b1c9bc499de7ba19db7488ab7e8e1c209c9f953007ed9c03f890cef4198959080504cf22ca5b00d69f1d3e6633cae8375bb56dc2da3eb41dbd54123c5c8c0dd835473c0e9a4eddf63dd406591353ee9fc1d875134b7b6244e5e33ef55da933f1c4f3f3ae092f5c4a039d2d903fd20ff0dea4985f030eec9fcbf016f548b0d67b21fd5961812cef3bb62604575c6e9d89b00688c5875b117bed849800d453740bf2ab1fd908d54d3e6d0fdabcdcdccf1333defeaa84f9c54fb1cf7d57b1c934d91d10868011c14b7fbc9097374b0c74bea9902c702fc99ed0b2710aa58b4b8ef0c1139047d14f1a9fd54c73db413a93a56c5faabead0c3bd17d69919ac55e03842342cd74429683c406a7206fb4c3f75c2afd634b223f46fb90eabb046e66e5dd0874fa077dc421fa8fc2a542f520b02abf13bec23e2ced64cd427b44b7b729147de310691ccc0a78d4457c88f9c19eec8a88c35e1c78bacc16ac1bfc9dc536d972047d703a9345fb070fdbb7665fd870306b96ee8b9bf834418ec1c9f443a8cc565fb88587cdca5043d3c3f4ae253a54db1609ecbd3f8fb4444fda15d7fa0cc8d91a7589f940dfa7dfaf2de0591bfd1ca2a8f3f5793a6d887a9ff7b0859f0a43baaa943f7500cbf6ccdc30434bc94f5580ed880442ab91d446ed29ad81b70bc6aa622ba46138b39b310b90556e0ebc256dfe8b6f274409e5acff6b51821ccbb2d6a1b5b65299848bf394b475baae38bd4d46afe6a1ce7b8edace544e163b1e4d8b237ce3ddce007a77a68975c6d8293d642cd666c694103ae3d65de8f66910e0c6b53c5d40af3de439d014edc0a7db5468eef6c0cd47400fccb9af8111b57d14214547183f781413231083dfb7ac6835fb65bea00924f5801985df1211e6a81dab4e5ba3f9e23636001541cc1abbf37b58c89c3711575fb06239a9870103494d2a6465440278d756536ebb69190aa5d8df2e22e15708d8235bd09e2f950511d6af38d9a44b47eb06947cd045f31278d91e4c3635b9a9e10359935ef322748757703b39a144ffd063dc92a30484f6307f9c896e18cc8556c55eb183f2cb922ee124c9c584c60276517e0cfe4e6aca9a2d1b9e5460d31487aed5cb573e6b3eb4902c128630895052341e6536ac1675024ca5f86c3b074b477cb093b1a8a2777e9a9768ea2113cc8a4b649c7e9389bf4902d114c1a39117b1f5cc2243dc291461e99942da7053b183a71247364683af1f61c376c1b775ca66073cddd7f48b07350bb75a4b472a47ae5da9829a21e748399a3c3ace7e6c0a57e98ba2abfd59008abffdb71b3e26cba184a143884375ba7e64dafe963c86813c99ef35627dc1e55ff94d5afe9836f77705c5e45bd00bce68c0ef138cf2dd10ff14fa9dc336d4a229156249cea36bdcb0c013b246e50aff4fc2a3117f2a0dc8e8651c363835c2759b38f5bd2c6969394909564ebbcd0baf04db17b86b6f60680ad55deff3261326f5476502178d471646bed16acef316cb2535ab403ed3da0fa50408e0646c57c29bbab80281c37a1f6e18ee12b9af984d8301bb66d5bc6c713e33ac9bc828b757fd3be10cd248960a71be2789795c06c43bc95c85426dd245bb2cc96f70da9723d0112ec53eb9b3f66a0661fddc2c6772a068159dabb9aa974ee3ab250ec28095b61daf6de091456fa18cf1abb95a3638d83d0713cc27686d0ef5d31b6397829469ae32d70460be64580e8e4903439588542fcc02a08961ca65c252af29d2be5a557ed28c83029eae1468cb46f9367c8376a925b6982619c56642b6be398aae158c5dda8eef31261bff4a6b67e1f44cec421aaefc7564255c98cfe4c0421e1170bb9a7c8c0269235cd288344f7cc8cf87485aa9c4d1f65c2c7c61b3dc99babb7d7c5ee826fa5a13ac9149d41fd20e4d7f324c51a5c2a87138015d784ac4efbf90d22cde757b0ed97c0b3614f821d61b3ec3f91fe61715051081b3c5416259cf21b34bbc87f75982ab449cf348b4c1d0b85b3ba5125277128d7d440d6f2eeb980854b0227e61e1d38074e4a8745a299b7698163344ae9cc12bb9a78ff6311de1398727d6e3e10031432f54e2461563a4c9c9a6f733cc9b58acc36f295eb8966eedcc7c6caaad40a5a1f1fd34910c0a8f7307af7ef84b65173836244641e8c8240d419e0235934974242508228839a0d69299a090389fa120da842a1a13e38652c80870b3d041ca7d8b71f61104e134393198df431639fe9f2698e89d104efecc01a12f02f77535d17be41e46a823819196eed47f742cd8848ad6f8d689e6649ff90fdb503081114adb05bcd5b39dacb6c153549e55bf4c2b3bcbdfecb510305c54992179a54098f6a14ed1adcace3486e07dc77d57b63a0e208edb60de717d50b0ccc980b03559d8611d7915d6925aacc7ea34aec6bfeb9e81a65b276f5041d9b8409b1f3a49afe8bb90f4426f9c3524017a90178fe1677e20b0af91469e2a743c089480fa189d47b5685ce72dc57ffe6625cb45f40c042babd7e6924f83ea9917fc12a7aa8c062908f26682145ef4ac25c6a5092c664e6a3e7041434d749ae748b238ca4f402d131c5bad5b4a06e797a4bbd5a0bd36a56f1cdd3540778ccf1e20ad2ebd54b4b7f981311f4cf4e4750499488a6bc4ffee1a855262537c461d412bcd947de283f7a8fa206ec6dc59341f27502d70705ec2808d6ce2ed712ad61755f97a6833572b0b9494ae8235c29ff38ad43087981ae9ce5e61447e33aef3cb12c1b88bc9e26cbb80b2ea14041d14b019f2d426c959e6a7deccd71e4b3afba3fac4548f0aa2dbbeeafe41376af3795dd335ba6674eafffe8495d088c8da73c25d5adcca1560a0a92a01195e45ee6339755b1fbbb3aaa99380f9b4fb22668275d9f68fbbb4df2fed0e6a0403d4baa991c8b86153a810d7f06cdbcd754e786b3226d61adc38f6193b40b257286cd9e5e1429d624e9c016a30119fd9b319a78083648c13ad81cda336506145a1bc31926548df66f780148761a1952d5fb0245065c9e5887559cf2328efaf4b49bad36d2649975b20fb7e3c338eee6bf9426af14713138990533387307f779f3fdb900a9210fe3168ebb37a0754e3c19d7c2815e4059ec5b619b038b2d58ecdcb931499d444050955971707bcc7a4ed0af0c6db7306cc00741179374b531c1be4ac59bffceaf72635a469188ada6237cd049b4406ead8c090a12b294109a77991bc0c8d7511816e72acb6d4baca375a933c651013a9d136174baf46bbb4b442e8ea59c217b2ef1679099e91337d7bb87e379653cc8527fe90332dccd44aadb4b9d9c8270d748092556e0353943e506b7c1a381d1cc6dd1de3b029b016ab96081460b869a203e03051f64e9f0d04216944207ecf4d04a23a257f23f2f2ae293173012bcd842d2eddf15ee5b738b17cd4b18824aa571bed29135bbd850d0573d87366936200c357283566954f8b2b13344d15572dc0f91db1d8d967b3b96ca4832bed5ac6ba192181c1260065acbeb080db8b77c225f10774da802b4fa69391c3d945d57638fb2b65500c3ce120c05d893c7870958c8c35f0520cfecd6446268c268f25b70c3c9b33449f9e5db801e3b2411e87d4646d32642889d04334a548b1fd3baa1165c396fcc285a66cb24af7d7d5431fc83a2252590662a41648b75374f01f8281a28ac11b7cbef194a8e83a0badb3f27e473ef3a8e04b774e4a24f401983840eee658b5ba88123a5d052bc4d67649d18f0b45d8a0316dd7e5dc5dab0c240de285778baea85a0427a89407eab7770b4a81a3d9cfb0f70caf07d8ccaeb171d2f0e58b8a27200411833ea2c64d8803d3e0cd9a3cd4e4dd0a6ed47cd5bcaff874b2e2c6a4c7eaded6b4702dbd4a6bf8eb954589668f8ca76bc8f1757a1c1aa181b0dfae8e03d8e0935348d6c2efca3db767fcf4e7339ab571eda0842c415212363e4a9463ee3b1c509b9b5b07c5d6c5452424a4f01002f9b0a1f4b2f5717db140706df924a42af3e6b8c84002ebc1613fb3cac2a10a8fa11f09a4b8d0654b00a0f83d2d7575365efdb86140e2880f5a1330c8442723f3ea449dd4c32e5fd479de5d71413c77158d5df70c83ad4f179d2b819c7fcf605b9dbe778d2a992d1caa42f7c9f4790f839ee7473ed70b5419fd171181fa0cb32c97ff26af0066c23c1d6c2ee620c0485e76acdbdb42b5ebcc3288de43dfd0c0bd992f638849ff0c9cd68a3419a4272c50764d3b6aa0309e95cfa85d9947f99fef38cce326ab1ae3530cb1df11f8508446d7f7171b901d7f809d4f77fb139499f3587609476902898f9d1f68e24a34c2a810dcfa513ddd703cc29276f9126e0b22bc12412c7cf148405f0ad4c9bcd1d0798b061e123ab92b6275489eabd0d64756e730db83a7aac48c6c2aa53f0f1582df40de6db0106e0cb8e49c81ea5a486c1fe07a309d229b69890a48b08830b4155716bbe819e665858ee64ec01a00fbe1781cd2cd5720cea02d2d51ea5689c01b121ef6ab82df5a113086ff828b0ba1b487fc14ff8cb77238a22ab2fd3fd8d31b0f417237d94892255db1da57e878bf01466e4c48a25db63396e6e1c90cca4f0d7b3ed8ab3603789da8516ea9e628ea2116ec0396196a066d6305c5076ae793e205528023b02242a70b39e3ccbad19d84529b15e6b7be4031c59b36768bef96f71d807b301fb4cab592e84a4c84f0217c9c19c47755c85f42f4fd6faf5ef5fea15768a30d373dd3dd46bf975082a88a28b00c9fd1ca8bbcf05ac9b2b1d370fb5d3eb9af9b6d622061268c8d39285c1870ea1615782a25380dd6726840771e13c3c0afd4ec38947764b59068c475d9fb28473211a8386c8fcc04f5dcaa158736a2789ecd3da5e7a83f87a56e6aa9dcc33e0d21c95dffd559bc5c08de153f8e5d3253c78d118353391eb0adcad0688c57e97e2ca52e5d1c12679a9859c7c983fe72b32a581b8a803333b2531b79c2dea1971182292c74f1829a70dc1d3b2fcf79e3daf8153a109409602912b6472977d36e3e9d3d0a2e7e406f852e8cb206eb7c1241ed59a387da2845a884f0cf6908f90735fb7eaf51fe89674cf68e1270f9bcaa4d3c56f9cc7864294e0543a5fd15b6adc88505b54bb2d93918225ad62fcef4f555aaba18b2630553b5c24f7c4552535bc479d01bd4a841354ed922031193f6ca629dff118ea772084ca8a04c1cb6c2c4a74d2e68a89fd398b2a3a8b68b367ec4d00402ba58308c144ec1b18fa15bdc07bf1d91ddea43047ebf435fe74dad84933c002cb1c3b6abb7c0c119b366b3673731ce34e421405afd4c4d16dfe53851fd3dd28b52cc0890d7fa592b1e68bb9e91de16bbc5b248d50390ace947b60e798c757b53b5c32e34b33de191563b403e3c01518d7bb2d347393a952eff979992fa3a73989329b3279998a3668d73759bffa255625114df9610f1c7379fdd8860700e6a8c24096301cd5850bb46fc54605bed9af264cbb0f576fa809aca1423f842844eecdf596e6437a045de2e4850a19f467c3f58521d0675ad38d9af85aec171a80c5a569e247d9194fc07fe8cfe1ba7fb069ed445d817bdee8498005e050935796ce8d1075b9dfc236e7b8f3306602990b95e8247d582a8e21f034c3830638bb06e6396047e0d3c86d13f0b43cb364184bb9b8f33d41747d98542e39170380186081148a131dd8feac6867fe6054692ca61a388bcc46735392b608892c3dcbe262b9b3f0472df062e1f22b0c9532871326a06915dee74aef1c0a984a5727d6110cc12babfa4f92905e31ea0eb7dc01f5ed0c360e67feaf5d67fc5d5fb7061081decff42e6262a708797c6172a8b95f5b4d0144ff317786376d319985fa9c005f7ec076b0fd794948557c6ed4b53d34d6599f232b3a4847ba297f9066eba5e8328522c53beda65eb7e7d3857cf37fe7427f70c6697a016aae5cd12c3433df1591471ce5f16855f2ca34bea0419544c79cfe0608242a13e84b0c0fc6a865852c3cae7c6cd22f566c1c28007a15478d67969f1da87fbc68d4b136bc8a6978ea270bd3c29e1331293d807d4800a37d3c47faf1ba445a9d2f7f8096f46dcf4dfb1c10ef70d7245b8e6dd3c075ecc5d43b0b628249e1cc81283fdac977289746dd038bfd718f3bd902c103cc3392c5678534984ca484ae0e1c37e172b66398c309ac10e51e834b244890af8160ad27e2fb1dbdcce0f7ea2d97fe861a55e83a951348e1b92d2e8a430d38d6c8497ce5b83a888a2f44e51ea2021351c98ba8c84674f21b7274fe9a4404ed22bacf115d0c896e9844d786a26c4891fca648a25424f12a92c115c9088b6a3220129f6d0de9f046a4a268535146aa28bc2a4ae32acae41547fd0aa0830518c402b0b1002d59007b591050660ca1f0cd15f336383d1d8cf812bf9f7130628c18316f8c984946f97bbeddf04448fc6f215cb0d9feda5c39b62d18f0bdcba295c46897a9dc2e6708bbafd84e831a095331db824faf9600034d0ee778ea9713db1dec2c6ca74342677ad72345a9842a4454a6d8352a8a11eb47578de6a3a2865ffbfe88082c3796ed9e12dd049d8892ef507e106351a0184f0ceb8a29221c09da998f87f8a444b0d12f0d1db9e778a3b79e6e6ff98b5a9d61f4c3ecc970457331504706fd280d0b229d612a28b76745d5a858ec04c56a177519e47dc67ec94810d4e5167a38855e6474cf53619d2b7bfbcedbaaa88f87ead431f621efe648344f7bcc9c823fd7d57a33ad3f0f35fa4fea50338da31e58890a8276ab454561c6500dfc0789abd2358bb090f354872b07b5d2c2f7891a9d6b26cd6fd750d5658222e922468586e112ca0f488b291da655f4bf8940ffb42ce712bec580022cd58c9eeb26f15d11a2b965e365c679c919407b9213ec7e923eb483832e578e7b3af59dd8ec5ab2bed97f762555c4b0ab3176c9ec27d54494acae78606ae277730c2064c30a4737b6db6998053d9207035d4cb453a8c9a17cad0d0b03c3cbc2e9062172730a836126e593236440177ce33cc3b27b80e2577998e1d838fec1262cad59d78cec75ae4905f19885585a1dc12f03491443ba73cad4d1aaa7c0949bf508b09551b20e28d4053833fefcb0acda10f5b502c41e5a409d349485d2b279a8575f952fc03c4dc272f5ef65801d69ff777abbaa41e014499753ba54bb420ddffff169fbabe1c1c9b06b93a064ce1906d4141d93924198f118aeadaa5f9561a67f3baf4f8e959f97fea81bba4bf92f7d784e43ff7380d10d92e148a5fdaa33a4c17da09be1054a5d3a8bda6771f2c792297ea80c77e0d152c4aaadb7a3dd32bc11a719bea2f5b8a833fce8977e97436060bd4a6540c95d3629f19b51f19ad0bdad210b6d925cb7641d77f466bcea53828fa67c1d4daef034f885fa3ac83c44d4bac41550e4b35605e4a0e9c62cc376f2e5f8101e1ee72e7e14d56f2ee245e550e9beb95446f6fdcc593693469303156de3f81bdba8322fe7dab9c21088ec92ad7d24f3a91b84899a1bd1bf3891571d8566f1fad412c380753c137f9706a4c938ac78d8b3f649b426626730cb65d289fbc1f45ac8b90df71e82b6eb0676650c50ad64fa1bd6b05bcffb0b082dda461c5915a5ca9adbb0838cf5146de91300ad2c61b0d6900be0096b31a6d31d7f7c313a11341cf84e50c41da50637e35405491a800c11f02ae39d8368b06c89d253e0fb94c55a0c237d10f77c13271940884b42d8c42b3d2c73e35ab51a522435c2ff20570fd0fff3f664886890cd7862968435a1de65c1e54af3b1de238629f6e46ecebdde58994f9d0badcc42b22ef32ab847105f59a748b9f25162c11308792ce43e649c5313bb1b7edba5a534d08cfe8e4508916b168a01646e99dec8f74ebbab50ff64afe8f5c4953dbf77c25cbaa73c77438605e57a6ffc7e1eb35a6122f4535aba982b524f0fd990f10b48376ecd783ac1c1c2a5a87dce9553c0f9ffcbadf2650933382c817262f2c2685d19f8d919c573715faadea18ca424c2ef49ff2953086b509a21db1933b63d7b20a77478999cd839bd88d8de602cf380ee35cd5aaf10c7ba6103f88847d526408c1ca0a8eac2a8d73032204c6a586493d88833c8dcb85336f21a924fa8b9b3fcd6fb38d659749caccccfd072055fe1e2ee19a9bfc4390876077367135de0f05a4eb865f9abe472b15a432b918ff8e1f6c4eca1e80ce8c12916fbc5623227d945b0f1fe11f4284a71bce3d675609363d88b33ca3c1ec2dfe8d77680b96fd53f730f15ddf100b08600df2df44041efc58fbd7f94a2e28e30ec14ae17a89bef0d8963d7df4311f09c95fe78c30111c77d82bae3d244ef431605e1e6f45550bfb6cb7d2c02e47610a6e7329ca0b5d1c308a9ec1f89d8562a4f6006db18b7f4ede6eeb01080c66b446631a2cd7ec8f1ced95eeaa9e5103579d741b14ba055c0dcb54b83d5b5129bfcd35f1169e0ce2811993744a32dd84371961ca34d223e1d731b8293f3dcb7da16397f1b6b601acc94a41e09b84a33740af2dfbed1a5a9dd20c73ee196cdc39fbb333eca44c62883b0de345c496e48badf5e9f84c11bec5245bc7a57d4ae367d8ec212ccc22093facf03c584649ab66d03d177bbef0f4eff93c4facbe1dbb5301556db4def61ff332f4f5e6b54a00d5131f7fbf3cee6cac13ae286fb7cbfdd2eaef2a709067ca20ee84bcf390e5470d6a45f1344ddf4d18390b33e611ffd69f4a0107228d51735d24326328a80d06e3fabfbeb89eb7a3e777cc2f603a4ea349369898d71c323fec2baf197e19dbfe65fc7345c6f040aa1bbb15840d811a539e5e6645736f6f4f44010b387307881b39e24212d4f5d4c1f3c9185c05e99857df22088e39493f0677c57fe0cedc77fa3bfa77fc43b8377f9a63366f4721a14bb591633360b84acb5b6bb8990665b371112b203c00b110bff0933ddafa619d02606fc13ab9603924106bbca8c0add04a3bbb16bb56aed7911672a941da123826cbdd2628c5145478c37c6d78ad55165692cfde9c6698a6d7f743f1aea8da222454dd334cd698aad8606c315341c3048cb012f6110d884c6126f4ae3808739541c3046531f1602623435e20c835c5954787a0017a4f6dd8eb3514897867449481fc2b78d3b91a74b4276a230d225789e9d2e091112a3388691a6e5805555df15c28d942ce9e952dce9c130c3237807ba4c0a77838f5455ad425015886fe91845655b4f1c72a390c39bb6c37478d8446389cfa32c833d6838e03ff142212d077c1482e1692c9caa049d8314568332b4262cd1051e007eaf77e84110278620c6185454d15f34a8bbbbbb5bc892dbe077d1a8075cc0ef375e8e0f8a5003bfd28c1248a8c28c2d88810325baf0e2881e0a0a3370bf0b21383a707f6a64e48091e082e302f7a1d0c18186aede7c4fe75d4704de7b0f00b8bf01327c20833038610b2a3882dbb16a84e09430c1106f1a917a8486a3dd85445a8e3e465321ce90c84c0354029774a9e70ab584bb710947ebd6d371015805b81f95b040cf63b980c3d1efa8022c54156839faf1469b58d3a56b0b35c39d9db603fc8cb20ceec08ba3e1e8777db7d4dd8f37b10892d46f15b0baabf7e79fb7f4f4cfab720530757d40019b6bce35d7de4c4778235b4a43d87a70d839ec6eec5b25a955d5faf00ae9de2d8974c95149b0e3c1ee8ee2693998a8f9bd9e96a3bd5d89d334a8728401075b2e0d42082fa55369a1e6b784e249f258dedbf134d7f370744df27169f40512e12f89c4e9826c1817b5e5ecd02cd9a92da78bd90511cc8bda72ba00821ba381fbb05b3f51d39ea0896f29f9539ce8cda21b73648316753aa42fd59d5d9ac1ef8f565d7a33d3b34ce338a94063f4c59370364b6b7d6a0841d0c12d270a47dc805b0e10b0c0a3c7e28a348e7e6f6185148c6002e066c50e1945b25081888a2144f0909d36a2b345976026060f10aa27083c0fc07d77a481b005dc7768344be6b6e89596334409eebb9df81e0e765d609cc7f28408c1d9f1865c43a8f9d108a1a9e995f7de37bd025b099b2e75ed120992207438ae48afb49c20f0e007e097f2e2831076095eeae8525394f5b145582762c6c5ba7c96ba65ad6bfd59eaf5983e9f4f8cb74d0ee7c81257a457e2759c11ec78ba27bedb4abad48d060f6a1ee5764270763a2e34a492a8372438401a13439da6d16ba337aa66102a233c0a529082ef3df7de9c87ee893246b87bba14d55efcab0db7c37938bab9ecb6539da5d137f5e1b40d7eb357de4d97dedf13add22ba426cd372caf11c4d3f4b642a20e317512d5378d835e975e12bc79da66615b549120c04745e318d2c583594efd9b505073df549bc9b61b9bbee91b1bf870a0a402101ddc72642044063210e1276ea8a0b099396184af31c22ec52fd1a59a2e29515da166a8730520b8bd1d288618bd925f0dcba37938de81bc9aaa1a8dfe5249e5bd9a22b046992e354f7d69104e7666c253f61deabc27caa8b8e578d104bc032570cbf9020d3cc22dc78b2f7076d4344d325dd56a06bae78ae0f7e9c5dd1e14ecf91421abaad6d1a802b8bd6187038c7ba94b30dec7d45e55555555d707553db1a3e4c3dde86ebb3ea667f71ea7bbdbdc9ebb3ea80bc57b54a9adb5c803d91e8bc321e586c8fe534334c2394605d30be3e3c537182d09a08ff72c2b9002e7323f0f8b2882881f69b8c01b31e302af11d527f5cf5bdee7fe28a2a5e112a4860b14d35d017c84173e3a2360bc1146c46b04bcef3a2a0e41b614394dcbbaa895bf2c09e8a575698ba02762c6855e2364a316b06eaee05b1eacc838123a0b7d5bcfb057ff10fdebb183de9a853ebbacb6d11d32387b4b836c0e02676f94020dbb99089c397a81e6f2316a6ecfaf9e0caeb7a8956f34740fbab9b29edd5c6fae00aed7db885e5e569eda22e489987191b688eb44ccb85cd7883bfbb9f18e5ee0b534457b5ca0b9c84b396df54829698d9871a96a975aabacb7747319ec01c911bd42ba3d2069575811050d4dd5039223aed2a5141c6e7ef4277eac2049188044b822a2a0e3123fe3022f113fa4e8c3ba82daaaae548e40838808d717ce5003b79c167c81df6bf80533c2a071a9190337f5e1701536b0a171696fe40596f786f37397c2373b84f501c333f81dc2eb03c32db734707eefb702b0f89b0ed509447d939b5c224cde1f1cec6e62a912158da80ac7e370de5e52716d07bb76a425693d77415c8db37137140fb504bb51c5d3caded2544905bdfef379f98ac475d774c01e7a4b4f4a400fd1d60e61e78a4fa6877e624dec7b3c4c17bde5510bfab3f53924125d990983def4057410e856416c05c45634167b4155e9953cca32114311e42efde780befb4b18761323bddb6c88188dc3513cd9146a6eec4ed32b5705a44b59163537387e12033c552304ec280dcf929d1e9d243847687082e8d4ec381b1e9ceb34c8f3a07da3d1fcb3948f873f3e6e986eb63e3faf0ff897c61052f10ee164264c7ab7a271a98064571cd10391e0027ef22947b0ebe2080e3cd87d07ec4a6e073dd8c814614503a4571c17d891701264c0ef3e882b086e2e1f9cf9c34d221dc87c590ca0da175888e9f28033404e1347e076056e393745301069d4ec8810e9952a3e9665594a60eb2de7a68acfc7aa5c759cb6028e1a6a70d410c401c1ee52ece09623850e7697693938205283d4766a0bd5d11dfdce765ceb8980db01c2d7b16da4aea8ef0e0131bcd1be7eddfdea04f3fe2cf5207057f86763c95d1988a73b821b444f25f9d087a4f7c603744a5a8e0b76f0bb166a6e3d42c05ec953e5b10451eb68f4974a2a2a3a4650842127b8e5b8600778881b22d338dca7e8881c044eebc9bea08291b0a2918802eeeb26122565f42829a38c9c1c949193032415183939489293833272728024270748dea6a8141602ce14fc86c405d2c0b7d6570887dffb11d21df0e56c54039ba2565808582a351d78e0682c1270385ed319858173e90bfc4a3db41cef991455c99bed3d178548217cc85498fac75ace00115255a4628cf1144555d4bbea6eaa5f95a0ab2a23b5bda56139b10494532cf1f97c3e9f8a095f802a9062898a3a03524b2a0b7e240eb8b0220a2ea41802174b7071821b4008534a449e3ca3d6c02d070a492c28ecd8fc3b8a80824e5551534c29e190b3050fce57a926305a91fe7c3e6358c2064d50b14413560069c20a4f29e1f094eaf003e10ed6b0821a1ea820053d3c400209d10806441e8e56f1c0063448e28607531c01812470a2206201a1d450f3a981c1b486215513474434682829988068f04c59d8e0eda01912a740920208a1681401352c89c01a681a47c3b9aa5e50228d9c29d610833468b6d8c9d1c1929c286a2e16389aa784051042d89cf0822a30a4c152094cac01471124e707555411c42de7074420cf8852410760a0051454f8020a466801852a709cf07909baa0882c8c54251c5a5545a3a7a801e7ab4c5d4c2a684e98c112b0c28641113846600a2c01086458b204670a646c21ea950cc38fa013a2f80286c7210a2da2c0e162622107ce90235cd0e4e0800815140d24080c15b68ca26c0ca33ef75ef760383d49781e0d13f306070c5a50c9818c2000a171699cebabaad1a8e163a7a3e168779315540801bfeba06be71a75713a1c7cd7b143afb49c1c10c1ed1f9069968c2647073c461a8e0ed893a3832538b7239f9c1c28c1b995f15a058702144084c38d141d4d07371dad82d1545d9014165ebf9b639ba65319f55ca7bf1eb270f9e88e09e2f4189e7310767777dff696763d4174a9bbbbbb6184139ce004618b97136aff55f03ddb601a9e8367c849a4c2288c544b8ce984134cf080091bfc407eaaa70305a77975aa8a8aedd34af15490c7422b69430626383e5335b29aac216cb7529c486051f25a3d414841f8da7dac73f0d3d5a5825041faddd8b0a16a82504146a329c8148482d7b51c919a6e6b39e21db458201f278ac863993753442a2cbc2325f7f68e7cdeb83f3fe22acabdc9bd2957021c5d051d0f09c0ef12c653cfc508a7ec7828228f2212cfa8ee9922620364e1d60e4f5343f707e36b172184cd5eefc2aaab2392fe2001d919af4868d9d3fb54b51ced37a4d15efb4b22d1b0ac782208d6914a9531ad4012856a85b1852abb9860d4cf1550548a8a39839a393179501fa07949a2c3803e2fbaf3a0090f4fdff2aaadb76c9e6f97c0c9416f690ad4d3c7c3571b0a1d73b407bc24d1e12b49f4695d92e8f6d030e93a8c75d12feba25b5774e7eb419f707eaa27197be8da9053b1dbe3e4f5c29c1c7461505ea1cdd89581f8e44214f7fa4879a0dc46ba320fcbd3d79b2f34c94eb343991d5e66103b566105c179ec3583a710bb10743385b5cd4328a1ad3ec78ebd6a96d1b1095c87167b664536a7f010ba7906875ee128133d135dd1afdf821ee2f1441fd9aa7188de9a45f4462530834921f8103c3dbc6efbbc309f5b9fdbf24036cbc0aabed1ea6e59af07dd3c8341c72cb539085ce3d75bb38c4edffa8a5e43c4827d645be3c0b2c9a7834ee685a9b7dcad7aab07948b0e7ac8e62030f6cc66874f40a7079d5ef479140b23ba5906d6b71df55e3fb1d9311bca6ce390cd2697b26cb61e82190cfa9424d1af8b3e6de8d46207d9ec30e8d5e62070bdc862a7c74e1fbaf39785c12ebda33c809e816cabd6ab6736ffc0167da5afa71776097bbdf3baf907b64e6f96812dcf60eb7eee0e2b00440e02fa684338ec9cc90b35d1ea54c51b152cf1c8d61ae8521343ca8e99235197b20c7e317347c4ef4ecc0c0ebfe96e60d7da7513f27515cf3d2c485018aa7bcbda351424080cb571cbf1e26a8d8565faf4473d5a20412a97f80f15ffb129d0e102298a2255b702f00d63a0bac4aaa22e141123e99986b08a87b1b8d6decd8e86fa80b5f65a93dd0ee0856c292ba4ea10572755ed73bec9f6520e7f2cb5cb50ddf373e8cc81fda9bab8be80a33fd95aa41ec39e20179aeee88a2a3d1cb1bbbba7d8104238756c081bc2ceddadbb75bb6ed80d5f6badbbc5d8551664ffbd9e34b599f05a8bbf61846143d7a073d70daafb51dde3e16990b6056e201be8a0488031c2490a1c08c339e79c731c08630d154e21a583b335935163713aefa163239b38a7a3e374706be71c7c7e3d3db0c6f9f02c6c41bb37458d535487dbc4a6a82a264954b1bee3cd3a66a33ee0d0a5aa6aeae36df174e02e451dbcbf23b55de52f0ecb0875e80f3c96e9da86e341956606fceede2b34aaab79fda8d758a89b92c374f1733d341d40c0a3b16487e3fd04180df8351d0be796c48b0fb41cefafa60d997ae0bc188271e096e305102c7bca215d7a8e0afca6898aa4b3d3a9a594ded989b64824ea1785bbe912921d1e31f0234274fa5ca7be71b9c34d6febe3bd2436f524eb27c724b6a41e21df9225a05737ef5065d565d5e8a8e5a85e53f3c964cd64ad1efa8d50153f71ce795db3fadccce6cadeb0209b6376c026afa01995d4baf46ebcc63321541b58de396df6cf8d6717155133b4b1914d5e44536b97e6ab2ecddb70cb92eaad3b8c59523d76d0a505bd6d7e4b60dc3fce524c54096d72c06e5404bba36c811d7ca24bef008036a3371400dc060575defd19e9d2bbe995b944aff43f57027f0ee1a7bfc06833c440e0187aa32f3138bb19ec6c0ca6ac4cc4a18b006780cfa37d977d4b6616e1f96a85d861dd07eca00bbb346b8c2c8a0580cd236c8395375c8dfb92a0f1761ecb53a297e031d2535c1393976e529f0fd5d20de63a8ac352de1c23c2a494aea52feb6ccb9bb66194878e0232e37af625adeda083dd413c44b0bbd583f2364308ee571bec6e190922a59b16dd91d9bc20b0ccc330d60150d11f4077d86db8bbf9c65f0dfdc1babbcf06a63fbd1f79ccbbbbbb97194c1d4618213ce9e5731bbca4176a063e740960a7ded214e86b43cee86de5e5a7b7cd313ddc257d3e59d2e7d4a7392fe97379b83eff72cdf9cf5f269563700c76ef0c5f435e1b72ea746344a337da037b5f18ecd485a98f11e1e9c6883076617de813f5018547bd0d0057e6f5cd365c78e3ca3c487fb07e00ddecb065f30feca63bcae3e13ef570a33d20763f64f8e959e661eb661360f77859cd8ceec8ee6ce3e9c22bf3b08b3cdac626930fbb3f77259e4d97280f2bbb65730cb64ec9fa5cdfb14bfb997f993eaf087f6630e4f1b07c4b43eb30b45981a7b6c2d8ad177bfccb3483e325f1e8c7bf34963df47867e485c92cca23bb728c88b2d50f1f2c9f59f84621a807e5d7650399515b4e1492e0eb30db2cc2d37ceb95fab135c64fd3a5a87be335de7608caa3b1bc30f0d71df501e5d7afb7340fd86b76909ca06c3ebe6233f4fe7cb2f39695f9c6b571fd7a086648d4499fcfcf60ea92645bead1da1c83a75b565a1e3ded0bc583ba7d477980c7def2a6eba46336ffc017693a89479ffa4b4f97f412e1e7e61ff87ae853685e37b32827d91c011cba0d9b358043af61730c0efdd53c1bba6374fa46e9100ea3bca579986094fb7aba14b22f891535439b2a7a050aa9c1f9ed602d76b45802bf1a2d8e5080919745918b5b4e1637393b4a7033825bcece0df6c13dbe2d8cb3d086c8cbd4d361dfec3e84c9db9adc35774732c638d34bdcb8ea2ded7a5674c715834a3dd71b3c02225d7293b38e48cbf341e139a70f24d22bd72bba43bed11d266f694bfabc61ebfacafcf5f9cd7c861603ef26f6087eafbed32bf18edaa0c5abb1796e5491a84ff4841ca1d66815ec4111224b655049d39f1746be2842e3429fa1cd3b7c90da92107e9bcbab792cb0064de077214f0896a21f1d52d3b7a6a6853c1cef5547d1a511d4c292b784be5e6fefd5bca4a2238b706e51dfa062cf6eef3c1ccfc94bdde932a1665fd4b7e4927f7f4a3c1bca85ab778edd9d9de7d17577f38b6c81df413bd0484f0197681cef7d337ca2aa378b70863615bb195281df855c37c32ade1da553610d5a0e1b2a9e10c5ab79c211f8d5e8a0e1681e0b5ce28a338eb8c28c2aaee829238b9a2c824c38c327a0708fb8e570310696d43e251a077d3539d55d24301249e00c8550aebdcbdd5d58839683429b96e33d34849a1d0db4e9d2ab21f51b1225de74d981c6f11ecd732a36872ebd2b797746a859077e6f0cfc406ac111e8d2bbc34095859a9bceb4139036875864aaaa5a47a3bf92ca0caa3b91f89b3804bf473b0157c445574db0aa93f5d1626c6142cd39e06e9d32708636393a48a010e71eb4997eb8192bf6a0a948d4cc651cf8d957d375ee5551d55aab111c8daea243c5e970184be5baa9d111681825814513f81d8b2fe077d1471d80ac21a1a4a6e970c518f03bbca1aad10300300a700513f8dd06bae355306cc080064d871b6e0a5688a100f8596183df4974c7abd6053b36a850448c1d8a1481df6b5493247a608451e770c60ec8908112b0b8420d15faeaeeeeee2e023ae10802a0506934210bb8bbbbfb277447d3179cc1a4d48424e07711ddf1462df822848026d03020870bfc0ea23bdee802334882064ca8618a2128e0a90e062ab86c2a1683e68283c61719ddd1541a6aae98c04503705a40051c2417810e90e0820a4096d0850ea690b5e00b0dcb82094070ffba3942b841431576f083298071e2821dd0259c81bb5f45a31b4f29e1a092c3126a80fb53c70ccd14514883093870a20b44a4801d91459307a802a70a4ab8411494100602e454f102951c34d001164a869ca18622cec8a88786864605356298f56305dc4780026e1e24ec8084041c3192b044159260063c22a203d75a758d4e420c47352c88f400bf4fa228b8a8c30866e077582de10946a8e10927ba8041122e0add3debcbc10835c0eff31901097e14bf372de051d6de7bb3de18614910e1882910210bb83faba80827c04d05dc450803cb12f5ae2309fcde7b6fe4840003dc879d23841edc170de108ee2fe0fe7153a1458e2e9c00b70ca9ecbd4641cd6da7fad0dd4e0ab2a56457033311d51f0190666955c0c00deedc7a565a0e1084e056d290503f380c7b05a644fd07d825ea99ba9ffeaca30e29f807e1e9149b47670cf94e4df011c643ca837b55c5ec80e3cdef433cced6a5c9dea8b222344e11d97ac5b9be9155af38a7a2e325ea556369eddeea5637037f74371259f54aadaa8a7a37882be8f2c305364fdb1ce5e1baf5328f4007c76799242d035150a86637da198cd94c11a10d9e806a05452b46d0e328749447fafaeb52c6ac077dbd3de6e5ebafecf298f7f2c65f59863e69bd3e3dbe5a0ccb44dcf48897541f3f49f5f419fd94a742b55e98d0e763a2cd3474dd117d45b9d084821e25485650ad580561b5b6aa6a15a494889bc7d32ba15393d32bfac9a5c852d0a9c85ec74037d76ab3d390b4c12722ebf08935b14f8c2e51fad0a5d7aa97524a69b5f9aad76bb54e3d9b52caeb7a86cd6ab3c699cdd68d794728fdb4f2b2f3b53eb33ce6757aac614bfe73ddc98373cc3bf2b1790444468043c44d7c477a44f58c386b0cc5985d468ad9283f298dd100e8d2b6ecc26a28cbe20c06d92cbaaa6952ad18e30f268fb78a4eaa5b317951517c8dd9b15f36bbb43906cb4bba1e5b1ab3a4eba04b996330e9ba3d341c0f9aa72ea7381f2dbd86b8018760064f29afc75f8f97cf6c9e27cf1ee575fae9b2d965b3f849661746744c94af1b238aa2b7bfa63c44b7d5a0c76e1edd8c524feba3497dacf1baa28cf2d7b11a4fadc778c919b12ad618e3ab2ed518e5adcce6189c5926f49d9ebc5e9e844e2de8a48429a594d2c679544facc323ac3d932ba2d6a595d91c23baa4b4a625e5b1cbd27a41d7754a43a0439beba967d8a57ce8e618d0e7756ae74136bb9594d827769dda1c83e92f4b9f4598ce46ed47c688e8cd33d33a6c596f798f11d0006e87a2d00e645f3603812f59eba7b17cb5ae75acaa72cd23205aae5bb67d1eb5ac0ba237fb5cf4c1ec0cbe6c7e84ef26ef99a33e38fc5ef51bbd073acadfcd27ff9cfef3cf9f95943ef49ebd9bdc07ecf41f3b49d6dfebe55b9a5a92f5ebb4aa5afbdc0c042659b7de0c04109f967cd69fbcd9c7f11036700866b0f54f7e55d53ac2f33ef996f7b19fb7473a01500f0e834e2f1da580c39fcb6a7e40a7b407e89f0b033a766142a732715e9988411786e89bf208dd36a237a35c7822ef4c5ef6e6e925b59352ebd33f9fa713e5f1f0bc9f2b1fbdedfdbdf7de7bb43a66331018fbac42a31a6566e5b3d765b5ad3decd236a6cf446f2cf5ed5d939babeb86e4cd234c0f6a8a83d29b65e2bb9f6961e83f5665e91ba56f697ac30d0000800d36dcb84122d9b051a3c66884827272626222128542205096d58a61d745e99c525ad607cb0f7eb55e0cbbb9ba9e291d42afde9a0ed873c42fab6e9eb03ce821db5a0ed0cd137ebf2c7ed9bd725c178b58ca92cdd7e327f6a6ff7ce83f33592662fa762b03412f662debba32117fa665f347de9240d8a045bd749407f9d9e2b4f907febc999b1620def5f180077a36d200813e7a0e61f8ac31a03903f4e11b3c39141d9a1c5a15bc96bd6a3dbc6c0843a19084a1cfbf846e8b18f639c444521efe459ad47958afcb36b6aa0b03ba6b8e011083366b06803fb170945d8aac89ad2d0784365756c27f2ee12dd151dea8f599a2a31c45344d0e4fe26172f817939bdb21a51956812ce82d6f6473e306750d134877546df21b6f3fd46814d2e1cd36dee80f261d92d262a7161ebb2ee51bed113a7d11610cc3eae561061f0381402090f5cf5fac7fb26cdaecf38fbc056f6d3924846f7402a25778b147084d6ad8cfe7217949f0f2d6b1872c091ef4d075c1cbc38c852f08e121847fc920e965f4134a419f34f4d1956f14c2cb4322e05fe685a0cf60da83fb846c9eff5c1b72eabc31a27808510e7fd91c23c236cf1b23c2f2188a0f0ea5c6e5e1cda40b4d2eefe80f26af71b3c32626b54e3843d8eba789947447552f0cdd2ca7acaccfabfbb12e6df557e33984e5b3c680e90cd097f2f255afd8b8fcec95d1e56bd301e5d2e4993cb5f29a587a0c9337c760ecb26badb556596b8d2722eca1939fdcd6a5d19c977f992858bdcc3e831b9b586f6913ebf0740c906f2a6dd60c206f230be1ec356e6e9c27eeec726451ec9412c3b06b4e79d1e7953719bdc61b36a127afa3d7788d110acae55f502e29e8f22f207a6233c45975f38c0f1f6c49cbc254ffbcccc8cb2ae55f2ef9921df439abbc241e42a1cbbf842e59a59c55ca57d946b1b7bccfe7d5a584315884e585cd29e59b15965974ea15f4675d98ea9f4ff58f4b633e148365b5212ba725f1907dbee5982fd96d3cac9bbcd1eb0a855eed6559775e120fd7676d39b29bdb6768cebf60370687a8cd33f4d2d683b090e84e97f552369b2b592d8987ebf52d47bdd7eb5fae5bef0ca63cb283dee8b4f87ac86687493e64071d94ddeb3cd4cb9378d4cbbfd45b5b8eebf2d696637e0637dc68bd241ed8e55fb08bdefc03cb37d9d2ee304603f0d5b8372d133a9c13cb7c14b2b04bb9551586d5e6999889eb6366b5dd5da37bd43dc40d1357954c55c9c8c4cc9819336b8cbabbbb654e56e8e853f4d189855daaaa983965300d9dfec954313366ca5431b3aa6266ccecc007306e6f15fd31dd49c889989dda90cd1dc021910928deeb325a98f8c65252c76c4ec1d8b178e7697e07f00c118c6136f459df4397ae37cac3bda5e3755dd745814ca82baa37be451bb239252605bb6753fc49bc08445d44fd445254143dd638798c261f3dde8c227abcd5f5ec57e8543d75477b64bf7ad0cf5f58c42216b14baaf7fabcd7a947ec219bafb79b7c5e9602d8e327ea57e6680fea92eaa94f523d7d761dc3307ae7cd1dc0d4b1eb1566f296ce6cce30ecc2987c5e18d0b198148c9db239bb3129d804745b8d2bf3f0c94717a288443f9c5097222acba86b52d73311f5284f51d9bc395258a4a8b8332fbfa4d167565eaf367700d7bf93379467d1c48fa067972093b72e895ce8208b5d64af1877c0f145a2c97be852769075b83e16f8f72ccbb2eca39babec2837d797fde49adcd6a54cbe65f4c2c84f3963522edb5a9a4a9bbdd16cce67d7cd331dc0d831166fe078038b46318b7034c1a2c9cd55642b7ce8d643dbf2309b41af7e85e885c93e67f66962627988b2b763af96dadc81ec5e8f963e646b06ddcfcc6c9ef134d263b903383bb53cae8be1f81a9382e7ad579b7fe0999267a87558cab73c3ba3449e21d2010c5b8a8b1426685c86fe20b430f48daf5b98cd33985eecd2ba1908d0b11ed7dfa53a5f6bad0f5df7e61950bb0c440961d8b3104a153a9c37db40c944af310a4dd021ed216f9d7eceda9a745d7aebb6c34feb209be5db25207a7d4b5b17d1d3cfc7c3530b021d3ba5f5f0d6e7e53152bd3ce4b52e95960864591746f47a61b26312a3a29961990d94cf633546a1cf104a28448f5d62966298c4acd363a189514bde3cb1297b58581eb39f53fae88e0fcaf3c4735e6616eb219af67a766cce7a4cf477297493bfd04337b1b071844247b9a2d0a7298f8f9565a085c16ebd61127ba31836e7c94126a0eb27d79c3799d9a7571086894e6de822cb23743a7fb983ecf569eb651b579b33cb66ebb2623ce4a5f3d7c42e9b7ff0a0b77549423cdfe6e7f0fde819d0cba278bdc8e620b0e81242084bd8cdf5e62030bc199bf3a0df8a5eefe09c9fb70e438fddc24050641bbef20c8f86d63f5fd2e033f75a8f029f41981d9ede4c7a9387f0e4360e6f3679bb553df67a6a1dce1e3e2a1e8284eba9cd355738b661f7e88e868e34718fe7fedc8ec685d6ef55d1973d61e3426d78849673648997d63d1275e9bdb90a1f15644b51c12a871042a80332de081e4b106f8a10678cf7960aefb8afa1902de5c3448d30ba485875836f5cf83f4ed4ae7047b61547b5f639fd9f176d65d269a57e9bb4c0fdfc8cd8dc081942044727488d902144707476787a2ab7a4d28c82bca66423a46f5492948e9c67b45375703be27088d054416acdc8e637435496947a9e6474a4edeca8e0e850291d8814f0d573a533513bf14c3a91271ae915376d31edc418679c6a269b27b438e94c3b9316d316d313a627c46967d29978269d185f7349c15da4803ba6072787a30b5555b58e467fa9f470de9287a35f55b58e46bf8eb724885755b58e467fa90487c0244984241122042611029308814984e08e3791e7e1e8df1c893747e24d7447e2cd91c86313796c224fe4b1893c53cda4a2522afda3aaaa2fc8a41364d20932e9bc16d4f869b236edde12aa8fb8371c32b5909e24b81f4c127b1ade40222ef2e08e91e7399ac96a41cd959a93cd13bc3fe0cc046dd06207c306dba5d38142112a5dbd571c0e59058b2a14c10d8b2ab8003f4b72d60d805770b542182856f00296cfc709b0ecf972d248d2049a20d85d99c63e281c0258033c7f80659ccf828c8049d41b16633c01537f96445d843fd6b202a6feece7b27d9a75f9c0b03b0c5a0e252cc56d1b166370017f6ccd7ba5b9a0e6b953853c96e971c99297e41dc1f1332eeead4f44fc744b3b18a8aa3be3d23797da8622d4b91397c03bbdd23c184e244b1c993b3d776c60411502564b304cf270c07f88d4083457b38383f0d1d3330118b41cf0f016682c2e0987031ede5c03675733ea9b9d0edccd166e3baea6e580a786507be8d288dac046a04bf011c39663461418dee1b82d9ac56448cb19c37451389b2139383b22181ec931630c9c5d1197d73b457874b698467a450162e004e03c916018811e26b0e3e2f4c273d13d1b707cb164dfefea6e1e8d6cc82699e2a6437b397efdb6f8c21c820427bc203c27a230849a6f8c2520d11182f384b421382f09380ca1a2571e0b0e733e2d5454ec80df0e2a29d5e79a4f0c35371c28e4f50afceb99440e19687c72c8589243061a396428c92143496cae35d75c6b6e9a260797e4d6338fd0549af9764738205d6a25c02bb0c8098275acb82b608705ce12ec8ec30ed88d60a9c5c78c70c601b7976e52868a834a0e39643881f3081b21a309acf21b4e099d43af6495d66ac0fd9a03dc1795d1a30323476882a70642703982fba51bdcc7a1a1bd31ca42cda551d700bb188b90cda5a58886d43081832157c8208c0bb79351c4c64e0e1955f49011468d183736f042d502490425a40c4758e2f2e346125b10e19238c20b685c7e38279248e2d25800a20511971e43e704362e5dc410c8a0e322e36ceb8eb8220d475ce434dbf60bd0e862c745525970411097e6042eca10e2223fb3ed0a147482b8486bb6ed245680e4888b94a40cbc8d90820c3a2e7d4919e83f20419e80e3f20385884ba321032d6e5c7edc70e3d22539675bb7930616745c249d6d1b1896e005222ef2c23a892cec1c71f9d1aea5b0e4898ade8849e7a4d68df8589f4f95d6b44eaf1b212f7a39e98ca7cf4107b5cdcad2ff627c13f5e28b0f5a1b729e7baf82749740ab92d4f79c734130f8dc836dc48c3228a1eedc2dea114ed61b0f77ca392b9d0cfd63654216443d14b28d7a28e4b216ea1fa8dccdce51ce51593cc127d7c7c36e872e4577472d47fc670c35b7247874f2f898a603f57803ee9114f5ab935b7529b298dc0fdc5cef0df861cafd03b1be77e57029d8e12cd7d165f30db49b10ae5fda6394ddcec1749720750abaf6aea9b93bd71675add5ae5d9fc03df83ed07478b89dfd546f9b672aaa2dc9876e58ca38bbddc739f76caefe396561688f9e958dff407c4caf508f55574d5d128f97461a69d4543fdccc14435680104208218429b02a8d4a38e8a866e9876c2964d4201e4b6b227ac5e1162a96fab56c760a82020e372270bc15a8c6784b1bb978151d95a3c9826c29ef753f09343cbb2405b80279232c694d975f417523a88aa22e57f0b911d5a7aa2ebf8279233ef21febf2ae60e4628425c5fb3f6f3f1570704e79cba18c9c2908c17907dc2ead65ab8743c7b3b1b56cbef7eb1e905033b1a311e4836e7a7df7089f5d9f51fbce591b37f57516b25dd7755dd7755d9708b326ff651dceb22cbb2ed0755dd7755dd7755dd7755dd7755dd7755dd7755d57e8d7f5502874cda63b2e384db0c32a885cd575ddc48a2e28040a8540f5baaeebbaae50e8baaeebba4ed11d57d3cb5d1745795ccf2eaf2bcb62d5a5ebd5b68b07781bbebea30a32fe4d6d6ad3f4a667c308b5ef5e73fd1e698f181f151f15d525e95274ad3bc6cb097ac8a3048617f13c818fe3b10bcbde17a98fbd61907cbb59f4280f782a3ab4b9b1e852da21aa790de0ead30a31651c96f2366cc8a19496680f8be37ded1d4288adf8165bfacfb57759d695215bf1084fe966c3f1a47e7d3f534adf78c4c3d01ef130940689aebd0b446f76385a529ffe584a2b2fafbcb4ad0b557491a8b9767d02f7e06b693a3c0c46113096e014dc72c030826fd0c0f0b2ca515dda3cb343ce396725a5351b95d146eb8cea708cf32d2fda5cddfae70bb5bdc53120f47658ed10dd0cf1100e872e89c74b230d4cb5a9af3c834197d4cfee701930f33216a692b7e425bcbcec59f97016ccaa11ec4edd9c42915a453c401ace5ba650057e8f40055c18f8bd3404bfe3d02ccee5895acbf16c4c51aff969a2e686d31abbbbe40af78af5cfdff49ee3e7e9214cbcbcf581c1cfc789f690873a4d1c81e521948faf2aca4e2943381cef9c15d58e4cefa4089445aa2d766838dcab5ca9cf13b5071b2bf0f1325655adf14df02ad3fb04ddcec3b10982a7bff710dc97ae0ba7e36892a46078032ec1dd335d195d723d2a8fb7e73da7456399a228e0763aeff12ec96c287043c8d2370d4743f80e6d2eb92429373e4e4997fa87f7e94e47de7c8afae7e65a5d49410adb89c6e294b443e3079f22d4be89b0f5a504bbc798127e7765501f30fcae4be272e5da7b57fe81875468b05a976e3851554a5180402d065ca2c106ab6d9c2e41233d3b3b183b28070c2a30e8593dc88923989ad4e39947a624f83ddf30794e692cd3ce4b3cfc7b4582ecc3a8a0e7d173506b1128a457463576401fdc6014f487ec4221175261a3081546c6e1225498ec320e836e830835977a8bd6e9d22342ed17af7e6e1c1e22863b5d02dd2c5361d0475d02dd7749e7429c2ebd5aa77a6955592b86bd62d8070715f40c7760d3e021d5ab21ff3051611519ee54d91fe8ef90a7e980fd5d62d661087af66776ba0ae5013a76311d277ab0e8a08b6426b2397449005894d929b343389c5d0c5c48a44b0f7ad1723c0a775a8ef7cf1235370e184fe0864197d674f24d6841bf6c6e7c1d1281556476760974fb98353904bda5a79d979b18fdde46d40c77f2b47303ced5901b303584aa8654431a8e77ead34eaf88fe321399d9864516e2d01d15856e4c09679799ad5862a01a1906bd350cba6d3a64071de402ba7ccef57bf1aacfacc348b07c6e62c0ecf5799ad6e90365b6735a8e8763839a5d18d041af9720cb83c3ade500d956d52142409ce10e0e7effd8ca0e11c2e10c7784883897f08538606074ab06b700cc845ce809f732c46da26073fde00ff7e146a446a3d21dc208ee49b619f25686d5ac94e57a1ee1e65ec54e965eba53ba54c2e6db6615951d7ac0001031230052b384102a70b6b82c102964533fc0f7cd175ba73fa46451a94bcfd159859a4fed10e2a5611f6f0d3438fec5e1a9b175370525b8fbf24d7d3001b65eea15797973630bde943c84c32d3d05c7809623577755975e757d949a63409fa05f3f17afe994cd26b82a36872ea9b41c9817ea53647f6cd0b1bb5bc7c3d15e29a9eeaeb173ae9f0b83042245abb86207e17db19d736ed4723c77d7d081e18407f41826b3c7d063b43906a792a854ac76d5410d3b4523000000009314000028140c888442b1603c1ea9a2ec0314800d8b984674501b09e32488611053c618638000100000018091d10401004a4a3711366515505acedcba6bf6c4a2c74dc1e15dd1a60db96860abcedcc31e9d6fd1d933b580d7480763c9c5b1b9120cbc02cdc4afe0025ac411f34a8a0802f9fd4ec82ba030f51b6e33a7ede62de070559e24c84a960470be91ca1b69b93199001f44ab0e6c7cbf3bb6f64fa367c86393cfaf382ed02f778ef459468c9aeb2421dc3533632702bd3ac4a0ded8f559f759a411754cabfc5c8ac49d4cc82bc4abedac513b243cecbd148ce4a3bf2308d72dcb017c6453777e06f5645349aa0941a31de5bce54ec634bea0412787f8a4233662da26b3021b63d42bca7ddf1441e75f9fe272ec10a2f293481786c04c8f4a25344737a67251b927adc5c728ad13f94a4c4a3904ba90cec4889c0ed8ae2677a8624e789b098eeb5888c91778975e5e7bc1b7aa4bbb46326b1e847688a3a3b66fb4508c798131708caba60f9d395a7436cf3a96957a47673cac0a30dc0cdb0e8911d6d5059c936bda9600a76b3bbff4cc1324d3c40a674eafd4b05c6e1b1472cc45e929f281f65dcbc31c7acac210d26d5dae58eead6becf2660a69885565622858c645c04399e2da4379aa82d43089bcb643ebcfc6859f7d96ce5095d4a92d234893919b896487052820ac440af65c35b213d9becca1bcbe7770350195515ba3ffb1745a0e1f6181ea44ac4546c92310298e7497d452f42caa9e2745f533c98c637158648908240999e12d7667de30e5b6c513853621b941f9efc0805afcdc7b21cbdf93df202cef2f81f0faa9605c49b32c8b1258ace36576470be22117bf79d31b6f7cfb23caeeb375e42db8146c3a9686c9b4bec1f6713c7fd02e817d881b63522034c274ddc4ba63fec772f849f02c38099d5eb436909caf6131b50723b65aca3a39df10a7e1538b7683d3fcbaeb178e2138d86f0e34db6b20c662ea3428bb9ba65aea0c21bb65792690330e75a631a9a482c612c17cd95c1aa667b250bece59cea53c3e3a93bce540c1c2a7512abd46d1dbff0fa4266336f99e922e50b072dac0c850575ba429e84ddc9eff8a2866cb0c13c9524ca5039ab04d818225d86f69d7a8c6088082650853fb7351bf3c92525e3714f6ac666064802fdb57c1514578f1c3fcd6cda0a2ca33ff70af434c2b6b71fce412e1044a9167a92d76adb8134f70c00d29fc061b277488e9b1f4fca27d8312802c4007b367a736e28f108fd2926dab009cc116efbc45fbd4d2c866646633ab6c585517132d966e86076a09488f198a3a8bf95efbb50a7bcad4966ed98a3e97760a7e39d06c15d88d8389bed7a9abc82a2742570b108d270b619700b1ed596f3f1c55dfa14c082e40d183f3e72aec69d5228ebacd3a52fd64cffd7b232a10a8d034292cf408edd0ffb7f6d3833b371223f69327080a3a72bc574c3b696bd59883f6b48a287ac4ee873e3f8e9310ca6210608fbd955737476bd72aadddc14f7d15ff75c423904692397614b63e0345976cec98705e3076e73368adc07d1a2930b44753fa1ec0710338902b845b80b78f72e2c30cd9ecae1345a0465a37d26cccd666463aabc603b97bb795b5b06a522264f0a8323f34b0eac42a60df4603674c17ef34c0e4e030b0fd36724df30488a2fead564021527ce73d51dbfcba925eaefe4cb4550b8eb21b5f6d2d3a441d3d9c66eebfb1448726a4e8f1265b0fbef1119d67cc825584e90bf450e7f4842c955c18acc4126b29fbfafa2b304205f770e1f95164091abc9d805f161d149a272dec1f34708c29dd64d1d3a884b1bdefdbc5e4404044cc8becf9eabf890aebd8b31f46ece395d7097ea609be3330e7cc8d1d96309ac94f6aed25f4434efd119c82aec5d8bba90b43953c1a0a940f19424d322b4911cdea911d22c456a95bbd8f88f24f8766dc9240b81aabc6c998b3f1791145bd773091ca3db600b4da9a8f2772de5b177084e4090cc5577221aa549e560240f43c15ff9008ae9f1dbce0a2a4e8cc0ca6a4a9062046e0a4d2be2880b6edb0522a17fd2aa0f42300468c6d24f996cae46151441192a5b37628066a07d91e60a4f2cfe80af1e4c0cac63f48f0ef00791221cd239d5ca39555438d227a91c5e112365286c279924957ffc3527a255575803891a4b417fe1d83f44141098c5a12868892daaa8b302ed340c6206ad173b66b4f5e7bbc88d98b16751832ad743fddb94cbbe5ea9fb44a97241a781e6c1040c63ff5af8327ac291782881d0f598c179df2c0bc689e21751abc6be6d9905820812f31fe779f881490a1e04270c8cab3289e6edd3aefcea498aab01a2e63e1581abadf339b20a65c676a2c9518deb0ffa57b160acc84ba7ebcb58f8949ffcf51daa2375df042e12f56e37573e52065430199c6047b3ea80dac8211e902de0ff6e25319a371e8a5f5c467e7746b9857ecfe3e114674c911db91d181d8d88aff96ef91f74cb46efd3862bea194a32f4fad33fe16bb6343b793ee733c5a045f77a8c7ce743c77c3bfe4182f0146bc264463951641cc6ca27c1057b74a3ee68225af0ff5ccfd17fdc8215b68d365917a1ec70d593a3afad0dc0c28652b02d645ffc7fe0cdb0cf12d1e63acff779dff3368117189557d1aca3ebcce09d13a215e8efeb876fed3ebf860586f348c23733426f43b9aee8162488501975ce40feca3945831e85fe94425c6df2b6526f83e83f5cd785d06833051b8ee778857882b7c461bfaabc28d99c2a63ee34aff8749b49e08800ef1036d7f9688879019a7ad5802ce3eec0073f2ae2719a6f25fdc3d3c99dee304ff1142cd1368c710474150b9bfff8a3d0d3e6bda7f4f952281d6ee8ab89204ba1e5c13008e15e27c79641fdcc32c8f93d59b948a20681f5ade1e28d1c5835c59072f0f2756c2293f64ab66b79bb95916cee249fc70b918dd088d0305af976944428d85f37ae29b7995e30c85761b7d322129bf47639256c7418774917e5033672a35e3e4a4af641661489dcf9d8b1a085e6ddec3a5b94c41969d0efaf983f0b20c8cf614f1f1e8f52ab2fa7a07e9c5e524e4a19105591326b131fe029cca0e94b28897866351ad7d7c69e0d4d94cad954651ada4bf031e5c900a860cf4f3cda8a6c976b23a3891f9efaae1b9814972f0370bbc46e703fa96ca6ebe05db4383b2c95fd6880f79efc0f953955978adc13857019fa5452d34e39f472ad39db80a87692896d688ddc0aae34e142f9c4a79206deca6b07e5fcfe6ef44971a06dce914eff4a72b818767e921ab89503cc3b3c209505f39324c40c25a16ef967656c98f00e162fa1fb3ba013236f0a73bb22ee53569b6b4a1e9004f92f18c21d5655dd8d8a7caad79d74f24df349f796eac80ded93c634bcbbd86b16e81fcd87d8ec326a10ed018b51f29b70b9dbe7bed4425cb8faf4bc2abb342b1f0ca042f1401fcbba3adde19a81e85d8f869762ee566de49e0bad018a3694bc318c075173f34d0275fd06e04b440f557ffea32dad649dc81c6e4ebd9bcc620f33c71e36323145b597ef87b7f6f87dc27be6686466615496cdbb528f49e04fa46910ab90ce0ee128823cdefb78266f590ec47c6d917ed94d8c60ce7ea0baadd8fb3ae27416990b565204afd40c10f0e69257772f0a77a0b9826853eec8a723072ed2f3ab8015bb51140517f6c433812b2137758b54212920fa1590e2a0104cc440eca0b0c133c1a042ea49e1dce3e67831509e969c342bd68d740e9c31b9cb7630336e7001cefe3941d6bb5c88fe4f24c3c521f7ed0b78c34d367ec1b54ba195097a344f41c7d2ebec5f00669def9df51015b41b1b1e80e8adea0f6d643fcecbe89f6de3f74d438a5a0068825b99c2e70c3e131a2ba0f25a58fcbd5c6d2c3732ef4ec34fa1c99b970a066e01c70a997c28e8545d80c80ae0fac6c93344b3942a36be7f16b4ecabf0f72d6f801e4ae7bc5e17cb663fcdb89f8802e1e249d476f196daab81d0a654905b620d538c2e20dd1ed03f4d69c3df834c2b2dc7d5abc9b9cb8218a1c1709be72cb8df3c6a493a2c8792d445fbcd1144b4681c6f909d71a81370c63095139536832ff9f7b8f5170b314726ee00733a686613482a7b6494fcbd6f729050ce98570e84689ab48fadd3689258075bc49a2ca1b5d97b54914e33e26ae7b1a8040039a330f89d7eda395e7e282bfe2fb1756c116bd53e3d8f4e04fd37f2a8fc4a1b9d42fb0d571645d4f3b9d4b4ac6567740e3e56acb7904641505eef89ee10e866a38ad0053b34dac1d35bae8a3e082255bcd515eb8a3e11fa398d9b778a3fe54eb82b9e0a7d596de20c0f21368dd55a792cfb105a1688ba86801f9e408dba0002ea71664564ac6ef4a413950f8886fc2857d4cec8c2c5098c4a0e9d99a55f9c576e35cf91d2735110d6e6a16e5de3c922b3bc6148b9355051aac8a97edc8b68a27177ece23c08dca64c23630e1ab6c3b6961df274e0823cd038909ce0520437b156f50c5b73f98c97e6a28a866d93a2ad4e1c6741a5473a8c2e9a00ee4f19fface1d31bd2cd9de3f09ed48abc97461d90c6eb52c3581dd8e7e6bc778e862aaf76412f3a0dc02ebff51efc2167619898152b3c5cff807d5ffeb9d884a1dc8b36e04c06717de1c55ad48a7e040a2e8ee2ccea3dfb85936723fbb5fb2bfbe15e8eb619fc64352974c74f373b10a93c9562e3ced026a97b5c523ebcb71a4dfe227b92037e63ce693c1b7a2d4891c1c6af9592101ec7171cba894972851636a0d7c2b10a473dd936acbcb90fce8a98b6cde385e34cc14285cfffa1cdca522005cd873a1e03b998b3d038fa610f56094321b18909bbbb9c2283bbe087b0f484a81051be7beb9a22c7fbdcce8886e60bdce061b9b740a4a97073ca1f25b03a7114ef8f1918f4297761e9987333401ba421d98e09547994b6587bf7d6694b064d63c2124d544a235e0661f91abc22d3766471fb75f64a9cc884d7944a9b938541d528d9ad616484cbcf5d0e2b6867653af0f52f1f665c2e458a52ac2ef90a130680e6447a7deae7e900a854433089944e909507bc341c84c4c178e3a198547dcd8183cf994bca0a868a52890f2cde1c2befb3c73380e1ccb76fb77adc5397bc952ab16351a4b14d8c98cf34354bbc5bd6a2eb46ed1977a48317995d29bbe615b041db39d6fd6167b03b6455b8f6e7b8b77f71ffea92233e7df7df0f90dd38805e131876daa436a1d391990830fbd66e7c84603ff3255988aa4096ae0df4aa110ae54301fa656d3a550c6bf82c79f99394f9815ae35047faa73b30bfb0054a78909837bcd621b6bfe32c4001ac83bb75c3d113f5a0a3b1509330cf36fbdc0f51e22e8dce08e8fdc523496db9abf84501fd8b933a1c4be3ee13768b0d3425b7d2afd8f3cd829674774618e7c973c713f37db32f80a6db76f2c980add53b6a9b8b2146798c9869faab8305c4553aa801459efd1a7fd39ed0622ac47ea3d524d3a74fb00cd51a9579d38e3a0b134a04d4826f40b377a2bb0428a7bd78b76bb598a47081433781e5e3abd304965f1caad8a3c84195f198bfd9aa0308d333705f1e817893e4a0b460d219be987ff814eb40b91506040dfb3e570d4150114afe1d489e00a8eea990d0fbf9e809e623fb3acdca0301cb464e8c1f9cca00e7b18025d33016b8a104be7874175981c1e46e0d70edcd9c9be1fe5f5640055d943777152a57a991f48939b98abb25f756966332e0e38670fbcb2f8508b862502c8d4b1bb39eb6499df0f06ded9bb9564b7a8f219ef305e827fb52e64f39e6633bb9b9d7373dd0fd8367aa29a55d9a7872acb441b12b5e306a2eb452b95a3b943a441415ac98c691fd5bfb8944d06aad41b61f1833899428d006bde71253e7b19d29312b9e7b48587e9ce6f581024ede399b7d247942a37fcbce2088494e681749793117e7efa49404f26ba5677b37ef42b6c2debe413edd4f2ed755c984fc08240f63c4c9a63f86885573bfefaf94c65122829dbe4b7ee9b4e24d4daebdde9efab5c8f0f196c25dca4d52b333e0ef0c812ac13f67cfdeafaf211a1af11365dcff9cef0794016162fa53efca9d75499cd58902e382aeced8dc4ee30dbe388dc3382e374bec291ce3b0552046cad0db7781bb7644bfeb51ed5729a13307ac3ad9c431dae4fb8af7ae0da72b782ce81008c2b5f3cd6d5792032e0f3e4152a2d4b4551e1af2cb7308cf73a175eedf7140616128c5d658c60440d1cd0f177f406efb7d920d5b2c22749765ed3513b9c2bbea23d032d434711a2b4f9e3e4bd81707662dc1d8e7d256b0cb713b55d31e39ac0e96b2a3b2c5164ddf8106ae7b546614fc9b33c561d0d76972eb604573e72dff8476d2ea905d0dc9a3f275f1ca88fd1dc12e64092b89886fba8a446732e8c68ef7778fb8dbe0a016a6229dc1170344f86ed2c7107d6f4610c65e46de66b1b435e50e7451c094c5491d96a8e3251fc482e6fb1ab6b51cb4b31e72edf18ab1e2f0d7de69f25f133fc223d703dba0dbbf44cdf12468fb9032ae7f03639ddd47da4d286fbd11b05ba102a34973d61cd41a99b699a702ec0f9505d586212816af6236a42b98610ac6109704f67ef348b087c356df870875df8e155a5fa04ab0adc3566a8cfb158b328f121a5ff148683c2ffd5cd973594b90d6223ea4e5395ce5e9bbad5e1ba77cb4aa384d542e54deac3a877b66325d387fb7412f8f0359e5da032f69dfe8a7051cc97d335e4427ad2bd08846c26fb7821321c2afb1c3ef26290f6c4c2248d04fe335ec687fb730dd6dafdb207892eafe8c92785e9a096d32ed4393215cd74040b3f717f6ef78538d6a130faa5cb822364a21aef62329aa4215a9951ec7c36afa9e0bbeed7cb9423159216ebfdcae672c18987d597af0b94046e00c2c9d87c40369aa1931e07a20fe430187231402a05e335928436086527dd81f7986b08797f44e98bf9abe3c0232c5a2c6e74960540d2645dcff2fb4bd0961973c7c2b2c66dc846f03c6228dea88b247834e12b2cca4ed9a87104bde180f44c9c93a9b24609a49657141084a79a2d746be1388de6d587169aaf313f9b2dffa2d5cff3432c73acb13483406cac257699658c65c7b248de651d0879e33b8828edfbc2440818efd991e7cb95909d9014aef3201e87da4c46724b3637aedb4f5c1faadfd94028b753149f3b56a1988d6f5445982981544b352cc83df294db370933c3ed413863d4fce6bf195ec65d97dd76eac0db3af4fb00582822a872416cd8fd36f40e41c09d10ddef2edb55fe5ab6743cb16a634b3132c835489bb1db82176e6cf1aeb28644a55191f6dd61f8de895faca12bd48d81fd65cf2438410400f91608af823c6899ac3fba15a604d174bb5a584bf4552aaa09c1c162cfb0a9c57d1124388b03f60a053ed46cc97aefdb6659350a9839809d03c8e2f8557a982b7dea1599fecf055ab80b390ff821e928f875ca83ecdfa970cdf5c24999a4fafce34db5c245e1ce707ea98a7204d7661b84ff30ca8dce1f8f05555e31f56e3f8a82e3427493af629e89c896c087803249aa18ffe911605339ce5ebd918ebc3077df7de5edf875e144ca008719a7d45c7963d3c54a5715f467e567b08af5e9cab9e972ffa585f3653f50eba876183c35c0a674479dd9000b65fa2f5e3a5dc5e3346221b5308848766539218ae2052d31502449d245db9427a58a0337dc202294880136a615f01fcb474aa05f64c62c5f7f05c7c17d7ab917e1808ebd903a7a7f9ed80df3ea8611c6a7574efa3d09e684d6a43bdd5fe8d9245b723d380f87bd762b381f31dc9fca8403d8810a61e39cbfe9d9befd4ee9df3d137a2c7e68eef7949f098bbf2fe6aca8ad92c352072c70c33b4d6b1f813409b09865f25ad0b5339f6103a81968680e39414c261e7b2cba5462467888c8a2e9138be9ee8f648029af25e83858ca2316f9564dc9985f9aa0e3d807c165788e85f92f9c8649673a5a2d31910fa30b2c5cdcd59cf697c93bb6bf630b0e99a1fd6677d303ed1f61edf293029ebb2691622bba37f6b68c4f462768583a16d6c342fe1fdb319c90d983ed22dd5ea50e2b515e36fa1a978c047ce1415479a69b9390e44dfd4f00dcfb5cc7049663450157f918feb270dc92968520eefcc3937982a794b05be920d6f7d6bd9b61887af2665670acc91d6a256d67dc38d22b3257e462b1027ad3fff98d70b7279957684a4108f0dace29a6618f104628b7538e3b8800048dafe920333e475c1172c2cd603b72d172cc1a6fd2dcd1031996f05c9486a3229f0da5ee86e9f7d158ea67a319991a713df5695940b3bbb67f41e7836b60f93a886640c4b033809797e1ce994600c2455b87a93f6580bd4518cd5df7a245fb4c5c61c47995b054db66129ccc761daa53790f1600b580c540924139dd4c1d612f7687e8fcead4c66000a8c83c647efe0bdd64da45d821c87da5b2d9e96a269ccc343018c02540ff5aea467e0b224cc2a35a524459a8c295371c4cca066c59584aebd6b37a7b09438a0439fc8e84f0623637f252534c170bb324055d8534d668b3461603f068b52e6e524f31b783976b965e61e41e7297dc93d5e18c5e84e33b75ba181ab9174a86ca9afe4f35a1fc424f1e17d38210c917bb0b5cf843319fff6858653f210010732e7fd0804042f22ef7683f3f183429042ea3cdb7730aa4107324e536d5a28219c9af0e8123a240d9e5c7066f456cb90cbc9306841f132f714398bcfe2c7c1005e44e16879d641ed304882e79124103212b25cceab65c8c17319a9941725cbb64a140faab41c614e6b2bf6128395bf195e22175257456e160fb674777bccf583449595c1f5a9073437746132c78291520bbfd9a3a1535ad526763fe335a1ea78b046ba6163bdd8d223584ef345c3ff994fb8457b34dbae2c8f7c970af1e78d135c4dad7444bc39921884a5682861116a81014388723342f855f320ecaa91f85bd2aa7af027c7da6c0441654522c4fc483a01159e09d1d5c45895524dc80359f421a5d1e518a36072469f49cff862c4d03320ac01cc0c801e6e20bccbc9e445f93b2f916807b59040e115bb78481d2ff9fc9a6de7156fd58d276b872c74b4f3939391d31b92b5ef1f326332a10316fab16c960a033767a507c09198f3b3a72273d9ceccebb34f2d9da2cd4ac7f58ea50dfa757dcd9324addd49c440c49ee0489d017f43086d1e697e3ad38cc07f6b7eb14fce7b46d5a7fc87218d55754b932d0fbf20d3b1b7744fd4832a438d5525fbcd96356c8aa03b002f7cfdf709930a28e81cfc588e73f654f7095eb103d93cb0c19be3c9def73d091f0fd7ba59bb3114a10daef1627a6a2633f142e1485bd056b3942aee881272a26bb6d415a768aa40d212c7f5ce4760d3a9b3a97d466571b9ad31d801fe168f563b54d20719cbb2b9fbfe46dc08923aae3230bcdd34f6123e84b4083fe6a94d2f4d062afc9530866fad85d0f9934d99eb14b65971739be583c2362d39949a8e536546604a024f716f890110d214b1f6f7f0946ab48a111a99886822c00ab4202c09b2a1037996ced73a88f17af27230aa1ffa35dd9255b81fc1f1c1ee59f67c0d65078ce7d2187d2d1568ddc2f6e1f2b13ec9e19a5a9635dcef851f6599dc0815f6a9a47dee55818a68b41c43a8e3745e0e31732c08d2333c6dd945ad6a3d14b8a20b4f4a24314f3ec1dc1fe0a5009da844faec8e2621adf4591fc702cce907681ee5a6e2317bc06c93a0f5e6f56f08648e53a63983223bedb485c53944ae7404c1838dec456e42c0b498cce97d73a6b83442029f78c02c97e10473984394250ee8c2684dca29e2556bfbc0508e8e76991552c1e7d106e0faa2ca9e7ca12b4bc24e605972c1b5fcf4f82242e8911bd6d52d08b513d1e7ae8636802169993b45d30c56f466586997c2c08d9657af11770bbb2b763a75eedcadbe6f906ea576996415a27d99809c8f03858f7af3285973a21360ab7c83c97a6b1a30ab7b86aa42eca51d84ef486ba8e2b658b7b70438aa203eac6ef1b29a5fbdb3f7f4bf810b7049638f4c4815e1104a79e72e93a09e1781d306d98ea28041f742a4c28209117f7fc8d807b73aaa6db2cbcbeff6bae2a1bad6203947540f2dc1eef9188cbbd79f27fd3ad8880e7f5a23a01df1eb1db98e9b1b756856b987c84d7e05d23fe76b4fe3b4fdb12b2a7ae714ead66f8543fb831bfb29606996e90149e8ebe655a2c642177d36259b77818e714540cdc8324f90dd36eca7b1dd9de69c01e5c4676e309c792322438657d48d8961f2d8ea5c1c64ab63f4730c38530635d99be3a8c6866b8b8d0bb27bf8f886b47f925299b14a57594a81e0d011ae6a1106ece9dfa54a147701dd0ba6e2947e5616614d6bc591194b15b75037ecf2d9aa6b1b427527aedba7436867dbfe9cbb96301c4e2007e9728f8ef58f2590889ccdb18d7b40950d32f990887b522482771b170947d6f021141d4a2d489c60366e2932a69f12071136a3b24ad61169407f23bbd93eaf0ee40909410350dd37747f3a77d3b1d20502d7139d44c8a31186bb2d9ca6163c98cb117a842c34b1617382415e4d8617639c662f09c03222f3cc6160acc589ab120748a14397e25ad499bd51a031bdbd5f7ae9f3ed153415f1ffc94b3ba006498bceb88268fc0679929ed994495cb7185633ea92a196b037220ecbcb9765254603fe29a28f192ae0f786ddfde253c97839208d504f6e6c0024935ca739a59a1e950a980f604bd5f3643f0bfe9d7edc059a5a7a14623b11784d9394074a8f845cce9b10c56752f4e035a840adc9f7a9a183abbaa31c206fe94908e51fc1b32282473af2591c9bc6e1733a4c2b3e091579ee67488016943af067768ccb20273fe3314dc4bcd61de5358d68caaac2858e469163dfc1dbfdf755b8e02db584b9d5b33d6210a0a20e34bb3abe9149a2a53347d86758ac5eabb1d39a17c88a5e95ffdfc28ed8ff4829ac262b8d93d87102b263e90119e497cf5e793bea47ea65664733ee425323e8fbb136ee74c73e4d36b54caaf9c6be076e7034f9a4dbc909af9c81dc229da2982088040f89f802a4cb9cf217a02930263e2ac37efafa3fa9c0d870214ca99d21b2c6bb54e41df798568ab151bff8497728da6cc20e01aa66b50f904f340f5f64ed012e4bf7ea721f84ffa95e019c13eaca5334770e4335202e95d3ad2b1a417ac98ea1522b668d1df91b0ce362b73fdbe96fbbb2089b615f8162fc1b54b39b1411c7722c1e9a9760f4bf6cd2b922181abb7eaf71e7fe0d682790718fe4bf9717765919e442d3ce6d001f2c7ca4988fc4088e7116a8486651687897b408ca70fe3dcc84129bc9584edd6b7fc203be9404ebfb63fc4fd75cd0319c80dc60b562a1f40b3ee0f2c4a5e26dd01ea24cbb58d5e7c743cad82f8d14431a659271d7b043c7168ec995681752d58ce6acd41a57f0d1c7f8c69d7436b3e909ef7b812b821cc556e0fafcfb0c3dfe446466502f820ad167e0a7c00061a104d431f1f48f3ed472e8b51b989191bb280e1b69cf62ad6fb4c1d8c6e397ecbc00417e6c19f5befc59bfa9d8fd6404c9825aedd916b1236df15d334a6040ae11d1482b0767ad4c3cddd535856ca6cb8546d3edb214484d6436831fb0820cf07a85927641e868d6a91611594ffd8a4ee740b00a35910ff2875f5ecada12d8526273748512a2504184442787927ed5840d5b5b3f4ffe228a02b4b63f322ea0a8a9f0e12a52249fbd247fb149d303cf2f0894985d7568250238b664b12a5d63f80e138f84e59838df377cc4af915390127eca612fd28441de6f7127dc56fb72bb1cfb236eed4f4d2a09b365d5a74d2a49f865e1a74d3a64b8b4e9af4d3d04b836eda7469d149937e1a7a69d04d9b2e2d3a69d24f432f0d3a4d73bcd2ae585019ab75c2d884d47753392a439e16d3a21ea1a592df2c9e17c81a0095126726842ba8fb3ee5591fcbd07c07b71e7304259c8c9d82b37d2d7b07720bb1b1396d9d5f5432f2a1231843e017074feb762bb52364912d871e1dd75e2a9bff219470121dd90c3e4fcbc7d78e3c76e85ca9529b187fecd97185477c9ea66b23be2d2743590c4ab83a3ab56e558319d87e1b038b1eebe23b580bc3df9494f019651c4d3511c2bd32027fadc8308d94a0bc778b8aefc885b70b3f2b3399dd913c44e8999b2d4e65382a4c43fe21b1f79b4f53e09827f00f41b8dc99f77a44dd968ae189ae45d6004700682d4eca5806a3c04093eb1c09ee0300137b1240bcfe261cf6571a57941331d27b88cf97d3e48ba0e7c1fd21b454c06780040a9194c59c63221bd807b884e82a3c80d9b91016b8e0bc794b51ce94e4bfbf5f29183d93e617908282309e57030f1f920464b744ba09339e6be58ff95cb1d8388edf7baa49e5b72bfa211b7fab4f1b8fc54741d743e23fa290e6dce5f47f92866a27219fa77f6c2c94cf6a52fb94e158e0f2e30feb90af7f29f8ae780393a322e38f7a01e53e823fe08d33d7ba331cb1b46b2690348ce2f387a8444a24f55348297eab6c7d170d00b0ff0cad63a84aa5428f2390842cf3449a97f262aa46af89829b952a8faa1dc69a7257c979b5a4cefd4d435d9d3effbc12ecab2ae1cea424bf589d12cc2460c25ce88545e5bcde74238684af070b33af3cfdd93d88a81bd256aa5ce8909d7f98e5b389659b08ef60c97b74ffe0100ceb6a8eb82776afcfa689ad1e366f5134d78a15a48293b13781a82f73c2806ab8f163a547e37ce6a1d95fcfdb0ff340e8e52bf78faad9f4579821dafca7e03d440868d01f4587b9730e07d739bab1b0f2e6fad3edf06dba8cb4cbc9daf19b4244683f86e43ea1162f1f0bde0e6acf718ca93e2a6907100f171cf7d07e5be2a4ff8277a8fde468620849e2ec57a214dac1b06cd824a5a0cf1a1231b430d8b01d9de43cb816179f2892d43f50b61f759dbfa3596b53b1c636bc0d53ef2c237927473b732be036d89b013f8d75756748595f8f9941eba2bc698e767e5dd91f79e3d9c0ecbb1186f77175f911cd496476b64dd6bbab39249557ff47651126e34657a2ca373c7e5304cae51864e37a3874c8a17c1e5435d73e46b4f68bf04392d3a5593439fa3a4fd73f1a02bc3fdd5c355947d88fb971a21cb1c087388d219d0621196750528df09f75c0e6f61294a187743f286706da035c0c36cb50cd6536ef6bc3c1f2ed4c5c7b40926f2382ee9428c0cac0578cd3920ad57015973c68b79f802b65f9b91f43330083e5da0b4cb485de31b5d7f50493a18b63d3d5906a1164ac9a8140da7ad06e4c3a979c551203c3b594ea8fd63dd18b7ccf8710ee230c71b2777bfa7221a91d9ae694214d31f87242eafd6d8e7879a20c020dc63e0b60ab7337cd10fd9e3609c4e81d1d755acc0ca8ff0844500b80947d276d7ed9533834e56a880f13e9e1f51f06392dc97907018174ef34d9d164702d94020b2412d983dbace096bf0a29a3c1df67377c8b05cb3c47a60886fc76fb1ba5d437447c9132757c753e4833e61162acff951a07c282d3384b98e5d587a386f0c988d8b35b190ccbe4058eb2478d65a1c9750e6ba2102983ae660c056c93bdbaa3d6034a9934993e964e0e50f536b215771e78defc450d076b4db62c245caade5cb0c4ed5b659f543dcf2c7ddbb24e86d2d9fb6860cf71dca9cd545ae6e7a350a900f1d45b6a658559e99b7bd36301561a36524b0b69f88e94c1a9c7664553a90259ae276088b54b52816691bdde4f74091a1a7fa24c3eb47a054939c8ee6e4e025b7353e644311821de296b3bd867fb8953f38a672002a84812b5b7e834113fa28022e6f7ff5086be53f36959ff6dae2234ae296ae50ac8a05cddc891cfd8fb79ecfb90321bd0ba27f9ed6de0d4f985fe613c3bc6fbe34fff5100a129aca450c42744589c3cbb50d1d8d937ccf4c9e3017311aef1daba0465e3c84593402a7c1ff97f5cbf67c16af290d879d431328f7de35017e6d8c4ba0b252c5b638e36012fe87136683232d6652be152d3f36f5c253480511e43ff500a4cff65ab8c50e69963a9a843cf99f3d78d71639854f83faa7ac83b69a22b5c5bf9dfbb426dccb0137d514a3dfa73940ca6114314f7ca86602bb48833ca546c28e28022aebe58cab35a870fc80cac5548578557a7d28ec3e005980c32a51094cd20d118a235ab9411c5204ef0af65807fa172ea3fc65e30c246eeddf60f50e2c8044b29d09528c2968488b2c38c8f6ec918f71494d71b1c4228e28f842423d9ba3910a68155cf5ebb16f47515a4537ef1d135b26bb30aa102d22fc21c8904230bd48e724929ec855b452053d971c8f1119ddc3ceb59684606ccf820b84ca857f99ee2eec1f345fe8d646a3470def2750596d85d879306aa5185225f81bf7855fbbac587eeba82a7c5f534117649799fc8e39fc3aeda36eb8bdcbb05e5731ca1bae2d7b1062ec8090b4a4dad83e0398f154a5243e5c2c19d39d18f1332b8cbe1dbe24fca422616e871d7d228410b83bd1ca046f4029cc1972a0bd1a50781f50c828fd1f717b6cdebd0b888af4c3355df473493642a4b3bde8292831d2283be6529b6b54b598399c7a538c248008ccae4b398adadb008dd52423e0ffa625d922c137e09d472532894d67bd07fd037418bd4b375162ea420aaa6e4099e7273044ca612c31450e3c6f80a9c182a40f73048504b586c54f73b5753831c0d190e1eb00a6d0474735fa18471d1e9c2c21b04b07cbac1c1cfcc769c817fd1e907fcd59459a50893f50aa72ea5df8a9792eb8d781ee565062ddf9d060f9d5decfb47e58a96928cbe0cf6e7c9311a1bcfba0816f53845fab07c9b09ab87d064c09c70bf2df2065bd185f7ff1b9d471d8bd5518e2abc4757f820ccb1401c23812ceffef06c3ccf2d5e8c1227d4646a390eae1d16a52134394c46e50745c7d3b22d168b1a08dd328cc09ed266ac628bdd78076488e9ffa21fbfe81ce587290c13c8c490ce0b5314f72a07c726c994db6e9b843d047fab3f8f58ad3082ba5394166a272c63738d2fbd33362045aa038d0b37f687312a792d925bced4d12974b4da212a23e680030f77315ac07c288db964313ad2c895a5871e0cbc043d2b12ebc7292ec263785edab77064491ea26d02561bfa1597f43e3d223249f754f7f6dbc149acc671d46c9c31c32f5d4580e5f412bde9e5452ecf03fe341b30671394d4a4ac001c79a8e6414c926eb7da44b05bbd222c32605137dba4e04f93ddd2f4fe11235b3e22a2e787f7c626adc7eb33deb4bb0c5565ff3a64e32a2f7e3d7cd59067a95b8f2d182c5344c6b1f13b5a6fc9a3032e21d73fe9f6fdd4c18d32a7dd7f6fe2dd135f60a3f9c993ab9a8be2c48996cb61a7db8f5f1aadf3fc37a69abdc391e27123f2edba89595a5b387e822ecb577901ea8fc0deb5440d66cf0f0921de1227bae2fce53aa53b3a1519110bc4bc561a9d8a24dd9f37bf11b7dbe734267f46938a800466028aa560614feb5a04342ff1894adfaebc67ee35b7db3c311bd52c6976a3e8afc42207d1ec6f4de3a5b17f348806a14de34056aaf4d24cdc9ce37ea512d862793f54a9b2c620c4a149205afb295a197a6dbd82c306b531337d1de370c00ff2e3cc0a848f3a61844ca3f4a8fc3f3d5c9645a6aba2d3097eec9bb6d53aedc01ee3e7cd2c0fc2f240b2a65e4190a0323d35f7fbb02c16700825ed8b743881a918a61c8ab34a3f16ec549c7816ba89024f233c885d19e1d7013babd4e8bf7b5199ca5128a5ca41abc41693aaa4d52eda81aa341f33925a055dab56facbedf9d9eaa70b0b9af047dc9c2ad3a7343e3b372eccc94348520eb69f20822e6d50de66b6298efad9f250a3c8f0a7ec62ce2911f8854e248c82ed361015e1a988e1b7125656973dd5ed047de22fc1dd0f3456050b223c604b28c7e3f894f23eb392b41720a687fe36c35b6ad63168c91688fa9259eb94c00daf873738fe9c40f83bec0388dbc4158a31a01510ed7d033b294b6aa31019d09a2192fa67c6c7de9957f55119d04ab437dc40233bd07ac6824fb408adc0f0426c59c794ded961369eca81cbdeab526768b6f4d2ca5705d609d24920b35aa55c743717e08001e4f39ea3e47dd59acb3722adc7515561bb80309776e775de9e365e55c2dd3c7acfafe98f35a16a9ee0e7bf6084fca8b9f7d655a2a3400b80e28d10eb3fe61e91a9fd17801d545f3ca1ea4a51043842a471c81051e5046ab8ea554df8cfdd7a4622da87718baf0c01ae56302aea71597ccdf333679f69430dba1e21c3051feea999cc41d38cf8e3aac5972473d7b572c165c27ec20a868f5f0b05f895002dab13591e468cad9b1f5d14fe076b851871cbb8bd3158cdfabbc8197b6df69bad4797aa4fc2ed76eda738753a9947b21932852f036518b5750de5bc391b4d65ade4c55eaae5fc80803bbd114567472ef837e86c004f71c0568c85e02d71e7e51f9aeb0a5bd9078518c59d5016227113d770444ee3441e8b9c90e917fa7a31f81e9d771fb64db2b79221f60cb143fdfa0cf9aefe76db30e4f8c7fec2833dc89bcb6458591255dbde7a46ee592b1c9e343d0a2c8d7d8e51edb12cc3babf69b3ceb2282d6ea7210047b20b752bf94f5ea58b5f03138dfc04ae27f024fd436b4e06c9a92b9d44f84580a340860e071fc79efef14507a80def7e51fd4b7ba7c917450afc3c2281a708bebe0a42727cfb51d2fc4ad94978b0adf8b436375ecef5ef95eeae3faf737cb9758c80d0d1ad3a7c300a1e91468fc8073ffca7b157fdc9d07a405c20d32842895ff516989e1c3a7c4658fccc2da4d7f97b84923f3cbcc695d1e4cf08dbae920bb23189cfa83ea03f7aa4ffdae9784aad879421354a22018de85b0199350204f608e0401bb242e2e122e0dc9fa1aa89008922e8c79666addcef5a4580dd3679200ede0023d92913a930cb59c8e102d299aa1cefa6f3e70190022a570d06001549cb61bdf5bf6b5843719e650760a6c4abc9f5f3b9337ab8fe1a5775854fdc06567006a39cc8efa6e7fa05307328aece732911a60195307155de6a135c74a12fb122c428fa41657e3b89593e708dac610709acebc8084a91bfd2dec1bb390c1d259a5cc9a723299dbcc4e51d789437861d26ea92e165fac6d50619e5abd1a4bf5f8109652f18be0ad2f7a2722c4b687852750048dcd91a2cc4f383dcc0ac25a80a044b062f060500d411069bbffd6b4e8badcf4a90167efd93aac294585e95a0c3295ec5f33318dd6e0204d4610e18205dcc51763c706fea2bf26d25eab6604d55df2ffc2225fef9bf7fee654995a863cb2a95e4d170701af34d3e0b36c61119fe9f63e368a3b25f185fa36e3655225b77d4d7f54f46a84ab70df4b2dc0f9b5293edff89e9c2cec31792da865f580028c88825acf2df2672d7484a2a814aa90333f0cd78260441395e661f90c88d8150c743bcffe372017b8d0b8affac076690c5180d719e7326ed15d5f2fdab46239111b2b7356e39b52cc5a807cf05f25a83718e254310b199658619f2a52a4c7250bdeca8f03533eadf44641611a3a8be38db6646473b8342fbc457d5bbf9c4bbdd12424bdceb733f7c0e42dc75c8a16adae6025e8dd3b15b8b6937ec83b259e0ac5ce924545c1b0cae15a8ed70fe7231187da3f9e476d5b74274bff2a06061da70b648b5cd3b23808b2cd48019ccd8aabf109b66fcd9fa5acbafdfcef38b657cfe872d00c272a98ed936388d189f4d8a58e256c5b3ee0ddcd7af2a42752bb2df9a5bc380da649d3f22570dbf24cf30dd01f7c87cfa7024a50b0f54f993e97b4dc6fd5dd54be87eaf3632f036b0567d041072b68885b3f50ee88f279e28eb0545824306180981e1aa6f9d0924e6029d17acdaad346e3c155e90a139b0ce2f41343a763f42411e6bd229c0dbee28bc66a0fbcf4f646bd11dbe133cd903ee17aa199238bc3a2ed2d66b88b89168a8407d58f8d16246e0d87f6198603b0b67e16f1861207b248479011b0af4146bc88a4819905fe99b37851b78486eb584f4e98628d092fb9f24250a1adc0caed5dea457cbf1e564013ad7446bc7e4e3383de0658276084e699c40189166bb5a94ef919e0dc0b9db1b6d862e06b03693ec0d8d1a8c8708cde8bc04fc60607efd427dceaa935e9786fb251b52fe4245c92f01785af764b66faa12fe71ce178ebd4f83b7d1a599c95d928ec49ea4675eb465f3f67ba8d307d94d97131bcd80613deeaec0a7d3e55bbd4b270fd72f86f4408b73552927b539f693fc4c5740ccca0f02119982122364f599fe8b7aa0302adf54a0d41fe88053348121238d02618d5c9496107b8dacd443a03985d32c94ae88ce5dc01dd914c147d1ce38a2539e916cc07f7b255099d598efc13bbe3863613d9198db36cfe28b8d8316f43a8bd1e1e7087fe9b63c6d73948921900a3a37c73c77901ce454fa156ddcb85848c39057b7c0c3084b08114beba056e7fe31ed6d4951153594533f604918585c3df6c88f5cf8fd5edcb53841a749ac3b4505ea96f21a450227946ef4a5b560b11fd5045d17d6bdcad28c29d449fbfaa0569f93c386afb62fb70d5800ad569c8e6720728d392151329ac4ac8dbbf4876ec9b29789b98eab7cb03efc98c05113df24fdcf321535d72acf5364c9edc5343158006495d178755e88e3701cb97dad407c69032c8edc04cb1e159ec37c0ea1dcba84430969e256bc226355419d3ec6db34ef7076f451782a645169cfbd9d28c826adc508233e86ecce5f4d6819253e9a854836841e0fd2aacc184f923c22d1b7d082e5f5aed000fc5618168b5ebf93f2b8cc7b3b010d3ee2138c2b8a2994acce011afcd960bc5b1a27205a66fc691707d0e09054fda29a25210b80b28ae490cbbdbe0110ec869702c22983706d5aa5c8f1cc62eeb0f09f9e8fa5904b502fb487407101ec95ac1b87d575c3eb41e62ca9a235891de2a57b1a70518d943a7363303d10d0ed7a7cecd3221c348412e1c6f5326d6d920b8c69da771e7fd8b8f55a03f4ea33cccabf6fad78214041fad5c03b7fc5455df2ed8d04f759e644f5a128cd30b2d7fe3a13db1c8edcc8829a08de79fe69ca18e9831b93cf6ef9a799a814033a6c8c1d4e63b046c1afeaf37448b0cd76190d4cff8dba5f734abd6cd50b3d71a3d0b6f2e2b7e406ebc57c9f1696c73e322ae72d3450a6747f30901d15f61c1fa4a1d186b233e6aa37664a2243da89fec65159869caf73d83a280a6ea0fecfe5391f03bea6c7b83083f6312404c5b1fe0b078bc9abd3342243272a5a4825ae2602c8144841c0ba9130d9862611b690880e943c4ea6a1dabc61d0cdcb5e66039e25a37d7aefe4b8015d3442fc5a288a2e7e22e787ba8351d9165ddb8770edcd77082958ddcf2241a8743b638f359d7810ebe9c04f22c1f13113eac197fad827567ab244b3d4f15ad727a8e35a33064252ad0c91371661313cd3cabcc1b12ccff0215badd5d9438f0e29a4012cce670010c0e0e00f08911b4a0a784bf6a571e3d87ca4c2ff019a58970a8a6982bbb0016ce932bcf9743fc705f27b0520f1ceaeb5494dc9fb3a2701a0d33caa0868ce8e57541d235f8a0e3e8348310d6d7a56f4d5148789fac474e36b702471a67488591424b05d75811478c1d188d3fc1ce50e16a64bf940431e73aca9c3bf0111b282f19a4f7db6890d93a580cc0881f436c28ad821042793e99c171b0406f3b69b0c084bdec2088aa7a29b8a8d8e083d131052e7164cf35a26655ab116eaf335490e727a74e57f81c2b0ad6e0b764a2454c1ebe14733afa26c4009070f71567c3d594b886248d5eb6bd71d96aa40c2b8cc91a1e565bf1f02a444419da714c0df60a785c8864c54f7eaa405ceef7d74a8b3489022f1e1d57d8799984af6d7292a87438c8408f5605a51acf3b36406ddd1419ada4a136e1bfb2bfccce9c503d3f4abb0cc69597d02747f3cd19ce99319340acb1709ada174c803c0a71b2fbdf364cc7e38e1a43db5f63a94590b6b42eca47018f547674bb8d2331fff03df8fe33783eb9841b6216da1ace1521aefd3c44389323c34b1316ae69984d731c95f0117b88fd4474af1e4096ae0408b8b2954553ab7f426f1a3e8222407744b6dc870e2136f37e7ca69e6fce6b6d5c70432879b73d4e8bd1d724efb9e859cf695064d441781c0a78dc26a4691a65861368a31e27f9d842334de6a5720569698c00804b73f8a23948b8792a1ba9d4b49b2bdbad1fef28bb9fbd04fb8c1b1794be075a08fbbc9c382a2b704b134ec42b3683303751e2af5006ab5ea51b5c9ff463fc31adae4cd36a986ee6a08026e4f4c201c11604a1820925922d243c2d371f31c0400b3b5c352f853f8fd05437e4dfb32e8085395a6b5e434db05c9074a2fdbb9b12f0e99ec76740f3a8b825dcaffd164337d5a32f7dd6f5b8e8b9d289cae3068b3201ef7ca0e6eb5e01b2882cbe3e26e72bf130b92586e17cac43ee8c5d1f3ef204bbe26493a32ff22c53672a638fc18efcabbca4e12d31461227b33d83729640a192a2a7e9ae46b81ceb56380fc5a7a5bc353c47350492e5f44c56264eb9ad8dbad4b571febebb7b6f6a4446d1808c194dd7812337ce9c5c56ac47a0729d42e16891a330192df40cfcb5887afc4df85c7cf81ddd29ec20f460edb01fb2e3f36dfcf750a1ee04ceecc133eaf210ee33c8b2b5b3418dd76f726afd9edde112498129de5b1981b017f06b93a54ad2bdd2f09d7db62aea5f8588d933fac1b15b20aae1cc17aa8b724343913431b43cbdb64a1e928883c19003bf49dae00385a13124d37e25ec30bdebf4d0717510642482b51f35e5abdf41e8141e97ed80cdd26d719e9add945d524615985b5d4acdc1ba46a62bd1c3a7dcd7a525fa0040cfdbad4ca1196bc02a407488e66f50556822525bcd0c6e5933f059f9d8a47733dc57fb566540d18eb33a41634b944e9958af3b587a488f13aa51672ae8edd50588f7f6fb377fa262fd10574a8b7d64d07b887eecc1d7941d18907ce62bac3704dd5a7dd508e780d5599faad196dc38288ad1e4c422c196afe742491898517aa19d3f26211874b8c2abe4bbab5b49e7bf0148e5b1ced8a35f8c3181da3ac4fabdb695fcf802d1b9009742213be9eb333a5c6c862ef72d3b522f8b50ecfe3d5b1b1ff66484a5946f8ff5d84f79fa90e8db67b86156c70e1e9600927d719ae9084c095437e3652405e5554b6c7e4734fe7b566056605fe1e2c6df5c3ce4c24a3d57e01cf6436fe746bbe5bde65caf616b7c4633031edb91247c61d192849659a4823fe49c778652e272fbe3a3a66184636f7d65023ba0b28ef512a341df9cf28eb0a786903fb8d04b36fa234c7126fe6c006880dfae0947334216b394de8661c141c3e926387177f54792fc181ae345f39accafc1d70029cd1e38cf97e7b0b037bfd60ecb5a85f4892d3caa63750ec459a9d18cc8ab05aa4c312f8cafad95aae82aef7204942d6d2b5c4282eb560e718dba5ba6d57126054e1897d68bcaa45c92b32174397c5e28d351c377945a119573b65b31d9fc9d093ae5e1c17c2ca7a7184b67eab2accecb123ce82db4174bcf704a52c7bfc2b317ba2946805f3bd652172eef249230bb57c976dc058a80d2f7b807202a1685239d895e3224a00c84cfbdf61119d6f83f363f735dd2e495437917a82d810c52d1ddaf07e3536ed6cc44132b398fe5b935c80f1f6183654acd30c998eabaeee3f248e0ae48f3364246a0a2bd3154afd6d682daee0175a1b759c06771ab34a44828f2e830d87270b2b900921f819bb89d6e5572b66208ab179e7361019ffca720926d11681491f811bfdb07e72580b575afdca431fb754e42d6453eaf747f32a0828b869031d1a6d1836dbca24f3f677436eeabf2baf9c77c5c5fc8e11e3320c21aefddd9f42b3236f2273721e16480e92381c8411ae1bfb2078873308ecd650a58a99fff09ab1c88c1271ec57c330e084714a6ae880a5f1be3e02f1bc8cb46610b318af444ae2d40a4211a5d4ec90b5e255b45cd19b9c09408401746cd7d8d48a5a72ef9d71a7c475c6d71896563c49749bacdd215a41e8c811dc6f000f1a6f34a13d20d1867376e5e56002367f9e1b09f0cfcf98fced14e02d586c967577a4728a42a05f531d7366093466230666124daaf74dc446542b9b795b1684915dec9ce4ef4a3fdce5c051de41c3bc482169ecc33c36d887596cc8dd302670529a4b0f5c3c6d6dcf1e3c7f3565683ec97937fa9aad012bd3fdbc659c05855ba108fbef389fa24d7202be24ce60392be3f973bcd278aa9e986598fb2a0b09863e1865f3b0982b194dcb358e41e7be782a78dfdde1cb603253a9b744fa324c4a3809f0089705adfbfb5a58f752d7f7e8c3e6dba5ed36f3fd62b60d97bf9e3704232aa1f2dd8b74a5b27a1c9c48a697fd7d6ef70b990bc3acac89d3cc05098f06dfc18ee958a77006fc54f18ed2aa9bb4ffe0154254bd5036ed38119c5ceccf0bf538c40fee124a151117945c06037d7cfac538aaadf588919a8ca7e4fce90a65a61313af0bbbfac7b6c3599d7fb570152d205630ea4420d80f445f16f0fb2791832f29cf48a8098aaacfbfb7d70076b9ee8002c7c6e70aadcda9ef8e093d1fb59d3e980f5941d491e6b0845f957ecfbe828f183cbb73507966f77a926db501b77e0b57f91d8bc87b4bd83f94c388761c9d0531f742847b38fbbc570b4646f286e7ae528b82f448c50486c69f579c7f15bcdc9f345b908d67f54406df177df7c5fa165f71434f5a8876886b8983408f4c96c8ecff4ba36b10ceab7c361e5887149a345cbcc220c59fa5f59bf7b51593030848af28a014bc4575cba4c82262567be56af45fc3f0ae2387ddddf7936e4b2df4163d20ebe6f4edfc5b730ec4b06c959719dd7f007d2f801fdbf5782f2d139333f0abf3d158727a690828ca4f3179ebb67f166f72128c94c6dc760b819629626cd7be1155ee3f731bb27aaff856e00d632c23e34edd1c765735f4450dbf622830dacdb60485b39804d46e183b860460ca17bc005ed180e0e3c05a825e67191229e63726ea75bf3979370d3a0b5d33d18256d7e8945a5c2d3f88712bef4fd7347212257bf4aea5adacdb173d50aec8c114d4e4246e8eff89b85a96981650c14a6dfae1bf54deea324cccf9da1ace15cc3b3ef0926ed4947ca10c51e3d9ee8c4b76c7da8a48efaa2157a5f5f5d07d32ae0c46abbfc30d327aeb6e24108021faf3f87bee4e37f20b493b0eaf99662c136ddaa83dd0967abcdd3cef253ecd94396c375587817b67d06c306da67c597192f2c00676f661d075098208d9e0f4bc40a0d2347123a8aa01eedbc1cc779b71e002ce830fdf0c20e223ad55154139e86508f6bc6022ed5e3c720406b42356f699be0618b0cfb27aa2ffcedeb356ca616d562233e36293f62e30b2e32a9b811f5d91ded9400ff43ad6317221077a2b521f14e73ad213c5ed7a2761a31172a41a59763ae575b820f5c0537eb8913dd6ea10e3abbd137d6b7ff9191d2fa8c1b9f750c631569fa36b4f410c97a24298f55540849dfcdf373bb8057aa26bec1a3b45e52cf1abdf2f961706505c19f30666aa77ae5b325d501e920224ec6402d2b0c865b8b6c3dac98b5371e6c81babec51496fd0c899ee979ebe93148cc5eae2ef578ebb789f9d495b9a9ee8f96d396e84fbb88683b09c1e8cf764aa3b27d25cdcbd2ddcd9230e288589cc600bd43d5a5313bccc2fa113e738533347e6a37c7f7fdd7d9bf393489eac74b5bdb9b180f3f712bda9c7ae46b6e1df6418d27b2f3b9d107ab4614494fee3b0062dc08ed5f907a1009411d06b7c398a236ab12ec97e694791b03611b9e40b52df49ea376e7bd50acda8ebb7b76be99c5b0ac0bc4699633ef5036f72794a10b7df5d3e6a3994161ce5129a148b1f529f01c831a1e85dacc27e611d31774b9cc8b3bc853d2c38b8f0cfb17ca129785fa9fb482ec01c6cccde5a8d8ed20f2cb3ab1e4904b40bcb7e565aebde815c032da89161165a344f553c51fd9f6ba6d61b95fc335320ac71d83e0bb8b3e96b396fb61d388289a12e8a109932dcea9d28fb9f86fc731e4fbdebc4208a35208fdd273158dc6b3c6245bad2273034154c0c3e1519f378024ba63ebfaff0f46490af6b270eb095f85539867fa41db0a8b03e40ee422f0de0f60a69e415ec72bc3d351eca585a87160addc163690cffc3a6d4364f55d53adb46d81592d25a82c9027bf1b483c9abf2d4b37172fac2dad70fce000815c26daa8d63a70b68c1ee5b1a8e39e410dda0aeac5345e614a0a37bd72abbb46c219392f29e90f3fc1e008e73b3f22d362cac620da1ab0f47868fd95036d8fb2b06069d8583eb071f944860890bc3f126f95bbeb78f6fe8f30c805cf74941fbcf95ed2a17e85672a332d255aefb5dd76ba1cbee358edffd7fb83a2d1a2f9875be2cadaade23570d7d773bee5c0e44a8ebdbec27ff9a14ea5c7799235711649452300285fbda290e4fe4ffac1fd07386b34d027c98635db1ca77a204a5d532ca3b85d21e2638c76a19f4e6352a063243379f166bd2aaf7189b06f026dabd89908e1522d3a8f10685082952e258e1ae6f909409dd34c46e920fa10ee2b8e22f77c333d91ca0afe34f8c8f3bdb20a9932451df040af4079177f61a09a305fb26a3de93cf3aee3a7bdc102933279d00fde59befd4fb669ec155823dc3da09552e4c700b279f1a31d7ac216f7be245e644c24606aa2ecb1c47559d77380cc1c5acde83a2e3c88de299a37c2b48c1f7067f3ab99619a7012296c4c7e92c181d83fcc7561d1b0c8e1dab0e235d96962fafa4b8c8fc66d615a4c1f09054e755690203b902e6a04f8c551b41770206e3b2dfcd819a397894144374cc24e8ba41f37218224757503d4158b95b6fc19e22cb18109cb24b3c0d0151f1f88e0fd9fbea11316ced68d04f1e3c8bce41753a15a24bd2c61a19456c12c93474494e433dcd2da6541c68274a168c6596de7f6481d12241b6c7bc098de8059fc383991c71cc17d0037d58ee403ab48b3581199228ac2a4cb3a9f2c9fd24d4a12cd18c294c2cee32dce2a2f21dea72c909c22798936cba7a62e568793338ec3a6ea88d5217b8a93da463aa889a78f9975b4aed6e053ed61d2679a18f201c2270398347cbee603882fd30355b0edab5e74c375513274fb2b468ea100ed97c973d2766b2e485b5304a8039176241c5654bd243ca59dffd112837c14870fe0be036bf86ea8eb786e3e4a7ef7b21003ebc5f747aa391b467940af195fda7bea56ccf418a56acdb654ccf60bb9297b6cc66fdce094ae9d82101f3fdeb8af96018316856b9eb5bdea7f9f7af4ff029065b62561097f243aa50f072a04b5886efbcc1ca105cc051a9e770dac886012577deddd7c4563baa0d7875496ef1a14b8060af64eec8530c6a71149e18864517d787918fe4a9db121b69d7f14a6e6d739e262b30fd09f05bc78c75f7cd2934a00430cd595ceb7c5e773519eac7f334a66f87062e194dea8296b94e727bf3e3d3523d637d6e3c9f973c73926b575f46ab1be065fe0b65881da3c425c08db29434e4647e2542c52a30eafc61afa85bf33d21dc6f68f57103277edbcc6f9588f0e90507f06eb3b0649cc1996548a180c934b02119e6090e9b7a4d2c61f62fb3106c458405acc34fa48a95a68204d14358154b47b31a2dfed99716ac83d50d415888df5cdda41aa5753981d0b8e04939c7f42e6abf003214f3f3d34342725d046e249b160bc8129df41f2566db30d167a0578baa0545bf387bcf5fc0dfcb128590ded2498ca88a6ac8899647faf746cf8dc369f54be982e87cfd4d7d252e7989f8dac3a122c1eb2dc5248b76007df2c7a5fa8aeee0c07926ce5d114fe10defde493cc22460d46b575398935dfd08c987d662f648d814c0e080c76b31ed629a54b5821a13262aa0c5d65528c34ba4670c39e8fb6bb39ee61ec2657b0eb4a446ff141f392e20a062e860d82c56dc942db0db010d83a3f69ad06285433fa1d02a20d1122e105668f36f26662cd60357003cde13d8269d84c3aea5332e9080159590041d16377deff8e6709ad3117abbcae5585cc7876f5a84982eaad8af455d5c90d90bfb50fae92d466ae820c5ce76af2e298da51977fdb50095f3ed5b256aba411f8434bc9b648db71c7761ac18e65014ffa05aab1fa34756589874478ef91f38c032fa672af462b61ca268f4087ea42a865a28164b7d7724e32b5410899a38c94dce8f2c4fa5d79ccc53444788dccf2d68c7f85c2d793851225a5153f5a13b05afef5f9105bb97a363da329008cca07ecb6548103bbff626c89c892c7b091a04639c772b1b02323d8c695b25d64c032ecc5c64dac0491888841bdb09e5137b3c6705a3666dd5383116dd4f62b57d0f0f509603567eeee5b6b6e7b6c67006424e807d5ec6d818f54518bf1875af0e8869c08cf3cf15e194178d46a648fdfe5bdf8db3c0b644f0bbc1d8346e772d0343b84ba92e1b2682fc3395f972467030b10f9b5fe45e373e9a3ce8a4746750c041199dc6d7a5421cc8a1238476b2fbdcaea05f7376c0e760f3436f9cd951cd238706c73e4c58bcc281045682bcbe27ca3bc8985731572959d08102f2139b94752076b864a54d009fab0117c64fdd6a73622b0d6d4f5a50d3612100c9430689f910e2379670b84c4ff6dcfd60a11793bb1462abc21979458523989fe7fd74e24d0663e6ad808fb0fac6ee2504cd458d2f4be950d2e2122256a23724aaaa21c7155d374610cd47bd9d7621adecb9e4a102b81067472797cd55697de673e10b22e39759d6546dc1dfe9a46d7678771dd2cb1b54335da82ec89934902824180034aecd5ba9ecf9a04fa1ee99d91d6b59383326ff770d7ea349e603446bc0809f5ab29b02ebe4ec90fb3b0413b22826c3026b7cd2802f0bdf6d3e4f5f0d041a908734f043f6af279de5f8539542d1748eda302f922de4c1d9a3b11f6a15e1efeb6bdcd5f28daf41fc487e51e1b7a134ff426c054508a1f8454b828187f0ac3681b43af6b8ee20a021a1929e54960859b36968a38a15bcc7384e6aae36e75ea1a27a2504114214f1d4b9e75f709b3b25b7ab8d658e6d1cf82b5ce262ed94e008b5be7714a9a23e1b24ac5e8e0c71613dc7883162f52ed8c485f58e8bd53c542f2074229b14fab687076e3fbcf1e16f7f531678672319b56f775b537a2c2773624515e93f661b8956a66ea6b413100177c8c8986f4a699b5923657cfe156677a56ff81c2de3e7326c958f1ca48d14997c6575bcfdec41b447f6e56582c06a50979c303f16fbc0b3edf503c50fea69f63ac354e925b45b4bf6f53eca6315144706c459841eeb43d24296f0cbef737d75c6ee9ce635830f690c5ec692ad09820ea70d50ec7bd423f36b38faf8b40cd7f04c018b3806bcb64d5bb51b4bd47cf9a68a390e69b3ada864ff6bec5c8ce1417c32729d4e8ec3274c3d58a59cae4908b1e17fa728c3652b880d4095496df0edc3295230174728a98c518eff43b4c525e2151114ecca3c2cf951be997b24bb6d5c3e1c5af82635810443656b60d879765b19d89b3ec41908a6e2a80e11807db6912f9c36e175e6a9e0e479279f3076044ba68a98198b52be8073d4c9a265db7352d7e23e235f2d4b7197295840f2103aadd3e171efe999c7ba19d5e400e04dd746f905a8e2bc649d64153bc8882bd6f548f5cbc1a726d2c4c62716937b74c7ac46d9e48de8f1e4cebcee79ea4d0ae49dbd8476374b757748fb5bef43b9c72a93c5e5118eb951c3b4326611dc3560df34dd28ddf5099ff2a1f37b8d90783a1201b4d1732ab282def1e3fa08acc0c4b57f9977bb46ba38a5579728f6ac2c5b82d7dadf3a507c7284c2ea91f42a449f3534c85b2bb2bac0174fa5d700a15a526bf9b2a39ff229949e04941373ebddc0c8eb67d14edbc79358c7ade49bdae889dfffce9843656e4867d0d156c1d6cccbb0ae3cfa9e3545c5d46cc17a96fcfe2e5b7ef78e0e70f710dacd264d57b97f6e6c4f21c6e09ce2a5b27c9a3d5585ea004b7d9cf0545c884686109dba4fb3c5e9b6f06854abb39bc79b7bebfefd366c44822ebd9c5f62195b69e931fb5da6cab991e19f52e44e3ffdd0cff268e4e188ae3c9f8962e3ac3592f9e807d524b40b313c78a16b2cfc4ac8da911724f65715de4d6fff5b388ce1aa7e284871eaaae121946a13c4dc2975643e61ebfdc6685ef6367abeba60b43b06be71d7d8a193025254b662541afa2c426d6b850755accd631812edcdf095c3a8692236bf8e74d0db7a5ba566f03ce19b1898de1874545e4bb4b2886ad64851170fee3fc08aa96fdd06f4a310447f276994ec1cc65782d4520cb10961f234738db56b77951affc8a028556af69cf08c59a1503d9cbb01d4f220dc3326e36aedee39f5d76cc014626b46ae6cdaa55de324f97e885651b20afa9fffdf1849d68e6d65a62182600ea723a501c298ff87829a5baebe9c4542f32f22e21e4ffb59540b8118d76e62c1349fb2bbc403aa89a45b35f885b92fe8a6ae3c37fb57dde92f2eae232cb99872d414c666ed012ca089a5ce4a8d88b8f373bc892f89bdcff214e3456067e63564fc742b6e8780dee338e32fb2a53ab07ab96780c44997286f65299cbf0989d6e9a86c260b4b089d53f90553c558900376386f55cdfea4041fb91b88f8c0382c5d6ef44105a185b1e810e545ea6501fdc8110ff401741597858761d54d2cffc26bc38c750501c2b872fcd7b3737dc71935e8398c86535ded48a52e0f72332892e43391031720a0b4431aed2cb064b5ba0ca1cc8d52cd263b1c0493c6d87dabf47b5ad5a050d97d789801a0406626765afb57a6626f91bbdc18044b231b804af1aab4d0f1d19645422a8884c6b57ae077e87ddf2b389fdc973d2a4dd08371ba3e89b303e58d8b037d784669b82fe07eaf919e2c0b4688bc56147a3f4cb7d30b25b7f4eb92bd532116c35013663efb6069c4c91cb3c19a9e7f260ffb8cab8b103f3b0f03a1257af78eb5b7154a37110f86d7e9b4f50186ea6376af793f284a41644a13cb49c847ef274a0e5053d2217d9a56840366c458f1d371f43f17679e88f1a39d1dfcc1159e7afe285e209eaad5d7296338a7fa862ee1aa38b10f0e8151d7084d09a4fd566db1caf1aa24a6cf1213ae6656595ea2f44e15b1db7e06fe297b57ae3b256f5311975d31abd54026f81794afcb868d219812c68654c6dd4d646cab26d1ecac42a36db11d683e42b066e2158059b6cd29885f528fd7523c60642bb06c2273f765b0f8dcca3ee5cbcf0acaee5fd3383f1c0dbb7f4eb0d7530b9b7076009bf16f5810f8478084cccde7b5070b34e15354eef5f5bdc281833afc49517e607db9793f3fe2f16ab2fbd64d613f9d06197a43f5bbd44d24f976028e5cba3026ec02f1d7893e60aa069a51cfd78a41cb52e394c74c1e4d9cacc3f702aa1402e7b0be977da4bdf55877cdf76f8f7b0b7113163aebf992079013020b4090b9d6a48ab98d033e4e5f2871aaba45322e66af499b13f62f219439c9e0a95abb5a83b08f5262aa477bb48b15b004e598c30623e8c516bf48098fa8085c51be147209564034dc0f3cbdb50c73ac083f3ea77ebeddf00badbb37372c97082269c8e4413fd1a6e5a907be554bedc6cb603aeed5fd72084df77916429a2ade8f3b9f47ab6826ef60903fb05da9bbdea803e7c54211a8468f3c8cf475c87f59a3888fca2bbfb0c93316ff47f52aa2e461357c53dcd94c3ac5a792272a13d116b664c55b60ae021b7b391c55c9fc14a11e3c3d7e52ad066dc0e9ee02ef2c15cdc37f8461e7b0a514db7358a9b007619651ddece0d1603b2903d55f03bbd1de00d87a9ace2d30bdce331225766bc19b65ec2bf7300f3006f53b3bfaba9467ab7a8bff2dd8220bf197ada57e6c5b379f34016ca917029d3e759ed7923156c5e4a09ac17218aa7837ebdf87f346c83746829cf470462aede39c61667a9fc0989deb2da2582ab4778d7d9e27ecb207bbfae9ff9d511eb0441d7da29ae1fa1fb353918c46e478e64f2ebd2804dbf22d809bc7335e002ccf6c3b5394bfa3a31fc5d2d209756446c64a1611e712c67eb2b0989cdc87c8ac77edcaca880c79c42b9e823f4a16756b8c0b885df2143b601c0d6903b19d4a148824b17814dab8f8c78d1a0c8c583eb8e419adfa019919d9e378de73f2804719ab2b924735fe75f37a71ab42fbc8c342d74768d847b2773b74dcae06aeb9bc0dbd530169b4273f3204442535193073c83882b49023d8a5186f239c01e34de0e603e02c4ebe51da04cf43730e72463768957cdb3fcea4a02908d5da8a1a4639e7adec2856b702e6eed812da41073a5dd2747ed0944257d551169a32cfd118910853f3efee07f8d887509b78b8a129e3543664c574680a7b06cc71c0f79a4667c635250bf4db9b9fcdfde66646354efa76dac4282dc0975186306ccdcf58a1c410ced66efb6a7a9eaebc10ae9cab393d1edce21ca4cdf744389db58ef47690f5b9e3848ba9f4448cbacc0f80a62dbdbb9007a81f8d06e9f2ec5fc00ea5f6548aae8739dd68ec3ef106704ac177484d2eab5d7dc40bf3fc377e1547f1fb5d0b92604655b0ed16e712a03a9fe15abcb88b52cc143e3fad0c971d84964e2b0e26e432e006e52ab4179671f1be97bcf2cc71efacdf3bec078c5715555c068e900a19e5b44ccb485fc1572de706682b0f2c5ab9a0b980afb9a281daf4794c93f6f308d4c90fd92fab1cc3bd123f3ec43786d9de40b7aeffc0e9333cfbaf4b0502c4efe599a8d91edd6e2f3e9221dcf87fbe0295eacfaeba551cd262fa02eaf8807824421dc5325a42bc101156f676195c19792967283c058ec197bcd8d466a6b2fa57d38e9778c7d80aa0986d1141e803ee40ed42b5c2236a40ff0f8a8714020df0955ea57870e042a16dc7ac8be8204e17189ca7feca3647f52a942ce49f1f4ba3ae55e1b315fbe759fe7f5bfc74df8571609f81e724da6b72a3ce253c9c56ce032505c4402724aa8a9b1b854880909af7bbf435a4891975f7abb1a0b3bbe37aa412b6864aefd6cfb7ed0492af59714d48b8bd3a81895dc39e564622c008490f4d1201d649d95382f6896f6f4a7ca07377eb7c35f9ac000b802d174f09239670b19c917e70da8c64665869b319d53aa8b3b40223d3382c028cb9d70c4dde3b02b58c797a1b77b83ba027eb632ca229d3212ea51f11d9487f3bbcb6453e999a1c2da407e25a8c40ce8584d00d1f3e5e20fe894c89bbcea4b496e0f2b42683301cc3de28389af43ed9278a9e453033007d8ff93416bf4ba320baa5265024c10cf10a784cd143de08beed9f26794209168eae145c93db9e731244f6417930e65cc2fb299ece9ae6b1ddcd6fec0ddf1a6520872ef616dac8ddd3843c64c5b018a91e800aa87abd05a93f6e150b2bd88a26e8458ab6113d17813022a651737f48bacfbfd5fd73b0b856b4e463f73425a9b438256ede3a423fef3710c93a6a8ec8bcf92b23315275642524afbf15d5f39ac0350b30889c97ccf6215a624a08ea32bb6bd2be087d532b46baf1264f75ed1ad22a0d059b99a9c9770c5b96db398287f911b7ec81f1d433c725c261e4459289deb387c51adf940824c333f0fdca0a2e341e9e7dd8db42a7b7e7acb622dd72b2a30d040dfdb2105f944e929599c3d9e41d5563355b587684d694700a06ddf116430ffbac805f502a272bec09dd9c399cd580e00b085921bab258eecd111cfa5ab90280771ec06769adcceee95ad250ab7fd2af3b550a96e782d21a8a9d474f42337c7029be52a2085cd7e2891118823c64a8f0f25d3296c305c645d0531e75b7c85690e905d134548a0f734aec860e45369bc5a2ac315b14b4e63b9172cf9a69a032142e58d19468a90e13e8bcfcc1786805fd97b0e57a0e23dc5614a7fa16c878ea459291b7227ac9cf3f89b0e06589c4be8e6a8cb1666c8f6e523c46f1b179c8a303b5faf93449266ecdd6d6d3b8d4c233edf4381602c90fbd2d4b1b10ae613f89a09cbdfcfe81ddef68f6abe55bf33bdebae53a66dd8ba69f2632bb4934910cb494e7cfe339c187012374a7c2cdb6ecc39bb931933c13ae9159971543241691e05a9b5d3053e88782e244e4ad8bc0f5e7fd3847c5ec61c8a1822d84d4ef4e3a9cf552bbc3fc02d26f60da1d5a001b7336a5fad6750b355063c23dcc649b9d5953fe7227534c9d07e58fb5d53785a34436e9cfe22e1f91d39313de6ac8ae98fcdbf4120f86325325b1323daa8f17d8b8edc8f1904f62cee4935e6ab96432b9f0aedafd65788c81d5859194e4b3c5f44b541182b1726cd780fa423c47e03dc38bbee2d660af1408e80fc051483315e21f07a024cbe1ec9fadd6b24f7e0bd325fa401ea55a5cf06ee0d9ca74ce6943b1afcec96f4a26cff5e029705a9dc47065ca9685c01e17936c37fed11ff10b2230baf6222ae10d7617ac34d34ae82036518ddeb1c58f4677eeca83ab8ee703f63afd1604ebbac4b8ce0dd6357ca10eb730583307adf8783f974e0631e38d9889ea1238352861a19d708a3db1d1098953eac4c9437726eba4f397ba8d4a7a7735d3bb91859897af96d21985c799c4eb8b8455f08199f614683defcb4c84e928f7e36a8763676df4421bbe27af64bf35f8ed8be3bb152e03bb95cebbe177dd8ce0be7f7779d24fb93008f734fc1de0cf4613d82477ea5c8742b82f2437472432c418ebdad875da64c48d895d680f91c808462d13c4800690c84c76286aece7742044eafc4f579689670f9eb6719e8ba60381164a5fa73721740efaf8cac0c305ce27ce5a4c96537c1febbc38bbaac617eba695f85e1cf5f44dae93d9290f77d189316dacd80087d07fd3a7727063bc7d3be14afb212d8e79f84b4d7249289823fc029f57f18efefb71bde1ee5923ddcb627b6cedebc43cd44c754a6253d5af67add20d415dca53ed1ad664d14cd46255d5ae612dd20dc175eca9b28678a178a6cead3ce0289163d203abb1a11fae3ddd1f90c9e788cc0c2e242459a61b88a2a809670de1e6ba2db721ba6b6bb1b9d34ba5e83456a90777de755d177b8d5fbd939e7298acef84e11998c32a554a847bed1d58c6f22914533b15621393ca3518ae6c3aa46b40bdc3e4a350eb3999215ba5889bd608637c600da84b9086c17ecbb24fefb668698e12982968b06b1ffbdd8e88ad0376d8bab7c437bfacd3f3d943a4d2b65f329a8d205c6dea35fa0cf595dc2024bcd593f7ddd5c71403b1fa398434a2055b94ae7b5fdc5e002d581fb82829e1bac06c10b29856590f195572e208c5f14cd9256e04ce6c72c4bfa5ca10a71b23f8947b35ee4009abad362e199c78d5e729bab5d8c867b78afe48a68fa815b716033d2992d89ed49ec3bd9ae5af33e880147ad33d29cf5434e608a7113ca4d1c9a5e41063ae7891506eb42efe4f1f30d86253bdf80302b8b54698d0e495bfa16e2138e4fd9fc43a7fb8b463f8abf69bebe6843365ea6ac633c970afe11533c6029ba51721f8f2071e93ceef6f4a0d5607d8efa4f6b15c7ea84372f5f223e547fa32a6a6686dc0584f5c783529d6209276db34876dbc89bd282d03efc9b9f8f9c1705e5eeaea5317d52ce999876e68d789db5501523afa796337aa29045bb26efa3f58d7227fa5da66b5f4d258d7b7719249bda0fb4c75226b56ddcd8128af7a531ab5594035a514e6e40288d1bdb072475e555fa87baa0407817e1a78a5b514a9861021475ddafa3e18a55aa99167b546cbc18c42d8f19954f3c13697c4ac6fd58387c0169584a30e2a24db1aa89c24edaaf6e97ace47b1d3fc0ac9b30a358d4e54eecb4b0cb0c7ab43ba90bd970017ec49ed0cc8396c25421f5aa4397079de3c8bf83b1bd2cd96047c10efe8e73e997b05f29be23c8a381bcb06b8119cf4c54a0495f7380f58d29cbc5a1321c060e8d385a996627692b442806b4e49741ba1948bc31e657606f3cc891d4d5afb033cd7b76692e8e88eadec262d82e483b549e77fddef04c843a62c92736ba7ce633881db46c3af0e07b70a5dc02e9cf08fe3aaa62e5a48481c1566b745c490f414b1d3623771eb66859002e7508a5b8b55ce020c6fdd846b1acfe051c2dd419a5bb515e65b65f33d7270c797bcc14d71dd0dc009238c831fe21cdae377865bfcf824348c16b749166e130091ebacbe780bffa5d18a72cee2696d6f8764d9f621b71559218a137c8f2bc668e89c206d7136a00460462175ab8677073631dd297d2665169aed7321a67ffed022fe36b0c7f0cb3ff269e817f388a010b44d449df25e32d459b0a51303ccb8d880062448197200f0dd3218f998a3693a109916a46042bc455b90269770c227431d30b2495bd9cfde34ac300375c438c01f3af6e18d304fd0c1d1ed03cfe021b8c0f394a573eed8f75b8367322a207b525924d37b811790f21a1385205ef1e94be1a5a6b974b5979fca85ecfe4821d9bfefe2ba74397ad3b364c5f7ad403aad5d978ebd30235536b9d715a794b02ba7a3a7d587acdc2f9d321fe5fe5e34a07024980285e82379181ffc65bc442adb9001b82ba65a181e0b85636d33c6dc76c34efe064cb7e6670b625d54fba364e007ae78cca71e47101836e3fba743c6df9c91f4453d33ff979b85db80a9e715621c722d62445fd1d5bb0e60a8ffdf5181533ece1d1370bcf5165116f2e27b861f1d063d3330901115c2235dc358260f8cd711e50b8d30725dce64d0dc6dfa22034bf42fd9ed4d0667cdc136e5ea76e8f115c4d509b2b522600a0e54c4b323a0579baedbe6d5089acd7b53361338816c617dd0032b197205081e0b22e6f68df0e346ecc9d7e518addce22f9e605766fbc2b53c024d2b55229d3f88cf2aa9b2047506ab083a640a8a1011becbb0e38f1ebf58b792d3aeacee8d381c9c5ba9a723702ec5b24b93b5134126779edb51bb4be3aad4d1e3a80e7500f8796672427805c6398f441b051a18b5b49485341d89ae1a1a1032bd2f8ea5860efe8ea8e02fa139db11eaaee46b8d3333b23a9612257c5459d25dece801ebcf69069259fed75f43ad7b97d26e2082d5f759eabcfdc23306128caf18bc05650e6a76a9126c37bfac84966500b5b534e49608a3bcfb9f3fd116ea8055d842975e058d2072097148b9484e02f461bbb6e20eb7a13dfc59feaefa670fd37b518bb9734e10c1042607cb20a9fef3802ec603f96084d967e840e49b80047fd349046ce302ca2d0e6e5b30181aa503e92c0bc1d120dc8532e0d8b7723d0ae546292170d96452d92c5291dcfb4cc40d10d13cce123b978cf0b991f38353202cc14f715c77b187c73dc316b4a64729bb6a02f7c2bd8b0ef55bf79784ec2df7965b4a999294010807b706be06ceb1fce52302f01473a640dae25611052b07157b208e2244514b262b2cf990b9a1d607e3e076e72306f6341b1bd932ec573bc2a100835653735ba04bbb703f5710cc0b8c2cf29e9c4b8be683a3408bd6e365c20b831b47d16706132c94501261237485840387485c90ac20916c04e0859385009c8e524b2da7ee1d65c29592b341a41e394ae19c734e5113f7e57b40a0a78e5999e432da5dea984bed0673cb653c599d0cd3b4939a907e26575f72f0a3e5c42c31cd74389d450a4ead7d39712de61e102a013e01a7951b1fa7dbe74506edc6889e1e33ce978fd32dc38e92a748e3a1755f5d80f671fa9cdee33d3a320c9da63d34e401ee21e25925c433ff90ada11ebdee224a07d115f7ab892c4f5c1a3a1f3ab0d73a14bbd301e260ae1139a1a64f0e8034ec4fd83494c28af73134a4337ba8db26aec5d16257f5cfdfabb11d56eb756f25912c77e979b6b3eab593457c784d435956774a15555121200d7522aa0b2e2d0271504a5741d808b01eae299040c8fd5cb011603d789808301158a8cb894b83050ad7630f7adec6f230c6c854f47de021c4a1bd2c12248766107b1d65894b7fa80f7bdd2e72e2d2559f20847405e90ad255a533bae5d42517333dfebc11333b3924aff449820169da7bb83f7828222e21f0c8d6709ab8363eb943aebc153abc814b152d4accc0be103659438a28495df1c41236bde4b0a93269c2a62baa7ca0f8e8310a9b461fa5d82bb4786bbdfae0ad676cf2b78e6937f6627e693798bcae68f29757ede6aa6e693755bef0561894051e2b8630e3182f6510db48b5c04a5809e37268c9411fd00943f51ff0046e0c93d9cb0ceb2e7b6dbfab3974cc06699d8d0df519fd078170bf1b4462af3150044b751bbb1e6a0f69f7d56049d6a5b5d6da8c9be1b9985bcfdc4eed26c3b0311eebdab2f674438761375c356ad7937b7d241c4a3f49312885b1168485315cb8442ae747d00606b914cdc468c67707e0bb83f0856fb78a703f9b18f834bd71f0fee3000f9ff7b5fba4d549f6ec11935e178f46daf27088cb4e3b873b32a6895e3f7695a5c9f5ff6c60cf94c2bdd56b8f9f154081841a2011042354a4a027280901dcdb5408e20836c041175210e387295c8af850c5125ebaf4a01ad81550115485105a9e7d8e6a10841668c0540c31831744f8020c11a8600839e008c4cccc321f23b4e26fbc94240904d0132b005151e2891e38850c9e9500523db314f5d69a194d1c7169d22363352588961e04bdac84b6247c5c4660846507aa1624462e123fdb0c8c18f16008cb1229d10e94dc29b41ce88c78a4f842880c091d510994d81ee8682d4882e94028bb539240c105abac3ad849800e54f64e59c2486d3204fbf141aa8a2078b0c333c50b223b4a7a006227c80425c8410a7ed8c1aa8813eca8a8e4109144ce67a1735de6439e2aaaf613d4b8bca4bc302717e6210f14848488e28731ae6d41779d063ed84bba2ea41c9fc6a0a093351185932898384175cf4b5e0d8a6446b82d4de0c1ad562889828b24dcec214f1460643bb89304ff5d970210454421889f28a4e0abecd46ad1894516513ee4c1c28affbca6266161097bc8128034fd134510630f1580276f1ad8a491541053f0ed30462048607c908b6e1a6e3c267ac4918169fac785ce570880cd00bead87f25ae276777777f74f2da204ea59f4dd03d2b0e7a03d3737377ff58b291c8883d9f971fae42372ce1e7b73de1597fd73ec71200e766a820b77300c8448c1082ad40ef60f8a9ae01b2a9d46ea258e35efa9a89e43b096721693bb3ae30ed36d7c08d924a7f7004f36409ae9da4f1d46cc9aa6995ec54fb7003c39163fddba28e14ea0252f5f07367d8e9a3ee1d00ed36da032f4d32fc0a7de317b35a9fce7f2cd02c53d72654743e7833d235c1f34b0090917fee7b137dd860a0f54656e915083f9e5222d2ee459417966c1bd8e5ccbe3e7af39949c0d3ab009fe746abd834c1bd874f99c3a8838b735ab7c5db4de81bdc9c91471b54e07f6a60270d89445cd5ace3a5803039baa631ea14b09e375d5f69207618ef8a226ae4b0f38c55b5dad160bab895b9bb8f221db1400d2f4c353b5814f40c884bcf1c4adf1d88b3636362224dcff6c1e7bee6c208e761113eef79fcdb5c4fdaae5325add02d8299531c470e7dd609a76969daba3b3113171f95bb06a4731363642b4094ddc8e39c01bd8a47dc71fbebd3bf5c59c6f175db9d6bb330c4cb98cf9e537f4e972ac03e252b7fcb3698d47fc236ad7a22af78341365d57c313d786873c4ff4fc0dedb5de7b11e106111316d0cf9d12b7bba577b7e4e62a1517063553217b1d811dcc225afea32fee08cb2917c31e9ffd08e9cd1d6171314cfda3c7ebe23d190acbcc31c7ffeec7a75476ec41e673d2254692444c5cc8512cc76c59d5b9067976c84dca59ce1d0e59b5587ee093e3017dba850e3b863be48e33c42191983172fd2eb9760b68a7b206999ff5bcc19d52abcbb0a923df25903084e7eebbb7068c117f371e96bcd891030fbf068743c5ca100f3d6153a4c2c39fe170a83ce9e99e286c8a613c7c190e874a941ff9c3844d118c871fc3e15061a233759ab0290e3d7c1a1c0e95263b7407884d710a0f1f86c3a1021464052d6153fce2e193381c2a4b726a8e1436452f1efe0c0e878a94d5b582c2a668e5e1cbe070a840f1c17ca838615394c2c37fe170a838a1a2b254544cd814bb78f82e1cce14263a994e1436452e1e7e0b873325ca8ff653854d51e8e16f1cce942a4222a1276c8a5b3c7c160e67ca939e51cf1136452d1efee570a61c5172952c6153cce2e18f389c294b725872a4b0295679f8220e678a94d5b632824d118b87af7138538c48b5a49ab0295ef1f0330e674a931d971d276c8a563c7ccbe14c71a27a5101b129063d7c8cc3990214242308e2808f33050a9b62150fffe270a640610f3ece149f9fa1e5101f678a0fc401ff9b43733583a8b42c9f8d628fe32b565529d9618f1d0797765fdce91cfa83fbc52172489f38a895c4a13e6540417dca7e2603f1e96ac234dca72ba769d8ebce17857cb5414243ea0e75026bc74e6495bbc3a62a9ac73c5e703321d70e1f7c870da20d38b2753fcef868913e32671f99db3e462e46c648ec63e4a4b302208ef61b88a39d39ed231cfd344a7a866213f790ef23df5ee41bc55ea33222df3e03c455f58e6be792d8b3a6dc2f437d7b86d2f1833bccf11c3ced78c2083a90b832ec91543a14b0811df8d4a292a1c8374a4acf0a06412b3e198a4dfdc964423222243645463d5c8127a645d7fa10bab4a2b834d8d09072d5071b9843020580a709442e7cae60620a8f85c485813d3abfbd86ee2dd55d047ddb58812b22df3b640d01bee1936f69628fa9d44803e242ffe28b6870a1478f5542087f70c76f02cb459848ea19ff75b38410c297ff9aa70b6db1b6ca725d6c644599a665223bc2eec55237ab85bacc1729a3219cc1107677c36410428621d110358b9888c25636d1185536d17808f3a49f413919fff21637218dd45e72a06a3dea5397b7356baee5ed65b1ac3996b7d6665973a3b722d15b51d69cf67664dfb2d896ccbadeb65817fb923547e7db195973f22dc9c264323031344412e290fe2078f6e8edf0ec91bba662a3db1b6265e76a9053ebc1c2dfc05ed7c05eafdec7b384156a733287434d0dec7567a10e66b73cfce51666a86a37734a9830ee177daa471f36f5d050c5276c927e33eb940d33852b3dfa8c1632647e00dc6119e68b2b3dea4cc91eb55dcc699af6a8498f5c5c22bb989222a65cd8837e7196d7c027523c42440897601586407f3dafa989241ab81ab8b89c695ddc8ce7899e9897524a299986aead3d6161c94208617c0b83ee077d2c1f6cb22cb71c063e59965b1cc35b960d0e1b5a6e59966559ce0e71587e490157482c7141eaa73bcc71d3eefdacf55e6bb5d5ddc526ec4d1fd2a798034833bd07457898f8e93a10c77c010cee8c43b5decb3fd37f7e3a5b9f971387f424bd8d11c6a65d1c8238a6bfe06e31b8a549abb0b064d95a99b684cb6e6f54d93da714c1aec9a4b858f7c5b79023b336851bdde3f835ec51a71e7b94adb8c11ead6153ece8ace1bc2e2e0f0fbd3ec51df4a9c7a61b1e63782ec970c69e89a2488443d438e370608fba572954d9d8d4d4789e5bdd472235bd813dea35b81fe929a99d3af5129b628c5083cd72439f7814d1c334f069113eec41ea36cadb9851a1a0cf2eed7e449d165858faa0d04fc952cac0deec70b623aeacd5eb530f48335d09b57656f7b4c3b9a4103a818525aff55e1bb85b76d1863ec51f208d102e7829b716b0e07ed147c747ba4ed71a85ac3eda0069a207d5a18f7ebde04a671485818525c923f4e4a5fb77a9a6634dd748d832ca08436fa9ebd138414f5143650b1c08dd1715643e6c1144932d7ac0c2b899174768116499a04513a068a1840de25e0f79b4f08125420b9dd72287278b1d295bca969212a124bdb694cd1615708ea880ddddb4bbbbbbdb296d092985737a49464ad9523657d952b6942d65cbed05d121841096e6cdfc9ad6f0b0f93feee1a4d894d4f24b8fd2ad6b669a68745944a3cbb2b58cb2cb32b7161796ad653a6cd97e722ddacd6c6ecb5e3cf6b229a69591cdc8ba3449b0cbaaf439397e08b339115122dca654e3acad5602ac0497ac96552965e2469f944ed80da5848d6937d44b322428a53fa54d29a5744e4a679651616157c5aefa951ebaf4da926dc9e6e85c47a9c38ed2ab4ed97133522a33208f5e8128a5341b8dae28a308d9038a1e5074fbd0ed43b70f73ce9e3967cf9cb307abf2c2ea0c6ac56620af6a0314138a19458d94d6a45c8c2dbba384424251831b5d4221bd9be443f481d3a935922107c7aad01f9073731590a3e3c2b42cb3d5fe077db6f007402990b0b854ea13628e46024d34aaa36bdd2b0c085bbde51aaae1c54119ee8baada52d8f45d191c7f476153145db75cdc359616b733990c2ebe4db55ba255d3584e22dd6bd54b722bc335b4a0855efb0c07243ebfd02e5af56924b2c2a7a8e39fe8ca7f36be452bff1a1cfb66f90c075f46a6cab8a8d8b4b9e5347a70bfeb2217f9e5f189e6d646c6c11c6da399461b5324c36338cb697044de7218cb49ade42d9fc1ddb05c06179f70fdd27d24978dbb5c26e26ad4c93a9545c3894da9de02225f43bde59f4df173732229200e6b057158fe89566ff9add955b5b406846061a974e306c411258fd66c472ed9481dd2d9b061c308999bb0b0f4437671a53347dad1d674b00124e40e123d526109f530749e7aa986ba0ca5fe967924712be6d469600eebd471d01b4f43f0ec1f0cd4edc5418823e6104557247a761b6f630daf51e3d911f0963f1d1f8339fc1f570cd631e0005f1d080fa8bfba981e07f87a8067e741086f614c8cd5bdfcf8501584e5019f83508a780dc21881628ccc3c60582141f6da872784a828048b974809cc378079c43e089b34c7320cc338731d6c4108a3b4c21ee6d9d0636eb1aead182fd85d6e799cf39217663189494c62d22f219efbc195d0067460af2da0efa020ec1f1d85ed8019420861175d07738dcc1ca7cb28a38c324a191983439f597035f4367037c0d505d8bb7470818c10058c27efc2439e2119bc1dd5ca2c3b07ebbb2d6e3abb85da0cec93cb86c417da6506447ca17df2e05135ad39c003beec78c0efee79b062db8046d72046ce43bf62a4a4287958823360a8ab0a580fd718971318aa0a35ec414a4730e79c734ee628a5ec600fac2dc912848085f1467663c4fd63f303c3c38e013aec261718580f9713580f580f9713d718d718d7d035c605c635e4458e175e44b7a607891ffdeae242f6ac9565226d24f2e8d6c8f2ea222dba15dd127196e5d19a56b4ac68750fe412f6e4cf8a7a64ef1fc3e7dbaf30ee07c3cbeb62813432db610758594aec59ce1e7b08ccf1f10f1f9d46ad4774dac1ead16377ed6897c9c05eec6acd223c310ad2481f7215e11294fb833f4eb127b98b39ec411b79c912d7c1d711f7e3a013ab9a463ae6f24af471c2a64faa765e02c11c75febc9c223e9db50318c741aa3e7115a6912eaf3c5b79295d7ae5671d36d1266ce21d364594476550355ef9a24f0cae85475c7dba3a46a1dab3f092c1fd113d0807d148e2b2675ddc8c83bee8c3a62a6caa3e242828a8d2d8b9acf2a4d3c8c1dd812e9d7b982382e21f6077c425844f57c72866c22836828f7416a5f460e16314f6a476c34bd8934024bbe07290f45a775e06bd747ec2a62fba0ae6e08139dae58fe8dc559b81bdd99b6b674c05f763d4ce8a4d3f54bae42e466154f51bb3fb4a7e51318acf8dffa24fe9bfe843aa1281b2b884ddd26e9861d8a7683a735ff6c12a6cfab226d39250884422cfde009b1ca87fdc66c4ad3f72f8d11dec612eeb22a42d2c9f5ffc1fd683c4ab0bc8b7fea4d1e46251739823f3f60be610b9154dafae7199e5d3f2392dd7c199ed407cebbb9e01a5b724cb2cf60dec850594123616b14a29254b295bcae6141399873c5e04e185cf439ea1282d0f79bc70f25e5cf1c28a0894fc5777784450e414bf68f29f0de2f982891d5265917a7fa8aa528448772dbb5bb64be43ef9b94422f148ce6432954c237e2ef9a9843d16b26163a8468d9e99991f19199d98981d1a348260607248a4d58c193e32645051bdbce8b8b8fcb4b4086d5b0f0b8b927b7346a3954894d2b49d2c53591b0473c0c71c3ece141f9803fee5f04548ee5777fa874d555e7a55f95020d9f4873d2ae55d482eebac97fe40ba7a21dc8f427956620476050bc2aa6056b020accaea7e36083a15faec6a05647fa4440360556c0ecc41dab1f9afeed49c3ef590af87b41226cf4e856abd974472f7bc9a9a489becb0c79d915efa9ca49fb3c39ae4103127505811824228e88b3981da85fe4a86baa4ac465e4869d9b22e9f2bca4b8e6d916fd7d1d29bfb2e22cf1e19306dd090e56c5da81faa57d86325cf463c7b368408a52eb4c08dc00517a8bbe0820b2e7873d40529a70b5c0b2db430e511f6b221199129f7a33d52e43cf5a156d8f45126cfde4aae3c5328d4874d1fd663a3b009f24c41c87f75070a9b3e39e4c3a6cf066151b21e980342b8034a6c47e5b3aa4241bdbaa2604c309d2b578f1236959c3f1b4495fc17561ec7439e2f9efc14d24a519e2b3951b1e9099b58f0ea00807c3dff2a15727b0dd1e2d2b80ff6a4774eb51b9a0e02ec4922a4afe0b60a358ddbb027ddddd26e68ba185c84daebbe1a80eebb1d003aa16767812b71333c977af5925b4bbb29552e665576310b882b701f5475dc770979768e0322dfb9af56a9437088423854aab0298af1f06d703854aa0845212b6c8a57025ffddb2ba6a1fe65d5e5ca904a7e83c60daed647d8a3fec9b75e848bb0e0cea6ce432d053c45d82b98a33a758781a91f0ea5bf3ab75eb9199bb738bb658722adc533cf5aba1f236dd46dc06a1f042348ea76aa544fca27f5935a6d000a09513180be85873c62ec7c6b3c349fe1b6b59148734d07db1f9bdbee87e633ba18854da2ca3272aa5197c1652ddc478067bfdc170326fa6c3e189e7564764aaad87339753ec24a58d018509d7d7ed79bef2591ac7f6efdf3380c05d7d278b438bba5f1b8eee2166a3cb873f1a8f188e9808ce980fc1c72187ded5e3cd3661039d67520bed57dec23b7da0c2c5ebb8f7d731dfd12c380eb2dded2fdd8baca72bb1f23ea41a2c689b8cc354afd83e1d963a84f2e1452149792ea93ac3495fabcb7306496e3218eaf704082dce731200eea2c067c817ae5fad4404c439dfaedd5d72bbf42b2d2555437288974d931ffdab10e8834c14bebd15d07e2d7ae76923d7a0de152ef55535984522ae4c219f8024e969f11ce9891c0b85c402ba0142327816824c2aab5221fb996653efae13a09b43b724d3412593e72d1e7517ee0136f8cd57f371ed6d8c420e2b4e999c5a65b975b3ead6e72d6ac579dd6f47963cd0e0788366c1687b273ca1507d6625e31af73cec99367f5895d6d6db76d6b6df78555eec785d9ac3ae695d33ce37218695d6631afb656c72eac5e953eb946fc4586980f97b508b18fdb471a1f3947942e6f01482f795e5e0ed9abd62b90f89ff793dbe3c3e91f4bbdb41eec3d7b66ce9e7973d99c33ebb8a7639c0c13f320f1ade7c11c994ba78139349722d72ed79cb94fa4757006fb5d0eb51e975bc79cbbbad941f64ad087324135aa350ab7bdab0dfd0ae3f6aff09087ef78e0187f8650722449922449922449922449922449861862882190204182040912244890204132c410430c31c4932b51fe3e671d105931212e642ff3d135ddb025ccc1a367a7d2c253fac950f6e20bd4bf49e397bc1b5c43af429aead4bde8b4d65a3de63022eea437766213f6a84b2dea14f15884d258843a57ae4a97ac8ad306aab720f4cf86b4823a3ed5e5ca904a37749ac6f2186ad85406e351bb2179d46e60625c07476e39a9552fcc669a4806d73f6353b5de4b221171d914e3271a0ee35fe612635c07ebe06ddb3697dbb66d9bfbb66ddb56c3b76ddbb6ccb76ddbb619dfb66ddb5a7cdbb66d9bbe6ddbb65ddfb66ddbb66ddb361bbe6ddbb66ddbb66d22dfb66ddbb66dc361739c6ddbb66ddb4a325cc6b7cde1e622ed66db5e4698754db4c28cb8ad2396176ccb8cd478c16a6cd648f682d5d8302333588ded32d282d5d8aa9159639b96915b639bd4c836a7111bdb9446b6d94644db6423a26d6a2e2cdaa6a4f1e585a7a4edadddc8786b3732606470fc9e3bdbd40c270292a921aaf2f7b6eaad9cd4aa1766334d34ba2c1914563099e5305a0f16de45bbb1281712299391f10285692c2b2693c1c9b7c11179cb6bc870a255eb54b1a99110d21591156666de380dc59ee51b11f7b3288b62138c5b6e85b089e4d65765f897c9b80dff5c68ac605c43710744fea7096113d4f8d4ab9c95cecc153e49144a0a4149229f3cf2332cfcf049a652ab99169ff16ec22729db89ec27b2a1fc8cb70e9bdc67bc8bf049562577c69b089ba8cf4c54d3585eaddc16f2332c3ee3dcc3a7e963cdf4123e4d958a89aa89cac9cf38a7d8f4e233ce283ecd7a673c5e6153f4198f52f844512820541594959f99f1b8c3275a55b7e767e812263fe3b1c94c8c9386ccf806f8444940332e039f2c140e6c0252c3671c874d403417ffa02a6593aa21cd38646b66c63d3e59a9129b80489f71c9276bc6219b80589ff119dacd8cea25aa4f1aaa692c47a5fa6451a954ea2d6cb592aa955459980a53c915a6c2b0894d6cce549f306c62139b53d5a7eb9ad7bce65cf5e9bae635af49517dba2e7ad18bd2549fae5aef4da9fa54572bd54ab552bd55554d6379ad2aba42f5a9a652a8142a857acbad94e5b5de5b53222055af48a47b57aab748b75a4e1ab1a0a14a2b74dd47e2ba8f34eabedbcd745f7d19a2163bca6c8b9db12f9a63a30c6bc1665c32aa225dcb5b2c0b96ca5a6628967acb37ac3154cb0c86a218aa31d45bce72bdac5a665674d535aa66a8aa5551f5968f2cec4acdd02bd5572a5ea9b75c44ff6b9f95080875a12ed4857acbb519c389ea6a842291aee5590aaefcaf7daa4aa552d5b8b208c43416500dfe9aa235d535c529cdc55ed74f457d9764b99513bbecb535d2c193e3972e1c3f6db635ba34bbb81536c5380dff78e82dbf5e5ca070b7682e23f596cb2c79cb6de4bce5964616351efc2e6eadfa6451abb7960b17a17427024259231489742d4ab462cf724c884bb19b37a8a4ec98ca7a162a1a080340006315000030100c07030291402c1c2aaba60314000e819a3a6e581c8983598ec3304a1103142100000000010600cc94106d0300b69a25eb9655c208f58e68684ac4e23e0f846495a05e319c6898b175d5c47adc846e10e1d11601b76b84aac487875f90af99f5ae8fbbe1c39c53aef800fe5b0dfe277474bb5cebd6d0c5936c510aa3eb0eea9dac0037324c434a63c06ec8b7d93933951bdfe50662d742202624aac919315507b59a6b7b2e304272cd4aab5f12996c47bf10c5457a8afb03a16bfbc94a0b4a519d3307cd80859784320616d6a05fd287bd85788ec84d1729ce54c4ade56344e6979567bbc8a85b894d6489f4912f39f86a758cf75a1abc953339a3b043ad07482540fca758a0b4c53b43163931f9f751db34af4c1ac2b8232a59b5b9477ea1c98e1bd56c834e911beb0c44ec000a7b978b95d3b53b02dc2db621b64606bf2fc78314778163cc97fc402673322ab3d975b760cf103946eb586be3860fff464cb6867b9c64ea01d23a36a5b547407ef8a52221ff722a8d04bf64de2f5d52e960fc710421e2c22b7dce348f571f58c53aea167326647018c3d08089b26ae5ed7fca79ee2214afcbc2e3c6432bda6c365c1678c219ed935137fc611d6cc9e48a386cee13bf2ba9740cf34fe1856409a9636312505ed34b70da66173f7b231436e6f5cc9cf180386452efbb49ebcfc9ce7354e2a253145c005fa9051a6a457bc4ddbce7530b39272508090f62bd025b6dc6f527fdb420397d60963256164851654f865900d53a25d80b25045e8577e9079bbfae8ec1fa9d96368b6db42240d6fb1667a9f667bbce4b67412509d1f426c68a51899dc0e79233466ba9a440101d87553813d5354e6727e98438da1aaa75a150c3c112b9756d71095251105dae518cff705db3282ec80848ad14fa17b0bcfba2c04fb7f576203e48b6b313dbebeb48dae5e743b5f4fd2b19f22ed4e2a7047ebe6a7afb589561a74121628b04736c094ee44767e6cce913ea23331dab7b3ae69cef731020ebd2b325fe2dced6b86fd92228bce83b955d1a0af9b487534250639310a875b47d85f3318ecc6f44eea6fe5e94e500d3cdff40159c0d9501a96f45b0375726cc93c60bdae907e2cc0769b2fe20084b8d0238e59987820550cd6c5a6f40dc3ac0f2c2968b6a003d92fdbf712fc39a50ae1e63449feca180c712f0d7985d5380266a64268e987c47bead48907eb3a6080462f01b4a1888d096a12d02a1ecd7318388648abdd90c0bd8e18a4008f43c70b3f50dbf080412610b4cd07736c664511862cbf6a1763b9e1b174a6575e0a9069402f99be8435f452b1e4ad6350bc656db4fa43d9a5bd87f4f12e90c814b2799f853a3e64bcd101d7906e67cdfbb256be7c9ed49932e1b805c62ce8cbe9b115045fb5286527a481daf444419d39ef72e1c3e351575b8ae93629eb3c8ef00cec1c4fe983a251b105242d7209386bd6eea397a586d43fd36a521ef88ff0f379f32b140fce5afef6f4b3c37d6912d308889795cd1f225b4140e57106c9fd39c18738b3910927cef3ee1bf0a7520850546a7ea0f59acfbe688b7e63d4bf11db34dfcb58fc327fffc03b692267fe606215fda51e32fcaf979e927868bc36eb27754cb0ece7dbe00f52537c99e94817071c178c6c04c37cfb34147113185dfd13e099aa15f9f7b96dadd019726ec301e9d5d454e84bb0f45218fa7895a7ca2f1e602ef26c21bf0b28628e240bba4c4892f7d13c68683bcc962a57764e96294e3941373af81ecbda7f212a4eeb9238fb3368fd9e18b4ecbae2d5c2c8967780a2324d80d68d300fce4c516ca459013cbedda3f9b033f8e4346de100264f0eb39f04044874e025eea051282b55a76975f2dcaed272b8917a53b820ca26b383ce57c51f6ac7e469eddb5fb0cd10660672b8f18c44e5f7a324c19fe4e2990ce03397a12e3945c03ecde2e0a58ee09d844d0da18d669c13b1ae173df587c3f2fecfb8e392a7ac2ecbb3d5475f07e81a2267e0052a8827877137df9f1b48f4a7eacef7599ee687d93e88630bd0c815ef7817a932780fe42cf8dbd96c6b9ef2bf9d897529cfbba0237b60e3d5bf7ba3fbd18f41e4a4272026fae95fcd8bb748edb5a991b7b2dcdb9db57f2b175d05fa61790bdd7ece55f7a7da8a7331854b2d0d2e4650bb140169ed070cc3df558dae933b305818cbecd2fbf0c7c09c55c0de0de22bc5c49248b7738820f2f7dac304c28262e2f426d46782b636c42010053a27f755e864a83bd867bb4a19ee1628bae0d6980af678853f0dec5a9f539f1c82c19e01c20ec926407c41b4c702d0736810240ac6b0d59ef6050842f6de94c367b318f9354842a9f18c4a843692f499eb3dd149b5dfff47c8d9ca4c66a6949a78601fd2ecc8b9d5d61039db2dd85a413bda2ad377faae49aedbb464dc255cbcb11432a392d854c8fd4d472d62facca231e17b9c40367894ab81774364ceb2829ece6c7999334019b09ac702a36805b2141cf3363bd36371289d947182f3ab4117ba9dc1fb4318fbf3879cffa988ad50f67e03bfa04055ee46f1a44df3a0050f162c01651953b93178d0484ec59ad4b63358dabf7565cffa0a13fd8f504a38b9360079342b7f6118c9e879d4bd5210740d61ab01e6cbfb63f7f236a4d899ecbc4eb51f48b8cbcc8557078fa079ec3c7b0cce7be0fd7886733685318c2d8e8abebf7b2ce66278c9b0246491b4f4cf564829734d68342f938285d91f5cbcaba607ee223c62a6319d2fed280a5af2bad9edcdec4eeb9ec12e282377e9a6ee1087e53188327dd8b74d29e2eedf4d34997c634d34bdb6933f1c2e5177cfe241a3a032431a93aa8929b58615f311c63e6a55e461e86c83bf8206de8530d8b441615e2ad72df519fed72c8c6d3eda94589f1c4c252ae516b3491236bc8d4c47f35892226ed2f4d51ed4cfa5bf3686a52ffd424eac8843f1a8d3226f97f0da2154dfd47f3a869527fd4345a70b73d51a2cd9afabbc66862fed4309a783b0c57ae789904c51a3991e3365e8d481e5fb9f2e6b73a7a25621020821064f41816609323170dd1c934df4860967733d696603e527fe4b87c35fcaddb63a9b5be75cf6337055961acc51c030aa03b03aac7a4f07ac2f560f494746f80e6613cf91a77d917e458bdad829fb97988978f3c646607a06b75a30bf78945457d64382295bd37eda106b4b80b5af10edd900f3748968b05c6439f70dc16f7ef6c46af38eed8335653f1d370c95129f850663289246ba97b08b964c79d95f55b8cc33b5168eacfc0a62b302e458b24baaa971d4055524b32dde5ded8297025e2fcf6ce847755f228308f3b36b27d0fcda118aef0dd014251c75828bae2557285e52b3a5bf144d02273a19f14ad1bd2b4894d9a6c0253a631619a29a692a9b93481425b218e46c9f48cc25af6bc6454f4cba0c677a4dbeabdc9a315f4c4d8a29aa494ea2e6f2736b4e0dbd9b8a55ee60b658a92fd2b4e4f920a5dbeedbfc158c5f06d239972a5b02c77f684256ba53020a425c64c94519a68f2f1571db0d86ac4952979cfba77ac2387edf4b111737f999ff99e480ac361ac929121efb7245fc71bc965e56c137569446e8b4d72cd7a338824ab02dda49e453d5b4fc647de6b995b96764a2d1eb4005290a881eacd4256093e791acb8b8696d6689f1d5e37b4f1c177ac05bba9bbf5ff21f9d91904d38e2b58200ffbd0e1edd5247d52695d6a287dedf82ba3e14f3d37edf8c75c1c233ff7079f10477c05f0a5082df135de1b9e9e0e58ce2e4d719f6cb5cb83cf8641bf4601da887c5b5d2369a700301c16127d5a3d37ce5c4dec0114da35b4db1608f152f53874717cb22564d202c0ecdfc86834983a12515c4de21a415fef87f70593874f1f10cd416a4739919b42b658dd106ab8a75bde7318493d28a887961903d68763717ebcdd20071a0968f3882e238d0c8897df013b2744b2bfb31cbd13a3927aae2402866934c5bd3de0e70b81bc5cea0e862a35fb3321ee5758d3a60736cf7725b20c9ad887f260bbb1da2fd864968a1e2c7ab40203670fbd5001b44d65d0618d5e4d7556178cbc7866e59a5d9f2aa4dda2099e56352eeeb3c22058ecdede1691e5798c53bbfbbe5073e34327b8e182e3b32259659bef439b58b41b1a31843975693f35620873ead27e6ac410e6d4a5fdd48821cca94bfba911b92918bed0d8656142fa84a74de79f2e0e5b3abfda8679738767ee2a26c93b2afe78a324aa72289038316be4f5d750ddbe8a21ee3db2fb351a03bd7d8a777c6ea2f3f979dc6697fd9ab1a04c777a712668d10a5a876a4b0d581199be88fa989ea7a219256d8477c03a92275bff737c0a12a97bc12dfd192b81606d478521f0b9c4b1ac9b7f2347109af1e2ace7fa379f4e79eb7f2442b11ca708c498c683464d11720e28e26c4487e41d81a1ecf621501c2f617c40093c8fcd2ab5971f59a66aa48d787c1c265af5f3afe6916cb07c969e6c48789ab4ae511eb7e04695462d8cfb27b1147be85049373767eecd5065fd51c858852e3deed21b73c092bfd8536f62ee12b78d9fd910b7dd9877a5709b25421e0e7a2de136970323eaff366062ba954a1160a9334732fc6d3834811a047540a851d50f1b95d4637957f8e0b572158e24311d115faa12bb1ed9b793c8180893fb3e4fedbaf466366daa7bd64044deb6b34d175fb0aaa823430f1a9e660e5c59861000cc9a4cbc6cff25e92e556f2f827f0ce44212898481c50ea12570937efdb8121b0aa0c20439e3829377b1f6efc30fab62492f4b5732572ae86d902908aaca0c3ddf6b91b50b0c5d892601821b9c135f07f1362fb2f12a22715949485cd22717c619453517092d22cdd8fc1d2cb2ae6bf298d41ca301cb65137def4ab6dc549baaefe04e1d85b6e4bc39199f61b3deb22e350d270eba3d8e5a2e31f5ff4941d072fb375e554cec5bbe6b163101165a8041829781906f2f149e767ce44efb98d8a730c977413c1e2fb9d51781d4292ac5205d8bb4bea388428b9252de79058316c166650fc4097842aec12edebeb5750f1d8ee5092f0a63148bba00ecf0bfc83dae02eec04043d9ebd9f06fc66381fcdb3f40fe99c0b6b377459d2825378856bdedb0b43f79ef5aba932c59c8cdc42e0bed6da848a227746bba9d2ea10b29bab142b6c75ca75ae3dd3d834ea66a4c83a4eca557497225c32de5e1758e9f8636977d748837e36fd35a704634d1cc1e2176d80664b0b8fb501ec0fb403cdf55ba622b7a724f89e63218bd65433f0e5ac5827d3c3731088d4bd53ab0a3aa8f73448f2f03359cea07aed5d141686cd7a8ca8a3a9e90b1a0073285132e6104eff44c21af0bc6d8e1d5e2efbae927a2d399cb8fd99658d47e5a4a7ff2a625ea7e35b5380f9063f2d9511b82c0a82c7f2474941378cd6cbbc50745245e677628d79ba54da6d73fd233a98f546a7ce8241ff03eea09dc14cb408ac28d6856de077ff37c9aec6d13191d0a3b13e8878fa8687701d9a1004b89e3e42f598b4fcd60f995a8aeaf912136dec2c3be0b2733e1e3bf1c3ba97a9dfb101130e8959143db4d5a8a99f4373019d81f13d5c612f6836bf91b4c2213b7b9927540335d234c0b2611fbb7873d978d85b31944e154721c59216f86fb0cca2aff5c4a1c765571ec311ca02317b07f049753b8aa8320a17d97645c362aa18f55188fdb717c65ab7e32edd231e29971b91cc0d752358d9afb32fb991ff7032d3b67daa1d8eb0278fb41388bc84f176cdbde87f7b4947484df9f2904d4b2229c9b2a383b91419048b8ae614d648d0c4b15cb8e5aae08c7582c30d87a1f9e1664351aa2aa484450476634da50ccd7fe8af77d57f8c82d7ad049d56d5840194401c895045e5afba9531b3376ad825c488b7ab27f1f0adbe351d52318416f0ffd0e7f6282af7c188fd5c60820297669446376315730f288772820e3720ea7741ab7f31f8f4577458a5d517976f5337cb39cdb50e56106f6646a49f11e7c1a8a6174ece44ae4538fda702bc1b03c44059ade5524614bedf9a6bcfd5e89c831532e8cdac7e61283aeff5bd27b873b2e711e1766e5c9e1d9acad7e03515968d1e941a3e4c1e1506e41b7d52ffeec0ee5e3f881e8dc6c150a04b22f56f19205bc2c4116454d432f9937a0f56a1ace2d58e6a14a4bf43c6bbf722d9e79dbc315e7ffe672276d1df42b88e9eefe387f8236d20691202f217b0efed377541de08525ad7c92e497bad5492610180ce5b824927a9397e695823deb14e4a804fc0ccb123198e99f29845b098f992d91853d9058da234a634fe80514a6b0ed9c5b0e8e9d4576aa33a9af4aecfeb677656915aedb7a581e0ca7978af5a29292a08407bc35671ab085bcf9ff8a13a6c11d1ce26beba21b874bd16ede1cfc615a465af3eedc93dcd64237861874ad3ec17460acce967c7e274f5189d245af48256e483f063dafdaac8dcc4e13ea80f495d6685f2ff5d2d8114d74b573c32939616f93e430f23cbf6c7e82a0fe9ae52b08da980ebefcdcf318cd41213790f45ba4b87343388560905bfb29126dc909cd152494d7d8611dd5c5c8d915b361c058aefe67f783ed31b1e933ecbb1b62d243fbc88d7db9a86db0f605c71c65b3ceafa3a77e2edd1facbc2776f42b9052f68b4f425553cb777a6da30ca2024e491273983188d469324d12615704e3d7f41325a38c096baf219d511163e4ca988b3ac38b51d9cf34ab375a28c6346db24a671f0807291741beaa03b5397b0e0ab7928a02f380d32aef023617adc84494df05e22048b57908d1adf2c148410880488207813a25f7b1e7901a919191b02efd81c734b366abdbdf4a0daa9986b940669b52c4861994f16c2b0136fa3bd9f2e3a15c91d7ab4069832109592aef432d2eff801489a9c5256ec31746ae815f40873f256c0fe39d6e55f40246e16f7eab753e1efe195e6143748187fc4acb47da69d8ab211418b052802681cefa5cae9e2c975b6ff2d0cf21fc6638cba8280512c12a94dcfa49f42b73bb552a239ea17a5210a0f0d50815a577aa421ef3f923ae2f21e3bb9f5e7a914ccf9169933c84f928ad3d9a3c7a7a26e0ec56813802e99c7d3752b58f62c4630b8f0adbe03f8e5737f847d426360d2749f8d17ed26426b01c63203cc09247ab3651ac4676aa483ac72a9ba35abcc11258e257f3b2cba28bad990e5a4faf416a5847aab3809a2f58ff82c9cd69bca4b879e6455003d6cc33ab74f98f5583421dd1c42bb00a218e7de12ff57a434406bb0e0c130af9d4086cc11ae18aacc17d7e61e0754b5d355af55e5ffdf781680ff00a12b15328689c799b1dce01f3dd94a690dc99c53f668fc5958a53d838006f31bd5bdd9055cef3423a3af4c236f5a4d3e4688a5dc19d9b46fdc105476ffdd2371ad0679cfa9bb730d0a26f5d91d47ab1719f19132b4711760850c0291e459423bba3f23b29be95957303fffd42f6a70074312709acfebb206f4d92430425ac6b27c9b024ce21337b05ff14633b2443e7c5c42bdab79c80983576be87c1023db4c209a06b4d45ef0d2c57c71aa75062e89ab43d8723f441c9bfb52c0c27039186319153c497d66ea360840c7391beff1099c26d10fe30e4c9264e31aca2a09f110975fd5cbe0118bb912920fcf44e33a7a58426736f4a93151b2338b9c5d50a87fae1dc512463848220593209046cd6df99ede87568a15752f179961db3abb26f59514f639ec8c4cd683157b4f4289c61023ace280afa8b4bb4db65c35ccc80507c124024101469a36b71f87d518986930046d09d2eb3ebacc08addc41ce5ad33ee57fd75230f9d3f1abe954a81d432b2530e49df0bb13cede7349b84e5b80644983f40947d95eed2192232be836919b0a63527aec496f91b5ce5eaa0e749392438da86aa4813186ff7298abe66ceede948e7b9733701a833c64e47ae4af6749044bf9009c7a42017c097552211876234dced57ba44a447bc5b275c1ffd12dccdc69b1100b87d093e00e25c3a323d6f07eff450ceb4691364b892a5ae133d1d3896a1963d65e73b4ebb1837ed37806adc251cffd43777fb346cd65bbf41711b07469a113f48feade73f732d113c41cd6a5c052ff1a12662b2b066036aa82ccde56e927e81104d82d68e0eb058235b9e3c2dc071e479acc8077800f94b7fbf0961972e93ba773e7daf1d1672c00597885e7e23fcf514062c7dd86ac541f345b553a2d504256e621eac9d4ce59a49347708f9eefc1d98b4e8e9bc538e1510401d8097e38287dfa7aed03b5a501b338c52e1de84077f33dc79f4346faf1e853b62096160aab3632eb40ec8006ec70ae2ce880ed2030a7f2ba0c54a7d311d12e34679b0ef1121550171719dca7cdb15c6f0e3268386e1e445a1a3ac042bc486f2c578dedf164981bf85ef9e9427863080217180828d8ef6a5c8afc9152c172e442eae7ea7d93192a2532ac846194f08c8083192bf1565cfd6f6eb63962b905265114168660df165b2048d54c92117bf31a9b82205872686e04cb631b8928a6bd2592d3d9a49e4dbfa2c46e8425531579eca0f1392ba3b58d013d19d09cd8edcae1e67730a40c5de15139cd0d22c0737de8df7f442f7ca3456d957f15da6e425425c45ccc8fd9551d17f737f4d6e9fd869a7d93299d8c0cf2d2f9065db0dee54fd6a353372693c2f8a214685d34ee31c1e406b387b8fbc0322979b58447d6f0cd8af9cdad28f114481ce854cb8cdd6d6f40821cb958779ed0f2818e77a2a94069fccad6ba6072c9aecfe731b85a58f656f7bf905a07ff9ab84bb63bb77e1567a7484546ffed0353e57887c125afaae024bb998d2a715fef2734e0e2cbce01baa7a0fe95d8bdca43991df89e30cf5b5d36718bbe818d15cbf649489bb764fc56cd9cf8c17a50e324b7090f9f07700c193c63ba59a2d537d8f1eb115f9d1ed462f4c419efe22b61af0270b7ef51e3bdd4b4bb270e34cd8b29ab8c682b0abce2fe8698a2d22b5cb829624ba0b3a585574666097492ce52983905449b2d2d3e4c413049d99274eb226b60d6591c418772471f2c5eb236cfa2b8eb7ec69cf37ec017726d90f44c96781eb3eafe0fc311b9fceec14eb6437cbe61a07ba25af4e84f286429dcdb87239b495f4b8b1892751788a3c271f0bcdbc3488d899788582f7f1febfc6029f864a3124ea6726e7b7e2e262f0e16ea6122578b1c323aafd2cf569eef4e21b37c6b5bb3f9b2d1d2cc4a6c3e9fbe5bd478fee5155af2d99532a8096073c99743a42ed0833eb25e74fff12b87081c1cdc294163c8397fc526dd825233850d70259c6427f6278189fa55942d7e3e47ec997007b8a3b8727f5cd0cf2017a9205af757d10b8d02e6d7d1530392767ea4208095850f1ac2d82d2f77b77739784b90efd11789c62feac459d46920307f44ed277f7ec20abf7feab7254d8c9518aac344da1c160b9fe490068a9fa4cfcdf12fabcb0ee12928728fba5a551311966377b3137268f3ba152994be2403c3933f2933048338b95f057f3a46751cca6e76331eb666f3b31114e8a76429d9c9f2e04243adf9f08103ba59b890f78629f13f6794265c865b6f7204633ade4f3f6d9a26566df34d521482bccac941cfd6045297529d3432c33db953403f0d7e393b6265f093cd9c98729bac18d443092d9e6c36479066a07231eed0c6a5e5078b6f09462f091e6ed4f20481439248b2030274d2f7242cc2404da35f83be6eb6d778699169d7a2892a5105d31faf1a3da05b4df3ae896f12c9d1a1b94ad15a999758e760a68dc03e915e92516d9c3acc03621af69893a42d3e2ca3fc32eebf2e416624f43b0e34f133d74878f766c306704fc5d00e582f50b43546f2031f4e9959e50f428e8f876ea944b4bd68e619c619cd482181d47146e75821c1e814b143b09c390060be33057612f12532c221d23c61ddcc2f18d49dc4f88f16640b991ff5a3cb2603f9a8f0b12e03ebf7102bf389a72387f12c318fc80e91bf12036f0a343c810673d895e8ed6dd9316605a11b8f281c3f61b2aae97eea16e268516e74d292680c97e2f2ef7892234540852a05f9abbe6623d5fc17c3a07364465241041d77cea9f1bf6298898c877e3a5638107923038f1e2a4dd005210b04a095dcdf6a15df34b3467fd93969885a0e47000f2e0f79dbb38e0907ed60c5b7ee06db84d60ce03e10c4257bb2bf333cbc450f60c4d723cbcc934113aa118722934a8e7c96b6080c814114fa681837ec20912cb9369247dade3cdcb1af280bdc562c35dc69c248fe2984f93f55da19429128031f16cd446c5e94938cf1cd1dc3bcda1a20852ae7e391d253dc9c639c7f13238c8feeac29d79c2c16a89ca768b2150b7ed5c674864cf972aefdab53f11ea05e5581b30be53bcff361f3161781ba6e7d0962212a09d867a9416ab044f5e40c4f5277d566110d2479c3cf9675e5d34239f37e2e0b539dab41247c084040d5ab9149dfbe862eddc3f2a4059e38006ffa8b41e518707bb314033d95cab29ff58399b3852bf2087943e35c83cc39c891ab942dc3928891067a6061a5d21f089b8bf5c2ff031cc144af2afe689628aaddae3913f15492d177c7752ec9e3e1a41d18424679da1f674c974abbab73226a76059a2bbbdada3b3509eafb888b28b68b1dd39b15253f26bcb435eb5ca93cf5c57f2bafa539e05ad93d7df64f2d868497e7f21e5592b820f3149ac7945f9062f696dcf0bdf4c78a5aa3bef5869e13565ffbc25ae9d576ac7f132b52fbce69ce5dc8bc2b74a4f78ad720dc8ce107ec55ceb35f3a1698a978e2bb86ea53a679b88c75a2806b467297526338357ad8271214c362273905ca4c3c4252ebe35b8bce90ea52fc5c630b328aa0a51112e0e41c5c866f8bc0bc7868092936a18a6896f2f9b0c1d3cda518289e3cd1690bd0f67d497102a6d8f4177a84f383ca5d7659d11045b3f37fda5554278971a569651d9aad5a1e84b8af3ecb70bc12d50992586c2ddd0638dbb4b271f4834487ec44eeb69d47bba4776b03cf852f5eedd15f40b8e6b3a527eb8a029d19d2a3fbc4399e6b1398d2261b55a1782fe1aae8f9b1a22620b097adb40b699affe430709ffda0f5bbb34368dfb6925ec92c50e89fa050ea09ca9b4ffe62d7fd24a5fe3d9de044c14665611a13b23f58b652487d359ef58b63177819e825a0c8bfeee14b5b130795b9e43db9b6a4e86a45c5d0c767faced9d64c298d4f7471cce09400931ebb43374816e4ed408aab6d70abe979f518cd3e35e937a9447c00933c355f74852c33414b6774eda0dd547e61944cdf4e9a20e32f778ed89c05648607b2d8380b0dd7594607b2dd7e2964eb787e62c181ab6d70fb497bc6261607b47f39fe237898b3f5076d01bf7e2f38bcd1d8964019050b0ff900fdbde7017a7d719e1523a01f91c0f3c3356718b51657882125355da23aa3dbcf50891fc545174c5240634c63f91909c614b86465b6617c0a5928b766f986dbcc8d4be18f452f14f54c4868ac08f41e91d2d6c22178dbdd86809f445db19f17a97d8c9b3ef62dee7f0bf8166c6b92e4646f32bf29b22ead329500f4b71c65c9bda882a41825b884c4bd9c954652bb1b24694466dc17544844bda6c180c89ba1aaa221f8de13f936e3e1c8cebf4682ec2535da5a5af4a80731a0b8b6564eaf0edcd56cbeceb883f97ca2277e21a3a644574a7b36ae84607ba7ebbb92ade9e0241da8cc2be896e91a3e73c09786be37a0b09424a4710000f824658f111ced3e155743bfdbe157c0df96b45d7eaa27243118f0e2e6c9cc963ba96869fbe00b76a9833748b6d36b5197507bf80c5fee2d53ca4e3b1bab36b3d2ec8ef96070d55b834461166e8cfdfb260fd542e1d7d68314418705e9befca49019ce7bec02342bd2b27da5a3521c9c199724386b99ddda3e6ba0d25686e60b3f0289d536a047046dd595d55c9e59de99a8258ce3beab30f7347a4b9ec467b1e28307570fa2c19e8253c3ee0316d77829a094b016f061b1f6b0f3495019f48120418b2d9a46e5bdab5f17e3be9dad0667b6ab7734b1b35dbd2a68d37db48af9d76db51bf9d7bb201c24759036f1c9022c227c4a4603d0d15ef9523a073e1aafe295f5d2d5d5a7859602d90dc53c3b87abd83952b823c1e7a00fad6dad8601b158c55616514a910803f0b9de2163bd748d0a5fe9218030f77a7ebb8ab501546bd48e0d98678cf044866cde6bb316b26f4ddcc81d3535e95267081446f0dd5ec101771675736c0a1e6be5430b3dcd32126c194d3448105ef1530cdb4a64bdfff73a5fc78b0600cd79014220aad1ee896932b4d245b07ddc33c367ad5489310aa9ff6f66fdcb24531ed6cd0a46a92fbe9a8df8ccbbf893573cefd708ea9f735b9828f0ca3fe780404fda68f8153a8530f81f5616ed8581bd4ae650ecf8bcaba6b6a1188c1700987d879a9bc22ead8f275c8cf22f998d12b524be90374f3dbc292c1d8ccc3c786a4516f1930488140979527e1ea8abb0217c4959fbd0963efdad7c2bd3c0c651154c5c09de547f2a408bd6e8e045b982f01e4ec30701d87841d5cef9bf666e51504c28cd0634f369be54b02f6851c4d63192f9d9794af44eadf3cdb88985a8b1d073f90ad7e0f0cce79195696fd71ccdec5c3328d85600fa79337a1e9162961568b3be00d0b3630fb8e1e9c66f503e2c0f12c4271d258a15c3067e0328b24dfb2802c52b9011a9bec1f90834c016a24f0b65dd5cfbacb284d9015a6f418039e55f348258ac25f138d4300e178702d9aa6639f2339426c75a32b984494adffcc78a141c258026bd18b661236590eb00a1995633db766acebb7aacba7adee03aa787dcd922c3872215a7e582712a45a5ee3a3a4a09fea37a0e710a63fa5a4a025329177ddf719a36c53d6b96424c9ce784d33b0305c2c1d4ed6298a6f450fb0b33511f0a715846860aa89460a434eb97c9e1570f4c5f4472d580813591a3e6e4d1d389c5ab41dda49bd1e7d5a41796c5d01ae3ebe3b1ea8ecf9a061b95920f48007ba435955442669b5324dd6e4aeb0fd566a6f8f99e0cd336854ad54925ee356ee4531e43675bac438254edd9e887e76dd46fe5b0b549fa4ff018f9b0058ea387913c8655e70afe3bcd69626235012815a8866be3ce73a0dc945c3e0d96265e1fe60891551a8708fe89e67ef591fe02813d8aa1cb38650b05d3346fcc26dfc20710020809039cbbc12c739fdcc3148fdf40a89326520c85b849e77fc2c655cffabbfca21bcc4cbe12908bd719bbe215beb58dbf4cc7ff2741be59ab78e06fdf2f250f5ce4803745551860ebc28a2eaa4d3b18cf2d7cef692127d08e74ba87fa6764b8dafeb077a5594ac9c01fdd1fb63c7fee8ed4fcc3cfbb1532143980e8efc029d69be4738ade1f27d05f03f3a58c4dd683c2329aa76dc8eb948d9f852def413353a4dc79ddc7893a5fd6e3112c5b8fea7455d691f1e03985a5206d65e248a7abe304372d2ccbccdb5738b9e89175a69995b6edf09094a5551b907f8a813bd67cb6b1eb17c16324e10fa99f829101a1671d32c4e74519438f2e84985c4a1387f7df7bdd65a191156b0d807aca3d07ae9e58230402741230df904ee51383f5541010912df741815fd94850e6a6c6884bc283412609be42641d292651038bf3c1a1d1f7558e31bb43bbbc065e29efefa29fa40f73b8b2c983b07d84eab4d1174f9458c7b407d7dae5e35ff05e3874c3737aaf3c56d6f961e4d783b5e84e76b1fbce3a5593b6668e0a50df98092bd0f8bbf354d0316fe832c402cd7ad51ede1754610c08db67212861f68262e154723cdbcc5ad0c25745e8a387cb51f116f453f1e3dcbf4e3e84ba847485f234fd935ff5810e3d63b631776b87f172b4508c3d73852176e6007b57b450e24749f9e1ec39a5ce9245eb2ab2dc5c36352a954108f8553f0e557ec99f85b70b91437d97c3559ea98746b4509fc8a368e72912ff5bf275a792cfb805a143996a64d79dd3e0b813700a19b29347ccf051e9df3f4e5af024cf1d939d430ffae2bcf0fa899cfd6c4a3fcab7eccccb8bf9a2a6b4885c9cef44257c8a351347601bc933f7c12b09e395b934e779548fb422cd8c320cb76e2a356308b583b022cdd457011dc40b0a07190a83787c0d442246dec185a4033e1c4cc312f0ebfea2fe021311847784a7d4a806ec1c527608c605f8c11582a63a487292b2f0ec647cf30c873c93b6318213fe8f81bf46d96af3aa0f1b02a740ffb950ee81b56fdc13a70334cf0421e44f0ff49c1b09abc670cdc1116e215e3a89226ecb702b756d6984d860b61499aca62177371e4b0a23c66b0224e326b987deeb2db255dbb1bfe2aefcde653e1bd5264b1d9a1ba512d4e2fbb51dfde8d3f30d96a0b583f96d75a1e2291d05dc8ad4bdce0fa7cb48cc6729b9f29979d693a24ff444c5e3e656d1db3e6035a340a2180dfe1053140e82fb0b3205917bb0b64079678d16ab1f9fcd542e0f2a275a46c363aba7d89d0882d061f32cb051602945ac80c33f1bd71b30628d7629102a68a9d540aa5213a85088af5cadcadf211721738460a123fac603ba01290e011228f0cff1104a03b7ecc4d4cb4b420c6dadab808dc9e7490123255e84ab620d689fba95347719a05cc5b1cfb2ccd33e6d831db0252d820f95dc1bd5a9e59032e79b00e59d7fa084065e1d87c8830f0cf33e8c5ab9d6073d9eb614888c7c5b93f745dbce9b49313ee181f3a54da6083a6af18c1a6e1131d92319ab70fe56192aef631c6c534fa48be91d66c9934ccb988e6931ea16b491133a6b07dfd393fa025f70041b8caa5bd276dda3c453f615e400cb3d4518dd79c38a4c162c8f2628b9f042bc040dd44b99ee1a52f9ce2116d7c84e3780bc5af73b077d34f681cd6a9827cb2fbd5e22dd095e01153fe7851ea17b3db6b93101574b7c86ebda8616bc7c0281ab15b269e1d419bf7add0f6d06a2d0e5b5c62027f7260b3fc009c135590093223f545f9531453b830a8d7140dc80f45107101e6e053132a5075ac3ce555f5a5658a12083c0fa9c3e6703ae0a892b1b8745a564af7bf248958fbeb3f1de221b034c4d5fe501027cb36c5101fee27cbc91c0263e4ab5b4fc93787aa5c458ea09fd8f68df071668919756e984c738f729173c5886d4fe56b42b0995891d4e00bf8a661698b9e761ee0a8205c4df947ea1cad824e55380078eee87febf65b08ece56bd0818f6a8cbafc11a0d4f17c759fb3078f6fb7148e4b0dc256f94e1e476989b61334b75dbf9a109da4c1d07da3dc4bc960e9413c512a53969f2f4536726cacfb2abb694af43e3f5e9c36ea8488c7b950aa998dc60b248821ab921da98adfbfbbf9aa16ad6156f904c2f6d023d236590c9f8c3e35df07b5a29bbc3c1c5d539ef5d114fc605a8b27e98368149b828b476113b2aa0df24cf6886fb2641afec980542076e853cb09a2e8f3c241d70239c279ac651b5cfbed127459978c1b19f31b728e97aa0ac5d6481f89162fac3f56e8ac1b23fbfdff49814af6c5738d7d38d158e8a45ffc30f0b160c6e032851d126b11b03c6390aa451627be43230b2e2bd7c3f5a7f7ece5eb46a49841b905014648c4d5163ec80e3780b45466ed3b6a4633d435f5a7d5676f8608326ea91ca4117b058715121b2fa42ed509f9c348cc39fb8720924073266c0a2669cfda8a1dee3601e34e6ce688b2eddd7aea6979392ceb8e9ca4c76fcacd171409e7aa46d77850c009f81426b92c4ac67d60b9e94666bf1923b54983913a7962241063dcb22b2a64c32b10459ae9fbf1eeca9706446719931c22a31ad6d1fc29ce9ace793c1f2a1f26a48533a95edd974918b03b6add34fe4cdf3d7a127b0a5e6d0c668db20a99ce7762171125c9565007008bdd111d7434335aac4de3b37fe228cad0353fb8731119d808c1cd7ed0493e5d4f7df69ec4ed885338d377a935805d5a031878f24ab51b601f0f062cdc4372d208d97b81dd6efd1942f575c08136ff16887721f2eabbbfa51dcc5f84a20d7fa12285122b595b7022d7160b5130436273fbdfbdd345543eda413b35dfe132f9859c57a3631c75160ec0e95e962e7c63779a941b3d614c0c2305ed68cce354adc60bc6fffd0b06433eb503dbd13bd0b10532b0581eb59d78c0255716075175741d6902a944b5c4db9fc959828acc6ea4f5f4e14f4115c1767723e62a3e3e3d13e9917879aa8a1bfb99c6ffa15910d6a4829cc379c623d89d28a0c226abdbd5094d8c6def76ecaf92898c8e233c1c23cface19727e6fded45be7f624084080cc3ea0ba2a2e08670348f27662a2622e292dec887f5c3bece05ff3d4ec452dd9b44b861e2eb667293cfc4b733b7f8fcdc99dceb139fe56e967b7c40a63416f3633e2cb31cdbf8980f4eb74a9d04b0dcf0e7f6ae2f3e46c93a2eeaffbf9f002dd0b99458aa3f820a16adb5e183f9e41fd48b9d55360e7eda5691684c634f85cad65f42721f954cf24540e699e0d6c324aa6c1f9c5f172f41c75499ff927bed3b04a2a64978f4cd2c01ceaf1fbce867fcf86896fe5ff13b75f89135973de3fd7b3cc2d75da8d88b1174b692662c6f0bd702262dfe1c5c27d68e13cfbc8f79c2ac7f8451d047da6d60c0389f73675aebc77701163f458b5136262e6882f2ae16883efe0c762d2854412e0efe2b841e978cc0b6f5c8421a312b8ff8562abe2c4c77567d574fc43ffd289533cfca723a3ea9248c7fdf00a9b005f34ec807d0d024b69af58ec7d55587eabbfc144d420f164c34a54e09df6537111f2285c68210d850513030d5b22bc4ac78df06915946d3a497b2466f70711050fbc8415d343fd39eb66f6b27c65eadeef9e1a76047d7985ff8c0d60df6c9435d6f7a0b0c0534caee1baf47be214d4deade18cac0db3439bee9a66884276087572373cfec7b8a480b98d30dc18d8c882cbd44e77fd54bfcb005296ee33a3836791183297add71d7305ec6408f4ba6f4026f08b7c0d0eff7950695fa25677721e85db1959d26f1648e87d2600d3a9b4602512249fd45f2ad5b89120244cd4f202a21f47164ac47ec17b05fd876643dae535c05caa1c0a248e7d5b104e5d6475b5284b8a94a99de6e33952f99087aac75c609ad0848948aeee9a51d14f93e6f3985fbd8e2c45c48b052a7cf11fc2162772fe556a1fe2c25e11519337cf20af8b2852abd3a778e167d8c50842c8f0d007325a0504deb2e7dcab8cadabf2102858a5c6fd1f436e45bd8e274689717797b4da9423d086086c17584764602ae08b1c7331fb6039e77b211136c9e4b741d5cc9de19b63349e973571af9d95b216568538f3e402b3dfaa850958842f3f12cf540e2598c8229269ac7df19fa493c1eae10c183e6be01345e6f20de6e8a1105aa33a2d4bc9fe8a09a8ac53b81a7d24a8aca66bf719ce82d8f36f32368853dd3180ffbf46e92f2816cc7ad03eefd5d19e095f53b1a50ac64d1d2e0146cc90d5a4e9773d2505ab4fc64f1b51ce97df6d1209347a0d5ac562008823b54cd279851ea9254a8b402061142ddd38153748cb62414de7066e80cd081ade463b63c2afe9baa97f20360967e21f7b4b62cafc920c880265269db654dc70c561dac2a6699e338580937de0062c750e3aebfae6b520c7f95697d9c0079f91fb993831801370b307849f236dc11ee28352853d1077a14d29895c04352cf431b34004a852e05eee4cbff5ebc970ee85c387969a05cfb0dfce42977cdee44d34a3d2620fea280116fd7b223812994fd955bd5286ed579d4dd22c7b07f5ff457f093f2cc74b8c903401e05d097c4c4473b2f5dbaa88bb0907aa3487a9e298ac72f2457051387542dd9b6c4ace4983a3675125ccda14d938281c8ea9f3f6e784d2fccda66362afa1a605454853e25d0ad2c94596802fa16e6047ec7077a47c9d96928ee1df5da1f1e9d20c919a94287d187eee3d933b574687e4eaf1f0326d4e40895228bec9fbf3e0466961b9033ad6e5de01a2afde9f0655911cdee78e3ad86ebd011a2915ed980769bc93e9a5d7f2ec34479b85f7b8cd0c70f5269d431fd90499879aef58662d9208496c16aa2c28339c32f2e5e6ad57f3aa8c8920715ee9328b5144251269894354d3f331992581b3f04ad4213b9c8f2429e70ceb4c131752118bf060f1518407930cc428046826af2c8bd4622aed42aa06ec24a48fd20c08210592c2523f42bb257b126afcc85708f6300a790b983d19336d6a3d99d272a8c6d051deacda00f253f874ee272e22e9c52cf944e88e89917748fbb8cf23a68a50145026f8547df3245382a0148d621ca509277a587e8c977b92352590b3184ca8481d8af0c9633a7c27c9a7b05cf17a0c263f7ef98af32febac6734782eb8879f385fb756654eef8970ddea732f2dccb7e77ab1ca9a113145a49fd39d3c07f3287594a6d50b6c3ace53c06ac9d8dfa35609d78469999e5e995333a338dba55c69a48feadcf2d48c3e72b3677a1a357497a8c35c19991f16ea6405757a96ecde517403de7df23d015a59b468045c2c34eb26ba054e5fadc9c86497e42c6c24a94e83e4af8420e09333704905707b71d71b7e0f3afe016c0f39c6e9b611396c7d7a458c5ac799a3ab8f0d78f131e7fdabdecfafcda7b12120e4bd41525ee0a335a0124fb1c80d5d0ea8a4f2195bdee285becd0c826570ccb0d848e81654fa81f79ae734a391130d3bbeea3d96c0382843300c8f36bc79d3555e55b26667db39ff20eb40d6db43fd1d75b10b6b7f59285f3294a499f300042c87e634b85eb9744bcf55303e508073b6a1b024972d9a62938bcb1772ac84a400f1f3d9e7ef6470decf68b4921171b14430d14894371d33fa1b598ad8c534d31e1040262849ac69fc85967403f6bfdc58359089ce62ce5b73fcd4e41eb188c77e6e83e7e223db2989a7e187e158faaba3fc8ac89bf9f6554781ba11af2caafc584f2ac870237155d75687499a90241f4a10f1593aec0fa57972ce17a43e214f3d527470d419a423a5da8fd9f12482d932423c3ada70841962549653f9cd8ff11147fee39b1cb2cb51f4360545279b99b0b5d74a774f0d280ba50c0350359ab9531315031ba98ebace590040d4b88b171f2c695db9ad217c2aa7384deb02ca3eca1233fc4346e6389a7e3c8deb2ecd3881ad150d3ddc520c9eff74ba2ce160fd7b87e139391b0bbd3bef295d29aa8ff5ce62c74f4436ad1018535095df0b9e7326e060fbe9a51da6d4cf4cdc09589c418910e218a5cfdc16322f41f93c0305d71e3e12b4d2918a9a4d2809481b39edee3e0b1016609aad1e9a7a40a466d260a490cb0efc4b9560d5104269860a4b72f8e9a8713fc0b939376db79f4b76b9960b972a8d0adf774c480474ab1dddd909847ace84df81ac447bb127197e4b284263ee4e40d76215d0190796f6e3b7261681fa0bded6a91c0d35c68abb65e6d127dd634af1ed60d4e3d84d611dc9db2479a083aae1c6e5ddbe9b886269d9d025e5445f44c41cd8b6096c12e14aa0a38e8d9b67852b05a4b57631ad439e3c4a9689cf57f58a7e4684a75b3d2042c99d85dbee3ff322535ebd06ada0786007f79807ed7ea9d4e4da213e5e8571b4496a96f1f750246ee24ed428219c5e5f80aea95cfe9fc415f4a29b3644ceb54f7f328998064d30874d8697a55370c150586e20e21f86e004213329ecc9b81d06714703a1513dc5ccf2468d59f1ad6a392a62f57b468baad136bfba9a049c6b729ff6a7d04c36e04af560f9262064ea2488d89a8cf7926f62154af400e634edc015394ee7c4b1c99ef4f256e565afa97b678be8568780b78dd32bfac76a7a435d5334edda7102687e504f5dc5870a83c1b24ae837e29077322fa021094f5670b9b8725f648c308672a795a50cfc0182cb54105836d51e86fdd0f883a9312019b1a66a3708a3e9216cfc4e81fbbe465274ca5fb044bc49a4bb264b5f320fcfe63e5fa0962475b2f40423ab057ccf3cc44b07850b8a2f9245471cfcf0f78a6d97a198153f40d11295ef2637669a1974d95f1b6dfc5d488acef79f25e0b079356bdb0569d9df9139af5fd30749bf975092849699c4829c255d31b629604df9293004e8534f7c46297059a89a6ca61dca7c14d0c7d3a9341c1e66cea5f1129d6e69a05a400963cd554ee43534e2b1473003e82c09237e651c024381ead16cc15d63fca4e6fcc71795f702e4a3739df985fbeb92d009b8ad7c65d0bbd4627f58fd7a946f1fe6ff02681897e951d904651aa2c6cc6df814549179cb0823cc0344c7de49b7ad2c0db0ce8ec1d978934b0bea4c886c27e54898e02da7069ca9678b0ccab93c740e70fef8f01522ee00a26c7b57ba7da4c50f5992b62b401c57e8673861e507acb1b60e6ca9356a068a85338f12c3be94faa58c9a4e787456423c77674d9bf14822725caca176fb957f2779d88b1cf21d1e01d58f0364274d5efe6625b3814139c3e702730eda762af6bdf1995bb4bd98b4aa874385ada30331cc7976bf3a50ca627a13d95be5bb8f2b53366f829348579948f9de1307d610d9e997260a7703f7d06b052156fdba1cf052be7b23223415f15b78da08f602b4e62b45532a4a1ab12d3d6c067b41521f1daa264b60e7c6fb390a4a1bbece5fe8830fcc89971be43c7f794f73de771b983c05e2eb7e0c9fe4970a53b343b379179e4c1a41ac6cb4d01025df8fa1fc1220e576686af1b88e7876cdf072229ec6da36ead8f461675a05a55840ab2966f0897f9d791131b25a5b0a8adf5e4349515204a88118f00aacf1f3b125b8e4b26d5cbda337f9af0186bb5a08f27eb3d8c70af6fbb81273b8e0d9b261d314f6bf1eb3a6ae1174c8ca1d2b8197dc17002c8449618b105d60405b694cb4ba7886bed487b8672761c9f0f792e98e479dbe4dd3df6ffac727273d1fde13e8373dd7d0ac919fa0f61981095df3f2bec7220aa2f8e22dff2e50255b2485112c693672190ded8dcb46e92f271acc1e736d3d63191003aece2569c9d188b63ef00e5c99ebdc831ca917f02d4b655f71ba5b285efe5b8f2f6644038de8183db707269aeb4a9392c498710c080404c8e99f7350c12011d457a1d13b7db7186ba7a6219b766b050b4b853798ef9bc728e9048f3c3d2be80b4714200af343c056c38ee00195d806ab029240f0b1bb697ff015917395262475a8ee43c7f2bc64e69c0479c72aa798ee70172697b61f27aca9b18e149fb5c5afc95177f8106c1fa10bdf60fb5e651def1b0ce64fa0fe5ef03947e9b1372266d2164240e62e7b0b3bb1a0132af75313f75eb8909ce8333355e542dc627693b28a060e7cf657c3cb43fc9d78d2a8ea5ac89d515a08e13cb05e1dee0230f536d985ccaefd6c3c6e50c1522ff575046e310f0629faf94db39bd2e540855be8a73ee44b955f2b757348e52993402caea0ac9a82b68a5489dbc5c54a6a251e13fb4dc65eb7b786be06b40149b38160b0fe20172e9475a55d67115664a9ac0732a0fd9914b15b1f507634a658bdec8cfbc5727492ee27be613baaf50a48acbac2fb197cfc7a24e61c720d08b0bea10896d15235c28b7772f31de60db83fc1d7203b81eb6007d23ad5ab8fded815ccd915f0b1f2e711814f588ef22dc46013ece85e383cfb83b12fa0ab8e306e39dc2686c055b396e255db22300a87607296e51648221093917c4644ac628e4246120e6e0293fa78ed6c962e27facbe307138381a272fba798792492ead296e2221df76fd276a91c86a69ac9cfc6c70da99ab5886ba7dc4ccb1a884cdabbd60d360eadf164e7cd82db1f4dde7d041d2c8df0526b728275128a0a4d583b3c1cc1ab7f1cbf24b93094e7acd846a25516d2f8c5fa7a5cffcba80f4bea867d135dfc7838f116f3d3e9e7d6fc48525ef0d6fc23a264bfe4cf9a0afdd31b9357e62ed6c2759a345c58de7b53856c8a8357a34af490f97c3add3f52365731d45b4f1fa629902804f7b80ed27813b303d3a013ae2f7e268dfc8dbfdf06fdd6aaf41c992d70a0e6486b72937e4160041f013a2eaa589ae333eac2fab08fd57f54e8f90241db17e960ceef047f4742278397dc9f666230cab0b6f1b5569bb2690dcc5cd02e7edb95269690dc924e96a3d23e5d79df19e1a6275c6721881356b050ed8b16df9bf57b51b3f5d87eb5d05312900839ba080e6225bb781f9d61ccc860b701b1f17b36548074b7c6683f30b9697033f06011b10654caedf6d58a0f177b05fa42dd64fcad4482d2dbfcb959102efb025750fb5211c596c72d7872482322ec3c4c4af4013276a073ab0cc92c1b35c172cf1dc5ca15c2c84bd2bba33d3d7559a3a10e90e5a7c112941f02febeac7141eb5274c0f1697180ea4b5ef34d7054e119ac954631983269428e312fa1f7b47eb7dc5348e310e4f4c3a1aae9009ca4bc69264ceee945f91c37fa9282f721e60aeca9d7b66ad89c21ece2a99824b438e03b1d948d505a2915f64a1af04aa9995d9843530fa3f21080ad51191ea479846a4b13ac284030300ee86061f222ee7dad9855433259cefb562074cc6d971863b46d01efbf1c5dbee7c5dd22196bec5c9b6e9443570bc83a8fe7b85a2042fd21c44f5ff28d94418623564b66cf3d57b00ecb04b23128b2806471c3a4c986c66c9a3c83891871a47184643b1f9b7fd7b941a9ae8b3a0f50256d241f9d3098abbe52d6ee6d6610e982892bbb0e18350398086b705f22aa98415242f7f8ee63e99f2796878d61c8f11602f8da607b30cda4d6d6605cb71af115d042ea3ce58f2800975832cf402873519962cf3de6ea6f91419ef03587f01fef2936e2e1c71c17cc2a3c92cdf9139c2254b60ed1cf38c00a92a894424928191c05ceffa3c7ddf66410504a348e2ae6237e7d8d831869672449ce14991c2aeda8e49be75db59b7c89f468a0cdfd13b85109f89cab73a11bb6f71f5baa35c76714b48924951e9b9b71de0437ee19742333fdc0ed1a4d3db64de88325cad8d2c1a992ddacc386ab95ec7342e7d14292cab8eac5648ac0395dc0b067ebd0893c9f400058aab52dd5f655882bdacc4adb4f8d54644a47d919a5551f9843c6fcd27b2d0f73655b33395f3d2ada3d9a3e4bf0d74e782b5621016d24b7dd45591dec4aef38795154ca9dfce15e2603e2376340d3b77fad375929a73c316713aa6a8c6b78808a3f9e4f74e1edd0fba8b1a1c4efad9eae22e1b7435d2099a507e70a174091833863660bd8060fef99d70d3f87dbce2f6d581c7d52af044b233ec2119996684a6701a73bde49f558d988b76e1250e3b8c41a403bc978766fdc97ec308195c09a8e06cd7f24e5a2d6ecf0089bc8bc45277fd3a2832aa7e25f276ecfdb0d76c36f84d165400acb53bd582ddd36837b6900bcdaba8d1dbafbe1d9ae84af7bad6eeeb6b97d8e18414ed9f7204f7e80c7d78851362c7ac8c7d71e629ffd822f981c8103c18ef58606316998ae02e77f33019905b15c4afe481029ad0e95d5e40125a4d07931db9f2a1e2845b59e9d3578305ca59580d49e967c03a66d9f153d1018e182f7d3652cf65aa93e55ee9e6161cfa61714e90b940eb678ed831ddb35b0a72e0204d1dea8426f86a2f313db1787c6b216defbda594524a99a40c730595059b05bfbd164a996555a56dcbeb3fb5fca6b5b52d9ccac3713f4ca9debb1a2aaf52a301f337dbb180434ea9d102ea5b581ef55b8bc7d2e28532b664f95ee2b81faa7ee5a3d35ff170e67b40078df9cdf9ede85e45f59acacb9f9281fa621cf4efb84fc7058df99be682037f44e667c3fc1d4fff7edefc5e9838720a8d22ec37c5f6b7c064f9fca0845166813943e77cba63eed03b660581ebb820701df2a294f8bc5e40385f7c6fce19679cf3e39c73ce39e78bf30be78bf3cd38e357c63ef9de9c73ce39e79c73ce39e78cf3bd37e79c5f39e79b73ce39e7ec7371c69eef9b83e49b7d5ef8e69bf3cdd89bfb5e1faae17bc227fcb92bdf1ce4de7befbdf8668cefcd39dfec7371ce1f13be39fbe4fcf762fcf773bef96657f6c937e77c73c619e39c71c6f9de1b24e77c6fce39e78b73be39679c6fce38e79b73c6f9de7cf3cd37e39c6fce19e79b73ce193fb145178cb55eadfea59c73cef9337c4a98f9df8039633f4a33c6f8a3ad0fdcf46b4be6541ae38bac124699fcdcf77bdfef3be7838dd40992bba767c6387b668fdc2f609a901e7aa4cd7d4faa62fbbf4042e7884386fc5a77839f7ea6b1bb819fe6f021ce443c4413b1fd6364f197b6c7f6c0b083b386a4413fddec01a2eb4f9857985250feebcd40c3dddebded0b29f62eccfdccdd9bffb79bf1a642be7893437448837a6054287737f79d0a5158acb971efec993372cea079b7136c46b8c98ae66356e0364349b6f1a77b8b72536a3b1b32b6e78bb53f699af6aefdd5f06b7ffa397f68a71e638cdf4fefa7d7528f5f4db60c13c2298b45ddab52a8d099666c329945a1334d21a03b79b6e564e0feefebf0d7d5f02973190c8000802e562d8f3d7045c59d89d29cbefbd4ab3ece19121ef51a091f38c23797708c281ac6f73d75194dbbf7b18b2fa445ab4f84296bf9b82fd45ae50b57a94f7f1fcbf7ad7c610c932af59d3301a0b391fa72c87dfaafbb397dfe42d4fb47171762700d21c9a697912bedc08e2613fdc1ef753570ec6ef49bc0654feef903ae5640a7253ae4dec2f6bbcb7b7cb67de7f1bebb218093d7e4e76b265a68e8080d3284de193dae075740b4cf2de33ff7ea351ec2c68f7d66caf0cb68e34c12c63eee382fee16279ab019345fd48790fa9c346fcaf6bfb3a13993d42ace145d5c88c135146b3cd6f8cb28d6f80eec28d630c59a1f12ba1a3e427773fa6d0033e9040e266b40eed92de118f347cda995d0d97077ddc0feb4410bf7adb93d0138ec39530ebcb526b0fbf04f1fae32f626903873261966b3c9349a47e6508bfd5984cacf48950fa791ebf99e4220ea0b2750f785f3c7e5e4993bdb3efec299b32dc6a80ff1a33ed4be1093d0d9e8defff4fe05e0b00fb9cb87dc25930a908f6cfb3372a79d50281ba70370d79b7b0613131313d39c5ffc12ba1bed9d84ee86f651d7ece99eeee72ea62f052efa0a8ca1093117dff37d2ca54ccab29673ce52cbafe58b5d46f3627437dadf2f876441fb5c1aaf34e8a206e062d3b66f80ce868c4d8383f667a0d268dbe83c06e0344fbee41019e425817e4563f992af978cbd90480edab7bfdd57510f1313d3fc50fb39975e74364e1ffef0d4bcb97740aa69122c7aa2154c07512667d977bd5afd83b47bfcf943da84faf207a3b371bf1c72771ffe17dd0d7eedcbe19fa7ece4e9f023c258e77196fd29c353164ed94ac770b9cb887e1832fea84bc33d3a9cb2982d1f4f6aa9d1b6d65a4b7fb6c558ebd5eac398ed42ac710d4924d9f4722357da81cda3e8126b5c84eee6f41335bf93d27e4b88fa7bfa2d054ee33863ceb82b82df0c142c72b934207428a72cf5dda37e934ab7a5bbc1efcf227399fbf665925462f157d1546badfda63cd722bed8ef3c174284b17ff2dce52e97bb4edf7de8dfa93a1bfee59059fbf859032dccad7dce145fecb730b77ff2155f6c2d5201547ad90a49c7029ee6a343cb73aab109e7b8dd89b22b13149ce4ba2eed5a8f521f56a45d3fd6ea8a1d9119cd700dabab5593c3fe116dea8e84b90eebb47598d675164d567dfb9bca3ba53cd5670f85bdfc9b479ff3f04fcf7ab1299bc5422ab46393553f169b335336a32deada9136f447c2d49fd58fad39436574f6236d684cc2d497b57675c57e76fd17e64cad2d0993cd399b452e62ab6fe50bf1ea55544663d2661e9130f565b15d5d29866b9992928bb75c32b60fd1c4a040813056f1504fbdedab6bcefaf5e784b9e60b879cb2f21ba5299c4a619bc2a98f099083f475a552ace95ed7af23f0a45d798833b2a54394b1d2c693244c7dd963c44564572076cd8920fd95277522484f9e0522481fe5512082f4559e0b11a49f3d054490c6a0e7cc0268228b7e938eb2233daae0ca873d9708d24f796004e96f1e8e207d7bc28a8bac790405d7bf765d815906d8a796a63e949b7aa99ca92a45318c940723b5a55448c5c48d42ac497dfd14a28a2e7144e4041697d0a05d3f4cc0aea954ea552dc47d7f93c9245985e7c82d6416567c286531d6e8d4abbe760ca836528ffa505f4a555df7c321b7aa1e71b07e78a5b441ac81e17eea43a97ad45f4fdfa45e957a95ea7a0e437929cf9118d22f8ed0a194c55d5f26c57ac465220e19768c2fdedd48d5a74a0d2d51045110302041aafb3864d8fa43144aa57a89fa23a4fd3b2e3922daa929b01db78e29ae2da26cd5dfd98fea318c1baa4f7dea55b2aba1fd9651ded5d06afd17da6f1b27bb1654366e7723f52e1bf5c1b0e15bf5392aa063c7adfac22d73a8ea9aa1baecd46f1ad7a51ef5d59fd4575da7253af5587b91729d27370d74df4721d6f8ae4842b6bb917a9a7afaf23ed5808eed30d5d5b1c3fa5e443f3a69644b054f4a617b6b0607b5d6df4ea9c80418f3607539ab46870df94ca4515fcab0567da1099d16848e3b7498c36a5dc253bfd6241753a4a0d8b53ad9b5d6ea6212da55ce8076ad3fa99a8af145cae48e3559df7f59facad93b65afcb1e07dbb2a7652f670f67ef66cf66afe69ce5de56b8e832d104d94bb172223611efbd08889146a56361b2702c2c5b14da35e9a1ac8e741398114c051a29c3587b9c755659546d2a1ae61dd217fd289083f5e9eb05121dba52486554166bf4d777255c7d47bbe8a6fab2765f39ea031eec3a933073c66193551f63985ec1a4146d704726a4f4ec2d7a8c929e84e8591f833a664553445fb9a69e3efd90be28d08fc8aaef8383e822434a4ba0e5b13b36a7298a0c7c9a98556743c6ee5ee6441f7250e5551e26bbbe843571188e022e7dd20acaaef568d75a0482ffab95aebf694268771850ad2febd31705a241b126d79754e420cebc3059378852266d6a4bc2d48f4c536641d8f50a95eabbcf80fbaaab42fda642a9acaca8502ad4cf701834e5c1a09fa2aa9d5d7f862a63abb2cb1d714684af2f5b3227d6d0af2e23b47cc812763b94adca135feaab3c11beba4364d56f6199edda49a5b0ba2493cb9e5f28a784aacfbfa196f469055aeeb0baeaab66d0aff2dbf4563e7bf547e5ad3cf57275ad7cd5e56075d92a1e0e19b6ea4f4b347d5bbfba2a4fac89bbbeca0b5372cb1cfaa91bf453f453a98f5dca83e1f434c80de386cbeebe7bed5f98b5256d6484a15f69a595d6d6ae1ff18bd0b530f78a8b99186bbd5acd7f13b6fdd0841d554fbdd4abbc903e4edaa92f7489c1456feda1b6a43ff1053f6a6befc474dadaeb8ebaad3d0ec66ded6d7367dbdad394b4adbd6c94b7f6b0bff0d6de6dba5b7b16c96eedd5a1bab547a54b7b3386f8827f86bb105fb0f67c4797f8829f4aedc58dfa28c7e94c4311b07d4567d2a65b811aa3aaec58c01fdd6070d6bef494a1063eae18a54bfea05516c1bbba1ca4aff168f98531f6e7877136f3375b71cea2bf4d3953311cacd2b580d05f74081db02d3f6e18b60755ff38ee871b507d38e2944d84fbd053a9542a95ead362105aee18376fdba4b6c90fc7fd306b1f8e1b570a810817c567b8ef87c9777264d39639f3382867a072165fe4d4e9d1993373f6d3c59af8f2a94facb92f3ffa6fb7fb2ddfbbddf741ceee5317a53b73c841f9852e59cec073c8b7973a273c4c4ea3701ed9d2c86b38939c39788283fac3a93375e6ce74491bff9130d2934c0eca4779b2c941995f7b0d7030fec95b8083d1841d4e13767e9df3cb99cba05ebe8c126b4e2fb57cbcf2857af52a13e642daa87c086e18eceeb557894e76f72ebc25bbfb550276f722a4b0bb6f79d9dd733276f7f25522c895085e74568bd7b1ba4779af03b6bbdfbc9e64c86d2979e2479aa8428c2166ce4c20b2a6cc59f9b3c4e8aa2ff58128ffe8c5f8c245b9a3bf78fa42d97259c5d82e577c73ad63c0e69b775d44a1bccb9d04e20bb54fff048f7330cc9bbe9cd235606fee75cf71ee75dfcdc51202bbfbb087c3bd0774d0e036cedb413f2fecc003b8cfbdbbc13fc3bdf99a17ce275b7e9eedd041c372ef3f3d971d292c83405e2be30922431021320491218810e9218288214b1e953a7964d7f8f1fb8d7e60bfe0608db5002ccf05cb4acb4977a9adc5937b4671a2232e83e34e9932658a17c59a3879b68a8a7f3855f555a6152a2a2a338bb985a63b280e94276ff52dcb6f590b6d3994d7e2cdbd65ee729b57633ebe187b72ceb9d2a27d879f8391e258bcb8e5c07b8584953b5b8ec20e274d0972c9c17945f7f5dd8a68d33d4bac59f98a2b6ee99f5f6b8415aec63dcdb7259ca0ec4a345bb8242422abbecca588b913de843311c3899ca812b5b0b060acb5fbdc9c2751dedc27ec517e5c6922cd7dfa9e07a7925ee9795dc6b6966b5dcc964fcaba2f944af28a5dffde89e7e340edf99d5ee523aa55365bb612b89fd395744ccb84ae74a7d2449a4875824c1e6915d34c886293c5f7fc5c7433484b1dd454568a35f8ab8b1d7ad0ca17b4eb7b6b666ff942efeaa330bef6b3cf72ea6ef0cfbf77d25ce92d6fc9184b2c168bbd38810e2792ca5795bf9f8a8a8aca44fa181ce7496cb4ebd719b4ebd726304c34838830f55b3c5f2202b4ebb3d06411593586ae34779838ace60edf42c662d589280a5349c6f33b2b9ae3444d53c967b146e29033dddde09f2e63bf4e547703fffceb4a1363ad57abff99b37ddc26f7c9a38083f55b3c8af2627cb94064d597ae1030110216736f30e8be55763d4f22be201161eaaf784e145fea11675509c5d1aac9ae46bbca296415b2e926fffc6d7e2aa53dead4ddaca4f267195b798d92421e39d1f7c2411ab6222a6291b198f69b6f3debc7cc195722b2eaaf56582fc14e3414bbbe4f11f32419ecfadeb1a07f3eee545ef5dbf4f26f92ebba96adebba4f7d6ee17077a37db7c1b8d1c170fa9cc8c1da75aff26284394d4e7326fc48e7445ed4f2794c46c217ca185d0b307250eeedd3c781daf4d37fbb1bfc5c77937afae590bbe50be79f7ec684d1d5c831ba16f207c3fdfc309cbea9e4607d1aa4dc2cde8a8a2789e69f7ed3a970623197bc50f29ca40f0d7afbb0eb4fa539430167d5e7e62cca546a6a519dbdbd4f19bf9e5e70b0fee6d5681f0bf9a3416efcd4aa2403826c754e2421aa559e2d6a3eda35030db8bee89d77ce39e99c93c3b6d59a18cf5a43ac09d1b686589343db96b4f1afb68975823fb42f97891b689fba1bfbf43b7ac33eb5387106df6075a8731251dcc3535d45f4fc6b5b2eb3e432b3b65ef4e0dfaaff74de336d6b06d55964bfe8eb27d00c8a35b655ab75ed8abf9066ffebee77b39a96b1bd2ed40f223d43880c9132fad30fcb78fd50ce7b3f5aa57d0d21e9a758398931345b8504c49998c9aa6f63eecd5b9463c1ae55c68e2374315be5a6bc36cc8e4c4889ed2d73396f4b32c9c11726ab49a471b95cae25a90399545dd575eda4af6ba74cf21db92465b2494a2d082d772825acc2fc8589347195c5544daa4ba83524a3f83d0af368110a046a42ba0aab355689c419da9aac56f521ced05887fcb05d9ccc86f52af5c12e05f299e9e243da64f5a2479e76fa69dd0f1933ba82088673021ba2a40026c49213642184190c7a0819a201c183ce122c40903ffc084235c25a6bad4de23b244c90c490202191bd8f18fc307bc4e0a804af5d7befbdf7d6c0355911eb955ed17a6ad7de7bef5562a72ac15395f8a94a00fdbdf75e7befbdf7f618ca9928fbc05a1b440ce7f20fbecb3f35a287cc51e16ed8412787a0d8141f4420f90b80ccf44aaf684d7de800c4d20d5186545104c7498c8db28629e391fdc8806442b2a1182903269315b18e0380f0f08468091b84184113244bf8701da881892690ec7074448ebbe009104f88a09b114076aa029e08ca9b0dda080a1e4b6f48d21a02a8841e84b0e10a21914613b31e15582ad281942da0ec80871644e16406d856ab15d1e3acf8ca348a085a596bad5dca4abc5c3f7d68d2eebdf70728fbea22524870838f20a4211029813761c40f3f62131112a51b845c331f26e00e25f0f18410a913e3ae56abf523c7245b00e96cda63d48414279a47d6021d66e0c2a1870f1a9705528430c506dc839de2adb5d6da1f4c9c156348347ec81efbb0821c1dd8806db5d65a2ba4335911536bade519fa1e74a4c0a88a1c294376f4f8f1253b30cf794d56c4010040902254a55028708af8fac4e8499327472babed745aa4849924b2848705ab98b8c20a2bd4156724e9c177f9c74018c17a60afbc0406847d5f40a1c0a010412982c2044a6c5a1ccb832501a642c85971e888515600154d72b6464b4738e88989d172bdd65a9b24c85911868974d18a89b392c49c75af567d6c9144911cb4100229c8ec09949c73ced95a6badb543648f27413032f4315e9bb0b5d65a6b715c19a727e3bc324e50c68181a911c40076e405484c72c8624912205aec4c9f9714070cf8d8a207254720ed008909aa831345144df0a009114966e045498a66ff859a629fc13428a554879452042989a3a54c6705994b5f254e7d342b7a5c3e08f1233d1cce4a098c052678a9e3276705454881a3850a962c51031965100551901d28b0d0011247b2298d9eb7d58586aad0912a6454859a54a12350bfd312785608ed7044cce9f6b877680997c60308d21651e94f15d65a6b2d8e018038e28621b28fd128b6b4efe57824551148c1c2c889264e5db95e234046848c0c193962c4e8de7befcd39e79c7bb892d7aebdf7debb42d2ab562dfbb857c9131b4c253b7ca09ffa88b9dccf83eff2af97e0dca39e243f5418d141c7250415e4003f48c2e76888b5d6e2e092238220279d0a244a09c28a295424f13304091a56092a94187141f9172a384fe8955ed11af74092c50e3b2012b48226703812244345973046bb7795ffd696b3a20e76e91e67c51dae681479392b5acd73f177f0de7befadb5d65c79d81f7090efbdf7c61aec123c6c7befbdf5f640a274a3fc5dd1ae267aa557b4b637b8d0030a211bf478c2073c4882070aa8685992414660c54f7a7760a1577a456b2a020a480932cb0112b026295440448e115aeb97930677ea3082043594a02948143b3082c48e293c6ae872620d78fc10021ed488c58951183d71c28912ea23c5c3c5739d44a4bda15aadd60d34c2958cf6ae21ed988406b07d6f44da35072c24c91420da4e049e44618513a32348d003a21e52aac03b034802450f473ff80968bed46556eebdf7d21c62132f08e24710604eb44088237296e4102f0e3a8630018f12266ce041064e18b1640753122457fc5b6a29fd39839f7efc9edaebba1707b02a78b47e888c80078d9b827d9300e1615f1e38d8f73f7e31350715ae66087a262beebcb26d0f6ba4454f92a317cc608b2e368c31436958dfd65a4b2f0e1958428723968eb061ca101a7628e767db0f1fe9b8e953171224b99518e10933349315a1f8a44e135f680c0e46b9810f020e462c98e4c7b881c8a22f297d0f74c065d3a7cf8168e32261e8d3df00138e34b1666e3a9fca5d317d171a804dab7c59a12055ca1366a0d2e2f8626dcc09a0c553021370d0bef6830ef1cb25835ca6ba74570f0c51c470816803010963dfbe05620dd62b6b69b027696ca4d8f26d4c5a9fc1961fc628b68dfb4ac0043e45b2b8777b2a81999cc51a29735fba90c422dac81df9831865e63931298c5022522867331e9fd9c064c93fa110bf305ae12a2fcc1b6794b9efbefd83004cfc42b9a5cb41f9469ccbed5bbcf78007562b39fb20e0a064f2c92207fd433993cec5ccb3e56fdb27677908aa33f3cbfc6ad19d8ec725dd21a23cb96f4485b35995256d731643af7050de05b6e25bd47119dff2e36c460d0aa15f18a1ef671fe850ba60133687660c06bbde0b22ed1f7748e90d985ea8242df8453565686800000000b31500003810088604c3018992a67168f30114800b728846745c3e1287c3510ac3308821c60040000000000008008640e4ccd500e28fc228613d5ecb05a8318a74844ba73b26fb3148b0a705e1b896c2b64740acb2da2f49e42569846dcda5efacc1ef4d19a1f42c8283039c24ab7dc1585b881f508ba3171c791752abf8656c981f2326c03921821358b713a9d740c32dc83c7add25ae82aca32943658f6788c5571e72f20bce2289ada9919e90311733dd320a0bae7e64153f43375b2a23e21f3759fa864987231a8a8900ce71a6b3fd0cfd23490e5266fa7dd07585780c0b022208c427113358a99b97ef781050cb854562355967ec425492ac09bb2890cd6a007fcb6139e13532ebbb95e011d77104ea41b73c3106504c979091d0306bd88a691c09bad8bd162d6ce904ab962a75a0300d9b35720ddc8fa1853c7d34c2b0d7be38102e32d046170f72dbd08018c16e0b33021e9c49daa8871d13326e2df754419ead896b5222d2986db30a28818d135f4b00ddb5b97815554609b5b59480ba04aa0c8a2d4ec166d7b5d139a8a89fdb662291b8b2148dfc46dc98068f70b84939742bae8a45b5aa77d824f9ae5a0912085916674fbbd348c83dad9bda7e6dcacf7a3b96f27fc91f46a782be543ceb639e013ffdd51d7ea93bc2141fbb2323ad9b30a62661c2d442a1cc7e8553abaa01f550774e92596b3a80f7b5a7ff21ae369bb5d224e05898f6851a24ea80ef3a8cfed658833e764f4cf6a71029b2a4277459c13f31b9cc27dafe904d04c34af524576d18b425ad2692f6bab975bd95c48e1d691c48a51d37e4c35ade1a47bafe2d70c941fd59276e28d0cf16fd79a3129d5aac583f92aff660ec9b894e45a6c36d937b51dff5662b8f287c8a765946d67a1660ed845cc5a473252fed7810437e0eea87a47b261c716139df558cbda2f95d557480325523d86a878e5690d046f33620ba2e31cb17a65a0d6a04db91578569d2b8904b3771c5afbc8dcd34a216d7984000d409127ca1783645bb148324fb077118800a413628d25699d34024cfb9ac57c9134f6fd2384dba1ffbb7c1d5ce4aeb134c45d4e9ace8ef842673957ee29ccb46695a0c440226d295399abe7017e0adf1537b0d3e511c338c7529a1f33e796003580ee2ce2abfa06916047dc3af8918db23913b2a400556015e348b91236ae477c83ea991f7048fb0c7ed7d094647a9d48ac833d97bae6503b385b52ced6b7348a100b9530b02780af72bc1b1574384c0a7602ec6a0285832f218220f1e92f335ed0067d77c9e4936bd4216a199373914da9dda30c42b32f0efda1ca5a9d64bc050f5b9803844f737a496593502e22e0b7f88814d188f564c53b1206b259009e8f55cbcc4886650312554ec31bea70201d80fba3a0248e9ab56b0b9e3e3f3e772dda9ca6a49b029460f2239499da6091361bc5e7e3cb274d0bafe4f16a049d874206a399870c6ee944c4aaa87f4585e0805dc37f47212cd2e2bbc7ea544a4ad0a3a68ac04a374ad45e1345dbd44302dd4bdbc943b8a01d39a5969a9aa5c064734591a0d08d3680533aa852c36f3c10de1d5c125f47984ec844cb24dd20a9a40df264a3a491b469c91133715515289ef5bc5b3f03b3df50a2ae5535b52e9eb671fbdb6e20460c9d453c175554ac09fba0f74404ea0be86d981b279d82a624a3e2d8b220ed8a12ff434750e0df4ceefdcbac1e20d3b797f695806a137990a1a91f3701b7f737ff393f1cca371447472cc1f4c36cd876e62f50611e53cf8e31c9dfc7d92e4c5c8bec477fa55e04bb655ed534ede605c847eb274285bc2f2f159108a11d44f61c34fcee3e46d39c7e39d754d455778c9d19482b1f758813df2dc91da27347ce8c0fc935d915bce80096d34da18ff37a4e6aec05991c1bc57edeec1b1943413aad7314f6c5a1cfd68d89cffd9d685958ec7938b367cac8dd881ae4047210571dd8407210fef266bee2ad1f400d304d4589f0637c9e6f979c58e8d338ba409695916be709362574697a2bb2cd34f9c45af3d331731d5b9eab43b09e4822863447fcbaac4e78e208393a1c6ea4aa2292913455113e583567609f28309f9629055def6c78e1fac66ee6f35ed8e2bd76140952c5835a6c4818458a74fb5dbc5f670b908697b37b7cb96b5656bee0f6c43eb6c6456e25b436ef7c99293495b8c1cb2f4cbb6a582083d6ec19b07c9988b7503fbe02a6c51956d390e659c96d9cb79300a58a45eccae1a01ec5cfab34a1b41afe978a863910d319bb16a51b82d0e464bcbf4140e23d24ef325641190605092ab83353922f5b1e150284eea62adeb208a0f9bf34d6f04883c25582dd09b609c097228c6d6b68d3d39473e773812335ac8ca02f7aa538e5a6428fb40e5c7443d42db03544335690c13d0755a0b294f6e8dc89e3c3809190f83c514189371b4e003ae00e09af76a53e0154ac657a8e0c1d725bf0896b1b92b363d12200f278126b332a85ef2a7dae3a728148ff8c09a21f8a9631c3cd3b3997b094ae5267e9e86553c3b1c66a2e1e67872d41de9bb791319b89b12ce24b343014f069c1cc47e01e16480060b486eae5433744eb458b966ddf8af785f448a97f84a5d474b781073cb410e0a65ca959e954b368f81189968fa523db7804280b12421890e49f2ecc03b89fa8b958e62fdfc5715242c9d1806386117dd99546a652242e7a0a595a079bdd09982522aefa4c82864a9bc1356c90e48ebf41f285a2f096390514ca13ddb8ab8b2d522f25b0902d9f9dd27ba63fd3296e126e07395dab87adc3953d4de995bbde49b74e5d77a9d57bf34cdedac0f4e74c47a698ae0315e0109424378a9fa3b56bdecf4b0b3ccb892af27efdddad331348865dd443c298d7169683d25640b8ae57c010b6c1ca11766fe267f796e814a6af49d90e4e74ff2a5da2b0d6df27b3442f7fd3d249b9b374751e9b5d4b0b6cf7fa26e056a80aace745b5ca39ecf14fecc4eb67a3aba4c007e713f180817e2ac2d4c079d24566929d8140df18873ec46401004b0e36013ed1749f4a569b3b744d1f7dada63956106786630b8fae7d6eb7708bd3202e946fecd8d73c06f1e058fee6e3c4517d249b561a31022761a2834e88f0f2e270c7ca8169b0017dca309422afa5235546ce33790516d308e17b5e348163593f35cd5c254ba42a1c48cad5a0b9f2a48ac4ab774c067f2f98ea0a754629e6047a455eed5944d7ae9a807a2ca03e647abea777192b810066fc7a2416f08bd64d482914c2afd879ed9e2775bb993e50f26f0bbc0206a6b70493cc111844373fa60b988652d5100ef8495cbee217aab33caf18d90e293c2fc678af74e67a930c0708d2a6dcf7ae8f426611fe0950bbbb8722cb01c92f95dcfcbc53cfe93a5028c1bd2487b614dda28fdfb5ff13cf5f28cc8dd69d78b17897f1b2e1f8959cdee272394e1d48c6f36c0d492b82112c07b02cca36203dcb2ec565728be2547f4d676f8b1c8472131093515a1200928303ab1621cc906ca40efcd42a5b294aece42c972739fbbc7d46cb2dca6ea531d9a4dfd7ca634c4d1329931377e587a230e9ecaaf883827968d0ad9a4e7f3cb413308c1493a60f2be188a313965c92dcc9ac007fa18e1a7d672d88a548d8f2a71dbea2c8d09495a7818e856b750386776bf42ed0276e324ad066d585b604a1a2f6eb75caf91e5094c497f1f742fe3378efbff811a89e5a09b77b622bfec02c2b1380e9bbd1ff2b65e493169359efc4050c2d58350d3050b9942c5914537e5723922babd8f2692113880b230567b9454de144043d0720cdf7235d9adad2553711626b5f5be1e1b95b0ab015ba2242fac9df4031c162fde78bb43c361466ca352496c6395e90719b0d5abc6527a7c888fe2521d42bfa618fc15958da8adcb4fbc2ef714ec770009e2fa62555fcd5ac6b5db958c516936a1d45898da1ed28720a48bcdf9189ab31d12f0c91fcbe32414b560cfb25e091ccf99edb11942b2940e950f5d7e71c30285e4160ff4faaa0d348ed800d04cc722fd8a3490b20b6a7619855736d570e85c3c9d801d47bf92a69d778160a591876c95c362e086a8699158ef0d0171b7d909d47bd4d6d5caa61e0380d5689f8ae307b9cb803c3b9dcd7d940d246fdb75ae28537887a0d06c6cc2160409a2bac835c6f04f56517ce0a551df654ec9ca642a372e607af2dda2ed628bbb64ba2b36a9d456222d428daf59ee65e96b797b6bd284886b9668d290d0e9cf66c8c442ef172dd80b8e5bc097649343a2aee1c5d8ca3e0a2c79beeef5cce835cbc6785332a004f04c76484966ee012b0de4a7e99166a0450cc3ceafbebcd9f399e726a31394979a056f0df8a16ec5da60e38e52e0849e96755344ec5508c2b4db8701d940bcabe9d4d6463ae42d9e4de8a56ca44cb4f4f3d5c6f94e862de31308cbc1e0d7a22b5322b4bc702a5edbe1ec65b1e290d0035b4c970e81852978aaa0197f3fbbdfc6d533c05000764e813af059c9ea8d15f7cdb59cce5870d9030e6186ccc3bf196237999812a6cfac6c2a012caa6f0d02de7b3adade3d34eb039e0837826e6679852812ffbb8e4d1a6aa66e67f0aa7101d64e454095cbe4fb99f55df848893d543e0abe0185f77aa1998b9541e45d311acff9c8f52cd1152169d11db742ff86dbe46cca0013909d15692118a5a3f78800b0445d9db093cfc17c2e6ced2115cdb0686b462ccba9525d8155f3abcdaf1959945ca5115471eb4ee04a6cb0e7f747cae01f18425091644ae4decb1535e3fcbb23ec7aa0687094c81c129caf24322d05b710352f37fadba4b422ee172471af8792a6119bdc1c7533e8d7e4a4346ba93c6b4676e3b95f6e25ced2ceecd70bcb6d8840982e26f12a860d1c8b6df09547410824acbef7b1dd2feff181a88243d89942660aa50b40e02798f442a7f9648f59d990f4e4f02013bb1c9afa92a0f4cbf1e2c49b30a5aae4d32139fced832ea34d6f9158bd4df5b78f529c78397af5434e9166d47d6443015efb7c4298f45e9704371bc50653ae034e9c2330eed0b685a54ac64ccf0a4e9ec31254bcfe1454ac76b8c42e95b59ed2d925436fb663f2976bf4195b967731ea09fb6f1758bb994786489732eb741b1aeb6658533d3490d52e2483a6e8554b58aafa345ae06009c69235a462c323b9128daf653877aa56a8e32d13a05f103e7c004acf1b54d1f33852afa61af7c5d96a2fe4d3412dcae4f9be618455a327647eb980d3fc14e946e8596f8602cf957bce27c80cd7a0df495d7135ec445ae140bf39e494a14b414e28b050b585f4895a50d064d23f21452e7c7aa3b80280448b186bf9a5229bd44434055077cb2f9d8128aee97d05fd9e6aa30c03f0a4e50626cc2c739e531ef701c88cf4f5c3eb9e7039c81a8225dce6e8e72b25f35c459b4347a648265d192dbfe09f07d1366f9d7e2c8468fd181079023c88398a027d748ca352253b7c4cddeb4deda5f81412cb4c8b60f57010775016b9c156ddca8de697ea5b6519fe5ce324a7f9893e2c564f94a15bb35f9198322b191f5b2aa92aad84578bc0aec8a041eabd928b15070dc5571f637575513bcc645227ee9385498da5c11fb597fd5ac7e1c530855b7a744d505da73bcbfcbbe86a0b11145424011055df1a890b70bebf2993247807cfaccabc15f63e9af65fa3a5442c56a72d3a806bfbf3187d37b9ea1aa41629364db1db14db299cd1e372fb69ee6929c430ab1aedcfdb74aedd25f80c700769bf088f32adb5239ad87088895dcc4258372dcb423025d57aea87e90632744f4d721b1b9bd883c57628d2366c9c969f184da80e6dd84a103dd0af9d1a8f2d51b1876c5daaa03f48f5a03e357a66699700453387cb9f6f61ea769f0e4fa813a4287dd5d32b9600beb392558b86ce2332a1894e56329f1b2eaed0c81a9d9638c771012bf5e817cb4096ab9461e5f462c402d5811150c1d38f42e6c565e691675a6d140be6b29997329390d678534c52507b9c2ad37caf099f98487f6328786f53bd0dfd5066c2460cad25e755818a6ec93546c8f526c447f5a2225c9c12ab98bad1ecd65ecc3e71e18ed3f08b31badde8568ea8dfb26d53fa38648afb6946522e2e180af33feb7d91be355633952869bd9257880c8580ff2e50615428d87fffb72555af7c3ba420b1a93580fd71199e523a5cdf4013dce908157614e522f9cf58f7a3e2a7df07cee794e41dac84aaa5025107d24150248933da5e9b27f2b86e7f85d3c04ef9b898caf89382db4a93a87a3bf24a475d77d1eabe0032638e36a387fdc93d84ce0f001d8aa77568d85cccb039aa67448739b5531639c8b943a5e466475810b46b6738d8c7c1807ac57b369a133b76fafb0394551819a070187c0a4213561cf5b71336c1d4f438275511b06d414d96697a8532652f8bcfba13c8d0d5d86b9c11a72bb326d5897cc10ea89b4f4b6fd50b96974688b19abff21203b35bf98ccd62da12f180d4ebb4f9c162ee2d76b69917472f3acc2f9bf95a46fc429acb94b6f1bd6ee7385f931fa188ce779b9acb32a6153a4f2943f406b84990c61c8005fb904dfb43157b8688bc6cd2da826de10e28daa028897379a7eb8417402efb9ef17459aadff8dc42e422e3b6be98dab595966f8aef88542a7141724c9c232e8e484acc776f22820b6068cd4d739b9691a4baa83fa69181cce52dc89cbe617da7a1ae83a05bda744e81adcfa9bbbfbe8dc899b752e97b27bede6ff171cc1ebc131358797d11b2209b84086e1991b282e6a25bb82c08d6a8ab442602c4397fd18ad768622db8af8580392be287e9669344af001e2b7e29ffaeff734f136c007d6934e380ecf4db302b50a9e10ad76df02ae3de5b880df3fd54d61a62ac3509fc1bae5e541fd10797eaa950c96f03e822e5543e05ee8cc1c7e96eea9cf81ac52aa800e41c10cab47cbc3542cf70910832ef14f6d1a8b4ceea60eb27bf93b26e8601d93cdca2ce5cc76713c42b47816d7ad13d01a75200b8380c16cd66771375db361f2f295edffae9b2ed847880ac41f3b2daa7bf776d9da0d9673302119fc004407436e1865ec6332237c43be7f82aea772b066c0e3c865b25808a5521e0626bbf98b1b29121198d0cb1ef5984a8dbc7d0c7e479ea98c00002090b4b695ef5d4c0679e63d8bc62040cce282be4bf483aa055ba32542cc90d7777b1ed96917fa6d3ec20c459706c7a022425857d152ccbb48f4d022642a2a53a8822f889f5140edc2ff006a127f02dd5a12d0700931a8b8d0f3e4711bf04f4b83c769d46e78367a7df867a3d4c7250c4f37d9cd665e1f3fff0247a803c0d5e95c2e8184831a625652bb780387db8e204c10d5b822a8bad4ad3dbb07daa9ad5be7d313bc4e1ced01cbc9888a7b76ba8d0d6f4f7c25fa4edbcb5b12ea6f0307b46b6c0daba78045360eb42193a7989f399b7567852113fa98e66071ab65acc174dc1cef2019f2b476354875e00bf3c6fd7c3e89bb0fa61b2f05dce9b88624ae67b12c0ae678007444c7cb77dc636823fc695910a6c9a5c27588305542c6ba226040e30469b16af22cc61751922b71f4a02e8e06facc12da8862369430dc44ae6b0fff2841b406d32793bc01bae41292a7fec8d59c4d6cee3ebe4044bd3fb6a4d8b07fb3635834235414b1b4d3b175b055c1172a1ec947bca720f0e47e259c0a4c948704c8508ad70a01366557dc32061c73109f8a756688d954216c007d17d1c08322d006a658e70250dfe9322a66876263d578626c77a036aca56c7a7bf196db87b01e84e0ebbfafc6487e2a548a687ac27ea85fef097c10d9cc88f96d368192ae38804badcb7334d1268936d6b8b0e40d8f7b8406800c4ac71cc0b259452d8088661eba967fb6fa244613a59380ffc9798331cff1e61f7913b19451f3bb23fe2c4c20686c234ea076bd354930c31c41975fcc56ed0c442b55e99fe88053ab3868fcdd14d4dcb5c8a09217becae10ab1af4f8bbe879da15ad8e10632c08ec4eb6e062983d6fc329b554babefaca6197dac24f7e840c7cae9f50f3fa951d3d1fd048f3b16f46be54d5e3c501c4ae1dc62d94bfa1da57d57f012f30c920a4b7fed8b921ca5df88dd8a2de98f28a3a4bc1bfabc4ffea1f945247682ada7c7d63dc429f394ebf6c7cbc70c18edfc53c0d840308dd2e8aa3050ddccf19f676a7794d380e7330d0cb0ea9386e5dadf7c886d83bebd1a3fbcdc4656e4dccce360a0982734abf71074d22badb4c2671521d6cfd14b032a6bc1d152c2672d0d4ea9d595f18d56e23e9ac83397d188d4f0595288b11511b4dd73a5ee0f2d42e53186239bc034b08e8669f018b94752077fbbc4950c69aba1584bbb5c13293fb8d3b19dd80dfe75d4f08838b1fdee07118a205e56fd5bf745f558dba23042cf602625a2c3a9cefa3af13cdb99260b74333b3bbb528552fff84d86044795d1848775616eb8c77cfcd5e211b9bb597e0b1f139ddb669c57799d5f7293125e0dccbef170de73eaa3af530b0738c4a8d01f9c532e83a0342634a29e0ed8039f4d3ae4da49905226dbe8608360d3fd998b6016e660f3edc6c0369ca9d25bf66216f50193e7dfd23c7c323435b6aca3d6559aef50851cd65beaa922830d1ee02ca479278f64aa8ea2ebbc466a108ea970807b7ed2f56ae97bebae3e95cd7f0ac4d2c7f089ab1d3a60f95ab3c2a522fa579a4f8b8a81dc95663870af77b68ec45b57a91f96d94d44f5db2197a56800e817af9d65d32768c8a8440573860a2511af00d56b93880cfb478520ce2aeae9a9279a0137cc14d80534c7a2a20aff2f42db071c83a5e6df8e3cf2e5b6c45d4ebedf06f138865b1c3996544effc2b2c660cd306b7f310f58107b911c71fc28c584219dfe4ad025513e1446ff5d9a44a517fea62b88ae9bca84eaa107440a1f3f45665bb05863641979b76c934d085580aca0d7a4af77196569725560e800d636c8a0ccd4360148536971f2b50d9192d70a37c1ded6f2264b85458f486c30c69741cee55b198f608383d6490c2164111c9481f727b3c6b8510ded4afcbcf86a330354dcc2bc4f5607534daad1106d9e20a6ca958809d347d03209f40ab267e100d347821e8ef4378c2841282040fc32ea0b2b262b40fbb8cfd6d4f0e9126bc708bc1c75a7a5d901d04fe7e291289c44c5d06fa4a5a8dae5576c17ce5fbd969f197dc99a07b5275c46c6b697229ba3cfc9d916457801798287de8439a0519f2f8a5ae6ebfc491e31a6333759c3c5b0c8c63a90b1a9f84ebceae838752bd2167010f1b83c84825216104b407d7e9ae0871d96e4b48592ef03eb8f87c7fcd75245c81e4903f3e379bf210a4dddaeb2c5cf4547b67347e32fb208d227e87d8f77cd968e21be58480ce0f4445365471bbbec3676938d4ba2e34457646d4fe1ca202ca8d012db0aaa11cdd7692b647a56d348bbc87306af2728ba3be8319a176201bcf84813ddc405e72b63940ae485ec32b855df78aac844273c1cc653bc343f86961c0e318c0980067555163a458eb2aac743db901e4539bacd87e188886aa7a8527fbc80ac7b538aa1050f0fb251f92071fba445ec6af448a1c0222dcce0de66e20d4f7644fe571038c04d4a6050b3226de01946f5e441828e8aae9b025efdc523d5c92b6eb650f9372837445d234190b46dd1f7417c27456baff9727b852bfaf0fc3dd0496944421c2ce2a1dab5f962fed00a7b1c23dffa750b51db35163399bedf9e259aa46f7fb22d8f7ff152c25cbb869ff38d546c16069dee2b80e658df3ceb6e53c51c10597eaa1be1e137cf68590e9950ca713f7bf0af66a804b26448475ae2263a72733efbf4a27a4c6c2c422e54df2a7deabd78723175671e1e5a252a27f427fbbfc3bb5762e1652f914d2e429b990c9d77c3d9d029cf9529df0ec8bb91194fcc497008dcbe51d7140ccc3b6497fad04edb125f8a0a7b5c2112da66721c71483aae9eb79dc1234ba3d0b9db743381e6f5d6c92d597c1cf32f9e1203f80889f1fc7e7ea161f2b6064e2685804318d695b2615a642abd743db010513b8655a6276e6252e20f2ec8630118ba55e95b221ed88db6c8c15bac97c870b00ed463b0392a80e29cf59b2042191250cb3b1172cfdb1e91b10c5eb48a2f837dfd371ac1db264b744cce5806b4a9e53e70a40b5255c04653a5a10cc3123fbd3dfc666e9a270746a7d706b19fa847dd6bdce24786983639af6f441488f454edc68d62931c02f8a3a309d62309ca6c479303b3296526783c4ce96bce9e2217a49c32e957d7bbf4b84a9e25593c5436a8cd6413247d9d6a17f0de1007d403214b50bbbdd4628bddc2e70c332f73fffd3bc726070dce4bcaeb4592d4b755e41157ad143c2783347c2620e719a3e102aae194928f8697ed011a37fd3e41dc25b799067540fa9576fec88fce7e7b9ff8c45f4bd3179447ceb91f4d2e290685bd6746029aaf83cf3543a446bc7af5382d98c9855da5fa6dd66b46fe012826ddc289c0fb11a376ec8d5d3ff4dc67ec5631c829de5d80323060c1138319ae03b1901fe02d3c8c1b5b274963c0ca42366ef3743229d43233900b7b79d58c5bceb1f75524717aafdaac6696f75e4df98509d5c056c1de0c3a80bd47387d4eab593e7fbb176d95790dda530f53a311ac51888828c8f52998280990235a42c727ac4cfbf955750cb84bd1e10899416ad59c5c0cc0018bffd79c953326ec915a997dcb786dba2bbb9d27b9ca403db959dad05ff914d58d361816730710584d69d9dd62e3dca27600e94f12f38a98c7802519dfc5d961a1ac19d3919e25e28cbafe24cfe25934a35a94bd61bf98221ea8df1c4825a3acc2d9bc4a152debfc15ac9afd39bfd416779d34c48e2b68adfe81bb4f798a53cb2f8fd465461ddb41dc9b9cb4f6698ffa2fa9b08b1afaade3ac1d6384898a3e407a0e277a3f1631226b350e9a86b42b205bb5167af26725902f112db0542905fbbe680e79c032e3bf647a6c12b60e2610327212048ff10034e6de3368e7a1f9abaf403a3fca646500800ab51473176e4168f47ac5de033a4d049f784839806c902e25c5bf5b427e11a23e004938b1132fc60ffeb202e95cbeee40c3ee643a6f3c68476bb0c4f5879db56fdcad65332fa1458d878a24c54b91b5f0889ca61c6d712512159df5abc584ef1b419d79dfe39a22fe4c05de0a7f8e998c96bf52722f0f28831fe913622f45faa3c9662c7c1a2a2048015b36f8d36493a830f644a2d957fb4784b24c78218ff085adaaac022a62db8b74c41267e18f3a97728de984323500641e671073e96a9edfa7a228dc6fa6ac5d7d587d01d1623afa75eb124b3daade26381b637cc0e1a6c48763e13dcfc9ef7c2ac3995293f92a8ee994bb4cb229d54084629356d3e7161e4694139bf22f07663c2ac1f14d5be54764b35d186eef1432d30b8c4791049a8339de980389d213abb2f6980364ae064bb56cdf413b279186caf24313d66bf040169034559fb1a131047759b8017f0a0bcc30867828573cb4e71b4044200c639a9249f45830e7014fb216d3e44fc9006025b0f256095375d7f6c36d5ddf6314ac12d3dddfb631079be0b7679624322d305c71aec7b2e041c006fcc10b21c3cb7d36e2fe7d3d4b839cba653097a22590a6fafa4d97e38b47d089d336bd768be56d167d6788dffbe8bfb62ba91ea729ca0576c28d7dd9646de42da1f303d47313020e48c54940c3865471e044c806acfd89c8d6e78c5e3fd7155ef8ff60656b73dcec998d828a1746cf9348a3e0700622c08d90d374b69873e97d6e3afd0305b43640be91aaa2856dc8166d19368608b82c7b20b8e7cc6503c41a3d245df7a02ed8177938515aeff1f2dbefa4dad12a83fb0273bcf32e8512191ce203d9b3327a395810c47994c062a70897d7daf3497c8d09ef0c1e5c0679b6390d72f9bb9b666396f7bc9264bda4f8ced71e0ffea5aef351b5ca2f0cad8156f3fc16e654c35c270b549417df04fed4757607f2d5bfbfbe0d001a259b6f879af2d59a163ab3f18096911b8fe437d8d7c3eaf2bd604d56749dabfd75cba426f0a35262420f85b0a0033f27aa72fdf2544e29040761c978cfaeb2640bdb06fdd8b3dcf528559297f0bbffbdfd895ffad04597765ef266600a4c460c13d9bffdb9585ebb38486c66ea648b5b762910798156c216869d5d8427ae1dcd8bc881969a438bc8cad4a9b45a60a0164b7c1ad103fd24b3f4b57aa7f8742ade6e1975a5c8febad27ec35ef6d15c01f3ec13d36e41a8062d0c651b20ae026c794c280aeadb51018a9144b5feae2ad2b38c6e5f8200a7285dfce34e41717b5bb0b703378baef074230be50186f410a9161e239a62ff0f58438eeb1b799e5262b72b03dc1e71df500da110a887e0305b4b3df7d7b0a9249228b7bffc5a876c3bcb2efd8946e6d070656c1b6a99fe486db5df42bed30031c556b5dabb617635388646714bf470992fd19270c63eb405ef51cf784cb5f7458de53601e760e1ee0ce521606448cb3f2dfffb8fb065c08e4d43d5bec52ba89f7406ed5af096884ceb1458206017a68402e39c2f165bae727277bc496be06acd9c41676ff572476a6b55590ba784fdf0719427e76e0ab4a3e1957917a2bcb80f8ae981a4fd3bdeac17e7bec65c2c3d8a866f215cf3377f98d747e20180015e7f6a6259ec2624fe2406d54e560d54aea4aa7b00e4d101b1fdda5617e54fe50bd3b859524d6afac613551764eb530643eb4b8dad08b75640ab70c802caf4b82f4047dbdb741df5c07c3440be04320cffffa12a01b7da46331b211a6604ccec9af64e1cf1aa83331c3d14deb6e88aa998a2dbf7d4b6788a7eee05f4667cbaa7604103c1227f1e0687b3e4b55e08c8037d81d701a7a09aa439aba321d020e1c02cb60ccc0e1575e55ce385158e846d60c099fd1b3f4161091ac96e415a881bde9a477d78386ef4c5a41d56dfa36d5c0790fbb16f5796cd217460ccea5a42da48beb12e9a9ecac5c950515de2411c72d5393c91a7f281ef0cc4f101744d29e20a581408620d90db680ce7e510a00ccb026d2b70268c5cd2f4192016f9721fd299d02ade6a9cf8a90bd299073420a44581a6392ce898666327fc6512f0d30ffe808f4c5302d48eaefad04dc3e90d6252fefcec748f1d26c1d105eb6967e2e3c48239d00a97b5dd4768991eb60350f035a17cc8f8cc752fb563bfe5f0bec50c46a053d81e1f399ebb9e100acfabf49e0d02080bd91ea88270d7b101b0cab100ade843940f21a32629d8ab5738dc9036e0d06e13560b1656c38d9f66c1c78b5e3ca37cb02b73177a3b9a1864277e36e4c7b430e417f63ef548343febbb5311c210114471b8fa36c4e0ef1e590f76de2304206ef8c4f8d93bc62f49024dd3be22f66e93c98dd8ca1d1bc907c864c70fb8a352617b7f260fecdb10162f21c3e10b7ba5ea534802acca2ac6031d818b417531e1405e24cc1ee95cd4a05515bbe0346e36247571e620f4770a3836917fd5a38585fb76f7a217640a9a2f3098e94216552c4fa088f413c0c1adbc485d90f0a78cb93c5e92a8a0fa72037a4f613c35da59be12909b78d19f8b583eea608c21db6f9fd0c085eb22a64a13dcadf3524ece79007c9c47c81c8673602b64eaffd5116abedbea2bc4350f099e738450d108f16257748b0859f7c92aaa543f28f6d9fa4cf74fe616853756060d82259227badc20900a155b690f2b7a522aabf51d4192263b8bd529c23b6a997b3811d2f3c03ee43543b555831432c59bbd9dec3d09e3e77d087ac49b96649dfab13db34a0a20107112656320c3a94d9fcead2c3c2be64bd40083ead503efb486a584faee6feb316803601b56ce94c809656d7ccc37411be55d149445995c59efdd2f087f00d3d3c0bff4113af7377be2f737e34cc1c007776b5c8b1f1fb99ebc75def8b21cadc1a2abe0160d021e2f25df2696e5e7ffe27d0cc978ea13d973fe3c93f3b8bea9ffd696ea3c9caf4d83c004fc3547416cb78f1e200f3c58c85731403482c875ac949dcf9f7d81417bd4d2bce80d8b4cadc9c2434621ec8c110c0fa7477b0da0d5a53d7fb752b1e1d2b4e78c3ddb4b76e29d8e5cbcc144a3db0ca64b07dca08cb847ee3e99163135ac0839f5e236e0217419a9f7dd9db1dc99dd8292cf711eaf4eae803087aa52ad36b710a66fe7d4854c0c206edd5578fb8228caeb267a200caea20d897493779280e1d93bf7b05f74519dde1dca07a1b546886392746453e46d0a3711cdac79caa194960becbb3f0d818507d5f121deb62a8096db51ba8dcdbd94bbffa92ce02880a200ff6199a4128c20f6ae956e03c5838a8fb6849820b4cea31e6bedcf247ebcfc3784db843545c338db9a1140768c80e03dac3d0decd0a6e364f9b3ea4087380b03b1a866804029db5f074c2d9b852d7dde7e2d7c9d71752869a592995058b5e28f16f7770dfa4b484f36e3eacaab5927fab9d0166d682a6ff0a3a2dfd98cfedc81f7ee92102f81f6bb8b970550bd6fde16ed52681028f2630b25e92d28b35c8bf63f98dc5d1786dd0155d65b148d5c8bf21fb420822cf0afb16bf3bdaf8c6e021c32a441e4a690645c96258b597db3d261ce7e503f55b42c21e082309d4cdca3cc26f0f4dbf46f2df40be3f434f1c39baced9d7343d94f6ff72e9f82e4eacbc97f27b108e52a9723108a5aecac3259b6afebecf74b47077d697c40bf4f4d445bcbacfae236a3db14346548730a30a264a77c5066002a681fc1c53cfa493006ed08552d90c39b1b5019cfec18a6a85c926b8843fde9237f2e4371067ed7bd3e0669a46c5046b04fe9291ff629e116254eafacaa342ce2250cd42fa8e409784ed6fa8a7b4800ed47ef8b04bee9d5c6586f7d2e4f7a88f7c437383520fb246b59389a1c1a002ad23b17b5eaceea3df998326236572c03ebce3b6247e28dbad742b3654b609bf6b995adcc7491f4dac6adb5f860447bcdbb62e94f62156f1dc33b9d05bf4a51241ea8b14d5da171334986fc185edfafbb385d48342d23a921e6bdedbd605371892298976dc1c1eeb890838cb9ebc8c718337932763493fc39298f4f474f2e14046d440e363ff741f03d70daaf9a41dfbbd3ef151d4b908335167e065ac9eb674928e63e3c876ef9e4ee35bc730282c7785631c2041c755df5c0c77a4da28792007a50f54b37405a0df105cc18e4f407c4b1c1fd6741b77022e211459304fa5cf98d48e383ddced6e3c1854ea0e4a3edd5e5a28699a056f500eb20d1c89043fc490c8fa36e3c4f76d500e4479d105f94a032a1feb86fe274b0ecac1bca50b8c597ee5ce0f0fc53dc8a2dc3868d4e7e42c40759a0d2e0f62b528aefa8b047a04c3144f64722275e6202dbd75cb651a6d131379ffe01ee1e247d3a03b0a8cf12d8aab966ce5c82db159f354c9ff314d1bc8f49407d8b9d296b94f1afd26c9e3ed77b869353e2c91871bb787a7460e16ef7946c5d782ec5941d45d592bb360a20367679cba562d25f33fe6283c7623b7091a651f58f4273dff78128e9f484691b8c114d27976b10d6e1bcbc4d6abd605c15d65b141b3213a8a4b30b9e6a919f54882097f982cf8e1588a9fbed621b61b24845de37feddb28b0228e2c01a952b3b733ee173ea881619911f57626126386310e0ae118612f43bb3a30161e237081bb71ffafc3b8f8dda712031bd3c52460bfc6431b05f7c43f1c67f1fd80000b69f11beaa281640ae9be1db7ca54863e701f2dc19a804fc8d8063c7728d64d7a2961c69cdbb06844c94d1e0b7934da4882de7f92492616a007fb049aebba0620b262687eab55f4e842069a106aaecc0bea508c2821f30f5d8166524a4db17fd933e4991465602849c75fad22f67e282448d82d2c87e981529da745107db24ebd5de8d79f030d67d1b3b48534fa71d1cc121c75ad084aa5a8d441404920827d29229a4e468bbd712b6182e416e7fe21a261c6c98011fbcbf04100fe018027f27fa6fc19a533b969159db58f8a33012faf91d723b3deb63772d8f8ef8ababd3b5999fa923c5ef83a250d8ccfd36a682164a6cdb638598373896ea66e3ca2d0eaa9ebd46ae5c615b827c93d3a291903f6bfb59ff6c801b3f52fe53ed4259a8747e5cb5c94c5908ff563e55ed0e1c6289f8495911f6730e9a5212d249e68e8157d1486624d0806a27c2af4f4fbd4bd170cf34ee8251ac3a4773f54a36a4cd5c96bc81578050064a0a6520fa11a4931421f8bdd333e485ba105680da4188c2b914d540f7a210ac496e7dd9365faca8fba9c1ed8c59a783282515901dda3780cb080de431dc38f8869a63fa10edf4391a010875b59406ef9def5ba731a073fd61306c3a7d19d67a9208af2b8d863e1406f85fe4b2d6d16c4bc22353188ec37cd8e980127c78f2d83b1cc51dbcf8368cb991250af6a37110a15739324f4a028ab86696168b90c3fb23a5aeb259f5d6e61b5de070a4e3b88729fbd52cbb05f77f985285506e88f79ccadf164983c3c7a1035b0d499299f0e972cacaa0cc8eb9867109691eddaa95da8478afba4c60153163cf0320dd97949562d980821db5aecb4c2407e653e9bb8551913acd4fba46521aa47857de180cbeecca0691f942dd3c72aa31a3091291a244ede44df1b26fb0adcd3cee20f9414822f7126729f1ea73237135bb50d3f72a7d4395a04277f516189847cf56f0bfc08470e30001d4d4c87e25958c8880f445ff4caef874ab235cadb0f097d49e4ac7e3c471d13224020b32639451216370f1acf80625d32fdae8949e58f1f7730a9b64057fee64e2429c471c3200a7ac5cb07f1b522070a01763bb6f68e8da97bff18fc81e041768a8c24c23b57dfbccf360cddef36a994da6dc8e11a526fb22aa5a25cf24333f1285771fe6007def2ccde7cc1b8452faaead4251a8bf74b1a7174ee85e33ac2fb92686655bf2cf11b7b4e0c697bf5936579cb6864a0d818e3222167d26ff92e76d8394d8b4849c38a217b4e8c07b24dad8d17e95aca188c538f1f9b95003f2f6ba61c86a90cf4574280a8e4990541985ff21e9347b61eeb2b9695ce2519268f24d5bb1afe9129fa0703cfb4ed4e091d83c4e4b9ab2ecd36c89188457b9123b29283e82e562902391c340bffd8c416900c5e03aecb8610824b0bda62271e41ea276f218b82e448c4a4122420d651f99db4b866ec9a297fb3f177dd26e3270131b283baa3c2e8fdb5e37531a06a1ae0d515bda1f91b6cfbcb8fe451d4c637cfa736a989d18f4835c45fccba6eb8732d8edd19632040bf18393e192357ecd4308315108fadc24cacfe9f9ed0022410a09ee292b4ca7eeb27a1cf651e6ae35617dba3ed324ff76b6273ef53561d0226c25f03a7218d6af37a2076b780ff00a901063e253b3af004de3f121941809a2c3b693cea4fb8a79c96179989df9ed15164202c1a7d10e944924bdb8ae9abc1e4bf76617e9d9d9a7cfdf710eb2b45dc9f7fc23aaeee6b672cc25efe1dc7849549eea33e3d37ba713b372dffe6dcd0b7cbf4d02f65e948aa6eb6a8f5d419c24371d96b41eb405bfa0df10df38fe6e8b5e39e14bea9eedfdd8bde00ac87578f89a4f20c0bf0766460ddd3b9d45c84c7fcf2fa5c532c1a75313ed3ef835246cf4c815aa84933750b8bb649338588a641374f5159c416204430153cdd6b40769310e4151c8940a53b63f2c079007c1663ef0647b5253693de7c5944bd7922c68642d38f26ffcd82f829e64e284e8449dd1ae35042659215163942b1f35e473c1a0a22028f1700a506989cc38555c0ac66072ca5c359338926aead0541872e1544c345433138c84a4515bc004101f1b963a61a0184733d31008a5a09785c7e0999699aa1013353c101b9c6974f7eef718d1facc60ca5e76e5a9030978fb18a85350daca807715902f9a7fd0972044969a7b6a409ee5bee00ca7edf18e93fc399d0ec9be6ebee55e4c56c000a7eedd35884da833d0c792600cf34c81d1025f994aa0392272ef3876421c7472eaaa78f158a46fd162f72823817b46697b9ab1b717f4f9bcb872ce5f20dc55867c022430828ec5a024ba7ab5e95c8fdfe5347afacde9fb9f2120e2402c39b259708bc50f352c27ef6b251c4a62acf5397a817bed67bc016c578f192ab41b0817cb4c24936c7c56cee26ca086fc5d62ed4fc19090458451b3fc1d61935414e6f7eae6ce35d376e9c877ca3a142c3a118995eafe666a6f836fae8a51c16bd9d74d01c1d39a67bf51a605da52f5caa0d3069c807270c163cc1be334ff771440fdd28db8f6584ceec5ead2546f157a4b21902590bc48333dd6761f039a8236961a0825df131f7f224d0f6219cb343845e3bf510e6a147a2696860ec57c640e67e21e572302225fa72fd24f1d41aef89b1db54703296c81c31102f0e259a11a29f46bad2d8e09c2c146766215ce1c72313fdc9646cb8e5411670d4db4ef99e6587c6ca5f84cf4d3d456abd25d55cef020d6ed0f8c537450752763fdac2828528258011e0eee9b92f629f69180b8885a25c362c75612fe174aa88057b062b657d08a0521f36155c5f06c01713d21578f589d480009224d33b4c2b14a22b767024b613f4446a3561d946ddf24b35433647d71a6b8ab6273823fa011dcf0256cde341e23cb7e722085264e8f1e4155b3b0f6b71a1d84a75c6a7757ebd9ad2cb0c83f9d6d5a72e8fe1b0dbf9d2b28ac7185ae547c3f6fd9cb5eacd6c5d24ee1e776006685af0a6c5d6e53b90aaa6c0f0dc45e77b31bd89a65438262c36d2fbb53298e22d413f2461d69b64e6b9d370e8d5342aefc73c8890629560273179267e7b9092a3ae60dcbe3392582c1778ec36c45d616d88bf82dbc87f5794cb2be9c0a53562b27e99d6caa4ae28e02a98739dbe3c40bdb4b68d021295c5120a1d5ef2fc438a68b0772223beaa9dd98727a25872fdd07a613eaf9eca94a5b36058891984ff8ac4837edf887ccfc48ad67c1b6c344c06fb368fc394c623d23e3a39edbd0861b1fb0ea8e94b08224475776de304519bca9faaeb00896aa51097ac9be6b761fffcd9646469ffe958264f85c7ee2f650c5c067e2072443fe755c2815e251f64e98090352ddc67c27fb43a8862baed0948d241240d0b8a85d7bc86a389612ef7dd330e1cf3a1534148647b193debe16f555d9994177f098fd0c510f3755f51a1e8f37c2c42c02a35d01d035c7af80837e10b23ef90033848074ff8be59490c1b4ca22ded6a40d30635fc99b74831c585f90aa43780ca34f2142022fb9a4ee292ef0e8cd98b7468edebe7695147386ac66ddc9da4915ca19d68b03b9d558d2c54557573ee2314ae722471fd44b890c03c914a22e1f53320917950819966498c9a0f3f5469b58fef7d3b477ef7d41cf676b285ae53f28f24966ae09ead819a6b36dc6fafe8264bd3ccdb9b720cdc0f00e7845de36109beb6e7478082e5009dae632aa38006f8b1179e734f0db7203141102d0e0cb3b3f991d5536af4073b13bafe6b34e3729c8f9f236e858fc6ae65613181fb6e3b637c034ebddbe192f0712f83ab4607ee9d538f9196b3ab7cbe14359990b489dd990a00a7aadba8299225e2f591c80c83f01e5e88e7fae5317a004690004fdf5db2a8e8921513e7e42b4bd8c91ccad124938c111139ade8c8a6420761b356726475633bb2194241088047df1beca4a1ae1386990bf1fa26909ac9819a067f1e1ac2068091ca3305ea119a9d5bb40e317fc5b2a79363bb30dff9be5cc05c60ed5b1d74b6bc95e039b05e8ab52cf7e1d02cfcfec03739596ea5e6e37236a1176443dc6c5d243ccf9825847ad109b7a5c6830092b5601d3fda76a3d8682c8079a337f9e77d6cefb275d4e488ebc7563de789634675ceccb0ab5830bdafd7486df7ae5981f299f68993c50287c0400f36f3b90af8a34e7f3b1e18069e234e20c440368fc8aa01c6d2b44e4811e869fa4074cb25548a8ad7d3e69932a579b6462edcb00046bed5412c2a2692d3c5e6d73d0f4c618cb51b82ccf9545e88bcaeeaf0b77f7f552b94cd6666850011f1b461f71e496b5feb95faa4f14b637762ad1ee85c7356b18b891d4c5b0cf86036c530c98284a9e2c2faefe520d6201682b5301d22c8bd37a79cd1eab9a68d41ca43ef27f070c407c4adf4e7009c05c563b40e90c6357de76eb4434e6a895ea3f9c7462d15cc060cf61b240533feef379a336649f8b5843817a8b7c2a6c763827d82911f4115bf585631b318870cf0c2c3e776b31705a980b7a64a93860783bf8cd42f67ac4b08c83b8e344bbe0378352b689e03fbb9c8ef1bb0b427545b14357d192468b0e733dfca4937669b583d64cdba6c09fecaa1907bb1317f218802061ec7a40640efe9990bc4cbfa42ecc3ffe2c7904b540d6e688377dca2a674fe98192c1e8626bb8ed6e512ac8ec953f998801629b3fc4c12d7e84875f64b0c4b45d7a63297bb6db5d9d89c1393bbc55e6418744fb9d93a7c2e3e7f18c4b78de12434f5fefe6d8e8f762677dcb293f8884db24ceb9c0c058c8601da12853a5f508ca151074afabbff1e2b5c77febf22abb8ff9e0853d3f0e1fac7d500cc55cb3f651431a00066e282717457bff72f42d0533ae0582a1480c3af11c8b02774f81542d1ca22f077b3f228020e2457134b4ab288748b6436ee26654a524ab965a603a9038603b90750a6812efeffffffff3f54b2e97df8ff77daef2eaa5e606aa1a39bc1f7224a2786aee916ad45281035ee431abfbf6dfdffb7964eecf6bffdddd27e1a59e5080bbba3dd75ebeeee1818b5dd6b921935473019dd1ddbff7f233aac91a18c3fdc204589e5cf01000b9fa6133c6ed88186274528c8b21ccbf9ddddddc9d0b4c9a31e108f70e254a35074fcc6ceedd5a2dda35a38380290789001349bc671cc71a9848315d096b1ab2c1e40446985aa1352ac54994e645210224606cadddd5d3c8185c2ca0c27469698402283502e881663f9d67a7f6cffff8574d3268576576827cb7645feffff9f826d468f13413d63798754e59f50a36296300980ebea04eb66358e630adbfaff6f616dd97b11b5ffb1b607135b7d9b9628d8348ee34d28975a4005edad7e10240a5f1d29ba1a2b411d5590d880a272c2484215013c193b8c1c87d7a4e6c88f1b7aa6bc984d8c7242b22cc77266baf90178c2211434316054a47081c724542335c3c4c6440a3378b34de338068533b8e55296cc0cb6e8d64c4fcddd00438103493c86e0d039418614e692dc905c93aee916ad2bc809617dc337dcdd4760d1615cddc6dd7b585854690a61ad54c424f9627e59966339d314bbd64ef837453bc21c4e39a0724cc95ee805fb37ffbe18eeffff91c9430249aa3c827ed485fc6db9a4c4e6b7737d010be6d4d4aa719ac1c94ae6453982f8b8b8df930331d1339627d0feab022668a7042565858f1ccdd3d8648c6281ef087184a84d5eacbb21058deb03bb6801129a21c52709c60933865c0fbd191adc4b81c36188e5df85e04648159f153d7e3a18b22cc772ce3aa452efc259c00f951d560b19563d28a119650cd3c516638cf5c518638c73bc1c4fce27a72337943b9a36bfd5f013fe0e6003910e0f3ce18ee6eaba757777777777a1f0ca576cf7e1ac50e3f6ffff7ba23679e7115dd32d5a532347ffffff39ea1291a9d652935c96e558ce8f9582f47e138b8c82e4060b2eec8e783a38cd1144ac987ebb711c6bdcddf16fcbde0e4ddbfd573dc7fd25055480dcecd0d97982f317b6a3a0ffff93a84dde970d07422f0465103d994a3293e070fa91653996f3879b304a491414ae03ab4433c8261df68ce37882caa51857b22996b32cc772c63930364c52599c4ec4d0a1325df021b2e49324eb5957dcc21cd0b4c90f724237c7629494e440ade0ffffcfd5b07fba14ab711c71dcdd656fc86fbbbf78583149cd51ca9e0dde1c318aa59ececff24415a682b04461918306106905f15fc968bf4592432aee859eebd6dddd850431aeeeee1e082fc22942a1c5b716fd46baa65bb476ed72d07181aa05deb883d2bcc1c48916f8ca2a040e018f42e4f4d4f41071b8d039a101fb91c548c6c8c6884763a5c32ac00ac904859a223354f0e80999556c6478145e141e0b660e30c5850ba52a39a92b93ca1493a9aa3905ac533ffdff7f44376d72c491ddcd59966339ffff3fcd0a83ee8e24ba57f16dc74fd4266f96e558cef4ffbf052b3ba205ac6c91fcffffebdbbc33d7adbbbbe31e8ba7ed5ec37be2358142a9e4a408a231f5cd75581b58b12a305480b811a346375b3c539464598ee5fc42684bd640135ae0ee0eb57dc72b852428bbdbc489d2eeeeeeafc32f89aa40744db7681d22e6454a6868aa0a4b0590aa2420ce5dd13757e24592aa2e5cc242915a158f163e7789cc7d41002a3edb592cd9346c3c12d01f4161adb5b685d3b449a8a9aa2b5c8b2ce289165650ed8f9124eb5961d02debd65a6b754c5b6b2d500770087804ec018140a7bf5928cf5e677dd2ffff2a184d9b5421e9aaf0cbb22ccbb19cfdffffb3ae383823d6dd5dc8f616d6d90f971c4d9bec5d60769241e9a95ad5b4c92557d326b78b081715d6f8f2f0ff3c2e1b3f3a64e303f6c023031613269cdb30659b12aaa0b3ab91015208048512c53184e308470f0750f76f8121437a649861454c0cdcd7b09f2618c290653996f37f1027463a552aa560c748d7748bd6b447de585d1ff2e72efc3fd5e13ce9a12808d594243a824836c2dd6df68ce3b8e286bb2d957464447d9b9fa5dddd83a6a64d565d7d10944587272481c871128303931114b1c104a54a152f17e20a31f225bacb84c8ef7429f6bbbbbbfb90a5308898e32a5ae44c5115d140a26146c8aef18335e57f271df6ffbf8661ac5f64bf67598ee58cc2f7ffef6367daa48f9eeb0328cb783308c9f2ffff2f838402958a1b2699c4dd6fadf7c7f6ff1f4b66dae4082c9b9b294fb6feff1f4b67ff51180362c986ee5d3b6698a85c35fd784ca420b989b2e598c58a2c46a8f86498b0d91fbaa65bb42e0a11ca4c9bb4e1f1f838507d6a22714e3b77a74abe5e547e77770cc367bbef1069b24364c8440e0ae7533e3a7c7a486977f72a3ca24a5377f7798304f3e02dac907c4b3afe82ee509bbc618d3b029a4c1a146a377cea0e2c1e230f9df3e0e1995c2423340549aa743eaaa4a2ac44d9097ffc421cde944c56487be32b49edc69e94a7a06b8e701a9f06032ed890e317cc51446342797264066521caddaf5b9746ae8c64a10981477664289239bb168e9024ab15865a1892838773a99c9d5e0e8d39c4ddddfd04a5aa31f8a1c7d0b4c9a31ebd95cebaa503aa76a13494736ea9f79c5392303704b6a4d11dae03efa29870a6aaf058c7dff5d1084e559e6c64ad927084a895d31d9352e080b425f09b7c307a53088ad8e4837125484d71bbba5e5ddde5b5ce0e3eace275c90a72a20e670318726fa8ff3581aa5f20547d69e10c04b303b326d25ec26d2d2de4cdda6c42056f3883f36a62fda0322e3dc2eb517660427670ffde7befe501c2b3d068d6de27b5a1008e72076a5acb6439cf36306bf60669b7821cddb5a0f844d912f41a7f90c4b350a4e10a3e60b1b5205c51848a69a1d4c096a0ba7ea601174d529bd600d60358ca2f12eb6a19dc303818dcac2ea10cd65946d492da5a0320925f24d626012725035c60668d00cc9e491c9e495c6be622db539ab0a9aefe0a21034c77d56f5f35a8c4746a29a5f5f5e1d24a4c5b2935e1ab2d828228290741ae45a81ad44a672284e33886d256ebd4f7ce82aaad35b4b5560de8825e44ec116a1b0677b5285f2060ed12ca5c3d13f4226293401950eb4b02307be2ec4c6e136a080070852f0ad0f045b5df59107d4ae9b51f9e56626eebb417ba2d2d745a7990e40bdeb69adea9fdce9f0b704d93b2f6a28009aa3d817d856035fdbd90d954c36cfa92000cd57f5f8bf72fed85eea7515b431462f842b3b2cc71bfd0acaca9c7713f2d94355b82eafa598919d242e00b9854b4ae5a626e7fda0bdd3e5f24603c9c3d19e5eee1ce141ac791850c77b65caac10b77b00821c08d1a352cd46061a5cb2009846e6cb27143a8083873b029a269dc38517389ae88b214c914d914f1723cc04b3231258bee4ad595208c31c6d87b732ac9eedcc0ccc06171c509100611a82b1ae68c9fbb3b8e1efe0007300f51b5deffffffa7b3bf9dfdedd85f8ffebbc3638e101d0992752d6ac094d06887865de36dc84225436543c5a3e2f91b46f8fdffff63f9ff97a4acd89f653996f3ffff3f4df2e43f783f787ef8fcd0f1ffff3f776accb9b3652f6667eecc607dfb1e6640618e1339c29e10a11a250a0727de637bb6540a0ef5c4f856d8ef384e564a39bcd21d9f84c67184f1b4658fc7f8b43d98d86214be22e923e8c3ca0716cf9194f48ce5dd0f1f36062177975046d714531d512489a9f692a0987922133c618989959b13373a529bbcb70685568ea64df6f0082b408ca9bbfb6e3b16fd014e9b74fae007cab6b063994a297ca08836f5ba7577772b206a93d79b54204316c48c943f915546ac165d5b4e65bbaee916ad43c8252b4756ea576380c21b0db566202b458c17a36e872bb8aa832b9700192217342b6e80a10437b1f6d479ca9630084f54c175046cad101ee1db9d1932c66418543c83876f8690ded23723c56e6de99b9193b9b2599bc566cd5784e3127be4dc430c59c4c14724e52362f21111b9707c44412cf8885c10d9b86ef22b8b2a87d8d23754c30e19c496be21a71d6a51457e6de91b6a61570c7c3d6a6a8efd96bea1a44db7f40da160bb646d8188d44eb1eef66136b09db5d65a4b2ba6f5de70265b2d8c4351c4b7bacd219c4dfdd4e5aa586cf56a75c5b7e698ace5badb69301d4c07b3991c3c2da4aed7c58fef8b44cbd6abebc5145feb487275b5b6cf7eb0ae4fefd5f845e25a1b2a7e8c6b38c3fbba0d6777dfeb3f83e1c2996f9ffd506d453b935dc4dd63510e442c6a9ba3b80ba502eeeb1b51b6b8586025b34cbf5064778cedfd1e980d6c373578d964980e6603dbc1743452015345a6d9534f6f394d0fe5e075dd75f6236a3a9ba215802fbb88bb9718df1bb65a18bf48d4ba33e5def7991a004d0de6eb7d66cdfd9ba8fcc3aa8aec22ee60e24ee4ed883c730317984e76202dcd2eb374d3d98fa8ef4ca77122adbee87aa1c8ae17891f91d2bf32eb5c2f122d2925d622a5410f54dda6daded705e80ca6fbd9fb4cdbd4f845c2d21e0399ec22ee76d35b983ef9cc77380b67ae9792ec2f9ba9656bfba4512edf63adaeb31fbbdb49054c9d0b4c07d3bd3ec0743bcac1eb50dce9c4ddf7b8bccfb0cfeeb63397cf7edb598bce5056eb7f714bb4c0ca5602f0a0ab5d50812adad6bdb6ea96f858a4b5749d81e0fee39b81575d82ad1b543a69ffaeb58bd56e69a526ccab1b922c7d327ab68b4cc66ebb5c1906b50b2a80b5dc22cc11d7d256875bde99cc8c081ca655adbbb816ad82fd1acf74227057b76632331777b54e040e6b125c5da96c5b19a30c835a027e8b00b65dffcb6f4b1b216ff90a41d2b025ede702ab4d20937025505d42ad3a03342b6b6aabc30b24ad02555bda0524aed2240d2b9d217eed20b8a698d2d90fa655ed01ad3317126cb752da3b0209733bad04dd520360d70d2a9dd3015eb5b43312e6fea99526a98dd266b53cd8912c7d31acb62f46cf9e5aeea07491ed39479c2fc64ee78bb1dbf382d7543f2d02384ad38998375aabbea54e86a35bea32eeb7a495a078eb2ece005bd27e4aa0da83596956d6945959381a660002384a0b299328e50653534ae50601907aa8242d1b0a3a886668008000f31800040c8240144692304fa30ab23d1480093a564e52504a100b07c54130281086c1603000080483010100000808878118080fd325bb06070b52dbf84892117c706955ad0a4a710e9e828dfa509a8bfa7f99dcdc1cf10fa330a434db5d5682d9be4b75908b766eda31f0b80ab5eb977c5670bfc7ae18fd8c001fcf0a0786fed8bf86652871413701f975e64225ebd98578d6fd6bfea54614005f6ee068403977e1af512ba06b83d0550eda79bd589aef61cae96a5f9357946b53e89e1bfb70f2a425b6e6f92fef8a2efea148a9d907da21ab3f3abf7e263a9bf6faeca610f03c9e5aedc6036533bfc2a847d8a32963444704dbac2292d326a9ae8a0012a4aa690173e3d51514ffa260cbb8b357e3e6815b81f60eca215e85f7a901394d9ab6f70b9d29b6a6d26f290103a796c0170256461c1bcd22a02cc7cd6505ccec3c85cfdad1f96005f8ac3893b33fa8736e4cede858b6ed4e8004b716a16efb160bbd54560e0c4094b23b16a6bea8a72846ff37fac37eb5b0865ef1cb2e79cbaa07ff8f05e92535ca9a62dfd8ff651995b4fe9f230501f9920c9e8ca0b97ee51438940233b0a66056f6488a2925db1ef91a082d1eb545a8f1dfc5b3200115eb2ae07edef7e51f16171b18efe43fb956a93fd0bf9936dd51f709230da8e7f0edbe842cbf1b9ae2c704f5ca7769d254bf0de4506a342b40a559126c870f0e261b83b2ed7c243cb6bef2420b23f5796a45a87c1dcafc2d6d802934d988b0218f49dfbc02929c637e572e725657f6b1b73b337824a6bc661ed04a078e03206756171ff98043f3a99ed23f37c764383100775c6e253c46385015aa573e00f5ac86ecd8da904ff63bd0fb1a814827037ca6bfdaff85cab77c3042b8f0c5153ffba98d230e74a7af1495011a518a75e4a2dc52a7c1581f67ed984e9d0582379714b3e510038e280fe7a2952571295e6e0cf1f244c5015df0dbe3152c3c89694ec2daf1d896a9f2a2d13e69b4667300598b107505728c22f52fae56004fbde8f1a701d0982f2f33f27ab94363ac4787df22d64d847bedb67c8ae537ab4ef2f686ad2b2fd00f89ab7eb9e358f4d0486fac36dd01c252f48419c339ee82b87ed7dede9ec5373ef1d4e04dc633dd206435701f712f90cf62fba0f04210acc3c809441d0ef0756462ffd2eba296625811ceaa1a7b58d790a858c2744ffeecd37b71b7c2d457967f86fdf413d78364b22360109da8818577bcf8691df0cd0802a57152a7455cb06729f188f050c9b0abcccc8f7ae1399e51d7e3f806e3d3b57af6fc9699488a727a4ed39290e81fce26d23badb69596e05374a5830d0e7b34d901eec21685bbff4e44fcf8bc59f8a9891812eef3e96fb98c68d071e0ccaae912d123d80201f251298756cd78c7cf4a148f25801e1d09f4ca7fce188c48d7879709af6f89a6dd4839250ccade3ceb6229c16c0d220ae194a9eaa8036e5f82545633a5193e9388fae76341e8b9fbb8a9cf904a237045aa8a174bc8e871cc218e28c5cc87a3bfa04f9b0888c2d4eeece4d61bf62104a1bc9f60b1b1dd6010ac019580ed3563f8579db714e0cab42ce9e680e802feed7a145a00c4560aeee43e3486ab09ec41dc65475c682c9db10ee935936c1686cb3ce1ddd6e548060669b55babc3c1907898ba025a8375b5511e1843a04a1f16e80092ce988412768af502f20cf2e98c4435d89d45de5cc2a529897371296e8ae9099b676939940d4fbd0da157851d11c2759f0c459d029e0256889ae4eb734905cc67f310e92461af2905c097d9c7a626ffc4db6648107ec84c87ff355d0a8dae11b142ba925f6b2a1c87b14823e7fed17fb48e6929ae3b83489e0491caf09cfb6896eafda012977ca87b87ac4e55f5624b72b521d35c28fdaafad6d7a6bc349e002ad2af6e5c6a0ac6824600f08a1c2a529562070411d7e05c02b1388c51c5617202a51f655e7c98a57b634c956b47de9799c63d802a00ee9c9716a9968f578639ab119c54fc4e726a1fdbf4043bc5383db85c45019395efbd1695468b0cdd5db9b5b704fdc1bfe4288b3e09135f86936e91fb80eee43e64dda62184c5a0f6aba470657cdf106a7985e649133da1274c21eab016293a045aa09834d189394ab413e68a97b937bd598b0055b440f1ba29b42e3d52993c5cf23c013d488f8dc85281d8e1c80a57569428ebf8c30197b0d5158614ace74d050c2d062c3f80e4b58d6069255905692424e31c30fc4bc4a32cd782aad9a6bc15975260d4ba0c91dabf3961fe2206f589444a50f9312ca799ed72d7d1f465c7854d98f45c40421dbd1b8390660a27a4a26c3855bb0d8f33a5c9e1c1984e10892ca7e00ac354b9c73c5ccbf7c4c06943e94b57ed324825a4c14b323dc09f6b8a7089c8e9bc74bab44617c79d9aa4e6d3a81e979b440a1516e1ee3443879304ee338478e6127cafa3636d1a0bb14eb38ed429442e4d1f5c6bb4b16c2d561386e5116360a85d3d77f40151611bfe870a6c362602474b04c829241d91fdc8962403a6429ad7adfcb8ab5c385124d453faea54a8212bcd895030c0fa8b8ab74f0c74f744a68fa3669ebf0e372673eacef4a21746656e33dadde112c466b46d70880baca72fc9fba9e09be6ef4fe492ef0b143a240b8356c7e5597391562f22bc19ca3dcd0be80b0d77085c211ef5a9f4197ea2eacad68238099f26abf44f62f3500445e1a1106a170c992205837a8616e1a8e70881e2c61e7d6b9291b61afb5e58a73c7450b5e55f3ef539fb0577e1147dd6e71ca5afacabafdfae91ce6dc56930766cc413205665417f7c6f5fca4cdf40e9bf4fc84b8ab01a2150f4e8a0e01fc537471a66a6f7af0e3a19379ae9f9b13c7f705cb369861db056c834950f2f2f9d0cf4cd1ccb50a9b3a2fc1bb7cfb8348ac5d7e965a00cd2b6464fa8bceaedf786943052b7868ead0b4d9799d26639fa233803a3635931960de406e6a67d46aa3d8b822f4135002e9ee97319a7ea7f4b6af97e6a12e6ab116ca2b1f8ee84375465ca9629acd9e4cb096527621325d1a87e130581ab6656955666aef6d2586b0d5a9dfb3ced692ee6790e10980a1bf973c9505127337088d410b4ca5fd13ae21ad87c1a3ebd16cedce5428a689d0c53778b8a695c4b69803e70378830d01c43b45b0d17638a5ca75e71354410219da43468c5f376359bad6e2059a3526b260bde84b0cfd463d098437bd54667d1691330531d058507cce79819124863d5d68b9bcff18c8ac498add8245a103239329030e9f9404d9965768e74e96445f5d4c4caffbdb73a8f8a7326c1265dde223a01c73e5513332155c08b362c40508807b216ca0b4fb63bd748a0ce88b2c7138edab9200353e8d8c4ccdda00291c9233b7e66d4275f459a552ccfebc81a5e69f2dd1d5e0acd2251e96a891ea19d280169724d5c54634daba59a8e4a59bcdf78468279cb9ebb6039a0e0a54686435b813932bdd798e10620e839b0c67392c191d5c777883a596b5c3fbe50c1e07fa935e6b0280b5cc1830a313e1178a636d3fabe2fc7f79b62dafa5c7c78a927591039ad57fa8f7212e0e4e3bcaedc92485a92d0250d37d8e6ab637d7ee364e613236caf9829ea29df56ea9ab014fc21ff4a1457c9bfe7327b421159a045d369d0557c24c5c6943e6370b58d8a8c3b4a7c38c9656a2f364a76407bad98ce1cc733455b4d018f1be51a09fe18dbc03f1fe29f4d8cbb1ccfaa9e17989888067c13abd71c592b4408076a6359ca40646cef88245e54f96f4b3c4b11a440381927720e21a338ce5a5957aca824bd4f62a2fab2433cf66319310d9ee141b25ba70f343097d761ebe66ca5a0216df83491a4720243a5893feb43f88b137bbe505f513e6d81c4dafdd52c4bb4e18371ee58019d0d2f315c880f50675bb65b0392d09058242217832afbe50e4854ed4093ac46110d58082452d75730f25f342dce6cd9aec1a1405c0f09557cfb59660e8989e67ad662dff4618eb4a4d2852cae738ea1c4f632117a539e2047a071a9505347d00c57086b1f4f796fb92b24dc696b827c5b4be043b40e8c1b561f59d85bb02875058178c5d69f3784d50c0833e4ee14826d40773d17c4f61251f888874a347678f6e92456ac8ad944a50f40f960ed7fc08875f40319f098172aad0c84dc98cb18ffae67b0c90597628509e8014b319001398927b4c8fd718054f5b96b87ea01161eca9535f62b5089ccb25771e67c0046bb0b8ec7780907f0a7dcd9d47d2a3f704866582271cc703979cc0d4e4d111722e99c143fdf0655e9aafb5ed44087d2ccbda451668c34e95db424158f5cfec67d455fb56258edfc21aaf6e2b2d77c9d37a43d4e3822c6ea425d22f383428c7322091ca108f2488cf1275f9934b45c08e228704a12df49d24bd32653f0d2a4f17c7d47cf763a14c70d6f77917a5a4a016f9a4d60f1a4b0195c3d97b4931e1aefd7f6e47cef36506a83214b6f9a95005f2f22786bdba20b1653a96a59a914069321b8c1468cc7f279cdf69d52129441ab6b9d7d997c56214baa9b4841573df8f4c5e591786bf4ce616134ada02e74ef6a625afb9ef053414e466fe83f58d10da54776b3f19508deec3cbb38b7039ab844c288e4290c5893637465b30fe2a4df3700216d4613e82f7ac846c8980f7f2077e49cc9fcf045dadc882adc5dce865a14594d8ad603ffe01998459105a4b033c5fe1023f6ea06a7df226111e6964e7b4cc6ec6a01762791b0669b20890a65b68d6a7beaad92957edb33544dfa6b9042662ffafb4210bdfb39866069fe874dce27cfca733f72f8d7d4431e341d60f61840905064efd70b03605c237c2b31d939ae050aa0cfd5240d8d09d7ee56deb028bb794d09b9de26b4dc4515a29128780f885e22b6640e923a4eee3a5669f7c5e6af766db5328f6bb2c38b729c26794e385890032b669b155898fe6bdd887afce9a2957e2dd4e1c0f33fa9283a622a60560dcab3c32e31b98d6e70d2468283cda99c8d76da18e03cdd964bd5eeab7def6b380eb79bd837255aa2a42a140e42b63dd2ee332306d7d32e2bdd460a623e380d305bba90cfe748a04958388d7037697f830dd3e0ac21cdc6296d385fea249cc07d57caa5549fbeb28db5fd13478165a9b02b139402d906ca8eb2ff6aacc2d48ea0b8df1c807fd37ea26f38005addf2b7c64d772d52808386883b22c90886e7ee528e74f2622b54d83b1759eb2a02b0e288e06459b757dd34849befe9e4ea08ea6099a32819620013dd50d2dffa493b3d08de952206b1f465b5213efa1b94d794b7c49ff30c143d94970b07eb74242e015bd8af730ddb10665a3348ddef36ccc1282dae66d6e249bb4a8e4dbdbba6766710e98030d5170d9b8f60a7ac0b6a8df28f5fa3fb63439286c3545c119f0bffaf54f6ebeb41d814154e84b044fd4f67d327aaa904dc3a7bd2ce2c1e8bd0e3cd1f758a24ac63cd2267b85066ea48177a499875dd82013dc9b2c74aa19a1b8727f2459ffd0ff8fb903f0c509b50f08dfcc1fcddc782bac95eeaa60c7cf770345fa586466c9b2aa0efb904186a063093f55f00a4348ad1e36712b6903263d4bb1801f1a760ab6c6a8f654dbda0668e2734d1b35f93c0a72bdabddd2f6c7a4d802312a085221e363d944999d40ef3e341d042448071531b8958965e8bd13e2ca0ec6fc7ea7a475eec89f89d94eacb4812d773a864620c8737b5b734dee88b75384e2d1d8d75b0811bdffee8f104e5d7ebd0379167cdd48d60a5b6da4ea05c446c30978aaf47e6e876ce7d8d75770876958dff493f50ec5051fcae7652ecf053bfb7624c228c9902880c924784fe2d9184baa71e5ee95f0ad0dec9283ea924a09a5de23727d1920182857415f4cd2f39551e13623e23411d36202d0f0e00ae54c49c2803d0e7cbb8051e6d7891a687888312d676c15b2ad25b4f3aa446aafa03d1737479b6e558c180b0188967d5a39a97933f999c1b6814086bd165d4a731371db75c3374c0fe8bbc4e6f16cf4ea82665eea8f072970501a4afeb301f5d7b42ca9e5ce50e94ec9bb06329da001261a988253b432db1ec28698e9f9ce738065984eaa7612d37cc3c47a2bd949c53bd3ad9a5a04ff394f08a4153afa03ea366b0b0736f2dc9bcd28a839801b9c0d239527a1c41f851705f2a1cb5fe04106a79bd14d708768c8312c462d10e0a04e914310588ec344bf80e519a58952b08d4acd7b5f1d7decb62ab8661b4d49371f703d2915dc6583501d91ed1e9067be9a4d2a14999b6ebf1e8f8b1b6ba5114d0061c60e2d16dff47d701708864be2da1398af65200421b64bd0058e5707b50c22aa1241c4ad702a485864a4b6702b2516b30acc558b6f3328858178f2e5da160bcd222da8ecdd61e5c7122094e42ba43f38ab0407ca877dafd9de0b274dec463ba209d9b9b4f4943a9191e9ffadf108810b45b2568a64264acbf25252fc246e1ef6561ebd1ff795a9556906cb89684ad89b4de165e95e6d4e04b5be2b4aa4138bee4a36136087752ed3168863c434967257a16e658095a5ea5353e555a54e17f8ed562bac2fc1b4f37fc371e34686b3451d41a4a72b448003471d2fb03c3aa31940c9be383e034c0e414472b2e55f75bcebdcbedbc8f966321ef3137837e0a5d5e4b93ee297033aec611d3b0314a22f8a415281444808b473e2586aaabd0837c3fd6329a41be5fedaf1580927da902518d32fa7960a99d2c4643b95d43e80416485402929bbd27545935a35fed92216389c95ea3fd383f97f2a86233aa55c3f9df31cb358b297b82834778461b605b87ba6cc4a156bea731a70157829e9c4e2a4be2c710b127213c0bc606c753c034298b04b92acc1604a8b560ed04de420979eacdd4af6f66e40b2c234b2eeb2f3a42274656bd01bfdea79359eadae4b5903bae5ed8275a045f03e1301d8a6e27f47ac7914e6c6fbdfe5fb353c5082261665e49eb580817fb697b5292e65944ae3462b299f3e43af1594c0f628c5d63edf0772d85974dad0488883c9bfa070637cf1e57a5b143bc00a1eeef3196449b5327074aab8e7f86ef050ee300dd2d5e340f37a7b72c222d492f88914aec26f1464b0cdc51bd2530421f32765bc74e003dfaf25dae8e56a9715d7074410a45998a6f6a837efd481961929575b1ef0084846b0ce6ec51d7c369012fb1d6985e17f2b364e5bb8227c5ba3119fc147481abf0b608a2a61612cb03a3c009c03d7ac35cdbee4a1f5c0a40510ea48992d44a13e05c2becbe9f0b1041c9e395a674439133de4d74e90b2eb21d2f5aebf0421f977228471e36c94380ef30a7213416ae0836f010ca612ec98c823a9e23cad16c6861348495b4bed75f95758d55ed5dce10a77695633fc86690c9724aa3553239f182e90c1bfbbc1218eb11c42cd21905f17e5ff4e927682489e1a32ecf864d6d0ae17e204203d173b476272c7be662b20407dd3a5b8d3504ecef71f8974dbbcbdd2946021b15147a4129de8ac2581d1eaa9a8c545478d4e03a13b8afe303379f082eb5fb07e97660180d5776fe6f1ece61107283f4d5619da6d006bfa767e57680b2915bac2fdbedec2a2e665d2266478508defe81ad4b159436a670c9fa40e960e9db6e29fc1615e175016a98eda5c44a3aadd3d0e2fd8929d4dcebf0f28cae34bb4ed13a6c593b6bfa996c254b0ba96f75acaf55b87d4d670b9978c26235dc82af731386ab6b07c057948f03943198d7a0c1ce8365d3605ed5e3bbc28e6ae35354f822854760aef070e3ee9f7c5933c288058c5c55530d2d235afcdce618a08373fe3044d8574c3edd26be57186ee7db322bf0901cb46a7292b0d598928538a1797dba02a4d48c0461b6751c94d70a3cf64b963b58b4b1081dfbf894ddb50c6b08e33364679f12d43c456e7f704e50904562a884ccf39d53bff2918e12a04e4c85815c7384a8aea2e648ab2fd0aba4d96a51307281f2dc9eacbe22368781b4a401588a5dd8d4228136c390d4252f07a1bfe1db56d0a70a6ab5c57ba490f54fa1b3603a595f5d0e6d91738491dd77b4406996463ec369aa25d37ce9821a1be36d7a53a3394352737ef3b245ac632616fb25c3b26c3bd7287456e531fe1140e90e3e245f214bb8609c613d723b66748b172ea2cf30d6481e07f60b8a25f9260663a110ba5bb2995d443114dcfdf5924b1e3d7736625000ead863e31786b03fe7439bbae2dfed8a2474b56424a2262b33ec7b1a149aa0197773232be39e50537cae1ecea671fdec372025ad74e8b0930da1cd36fc1daf668d3380469fb8143869e270eabba24034081227b4340a24766db83c9c681cda7935e9120bcebde756572f34bd585ef996f1b9f86d59e9c6291621fec400a568d8e376ccbbb48ff893e63bc537a747712fcbe9c51e2669239987c5b7d2bdcccb007e13bd411d3343375f60c8e87a526bd301f1bf3a53fac4580b049f667a50ff3c1544473e86cacbbd7d6e7686211da05cb9fe04be7d4fda09fb0b45a229fb6d1f9cba0d5cc705c4d364ac5400908734d2de9349ac4e2c5a6ccc9b2efae75b1a0db75e5dfa5812246371b7cedbf5c5b6bca8894309cc63caa83d41ab66639743a8b5e1418135cf64cad92bd52d04358ee06ef2c939f7c7c76adc8607954e151f58b87b111ac324446f1ec98eb5bc5aa8b20e45fb9da2b254fd8714b2119dcd8eb4db35e0ef256aaaa5fa08af2bc80265a2d8821366522964fca80170f1097196fc168287e610e7b65163e1e88fd21655fcc6cb2eb7ebbb17157c46b7c58eb57794d0b4c3418d9aa24945d7e7fdc4af43d0e8b145b4a5d9a0ef6da2f5f66ebbda05c738b74c28d25f47786619f32d2040637bb040e1d0ba4ad9caca70c766ab44f4f848ff6bd29dd3ceea8b64f151fb0146ea586143ea6e1103e3d8e0f4e793c158a7754065d6d355d024d9e3387d462bb133dbdae04e4a52f44d074e104a13994657facd9a4111ed56ece8844d668b26d647a40b8b667450f0cc6bf5528a299edea411f550c124e6551c223c023f5808d94cd62271363c0028d55c28c4da1425893789cbc3dcb22fe16e3b32c03fde3bacf5891687b67ca9de788443cbfb0e9f0a54c434480c8d1135c3d108edc6ded7a2671136d79dc12edb0d5cea0241e1681ec244bd66615a3913b51ce191d3f822a7924b27b53fd507fb3da99a052246940a25c3204969f2d97b5829e3ca3380c991250d2dc2d321ffa70a488e18d75bef1f415826b3ce18c798d1fc486eb047a4644000bd4469abf993ec225d12e6ea8845f1127adf083894a33ea990b594a9021309cb20418f261609ab9cdd5541f8395d51786cded69efe364315658b0eddd2398da9041b378a8daf332d81cb72626526483cb966c27bb4ab6778736c9a63a5cf4608c932dab933c07a195f68749f3e3f44288a4d1661d3817f36dc9bdd6b38c0afe4063a5fd433d03341c05c1d21dc5baaf179d8c217b8e5ff669e54bf1c7b0d5a35cf1920d339c9cfa30434052fe4e747497585588864cf6722543a07dd58ed9af02b215ed3ec7c37839b0b24f0d8d9bc18df6ea00a0db0a60947c2b5400b34e0056b9bf7ce870c8fa42802de0dfbb4073b816e1b90af268b7b428008add5531aeb0a1f47a26c1be7bd752a0030cb40728ea3bbd15c05879451c53922c2796dfcc3f4048671f43d00884ee8a73eb65021b2dab88165140121049633b2f3d7fda65cba4358de9bd481c45c108aa25eebd7cf4b8a83f8f595b52990124cb1ef36606d82124e9ed062263de546892d14c76270ab1a706e120459d971e60dea2d6ecfac0971116aa16ae34c335e12b740de28b72f392037055fb2b9484f2a2a78d81227acb9b2081d150bedc565265c79a86e68ef1f65d082f84627ad3b44b202d816a56619e31e71a28bf65cb104babd54bf35ead2365a96196d10951f230c1f801ca5cec3076099d123514a80849fed2a09b16308ea2e4cc71504a99d0a844b7a449ec0035df00e55c1744e0a255bc69bb6546833044f8bdc9e75b09f0116e7a5c48ab98657d4f608c34a500b6ca48b8d08499406643e142ed423faad9e267c9ba2c3840475ed0158939831bab02b2175e6c24558b150f94500c894065d5f9f649f8f0dbc248aad894506b12a3475a8f98713e701c1216c271fb57de275b3837f0c43b9be9744d8bd23817760d119c0c7a6ee3ef76331852066316b1379752b890318e7fdc96ea6336e90f2dd761a577fcb76e61bf1dd67510fa2018e2083fa9fe49a4ebcef67ad7b8898744053fb03c2631cff42702452547d7876e38cc46c3c62876ce278c92803a8613dc4f34a0945719e6fab87a205dbf94620486ad7d956636198c4dba41ef8e125c72a3e8fd19619b539644adc5ad72309b7c08d930cf7cd0cb2bdde8e027e3d9e538966936f2b5e36f273924fa9d4f530d5cf4e7ceadca6056251f0f6a33210036938658ce2a2d0ec2e55e11f7c3f30f9a0b699da808f49909c43ac85cd10a9ed9477abbed0541b8234846f345f1cecbb29ebbfd4079bc65021279fdb0523ba93846636d4172917a070591b07fa8b4f4d53fd5289b804f851d41b418bbe5c191113837f475b9786901a84ac23e9eb032e4774d40057504e97a69338fc21c00c4a2b5bc3c239b188521235c3bc7528c15c3b9ebad8a402b62bca8f12cb5dc9e3f088e9ad949b74a3031639a07c8e88c9a7687211c15291fddf826dfea34fbc84cb2836c47089910d962792594fc640af4dc641c2c675422627a01c86cc7f183131c3e68e381127a3966a4cafed808ce8b9530276772b09814ccf6a203aa405275e3bd6f811aac6b993b1dc18df49ce518356ff345b1a5b19034d3440af03bebc89760cc095e87bebff008c301bf61c1cf211245bd9408c4a52688991345503bd4d159d6017cd8c6fc06dfdb60cca75bc007667b2414831ed25a27411e89fcd184abda660281fc6126e7152b0226cceef2cba62af89e14f31ae2b42c12d6b6ca87e4a09052060d7e907fa908041f5a9c901fd9ddb016ae8427008a7d205ea8e2a9ff798a924f94312d08619f9d4cf017da267171da2006255c92cc67300aa6fca4621c13eab3633c7397df4bee74d9851e5c283f95a4224a0e4b354f675e18ac58fcfdbf43e5dc0683f6c9c4a9c9ac825a33635fcb2dc9af884345cc10091042f1bad15338e06c3d1dd26cf054ab2218e61e5dfb03de9601c5d75472e447fc865df6c3dfaf5e3d82c6d347aa5d94289da541a14f425221fe3041de7b80d35d1cbc8f50556b6906a19022ef32c947329a540a136ed2913129ae7f9b0ebe36423d295e2225834310703a9edcad54d1992235059ec11c59193046af4c7955ad847349743ab88b9f3a503113c73a8f41cfafeb79e8a896cc6627a2fc53bade0d1b0db8193864adb98438e7221ce8b0ca22abbe44a96ee020cc0678a46ac468fa5fcbf0110e8b81afece20994c8448a3e1e596686bf461ea20cce6321b458929d62939f8696d2351d6efcca88d6214ccbade96afe5867c8b006e1cddf09f148cb85b7dce03d5e07c43007047953922e4974d024d44bf1e08a0fa6168199086901f6ddae57cbc03bed2445156c63adb2a8e6fd8a1aed4c0b1e258bf1dfdd4fb811f598a38996b8031cc3a693a6cc52848efda5131812489883902275c2eb64492fea331112627a478ef1458978ca5c814aecdc99016bf27f10153132ef828421fc64b38ee05f881f82e26a7912917d94a90d762fa46522f069207ed505eab8c6417bb358a650faf230a3bb0e93f514d796a003988c9bdbe306d88f64b7dd619f8bc9e02455f257031db557cea684a91709b2ca63d87b2c247c54bd61fac18ec18ec1ebb2d1c1dfa64e5ed33abebb125c64fee09482828c765cf1e5c7347e7a84a925e3e2e817e11ca2093ff4c870479e7c2f9ea198e88586f9b89b89ab53cd04999a8c9a3295063bc7b87849a96cbbf5018ae1b8410477a078080d2ec12d9df14153fe00f61582e04e29f4dc637e422341dc682161e25160d38d1fe9d26b47ee1286fa951acdc3c3d24bac5ccaf4b58353753b5452d58bac062fd2e045b8012bbb9f0c5ef5ee544d20c0aa35faf48e2f11a24e366caa4f1b44101d14555c9d5b3a4e94c8f73a198a53f386cbfafd79bbf558b5fd220006bf10c3ec1aaddfd8c97e543602108e7fd2259981e80ab37cf00b62c9a82c243c0fb6abfd6388c562215aa6bdbae91de948e748b0bc98b254d28862cf90027d5b2edc21a21fa2967509e69d4b2dd9eb0aab479ca7844349f21d3e44a05073ad28281958caec1ef1b01297df4ce802d5288f9e8252032e91168d81801bdc3f3b9e78b76a433d8b29298200ec9eb3f020c2a03ea30ce6c5940d855a503e5fe7a5aac928e660524ce6a8dd41e39b9f008cb02c3ea6d1408a17fbae4a278ef575bb643c1c30768e343677bf557ecd62a02089215c0e671b5c07a120420deba5cce118c24d8b62609915bee2da54c522699023207bd069e067c33ad4b5b1c6e766e766ea86507c392a4b5516b24403dd484825a3b6a484f9ad26d4b41dd3fb705a1891096f0b4a016643317e48c304704ad0eeadf7a820a83e0eedad26d9be3ae2d39228e694f95a8dde368aa6f2da801eea6b2ec6078493adb43cafce08ffc0c53664802129de22684ae236a6e49cfb4209ad69e9070a9a5c4dacd76eefbeb3e623bd731bedc299feb6c0f941b0ea2866474741dd26ded6b4c4d6ab6d37c4613f08594228f90d1ca2312d28289888915c8abd28054c78cebc3c6658e816c5f3a85031718fb4e356ecdad2cbd2048734cfda8b283f95897847a26dd21afe418c8461cf39da23c2f30e2949bcfd11cdca61ccc8b36fb71e18e952b7dbc706507942efc31747bc4a33b9574b41b250f0f08ae0efc7699d280baf0a553f1a8c84fbb334021025d87eaddfee05f410c474a422963110b90784f8a82beb8af2663a4cb4f8e98784f5820c5bd9111becc8043cf643810d03305b82f016f889b311302dc8cc6cd6a6c80d8ff4b0a078df76f85c9e4171f2c19a1bb270e0a924b3107a553ed2facf18df613ab41cde4e51c1aa8b7c9d0ac06e48d34f470555555554577b8279d6a2f23ea81703bed5c16937bc659728cd2e4979901f741a7dec931ee2bbee1fabd6fcffaf05e47de8a631c4e7f06300df4c332d0aead38e5de511e34b8fbdeb176dbb30f779f95d98e75e1e1f7bdbb2b65862d985c77d775df5738c637d4a7f6cf467160f736dd8e9a6f8eda91868aa24a000a159028f5a0e809a39b4c5ef7813983a638ef7f7270bb5570fb1bca39e78a5ce00197dbfd84d00223ee5811e80119b4875c54f7909b8d6bbfc57531a75e4cbd649a1a82ea414471a23f412de23e17729f2371211fba4ffee4c6ec4c4524f69038989b18f7217140df34fb861c4c3d52f946c9d1bca3a32751bef0279a06c691077122511cc883dc08f41a244744ef8997e42db98fe7a6fdfbf73ec5839abd28f7a55e949a4e3d16d4f73293d790ccc2f42f1a3272ad87ed2ec648add8b8106bbe1f01160dd6c39f3bdebbaf2864f91b63555572661562405c3a987e7a4475d1817fb8c924b43aef5ad2250ea1ce60236d9cdff0ac8b50c8f4af9ef94444eb41bdf40c6c2965c50f2184f02bcc075b9b9a4ef54b205da83f3ad56f7242edee6bf24b8ca5fc2bd9470f90a1cd7ab815e7c82abec4e2cfd9a68c0c4dcaafacac7ccbcf15ac054b5951571aa63cd316fb3020ede67d135ac1b29ab55b1f109e1e4d49b526a5fa1e48e37134295f4320e46854be63542854ad4e06eabbe561fc0a0663c5a661acacacb4b43c8c9f9d82f14c71603cb7c0f819980f6e918161539d6a192b2b56e7d9506560efa230171aac5ff915be3ad08f6177700c88bf8d83e923ea6735382d36c52244cd38ca8f9e61f9aeaa8a85a7c248b1dc30993c3dcbca3396d52b6d5a0573d1a17dcaa7d81f6e6c5c3d615943e2f65799c43017f701083a62c473f3e4cbc75e0a869eb1be6748f50c7fa7fa5f3ad5af81772b9b236db4ef3a468da83430e266ad67a21c8d4d8d836939d495cad174c9c18154bf73e3bf730383a8fc2488173e08e183f2bd97b15ce7c31d59e21ee072510b88ee112232477c6e7b1ced6dda92db28ceb5838a1db480e726dea04620547fa60f883aa8de2ea859bd3a76b05cc831d03d772f0dd35e92fa3793f15922f3d2de8b4426f78c06e0cd610980d9324cf37ce2cc88a888254644442d26d51740911244454a20a12328522249911244454a202952024911f77c41e09d656998ae11a84e7e48cf7cb7665577becbc9e6188ef7598777c60bfa9df28ab3baa4bbd3baaa392f8bea98d735a90ef7562563e318fedb3bae390d5a0eab4a710cbf7430ed6ae64a7e663d5b95956355cfa56fe15c777777b76b251e4b4a655979cd316ce7d8dfd65a737f0efaa0b5d6e3b677cddbb9083869adb5f6fef58061e4b0b8a3640a0b73df50afd7dce1737f4fc1f58670df931104005e3005572b41683185d9d300232c8c000916464682008108083f7849c10080a123507208a86888e7c6b85c74840b249a8c52c6207cb144ad2e17254185205477b92889252e54bf5c9484132e10d4be5c9404170ffa7b5b48028b7bc9142591e45e978b92185a42c6bdf7de11ee7befbd578477c410aaaaaaaa6ac8f3103ce82f29180650492d66d1911c1c8122c506845ec0040b2a48601484103082f43031448a2746461ca10a1ea02410928484255974c10650048182d2842c9470852496aca881e3591962001380228a2d6401740324435da88152aa2a41473c2182f9847aea02154e48e1661fe404164b70e208c709a318a1bf867affe2978b688074b39789014a881782aaaaaa0a06310410f4867aadc8d1ad978b8a1025808a251c29c2098e7064022ebc51258223285380a285f7de7b959027e4bed75a6bd6575fbd87c433e229e1044a500174d98416b3a88926c4011425d1e415357174e5e5a2268c9e64724516498cf081204ca10b9e2d6043e8a420094d0c45515202165f0060073faef8b18196d597f663881d236e2005291cf1c1901e2d6881c60b9c10411045b4e042115948321334a936630dbee3c89f34a9f6f351354d7aaaace95a8e28c637136bb7e76fe8b734691afafd2d47cdb133653bb776aadf27bc26c779bd4dbff8de9b1f27c79fd81cead47ca261dac19fed2c0bdb615db449c5c1d1344a9e2acc65f02ad31c9a4b6033a85315f688e4a9c2e6ad5891d3c9549de49df58ab7b6854dec415aedb43868099fca14a9f52fda9cea5ffcf9f1a785f1b5e28c473756d547ac7a1366fd104b4f0bc655e4fa530bd253aca5491ba0df44719e6d397a6223c8c61236846c1849a13bacfb6852a554078dfbac8d20d75226f62cacdd39e38a1833d6ac76e7d07ca2531d6314aafb88550cc4a33b6d8efbf8b188ca57c6222a06e2d1cd99ef3f6f116a76e2c1b253d08d3c9c83c6ed9f9867f1e8593f5f87bcd3b6b812d4cc46cbd1b511a483c63df1704c67f1c473fb6d5cc4dc5b2d47b7dfffc4dacf2147f37ae876bb2cc3e24a46f82675dd6898e263d79d51c3a8462bae0faddd8eb6b97f565a0ec092e5325a00db5fe69c0c74a76aa9fd7beff1ec6236c70e8bc92f596c377bff266a3bea56f71faa532807f39aa571a54851ab49a9f66712751f2a1eb92aa40c14c9c4d27d32ee7b425aa448157801052c90e0420817aee7bd294e450c5971fb5fcfd4dbdf52ee30810226f04069a88b24943810d01118618400041d31e2b9712b4349dc8a77022142401a52020442c0a1c10c9e48cf6289124bcc00a96806421842f8208434e27b105ef0a5a1f02f560c03d3800c2d7f877fa53b90c822e372304f5ad4561bbfe7ef3de73cc0c2c2c2391ac6afaeb9e6da734ce5943ffb37773d7f4ee73a7864362a7692f01229788916b59efc01a6292aa7985db7a4d9841a50eb597aa274547352aafcceb976fd9973ce35f34e03a2b58be2cd3cf7ee3b4814aad618ad7be7ee6f0bf0593a689aa2ba7777e39e0ff3d340b1d4e7ae4ec9e79c0339e71a5777cfc1d0c84ac4bcaca4eb2debdb8d7559f2e765c16f715a52ea408a18abaaaaaaaaaa98955c09bfbd8bff3e203bc660beefd737fcf35d3c389aeb69e3511280c6eeb2198de6ac0fed66f58573542f9f1f3608d09f1608171ddacdfc76336dcf7543bfe7dd04993f84bc694c80f817d66e9ae6f06ea81d4288d3cdfcbe89108769990910a1926bbd0ea4b891072bb992a8c6d5d4c8c8a452ff28946529b9d5c3296ee4c144577ef59685900555e910b5eae84474ee39282b1ace67f51e4ffee007e43a6b3537833999ddfb17da672edf7bee758ad97d7154e5e5a223495308155e2e3a72051747acf0c747aa68479e705240c98aaa2caf3ef85095a5ba5cd4441737abef2da03eb58a2350273563a146a03e298a44917eeefbe99cc031ef33d75cf08d2754fd6190eaa215aadb8c8f9638e67dcf030af2a2f60321d1a9e7eefe808854f76edebfe7223bf5aef780e08fc3e09b1db363c7ecbedbdbdbbb7db465c7a85ad3a9f6a62b547e1845e5af446aa3a066af8936c42f91aad55ec62507f8f265fc013e8418df44f8d0fe10976e9ac75af2228a75c9010271b981d6c5e546caafdce53dcb085df3a747f2b4283c404142434888da12d213a5a52897cd7e5acbd61a1907d33e62dd766969e83200de8ebf4804928b8222e8b656c38c8224481017d980c96dabd3bdd39a0f935f32f8e4f6cfa602c760dd05dfa02fe8f285444a18a6bfe1d191dbb007b77180410e06b36e3da2662f2808fec8a09682ea83413215edd2928dd24b4254f719fc41452bd48c91fa09591314aa4b77945ee298be42cd20d2ed5f5aba5ec027afe10aaae6691ece7139a67d6beddc39e7aedb6aabad6ed756562721f56f115bdcacc6263cd3bae430815c3f7fe786fece4d7b1bced1d4a679d82111ba28c7d33dfdd33c2dd4434888daa88f9a4769298ae3e9691e54a35032a956227562d2a84ef72edd7edb771024b77d0f7592a64111b54fcf701112ba87a88abb84842d6ed64fb43b1413076fc3a98101436c9854bd635eeb5909d0152ed31df3baf833948b6a1a37a82410f2d3be9aa0f67096e159b0aa1cc585ea6eab0ff27d00c173adafde7be855bce1de754ac64f6dcd11596d229afc82a30687906bef6eef76724a2965dbb6c413468c2c19516a41ee4c3ac5f7a5cc808426545c81c8759bc95ce1450c9ee08e4e42a85c1483276ee688808838a29ee1221818ddf66e497347aec96d1fc4399c12ba444dd116541f74ea753be098f64e09df689fa5929ac840e8662d48062c637c52365aeb0ee654c6a9a63b2ef7e80ee618f7cfca50a23aeb6fe39ae248eb42837f5f9dfaaceef0774be35947a467dabec8f8a94ea6a2a0729532c3165f48a4fa7ec62635734441954b0e1510f614171dac9f3fed0fd55bd5efdcd838171de80fd6d3e79bd317356b41433de3a3052d61745b27e1e866cd8865ade79bcabae430fbab0ffe3cf41099d4ac5ee7e1cef947d9296717e6f63cf440428347a767b86809a1ebde869628f20643107479f49d010a111b600882aec461f8f121d6df188e86f197f0db855686044aef664c45e522289a643af0f65085a467da06ea2579801042082184104208210c20841042082184104208e10bec62f20beac9dce69ceb2173d52065ad28d47f8a5f5b1523d57d0d7fbd25350890c19182e15f98064bfb81c2e497cc8faeff7c3d032184d6454af818e7880fe5132e372fda17ce29ce64aa25125c875d708c2f718cbffb8a69fac7c1380aab327eb8275ef06a18fffe41a16afd71ce390823cb8b3907c5711447d2e7acec14f832ce2d3519a6c039a8e0aec03457768a7133b794bd7033b714d9611616bfc2e2430c06a9ac0ce0cf80ee627ce7207450dae7afda62f24be61a0feff1a00744eefc49e9bf22d54b8a03dff4feafc9abcdea59d3e99c73488610906befe7b3a3314dcc05e9763c2957a7e067ee07a81f378c3b05e452accda4a977fc9df3e75f6f5973ceb769a738f129564309a5d424a9a4945249e3132830f4653fa1971ccc0f111310fde11ca7224c274ae9dbf4c9447bc8c1a804c9f6e63a1890f28b05948919b413308c77c1511c15b7832f8cbfa65a3f43ddee0738184f41cdcc7716c9c2f2cc0a60f91f0dd3f252ca685bbea52105d58c897a861a1e879eb91e93339501d6a6535e43a7bc53d647ebc29d0f785ced8991aeaffc84d1807c70cc8786e9c860383ae533d4d0b8d63affbdf7cd14a7be4b4abd09210d42ad3fdfc5f4d5f44c26d358cd15b51f87ade994a7d84c9a2cddf1d79f622d08bbb066a4538fe460fc1bd2659d6d366b481c23d4a966a4538e4450a73cc69db631e511e3b63f3b539342adffba5b52a71c4985092892dc9a2100070cb3d6afd7adfef5b967284e3dd5d4c8c85c364ba5a6cd1ed5b655625033762042d7bf05e919be0c70390686954ab5213992ab6ed90c01edc6bfa667b8c60f589aa615003f83e1fa8b57565624a086d4294fea947f95829ac98674db751005e2ed3427c309d5abfe7d5be21c5d304d03352cdc9775104278deb315d640ee0e7ae648aefb37c4310ec8c1b81bfefa0b7237314ac1f56db61f93c8eecc0d42e7d62eefca9bbdfb5a14ae2ccb66d5acaa8a23b363ee264c8fce7d603ae75c07a94c81597d7f93f27d65e57b8fead48341e2a8ef5f18e6bdbbaab219bfb4ef965fed07253ef9207495747787d01f3eb4af538e7904cccc8f9999f93133333b5799991fb3731e8499df4b4d912a4111ccfc98f93d7ceecf98498aea9e79c963368246154a508221481a0d07f2256b59ba1d0577f7f7b1089546168f3a1ec966e311c7b453d08cec14749bada1a4f67b57a75a968498340ee33fc338a6e3b93723e71b1066bf0eff07dd5760be30e789524a29a594524a29a594d22b2811a80f1d4285ae20c2637925a1aa73dffd9ec37ac8dc06047a447da8900ff5a14274081d42ada043e811b5a2a7a7e772c2101fe2437cbaf40a5a9712b29ac96ac5e9d55a1da6b8946e4fa55d9de286d79dcae99a2e531e8d87e7369e7957e86582efb9bbfb7bcfddff396667669f31660c8ac3eecc97125a54525658ae1830585a1e8ae2c498322e66e7feeeb697412f19ce59a7f20446091122640ab3b5e6eef2f79ebb6ccc7c7da02da92e6366be969031335fe90fc2ca1d7e64e6cf5efb401ba2c9e043bb5d5555e52e9ffbccfdb93f17a1830d9a84d0f7de537aaf3860668ee94014170184d0ddfddd9f7b63ae925e4b70192aa5b64a4a9b2b8f88dafea9501c7e76777ff45af1b73893d55d8d2b30c1c4933c29a9b5244ff2a424098374a0031d802145912a9e93e7c489734e9e93e7c4893f21aa0e1d3a5a9a70cfc2b370553c27cf8913e79c3c274a267a7a6da80d7940fea8a4853578d02fe0c45f1510429c67d92fe0c475e059f8029cf8059cf8029cf8059cf8029cf8059cd006830b76a0768f3abde06c400e06a748fb71302de8c2c29a2ef482dadea6af0ac88f284178789a4feb496a3d17a50dd3e9216989ba041e60811d9ef498940725133dc146d486e4f3371a341a176a43fe04c35494876d1cf34e23e8f1a3214ce3400e54825bf5543d465c482e553d550f902321bf905164941c7038aa3545c58fb810c3b4c7c09db88d74b9b52126b50de9309472391a38c5ed36543917127221ab46456585a56148a570c8c8acacb0c0683450a8977f168a53047e075518366843cd09a69151649428ae0bd55baf2419457ed134d0ba4f4fd5e33d954fd3b81117d2e1a293d2ebe8b916219c73ce5b0f0e337f2b99fe5a6b4d8724ff3ea2397781ee002cddfed914c7e246ad7f92a9f5b409b5be426abdbff730f681e2544fad0fa9f6f1ab7c89040a24503ccb557a303107611408bd807009c22740a804a16d50b20645560ffd5dc57a9e9ff295be7ba6a9afa2425f0546055aa762b3eba9cabf67ac86926ad91ed7b54e7f59fe14ac86923aad8ebbd6e99fcd72e4bf6bd99c93b5ae7f4af529366b3e39d55b1f63db6cc7afa337f8952af0d9a619839fba2ee14be9c331c072dde6c818dfa1408192b213238c51e59b9d0d83b011d1a038c581364e054b4989ad3528f14108df1b47bf4c1edd7ea3a9ef58aeac0ec67d11ea80fa95ad589527ac7a8941d92929df7ae970ae29affaef681c101b1d83e264ba4e3169948af2f7eeeeeefebe613e5cc4c075dde6bce917904779b85b3dc569cddd20e3682c8bf9efc4f8ee63e32056d96c274eee99d6c3f7fd6b8ecde766bcb869fc9289afddbe434175dfddedaeffc32c7c5823a2dd78bfe33bd7fd5940179fbe116940eefd84c91326bf622cdd73b939dbb22c9d6e2c87fac9bdfd3b5a397dba886832cc8f5d1fdaac3bd2d91ee1b4391d7780b4aba75d403773d36aedea6932b4ebe7663a7db9d7691bfcf2b9ae3efc676774f3a19bfe620f97ee7134efe7b2997c574fbc7c5aa6d3d9e573db35ff74a9acbcbf4a8bd7d306e2d7a9087fc5bea077cdeeee69a18b33de0f12a7f7e35eb3efaf14ac86516d3c3746f9b1c5e83e7ed6e3ba8870ff1663ec467bfc69bc7a5cf0fd0b72f1b6cf74e2a56fb2e85f92c68a9db0a7136f7c9395efb2d765e158d0be9d9416a3497b7f9619d98bccbf3b7617f6ec3243068dfe39ad18a34e5b580ebddc2d7feb856ff1a2356268325cdf6c3cac41df867475871a1f6bd89cf835a0ad7707889381efacf3ac5fa7736a3c1017baf8fc659a0ceeb356e3ddc7e0e467d5c3b799933aaee338aeb43a7da3cdf1aff1f0b3ca12b90d9fcdfaa2c1bf460d6a75fa7a86e3b6df41ce6a03b531b41beddd66edbe60759abe7b9b67d7f273429bf1f08737c84098d9f876eda1cd815fe34f1e03c60afcc63ec3715d66c3bef074877f4eb336fc77b01966331cff420c4d06876fc3b92577468c2f8597ba43e85fc3c6d06eb40c6cccbdff9f8bcde40c8b42591b07f33e2586cd502d36439d2c3b181876c5aab8538a7530d54e7630523afab3af189a0c59c3d13336c3c1cc4cae5ba8e3fef1d9715cc7c36514fe0ef46d50a8685f7cd874fcd2b7bed1879f3dba03fd479f72944ca7637044dcdddd636837a047140a4ead25f1b9347aa62184d0bfe537ef6b3e9d7636a7fdf50f4a9bbd076557d54f66ebd97aa594ef6d5cbb1e88fb784af962d67e5a4e9b13ffaa7d43b559dfeb536cd62de35f8f86eb61d9bbf09f47fbd7fae1cb9a8f434a779cfed99cf7d75f27585f9d6d4f6f395bad65df9fe08c2fb6f6306fff5a531ef35e0d6b3ded46f58ebdc7e07ceecff09bb459bbfedc73f669ce7bf9d14adb88683728b52ef12febe47bf62e7c79d9acc54bcab71e3e570eef7b3742972f6eba3a8527f7ba2b0f5fe81ae072110e96ee52e5221c1cdd79db5358af3759589b4c21e66f61eda3e9d9d154ca29d4f4733acbb22c2c4742150b3af82e5a2b2a1f61a6d3cd12bbad8aca676f73dccb6f9be9646de30e901f179ab21f6e7fb36fe360667a9dce517920aef57366f061674de9663a4d71b276adacafca37535f6775fa42a31eed6c0e7c956f9b3528d7f4dcb7db662695c6642e67838c0f6db42ef2db9bbe3a9a930d3ce0f747db4c9f3528d5e6f4abfc69a5f69b60b44cc799e80ef8392b4fe90dd7852fd3e37ad7f4f39dc5047fe5a2388d483bbff00657317deb895fbd09837ce1c7e72aaf8c53c616a5fb184d91882643d66e9cc9605b3683b6c7754d9f59df6c33d91cdb2c68437c4bc735cac3bac8b7bedd3b1a99f8dddeb520ddd13ec764b3e6f486ebb69779264bb36ef1a76d5683722bec46cce19519072efc0e5c08ff4a1ef3c6b64415106d07b21061f24b110e8a70007493f85c19978ba258bab32f0f7a4838a026d26e6bfe33b236df7dcbded5e96875baf944f1e40ae072511448e88ef6ac67d337bdb0ea2fbeaeb4598fcbb2598fcb7a4777e4c09f366b336a18d51e57d6e37a7efd1b114d86cae6c47fef5c0e7cbf36ed17ba4f23a2dd687ff573325df85fb04b85894ac3506cf00302c939de7b8f9bb501cfcdae0b09958ba058ba3d45aad635d765e0ff031cca6041cd640cc034cf0460ff0c01d77f0280697818c0f51d6ef7d033addaac3d0f3d3ae5dfb01e325692e9a1871e3ae5ac8462a99d0a9d79a8d4cd5665350b15d100004107b314000028100c08c422a150289087494c7e14800c898e427a561a88b33089511c638831c418000c0000802120323333548302445894ec00ac1008386fcfd46dd491856a3926316511e122ac890104d6304de4145c3db184a38deabbfeb1e5b8d526182587d2120c25c368520c1de5ed6c2e49d9841a83a18089ed42330f27d08620c5a3860777cf9159de1a4170476894a4226301e0c6ed4d2eeb63e4286ccc1d5b935278ddf85694fb849e40b0204506bd88ffeda4a79106c18df3b81a0d234f06485d53189cf41e9298bd4ed25d88e1a6570235bc3e6cb72fceee41d8a2000a6ec52bd7c5f327e52c14cd66f7ff4e26bd18349837a760978c3dadee18fb8e87723c51633c2fc13f9f7760a20ba89d5d924d2f615d12afa7371657464318c2e94b6c8e115ee3696153f36ca34351f8eac8f2a09a5822f8cdf66aa9df5e86b5b506bd7b12fe560aa96827c98680285efbc814ea1b7c6c31c75e8e53379946221d1c728a008ceab963fb393705c492352e1db3cc494291eb5e6230968e8b4c11582e3c6652c79955627b40645466ed5b42bf723fb24ea1392e64484573200d877b6ef37569d83c5de670e5bae0c2862960e815b0dad3848ae8d3e86ea19dc02b452a398fe83e5c72e83ec8fd15884147157cdc943df235ba8c8a130b2daca9d548e4ffa13dca2b702d940397495fa0e218835f9dc0eb07fdcd4942989ebc1c0ddd107b567ee97d007642f2ce6d286dd486c4c6816e7cbf8caf7a612e320631a6391bf4ec51e0dcd6fc43db3d108b3ca80c466be425ac1b2360fbd65241f570939083a2775afce1ac47773c878790754f05cc4319dccc9379bbab20bb60c54e66b3296e4a415a6b1415da52256d11f822dca02b993806e77746af1d0d98729148a5af65a0a463fd98fa88b44c5aec68748ac6cc1bb07e7eb2e698bd0afdf3010569c76458147843c8660b72e40009febc5d6a77bd190d1715e44f01c775dcf50551034417eb29470d5cf68af8f36a0727820612755eb70ff3d07c7ea3aa7e4a30a40e36968f61d99ad3dc9f00b469e8bbce4cdd0ed8d9513b213763cc1e4d115482a8da0b2702ed2b1b6cc6d7cd68cffaa609a6cebd6eddb580ae518a57cfaf7044fa750d1c896b5c21462de5be7324fb6f9432b864a30efbe9c3b4e43faaf9984835b9aea941fc6c3458a87b20eaba11bb23eedbe08206d5428c4b43beedbd1efe9654c38180e1da025a05f6ddc6fc28d731a503f849217a68c052b34b7e99d35046480b488aacf645123aec42fd3fbfad2306af7f6292cb5cbf115ccd6156d7725ef8afc962bb3fbfa68705188e0e295442fd4d8ab094fcd070e0ea3ff69307007062cb380917979b491da412da780868ffa6e1a0216b6525097054f36d5a86e070379cc917d0d6668d5d3ba099567008c891184773adf364d8f1a6f25d98230166e94c8b3b5ecbf39da474da026def69f5ac4c5d3a3d941dcd9eee460fc7a89348e9e202ff561851e5bcf111f328c808d5c570cb7a627b0934b4b846f6444a4b9e1edc22121be8328186cf03f4c75cfbcf1b88c0e1900f82453db59e4cac18fe8e26828cecdced584b945fcdc7b02bcc3cbb5fb54b3a0e02e526abc94c2a018fd2a1f0d923d2b8a1eb54dee725bbaa752decce8e047eddd5ecdd1079ce27ac6a28b811ef94afc7823c54099369b8a91f8253a1540b53c74a13640479281261a1b38571cd76d673f0a04f8b75b468e215d400f83f06c1d0df25c077347d5bb85fa7c35bf0bea000f8ecae01104b9e25018501101aee44f3e8862de9f14ed7a5ac7199e04a4034e509e88e015bae6f38c20e1a9fb0d8c707bc51c2f1e04781af1c6914e4385a3034675e3f32e5ef866faaadb81818ee5198b664253f4852b70e383c60daa5708c8a75c1275a16874e899b71bb8e8b8881879b62af5b2e75769ddcdcd6d67ffed4d5402963939c9fc7d2ab1afb5e49c160fba8b1c0747aa3b8086dcdbda5d379dfd3d66bac5645a76ba3e8e8af7ef16b69b9214fd80be1d7fa85c165716599734602fc3dc04dad67724004a3052ea781b165676059dc750dc3054eee508a2e13ea21db882128f446fcaa50df96805240ef284ea73b0b4cff38fa368cb359a760d5c42d4a3449016924a9f9a3a24c1f1cd6e1d0ee71c1b8418c12e7ad400d761b60637738faffa41e8a6b2a238f630b82ade3702271026530ac73a1584d0ec0c44b2d8bf74ba8ffbf0c9f24d7bf05196491d2669f0e46caf344706c05e8eec55488385e09a290b3111dda1613cf888294fca7c1bf13b1e980b80d801febd5a26a6021f3c911d95d0d55154d8c3fe6324995123659090aff983f67e5f3dc1a78802984cd24ab85b3068e08dabacc396371cddcf136775ae526e1014cf01c7f9b822cc33d93c5efac3ee95236aa602eb146bf6edf915852ed15f6d3d64df218348bd222848cb5d0eaac8fbebd2338dea2df5e9ca3d845c3479063f080ac0ccd8fef68d34e503bd63519809fa4ba0cf2aaa80b155827297ad085e21dd586ae92017645ccb9024e20a97bcce1d5eebb44ecf3a87952d0efdab77fe9f2ca9c9f7f7f40cc2386799e3b71e808e20759bb46332751f11c1422c972e0c48c60ae9732fea2629651765788d60519856520cadc56400ee6c4b6e8234a780ed133eb3f30e236c69aae225b53287b56e800a086a882d52447cc64b98c8ad76d2b495fb121dc5ce4c8a2075b68c55ecc1a23be1942d0999bbb6a368cd953907718210c0411e54ab22d99efb7698b409eda27520bcd2d473c53483442042cd2d34dd20e9051dd5cc89e6014db2d3ddcbe4a7d1b676eb15e3c2018af4f7403929d7f1e1381f9327df5c71ab4f1e210545c3119947e8fd5fed8d1e7470d4b71e1c5b928b226ca8d234e5827020f23652da537ffcf7a76f7687824880ad02600a2105ac58166d4a33ba1ba97c3a0a55cf34af85da22cdc74e58ded81f3af466aa4b90a7bd1f9ca3630521fb09c57d843ca6151418c8810ebe2648ed74699dff0cdaee2a480dc98362b3f190b0a0c9d9c6ce9e470a44eae35a26ebd28273d7ba4a9c20c7264803a9c29adc8445aea721657e472fd5ebf05272a9ac240bb02c7746e07e8bce1ce3ec3c7dcb7506f8e561523f4852ed4f816fc480a681d493cebc0f5b7ca3af2c6d190038c8d9a34a18450fbaafc14796a18b43a102ca404258cf1e690bb071d97f8e847ae180a699b98be420c9b1f25be56bdd4b5ea1aadd4a028a2ce62838ea5f232b6722e0ca2237fcf00ef393417173d242bb1f2629316c86e78c6a0d651c13d16e82f47a6bbb329144c7b65e90fbc7a0f9a1ce284af12b450c0352db2d5e87c9f6840823c193aea19059d51bd398b23a03f23939daa1d798d9d26b26f6dded602c6f9d405ea2fb745b1de6252d710b110acd6e909cee495d733915ff28bbbc0627adaefe2a6af1905d51af301dd03c5fd8437ef183cd0f36e9969d15bed13e648c501973730ef9cf3822cefaa54b0019270bcf2ed108c9c295086a817b720a661081d0cfa540412120da599a80957388f47c3a29dd6e9924de8acd92dda580915574148df8cabfef4c037cdcb0af016650e00ea91b6bb6659726d3bf5ab935f3e43b2f51601fee5fe6de7645f21535134615df6d928e6a96644e3767115a860d5488846b073a9f80a5579a0a92d35672a0f819a3c58541e5f788b90b9463af9b19835b982590b71fc64614aaf508c99ddf856bc34a9b2f45b9c65092da681f0a405da0a68a6a1cedb935e7a071ada7e9ee369be889f7deb4df90799b064b53e269da5228e7bdc64ac3910d520e2c0ce1d04b9134f4ebaa12f9f27b760c4a0838cf5a28bd72463730e529ee56f1bca3119fd2708da41f4a68bab292ed8067719c475e77d96d3ac090981885d9f0441888442a5a1231db535300f208ac586ac0c067f3be5c6f05f522b46f61dd99beca8203176c6981edeb5f29680e88b0b666e01201fac84b6b8621ed47f8abeef8c63815421c384eff365f239e62b959b465b2ce8c5b98263a29fbe21c14e8c946a6f8e6c5b684ca83bebf55d5ae0a1ac483365674aeaa78b82eb74f773ba2e522d393f604742eefeb5f9fe00db374df6cd4cab67b6691e76f8e05603199a320d9f2ce6991f1b4282d1e720bc8bae3f22ea7efab04b5aff0e43e6771c967a3613b0365d5c1f8ab0c8335a9a0b33a31f94d75f84f3a4e30f83b0aeea66780443b980f3512326b9329b88324311ea9b2b292b3d80d8634c05cc6d34a1504c027b88ab9d83880fd987cb124b611d5260e2a4ac18a430159f861afc06638f330a892a6ecff182aec4863b3ff835cd69a7389c22d49c46339a4b1ced5454fa04a51f723d55bf385488b1148c7610964321b47019455915de0de7e52de1cdabb705816adcfed0d8dfa43b0956fb58159d465b14dffab7743e49a3822f31346a4583118e0427ce8a52ab198ea64bad75a0cd42c65eff1c8a70220ad8046fb742428b8f169690c4b20156ac83f12189076161cc4a39348a81e09444f23a836d85c0f2a6324a0d4a7f1a0a3d574342a1596e8114693d2589ea5623c0a94e692f998a605c38259197fb55d751e23f9e7e2b898d30490e036d76dab9246405bb231de6086f64083eae82c2a33edcbdabefd4f12b6cd5679884b09caf02f55ab829d569950816e2d51a24e063d60afef014a74a2156af130082ff6dd20d29af552c036594e4753aa7ca385a0ae3e6089874969af7ad583f96135633e5dde4963b07b1c0fb12f6561069356a2916236843c169ace5fb934535c801f389166a6f611e261c54937388ace055bf862adc89544831a08ed80956fd0cd403193bbe82a7fc878c22e9307c87afb8121998867454deea5603dde5d31afec7cb825a80db7817348d486d20ed5b89018d6c5d444645baff7f616d53bc3795273d425b86a7cb148ce1892e0936e7d90a3f8318954525984e523dc5e9206a9490c58088a5d030422b8db235cb7c1dbf8199d124c65d74b88fad8249e7f822b02077f600638e5c4fb6f27e444a4f44bad5de1469a638f2f2229caa7c62044320c5e01eb410a6c1c45400ce000f3fc8f1f36c260648d913130ae0a2fe2a768098f9d4287cf20d805e3eeb749c27276b8f4632415b0284aa4a30b937b822e8e7bfe1f4a3a77e52bb178260a55e385e5cf99d83f950e0d58c25597fc772f8512a5e56d9985dd77d7c1cda19c318d24dbeb31c6d4e5ae543e2a2bb893a59ea05e7d3bf849460a5d397410cb3c7f9045b70b9914c801db7b1d22e525b9360bf70f041f06a46b152325a209c20527fa606bd393a04e7255ce4f0f0b5e6a2f62af464804f609a466568024edd8f43e5bc35d930ec6c500a59db5b70fcda35a612c89795ef05300cb0a2b013c5dcce05c928a82cd49ebf1559ef22f948265a8679db9e77e1493a2b30f74a11408ec14fb783a086046d4195d0a37ad8061b41c86cffdcdd0cf22c21cb12ce487c77187bc8dbd7c51af339e9ad34e79f9e86378a5ac35fb0ec820624ea27a7ef5dca2b49375f2a20b8de4d9e35b0bca723bef5987629bf857435278c0303866df7ab609911e77c5c927eb52583631d157a27af756aa7d2358c20b470a2724f626588bf5d82b212d04486417da314056c21e4ae029d0620203b40c716b51db733ad48215dbd5eb7939213d94cca8e6687c898f7b021f2635bf6bd83d34c86ce868329532f3086090a6f93facd1478b4edd0ce83e447cd9ab57f4f75182f57373c3f4823c6b6f60a6f7302e36194bff581c6ff4ca4a2fddd700ce3c991ad313a60dc29f9dddd61865ceab49265a07615654f70a25a877da42028bd4904636403deaf22a573f441f0bf4b70a47493551a7e88f4069ba4f899ef50cc1a47515233eeca128f4ffd52147342b5f25bb7230627ab0306c4bfd9b1e0fbd3a6d0c1cb1e8b629045c4ca49d3224c104aa7bf0e30c9731dcdbb7b1264b3d62eb173d017ee5850be3828c00a4c98e6f0b7331ae12ba181abf4844ae6736ba7ccb374cbf5586a3d2afe2979187bceceed40e41dd8e7facde676c069aba1524f363213891cafe085c51f682126606740ce327a6d2e0a9c529797758ca1dff7380dca5d6af993c7464dfbc2907bafb10011ad29c370bb6af9e858fcfb7522c7a0c6ba7d620c04a4adecf2d57372fa6c1c9dfbd4abb8e8e2fc69cb1b3a92bddd94154ee200aa4fd57cbfabd9b119598b2c86776041f9fabda8f51d7c61887e17cd70eb1298596533abbea995ead48e5776d1d4ef50c61e917c4d226745567a797dd525ef8e93fc5009ad44c423993c4413212549ba518aa07260cc8fe2bb12819e9ceb9e0ddaeda66eccff82cfb38287d2c2a512ee52a03f40692f66195bd22bc9c6f795b25e6f8a6cb8459a5f702158ecb38bb4f4e78d1f71f9d44334e014c621549046c46bcb31345913759b0a9288a61610b4980935b56291e2035612dbac75752edb38003a2d970d7270c6f74339282d0f89323b0a69f3f0d88c00abd36f48bd36f4a02b7554b42efff202628b0e954230699822e78876ad508c75032c2db5631130bf34cf3eb18de7c70d0eb5b56f87450954f04bffaf213397d67f5f75f5d821322975dcf5fb146df663e35347dc49d802760b8e23bf4ba72edcdc5731277810c75199c720e596d907346884943c5a24027051a912ee3c08241f2c241751e938884bf8ff51bd803c3e35f0638764da55465f34bf3dab5f07a7fca123892816ce335375605a816d90b78165f9fd581f159e5758df39a4dec289f928f6ba73fb66bf60504503632360181f232ddce2a0136536e5a2a0200a0451242fd9c11093c8fa0740cb6398a6901584b20dc7a694a9cbc90d9487c324fa4e023a2d076001a87723544e3ef59c6fa0d021d1474f1f01e1a2169c53990754446b02d74ad800530dd7ee8c5a308d4b28f2fc68a5020f29cedb56c75521267718bc817d0631aa1204f232a9034dca0710a118d955188010cad23a376c894ca61666246b1f3bd542387029d3719c637a07933ad9ec1cbf3c4694699e8ddac7b8b35628bd4480e240a9bc50327a1c41331217461c04750add6d319ece8a70d7d13909e2565cd654f3f417a8744dde56c4ae31030c0d30dc42b55c47d0b529fe051a1da38f5197ebf27698c796022b17f1cae84d4a7121c6d87f21546330028b915877bb93d01266b659889d0c4522ab839f154842dd8505557bcb8a8d491d48fe93f598cefb53f22746c478275d199090c40040f04e6e2a268eae3e6c7670c4182fe79a01a7cedc0e8b703bb2b09e53d06f8413de912521408368114454c8d07e8cac309b189e82b40ec1c7650920fefaf66c9651d459825df4dd4d39a49b0b3e7c2d71b161c06058a1dbe49ff4d50cf1d3c46bc11b4b1085701eadbf3f525e869b2215140c7e9ea26cd6a627e0084ba01ec85d5aca0011b3047f0f166d8d7a7ca75d5fff99e21d1e1513e1d2d963adc93dab053805303cd22dd4a8961e713e79d936a4dc10b1387250f2bf146e19dde2893eeea1aed67a2ee39d940e33982d96ded6408846756ef074e1ddf5b990cef7c849ec4a9732f4380f9392e2a6b411213bbcca060d6af02582403a2dbe56fb5ecac07d3c8c333889ca2269e267a2a4076313963d7433343f67af136c9c84e70984300a4a9bb0550decb004703aa14d8cebb27814cff260754f0c939bc4ba5233e07fca5e4512a56bcfb85a8247930bd7752d28196af2b3df7ac264394e9e89ae58be028a225397518e1b70e125dea6c5328a7cad50d5ce8474fdb2b19fb55bfdb90cd766914825ce8234343dae53631638db1596e9b776645008fd72a22c9f51dd82d910c348710f23c39043bb8f7c8edfd5109be3a7c514230876f6ed4f639c165cb4a1fe151926b14a461d109d467b9e9a137bd0fe390c9a70dd9eaf9bea40eecf057c232751f739b0120bca70c670b2afa503c5b676f96c3f365640bed599cbbd379f666450241fcf2b9632fdd0e9c99172282b84f34423f80a16e7d49d7e4def3f4a83d5c50d3e46189467ca94702a3b7839cd004d1fff9d4a2f3f03329d9d193e84373df0065ec87419568b4a1037db300482387f05544180e9e4f8a90f01461fa7ca0ba34ba52e1489961e1a9195371b5c7a5bf6cd035a7ab9f9d60910862a3b07f851b4192a307cda6c7651430dc87057b63d667dfb70a00936d11edcd9ce69a1e8db6544d6351efbffa7841ae2f2b27588b912baeac8a55cfce9280c16e698763cc2440648ea84a7d508497aa4f18dda5800751981c6cc8005521c59d5576a611643b74d554e90bef4d28403c8bc1837118771530dae513763cf1479069f0d7ea80031e02dd055ba0482a38eafbb184360ef1d558a23bce43b31e41f7ec8102d31e50f9be933f185312c09740dabb4a8aae808430328fd6869be1f4ce7408e56af4cdd2843b7af939e2658d226452726e9cc37ec3f59b4518a3db0e40ccd43e906deb166d4be4d76238c311cc00ec294a3e1519952797682c78dda2efdd188ccde5b99bda0cbe2b8d1a24c7594ab6f1c47338b1c4775c923793880948200d8778f9f41263197ee3365fc6774caae4578567c9d191397e3e3eeff9a8a5d17bd5f5d4df2b312210f80b59370c7b8dd8a681397f796fa710c74e5d1af04e44e6df25ac50eb7854657a036e6fdbca9a4e1ba58c0cf40d5bc6382342c3b4b860efd1f0b382763371050fb38e7413035cc65e5c9c08f077c436bcbdb0220b074f2682b77819e7164efc1370bd0220c2ff1749ee7bb8e2ec0b837687cc9e24edcca3165502c711d0c4f2c940c6d556904772a81dc8673b917d587e47b624bf807baa7d516213fb6bf7c36509710d93cdb1f6f9704c23d4af668abe168804e077e889ea38f9d4423444f2055964650778247c6edb7f2c173eb6262b18a789e820e7ba4b35403a110a2cd1105e5f2564845fd12d101c69ce3679216574741df892f66315d5ce6ab58b0c793425becb325ce3554bee775fdf6ea1dd4d82b28abdfe700b6c7a76a80e90319976d6242ed6c3e7e5394f685384692705045e0f775f6575f7f27dd0c4e5f0963161bd1d7af8ad864ce97fb1809c0cf09dec299ef8d96cfa99f406bbb51455ee241561e9806f36a99cb565097493812dfcd0ad057ca242442613eec3f8f29355410a7020c9a2158a45523c5fd06d101f284bb70277008f2e34e2f902f65f448a47fc4318c5a03f0013f8d609671d24dd44faf3fdf40fe930211a29b6eeb2c22acf0ff243c401f80e5e9af77c3078b0268343ba7bf0791e441bb02725c153c2d5ef081ccec0bb5b0349164b9a28977121df64a76adf33d31735f276a124f1bf922731fe99b1bfdc71d56c0bae8c4cabdc4d408363f76ced494dd97a6760a201f4976e690566acd44b1f278772524679c40e7911def5450761bcfc5c81a1059ea3bf31afe670744bbf70abfdcf7d1864b0b79a0d047084f4f29aaccef5694a0876f6441f0dee47b07684e606b01cfa42f1fe9f6c6f3c8b7948c68c4d87996ad167eaaca6f4469e9628a31001a9b12440dae0d474027cd2ccf1637126b936ec6135bd07b9c00e34821ef5abac5accfb7d0743f7f2ef8a8be31a6524e2f491984eb59f017d6e5ad66567dbe682edcb1dc7394bade118a345fda38db32c86b2d3ee84cb266c82fef8ac9e74e10223e0691db86bbd7deb83e6a4a0b30ab54dfca475c963271e76de9a7a4bdea3efa581048f57f70386ffa3ed74379413a90ec4d4e511751482566b3d668383731425c5826fcc29093908e4155f09b40ac5f101386854b9e968e75900beed11c1a9a20c08f98ffe0d84277f1c8b50b6baf40fc89b3bf746ca3450428e6091331b26f0a0cc3cb95c02c99d4ced1f16259713e2127a918482b7370ecd2f02b9e31e71143a97f027428bc66d2f8ce80fe0ae70df75f0ce266f3a1cbcf13f0a56f54e91303096f2d9b1990283645dc4a3b94dc6c74afb798ec8aab27a0d8b84464ae4a96427745801ea56e100e78f337df45fca716b36dded63d3140f30a55c02fc09bc22d268c8c19b60286914d6bd214a041a825b93837cd32efbdd4de58f7704d3b15d7225aacddc5588c4edd695db59820ce71b9b68cd9e51d8e9dc302c627efd92e5ec95b6a50a4fa671b39a54314e7fe1210b80340c76d04f104ffd8146228e6da736a56ecc9826ee1b5f56be570ec7f9e7f837c7f0f3f4442d61e23549ebe888e41488b09dbcfbf5646d7e54c0da38910a57660c694e3d525388345643eb3130bed18bbcc62e35eeacb72300d3c6bd7098f3d2dcf7f4bb3bfa61a348f91537453d78fb9f60a8bddb771bc3161b11a07485e5f62857e8905b33d26bc2393bfb2ddd1a49af4de5913cf28b79fae1fd6836784d757e85a098711c0e030713cd10b95aeee418c1861c19b40f1a0a6eebf7c136a1309454adab9214d3918209e3eed7e1b78b410ada99e95dfba4d1a9364479e3438d323b0a3c23ef829e1a4c59a864aa5d0bee262b1cab8a4b446eb1417ec42e92df6c5849815997cbd2a9c8470f0ef6a7c98905354f047231913f14e42471815d1135f27e4113059570c31a2c5f5754a7c2184f30a0343d642e9dee6284af82dc8cb9e230b9c8ec7e10fb298900e94502fd8ef1a0e63d631d865949ed82ca87784f23dc956f8b26d1c4beccbbd3b58b47bac45dc5e17fbe3d90be837ae3bcbfb8b1a57c067177d0f84b968135c925aec1dddf93ae4968857a31ca64908d90894a6a7891db737645540779d86dec78f526599bb1f1ca021bdc4ff512c1ff0a954e9e30304c82f05c49530131a2adfa12215ee5b7256d21994f44958dc942b1417c95facb98808721bf2933e7a384688532e06515cbe62f252f41a364d057dc8a73aca8e05eb05e1ce74695a2b6c26f592ba3849bf45885cff2e14f2d66fb8e1821a01a3b98046b8877023a16870cd229cee354f718e431ebaefee2dc660fe1ee765b6e6792ed2150b99b021a826bb602473b9a8251406c6482fee89be4e680efce93c7a4f027cd51ab17a04f00f4e161616352d9ad64fb033ea76bdd95f9fb47c962bf72b74b4d3b0cd5ab8ca5afdb4776e711b446ef07d37e000f41f58f7a183bc191df0d76f6351a9683af17f6877b1fdacd645837a40db23f18d7708b74845b0511f8e5e87c6c9c488050124b155e01ef493a41781bbcc11b8976dbda15fb1d8e3309d1eecdd65df0553cc4ffa4456f4d46a1e680468f96a38adde7065df2b7624ef3b78ecd6c83e09833cfa6c116c60203dd8ceeda437ea6903f0750567b0c6e98532e835a5d05b4ca25c03b01bf7b81d7b88645fb0749154c4e1972ed99a0406f25112766b7f799e1c449fb6aab59524a14d1db68757481699add17babb06b21b63db1808d7b2e98b128d8aa44b9a58c5a21a2d775fb41d78110c2c5adf51a2eb4af041797f691d9637518c1fc0d2ece9735d6c8ff1b34cf5f69308e048c045f510176dd5cf58bb1384e804742fb4fa8621087d0e49b0d0b563d235a913536808ce3324f801eddd4dd475003680c9ccce6315d298b1a0283267db9f3b7b009a0ef88a16a45244b834a13c2e42611ca3a3c47bfa70da016a7aa17319b0228e5163f7cb478bb94c72d3b67b65d2f59a1ded8be0db74240569dabdb0bafe9254a3bf1b3ef07c5a298cd65658f17ef148a10184adb5c63d8d8cea6a34dc8210f890c58c12522d700d66c18781be32a217574b3efe92774d257db703d051bcf0ae364c194350b5f96819f9b9b49c348f19ed22b3e80fb4420515327ddd56260f9cefe8e453ae443508bf16ee8a58b66980d416c5feed5c9bcd173fd06cdaf398cff46cef50a6c51f8e88acdbc516e4d188b14ae479c6e65b6d7a5eaf504835d3a85af4bbecab7d6e972590d6f76330019cdc1dcb1fb79e728dabd1e63e2a2582aac5357bfee9b5aa7de8c14409e49ff1fb1f0d2bf370791e97b2f0b74a01396e5ac6c3671e3c476b063b038164ff87d31a0ce971fcfe77c1f09a7ee7061cfa5a5a976e8c4075dec2aa8ebe2f0860ba18b0b3a25ba7bb83ccb4eaf10b5abda3e6ac1ed08de3691fee485656d0da7365fce01a761e1f1c01db74dc64734478412640dce696380963f55c1aaf4cf9e00a32c86f8ff8c7eef3b9a998e0035ac644275be8cf345db4196893fdb0ae6ee5efff5b9dd22a9252b528030275907b5ed8e211bb1b9b8132c9b9f971177c40e81d52a1504d4107709199f3cb9aac6e2c353ecbd1a9918f6098032e270d4b362df26e6779eb2719f28e1b2b0693866cd837c89a04ef33c096272336a71666166a7fa3557a9988525deccc2269c1f12bf053c2f765c6b1db03b0aef01e942a30b986a75fc845a7c40215adf3b2d8c99bc7d0c9053f8f50f406590a08bbff6f8ecc832049dc0b9fac4cbaf528ca2f9001257dde6195a72f41b99f92b976f0ec6912b68d67beaab412cd2f37240e81b38facc43b3d869276d5c53bdb42c867440506c5604f6b5e54b39fa7f38bb6f4ebc3254851865ab277fe1b7002350eda7c79497cc006f32b80b4847b71c116927de8ad63a0bfdaa89cf4fd09149fac0246df07878af976430965f4656f3367419a65d0a556c38496d5814ef9fe70952851c2cf598a0fcf704bbd503df2bc06ec0f7331e6fec0d372db7d0e2c79578180c8977794a796dafde06a324ddfdb3891563235e335799ca75869023e81e0a117539fc55ff0915fab613722527aeb80b48c0deb7d2e7fc3394c9103dc463f0c5699fd2d17d725fb59291f60b6fb0b7eed7c4f763d80c6b98fcb70913d418b126e36c0de5cfd7705d94a042b407a39e304bef122381e87d31b37a829b69d71963535863e6d7a69850cbc81a19978960b82d0f1b4d7fcc58457b61d40bb3de5cd4c3bb8d5801ea364a22b0801512fb7195d69863d984558cfcba890963241c24c5dd2512b597079e8a36284572d651ebc933d93d85a0d3e93b3309bafc4d17d8a5aa648beb15622a7806d4605e1f3215d1e4e92ed25b7f10b9aa8b69c4d42a763658a2c97856e87ffe182e4d622f1e6b0590f17803755f87b2fc8eac839f520ce94df05dd22635812ae89f42ac5c23ca33c17bfb5310abd788f226f0defe14c6ea1a519e09ecbd868991eba00d9c134fd194c2a2e9113269cbcfb5c4ee1d522e6fb8698423ec207148d5f80b44d1730327b0d81c0ccb69be3c824460d592ccc05f177481b9457505cd68084512ac1c55f7a032566b39a4741be79d793248fcc251cb0ab3db57127363b342859ff8fd27d018257bda6230e0b031b3a7ce85834405cc83f6f8cc43ae01382bfcb459827ba84596e9bd3b209dd0381d62dedd111084f19e4656640ee3f5a4e2919f6f9fccdc9d4c82d10ac41ef9a2604f27930b392006a20bb610efa0add2c8d6ac6751dffefbb18059d12098d0114ccbf9b8f7e62dfea87c43c2801806ff235fd5a7751518ee8c07984a3078c222a3fb7a26fc366d843acd3e16bbd66dcad1638b4f0f1f29d6815ffaf0bb28948df24b410cd3dfda41409876db1ce0fce861b3dfc5bfa531a4cdb421ac8a4161c664dca3b62c083525b397408a48dc47181a517135553a8c3ca2601d9d70cd50af97a6eb4ba1f132f9d297146ad005cd29fc1e35e8c91a42760c6a2c0b081555bb205986cab71d65b4daa998d263f29034f10b22100801ddbdc88a032ebb04da0a07c4607ba7704d2206ac43aa2d53677bc33e04704f218e2414a10005fbb84c025c42111617902cf1e806fb9c0c84e6226e8040f680c875a095da2a20d2a99dd75a6567fd6c2b273f2da0c4dd5587ab49c255cd481ce81870d5fbac7ffcf459193de0bafc8a54276e50b02acecb5f8c2a4ff11456f8167e11263c1cfb6be7dba0e2282374ced769f0fd2cc6a569192921ba8fd6dffb5bd73df15c4d023a5429d79b11eb3d0d3b64e6e0f77dd636881bf3c0f8828ea7e3d7042636010050ceaedc5c0d08d374e0dd4b0cedec558aaf71c05fcb234dd704d2644599920c62d8a658055023ab21774687f27072e3485cc1aa07a0a895412aacbc84a4f8f759164d265f75d75740ffdd44254849ac31f5f49a515a60bee714f488681df470b775c8f85c25c94a3d688039c0e7fd4e2b4be219c10e3cab10d12bc16bbccbb80eeb16049ce5a2845606105d2e881cf8dc93e93445d757c98a53e9e755073cc0d1619cf99ac5f632b00d54fc467c4511f6bac2246e38ddca175ba6738560463207ab60d40a54b9db2d49ca578994d8e3aa4f290e68ece0a9c672ff4e703221cb56729a0ae4323d8256e93fb52e5661e42e00f336c2a82052a1bbebb5da169ca7c4e571b3645f089df5081b8873b2983551723e2a11fa1096e53565fa765ca95a48c70cf93ec87643cda7d422814055100e5983e09ef110b93053ef02e0aed0865f6f31fc869b6590d1171612af4930643734856eb041aa30b2ed549f46ca7e158520b8e142845de5b089ef460769a84f028957e0e5861df8c6942dc9b9024174b7d43d124e98a10dd81eba193f149b3be9aa2c10dae8780c4e7d7f0993b6639f35c57718431ef774b6bb187842cd1b7addbc38f7b13b6998cf81d8b64ad5270c5e814f7fe4b15eeffa4ce4f3937bfe49830302ec5f104897633cd3fbd709806c3222e416b0b0f6195ea825d651386cde120d7c97f453b52ca01c54fd6c656b1efd96dd74f6368a4c9bf43913c4777360933026ac23828259a4a013f49aa1225d0e43231c996570286b091ae21e18c260b2a4d6278ffe945e026e1e440acb1cee004a0409585913680cc5e91d03e73b80b55a2dae8fcdf4e2e55ac992285724dae4b156bfee4b6a8ddbbcefd7a5192c90ad93c502bda8d8d21d30ffc235c0063903dac04ba58822e375171767d5b89a04b2c57b1906d5d094c1e1af23d31dfa8956cf02d28e4ce05bac2c114849cb457d5a3f94b8413baa87557d825ed4ff29301e580887f0fe97d718bed303d733667ba085516cf09cac0e126a3ca461575d2ea0cd76ef5efde050053c05fba425ad34f7c1b7947aa07db1aef407c7e86ac9e11003af488b5734cb88ffcb97caa6ebf74c5ddd1f96850f82c3cc11840a4281c2a74242c89c9b0bb1f8ee9a50b564b2a6fa5c78434f51c454714035b24e961aa7ef537fe845ac53b7dc3e0796d1c88e88ec3efa92bd2d3ebf550f868982f93c7841fc2305ab979bd92813e6f5f50f40807c38d07d99835d7426b2642b432b4c08447b982cb758846a567b72565072a4bbf8b99ea3bd4f5bc5300bb211575821c483a48ef994ee95c187ce3ef25ed30dd8b6c0efac6093134ae8e55521ea19985ae4c79c58858f77b461e7493e13f138f38bdfaa1c4f017ba6443203529e7625541e992c9fb0de57b2a5b6bc9aec32b5ec9fd90e571ab3135130e847c273961f072248aa7f4242bf92168a066c0ee2fab86fe8b9adcb60ff0ecf439eadd4be87a8a5c2a203310a785fc4724ebb488382b4326031f7e09cc168095d607f7974aa8243cea539565979e37c13f399f5ff6d05a08c8a060a08ad6561421c6c040bd2bdf84788f94a7726f4d1a5caa9238936fc16db5e2f2f3a5a7c212573e95cae534341a5894539c69f27b5a3277babcfac1c0bbef36fb5381bd43c062c94378cd06d1db8aa2fe62c4073e9378170f392c9bb78392311ef71f4d0dba0bca18b2bbfa599e14fdd7dbd187302e34fa8fd71f09e5887136eedff0425e2ec77133d6dbee650fead45e7a976c95ceb4d94c5339a562d98c1481a096b8b30c76efce4ccf316a0f96ad4fb04750ac40a0646d614a9ed6a9fe7d3ae11eec2fff707c6f356a3cc63a1e76641aa3dca9d9486dfedfe3cb90596858c68b1b800fbcd5e921ccb2567a2d452dc99cb5bcb2d830484717360bfda8b36de21c6564c5fe88942ecb9d06e658291c5a6d889827e0cac90190b3ad01085a13ef4a2829ae37ddc72fc13273c9815bd5974424ae195bbcfe3c35b5241f25c51ca94087431de7ac830466dd4c5dcc897219de8f8144e3d168db570b5555a4c499058be98d6e92c9849a4ed582df03e8e35aebd9c56c521db1007451ad3adf7ce137d31dde0d0c2863b0a84e7d9db1f19aec6ee1b35e863c7803873255858a9e4a3f95cf4988812df45ca1bf51fd4f396721e1d06e40a1169a5610d8e9e62ed184fd2d9de94aaef392fcb1e510ada775b43d34626b5ca601467d6767db5ca0022322695a8ed56a3349f1260e0e38c4729415d9e3a4d6bd860a284bb00c1b46eb2ba6de089793003e41db97c814b7fdf929dfa5a0eee754bcde26352052d7049bc425e302f56e599c74ea12ecada49268b8ce9e7a52553286bff2393f60de434e7fcfbbc7554428eae7239449596ec0a4582d5996bde1ba0f64bc4bbc2b36d0e619747f156f8255b542c74748313c382e4adf37f6c5c3cb1a6a4bdcd97e777a569d8eb5656bb744f2632dd14d1ef098ba9ea8d8cd3158642541fed3618efab4b34dd719a0c97766efd9bcb58471a2fb1903f8d09d1894dfcaa21d326f51ba70124800f4efd6a23d2e3b489bffc3d82f04d83b033b25dcf584049a976c975934592eabb4f8b0d4abd0b2561c0e1df137b90b7806083a431ec0f8be398296c17aadabfa716cbdb4222bb57c3ea1feb944757d74c8f2391bdb7e0f3cf65eba456e86540824b886f64a47d1cf78d1ce4677ea33068288f056f53b0fbb348d9c2b5592d78bf40b027a2f3727c35eb98dc8e2e9b3c75794d92b87edffdd3c575c1266d8436206c345f80f4e9398a7045bc400ef9d8b9573b63cee96b7812876d1b28be2f9382bce3b4a52033288c877bae8c77dbe4082045e7dff88a51dd3fb6009d7fe67da005f810215516ea0cb3dc05d08e21c63797e91874fd10c148d2a8aa4223c665424de9b212127bd8841c003debc70bc6edd5b8f231dafd95348cd724266b37fd973c902d293e380ea3018165d8b2662e712afd73935e55fbb2f380251062c80f558228ef0d3cc3ed90be6665c0e0609450080234b40c00b2a8db68728f64b1017572911550461846b13e6618203a037d9a424a12cdfa3ad13c74cdd05b84093f2bc7cab3fad44a42577b72499a9c5caaadd4036f07c139329700357b03bebf9f8e4db7406726c4fcc5984e0f186ce12ebfce4480051a36c04b04f06ae306654205a9272827d6bb0330df5f74a4a37c86c333f50726a1f0a03da9bc95ec0218b22d301ad36d6f81483cc2c0e27051d904887d0ee44293ad147b5cfa45672e6cdcf27e60fc2ae137c99a58aa676b09df5dd14c3bbd62ef469893832201a978bb0a41d5bf84f04c573853dcfe23b83c8d6c911915f6277aafcd9f6d3a9bcd280975485a11837193ac7c8f293d66a4b17f88d76846cc747e15946688022e1efca8e8a2418018b92ee052aaaaa8f0c082f7d61da69be3443bf8e959765a8d0fcb8d423f4ffd956d0c758622ca5ad23b2c0c1f2b2b0f7b40bab7b0aae44b58c4b3a5a1cfc0317b00fafdd12b7e753d814056191629fd20875e0a1c03289615dc9a8fa12c15033fdc094ceca2cb497730c633c864cddbc0e70c623e027a10dd96a687768f5fcfc90aca973a49df500f281e10de11bc25b0ed105bced16dcae31288d7367925c920a1e079ab56b01384ee7f6ec043c787b6001a97a0b273c2873846d6fb9399b37825dac7c9b8dd7c026316569f7fc4c48f0278a9a4ffb5c079e5491a62b32c9111cffbb68654ee993163a9132b226d6bad3463b4e2e50f00be56a8d5ee58961da4743a6df426a9a583b50d455843db3cfa4173e5d050b5b86eb297c9d71074f9ab627647a30369c0319bc243a4f28e6e003438bc0400cfaeebef19fc1035ab5e356d5fb607b7128817be70b9b75f5615a79b560bcc1fff2600b85919f72c130357c15da4cd0ef2445a2294267efab8bd6e95a94bb9b4055193beab5710cee155ca3f5cca17f6b653f87a801fb28b8cf749773b7f8cc2a4dcba8cd43250614eabd326e481979275d61a25a83614be8f558e9cf108108e7a6fa217d05059989523fec0d12bf1578adede2c1fc954d9039c18b0394b18449648964e34e8baa6ca82139cae67101cb18f64ba4093d4c354ba22fb59c560c1711f85ea667914eb3dcb75a18836e901ba6e53ba28f3d6e081169a4c19af8c594fd5a84f3d8bbe86dc3593a0dc46c4cfcc564f5b6caca98c74d985e39a6628fda17450df7ffcab6546cbe28c723c9038e4f4c4d8bebcea5bb2a4c9fce94b8391b719f9066be9e81a752fc05ee7bf9ffc4da01b0000b784c7a46687519dd235cd7bb412779b4e5a1c3f6bf34e23dfc0a8261657b2503052af7028fc371369d7f517f6cc9f3ed6b904ce812280ddc4064ee4444ab0fe10393320d09560fc3a37a5c10193165787accb46fae958ce2bfb1523adb85c94dcb8395f1703309a6230b1010784e5e626dbec4d057e9361a1d287e28d45fa736bdae6dfb64d29427b6c3373be7343a03517af327336a356d2e48faf15a724fd403f5254c581c8323023294fa65ae8039fe110c4a490394223b0bcd2a47ec3114827cdc7094b8aaa422f7028748114498c18cee0fcd8445fe17145bd29bda4e84b61e4b4ab079c112e3a221cca191d0dde6594e7d284d320105a29b4703cc8ca33263319e01427c95dd0ef0c51e7b1f14c092f44439e0b12ca8b45e8639eef262ba94070558aa3d37bc08e7876725e2505f44bee9081571d4c23502bd024087e60f7bd0aed3127d394068a0979d3aebdaa2b27aa48b81a64830a265dfb4657e162ed9c4c82d343afaae2e23941083b830888438b1fa408b04518dcdf00292244178d8794520afc7a8aa0dd9d7c5ff50df1037d279f254890b400894021ee45d043f2679a7dfe2a9b9f52485d4da1434e776b229defb91daedb139428984b455da1ae6cf77390d57dd5453cf3d5597d95b979a7c245b0321c8c98ff9e11112adea60d6f6d509537ffac4b47df2aa340a1ca2214e4249b30e39fffcf686991c081a54048a728436ab52c2730559a297a615444f0aefeeab3b72e6d6c39adb8ae40f0e90dbde2a925600da4b53e8d25ecd04f07a060c004dfbbe3e932dd6f3a6f25d013c0c673be280cf0d89c8dddb10c1ee70b9ca5d0c9e41ef6a5404436df5fb539487b38954f38336e3c76b2b36c91491493d287db45a8940a875dc27b8733ced2ddd6c3e9147a5abbdc491ae1066f76319fa8e78ac864d056769ce077940b45f0384aa85f31dbc0f3e159bb042635cb258058eff12f5abd5e95e77500c03d8a3f9695e7056246e09e3ccde96552413aebb22fe9447b26691f0cb97c14264a4c9f0723f8e66eabaeccc261f871fe67dfc5af8bd6e217da346e3930783c8447aa4dd79f7e4ccb7b91dc329d134539d9020d0108b767886dc5778e26c5c58565443cc024de5f71eb1e0f20382d3401dd94d983bf47159d0806dc67551569b59bbe0e1784eb48c8d8de88003fb256370f2e6b8a2ce7c1b431a2ac0892463590bc05d7ce6c660354c926b240900b52629d89206d120f05157396eac8e9c09467e23c379f0cdb74b9de4207a21e9c2a897bf7aad949d4818a7285fd321b34b84650270a45c0865da5d9e52351efcc3351694f10335a54c5b7faf7d8ab2eec9fdc7335828b287a537d9f63c9a8c3aa51f46eafc1e744547402196448a2687c389862f50247fef91d2b7acc1de584d11645b78b6a8ecf7d737a208b5edf2ba4400ccb906add82f8d3890794240412caa0fc6981b80177fc60f8d6a7a1564d6d0831c6bcecd4d874887078ce1ae6453fe06a001a2e83f757db5423595f9af360b98e91920555643bb9ed5d9ad0c9bba8f55d95a6bd83670ed97165e29f9f751844a6f5034b29f5ca3da3c1c41b3a0a47eac1eb0868563d14ca3a6a7b616eb74c2f953a7b3e88584a93753b63c5c1d09cd70db842c7b0e40b4521ec163ea18f2e83a345fdaef1e65e997e0268c19efc49f04619bd02839c6e46d4ad0f966042d8b3c1ef3b959e9f12a2e658b5b0cb69aebda61882535ed01fb49fdbccfdd429422a32a1fdee2bbb2305fb196167d89984bd1ee68053e32bba65f8365ed6ba8da579fa0174cb50aaaa86413f9c43a4e8c6bf49764bdc67779d52c1610b37a6ee464dda1ddc6fbb061ae1322b03a22a66fefceccaeace537175f5601d0cbc20b12f51f2a24379730158e7fe1caca30e12a43c8a559a2f53a44ebec48967fba0950855acc5ad9e3488f8c19d1927434187b5d81931f2e685e4d352efa0d813bc8050d80221d339e46848838078b6eacd728ea05fe4587e74c909d21d5b131934dfc625ab764586903c1b318180f35377c91e08aec39ce44e49c93c5bfb53a64e6ca55993fdf1a9604a5fb8681916a02341a24c7eff6c96f36fefdb18d5090e45b595b01a74cd195d73b8c83b724f1e56becf7e9aa7df2c5549419bd209ec9fcf336e61c1c186eb5654425798d6055d443512d1ccacf6c56fa10c6a769403d4f7ba32df50f399f9ade7efe9132f61d5d4bc7db1eb963431ed9b0f387746e8cfc5b2aefb0ce6444f82623b32ac424d558aa2b6bfbfedecd907a98b45c2c56a1d132e36e8618297825b8a98dbff305b3547f3c8ee793e034e0980635e7345b53f54468d04276c60853cf6c846c8a5a45116b5736075008f51038bda55e6696046b8ae2e64b7d90a65cfb5c294448076614a3f0d78ce07b87d85fe09379bcd69f82dded0a395f42082791010fd64191325107aa0159aa051d9450ac043c11e8b14bd01b5f7f708aa4316a0e18e220a1490c53e4b28ccbcde9205b45d593c6f8f044f0be79f2d239e0e6c567c989d2515bfed5982ae60b920f541e255c43b3a6bc47596802b6543b017db9a7afa0f09f858af2e2e66ce12304e92fddc9cee3b67eabe7005b94967e4a419f79d76ce01ab5cc59873f8f038d61e2439679d15cd88181a54555661cb5e10b480cc5fd780e41d86486534865af33c7e3bead9fe102057f94c2804b315fca198e90a707f83823e6ced86a46dc200ac42b2f668f3a75a966adc23e36c8a91fa065214873bc95929afc524f37dfa2a8b0afc239bb5b6680306c440417b645d3271353551389c104130f2432789e49a32367daf2a3da928578c9bb509c4b51960ecfaf0fe38051af7c15060be0e886bbc5263b01b4f90ed4f8663872c8058aab2b5b05d1f88a0f566f066b62b722c41aca202d748254125949a251cbfa028bdbafb9787730b63209b0268328a8c804ebc7fec52d9e1235193e00bca294809cdc17a3f27a575533f8e6940ec6b9f3a44720b9fc7721b03d3821ff50224b656fd6b92be971e9fb08d65f6441fdef69863c1d1d533eeaae8d9790107dd01b1bf3e3782b3cbd223ac40fafa781495877514b3f110f64220fc2c4653fd8c1ee343760422d22b0184db1e71772f066b398c3b921e525d39e87a3291e8b045344fcc373c0b7b1009f6fc726814c6f75fc980abb3e67431cf84156c07d8d903e842e24e587bb124544b8ea227da014bd08908b0aa5422283d02754a11b368768173895dc6b85cdfac3c7ba37f9918888be8cee4c9466d40779d22888319187337ae6e47abe1e40cb89839afe8a0c7f4e6b351166a278c905145afc1194d32229f35596135cabc56c13ed4730d4c3af9c7b939d32823d4dd27129d5830383cb3219562bacc333a523280086a24fa80377025d48241e66c67b968cee4c4926a28c60edd005051d418a417139d6e6782918102bcfe553f1d12f26c94608038ca02a6b70c2323c75f7000b104d9ea708c37fe43b4a9071c4449f40480b8f5b841ca27c909efbc952448113968170d3139fd0644899d18b5094970afb80b32e5c12d1bcda648ef3fc82b28a141260616a9d09aa24790ef56c47c77d671bca3077979b6b27644bef02c94fa138b1af6a329de0cb55c302eec9a22d429ed0b9727b127075a66de4adc25e91fafc8d4a30960c86ff0ac2d63ccd3f01ecc556dd8f383985af6d6a0494ca39971542472e2dcbc7618edc80d4c5bce603cdacc19e872d904241ce52e2fe79265a8b6906aabc2101cf6bb335d3a78b690c4dcc065df0a476f145e12fc754e0b74d128fa98fac28ff48f68b1515e52f46379b163167d6f525f6ec62ef26c13a8c3de5bf6c0e3af1ec963dcdf2f777e0649f7fbae431d7b1f53b2e85604723bb35f25049e6d64cf35ed159f1fc7fadc307b313e0e6cf6e0b51ae013aafb6c44acb47820464bc6a57d084e6490de80122d0719f185bc8f2d3c641645a672ecc1c4dab0ce8e465412d599dde7c0411b75004651aa603a46a16f947a62e8a85a8f2f3ada0759a3b146059b9d2142f779be6190c2177a1b8e71828b50317e00a892e7a164b32d37d132e2d4c69247381bd0c97f94a892ec0c2ba31e8ab5ca09b4c61f5d91e0978dd4cbd4e9d3aeef0ef7eb3336c358d9c1e993aa75069e107550e9b1759f567f87609bb68fd7b1f11bf425a33699da364d875978307f58ad6c585745c6975d731dde66126bd826c2127677a641d83e461b80ed4ca89ad735500710cabf70aa4af2024f9256e42aaf96d719a54b400fa74be12d30436259690d8fd9d23af4edb78977bedb760476bcb3e2da407b6f8f18044d4e2cdaad7c068119c6341da63628e4297401e0665287e0e7b3ea20f9eb9d6a6fb7612b6ee948924a3da0fafb6fa948530cc503dda6eb8a6bf98f5e31684daf63113e5c1889d5b6a38648b66457c2b0677f6abbf4a0f5bd19ccf4e09706f3bfcb4cdaa824d14e160efb2328c77d082907378e6c9ee0357a45b16442df8930a9487b0e00a3b5a33998749f41e76727dfae0e9520ef34146b71d9045b77fda3a2f1014ac2bb07a2ec163b246b5f17afa670f34f22904a8955a1155b86904c66efbe80b24d4e8cdea51e3afc0fc37052b585483aed3234c3b596097e26f4cfb7546f846bebe3911c707fb97962492b42e94497e15a2390634e6b3440743c85f107e86683f5fed689e1ba52c8705d1ac9cb81cddb98b300a8ffe152383bf8c4d8bb23ac17dc22b3cc23a29eeb7877e5abcf528b24b0a1e3e1e684d2626c11349cb6c0d48c1ff97f14036fcd1d1aa216bfb2bb2666074fc5546083055c7e54d28e93b465d6dcd6e2be977ecc5beb2bfe7246b2e10d142a3116ee0b79b862cc1f1f9f0cb5a061f5282fe433d294f3d3b8fd0ca6c5c7638dd2ba0444152a96fd3aaa91827adbd2d1f7593ceedbb5696a8c5b5987db1002a0c81b082917e0afd07c54a4d847149959defb81205c0d4096d2cbc6257b233b37323fbb281d5ca7f74c024c0477ee81733a541c49a73d026b9075c6f92135a3845ee65c75be09ea4b164ea081a4cf460092d41818802ea019066da71e059dc64ee5a9de7cb9cb1f85b90ef895ed197ae82f216780d1e19841aaf9ffb3a8f023b5e733c923a83f69decbd6ee62e01b671b607ef12dbc015a49f0f2d982c0ee9b40c1964c971a8095f62d7ef66cf118fb952403aea6f3e44d8ae106088f10d8292996e2919c6b84f5005728148f4ae66753b2cddf73de3cdc9c0be264051d7390217d26709b1c3d2688aefec8a7ac385c727474788f45798c8adbfdf2f28183ab3938debc20ee7300889f4582d8cab523bc83acad63f4453e353dc6bc9ddb94c74f73150884b2c25aa4df012b337d751e565e7d04a10f93ca4f8b4333ca90a7ffb0064fb1c1256214930f683b66ec819b9f0b420854750400d78655ec1e9363b47c7315db8f72718bcee4797ca8bc7af9bce59b335c1807813aab9831c74061288d467709f81be23d58d410d628f3e091dc62d100226e28cd6aa8dd8202e8ea5de7589d18c6247307b7052a5493cb99cddaa7d4c46b916baccb3e6026acf4d2d780c1db2009130b6d2beee4c40a0cf3097b732619a3fb1889014b7c9f150e9f636ba0c4b5c1daf74200342b891c873bab26563c227094453c87b89f5726f0b0df6d51af5541493e1355966c65a556c1a616d14c94d76367224a6d4799fa0ff274a7fcfbae28d66e38036bcbf5040b8bbd0a1eaea8380e6be500ad6392d0e1c83ee7127ae9ba4d58667a3aae7478e5bde9ed5ef93f34d6d31f8bbc6a0b69044b5faa385a5c89fde4386a46e34e8bf1c2aecca7a0fa430ff10bd9b84bda90e87b6975fbb1ebef0a6545bdc05ff5ba85efa1704d7d08a43eccbbcbe4fbb5a769288ee5036508129bbdbf1a4682bf3d8e393187479a94e1a128157cb83465016748aa6052a4b584129fc8000f7559825a22d00f6970268102a273bfd01c5905a44e052c52680e1f8ac2b5253487c7b0c2336054fe8ceb1c56ffefff0530f7d3a896c97a0ac87f7443e4abd40cca670e05e10cdb57f33d83a5e691300fb428199c1c965adf66ce420e745fcdb3abdf0079d614201639f0ec6eac9c59026152d676a19d576978488534bf0588d92a438ce7989ddb2076f21248de5bd089141a99eb2d33b8c69c8b4adc52534f476c020d85018d1e6f2a85652c4f8b98e02b877ce61eae445b2dbe0b4cddd85085a7f1985620d97ec122794902efc1d9f4b20da3337992cfb28ab07f7e3d90b42d4d8f75e8a30f744c7c511c627f3183f9cad089068430ba5659c5bb0ddf326cc1f20c2c66d1cdbc46bc58db8b8142db48f6934e416b7493ed0e41cb46c426f0566795f544062badce51ad6812fc8c4df5951a48444bc42c1a8ce2dc09f79966e37999f890e2de7d371b36915ff57c9704f88c663bbe40df86c7f2ee358f8e1223a485871b7d9e98ac2c9658ac6699c713db6bbacd3fe93dd2e5829e101561bec2d0527991a18d29d954fff525cb5dee8bd08eda03abe505158e0380503496ee177c84a11a1e668ab2f14c4527fecd79b303ae1364a88210aaa2836205a868fa00db4e84048673a9fd4e1ca051d5f2e59eb31a5a301d758df8e2fad1effa06b2ce2369d4bea50ed1f40b04db0aa110dc33ae59024375659d43c5ee61cbe67c36a1c458a2ff60b0a10f4b70cd627f109b7e078c9165cb2b33f3a825c6864e01168d5e22543714cb905f2b5a879178308bc1038859d09a5767e4259e9dedf396913afaf8b168688e05f8a874eb3f05df4a6bd48dfa1c7f42c2dfa1b36eb74b7ff6ad40e9bafe1909e4e4ca4d848593fca001b865e1b674119e831f77d50560c744f83f78be81b493e66adae1b9f535188dea29721f2c5e8921c06cfbdca98eca84ac006c7ac40a7275b9b672bbd2d1dc62e92f9d936de763dcbcaa3d02fc2069fc298dff448da764aaf38aa3416a45fdd8b858f9a5ae758b54a7d120a2e30505fa146908f32ab6de0b69bf2fc8a562701cb8c2cbf83236a808eda06fedcd5e3fccf53f29a500a97218acb8564388b40fe6f3a7d278596ae593832caa7e9b3946b5ac53d4348eaeceb837b6e966d6eea4df0228431abbee5ac2d8c3330d6789fb0e1084f0ac6fd8423371378ca62d81bf6624ff7f58e4bcd5e40e026d73b9080bb92cf43ac0a8472c56f76cbad97f1041f6142a27c2189497faec48f2f2810a921378728d4fac7dc4c68fec32380c18648181c9ff7bfbadd9ebcdf70971f24bea25dac1ff9be5f41186265fc5e89f8d081298488714d9fc7eb3e716ce10a4878597c59f22f386aa6365a10874cd6505291cb8ac88f8ed74c33964689fcc01449db60dbe26c786c5986544012f44306df539cde94798a295e5e3c6cd241af5f9f74b4eb0002ec38532d42b2997d2f4c80e81611c09f6ff9ee7dd30aafac8145a83692b5251ac94b99dfd1abcb0c72932ff9f509e8d7222bc9a1757fa09d7b2b43258c9d6f8b4a27a8bf9212a3844e0265ffd160aec485560d235a8ca708c300c334b492bf061234e954474f2ee7f352cdd6c3cba97c9750a9e8dfa478be904c421645e4b6c5e5d82e0aed4cc00ee86d157449b12b4789d4013c7212e1426ff7a45fadec5d905c3f7fd4a27451479d02792d0dc36015dd28597003f576b322d5ab0e150198452c3edd021f638ba22964ecfc2cfb962d8e6a151e0193d23f3fc8355d320299a7289e4447ccd4b5988b0a5032b712829693add48414245ea6a3a98291d762dfae3f8204afa843a6aa3714dff662f026b1446c206fa68e33c0a662dec8bbd91b08f21fbda714710126236835de45e464c90c213698b3bc14400b40a64f9612a2cfa544abef112b3c61acca89205e95b6ddfe61925002bca343614e04b17b0d2f6cd1e3890b559ab2e425670ba7a4be8251dfb56a27757037faac015d03d0580c54a219ba254be14f14a0dbf8a617a116b67d0a9f2f1d2a2f82cc846c346dcdf33420c8630bdb01ce436505ea603b2e4e82a0ff454d972f0c32bc39988fc701e021bb1fd8879b61a34786cc1a3e4c4832b26ee3990045ab4659ae5731fe4ecf35dc01fce88c2413e82e485dbb2a885d2c981e30a07c8c1dd35a105b9329dd29f858eb480ca44d0eaa49f379a7bb4b7250b522d553f3e140c2b9573511803727303400fa918e47930d1fb894f14d0fcf0c2c904c007508a8ebabcadead3ea1d4fd7fb762e22284bfee18894e97e9a8f9f1c593d53bd6f7f204757759d0c1d03b6b1c968c24eabf7abd1559d9006c79d912e15d89d27b60745e106c55fc733346a73993677287bf0d41d8a9f5ad2844e89d224d1f5b90996e2216fc69d1ff7b66a61d0a4e8e2732ab06471eb286e61addb9ca4602a6b2b640b5981fc749fac16a1f138a1f7c947ee9e71c6660904d93f8ecf67fa332406671dcd9dad18bd511072422999d1e1e7492482a0258aac33d40a0cfdd0dbc81ec32577918a9c8816d947b62bd220adf8d8134df4347605bc0703baebed605c40125ea503798d391050435fa363f85b5d13a11bbd65f780f20f4eb1289ca17e4fa6c92e239e07bdba276191bb4b864466fa6b60888b12efc06b4c6e30bbfb63d8f070ac3dd18782b85c9a7acc2b2241441242f6de5b6e29654a2905e305fa05be05dccdbdf7fc75c3fe7d1d7b84dad1d476a4172c6f73ac9d8698ace45e2a7723d0b0b899644257de2416637dfd05187561ea9e2aec62ddaeeb495cdd99aa8ba5e64fa91da575df015065541470b513406d02d47ed3e638cda751fbb77b22d4fef75d8cda2198be9bd58442a1502814ead7946247c22aff9649ae6b0623a3f2db4c864acfe6c9c044417841e1903570929320771a3a88e872876f541f04a2591ae1e7153123068c4b0ade44b22179d215c1ea72007acd4f0dd006bc20a95d91ab3e085f8594ca6dc6e9c87cb80fbdc34075c89982ba05737c85abfae734fb7bfe8ab4f7f065f0c2184ba6735e57dbbeea6638ed2a340821950a9f8b2a0f84ddb01b32265333068b7b9a96019673fa6d43299a095b31d9dd7e45f876fbc6b4adf7bafb7537f76ef79065e1295c0821832dae44e1e285d67628c056d44df416da16ee1b70c17aad1a1dace7f7f063b6b89e25ddcc89f9ea6299e2a5b6fc52aad73553775b8ee3e9509e5245ed86dc0cca62b55a35358835a8ec5ac01e6468e206a9a48976c05075b154095a239bf677c1eba2df8af4baf8c8159999a92c557141568141f3420509be78e56d74fccc8d0da76ebc62bc3210859627644862680b918b00522236b5d52d6639458a2d425acd39fb5f63992203f96280a5055dd4c572745495a88b650a929ada12549be302acb96205d5c532832b157618f8f9f9a945589545a8bb2d8717a45dd7ad5d630f1c768fcafee5d6b59712fbce3f7b2ccb1e5b58e4619df69b61556a9f71b1ae46733a5b619d33f190ef9cc328e57663588661191665bca4fccb4d3ca48cf192525eb179fdd40fd697f1f5c3725b250f93715a1a96d10ecb326d37cb96ae7055ae6ba1eeb597c45efe63285ce3fd5e7f490c5be1f2b9f871be40f4e74b227aef84c36c3dee6b1ec79ad1adee9b1094cc1bfd5b3d84cdf1b66e19693bf3cdf5f2e8eadb82373630df77739e647d193e0bef5b1b05e9f44364a66ddc4005e904ffb8b830f0d2afd94ff1afeedeebead64986e9cfac03df8b3e4fe3d7f9e4f88449f0ce7033bad56dfa627633ac1a9b22af3ace0c6bc6e3b6a0e9cf45ccaed5f2160a8a60353fdd12c28688280a14292de8886cd2144a04dc15b40009eaf54dd732aa5d9147c4b9fc75c9eeab85dab1a3d6344bdd7a7f714be1a4a424e6a4da499837241b926d860d49dda46c40db0c1dd4411dd4367450eda246b26dc31444441c85892a2b31148e32c2cf083f23fcd00461849f3ac2139a2e689668824005c605e382398171a91910c604e6440d500d500d500d07b8068cff385803546b886a8ed4fcd470800a46c24878064652590acf600a320599824c369882aaa9c884c464c314daf60d063c49b7304fd2ad77615cd7428d12fe9aa4100555ed041b5c03c26f8e874cbf2769e76cb8c6fbf86c708d479ffb486e1b346bbcb54fe5adceafada907bf7c13de4bea53dd7da20f644e42db4da57a34542aa952a5de864b88f9d4c73c7c1b5c428c96e2e4a738994a49997a99e3311c8d5f130f1aa9d4b389474a95b29136644aaa5436a4ec740859c1ccb7c1254015843204182c874dde0fbea473a0d106524f9285f0fc10c6c3efb224331ecac888f11dab42daa55ef5dd9c416350167c214ebb1b153e8b76ab85e51a463b1d15d2ae0894315c17f3f05fc2c0fc8a762c6c7bf92a8e069599a2456055c150ec4d454290d4a4a23c29aac2528fd1ee468d306891ee321b36b8848df2a45eb500550c2dd255db3e456d700d08afeb79b1ec32e1104255b40886a62895fe42dc336da6c617127f93f1e3b6a987e9e3b6d335dab1aa67d4c6cff381e1aa1c7c22d4f28cfc4a1755ae524aa54cd4adf8db5f2fe577fd3242eee6c37c26a564997a89bd8aeb542f7f31188e0695392991adc23cdad9d06ee38cff5518ca33290cff69468d66df35cde07c18984b458b744dd1ce67521e7e581d931266912133337d3c971291125114a22811c2bc6422952a4a1429e533141945a6388a94442ca1442152aa9239ca8337aa8cc22574cc51b806ccbe6fe2ec1bf9a8770ef5913bbd36396cca8f9c8c3146963fe74a2639cd2613e49f68ae9f1c36df69bc252fae9bd76357f6b303d5ff35f7294a4e856eb11e722ca7f14f6d603efe12b758f1cc4ff1bc710dfe14181a42c4c43a300860582f568b27d87fdf6038b69877dfca9fbd9198d71e32b73d623efbd531a27dcc4307ac4ef640625efb91fd56a63b31546667b6b0bdaa1f7b0de699e369d5433601f5a8954c8fd4f3cb9c907a7e1352cf2b66ae2b15edfa2fc0951f7b9f0ac39d4e9fe256e02f5878a8d38eee6272dac999a6f1d7de59b3a76cc17dae2773e01f1df22f9cf608b0d01a4784e399c0d6c0e99bc67e5bee53d1ecba43b637826deffccc058940d3f886bd910dc31ec88661dbb6a1d05448b7fc6598f0b5d732ce070f9c54103847b121965e6eb3940f1b40611fef737cecbfef9bb7fb7ce4ece816efe7ecf0c10f9fe7b88fcee9a68f2ddaddc6a2850b2341aae58b2de2943f177d51bb7792997db168c1a1df4df08efc1f8cf1c1f7e0a3dddddd37b42ca91dcbabd0de667323632ecb300cc368977d677f23e3708a401bce8659677b2af02cec691799b0582c6679cd1ee378f83313f88b8a699a8661f22f3ae3e2568735250bb6800679710eddf2179a62cabf5e88894ac871a8848458b386c92d581cbb3ad0607308f5cdb6399c9bd8c258aa0b517da83a7446523d4cb7a6fad51b81f99837a2fad5c30fb239fafd1f8035652123310ff34656af7a99fe9d9887f99dd5ab7e4d324d538879980712436168cfd00e0c0d9015f5d173159185053f3a3094c54908b144677586fa3b565397429d71388dc5641dddf2e71efdda73fd288e87bf9f6165530fae289f8ae24cd8b647a1506fc2e953ef5351a854fb4c4e7bd6fec4adc05fb0f09885a49c93c5aa40df6cb448e3e0249be33d0b091fd1b48c7360211662a157b58cb2500a8729af130c5a4b421fa1da24e5baae286d5a2d9c2e70b068499245380cd2372c301741c4d6f0f78f40e360294de34f14a448056e30e3c3c844ab80e3d0a89426643548d1e4da2d97203e1c07f67e44b424f8471a26f646e46b6f247becdf5be1521550178b15a1caa6ebb588641a19dac13e7b23dacb7f3229682f1f08f6994c0af2b507225fa33d433bda630f242b02083ffce86894e534fe348ae6eab8077250a4b33a43d7eb649c0fa7d1a13288ec152e07e7063abae58ca3a37114c1e9701a27c74705829891da9c8e26ffe3761c5d2f38820b14415024d9f06dcbe91b2dcb9ae27039da7738557b1d5c4eb7fc4d40b3c3e122d037d8fbe3e4f8b3564a1e7eec351a2f6e755d5bc2c47a64f59704ffd312d317803db7aa388ec3ccdd9f39f6cc6dcd38ece298c85f350e1975348de3402a6987c38f04fdca425ac1001fee3bba4573bab5bbc4d1cf5cbfd7755ddbdb30d2ee8a303adcd1373eb4d838fb917e27272df3bd4be91b7e1d27b51f0a2b56f839bd576ab74a2c76129fc02ac469fa9d94904531748d7c50cab834fd177d9710138f8b6dbaa5638f7ef4cd4edf74179a8393237fd0f6f94fbbbba7cb6888a9a4c4252c37df2c9ff89961c0f029e33e064b8c2601a0f2b6240a66d7df3d172ac31043e5772b70c083cd617a46bd7b51f95d8bcafe4565f741652e2a2f55e6ff823a9d4ea7d3e9c43912b76157ec2eab3055c67574eda0bdc6206f8e0bbe5f2f5d6bd3936c5ac08ca9077cbfde9b81dd9dd31a373da19f273af71ece54edd17def7484fcf7928b17e4567233754d2878c675b0dbaaf638f8cfd4a3dfc7bfb6baff385837d29da93d1edd4e474c1e96da65da1c0e7819d70eb393157227b9eedf66d34925ebb066f4cd4ccb716c7fb2325991db3aa36f3298c5ae91db6ef1165fc26ddbb6ed7d6a735cfb23967dfbd48c2be2157349e19b4c4b02942129a76b487a1f480a0291d50c4920c8b215529676b212c292d07faac2c50ad0134d8c46d81bd72e6ef84d6796847deff9d7e7af43f05cba5f7fddd03103a12f5cb870ffd16e1fa272b4f444d0fa6e339ba4b8ae8b49bd2ee8c25585872a40440883047670a1ca0fb4b082d485ce9543087260e2852e5928e10326562ca540e78da0c8056623b620c1a3e152a205151f5cd7755d1a951954b121c618230624a978a19214638c11c220ab1ca922831131c01e7478411020a0a2a4034aaea4be6f1981a4beaf990284aad5c532e58b4cf22f35c3606acba8dd4cd3bfbc246cf03df89c2ab17ce6d740654e3ea83d938fad1dac3b87b4ddf7dd0bb647ee2761f3912f8b7691d6c53ce5edec2efb8651deee0d82e67eb92b69cc0e8b92b507def7b0c7f6e2cba85e4546cc7d6e5e297589bac533c0b798ec1b66ceb8ee55ec31f3f5584a7ff6775dee1c27f163e618dfaf6949787449e01977905bfb0f666cb6302e863db4e11a9047a4f031142484306211b2e44c853cfc83bfbb3c315230ff68a9bf8d1eb718a9943174bbcb3d6f1c889c9cacd80925be44b1240aa30364e982064a511c596d164a4e038f4824495839d4fd993d3a6a82c34dde59466431fe56d443d3f65b34bddd4f0f4d5766d740485aa8c97cd8393c1a0307f33d6b338b258d76fc8312922cfbc8a16254311fed3a496d20ae83ba6564c392be59231b847aa96fd68806275d7751a1d34e1254b954a7ab033b8b2269e436b385fa13cb34b75fdf7e19469d2ef156f26f259b2c40b584ba5892d85289ba75bdf46162df4d806cb8b48edea8486b62d340ed24a39d94730ad91c2b6449b81e75a4819a38171be7a326384d901cc9e54c752f524109aab0db1a447e2154fbceb2ebb72cbb2e6cebdf34dab1c967bae548f51f7d7cc95cbfaaec65097e0329ad947258a85b6cc44157c31c18152dd1e0090d125aba1075e1926149e27e9e9ba39f7fc56a797bfb778f764e793cbe6f099ff2f857a654f61657b27842e9892e60f48bb0ed6d8395734618238c31c618af2089315e01aa31c68959b9c28ad2b3d28f7deceee8eedeedddddeee6e6eeeee626b49d59ee5f86cfcc4fa00c844254c8a171b00790881411556686cd72c257ead6d40666d3b9b4480a58d3ada762351ff53dbfb75fec02b0f2983ef5cb5d00d637fd8a33998a40d33fc7333fc5fa15c77a2dc5755f45781adf491c00487dc7aaa91781dba559d1c0781adc2e4d08fb321f83e3d997796d67c490e166c48811433583761be365c870313e06952caefbba0a817652c2a0dd9c317457affa1c4f71f357dc7c1507c375fb73168175b2664c5c8da4292733d2297b303bd6a3ac6a6a817d4c50f6a059802bfc931615865c1c8b47ecedee9739013eb3b00ff7cbcaa0a1a576ac3a4469c94c67c32fccd6aa5b8f6312e9c38b6bf5f32599597dd3ac79f15cff1d465bcfdf7ac831d9854bbf5b292af351b9a728e6bebf25d8921c68da6908d4113b73da623274c1e4f7a5bef9d2487319a9be1f13ec7b4eb7ba3bc747910f08d747ce8ea29c1d3e3cc787bb6fdb407ba82466b7c5d310b348622825505966b7422581323a0d2121bc2e1fa1fd329bc8426813634d8dad8a32ba2e2925866159966d9ab66dfbac197336959b89c77bd01dfac36b99f93df7171f0e5bdf40e85c1c3e08a1c3e7ae699b77377cfb36a76f65da7e984dbbed7442a1e64419cdd366c3ba01cb96133c20cc65fe95328779797797a59c93c57a4de4ccbdb0bfdc67c718a36c77d93fba15e463fc1f5c10fef841fa26ca18e307f9b1d3adfef132ee8f20cb17ff32afe4b80393149eb93015b0296488902143feff870851a15b2d4485214286b48f1c2415fa66c87a39fa0283d80245266144c0676ac026d5ad692091291be05f7cc1dbf287efbb863bfbfb43138fc73185af6b53d943f22968b5cd960e96bf6608834cdaa2240717c8a30b4a777f7777777777bf7e1c6e6efea62c4a85f421f593f2e1b97ddac5383aa4541cbea36ff6882128cbc422555e2fb3daf44dc7ba51b9dd16e564d2ec70a47c2fb00c1a5ae61e497fa6fcd3907f20c740fef0e173dfc05eb8702103753764e8403d4408fffcf44db70cd43b3c9b2f932514281c40921246f85a1d0e4e970e07474b128d64c57b0f4a29e325e15e30c2876323b56cf9c1a1f899bdb6f56f53d3d960d1720514b046070e3377965dcd52cb9825cbcfde08f69acc5e662f1f48f632cbb2d7b0d732fe8eb53a1a67cf33cc21ad946598bcae08e70f948136b5e51296a92c1325f182ea3c832aeb631586c4f72782c96f130f16ae97afc5189f0b4b8ce2631e9089a42871168d838f14f115a0eaeb5c3405086e44086ac75eaa17d58e9908bb376b43175d78f1d2a58b162d52a4c0cc00cb0b9c54ee0968cfdae94f1f51a8d9f9ace0db9467bf37337a2fa39bd843ec79314a64db5fff67ec65ff3e3b3dc675d87b8e07fe566d4d264c6cabd8561fb665afbdeb1fa36a8e4b8e67859efa7e6be4e9dfca2bf063cff1a4519efdf78dc26258d72f7f735c725c2fd3095df9a217c675dd4914f631a8b528f6fd4cc429cffe529efe6722456a13f113fa576601cfe2a0ccb50fa0904061390d813ae284051258b651554e439cb0380d711ae28405ea08d411282aa8235055505470bac56fe2b11406464205020c5017c72535d652b64ad48b225d1efc8ea3faa7b628e734c574e7ee3783b69edaba85aa8b25065a54d60c2d8692c9bf5bc3c7fb7c09773fae9b5db5b85d747b5b155b1f5ccdb0e47b70c2f7fddd5563bdb450c1e487d84a3e784577778770b552f9cc0cf89cf5a4f7255fdcf7dc9ffb8bc1c2a43fcdb91dba4d8b77863ef727ddbd613ca0c9f70ee17bdd28b7427bec5b12fbaebf265996610fc62b8b19ccb297659e659dbd8db9cbb60521cbb22cc3a494524a79bdbc3c93d9165d59cc60f62e795d97bc32cf5a33bdcdae3645e9d2a54b972e5d98bbf8436e7fef868d8d8e36e1e03c187de6bfa6d58ad7cf19accb9b880c7dd7b7a4c9effedcdd9fbb77ab86a3244a4840ec0229520815c52c8114c517298e0040044b209181bf589e88e0aa58e53e9005a96f16892c52aa3fcca27170df2c124938a91e8f54875f36c74bc192e0ef4faa4cf6f0b7f7da0381daef6b3e3b1bed19cae84ebf89f6f4f860c028c890251f464acb65677b13eab7bfe88ee9f4a6f771199914b4df1e48bf891a317d3f95c98cc864a9c799bf7d8af6b05ad269fc2795aeb1fa2f2a93c2f6a607b2bd891a19da39bde98da07e7b20a6d39b1e02a99f32178a93b9a88993b9364ef5abf7d18161a2182018b487859a100901ad38f825fe70d10404f31d37a132d9fbe88420446532fae308eb65bc8f4e8c5f1dd5774cb47a5e721affef19da313dea7b8676b6377dcfd00efff6be73fa15ede11dd49f680fa3e8528fff467bd8c8b96c461b17139ffc555cfce19a93890f65229549a1fffd0e2341e1248b2d96fcfce8c0fcea877654afbda63dccef680f437b86aeef016ab2a3fd8af6b446bb8990f65d0369424d1c48690948694906178363712170eb34d9a6b47dd74ba65f2018dfaffa9ea19d98d7bec71f48013a2b18b407c6c3bc8af60ceda81e86f6c0a0ade2d2d3319403acb36a23d4af0eeabb26425199eb7d74ba363afdea9ca8cc457f1cf1d1893f4ee3fe306898abf3a857fdd00ecc9ffe447b866452383dea774e8fa23d43f17b8488764eafa23d2ee4444ee30f43e117575aa18d1a19dae9bc89111395893f3ff51b95891448eae7a768cf90cc8fed1db03a1b05129770d0810e3a18fdfce8b891d3f8f700b50eea5b38fda43240647e989e861173759c8bd3b8141a84586289a49f1f9dd54151232d9ce88fe9cb90132c2822e8270689196b5852bd76aef49e388dffe6b593f981aa6b7a4fe097eb5a52fd12aa7e0555bf80aa03398dfbc32ffe7029fe38fc12856293eaf149f548543d1655f7c8a57a44aa1ebfc4a5ea5f7cc969628e98ab938023453a5c3b5f7a327d20eb09ad51a032de743e99ef703309cd7e1a7658f1c40c3f3802c20b2526e029ae2a90055630221a880164fb430eee67e9050f3158ba02081bac74a0095c28ed42b70a8e02e001181081440d7c00050fa46012e509b41b71c8091a434da6647181134c6a0022935b7eb861c39a316dfa66a1d370a4e4612127eb8baac31000b945c9cd8b40cca5d2a48b0894d0e10915484a20b778800511b882044bd85005133730f9e1da4203143605e1ca0c38dce0c397273e5c5b8e502b880ce9d9bdea56ab4059adeefe0b13cc7b05038ea6e8a2e4c31318aef400bf98a1dfadbed988e440544e573413365c848b2a946c3162034f62e0c1d4262166ebb4d3400a2eeecd847970c4e4fdecf4e1c1055a2cc982942508a325d726b1c55cc9df1cfebcb84c529e4e3f18f48061890f58d1830c3bb0a2b343ed5805900b250707e0841338b1050f6650e2051724d04cc047e6d6e7c3640500db252d23ede6c22c1c0000d4ae7503c771e050b51316b36bb59c67ab6f50fe8508580c3182235a4cd0e4051dd7a176ad1bd56f9841f33a118f5f376b01526f473fef0642832cec33e66d6218a5fc6cb8c665e201218430b233dc9cf9a8a48ef6343964664600000000d3140000201008060542a158341ea8829c3e14800c748e3e765c36914763510ea33088811842104106108000210620c410cd901000c5a8d107679bde79d6e1b8bd14eebea8fc768eb82a372f5496ad72f1f257ceb7896d377cafffec383d035293f0fb5d12d5ab4effee159f9872decd3b5cba1b2604889647c45f6bb7409d8cf7e02eb3319683692ab8c63e985997c5f2d7125838fd4def940179e7b66ae6fe2490cce985f4b0a15d41c59d8ecc5386f7931c0719f3e7488daa6ecf89e40f8a6c0c69f39e3da4403e8db3ac1c28b74c4f1a64b5f51c7439c43448172bd5bfdcbd223bd0315a3e6855a7d9464c5d1616612b2830e3bb7dd402cd3f184861844affe5fe84a0d6477aac98044d36a8894302f2966e5eeec8e0289de927f8a5e4b96098ffddd47f3f2a2a0b278e82f102d77c23db3af227cccc0c11a628b161f1450d776b8993e7c0d4c7c32a3996e72f42e8a19c079919a2b2441cf7bc07faea0b747a2cf3466b978421841c20fa7d8bc93174bf7e8e678491b444c1cfc7e512cfb5cf25dbab223d8d7919f969fd7f3bc1b0055cda78a8e77dc74488c09a89a27ae4d1dc127ab41b4fb916f0ea583c0534aa7d0add8fe8cc5e81008010d2705435cde2781022b038d714fb26d2978c462b1cd8082e350c483f3a7bf0fa064f7d78a5a429ea7a0376f0560272e6060bce360ef39481b6a643dc5d1e3028ff350adb860ef3678c82b9ef93112f183e14d8ff359e6bda096cb1893c99516e50f0e709949bf3899105204020c4f6afe11070031aa7d8427e1d7bd28ba4fd1de68eac9c464986f82c5f098db6385a612cc4ae7537b46a7d5f704bb7d46063137137e72eb12868429f5633ebc0a34e069a1989852c246e400953ed6d4f227830296266a630c7e60fa7b3eb63fe0121247006e152509227e341c9404877d42ae5d675a35f843f06be8038dfecd6bbc0c40dec14b6359624c3570c448f129a51118a00effd895224efafc5318e5cb25a2180f28aa2e2e8314e6fc5708e5c9ce4c0a69b63e73ceb1df63919b084f62300980d98ef0329fc2d41a35dcdb5d343e95daf75b59ad0c59c396c2e7826eb0fb2a4cc6f1614d8482ca36190840679ffdd73a50222dc0d0f645cdbfd7ad7ccc7c1431ea3020e78bdd7ea682bbe7d2f8a612b6c2090775b19ea8522a169f7b9fe75566ade27e96bffc9cbf6d8b08434c342551d519cc62221d98c1e944582a1b8d163df8b2c25b0633992e9ef003f213b99b60910ea9dc11fa5578b3e990b019c02910cf50b34f9e0c75f803cf9ef2058d225457bcd4387017e51f39085da4426bdff312875ef0fcf6d49dd5acc8ee1f4d8ba741bb238813abd731b35752c49e135dc6b8b1a4d2cf251dcc4322dbde4e8bd3888768a1bb08d987e78fd00aef96822d027e36c4fbd530645cd3cad70d41fb1dd74d6e8540f0ba3483f2543efd7221368125470cf1f41a3ae60c29b95a821d316f7f1e35dd36723529356ee8ca9c744dbc8c6c54da5507cf400bae60cd3487d323497a629529a05645c7891ef5d200b0305d812ef31f7cb63bce9f35024407e55a70cfea59df137a05d4c0360b6d3bdacf2c9ff7b4c4a1828d79da65881f41ff9e71fdec65f45d21d177c0be95a89de87140ffb668d4b6eb49d7c638f7ecab18755d067d24c70e2b8bfeaec695300612a380c21021a412b94d5dcfafb36470a3fc2f4c36a558ed3297b82551afc7aa7ff565735df991e1b047ca0a13a88af0e035856af5b5c701ce4343412aa4720fb5638b53226af05f07afbb90203e50b7bf61a476b8b3d512ea2ba0b22d34cf264967248df9b1b1710c6906d9e7001aa5bb777693ba3681ce30fb280f9525bda3d4dfc414cfd4cd67c35c1e1546dad9065b4720347ce75e2c12ecd97f5c61f2c53ec2b41ed3d7682bc1a0944d808754bae6905907a8e3914b43ea0d0505dcd9e3288bb073faee85ec15fd46b705acc463c95144a25fd9f528d712f96f4b9cb9aff36a604a268e69ad598b81e6f9ffe5ec8421129e24bcd0fde9c8f26726e4a4ce6361ea2a2295532c1c1afd0d45ec9601fc686017364527f98614e4b613988872a3e81d7a48379e8bec135c82a365c9284e6975293d80c76a2d089c84b8227646c7d29604c253264f54451b859245937cd69d07b56c4d6a908dd5ae419ab9c90e9c7e300dd50af0ff28c7a5ec83fe514ad3e72c407a299f5477084b891b4573c636de6cd1f21b8675770a9836ec6c3de4bb6522418b9b59f52504c34eba8760b9f18593b3c3de0f4fa06f9ee8810b026599970d4ee44741f062f948f27d619c856627f84893b1da3e6208262ee367b947e4ba1fad8ee09a8e439f1da0ef454c866e0902da4e7287185d94da45a40023d4b6749faccaf2f99b6c01b153b9cea2366161ae1c2cad55056b5f68f65e9a846e3d3d548e10e44d5b37681a70ece853b0e2d00eb6fd2ac97790415e82374effcee3f20c553a6d9097cfb3d5ac6ccb6eae34b4c3efb735fd6c97aa9d4dc1af70e703f4a1450a9da19837940bfe9adaa2a8889bb845e6498b89e667f00cb2d40168d01a690e587f4745c5188ba5cd4637a1c2353c00347e2636e9bac099a9525c2734a7b890b376369966a437e9ced303da1ed39b108fd0828983495477e61726a0d623017552882ac4a16845623005b855c8bef636f9cb584c58c838e00c83eb6c113d458619a9aa14145966891118a5ef55bffc61823ee24c24415cd3cb605e9481cffd15d3bcce2de56268d31070f9e365c6fcf247188085b8805eec32c66584fddea0cfe6947ed6d56ba228bdefce51a99d482d0adf4561b353c6df22b1aa82b632a40a30afcfcf97a89cb8e140210ca71e5ea2ef83dc9fe8fb3a8445c7508e1702438259b2f6c267c3d1b53cbb3f6cf731828b1b81babfdd00aa3845c83e91ad7c40a7ef5513b51bdfa2606cbba862263a17101c5670bcc67053d3d2ba17fb5cba632b0bb7d4f04af02146e0342e6d22dd66e929ae6fa80af33dc2167a3ab1338ea6fde39b0e11038d83a0a949c0f9721ab39bc233f45752a92c1c6173be77847d544915fe0ebe4af72a18c9ba6f982443b05d0b55569f5db2a7351b2d2a48bc174047e11d60e170f4dd8bbff0720600f206ea5f630d2953de7b54aec6089385c300d547d4f3740c329842c7c0c489272cd3e07f68f85e9e3e6fd518ec94b2b787afed01bf8ae4393c646ff79fab9c2296d4b4e200f0d3d88932ea3de11490728ce1354aabc96238957b574b7562ae82001cac6708fe8d9eb39a0f0a1d79da8d2b31b4dd62ee357b570c5770aebc4b44288f3c6fb57176b3b2e18c012efcddc964d03388ea02a8b8d82b3eb8615fdc5a0db1ceb70f2c415d7ab42a3476f63c855493514dde097379337aea5d37c23493d168e3ba5eb893dbafa2003e88928c89f96b0478fd86b579ed255c0bda6dfb8e648039b2deec5eb02f31c3fb559deaddb2cbe9b6e2e1ea6b6a0398fa27e6056305c91de1c3e6524099c73a9c9e38e8516e8d98e60c5ef80cadb16fd02dfecf530862b3463fa0ac79b0568b6ed9591979c0b3697f89940ef68af67b77683b66022e33b3fe66894f17ef887d96c1fc64646f0f77aa47677d8e9039c250cebed47cf5452313616e5e2ea5b47906a6ce6bba213aa319fe0c887b78015ef30f3f09645b00347e062f3b80f9c047cbb052703953e691309046ede2da843322f328cf7164e76da8e90956b031046fd2457b0e19b9ca3f60e8c5d6bf3f68e0aaab4e26ea8fa0934b4b7633a4af9cab992c868b6a4fc064a1d99703e536ac65884302663eb5bb4293d05ca3d4a364b7132dcbb29b1e4968e0a21c42b06cdbcfd35bc03dc61015bf4722f27b23346aa12bae6fdf956609e041e760eeb2c2d91df604a776e89781a2e2c4da61c863dadb4617d4ade09345a1f07575488ee84071df3e3dbfe5c2da1bbb78776e90d95d868aeacb08a8dc21f49c0baca13f828f44bfdbb7265b8add67382c7352a06533d0fd28a0acf13e056247f1aff45237e8ec1a84280276a1c94a1f55eb010711798906505453ed11f85f0511ce43e8076d5e93727124da3c2046022ed6bf80945780500006b982c6a51f609a48fc283151e8af95dc1054c13f788c91c7235b3a5a85b1e995ad949047c363d3e20bbfa22a570793658cd56cb47b74bc935c0b65e8c6f482339be4d4bd0126a138a4cb3d98b9815531ac4789b75a04e4c89bd4d79f32e96a5f2f0f52d06379a4e2a88f9b40a2f23072c10ab553e8988362e3b0060e0726afaec635f8b790807029a6f9307d9ce59dfff0bbc62ae3204f9f64e7ab7393270f8418b5e7b824b59b0e98915ce27d9f897897908d75de2003ce1b6742cf8fbd852b93999d0b7e8f67c026f5f80e044b289a05defe9fe604c6554e5ec0ab78a7162bb8d9677f05e3b1473773ac666323c909315632d640d93c271555124775768eb134d54046ca4b29a389513897d460327c67c570a1e52d86aaadf8c219744fb008dee4a1e4ace445172408f6b88085a5e0daafc810ee643bc30158af9010630021167bb64239087002156990c2dfa15d226c7a04331406a9543013ab43d4970cede50e9116e00afbc0a4a6e0e0e260bfe5f5462e78992f23d36495cc26bf684a34c16202cfa1d6a4ddeffad4268bc1a0ae2f67ea0ef905ab24a443a0a40b5ccc3ff36412d7faf17709d7412d0b492d5cd3177f74c75cb2085c22f62cbdbf127875e9ce96cd90fddf05929d7bd3c59aeed6fe1012e7e55b324b8f0efc7380628ee9626ec789b610edc63dc811812a81565f076ec61901d4dc194d9f94ff47997109809f519a5e85ef5798afc1e72487f4c04664c30f15ec0d481fab73b72ee26ff8de0b3b6aca71aaf9fba809d1738505a49629109894a98042496ae171bc8ac3e53879c496d9d9eafeb66a03f22cf3133f2983301c8290ee02d4d811795799604488ab9e79bdfa63e92c04eda3f0deeaa2448d604b9931b77ac9ad388adfe63d8863ec180203fc6ca27caf4df87474ec4c4f4f10efb45fb78114dd5b3854f21bd234e47201bc9069f08acdcfef5a5cec402a6cec7883d8fecb896580d0199e6c2151c5d1e5ab95fe1f354e9fdfb1b311b38699f860759000683558ecc8c43b38a5a55879d7038379463c4bdbe0eb3ce0a56beae84a38dde17ca9865bcb539a16d3a3394b068403127b7a58aee5b2e0e06afab695d31da4298d95a2be43463b57c0ae43b2b98e96529d30db68107b39e84c82358c71fd1392ecf94347b48a80bc20fa0b0608903fc4f4c4b82a250de01dfacdd9530410c1102a8a05fe0167746cee35a2933ce641001818e381b4f66f4adadc0546476fcd611c739d9e9d8c800aa12c3ce5be61ae7a08cb24a6003b8e9685bedd4abd114a8a2082b4cb5f89e8d73c03339beb5bcdc9a50cb02168182ccdc142de0abbfeeb5808e7caade6c2659f504e0036dfe773d81db03a151e436d34aed66600b28f6eaae11dbebbbd53e7626ea19ca2a07cb350e80312a9376cf04414685785fa1291443be49ce3e5c0734e9b4fb251f9871e57f1368aad6caaf4a44e9aac1aa3bbc185591949b8ce630621fa8a516038b51dfba2442b63d7e081827dcd76a05e3dfdd44381cfe447e4c8cf8647c9adc873911d053e338480ce3f7b79b5a5c4f3230884bdc4dc63ac3e50a506f2b5e1f4e60a0c58e8edaba67ea8910c11f28458473d22839d5dceced7210631f4ec0972521c62e8344309ec8f532e07e445d52e9cd97eac2b2ba0349b8595c91072a702e3e66d22c762810baf860443cd4eceb6ee7b1e1332540f53727f9ecb1d7ba0865bd4c0cc1a4c0b85d09655ee653da2ce5076d33eb7ab5ccbc1188ace376700b21028695e23d5f715c3bec24248b7f9925317b35c9af79b1dfa4de43b182afb41743543b780553e23bc005834c75b598df3732a5201c2f44b4989cb72c5ed9e6f73c1c4915af8cfab11a12128814cd3b0cc96137ac179ae52ba8048e0aaf84f945c3f9281b554c3f0336e2f3faaf22d8bc1e5ab8b9c4850c3bf98c99f69db86b5637110fa6bdddeabb8b160bda94103904fa9606a9100c5d7ec299d428ba102a7277ac907272ce033403d3555a5bf597a7bea780c1d6f22b568a45011c3033cf6e9a54202148062f020c548807c59492c0a6613212a2c704b3cbe813373e14ef494c7dfa091c26ab43a0f6124438ab18eec3177c58ac88da46197923abb847765bafab49e10f54ec78d780cdb4d5134b8284ad81ea9fb38ac1e323017212810b5f83938e8bf58c8c4b9950d38fc2ef8daef684a58a85c6d9e88d5fca9473661b7a031b680c56b34e4de28aeb18995fa9f1123bbaf34092b116609a0f7e22e4101661502a79098a06066b6b3c1af81cc809f8900e2b7fa53df992c23404a8efe38481f0371fb061f452b47a6c8612a317283d1fde72d941542c87c322e2c59d0f0f3d5bfde974f1a344c9277473a519603b4e577991143c3769e446c6191193d4b65ad04a7a1d7b3a94682b8618f6185b804ada3af6dd5eb70d6fac9cd5b1363be641d544982f4381cbee8c885e640fa9d62babeb9ff72fc0986b4604226a05b87b7827dc86ed411db2bb9f33c01162813a97a8804685e3d227b995d3e436a613b2a194c847e954d03ea71d89ab63a3cf05c7172e006e04516073b42e620c4e53dba93547f5824fc4f7ade4e8a5bcc3a48d24d7d85d7de65a46e3c36bcac68292a1b21ed095178c6dfb31cbb98b64da8701d9a7f8ea3aa8132f481a2f26e37590633ec1d1372b16c3fc07aafc7108b28f283efb4d9307777d68b9a565191636e8a1ec438fd1237c32600742d5bc8a9a391219493f262cbcece588eb48cd794249f1a49ed7460b7423e9a51714076480428ea1b6cb4c087796fceb0331aa975b91bd6e8dc52ef3ed91189eafe7033ccabf394acbcb486877bd330cde4b62f146c6b9c25cb33aa3a0d079b820c80064eb983b658e6ea1ffecbe7794971a6db49b2217dbd1156ee0f70cc3f1953449631893bdc3ef38ec92664c9d89e1180192c56726500704248c5cda9171b1d9555a55ca7206eca83d7fce2e2960c0b181369fb0f59ffa5d947a8242b3ce46c476f4b53d9d9f2d72a3b150704cbcb7e4b2f23aa1b8ff64c8e3bd2f05cc8585db2141d4cbba56dbaa178ccf3953a162ee86c15fe8a5ab66b1c59dcbba9a03237c8849b4333fc9245850d10ed3b1dd08ceb0c2e0e87e9ab166a5e9d7ac0c7881ce126b56a937aed20188400c0a74e3325ab6f4b0fd74a094fdabbbcf51e2d4a1320ae54265e084e94568cc9886849af74c7140f556d33605879793e65f1b8e33fb5175faa3891f480a2bf56850d50ef42f834f83ad2ac6b88272dadb995978ea665b119567731096962f3858b1c8f824b55c65501e90a801d1e53da0f76599734ab9fd6f2fa397e73f8e0d9417a5a174ea509596645310c73f25e4f20aa0be3e3b861351b0198fd89b575c67ce44bf001bfb93a2d837b46b6352f3e33e3ee8937cd837bbb6237dad509c90af15c52411d6f835f3b901ae4b15e307632b8d98cf43a8b3087e3a3dfe05ce2ce55b7676cf63a9ff3217f9242e635b92a91639360403b3073bb9b7a14391e46a3dd3bae778c5203cb4864bc5f87e21a6a821128d66378721909eac20e594385a57e5a2ad123520b018d33dad9d592f7ea69302639c56504a6b3a8b42407d3df659fc49168920d83cf9c07728deef34a9aa5575bd8c3c8059ab72d6903ec6f9a7d9cbe502e493439fcee28560613ec3be75764f247fefc4b2e255ea7a9d69b0cb4f2f4ba0b6f9afba4e5b3f10b22b782da8ddc789e4884035409061f37964f9074bde6ef0e0515678502a7b019ffad04e9ab026e0dd9d283b0fd1d487a48e2a862a198566b9079011f3140ecc9f3e7e83fadf47aca1c47c50724bcc7ed1bc317a15371442ee4172452bfbf9a9a2a07eed103e4eef4481926a8409bf0b3e9f0acb307c84ce40b164cda87a56ee715bfc85ea5b570bc35747478b30cf7b90dc9a94a1b99731ba652d1591b47640076abce2e4798dd445592ab12ff48d3e67c5afb6fec3095476683e0b819b2cdcd6b3f680b70a00f102308105684ad33cf8b96c50e760828160f8cb3c61717ba90e330d4cdee76fd5605267fedc7cd818b2407e9ab2e3cd60f1234d45934d6b76e3735e24286ad0f1b987f1ea9d7541a17157aea3b54a3e92f4af42d0dc0560805ba6314bd1fee00048c60aaf24e4728d13bcd1225e9ccbdecdc4350f74f90f6eae8c975ecaa456c2075c6702682d717762b4580f9b6544a30da654e00ea3d1cc6bfe7b9b7040662cad5af533927be7e40ec59591fb7136dcc682a017ba234b4d30e6db3b2082208dbac5b368ddc552e7cf2d0ecc1bf3a1d26be7cd5e6133e055538ab2102443caa1c717f9288e8f84064eae80303870996109b74985c690d4a16a0ae0baec26092dae2cee23ad18e83cfa07c1293106d8545da5b0e76e8d5ec1b252d3695fb899b5c3b389e4290904ac809fbeda42bdd7f7f143ecb9f4adc2370816617300d6ae791c63fbe90adbaa3da884d44c4707e2e9adbbb25f79071c1e3cedea1a4b66c56d440f163d3cba14011460b1f6e506844a77e1d47d2702c4cc0d9de6f20733f2c695cbd91da2f9fc1418600cb8750659714c00526fb6f0ce9fb5d6154e7b0518202f638a504cf455d25be36b6b2cde43fd463eca60b2b74c4a0599804088235cb1c4987add09a15a42d3e28197e3d2ce9e6effc41f0aa7f17d72f9c89d7580e0dd6f0dae82b00568b076acdf3a18c0e39215cbcec775ba058682651e50f5e9906eb62561105f41e0ca8e2d853a76d63123ea75b92626eb8863198045853b9e77d0270eb2847d9099bc69445d9fe209aea77490dbbce8dabe666944a75f234f1a5b4643125412773f7adb944cb4f00c7518ae77756ddbc8fd5c99b7d3d52f313995b87b26c18905496e07269a8a2db2a2a146b582d62c3e0061d92c2c69602e1fb0dee1847c287eeb1ba0e44e60e7295fa91206a514b24a9e5ae86ecb450999b3e90c2c5772bec2fb0d91853014acc6f37e265a11dcd3f08a04f5b541cdbddd3ccf2dcda8dbf3992fe5a436f67322326378b3691b343774008f62270f4c81a997a6fa9707266f232d440f0980f949da4a8040fe5b3cbd077ca63125c8f4da21a9c6719069fa44e2b275bd195408b1f8608ce2f14b81d63c71a929ff40aebe2bed17e1c20aa3366c578dfd01193cef3513c42d7f568015c1a53280cbc02c1fb7bee2ba6fa2470b38a04c165af4ec118265993ef7f622013c3fcfba95260bd9e592c911167961ae3a5a319d0d0fc5c660cab0a8ae9dd54b17a43df551e048ea0b2b51c3c77ae4c7f17c8a723fea442616bd66501e9ede32921471f973d4d78ea1aa132f4a6efe347d13bd4f0717c8ec61631ec811d7ee278c67dd714cdaed169417fd2abb0d9828d28122062398aabd4240bd4a1c111e97acae1121dce10421123294c8ca35326f897126ea1d36a8ecf813aad7dd2d1d0bc7837b31546035cc29c051d127716503a6745eb8e1bb150bdd0bc4bf2deee3e13df00bc1b36ee66b25a4d49cb9cade961994b7dd6d513024e2a266d30ca507c7dfe11c0f74a86ecbd20e7496448aedcf74ca2678f2887349c372d3d171cede7d220965371b543de76e3d0e629da4d0697e5d852ef53f116c417baa0ce3e2cf08926211809b2f94686bc88b68279f74bcc1dc4215d7b2c53d2eaa64852a02247f51d7cfee76108f4649985fc4935c2f557ba24a8e88318ba37f996fe91bffd256862c54f40e08fe98b5f2f0a1384d92990f5da10a9884021602a6089d21d0c324f6059d347f29d587b794e2ffc8d5fcb6e0050cb44f798e6742456b1f7089cda4d72c676b7ef2be761ec4a3b1b21fbe5abcf9a13234ab09a6e4813649bb6d112aced51065db899dd9170f89efb0aaffca01f49e5db7f09f877e2bbefbfd7f072895324978c9cedc03ac8553c6ac972cc0c07169a4156265b780fcf0fa7d33eccc2c6526514819d284deeea2738af3eee61c6c2c527ecc62a9a9e7e4437fa91298a3061bfe287255b6faef44da00cff22fd194523970d5a7ea80cf8acb65ac773abb32f499320d88a3103998ce0a71dbc5abaa9000f63d334872ccfa38837ba881908135ba47d868a90bed8465ead588c57d12d6189b01cb0e36571c32d98c5a80bd9695f190f8fb7b3603f09ece676049b55d96720f7ad52234b185af13cf415cdbe30b0b415576787b97e48a929471cc88cd41e86f2022945421dfeecfb8942403d0c709f9a6ac00a5f99ef23ddafe67d09dcfaa3e498aa31471bc56f2228fbe236393a6063be5deaf17bfc49b26f3e403b5ee88315fe893ae754e90f19ff24dae840059015cf9d92936a242d170191240e396d225d0546d9b5afc1d41c1c385c4339cc59f66053462c0fef5b61e866fb444c68a77944db6112bbfd3c44d76b64beda66beb4b40db637bc1a014e9d8ae64dd220cad6abdb77047ff793bcd5c5bf8a65f15e173a0929043e3b90361fba7ae914ddd6c14e8847b35d755d7c631d2688e6eb0df805a04543f1d62688186dab229a4a402c4a4605663361cd7582a2f995477a901861179354dcbf196816f5436ae4733d7dda494b21da7ae140feb73075cde5489bfdcf071f4293eeb0a985c1c6156b218910ffdfe9bc021e8c570fb84630a629d66ce2d197f563dd2837258416af2f7471a8f991ebe8f3c360003dfda9e6bda3ead5701a61c42fa0f11415d5d2bf3f986cd2bf75c63b91b420a9f5e0c2eb5e62aa7dcb05f442c1a913c375f0eae9c35e6a0570477ebe3ff6447be8e30940ce6f4debac41d23e3c344441cfee00bd37bf3367a11ab954f48043a97ba2fc2d921918654c865993bae064463e01921d97db6e51a04c372184b6db5a91c39e5429c872902c486696c57d303620b43340d49dd1830477f7f00e54646e7c0a1311f31414e268fa832c037570d95cae8674557b9bc7d551e822854b4da4cba1e110f9265b68fdad22dbb346dcea5abbd82ad176c565e58f5b7baff7d2acffb9c5fb6bc09137549664f97faf098560bfa9361c50e48eac73ed1dd49bc7c30418d83f6228fd05de5afca4d8e7915e86e7c53c02ec9e31db14e8454b58a97fff3eec1b94b7b27666f502606cd9c3b3c61f892eb4c485a77cef9249efb987d4e637919ed6d1be598f76facf025d051cc275c6ecef8866c09464d0360c9bb37671e906614ad26877da130195173c74deaaa477dcda0b309e0471d7f3870405c5a7b57242522c2ec95d2822d61c3d64bc06f82ea242b6622cac8efdf1cfdf96c3c6618be12aa1df9d5a8b3f5f3a20dd523f9dc3f1079d1869d75ecc957e4a9d30b66171f9f820eaf5ef1d193176587188953e59a00aab5b1c6b0ea56ed82be920ca91cc3e3120bed37b6bea82b16390d469ba3586ec2a27fe7b12cbba682b45b1e0d5895613cfa9f33fd8935d08f07cac6bdf2a985862a78219a2c37a0a62ad32a1cce7a34a9270e3d06d94138a05853f9bb8399bb1314680e519f40427d2b9c623610684a53a917d5b66bd3ef7184f6ffab6c4a3673a798e787e1f2e0a058b606b0e5f7c320c619026c4ee86fed7624a1897505c887123807e8e778a85535aaa48348785af4f943290d6cf87d13196d1384f1474729ab6b6625985f5202578b128b3d2ba0a3954eb6295f064b2b0425eb807ab8abd5dbb5caa7962e89b0b0c9d845e69fdc1b438ecabd0bc0157b5cad66a66c1bd290a39716bca24141f715873cda66d1b33b49615ddd8ac282dbfea20126381ae4bc388cd04319a2acbf0f9af67bb08ef5817ef5b8194719d177194a0378cd4b9a7dcbedb476bf39f6d4b2a2e2564a834d2f1f0d505846556d9b23d74c7f01d0250056b08683fc3fcfdaf157d297f19e275925c5dd8980e70dfc0a83341891b1d49b867d8b023901b648a5883c9f8130ac08843cdb16cd5f9048cb479dc1b2480f69b78dbf9d4782a249e57014dd3f1e938f73521dbe8029c5a66d70cc01152c75694078cdd5f9988b0528489341c2b084f72a8384e96fd391ffd226641ef824175a0ed20172a17d14f2dfd03eba22624a8e8687e39e6d6b8b9a815a923a8761a1e7ce4ace9c6772d323d475cb24d42caced3448c6bf1a0814d7d46020048d06dc655069b6cb20a6a441b230cf87b4089a7ca5002752fdce2a05366479f53cf2e4a90cd8de3841aaee134fa99060ad4d830166dd82a709ed4f1da76acfd3927ada1268290d502449e107b3401e01aadc496ac0b4e10946cc9484d6100027a98a40a2417c011c6746ed3638a99dc0a0607e1a3bfbf2af7ebec389f76c2236265855356ce07e43cbb49d31e1af87fa23a8c0586fc9e59b11680e53e4d822aa916e8d449e7a3256c45f561bc16e985132054a4d2f96fe60177669aa2ba904f52698c01b1911fc5a1872d5050352e01362b5b226697ec12912c8168bfd7939314a4f1c60080c80edb14a400a4b9f7483247603e1a25111ae51c234163753267015ceca52e8119db85bd7a026011b8999d71e0f4548ea88053e7cfd4f28601f2eb32e8ad4ae38615c15512e460ab729f19625bfe3f6e4ade6c7df0779bcfa30b2dffecd0a2a65ca0dd1bca1faf0bc790269404a11717a995f1e294f445707831f102911ac0d282c05b7c18b6402ab108ee9b91dbbb604e64150b9b10fefa2398726997e339262e87682c421626dbe2e7276786bede0023e21acbe78644cce84a1dd4e5de4ecf052254ad5bf3dd9f8d8e672b3b44aa03871485b1907f969bb6640f2ae1d22bd1aefb38f6825450c5c3b8cdecd96b5d7ffe23873162903bce8ae5db08a20b00e28757647160c3dcca543faae5e509e35219cb7e4cce51d023b802dde1d747a4aefd9ca4fced05a3f8a60e334fc5a9f5c7bf1a6f1c6f9be439c357f29c580d703277390504084abc971f460480c8ec5c13c52f1bc43b3969dbf4524114fb9a7b9952001204239302253bf78bc3cb594fab9134e01453652cd39f33c3a8fc46dd5921c38b0cf2870e0a6e23ebf80208f58f719885648cec92b28815c709b5f8742b4c014a94da081925edc01697b2855b10bdce4c3edf6d0653311c62a621c9594a9d39ebe3f1c1848d5e13de9b7d18ce98f66ec856e27117b1b1bca76a61c97d3ea0479ca26959afccf0dc90880746dfc5761cdf6b0d67eac438861779353c41f0b33e23938a5b603ed239f96cae9e71f7e1740dd4b51b867a9a767577d9a3d2f9c1ed2687af4495e44ee11d6d343257c227499189ad3a2866790f9b79c8ca71af139dd520559c42bbad4ec70d84731a35342e3a0074d8d57230afd457d1254e8c0599f7d957d9cf1ee620a8079af6c9d62dbaf8065193979f2889312e8cf036404271de6375c9315bea1037d11435cb3a4e3a05b6c97d479ca66ba553640ce678e8f65695adce04d98ee48d748efaf3e5588d3dcf9ee01f3aa6ae86bf01a7ca355c0076a8f2c7340924be82c29d503d427c8501aa47e10717a275458e648a47c3dfa04264999ae361b88a2db400c1e554a3137f716afaa207624286f24bcc4b732a5b562c827020d78af84467ce18aad4ccea7e7147262ae88437db968230810b348db9aa28c3bf69affa6147b3cb7001289a76b1b041059f1a440e1d32db57087f94593b1c4a076aeab2057a236b295a371ad72cba61dba1ab7e4cd10a393b889372a65ad8f0bc41602e642616d463ff6e82a8bc9ce5232e40676039ece0b4bc0b10b4775e013ff5906c8070ce18c03b898264c28fcf0bec7415f92b2a9aa9defa027b13de5597a6959bb1ba6364d6e26b698008752ba60e83712916ef905537ca9c55ce33a0a8c4817f4a4469348fa630571a7b7e38553dad220d82c008089313cbea453ee1a62c295941a33e2eba6a2182955c6f92f27de1269a825565a3731cacb07c77c7ea0a58cdba155be9c0a079763b78a7fbd27d9f0a5dbffa361d71b877f602348b58fa68ef260a7221938da1863aae1ce007f50f4c5fda19d047d5d594b8b0ccb2aab5b82be40d0262c9a0a38e4c1cdfa6e2ae70e1257f0111153d6b6329008fe5d144f8c2289d4835891b5370a8537c4a31c290aac703690ae65d273f350f0d23978231881f80b3a03594ece499d46eba240f2f578b066b487cada7e7e4fa16e41bbef63eb501eff9592dcaad7eea8b2b4717dac4ff306472617a1291cc0a9f1fea764a7bcd86da60690bdab2c21a3ec3d0de16a4266efcc67b573e2f4d91992a7c107341989e61699087b9bdfefca0bc27f49360a56b8e8f482a4380c5a232748bf10c54d486f43b09db7e22e79aed68150230246426d52c22759f32a5f132a718cba1b97c91350d85029447cf1d7b137399759d81106e82a83ca6b4e21009ad106f40f9201c383ed7650dbb92fe0ad03b963bc3a7e6d85075967fa4bfe10a05e976b044fcd07c7aaa5bf4bd2e8155012685de03553235a9e91f8087326a76dfd55aae4e101646b86b910ca0b40d077e21c655c802d68c2e76332619041f42ae6de9861b0615b3930233c958d398191eddbf69b5ce920eec2b9908512666a6d1922d83df1a17668ed7f58765bd845014c1dfedfd274340ef873d84e760ec4c2d5882f58061bdb2b66fffd3babb94319452ec3b9bafe3767c997bc3ee5f680338acbd02d71eddb79b4878f847c4c4af91232db1554a2ed37f7abeda554bf40ab1ba4dcf267627343dbfd0b38c2c5008059311097bfa193d060259ff4704efeefc3a7ba69926b0f2a2423496c68d2e8a922c05c50b9e46b79ccaff138a28f2fc16f382697cb93f5a0929b09e090b213b3419797820d5a12b3a995917343536a10c11d60d4adf6f21a83e5bce49ecdb39e0f4b74fccfecdce0a45b6dab81408d243e3449e7b6aeb370e98a812b90e8e86d7f00520a2f9be5f65bc18c9086fecab8c1f841bae8f3ba6a7d1470d4b772c5f45b3552e43d43e39f40194ae023b11128751c1f964d4058ee22089a043692d791d66c6403cca898cb17da97c17c4bcb6413ef369ca02f864d73421139460bbc57caa022b61a7fe54b2025844957f6782d4c4aabf9601307a20c4c35d942ca8bb029952f10182d68bb8487928c7e2c22bf20da5a04f88cf388a5f21e1e5366f9ce5d41c591a62a9aa01de55112c5834f868187d8a6f23b4aeadd3a5b894589777b8f6fc45aa335c3bea84e0f605ea35f9f35fc5154c2a53dd04493aa349ee6e0307b78e88a43b866c424053d52312acc680c041105552e12e8c80fe312ea293bf319d482c9154642da0161f999f3e15b5bb2cf0aab32590804aaacbab418879d07a9960c04828335dd11f842c87bdf97b0cab4ef8e373d1c7d020d79a70ed6a1a90b7643aa91403cf3396fccfa32d060132589fd86f767aafeb0a78ec377e2bf5acf4745bbf903549f07ac6082ae9f5aa50fda0ebb478727173654179a15f54762b3b266f4db02b70be2ff34bce9451391a37bd0238a4f4b985f710b8a7e95f40e7236d2fbebf777644f0296fef52f31d0c0322912cdd17dedab84f959e889fd26872f992f2064b062cac51b04599d766467c0dde21d2c55fcd818c98cf38103a7a1d724eebcc02823011fe848fa44e7e16ccad6c3854cec8cd7195d325114b61e730e3aa905992e4c6379f49c7309069b2dc1f29d939f6bf8c1d76bd7191c3450372f160a0abd1a80a8e9955bdef793cceb0f6b5c9d97e9d6de693d8c3790b050025e1471b4f504783b57c558a90e3dcf092fdbd2cc79fe8bfac0e1503c1161f84f349289a5105a31b2619d8ed00f67eaf0a2408be914428c1b2430729f8b4167826810585e5a43bf35b75910d039682c5f04cdd0d36f90acb89d46e0097742769a04793d8b3896c4e2ce6708f5f3225ab14e2995268b9aa93a4a6b2b40aa4467589713677a16a04e62dbc589016d2dfb80db68422091771cd68a0069795d26f558a969c336b5c9aaef0eb7f00c290de94b2647bb36dec31125c018285368dd5b12952ed8120429daedf93af0e2c6e46c6381cdaa84cb063bd178f8bbe6d0018e6385ad07b10ed00024e9e23b5143ef3b35570037647ec3a2d73b6e1a2a104760583b61239c1639d43e451164f0d0d3a39724e194111c151dc7069688a14f9119e3658bf061bc12c94add785961450a673742095751fd9bb57959ac963482aa5cc57f833126f351700581302e299b8f672653d935c2ced0dc84aeb14318551e4347dfdd20442562fbe03d604b3708b2119fcd3b569e6c252dfa6191d85764ce461ccfd6585c6e13b573614301fb4f454142f3d9ea0c2e2f53d09725a32874da99cbaf3a9437271f2d27b0b82a0d5b92a076953b5bb582578d8e668c6e33247b4560a44e2f5079ad05920722883089fa2d9119dce11b99b1801fe48cda497007e885ee44acfbf3f3442447482be9c3a55052e6b951d525d0e9ada8e4ac0b20bf49cb1e5f8082c7e75bfac5a470c70ab417009b20d6845c1a61c2d4caaef71869f4bb4508df16227932a616a92cf8f8c78e56755cd8bd2382b4fdd6189f1d7bf7460c2494c240738b714cd9a95f66d14c530298dae4c268c5f887805b32f61674557326a43ba730b9c9434efae143862957fa67316607e09d231d8b03206300db4c61f2fc2a6c977800865670cdfd851062169412c440d328116edf96a1eeb87256ff2cfd436d966e87e24c8f01d0e1d90f50f3847fb1934d12a7e8229c024e91f98de88dfeb9fabd38bce54d7a587d08a76025ffc1edd4535d02e78eeecfcdc4f649ee7378df93b783258d04324ec12e3275d017134ba611e3c070ee5ae39079b93d38d9a04c4a98df224c81283c21ae6993a5504e0a2f9b45750de44bdf243f4af575d359078ed9253cd838ab3f5480438f04992b3c3b029a83cb42bef735b1a52d6924aaf786df83820562213f98282f99b128e39c776284f82db5e616e4228050bc20e55db1a34fc14f70c7208901e1705be9e74e664c4b41d1bdacb6898119ea10e6b688c3eabefeb510d20502740baf19b1195e162cf5eff99f1e1faa418307049e944265ebd90a5cc5f1f954a252b44232d55d176b41ed3bcd08885ec5bea281e08782a248cc368273af2028dedf639300d2837b961e3d69e3f595f75814e97ac9377fd67b20f638122bfea76649f0642a1eb9fceafe8dd4b56b811bd724412e4c0179bd028f7a6dfb74c89b793d90882f9141821f32bd3b9ad8f12927ba4413b66497706c485e9e04e86d58a2f3a860833c4e1583d6dcc306912da1c809babd76bef13f2990578a7d3d9407c5873c1d922292064323f7e26afb5c4e647cae2d76d5ed6b55ac2842a61b5f93a2d881ce2ea504b185e9c7a3f1b5722c233c20b78532260b314d07f8d0222de4a4bac94f980e2238885e550cb13cfe2d50c125d1e9bf1584ed12b645d4c5ffb639e2e025c9163fe85decbd6dc89ca07843cbd802e824a517399161c4376b72de9b6205f291840da370f875ce230ddb5f2c8a455f106828ac6c9068cd655f65af5641b343d83807f5a06d40095406266a9e69bf6884c5f73da98818c0b0e04a7d8aa8c046b5b41f9f5ab0de03026b98382ac48f8fd547220d59da6c2eaed8c906d31b3efc2dba5615b832f75079f54448066fce7cc85faf5dc553ea7ada7f9ed614c451a36cc661c6648d0e6c03caadb2578f6fe6230ec137f2061d745076d4852617aa5f904fd7d6b6f58ea1466736193a0510afda253bc10329566a2583a2f889b8edaccaab912f1c179c8cbf0eb9926b8f50b8434028bf00b095f0b8b37f21d3d35ff50efc5de2cb4a1cf41088a95a7550890f844b2c94acde6e2d7c5b12ab9e959a1b3cc555af7c0a4955af976cd8dfb969d99e807a77a18d96bea10a4f7fb395551bd244e73fdf61d3ac51d131d069c941c043bd658abb93beec7f0b76ddf2c141e04c827a2174859f273bb9cb8615ce36a1bb6e47ddd450072c3696d21c3a0354abe1d34325eb55b4405b0532fd4d350892282cbdbc617196d70741bd956317c8dc19faa3fdf4dd09656aa05a3877cc218b8d81b01ca2447934c4262f4149d19249431a433312b21210f3b92e4f39445adc2b0c79c4c11f7abea088e3c80027fc156ad270e3a6a4a9ffb177020eb524ab9775fd8cb4ed5c27225e98503fc616f3b603ff548ad7309dd8a74f7dffc40a6f115da67c91f778eed3e39ee0a6cf701fed08cca6b874b383820abf536c9b69d9156e66cbd97d2e655e1e74de7e4f932653696a90fa1a8562a0e3b32a24ba1bfdaae14d4f302f764248872e9d9ad346733d4f1f96b68fb2ebf053a12676a567f01c25998f1facf6b4e5616870ce393daec17deb2509913d845dfc67a63d4f2ab4ae970d3a5c3044b653c50e9ec57e81afcf84e7cae4c3fa1bdeebb8abf610d767ef014806bce0c86d5cf0db172dd965a61129aa022d094a2a113ef289d6497d1d044c0e6885380d13ddd54a0f3c3f831042e8526e61959103d28f9f8a164e6373d184960959af18d9d1b1c2c4ffd8b75811d36545155cdef03b08b875acbcbd7231d9c7ff5e0a866bf25612f9bf7b44c08cc8dc9b4827ea09cf20e58cd5aafcef047a429f46514a545081eeae012297535344fb1f0e0fd5254a6d65df95e4edfa677c5f6d52c88a89e5fa529485efba518bf013a52a05e07fc6a38756fe3a3347cbc680a99b672e659639a84eb063740620e111fb681f8dd944ad7c3d9ced18ae4de6737902fe325162c925b89ec87c4ae0aa5ba8cb0c0aed381591f97ec95ca40328f0651417f7ba3fe2479891d58d225189c126f7279282cd73b08e19e22b9ffd74cb46ad40bda33f51922760c325e8bc02273a4c0406c43817d8feb83837f4b1109884234eeaa303a674f88ad9837b1db3772f9decfd0a4312f452f6e0f54b19db80d09f8a15e1c7b3ddf0cd405e6cef521522d5e21206594d895cca5a859c6ca9b99e343c35660776ab9275960854f5185b4f8b3bc0985303ce8f6341ebed30ee8333d94c057d4867b8da55b098edafc08e80e0c2a85d10c878b752877df49d77f0e049d6d614a6e4508db94e1e14ea958efdf00d8c02fc6e222282e9f4e1d1256b5cdc31068a18933767b6b2dc2958742333723d1dcbb81472ab295837a1173735493ad8820cbc1c21a15a208f070a44e31b6e640d1eda080d77df958adbaded4f194b0dd2745ef46c3b9ead78effaa8b28ec6256ac16893e728d89a57a628b5f63369e881e717e77c184ff6a19a6f63f608fd1a265fb34869251125b6ad2349c3cafc7a87ee64f40f132621e37e1d42ab18371e988248478c278a06d42dd98844edb4c419c26ee9c57f68a1a7c5dfd9c9942b7ffcabca06f6ea21a32bf87ee574d245ce2184113f2d716f526b12db6daa3b5eebb3265629a1bcf6bfabe36086fafb8153d6e7160fb445c5be1e1bcba833770a24527f312d78e784c089009f2da9f9612b72855e97d685858927292575270a490d122dbcbd929f49516b4a53431053151508e39107afb5ca36f0ee88133cb153a84099ccba04b84821e8e1b6e8a3206a8d95f5f38493040a990f7e508a7c75082f8da0c10fe049ade83cf11dad0cdeeae42ed36d45cb52f03d59924cafa1f9220a8109490eb73a103a0fd5fbbd47163bbc215146f3faae993a80091c77671a8a69d220e4961ffee10d077b68572d433216cd871a731c9826f2efd665d2425a0ce345356a0b611ffa60400246306c8192a920504923c0c6bf68cda6a727d66f616d415c10377ac82315de1ecdb9958b2a37eafa4b0df93bb921585690c3d3847bb677732eaefd39361430a8402c2d828cdf42c7fd532556c72493219151b048760ecace86cf45aa54cb4c6428d639f143082771925cc855ad0452106c528f11fe918b5ec7b105cb1f020816f5ce173eb786313172ac346c58dc1f091cc3b630987f3274e76ce0b1a13e4ad113547d270dba857ae30914211418d3e6920bbf38e63ba06c309952093c21e960d5870de597fe022f0b5de789c0debd1b1e3672607be8484b86cd89983319d23a36be4feb7d2bd0349ce870dec4cb0bdb810e1269a209a1cf0871ef1c0c70a52a5737e9c1fed2be37046f17b4ed09cf02894a298c3144496b6d949b42aed3c2ded7f9b53a49c80b6083bde3b2a71b96c161e404bed6e4d6eb173178117897c3cc52b18630b8fac2bb94f46758356f6d43b5650f92b61083066668418d70d5bcd31b82bc8086d9dc8f63e2f83ac461bc864b6f61462363674d0f6c08376af9d486a3f68dfcc2ba96dd7095dd4b2f4b92d113bab747328507b1f44e077d14e01cc461e51e9872094da47ae05c18727275bfc7c7a800b57b63b31648c69767375c65f7ea655932644a77e6886944cd3af17acb41ac0ab132904f62f12f2a6c66f5c9491376ccf787046559ac8a6a1fc2ee24809cf9cfa585fd5d84455d694535d05d5dce6f10a5e396a9ef6fea80b12816bdd35d2405581d0cb1d8caec6c99db8f46140cf7454e15a9d0e377ad6eb8c9fceaddb204fc92f4ae31d38e6a85e03a7280e74a3a681fa8e2ec7433a9c221d59538add3c57e617dd70077fd727883281d5392be4a60d251e5025f070ee0bf0241a514e7a2c1abbf3bbbe92abf575f64091801a1b1908fd57f75a7fc94c870d7af3ac4452efedfef089eaa99ce4da00e8b3890e3b581a87360a87c23f7a9e0c5247fc4efc8d3b8c0fbd3cd807a1a217509e62401b85fe45e4aece94eb272e15c417bff584017196e415e94a036cc9c1d46fd00180b3889c7860da5502256001023d2d35692baf60143598503e21e5f89580ff8374735120c563453421dfae0f19409df98045c304095a0a01f37ca6f94a5d0358446dd691dfdd151b34d64ab408046b88b21f886a72746fb2f9112fe026b0a0960bb65dd67e9ebb98caafc6def81064250adf202a9665f3d6b76da4bbb716276da13a6318185414dc6fb656f218ae25b4fe292755499e4d7ca24bd76e5b82efe905879f035a9fece3a9ee251db56eceeeb366c4262a28356ba098fc49336d49c3d78ef0646cbe644bb7b3653e0d8c379c50cb7e8b89e046e66c6f2a488cc72148a18770a7510f543b1a970c5f79d1971daa05d7281f27d84b18ae7f07eeecb5f1f1be2b931388ee1b0dadee22f411d0f2a108ff8cafd95b03ba709d155d17cb02a9ddce6170dec19425d69a06862bc8fe757971fddd28e964dadbd450deb6eb119c4431054e8c462ea03244d06bdcf8568377e10bcd16d2ca834f52bd7c5b72f1687049a8e348e9e59dfc08ed5d144cce9ffdc3826cf9d299d2fca650228818fce7f5980d4423a8937cf6010502c7ac8d28052f07b02eecb8b62890b413910df2667621d33878b79c3bc989cc1fd1677c8a699408f51303dd9bd1875fa02db573a9a8e025d454f11df6b5432f37b48f51a9ae2581c54b2cc3c69954ec4d27bb127dd261672eb5ee52ec27a177c3616cd743087abdd88e85918cb785d44a742a3a7225dec32e0d985ee66012dd23d3945a77a167b3a982489b4e94a7742668f81cf713c39a04e2674f99e959ee9c56c56394cb730db1f262174d57548a62961a8aea90f8beee6f01fc22d0f0593d4fb811c71cf424f80c29676715c2e79e60cf39ddda051220767e93cd7fd9b62d32a0e141127d3dc17353aa63c12da824ce4eddc916e865dad74b3f217a4522f170008f0e9722757619f535d4664a7632f3fc57b5760b787fe1dca186fa82f4d2b9fce6ffa393944b6b0cabf00632747f9dcfe251be42543403e398ae946a3d3fc97ce152ac5b995ba958f19539c21548c242b98b48a8410f59eb0815e95f2222a5b013192325ff167b07d1edca9258422ce489aa7bf7f85e31809e465b9fe2a2b82da1ed7d41b1616dfbc791ae0c280b32633df92bd11fa003f1d2b7140dcab21bcd4773822963e58fa2cb17d01dce63a28dda1890bb48c03c637cb007e2d6b1b1f9e2832183d18eef0bcc16fe0d06dd8f2acb8064b47efec9177363bc82a2c1d9599e4472412494d832812c34b850be4ed074095a94be1fd7e4299a6618d78640855882b42a9bfb37b1a80db2511fe44fe9c6b1b54390910c6f3aabad180fbb191349836b76ae1eb624627900bdf4aec00c13506f26c80b5616e3fa93f43414143bd16032616761a086ee1cc6babe0475f44ea69761aec3669d19889915e1a9cb470ad996d9253ffc50f06250fc6dba0b2ec34c451d08026d6c559aa7a23084c3d91aee7d3d135db99b1fd50a64848c2b12b296b4a420f9f81ccd295407d67e152d8509eb980ca1ef17b80fdf32e9a8edfbb3cc20a1f2cf3cedfce0f28d1321580c8199a15dc3cc40bbaf6f29c1de4168b5d5c34c4b74e20c691b233b3fb18f694589db93fe11a7d3500d2af02a0f9b16907ae42a5a3e09e0a777255fe9ca9573a44468f271240ff98342968ffefd676030c2943e83b1c30df6a5dc2b6efa0ca0fb96f0f942338aae21bbdcd063134b224b15515ed2dcfd273ae6d799bedede42e1b5c683bc8832c1475a167d47f9c07b80a6aa777b1b3cd96a3d97350735d50d5f3c99ab09167168c07c9a70ed82e09ff43d1fb70c290f8c45638d51f32edebc9c71b2df133db5f97a4637abff086169327c09bee4cc870bb71102323542558917ac3e76c21abb2f0840c0ae7fb550853f260a558e6616b12ee16bf4a8efa50c6ca0c20aaed02f5ac52bd6686c82a22236e14248df4b4a4432cd4fa9c3d84be2d347d407553f6080704873e09eea229edf13b49cc312c50f4b44a4d0a7363e485f755a6f2d2da61f3615a36afb20af345e8441861e3d55ba97e83ac4f042380d0a7070de1a8c61c9e7684bd66b75cdefca74e91ab405dd1831b85d00bff80348b7dbaef19b38dfa2ce3dcc42fca4d2276331fc81221473a0cd1bca11384a04255834b21f903bc2e66c99d23cab8871b72a2a0e069ae18481e9628dec781bdca7755cacdfac17aceb16767318c85d387bed960f5bbf07439c2cab7ca034189cbd86f736dbda3fef259351c992a04c4cf502371db9c9e892d8add26881d5c91fb93d3cc295d51fc1eace74f6c6a048f33fa9809177362c3753303cfc032103bf564525c9c24a8e6b25f0d374cbe8e9d3d78a2226eec332e8886973b0be2f260863740b2e2803d7b36c09feb7c485102354820c9d21e72b3bbb2fe5c6b14671d6602669a4547420b0ed87198cb0e76499a84a6ae1e72e94d38a577fed468156b5a580e68252c9fe39ed132cf0628142b2659d48e6aab560d8da651a5e4885f672d5838725ecae0ed515778405a1bc0712e0c2ca7e46443d03b5e8c9244ff1ad58cf2b2c0d003970e94c143c820f8b2ab49f7041ac471d56cb2de7f9e9ba401f2496a380350f61b11c2857a9b86322299cc010e5dc17f761a47116869edcf56fd9f40fec5a041e2ca9a98da6a0c151a809b0d63fd67878b55dca745ee9e0f1b8ff3c07f8bf484a6aae383bfbb74518bc76fc42db3535b92c599abe8cefb4273313afcc4cfcf8cb22fe393396f70b1262dfbbe9a2eb533e343ee78b1afcef89c924fb4e96566e4a8829e50d5b59bfd4bbaec4149ecca9310518624e72c135a17ef1846f7699591cdc46daae1664648ab6bf1d177b3d04f243fe6fa864d3fb434149002de99917501b653e2c4cbdce2bc177a2e283397c02f8b5963d09008cffb4e5bdd6641d35c62419f61b8dd05082a24173bf58dd637c60d88c6882c15e6d7e7cc9b75fc88c89b7eae803cc0228960e5d1986ba5cf7082201b35af9212827e222636ff49700af81109dc4c83ef25264ee785e45e20896653360362688ea10c5823611b078fadd2cbf0e13dc16975350a9e816a3301e8c39cc3938ae9b81a8dc0cc87cac25b551eb8aed6b137ce207ae17c8d36d6ce40b720028719f2fce7bfa67074a0edbd8dd8b4959ca91a63cfd955de02d048b7b4db77c4247805ab2efcd49bf4385ca66b043cc7ea9e0688638a8fed950e8f0b5b90dea54fcf44dee0555c8c64656c50906758c53c803850fcb802e8f0b855827a374effc875e75bfb5e91a9d563052d3ce7549c05e045baa507553b816467e4e596835051450302981e14204be7844af68b7117b2cd5a8301b71ccf51808ca483b098800a894330e8a0d8916b791ed5434f1490ae46122d175527ff3cc20c64c96be67c3762a2db3386c322c4bd0138efcc817f59a6a0cf0c4c880df25f6b99c62116ef2005f4369d879428114f96718e0c32b56e164d691f11e4350748c47e19189168739440b9a289ad4acad7db82423ba09c582c0f22c53ac558fa23b67ce40796d22a71f0bc53d5974569cb1d3ed96b8206843eda96581b0cf9b860b951fc008a7322e43ac551da479c7ce507204a2b325b1928f190e5356abde1ecc964787c7a5d6b621fb1e4eb87c988f7fc008fed105fa91dc3756aafa48f18f2921f28d526be07439a2642d0689d7d66b717c09c224d692a95fdc0a067d052610b6a60529177d918fdce4492e3440bd9bce1a58fbe3a9a017e9fe9196ed8a5c6727a1f3e3e82d2c0c990f862bfc4d6a82e5058e2ca711f8ce2ccdab22de27505e401a341a5983794a34f7d144364439729e331651a8850b0a3dda0030d3b857a6174ed0c2014e6a1aa8e217da716088fa36fbaff5d1eb18f24a8de09886cc02f69c94c588db2233ede1808cec7bb0d18da30428c44493d46dd49b9fc0cafb38fa046981b3df6124270a53b338c1a4647603d9e066a2bdad534d6ff844d42d1685f604fa0edc50df1b889f24b8698f9283bf668c9ab3f6eecc031070a442cdd4210f3ddc3d983bc7dbcb2cd7165b509fa6a048eab64fedbc027f226daefdfb6c6778d135a0c0ad2cad471cb64eaa87663f880534bc7eca50aaa125da1dc19e434864e65ac624191ae551dacf51247a66cf942b8948b1e94165b38d30131904cccd5b6eb0c81cb23c7a732aa9df0902fd1d4de6d4c6010acb7c57ef8c94cb5ef9e5c875dcc66313b572ef396e9c18223a19b2415a83a7fced1e3a75ca31b68e61fa31a7365b020dba9a2573ea380f98fdab3e026583f668ee79ce68f070a7fdb5866becb05e21fd954255847b2b9be89d5fb37502d09c343560f39806a5e29c078bb7471a8e1d8ef82dfefa082615040091d2fefb28865dcf65e379f8fe9c2560de57dc1b07c3a82cd10c12360e04d6071fa08426f884ffcb43ba25ea86eacffe4ac671f2948b462562fde4ed042d6d94a3cec4fc0a39964604daaeb648fe3dab22d65817cd9a4c9a9099bf8b7578ce8e4ab94dc511dcd284c91388015fbeb66c3f3e86e2546ff4410ead0920c80ab442122d26d49ab1836c95a5546420b221e0b096ff6f07effb6164377c8f58ea4bbcfd0d55ccad8a71fc212087ff11638cd7015d473d93ff1313a63869f7463c8983ce5be57a6f552936a9ddfd50f1a36118d3a7ad5a6b4542723ae92dcaf0f094e92249451ec7888540999b832844893edc9e782f539170459eaefd631f290d0553a6e053437a2c0eb89dc21865fa5b10a16c44cd0cccf0ac752edfe264686cf526033aec8aef0f6d320463030ab8c7dc16cc373602640c1d0ff1719d3b35619250aae14c8175d179c7f31aecc1492c2e852f8d3643d6eed0c06f02b66d32e95ad93004aa768f7853474b316b27d49cf7f804ec436de8433aefea8be7c7ec71085a9f1a216344e56dc2cc9e7011c4448d5338baa9f6c352b420ab38fc833530767926e0ba10ccd004091f43316e59e92a1581cca529eaf4aa1a1793249e009d13419919c0ae8d58ea71567fe8e795823999faef838b96aacf9647dd14ac150bdd1ca470911478600a42b14ae6b18c1039cf6bb68c69f320f8df8c0caab640940adb1d7dc785b346a7c938ab391542567e82577b6c321f7e67155cabce5e2125461d0c08b36d459c8529a07923b47e6e270322802c7ab9c1c3d0a87f7fd57a9e4978b1c0aeb86bc997b5985f26e30627951e4c8f222b08deb8ec689981bcb818fb7a4104f8e8bb8f4608664700f02d72574e223a4e0e8dfecee99602146f86f05be4eab1145fce3c0d83cd76daa20fd838e40ecdb8018294786b76ed9a5967a7ddb5783ccec8eb7553023a2b50d06a1c40af0527d47c8e30d68d1b6f973077891530898100224efe87a9e2172691ea91107a227d0bbde2e0de383d0107aab4918138bc8cda86ca201f39f03ef2104f562ffb0aa887829e05c678d6f39c416fef0420e8d5c1eb1535c5a8906e80f4af45f1c01cc171f8850dc168c67bc7ef1297525969085ce2f5e5a84c127959b66c755db09d4b2037ad8fe935c30d6555107e9b7595082ad3af9470a2660fe4441d2be0b0c06ffd17818dccfd23dbbe6588cc50524b8397487a71e7dccf0cecd57017cacfd6cc175ece2802503ae6b0e0fe4ebfeabc997bd4ec82f1eb7279446f62e217b6f29539232e2086f09440935a969deb3c8fb2b24f82a64e95348d48b64ca44aa52483ad3e132eafe5e8d1ce675a80a19d51eefefdf5ce6bd0f28ee085224511dcdd9506721cacae351655e5999a8465bd41f3a1d18195d8c2b13ba71c7a94d2bf07bee97fe649240cdf6c3179f6786029ac472a7f4f77740b0d25c47b591b5b673188a344acabd8c8cfae543e0ae47daac426d9e7e7cff90079779efafe37bffeae1fb986a900e97d1194da2f9d49cb4375c4eb74b6a1f23a3122d5300589e3e7d6064b1a8aca0541764214fcf22bd5f21b1ea822b249da9a0483a1b51be8e3929ef9dac77b2e3ea4732e5e47dea573aa8f7bfb91ecae9e4bdaadc4995e3efe0d27aa8d1d61e409ef6402884f4c58912caf543ec014c7d8033aa489bfe4218e536ea1713fdaa8f3d804f90969f128cd31f519bad193ce75a679f92ef1b4ad9007f97e7a7cbf5c3e58a04a3849a89d05f762945dd501ff52758a4cd4a84338459ff8a7d74779f45e55564ca83d8fb4e2326e9ccc3192232c231aa250ea81207ea07be99c8592ba7dbb32a3b953bdc72b703dbe30e1dedd859fe94f24041f17e656445e5eff7a47cca3b1959953ae3f3cc58e5f9ad06dfc67df0571e7c9ed9f9ca9e7abfb140d70d645fadc058bec927dd852ea27e60cf3c6ccea1b21d325019fdeea89296a911b2eb0002df4f3da53028af7afcab3fe9aea5737a1be8ec549e7ec77b9594a7e30c2d1db0dc31b252da48fdf73b2a65cbde7227a54c81a4d8af1abcbf7fc3fb5bf6306203ffe97b7865cbde387daaec41cb6b79a0f9d4806c41423a4021e7a93d98781a4411a9a7a37c8299e5ffacb6ec670daa42b585f49e85bccf2271aaf428269588d32d249db19074c622e96c354b9174a69a85385c4667d4ff54f2a063977d0a6c3ffca6c0295f65dfd35f40957d65ed6998bf57d26ad2aeb8a93e280ced7484ebd73f3d01d70779acec40ad94adfeef4fef32232ae50e1be8aca7c77bfc3df7c74781df1b39bdb7fa55cf334b29cf5706bdffde86f7953b46bab4715f55ee7c7f7f0797dff74079f08c19b1313efe1e28affa1ee3e33fa9d158b6fabf4fbd8f0ffe8dd4f8fead7eb2d565ab86f1557f2355b6fa574f67f8553f96ad2e5b37fc088b22ba988d7f23f5287f63fc55b9b37382204d68b3f151ca1e466c8c36be1fcb1defc1a733aa2aa9c352242e2da933fe255bd6b34f679f0d7436963d3de2f798be077cef7bc2ef297dcf073a583255dae5e91e4a3ced998ac20f09a637bc0f3e81e987a91fb83e3dc1fa75dbf6da6baf3df7debe9c15fe87e50982a6d29d8783a822f82bcf1cabdca924b59e313f5f99caa0e5921f47325d2244925c9f2a91e9121fbb5c3fd7245409d6c1cb1c94895cdf006dfad759cd5eead0ef2df191f3be7992e46fac41df499b832ac92923fc2ac28737da42faa203982201248adcb5962477fd810a1c1537fc03154ca8c05171a3e29684480b7c071e8323f8129fe83b77d16dedfd12520111a20f29c22558621238cc74898f123bac7a81103e2358e2e303144c4ff0ea082b380ab5c06313610b92c8e72f8151325d02840b4412e031d3254098e0da172f184f4062091021c89ee9122080ac119e88dd3b1d1caa7cb0ff7b4983e01730607832f48cbee897aeea1cd6bffb925c06be0a084b043e6d767777afaf7359cf3c11846e9f855a0277808f4a424b3cc0c4d69688800625db12236ea914519114424b4c81040253fd10d5ff4deffb3ded0cf63ff2eaf07d7f1d6bf437053aeb704d1deeb7f760671dbcb765095a73d55284211892b8a34c8b6eb932d3225c938ce3b297db0f2fa873ff4561fc4f4a6ece5749bd15e0fa670f43b98f08e5fe1e6a39870db68bc027ddb9f48b3aa3de8ae8faf52975180be851b65f7ddaac753705760257707645fbfc082183faa469d68945d2ed8e98b8e1941cc93d54898ad86a50905a2bbb7f402674b7bd1d247b8f4db2ba264e7237264746434994e4f6843cefadad8b841d24072bdb6e6b7b4a45947eb0fdf63c20500083e647b81d4a3fc0f0f9c1c903b49d7697b5fa68db1e094baa029f600ec765d0a7da14b070ad51e9eb7aad358eda22a94da90b8b45fd765d616c3a6877be17f719f02048ad37a5b496a8c5e293fcbc18040af5a2f8a9b76489f4c607c1d3d791862983230de0871f82638e87572cfa8d395e58caf924fe0421863e41fc2401d71f53101e58de1fc71ae138e69406403f3188207e50d573a20643ba2028f10f69a904c14f5993e947193e99cab382230d53febe9186efc50f67f08d39f55f902ffa0d026c1ff760543aed19b343f97aad2e92340bec2058aa7fdf541b04f87b9a6faccec07341485fdc5af23c263d9916f940486e21d3a2db2e836d1231bdcda18ff782ffe5801f49a43fbc650fac99119055c3cbde83b9df3e79bf646ff63ecff3debbb7bcf96b8b8489ebd31a0bfb3e0f0e6e7b77f7e73b6a76b760cbffc4c9f77972dfb2450018b2bba7f029a4104377b6a7d34905273b77912f498031e7d6ec3ad096973460a05d7691432b66da4d4b2af03eb0744d8e8202d7ffecc98e2e0215f257ee50219c01e71d7537c3e71d3597bf7a6df879e2f759b7f67ba4a176018e33783efd4b5fa2e301beb03c3df4373d38d2e0e92332cd255287fbd9c9d363c85fb92386fc55db6e4f12e84c012fe796b6044b4908bd7badbde5b5eeee5ef57a056db362d4e775b70db487e6b15da1107ad67ad65a6f20426c03dc5d91c293bee795b4de7b733f61db1dcc22a49fb7f56410daaede9476155fdefb5196aedd6e4beff6a6b49150d29dd0cbb4447939a4b5bbb45ee6b1b502210baa3bf3dc5a57606d48866115ab4721df6ff0826f471a343c0ab47cf6e023df2e72d84316c36f1f69f078175d641cef21b289a43a7c4f3348eaf0952d1ad72b6d25cfceb704fb85aacf63aa0d04b382e8da2adf9f300c690e140eb098eb4f18e660a1926a933ecae998e818d1db0b37306237997ef8a2bfae580f66113c73dc5c6d0ec2b0526f01c24f65f54b674369461d46dfc3f2d461c1f7f7c1bb257658fddebff2d491cf925218e5219ff41be7a6f6fae0efbd0ff6e9db1d4a6be85bf2b425a533f4eb48439d591a3537987bc7be1b7118b53cd55e2bbc6ff94680fba96d535c7964fd7ebeaee3eb20bebff8fee30ed934d6d09443cca5b27e6ff3370f2ca5945a4a29a5d4d20fd96fb69de97b64cd38dedff7f62bc1538c8098bdf2dc21df3287254fef3c3febb7c131a7737b4d1d2c99c426cf526ef2a40e9e3ca00d6a1c79f51a47361cdd7054e3a8c61185952a406b1cd55ade0f42d8a5176ea8283ad82ef418b3f7ab01c378bdaee74d00bff8f7beeb02da150579008d70401ad94b4a5fb5d60a963e2e4093974ae11518ccb4888b1770c1c510232e8c28e20288109d0b338051991671413bda62975f3aefbe78c1f8175b10e5f3633ba09496eeee7eadbbbb3b75a7b652777ab284e04add6912217d715a21c796e6325cda6a8164f0097697d1590ce3d26aa066c3eea65119a66cede9084c8322e5d23bea4f3f5abb82e1b9708582da2c52fb0524452d854ef06ad076ad6bb61ca24aba5d4d6a1a0d727ff7b44ffff4779006eaafb8ced5219e0da0e008263b21443c71c18c06b75beeaf4c6a900d1c38e4a06308b97f87364fb99f871def011c08dac248c81125a0cdfa2b509b3e83dc5f6d44727f1dd226380097b15ebc622e7bb540064580c111845000c44c06b9b570426ed0270958ec9cf06307447e667e440b24c4dc4e184276f7d183a2a4269808818b533ac394bbe60417e4d2db36c95cfa6fcc291129491264ab40b57e59d17276ad5645063f07046a53660849d066a73750bf3ac8d940b57ed5b36b4df8913d539563b1789059c877a5839bff8b46a3fd20a291a0cb74b41822bb30c6a00ee53aea5098fab59b9113b950d0cb5603b2d586888c6eb85c2dc969ee5303ca5da346af1b5bf61baa04f8c682201113af859ce86b035300c127cb9d609102b282d0d515e8445639f9e1388a142188a82a2030c105d93f35e638e863094f0401059445900e723f98851272bf8893e081dc4c9270850f764862e4fe980b373b27b9ff0525e420f7cbb0042372bf01dacc69931046a718246c91fdc7271806163cc0428bdcac24d985dcffba4c9bec723f8c4602921c037ebd68163f4a5834c07a5284c506b27f50b8420b979cf6da886a966c1257c420bb1148b989dcff8d39fd8123dc60859cc6b5242ebd65911d63ca4507a6005244104b583183f618f40d113e80b8c719d4d74bc7442eb3bf83a010b418dd084a804ff065042419b931c83a82853178e4e70a7d4440ec8a75ab791437518453d0823b87e594aab5564c91adb5d65a6b811a466d331f04358ce613b38aace8c2881ee07a902b320208803451a48923432b964bd1164021eeeb52a9d4815c90c8831a0881c54c8b724ac41b0e332dcadd92e4a008a1c060a645b925883ff029d3a2dc1645c05ea64552f898aac0a64c8ba420628bda138a56991649d183272091cf8f19c1895022f59b9634bb80a6cd6a49b365eb469dd9af335bee18b181ce7af4409166f6ebdb924691663774ba6ab12488239925d32541dcf2102120e227d325421459f283242f19828bdcfe11a89f83227919017f4acbb58c80972d1ad5cb93069a75c84191ca0850248a94e98bde593124d32541348191695115493944d5969f20eb0544a9d10d88635159058a5199d35c87ca7a9ce6b4acb47ed503a890abcf51bf68f69e7ed5f781000908a09a227fdf4f072085921be0162836814f302b21abd77c50587d0dd81c04194828d3284cfd4f09dc4ea3322a1214e6eb6f7d5f25aa4a9eb4ac9a80568baa00720967e7bf5c987ddeb47ac6c8f5eb296346509be70bf9a450e4dae6498f727dca85519bd57baaff04a10d29424ba20406f905f974265d83e8e9b4573e9dc6da6993567d2a06bcfa75ac2e34443b9d4674439b38e8e88c01540616825b3ab11b9e594be7125118a7553b6485822c50759afb788d559d7653ad4f761a9047e4b0fab67c01c765d508a7ce2a512a095afd197825a38968b4dcf2a72d4eb25cfa1583cac021c0ad7ff1825184cf574682ebd3f1009e533042485fa03480a9d756534aa698e09ac48ba6b84c6fe71b6eeeeb85ae95be6809e2dc0da0b21bda373e33a88cf57a2d915b090fc70d40b922a93900c92737e804cc8d4424d71fefde9c94c98d5076413e571f126ca34d5ac690834cfd86bfd3af552fd9425abbbbbbbb2dad5e2baadda2f00f7c04665d17fc4394e7c2159e54698c12d1ffc61a4ad086bb0459f8073eb1e9bb69d115ffc03f4a44a89585eb9803f2e45ac4840a6a8d2d3971d86e2da616e5836dc6280de0775b9e18080a06018508c1e16005d95870b8155c0a878243e1304e65fa94f828323ca95038b620231c231c201058c3d5aa2783adab94ebddf2060f87abae001c38ab32be2d2550b30aca8e288b9f67b62acf479d4edf7f4a953b1f4a8a3c3d26518f87c00d68fa04aa84ea731a515050611d5b3a279448d259a883838ee65303c281036d1e4f1da3b8816da3937870599db18c885892925692544949def72be449e5811e91110fb593543b494916e021c90355654fcf09f59fea4b95b5aa3ed0a39e077adee9db41e1344eab74fa6543277451676ce97865ab434fb420f836bc074fef7d97365428d563f2e61e77d0a839f536d0d9fd1e73ee0b3c38cc3f45d27ea53280716e5268e89cd3aa41f5dfe7f86c9787201d3924a9bc4e0f7558aaa5f37d2becb015266d065d767fb57a9594efc3bf83f25f69e33e58ee807f4beab0157855650ff044ab01d98284867848f2523eaab5958936ebcc3e0f2e1ba9b5281b5ad196acc95a143245243f1389bf449e1e8554bd47a69e8ead153a431980b5d6e68043cbd731a7f52a2905a832957287941f645b774f10d91d3a288cc5ac7fc578b0ec60ed60295b2b28abefd6f729df03becab3cad64aa983b27adbdedbd64a4b79beb25d295b35a4fcea6da4fcea577ea5f2a572077c95dff93ec5b254de862a646be5559e679642b656ca5f313dcf2c645969b1b0b05ec70e4db295a9d88280f443936a42454260423e2b106d0844e4b30ec996450a5bbfa41862d222212065fb0668b3e6560dab4f791bab4f29778cacbca9dc29fdea574a1b28af52ee788f02923dbc4ff98fec61c48657b6fa53fefb94ef51f25ee56f7c29aff25ea9524221bd5791e3a7c23fe9a0f0f8fd89a433cb03583285a21d4b3a6e299ef69316217d01561b35497630e5856e82f0f842c955a05085bc9f4282bff21e754a3d4e8fa8134967e10dd10d110e387472a9ef5107f59f9551655fe980242ccd790370707710e47152bdfdd40e6c04952abfbf37377546fbb87df09df5eab1d5a5cea96cd18c4bd5e96ddc3f7d7fbf4b1ba087228de88c2f34cc613714c61ff503e33f6f72ab86fba7bf01beea31d939e5fd7476225b5deae0d0e9974e0fcaabbec7d4efa0fce953a50dd47be58eea512850f5dff740497d0f963d525f497a46912772cc8126d17c6a40361c2a51c8d376844277c42a5152590da4a36bb89c6e9753fe0c37170e0604cbad7680e574ec6c68643869d39cb9797f201b8cc0cd826ba9b51469f364ed5a6a2d415a845a865a885a94b430d1b21445c28990ecdf6263ed584fac0e675b2af681bb09b96b3389e6fdc92725adf469b345f334cb78fff2a7cdae05695388ad4df3fdcb216591365b3337a589b321ab4e16a32600ef1df5cbf589f8073e7d638e0be762e23a72dd60b91797982ac3da396bf7b204c76c2ca9d52cf4b459e3f3c34290366b58006241c890365bb66cb1b50c6911d202d412e4050598e61376b6d45ab55683c06030b5965285542015c8902c9dc35e2d5c980d26b4b242ea32eb2935491d7df9b39eba2c0658ce7573e15c4667317ccc539987e165fe060c2f53f630d22386d2888d183ee661283fa15cbfdc81e163288d9c4462fe46cd42063ba0c5943d5c254aa002184a5acccb945f50ed1153b66e7cccc7949fcd6132e44bce611db31d8b35104cc2da4240442112fdc044990be22866fb255735f0927399ccfb7fb8189932868e3862ca0f47d4664bae1f7e2939158a26171317ce7573dd6a49ace3e502c7bcccb7009f2e9ca6a9897dd864ec5f867c126b875f9ae66bc817a4d3ced0942fb97ee5c69c17a47e79cc5a1b2b5f722f3a586ebc4ee0f32547e2ecbdbc883a9309288810dd100a252434c6b8acf403fa8035d7cd65bd231343d6202cbe6048fdb2f6bbc172309699579bc360804f580ec6020bd6278728f1e504efbab90c8687a194c138a6a44dbe379849123ff8a7ebe6b2185ee64f30b75a1f03e962d230a70d53e1654a15fe0455283c99923a52e7e2033e59702cb836bb49eb93875022a9248734429144a851871c7a417ad1c19e8e2fb91aea2c4508c69f2fb913963bca29554a4cd5f00f23da925b720043256223a8206097d5c37214c655e30ca8dc52eb57d293efd6ba21f3303c0c658f164bee59649ece62caef0622c12cb81396bb11f332256b87945578fcad4305ee7fb128552c95fdc34f09f884e5324c937ed9d4635bba6edf0e9f2c3896a396551a8caecd962498266db668b53651d9df922db57ec120f330bc8a5581a17cc9d9d3ffbfe452b60c5737bf1a735eb8f91879dec82075d6c678fb388db2ad18e1d37583e554465cc6dab15a6aa42ec6d33147008fd3df0630cd3327cdc7debf25c69f39be5b182359ad044cf39d4fd62e46769e214ffb319e868c408eef96673c356fcc17be5fa4a68cefff6e548629a36cb9a5091cfb107ca9b5698bf00d96db018e8defba8d7fb6d4624ad7ada507f82475376fc91cd627cb789c7e69d266eb0629bfd0af97dc8b8e74dd6e4e38200df049896c6c6c6c5c472e9ceb46ea5cb71b53460c5200646a06991aea570a7ff3828c94943127868c1b0fa683ed5464bcca981343c6c7c873c6cb783ae6dc98e6a39c74cf843336319bdc8e059a0d09dbf5cbb436ef0f73024b6ad306865443c29ad894305dcd0ccc092c0996a3013e5d384e43ca78939c31e3e6715a468c1b15159591869a5342fdf2a72153478692a4b4dc1ce09897f9faae5b0bef2d7c0bae16fe64e59bc356c61c99cdc7ccc7e950c5e6e99823ebb6b6d4a1bfe6c3ea3535df25c8dad1c4ded58486e69463c2139a9865ed6a628fd39664ed62b6bbfb67fa6962167c61f9d03669f33d9a5f439e36b1f2c440d21b8149dde9bacdd0bcab499b272c6767ca193acfb86e2e2645724af677ed5c49fe2bd056e8f15fe1a765a2cd752424fbbb7233341696d3b57992ba8c046bd2a64d7f4b8dd4b5d9efd2036c53e6b03ed97c9cb69199ac98b53646f30dc16d53fde74bece5499b67cbab152b67e81c7bc9bd20d9b2ff8b2e055a0a3e2eebb936c8fe29d45208d2b21e9491135564ff1484b4ccd65e9ab4498d9ca865ff975dcc9a278c2efbbb0db27b0df285d1b53900245c9bd57cb179a979797961d13c1d7366aae31c46f3a48e86e64d9ab7a1f91a1a1a9aa779d6931c34ef4f33435364a5a52548cc5a1b8bc5c808589fdca50ef6631fc6c81621ad31678626f6dddd1debee8f95e70e100d797e435ce6c2390cc865ae9cc3fcbd05a85f6e63f39634ff65084639e90e6948d9774dac26f63157ceb5ab215db97ed1ec62827321b9746dd63c939c9ad2859b2169b69d69489a63a48c74e95cb72c70fd130633f4347fb2b20bce2ed465a4ce61fe2ea115634a1ca973997dfb33e5f949d93e4d79b2ecc74a6acdd25b84b4192b4f9b32877d6bcebc7f0b509bf653435241fd2ad22f16e0b384635ee665ca1d998f29311d6dc4bc4ccc873164c9e87e0c29f3975c40cccbc47c371e8488542287f97f2fc07d23e9ac9914815b5e023cb9c444bf9cd2d4e9bc40b61f43d2d977cb465104656a44845daec9d4a80855e471861a66f9704729c5e92e4b488879ff67b158702f4f59702fb82775ae5b9b2ebc7ff822e21f2827b86461ed6ce899ccc7907506a304c688c2105118982118124cd77a3ac27230430e7381ec9721eb8c0587d2288dd2288d92faf325d7e5a905b894217bc612a45f2c3810c498c57261c1657ffc2e90b05cbf624a189890cbc821870591b0215c861dc9810df5cb61421406169433d6d0335890c3fc514bc0276bc7dab5e9d99fb58305757ec99d5e804fd60e66c89db573c24a6ad3d2daec9e3663efcfe2c3526b73e6fd5982b4590324a4cd216dd604b549f3fe2c45588eb4d9ead285945d34a42be7c2f5cb7f86741d912e26aedb0b11dc5ff309cb9dae1b8c07c09056e8baf5cb5f6504b7d45a82f8f922770943e63b4646ea1a766be149927c193215e4b0149a4b4bf659fd10ffc0357c49e1c554ad4d2fe659589eb573594c09cb35cc4fa30da5994ce9baad00d76fe1cf965aaa0414c63f864c05812b29ac150b8aaa25d572794941856b51de5585ba9c52360ae37f4bd95a60be4444655825643f75ed350cc9a3c2204fb005f2c42c903c2cec853c3d1700f24c01cafe2b90676a28fbbbc833c596fd5f90a70b08d91f002579b204c9fe24793e796215c8d3759422cafe2fe4e93917f2f45c0b96e36159523558097ca742eab27fca4b2efbaf60b9133624fbab5a6ad93fe582e578d87cb24e3cba6ea7dfbe1d1804ac43b99a7fbf53b6366ff64f0d09cafea95beaa8652ba9226dd2a228f864274ad9b2a782889ea4209f29a3ecb62730c8678a49f69450f6f7ae2d19dd6e385c9be797cb4425256dfa9098cf1251894976977c9688b25b98dda987e669c1d60ef810524a29e8eeb95faf7477ff4ed17aeeb6fab5f6e680ebdf1caca7d65e6bbdebf75aef82e0e7b07befbdfffd4929a5eeddafde7be9bdd7bae7231061487338dd5a4a9eab1cac4cff7bef4fdbfd5e97acb4b6974cb5d6b1ce10662fc121acc4145e1d349d1b70e0602a5d5b3aa1522ab71706f6fa058e30be37e5f6daeb17384aa98c5822a854282828f7aedc5e041cd9eb17385aade8bd296e2f028eecf50b1cdd57098954b4d7fb44d0245a7b737b9b21ccb60487284c3f56a2ba87a2dd41c76e8787a4d25869620e62b6a173030e9c03c411871c2ac41e38e4dd7b4ba8ea13e25015a20c516b6f0ebb11b9557b63d2afc6d99b016e03304aa554f682432619703e124cd230b06380ab47de108915218682b2ea17ff305eafd52aa5ae5c5252dcdd3d54a1d687861cd60f016cc124fd6aa21c5b824332804361188ab64c01a07a826d11c0fe0c2753a57b71f52ba5d4c56277f77b49b73e40ebc35a6baae257c50ded0fea4e6f5ec9ef75eb96defbd91fb8fef5eefddc2dbdf7fabd0e7aa99dba53ea4ec370895aee5e5bbbb6c6d1bd36776d8d234bab7154e3c85ffc21141245b7e10ef725e57c747efb742ee223b067fa8ca2b0df57b220bde938eccb3a148603b8be0d907e1fc9c2390a1b3a30fad55f327da6d028eb3e9dc3a280eb9f9f2e14aff884385a9c8ecee8272c8ad6432154a00541d3cda66dec17f485d6da10b6584d7fc9d2f32a59bfaf92f492614fdbf49bc8d0a76dfa4330874858ab3b1de2da7bc39e86b92e87a55287e1b5ef204a0cc7af0c69a9d3f8a18839fea9b1a6a48c39a5ff9cd62bbea7f75a2024007d40638e2a0a0ad3df43a8a2f04a9e2a0a2a837e401f90c32ed9cae2a4fb84ac425a8966f1955fb8aaa4974d247602db5045ac5687739208f8a831e7d31921f3a81f4bc447e030d732a46124bb1b5886b456162a212a839e6cb82256b2c4122b09e68f64112bf965ff3caf6459ff09b99fed03328d397efb80fc76fd76a39dee1def056d2a85572b9495953127ece957eff8b8c400e7f0a4d0a75f1dd2c69c0f88c2f4bbd4009f275d529be707945bd7e4b43b3901a232acd352c9047e5e4873f689420bc402b1402c100bc402b1402c1030d3ea229028aa9561e22db8e75e4b42c166c98d04c4e1a30944f82142092151380ebc227c1cc90d52af045f2af9c0c7fb000d7422c8fd00d1970124fc580f18794b32f00437ba3e0cd1327c00c872a0563d6073180597f4988003327420c961149c0188da8ae522f24089299060c9b4688a25bc5bb65ed8f4a22e6d9af484d6afeaeea527599abdf743d50f71ba36359d394c95ee722d7530fd89a250255409554295a84865aaa74fa7a03255699f52b3964b08cb2bb2fd10f503b6195f11f503ae19ff80bf8cff747a532dabd75abd56ff522af5e16973ab54f2686d564fc84be2fd78423c1f9b17e41df16a57e80eb579de1b748fdc24f7dadaddb6da4a963cb15f162c6192caa0b9d6771de9bbda848629d7d2774830ea07ecf1b841385d6b924c95d49c4f2febd7d2f84efa658350a8477d8333233772023eef90216d9e3c3ed2283d12ec91e2d336bf3187eeb2c94d26f09b0ccaf631c9a3e6f31ad58cfaa164bf552a21e5175af63b9189d3057ca127b0c8e70b8a1f4aee1965fbd622f1c451b6ef4fdaf41be4d3f6f811f9b43f1ead4dbae487926cdfeb69b30e912d78f29def2851ece615fb5a7d8b4a67781295b17547baae5ff69b0a6cfad37599065349247cf7d275dea46561e94f1a66dfda997ddf9952461f120c7e9e644bfa03f61c7497513fb8db5a9e385b9bef0cb0f56ea075fdb8edeffbbed283f79abec3f0c3d283df60a9fb03bffe7bebe7de8390be60d9029f38fff7d8dbfe078e6379e68899be8f1ccb130cc3cf640a49ef4d25f204dffb0ffc3eeb2a40b5692b4f68a22c4996defbbd278ae1d36cfa9225c50f494b8ae509f6a065d3fb58c34ba5f7be0492e7bfe8d7ad286ad40124998e0440e56b85c030c08e13b0440353bc385da8f703836db2646a4dbbdcf581e28995ec490ebb2fd294789f27b16ab620fa04d01345c4233e94ef1fe95792227915d42fa17c459bc3ae935abf5f0da9d5ab5e258564cf96af509b446d862ba07e5dd69036bd0f3a922f6b6855ebd75d05c9f73db273253b7f24cdd8b32ebb222814718bd3edce551327fe952b5c9b28b87eddbffe28b91cef43276f116a9759d54b5fa914b66e4e5ada4be1a76bf344ed726d569fbc6ab2aaf11892ef03e5fb37c01e9e0fd83ecb4606e5fb9f10f0c9b2d199db771b2b08e596515e86e093b5aae5fb2d25507385a3ad2497d119b6ad8880f225aae5bb8222df3f5b4e726b97af0b2d5f179f7c572c9bcda6d3937a7f142297f5b08ffafba7a733fca7bf81ff54f63062c3fff43d52a5111ba9f7c725ca2ddfbf71eae1fe298cf163b7a8b76f1f55a21095b43c518cc81591c3eeb358ac21f759b7235691fb3449beac20a27c9f9eac93c5c4ab2b22bb227299fdfb28493dfcedd3191d7178899254a2ec1c06daf26969a18b609bac4ced49e87a2e413e40364f52fb0114433c0ccb1d5b86b750e7323a7332cc392c147f3c4ff4e9d7156b1feac4202290108f1ca9e823fe88b5212cb26c0ebb6ff248d650bf5842e1cd61f779669765ebd7f5c4f05ce53c510c6ab385c88809165ae2a327df17855c0cbd55aecd93655b21b5e94870d0c9b2e5fbe2c7c3e624f97efd4a5d9873190dd2a28fcbc0d9fdf0e6a1cd65742644ace142220f0a85f27dd176cb7805387492ef53a7e5fba2ed9b013ebfff7ce51b2c87dd071fa73d69043bfcc4fbe290273ff9be78138f5a562212bbb0e52bdaf23dc5a07c45a27c45a37c4526f98a42f9565a9be7abd6e6c902b23d6dd21fe4fbd6e727df6b69f9fa5f17a11754e01ccee11ccee11ccee11ccee11ccee11cce793c081b0a7c8a3f301322e0237cae3014f8c7eb09fc047ea20508210affb0c20afc031bc13f3e14141414169613e022e022e02210b58f4d604e8091be49efc3fbb436434b4ed5300bc24ae9b8233c62d745dea1bfe61e69b07297291b8569af91b500d5d498033080910d9d1b8db599893d091a6b64356fc68841ca9899b9b999f1fee10cd2e66f489a692ccd0c92e69b1824cd2ada32161f6ba82d3524e0f385c6d2589b99586c26169331636d6856a8215341a922ae3f5f721547635363679ec6d690e74c49d3b199d88c29ab89c96235b1588d39133e8e1b700ec081d2d8d82b7aa4ce652db5979c2c064dcddbd8cbac255b805a6a35df67ace665ae21b86e14e6f4c50bd72df61dd3b99cb8925c4f4c9b157c56f859210899443e219d903bb209a973dd5a39e47005a135a8242d56563d6b15d10800004010002315003020140e08c462b1602cc943512b1f14800d749e4a76569c09e32408621406216410218410020821c600ccd0904620001060236e6feacaf147b92ef3d024ed5d6e98a2c2945e79ddabacf23ab31ec1e09d907787c2a460cc06f9c8fdad9050eb0c2bd20e5f8c032c9ad7caeb76ed5c78489869b5cbe3d2fd020bb8e5d2b1cd9c3993a3c114a468aaec787dbc79ad986f9126057c9b4175df344f4bda199829f17c83640b9fb2f9e1332e2be9819e9c5ea21b7d2496d61c3de79a7848bb2a34623ef36e585f84df121207d03acf2ec986dc635416a50a5964bb10a8117f092f228381b9e9582bb15548dda30da6870ff6af6d977b20c001047a154f65a457aebd08988121967b19c6d77c4ed0dfc682868c11c380f6a8b0973413faac33c48a7a3aa87e2f8742000c97dfa4e91e797aa70939feea98f6f51a8c55bdd602e29bccd47f605979b8470a834fc6be3d89560ad45e53e0853fb637600b187544c15369902ebc0bb20eaff3c1df6d1c19e0f06005f1faf99e7b6eb998e4ad6adc9512e7668bbc5235cf843bca61d600459039b2f59a8ebcdcbf4a8cb57ebdddea7fe2c20c1786eb2f49ffe24226aa04bd566e7486becb6ce4c3319e205273be313e2514ff7388cc2379fbe64b6428fdc1b55c60ecf84fb998239292ec19a15228412e0fdf4d297d344fd444926fec8dfe428f70a16175c7e222c4b7dd68f2c9bb0504c211ede9ecd22605ec405ba8731e1c69cb25c5f749ca249ec82008679587949ee760a590c00297c19998a005dacac0cdf2b8852683f7fb04d60ce6eaed3a4898443a1199c8d3bc8a66dfc495eed9477f9955e7ade720c0fdd9a90e733d2de65a5286e2a1cac189826554d005ed4a9418b420832a1193da5fd134425bf4cfbfdc79e12bdf0329e985f493e9822ed962d384ba8af2f485df5f4c7294d77d4dce466ed85dcf99732b51d499c16cb3465e3e4bf576fc977c2ff37f97f6fc347fbc5f00f9c6f85d7989fe7ac131ecbf4d31c5e49ae55500c93621d8b87cd4809bfe067e2b2dc45bb235da9709f26f8b713a223eac6e902fe529632bca006b148cfb3694de2d6631ee7a41c251c887052fc3865f909188ca5db6923248a9dfd8c136224e7034c4f60ef0baedda9dcc06f658f842176456e299689a1e162133e9c5a14160f179d51d1a2e1044c499a3657ef4e1cf85504b542130d965029501ae6d1b6c74b66302212b6a0325bd9ca5dcba80db1b28f873b48e6e5e32649bd43ada6c48da3b0979283d413ec368fadc3e87cc3b12273c53fb8601bd460a8e2684243761475f53d2f66a5eb452d4df09c917cc5e2a3e2804b80a62a4a26fc19006c0e6403b4f6efe0079f22e1dd9be0b3984d65524fe810afa4fd1ca2ea243edbe179b4dfbb0f396f92ace44ac8a14c14ce8168afdb475385e351287aa0e35827e7c75233de4639617015fdac920e7a9fa369152133c6164710a8b14b46de46b00d75ef468802d3ae7e0b8a8e67213ac9840655adea7f35870470e55350cd509faf359de8b23d422548a2f7441b0f88bb114926e629d76fdc7f428d07bf1488221bd6d9792b58b4ed8f2467fc0aa2cefed891afe5dc25725c6bbb3fc5bf6a4128f478b79acd2abd78a5e35605ee30698eba164ca2d7ee3f262550cd96cb961619d64cee8d3bc0c05c681a41eb43ab3c1eebd8349ce0c58d15bbcdf2023d6dbaf803f11ced28695a8664752557c5b862634bde8812deb7a0ee11b41f5a322faeb230da918eb9a7eb2e0a71fc485c70f68a181ea22cb7e79523e13236edfbd3cee8326cfc935584a46b5cd241264a61840958d354654dc9e78d02c0ac9e6880bf01bce14c3e0452c4c1c036c3c8f7585a3dfdce7b377e65e24d4c0cac53a4468d8be15f85e74ad45f0f43ff1cb04ae877c65822319313519751e8f45138a4999c5995ecb5b3d7f019604a80a7f643ed59b4e6891190479684fc8c28c90e013872ce23ca10a456ce315294bfebeff0e40d8d621b0ffe39fbf7c5fb2f6993667c71ce3f743d60fda3a390f1234692aba2489d2050e1f7998f639260ee4bbcff2543934fbc0a952f5a6eab94d23c1f370d42250ada5f7b3b2011ed486551491f9194a7760b5e77548ff0671f502958dcd4954672d17cd5e23a72f7d76a1530d91193df2bb842232e4e1463eb9f7721375052fa8f8f3ef7c185666c2f7dac72e5fb646f1ce458e4c4a7cfd011dd34ba1d43e23b1c3be32e111a1e5118fb210d1bfa876e631a13b5ec9ccdbdc8efebac9d14252d2358345435660b73ac6471ef94fb4f80a6736045166386522a35df4a8dc87cb5d910cb6d3c1bb796c33c2efd73dee4a407068a5e239c8c968832ac7ebcf0ebb22df75c4473fbfc3debb748b81376b09300588190fba4bd3887a8906c0109ad9f790fc17dd9da5dcdee7429246fe8682a73dd499cbefbab42fc99be144266f2585e80a2fe194d0bfe2a04bb90b0c804747e6b3e0ca87280114c6b0c7a7f4fb0f6c175478dc180ae7dcbd7937e230843bc1af5b85ac3bc02974cc1700e6f74fd9d8453e66a84e28dd060f0000e824c8d4233d2a898bcc2f7277bab4150a4015ed0072cd7a2bbca3433a470110c1981a0d831915d6839e7d830050eb8e1d9bd610f87b70c5ec117e1e71df8ea319a93d383bbd601cf2bf6d90b0e4d9556eabb0d2040c93af18d9f6ce85d1e136de2c0b8508018629df9578fb1c6c6a61c36cc9d2b136ce06c158a38b6cc66978e2a88f6b7abe335bc6e860aa675d93392bf34d0d5599834eb809f55d5eb6f0d86e029bb8ab02d79f995ae80482a5c13292f572c3be4342fe164c63275bd7d8f042828f8b6d749449fd2fd0d07cd479dade9b5891a5a2a93c5e4d7326f31f35d56a0a8713196be5ccbe3b756182c6e5faf5521539cd2197ae7d6c1624692864603361df3dbf714a113ca0b237a80097db5f632d534ec675e6bcf8e62d0b64c70d77f61d122a6c9bca0b8137e5511a3e6493237e7360ce21c0ec55cf423e70af973e015110a493bbc59488a74de7758960b8e8118f0195175632bc4f0d0c5d8639f70aebb3b2dc31dcd79e83c3ceb164db1d4e88289ffe87f735142fef9e9e2e51ef22c2a1ddfe5eb0613c7d721c76325595ef9360a3f3f66f8ab021accae3c9fd57bdccf037a5ac0997326310c9826afa327ca61cb84125260c91b617f06c6c81d17b4ce799dad323d2b7576e7a26c2eb579d8e007dbdf0b15a51fd957bb3694c9fefc65b4eabbdaa689552c68c1a27f2307ca551881d5230696e24643e33847bc3d94e79a9b5d131317e939b2930acdcbc7d778ed075904fc15a5851a7ea6d2eae750b337df00c79a24de1931e37931c4f8901af8410dbc7a72c691970a3395d5f28f57ae8bc480c7a7b3493c41153966cf3b1d1a34dc3e334e52a695ad8b81b4f95968b275351daeff76e43e3c4d7eebf334717ac5199ba04e7361a6623b4a9402a8ac11195635877dae82db3e3dbf114e20501158daae0ae4ac04182956fd1b09150dcd5233009949c39d3a260861c811159eb5bfc043997cea857d45bda4bd76b7f816cc5cc3cb0cc1d257a5fa697f66a754114e0157494534fabf44ba7cf9b7fca356a93b42536cf0b697594de7499df3f92b492217283590576f0b971602637591b87867496e9f5b89a050f011b115d441a1bf177eb96c2a2b078a92fd9894849808cf31da8bffa63b8897d8d789fb574e6d5963b151350545bc0d8e8b638deec3a8f142e0964e62aa3a9a25f006aeb4ebd35974464ab2b3b83207f8dc0ead337c2e8368bf431b4e6e8df4a56a6191a4bb73d6f93e7c441903615de4f2200146dd18d2527455ed99bbdf2f8f48d58712e62f666ee9507bbe944641f5c50cf3e44074a5178d3f40847dc1dfdb808921fae0d71cb64b47f96be9feba8f8eba341029370f3aa5bf7dcb0a87419f35de18708d9ccc7383a62bdc9bdd77b1586ddbdbc827c00fde1c1c62af12a38fcf28973d6b80188af272c31ba4d6c95bf68628904b674940ff1d1d1b420b3d4f1757c72f52c279224716405be1220c5117af5fe1f22fbe898484e790af68ed37f091d8e01a8c777f49e0e28d0515ce750c91c00ebcf270fcb59208ec91de70a481cedaf82da21a91d2bc1e5f321a6225ce2d0e020156c660c69b81bcdbcd9e4fe748207ceb5ddcfa5ad5a7a7cbf8c37f29e94b7c0f06e6106b3570b239a4b6ea85515d2b943115130713a593f8c336034879f4b0b71e05180ec7eec6bb273a98e70f57651db8d7313c1c3e49e939682427743b470c3d12a05c79a546a227f5a0ce78453a008991124b7ef1b927b943756430ff7d9f6298bd9d5c5e052d75f212af9bf7d4008300cec5b5c0403db5b69819996ab76277be521455ebb4aa82f1872c6f40eaf7652984c8f97af94f19e0c2bb08d47adb3ee4dd4bda790a65029a5161b8786004be4b910b755b981a068b849b27264a32be375c63533f4c0bfec1209848d0d80e67462c9ac2c71163b035da4c371337b355acb4b2290a8f786a06cd6fcd7068aefce9378fac1c165561732bdf3b675aa883f8175d5a8640ecf4f003062f7481839ddc805f932e567426657791ed81ccef8df8284740a42cd89a07bc63d7156499d64d9c4dbfd3b66e43cdfed043ea378275f8b99a4bced119c6fc1fdf563aa66fde417dcbdc76c6c6eade9c00ccb485b27b2c49d873fdbb516d799f9129256beb7a205447e7d1b9c2a0dece44fff3e295b05829eed871598655c2cb357a58beb0781e89372c975546c095744bff368f6791c7a14bafd6ab5d7f83f087ad4c85a920fde890d00a6be87644ff88b9725504b084358114b36d340fb3bc69579297d39a5b1e98fed5fc4c84c101ca553f724eb76163e256f1d1ca2ab7e8a286acda34fc874a0451f59a5703497669d4ed2b8780c1807084dd8fec14de0f7cb8d8bb381e54fe3d02aca4b6509fe8e67f8e2760aae82f1261cb9c830caadd6406881fd309c501208a7e22b4a8e450997c7b30748b8192e6aa456115e2ede84168835cea4236ee85f50b7edfe1eae6f240f35a9d3f03f156c6f65f1d1a471d3adbc4f1c4a0dcca71dc6e2b832c041e4c0c4b9a0529ed8354c2a18238def83fe8008cf26284527225bf83ee0f36f4c2644558b84b12689211f000f906463d69f7ae9a082c6d4d2cab6912ca008b55810fcf3c89ab6769108b65a97530e24af9041288f43a1e0852be77222a3e09c205b1cd3813d76a888b29eef5fd1814a12861f9b1599777a4eacb0773f04b7db3c08994fdfc3df2dff362e5a41645c35155fc465aa751b9629a3b27cc9605a915b644d7a848ab379904f5b492b0b743da01929beaccf97170e8b42bfd49b6db94282a155de13e35602297ab95a304cf9917953e333e5d765ba17ab311026a1406c5a98ccde23c01f6d41b190dafd0d665b65e78ac7777300046115cfd4968867c70807088195ac04e32f5df9b435b4992e554bc719006898849dab4a4ee36c92949a191c64756387709506c53c883d9d4ae4c9d8a43b0d13c7a6d48b2d1c49345e0d22072a2b04fbac296b069c784e4218d160f9d0845619b988544bd414cffa606cbdf1ee22da83b39038a978ed319552b0141caf5f96844a127d0d62a5aa0bf7d261d7dea3fd571c34755f57e978f5d339b05ed7f114d77fc937955b43c174ed36a43ca11ca9836981195e45b5c94357659eece943b33cf68fca2adc779dc5e166c721d1fb60e7e1f34247dac6bb5460935715d3fa5db3a56e1bf4a5eb3dc0bd4ab66e4cada28cf6f7e525c3e6cf133a3ab90786650b4b1f06361bfdb976425b623c27e11db6546c44273de777790c1aa94f219a7f4747c34ffb699985ebfd9253c7bf917a74606bca21c2960ee65868af458b49282a697c2adc6af93360823aba71a291f1512aa72c5473f04d03e8bfa94c42bc47a575721f12f3f1c88beb5f08dd211a2eb1d262dc6cc42a0ca247195525e85df0f25f608e27cfb539d67dd45eefd5e8405cf73a3932558632ea6d369ac7b136ea2432e2b8eec77fc22c583c8c5cc1a0cd8a1d32730a72a6fa89015a98e4a4a0be6b239a11d78f5180dbe3500d080d121519b1ef3c64528fd850fb0d4cb42ef8a9dac33d61349f068588359b81a859b8e00d4984e7e70335598c2291368c33c8e24850dd806cc7b38e83b13ab332dcc876a4301ecc54748e4a88fd75b046c6915bade14ce2d6e1f8af01d9ad9ddfd76aec33f83c10590c3774632cb51bf28b8e7be3da08ed799a44e82e2f16c6c434eb03cb1b6d7487a420870d36e1b2180df8eae73686ad856c41155659d6c0b7e9b5b3af4e4aac4d0863456c52984e63da2059382dba51cc1fd2bbafe921b4ba9d12d369a6ba9666f21f6529ca1a54512699e39ecbedb4b0f5b5c4dfcd597f087306fefb1faf86eb136021e7fbb567402004d4ff013c621588d3bc827157343ba61e43b5c25bd75cd600e846d0e20b0bfee800041e91ea5e3fbb9b5253213949c64d1dd76f18b9ea7fc4264449777a7ac29d023292f2a34324f388641a8301aef95eab40ddc91da1f56f6f336e14a5954ede28ac52ec5c18acfb18166c708d6fea539f98ad2588c29c182d8db5fe41848a22d786ba52c8ac7c829bc4d309ff6a684f77ca04c7b9e118e9357944636d736a93182b9824ec19d4d6ed29cbefec5e1cc5a4dbcc8d28268c20984472e4017e4949cf058def5011849f5848e51346930442847418f3089029c635dab254262ccafb21e731affe6ec433341a817d56f78872030f7ccaf045885e778fdb33f9d46e0e171169d96db339094f13a37659f0a3ac0a43d7aba1ec45ede2162d7aee301b0b5b6f84179b7d40d9651ee713c6d518216a95b6cbfc295e4ae0c8e4e037e347be85894efd9108afd81596a06fa281b522c40c72e50d880aacc603e46faa3d9577799308a04166786c375cacdbd6fcffac9b1c487979fe2bf855ebe8771faf5533c0df582ba378818d6ca8749588433c42cf7d5efcd32b1048abd807f853c9edc6b4a39dcf2261e45bd5a7448b3ff2ff4eb36bdd72e7feee2aa91d0a4411bc7f324aa8af36ef2f916538931b45debf99218789a2e96aca6681f29b7f60c4754fbad370dff04fefa2d9a9145c32957ea1a92d1b058b82f9a3ddce873204bd5bc5bcc6a037a8aa522b561fcf6b2c4ceb4a447db4f95c5517cfee9fa581ce0f92a4e5ff8bb16ca0975ac9b1d7757a2d1fc6018d88b614494644d1cfdab0b63756214b2d9d4ee8439687d1269bed6b06d0322b53a44f0a3026ceae1c7afee7661750b17d48b3a80df47daa79a90ff75ea31c2abdf7e296e508f6c040b6b5dca59d76d3f25296e15b72c9410b1c653dcd78c8e704ddf550415a2d682f1af91aee853ed701acea61c9c08c24e0ad0d8857dc8908356afa1845028363f2cc62125cf9de811b6e33026a1261293afe8be351098db0d097a5780dac24e9a259435969353c9b889a9005569da8a6142ba3d80ded197638e642b3d6901ec32a1ada72b0aae1c7de438486caf6be6980b10c84e66442b829408151048fbaec2009925b5a8a90408fd199881f699d274e077b46b11025210357d6436091e6955236f5c0ea2c490828bc896e3e99b6833f5d021062f176d2b7aeaec535dc101b50f345b71ee99155a3640f78d7343ce59cf0e86a8d1508a478a147d48be89ccef53d7a2f57aa9b10f888f3080d5cf9d966482f347c6e6a6ecdd9cbce117ad9ace51c49ff8f72af5984efcf0a09f68dd02aed6bc275d54b519a1ae5beb9f293a58219ea51f17ecc261abb8c2c4d3c5add2142f6c365b9b0f898263d36ac64fd95bd9af588a199e7f14cb03b88d0d57bd686dc0942b089784c8e8c9bd65153d3187e0f3e2b6d8b29de13cdd29cc9b3da501785f4dc43c62e395c1524ecc06f8597ba4912e89856431d8a6f7dc2fb88985d8534e22747a021a02ce73dac55a147bb8898c7c2ee2c7bb7429084ed525e4e23e71cd79838700c8598f32fecbde897126c77a798b00b8b1a540d2ec3149d5ced0cf962e0511aa684bdc12a3fd2bc9de2a2ffb04e2099be45acf7829f5e7c5408f6eca7d2d61a1f03f3c14679c763e879d70fb54c63b82136d5159f9acb385abb0c18db705b103ca1b02aa0b939020e7629f3f276e4351456d70de007191ea7fc25d4708121a74014a99421cd386946ca09fd33d54ebd3432adf03efbc0814c61a0003eb5642080f002f24f5a0b05a483a3181123b8aa04d00502d58330f1262b9174cfcf396c36a897edf3f2c29bd25e971d0679401ef987ef5a47068d138f8cd144da24a8169ac20e6418f8d365abf9468dcd31f07fbd22d523b0d68c3ceb93575e8fe575882aaaf5443d6e48f3ba09274291a5f12ee0860d531bece646e232ae65ec6ed1e681bad7bdf06cdeb86e33d37cc19386a6465b7a803b9252bdfac7eca05e010bd243760ddc8ebca2d029482c00016642bb0999c00cffefab5b3bb8fdf07ccfab3212d12905d9a6fe7d7ad54b915b7a0430b1a463275bfc914523aae7b8df39048db4be43df53c40493451cbcbdc3fa8f33710c2aad46907767c0aede6c63b4562b1ab69a34866c52fd70582f1bef9ea04983564c60c86a7d5250429417fb94f60aae89b767533e2e351ca4b83d528bc2a609915d650835152283ded8e3ad4b31a7e78ddb075b1bb1cd417b935cdc7b591d440fe2836b41bcc89c30d2a1fffce1c6fe77c4d1d6ec074e96cfaae778838198988744d0482d8cc1e6cc2a7c59714ea4460c0b82f87e585110d3d4c4702a4a3a5f2a76cba03a2a2bacdac5f0e22455c9489db9d510824ba7f6d4400bfd7cd577f22c86bde1be0ba6f16c9f6b13284714bc09b0a6401aea9f4e40f5836e929728e5181c7d23fab07f9c53d24b680bc547586f45dd0ac8afbaee5d054743669735f3059671f527355c04e40aebcfd69791d99e4016f7351ae57255165074fb4fc64202fad49afca9bf83d476a402ed958c5624fcee5cd9863264ca68dd358569ed4a9aad559829d6eae1d2852760c7b77700c486d52d10dbf994223361bf6a3025ec02fb9b6880962d57ae34383283c851505796c06618fec9904a3aa89d09f9fc040818e136f79accfaa3425bc9373dc35fdedc0c171ff59b2a5acd037ab8be48dade6c4e70efbddc7d3f8beb573c68f3ceaeb7a2a9ce3b0d02ab767b210c8806d3993268ce962b66740d8ac5e44448565c9605767f005a184cc81d8c781b13646b65ddadc1839d63ab9893e421c5a55f72dbca4f394d468c463302203a95eeb9fb0f9109770994b55d7acf76ee41e96f756f04e7b0929fd641c24d5c559b1e50a22854b7cfaa54c86b2f502ac72dc617ecad0e8f38a9540aa845788a19e41143407bd3d381837c50e92b7c126bcd812ab0bee5a22a9b50e5344ea7087f560a1f05e01207e987cedaa5e91960a71fcdda712031cd9aaa0c1b8eaa61d50823e62b55389286c67c28c8864c0469177861e3f9417283a7b5b6ba42e142690d684df5272af80258e92bb69e51f712a40453f0b16466b87e12c2f5866543716f793eed850085756d0f416fffaec12b90952a1901f499ee573ab82ed1d0f0ae4ba0c0a27eac12e9a4ef562a863b52f420efe71a4467a857a1ae6b658c38edec9fe5f8f555b88fe9c67be42e73c83cc533457907d84453a0a8acfbf8f0e6033a28ed65e262bf9f905b7fad2d128264990c06a05881518ac6379e4721f8bc8f1a7042b4e14d042056a3a80ef87711c6fafa16602ea7c9ff375114d7da993cfb8bfdec0182155608abbb64800ede459cd8fb9c3ccfe75b8bcc4c9d3023d6deae01fa9720349d76c33ce591026c82b013a2788ce13aa0014201712cc91b0e318614f10e0a0d50d8094c112484e3c8693182ad7bc8a11763126dbf7cd3cb93b2941c7a954bde7c90ae963891ec848088818babf788566cd46322d0ecc24ce38a01a9b79d87fd34b88bd589f96d56d90415177f0e28dfa0fb2e81e2c24b4fd088c27193df98f91255ef745a62cc3c948228ec740017d7b5a4a0ce39039058cc7f27304313988b7c4c7f8c7d640fdab6156e451af1db8f4caa494af02623838fd2ca5f8462e5793b4feab7052309eaa79ceb145195a1452b17ba931e07098c2a1d68aa7fdb2f06956b3c0be920f59444fb2e35ccbb7fb08321a52ea715b4218391388215668e8b3e59d39de573b10249892723511b339bb77c48609ffe1c0529de03815bd8f39676760468f9ca5c637c1790f0d80a0022c314adac49d522f103d193883621e8531ca2ceb855f24006381c8569174a29149f718a51a943f0dc1c1a1fa69880015b8e3796f3534e3b00278f445786f93c143b05c9ebf01b75c60da41974e3449199458d84ea3fb9e56b9097c97b92f300fc40e4fc502039f268e9a6c9cc56b00828838dc93a14780815f5c28128533b1fabda4dae56a798fa9de95e79447473aa0666411608a57358ab50f59946d3e8ef77898cf12e3f42b875357a6291b5f4c63391f889867a397c9b33ccf10af155478dfbb90784f36b4c7ecbbba6e28b6ff558cbc745d96337aebe4007e3283cbc4892645c2a36529445941a253b063902da9136d068a6756753c3c7166929b5225cc97202354aa0c2406dc96b2561d4a008278c1a40ddd20c10c15993b69b5533087178abc0a51c4bba19488c80990c157e814bf19af45c75d89348b828a2f9567d75072194ac4b9e08e2dc82e0a3a5422c486a2473715ad2bc3697ab00bc257504be6b4901923228fcc592f14aaa579996fa15fe184979e467dd6e55e9426669d31c94204c290e57558b70f23826a8f0f1b6b843140cd2a097116780194fa4c2293b86153cedc14f89eb214f4e268b8af2ee02a434f32d7595095e149505f105a61118d67c11c9da980ce616991da26426359c74a33aba9c3851c4f96f7299a4955068e8ff93c6759bb28125525f0c40cd468d143bfe90ec8d96aa0eafa433645b053ef7de6f856eac0e9d573be0c292ee040ae8d6652ee2bc42f7ca63c0710b26ce4d861cea42a59fc20d467730fae5f94b060b3d1580c8a80068558705487e4dfa6e68c98aeb37ada2980433fc59b0ada72465a908d9de4196b888868aefc51f29fc402fdbce872e7c93a9419425b712d57cff47d18a4c58b8f504d9dbc4f2ea379d0b58f848e016dbaf3b35bf37533ca380aee11d637276b5bd6671a55a55a4b74e01ec57858b77291d08c80f7c7164d9aac934ad1d7f9d1ca134562e9a0205b26131439d813345f3c2d89e29c547f0b12ef9b502b6c965090221f5854d62c060292d37630d860fe8063ccb2b820f8da088215d0befe7d9d88a59fa74c3c6f65cb6c2267f06b0362a02ed00fde2bfad40b7f095607eae094e5a007e5458a93e15f56f8b403cba150073d7e1d158d408c9ebf7deec4a13fdedb865e2db8a95507f6070d41e6030d7f6767232b247c7c05625dba30e236a3811dc3da12cfe03fc2cda87615b4925356f7e6e6c0b07d211e6233f8635b1faaf4a90b12f34074945e48e215597bed0bd338ee98ac92b3632e4ceff8594b5103edbe2fcea1469f05cd9b488238ab862fad3033ffb2990c9278fd1490a3442277193f445b3ab3468b72d9a98ea08413f9c98b38e00130e890b44c82ac95fe55e29d2693b2a2790959730a991545052dc651e32efef345f87495d470e489e7262a8442cd00ee0091c52a0d2225ce00911d65c5c160a6405f419d409e58d427c274721e09984d08e8ad8ba668efa0584fcaeba7edf001ca2102efe102415743864be1f50ac469ae4ba61b02f3a16d79e32d44d040d5e510ad2cce29c8679a8979555a399b0a32216b1c3c36a7719b6f109056c4cdbb602926fa3045b39b60dca6404b921c9659e9f1222e13c647d6817a32d8bc64a3ece04021185a82bdb9c22ba0d37d65eff93b93791e220a3cd20e59153a7d02f5450303d2d72d5c61ed5e51313f8e4e2175af8995388df0c28e77ce93db0aafe9db037da194f88d220f8e087a14d30772c413b76007d81e70085321ce9278e0d21e74fa70122326cbbde89cb87b68bc7133d9e932d5a0b65987d679847096ab6588de6b07303ecade6fe9f83a33cc1e85c9e3798e650b860660742c56172a9488954e96067f899fe7e138319f46db44bcab82625632d1a010d5cf7cfa4af34fb03aeb29495dd56686d80838b0f64654bf0c1c56c46963850c909ef252c8248896022be4fad00fb8b07c9502a46a62e48b32b5a2dceda82d5efa7363be6ad82771677b83cb4f0cc746704c992bf90aac92ce6469608c3f80e7c715dbd5eb7c5aa186035a91305d2bcafcc0fc6ead7eef31b2112887f01834b945c22624dfe4481ae1bade52bb8529f9f9886c4afbf213ad24c10430deee1b21d951f83f50bd9566e56deaafe851ac1f36ec7a4ad7e5db8081b5c82627872cc60b079850ec9558148e6626ca65184e41a35b92bec783a568ba804dd3bfc69f7245444bd545b0b38df3e0a86f5b0cd05a3fac229e229cc48cc1e7300dff28f41849677edd895e37b9c4d6e6dc78b85ac2a0964d0ae06d31609cd801c794cad49bcad434c364111ad835227dc1766edd5edea9988f51d05255de3b14674d8bfb3fb2411828105c657e6e5fd73f806e5653f522a33a2d155d20fab15f98ce06519935bbeadb3391d40b2c20a1ff09b1de48a045db0ac1c3dd7ce18f6b7b5636cbb43d2361b6628b993df9fd84bfe99ab3ecf569b026092877a3363f6bb2593d8b89a54453b3be9f8a30ce0448cdc32da52942ab6737843d174e36d301d6723de03ebd979891ff368197199beb5d79490df5df2734c0c1ade254266af335001f78a74b4fba0a7b8c895d1dab85a62ba244b5afd0e39a2d1f71520548d95050a791d4d0927f2301c05500916d1ee399f5742070a0c22b8e399152b952c6228241477aea65dda7c399d28c2c35aacb023d6313c519ea0d426226d1205af4c9e9c2a64fbc68c7c0c2e3a411f65441606ea7c6b1a8e7009fc0c0f8ce205128cdf007eb5769bfe4eb99a9f026ea96c9fdd5771f97f212488d041ec7b8ef507d1ff21e61a42c52212d445e499545e3ecdf90b84248cd658c789abc9c31085ea5c9ae1bba187ae628ab8a2d50b0eabeb1c5c9f2766c4e3e3958a22a95b00ba0cd446413ed5f9ffb9dae2161952b55b7779ffd3b507ac7d8412f5e34c5f4b760c772f067e2a4ee8722282b606bde2a5aadc503f16a0a6036158dcf96217904189e7e49afa3f0de684d78f7c51ed22228ac873ed8238d19ecee02fa9621a9949e03dfb80cf555db20596a340750602a7805f8e0dc7b96eb9a907fc427e07baceadf2dbb924c28b3cf2b841d46fc41076c88b136b3264024b53c97a7e5c49ab103bc472b3ac6ade27bde706603e805863f4048c1ef9be0caefd50e3b95d95a507fdfe6b6ffc0f81f2f4b4d5bf361b6ec09c3e3ef4cd2a2512a07f816a3378b4db58324b38059f03fa89c654ccaec8471a90d8dec57798235447d77254f571ef71e158d548ffed1e90dd3eeefff4afae3518d1630a276d2b00c0a673972f41c5a6d7399427f3ed4d8d55d6aa7b8ab272d2bc849d78d590f06a634ef5c50764edf6eb759b81f64deb02f247d5ff39720093c04a1fc0d3e4c651fa6d64335e19121c703f079f87a708c9b4b9003e7dc7f241760d9ef72e778345eb5accacc2b72d48e9a726b19a2ab57754d89b82e1b87db2d2c61731c7ac2432837406628677412f933142392c8948bd9cbcea2b2d31b7681db70627323041aa00aa9fb783b4da6697eb794eabcace2640f5af93dc627449677c2278fc785b34674649e3d98ea16243d67390302b23ad41510b01774b5cd369fe4ae1ad0f1bb9de92197d69f5c611621b6e31e79b373048d63d2715440561f6a70bb366c753fd66a8ffc15a846e5a9a343c168ade9618e2fd92080d1af5bb3cf4153c16f368326f7b86b3f519d4c0c58e1aff0698f309db08c94d8bd272e9979846fd2314e6fe8a8abcee78268c9aa3dec223e7b64830cf16017ae186170b448ff707af27e5a6de576ae68fe66b94b068e9d07a6cbdeb96c470ac03730b3c684b5c3d0c94c89e38f164d7c8ced6771824eef4918b42919c9da83d8b8d9193f48d1e2a95cbd8ea1e0ab925f5c438ff42433a1cf3038893af5d2be4d422432caa631651ed3baefad3d0ab9846f1412bd73e2d3f5b32123e038be1864ce9d05bfb6b83b5bb89e13b4651a84378ce55cb97a14bd8f4b5081438ac2dadfef8a7b80f6f5bbc35c60504991d87e01776b871791cc8a701e950670e4036932f0b5a1918fc34515a79e3bab54d64db6ce0f85f0029941e6027154017dc2b2408ada035d45d0db6bc9fbfa6331ab8b749392853c16dd50d4e152a25f4f4de9522ee0fe6224115344fe7c158911dd00e158d70414a86a2de08df6a97add06d5e9ef5148b45eef177a55009fb88cbed4042aacf0dacc5a6a267765eb6f3747030df04e7f52b0b18c10db0a03ac18687f926da5adb831e9b028c01b5a42c08c4c2267e3a80ca47dc9dda4903e4454e3548df3996773c73f36079c209202928e5eeb1ee1dc9fd360de1da39946b44b22d32747d956f755661fea3139a9030f7ff25b8b301a7588e6eeb3ba7711327c8332b22581960348339ec8133943b53552ea7b55d8eff1ff97a5182afc578e4057f26f72966151e3202af54a001f29588609d4522e214e96bfb3fa318ae9b74c37ec0017faea7161b01f872019d88cf3a57e607f1e54bba74c8f0e5e9817eac7c730aab5d24f7c1d7f06c63ffd3fb1e6487ee3d5e0d7f660494dfd8b3efb3b4e666edc14ee2084705f24a6df3ec3cb52b9f24f4456d0768778e87c04ad1e114a9890cf0bf2a4b2e2a9259992f164e199f884d1c856e3d916fe941dc60dcc986d9677ae0c1d054f087b811e27d7cc46cf267fc9af7e7722b48512aaeab819a2e74ae60daff63897aab475d9e1ddac6e6064b6a854d394959453cd3096ae4ebf672aeea0b443c5ff99d94282711be2eb7593a9e58ce7baad54a3485573ad1fa79598899a75c8caaa2ee57b2f39b4bff6787d62b645f2a0e5c0f5d97a76b382fb7840ba8f492315ce621b954b423e5d1357d6e4ffbad70464071722b8573532584649d34f2dfc2f2b0c81e2981bcb5eac3cd21147d66b5d37849957a997431372c220b3389d7c928c2d12ac5fa5ef0431625e189c8ca270a0620a0eff1dedc1e34d8f00afbe31e6cc442c5527ca93cbc0b16693b742dc0015421326b33307d35d3dc1e7a1476e85c5a1ee35b002c597b802591ad206a7006657690c1f209340bfa4ad41f5eb6c7aa14e6f30f7bc3d95b61f52869c1d0354cde1b1136bd7c60760f77326de6cdec34ccc70d0a19b4744cd9a95ae4193d47acfc498e7fc753cc2b22ae81202012e04135efc2839b04cfe1ae04f136ac934a0a899e7d6d9f1864181244d3d22a27430bcafaafa0df12c4715f08ba658bd6f379ea4f8335e7696937273b534017bf3d971af733076254328536b1f6fc67b4e71be1e74b4d312ab6b301dcaf477ccad47b0bd024174549bb5f5c481d89bf34710b31382b3786061f2298bd49e557bc69f2119490b3b45a542d0233e9f2a2b38e70e3c584f5a59b69a7b35602eb7e9400b45c504aa4250c3876d5177bbecd6e392723cb6acd9467340fe954d9462e9c1370470f26b1d83d1dca69148e19c3142ccb0b7a991c21c924ca1077a465be1faace60cc0b01bffefa241ec4042610f220cec461239e61efe8fd9b02d3e330a47bc06e766c51372c6c0dfdeb413cf2a3bac659b843f922cb5147e435f7361b0cf5e7bf5a027ccfbfd3b2b23119b3f0a946ada6398acb1f6a9a876ce37320609ee66499cc02b48b4b19c785e2b7e7103566cf197e2f0634973c3dc44a2ac1946a56e0b734f378da378187d32ec04586d9d29aa5219b6a32d26b18947918485732c2e120ddeac25e4d63e3e7f24d993238beb30455f68b3abc685418010f5e7cd17635c26e4fdcea058ab82c5b82b7d1252a1a1caea992b25effe51a9601316dcfb45a8963b668c6aa91ecbe632f9210aaf7bb84b0ee80dda1f3eca7569c348cbdbaf3c488f4eeccfbfca19335d5a9b7b3c6272201273fa700b03cea2c9548271c4ff877e172305bba3fa3902dee323d3b0adff73373b2afb74b65c0c618468e4429db2c6f6894a82072a846f2226fab518f43166cf929b77d4d053ec3ce9da52b5184db5ff8546cbbe922c894fe79ab8919486df55c9a4786755f4780dadda052be50607fce1a3e3ed0d874e842c303d34d6b18b61442ce8e61f3bc05941856b8c84b1fd01718da49a7d530fac30c6b2d2b036756728e8f8b28b8e616538e01691938d95ce5071a7d4b12a5201393c7a943e73076e0949656b76856895f8462cb077beefae976dfd3192f59c265d47ac363d8c7d47d2465061ee2e3916250b88337d4592b2af08b8aae3b168ac2e0b754fd99d852f871853e4080561c87334a04049763b806c822501538691646168e0719253801d4cbf815b216de1cb3d53bb7b72779ed1cf32891ab55c6ac9e6570fc43738015d365b445a0fecf5e0d9663eb6654623ade73e15804a73161bceceb1cd0f4403b42753a3fb5d8d2f05c01dfc5c85b8d04fa7f8e342e9a20e1d800b6a5a9cd867f63dc0af915d4af515bd341900dad0bf559e72c0510c8425baee2eb3128d470704ff6f9ae168ff20be6a3c5b80bcff2fba6423ecd46f72754fc1aa47ec2406cbfb0c9740f2a679822adf8135c84731f3d72532918795006a0473147595a671598901b9cd39232ec98608326865e17e9a88dd86a7850cd82e9845ab5338ab3bb112303e24b37cf253cfb6237b48b50cb21e7fcc595ef08a860e94d6bedbe4c58bd9eab91adbb97a1768af5d6f72c4d42570f7fd77593ac7222a357cb78c08a8c7e452a621054e6c07263f18d84be30e03e6dca342dc007188e3a861bfa7d60486b0538d71774e42a3d4522d758149ad7b62cde1106fe2c4c60562abc0a35020d36a706810ee56e8b540b66df5f5d81a57dd78601c843207189ae189d51911afe0acf15c199f742b872a1d9725b3005e173db02c2c0ace2e6b2c791ae069fcb9bf477f1f624b53d28f97a63556a157c749b82b6c66dbff128dbb59db2fb6cdbf25bb78798bb7f7c8ef9cd48c08b3e8fc3a8e0359615d964fd1c039e72b9fef9512d9e61232601f9e9d5d26c62951c8cde8ab5feed1854bc900b9101199ac6ec8aea7ffca5326e353f9b3b6a408bfd7edf26c45ab62f43c3266f7f03a78305b0b429196c5d69093f6b3d1909fe42268248d831b17ecb0d989808945c795f9fe60a8515fbface921a29a5ed92728ce8b467b2bd22d3e1698e41d4170cc1010d5440a857960b15170bb6962250cf4d1a04201950c0bbb035679b83e0474888e41915bb1010175697bb358181a707a49849257d383e4f7d6a8869e626f930aa168fbfb7c0dcbc56156ec104b3297006125cca0ff4363741e84b9a41d55a1b7acdce4cab21d48c356160f92e99d3dccfa2d69bdf0b67cd404be1e9cb2f8303cbdb0bef3c19612e7da80674605fdc57943c1103c76e968861de3a857e4bf92d10c9268b5948e643281cee8b924c82a81b7efc1e863f75186617c7a75ac2ece799c201a63f418224720cb8dd9c8bf0f1bd9aafae47222a9ab8642d4173f85be8373c18f83cd5eff7118e9ecd564c63c0e3b2b7961245f70c8e1e6ebe28e24e2a6cd08a0bac7704204f7192d04267804614fc9b0d17f2213f27ff52d11fcab1628c0e3eb64121fc324971fc21d650676c0627f70a06dfd322950f051b892356aaccd519f13d3114a354c59e2c4c30fe3a353261e925a7f2d058c63d22f9aea78bf37802465bfc2f57dc81f2826f083a2a004f6c287c7ba9b9f8a42197408c0f3584600daa523e7ee5b26d7263f7c642f9faed0218e4ea20987f6ef7a22ee5fb94363cbc0a6ecfe6980e404d941be9655ac822e5c1acc273af5a25003dc96acb406cc18f223af9044a93a5390ae2ce3c5b946b63d51eb6f386183c1746e93235b8bb6c2868df89fe323c6150ed26c740a60e6cd662092aeb1a53a86db8b5bf18a82073e00522cda887a224dc2a45e32abfae4f91a041fb92eb1e443cb2e3306b5ea3f306e511325a4354794346ca47d0fa19fd6e3a3987a6f860e6d958aae5ebc01e4c8a06ba6512454ce7cd5b5a2d075ca248b7b66cde935c7a5906969eddd58b210e9680f5aff5502f10d24f12ebd7cf70c288bc4d2423a0959846da2182fca084e2f223ecfe399f5246ced339a09808a33a5fad258a0e0685b2bc5ed7495c978290d2b572cd814b0d83b3870cfa544698a0aee73a1ce98d0b35370cbca99533bd0ae19ed112fd1bad8c9d306a275d2dc6f5c74e78ffda085d71ff2a317a9582e0e46a22aa202d8d00211f858cfed454ebb979a19027ca1f91ca14ec1f6de84ab044bfbcaa3c1043a1a882106a037242f824cef0f749ebcf4ea97e2d09f1bc8a69138700ef28d3a1738ea78ab532c9e880980ee373002aad921de829b00134dfdff31edc4433cf75ea7e3b926a28bef56bf747b55ae964fc79e23248b0d7ea889d400cdc88af0cc231446967ff42c397d150e8bbe8a9e745107189d6f689678a406decf470d371b523a6597c51137ce355ae32758a2700585064468e3a9fbbac264f2538e36fae4eab7599a22efa42d9f24e881da9af0985b80d27bd57ca0e8eb54a2db1a95f9e2d7dcb680dc30f6b0b7834a188beaa90b1e62bb08bd5382f902ec687742298b309aec7968ee0606d66717730af94df291169d157a7061a2775d8939f87a1cd078f9b0585015f6e3089cd0038993a8f4dce08d3171a12524873813ed0b713a13e908cbfc6e906a4a041c928e0b529dbb57e7a717f26057e4b000f19d12df4c9ed6cc0c5f5af9fd2e13437aca151e4a94a4f2ec2a90a7e33fbc2246c3201fdcbb88bb36e9a49978e4b435b9ce3655a39b54ceb2311c45618f961a898d6aaded8a604bc2457feaed382fd44c4969db50378ad46ca41cc3fe12294e638fcb21d829d9e98b229b6efa92c2d482b2a6a89fce6fedd57bec9ec01130552488d2fe631af81f542023042b08612533037a5e3f5865ab58a8b1921f96007ab22d80cca119c41dbd1ddb06a7515a8beae023a54a5939d797b1b8b86e84e5c524b1f813f94ca545c0f8f266e51da2a451aafdfa9166e1ebabeda3efb7454a8e49af62d0fd9fa2656f3b96b7d122a130cc21609fbdeda2de32f067f6294c17108982bd22df2ffc2d0ca8086188c3739798ce736b776ccf5bfbc012a686f7b58d00ca89c766f18fe4f1487eeb609f567a3d02694aa0439c4dd57b6d0e40fe2fce50de1d77c9f8353f77f17ffe9872c4873bac2f954f17f32e866d2c4eddb25dc36bdd9ff20a17d85eab6bb9415568b6e51d3e09ea8e26ce5798b45e0a291e55da6909759fc532faa2f4a68b32f0f2ac023e2d3fe9b401467a650aff4061cdb66e2091b47d89632201013d89b3a665c40b7b634371cb5fba92fdb60f6cd2c73022089a957e079311ac1f2707cc117a386e1d48dc460dc5e9cc63003072752af12d7f95cfc4d70049702c6bd0b4b3474969ee473305c1cb6e5bb6071965865fc56c808f6621b3a3aeb3ec00a6e0110819d8652d4107ba61c4cc30932ba11e7e08d250ab63d81de5ef854eb1a30becbefddc86f009a57014862b9b839894071dd83153ec241b8d2632c37bb3263dbcaa4d80a2b9a585e6ed1d90a148ed4e5432af706600e0179a672fd7399595bc882ee6f19074c65a97b0fc65dbc8851dcdf96c3a805f572c30e0e5ae64d5d39f369c9e6b7011279e4f977d9d8d1a95513609076ba22c004bbf5c2822ee0ab01d244f4dc426dbb2434d3810568566de8bc6263db71ed1cdb855bfa5da65bab8955b13768c5405e82c180ab55cc29543dcf67dc790745acd1022ebca68e7b1b5b93a8c654e02bd8acb8b01a3d409c701144b30774d594ee25d66e0c3922d9f36d231f917249a93fe6505f27e7e85a80ea425c41ad503e6425f14731cc76b347f4809b73e0ba0a3872c1a8c88fb4b1ce9f7aae55bd9863eac78b3a4c7204356ff712af21622db53b4e1727eafe6b07361e00f6abb3420e6a484ecf46be8f906022107f844a205b109508b1dbb8c28c458e171867f27b8045a75e98e052a8c3bfd97907056fced2d4b7db7309a00343873ee6851e3a876f8347904556100e494d7e0943793c441baace115590d333093918872dd4e17e6e7c7d1499265809c126405da929930c7172c2569880c6847dc3731af3c61cd1d36ad66cd29203433f3efba3a0cde697c0592641bb2d28468e025069c050ad96f99a98801638c0a00ec2543fc8bb4061c8511a7f46b54cd0f7d4690e819ff28f055e0dcce219d557a0b1631dcde5203167975358b0adb0dbaa1ce3ab62c936694a7e0bfe4c1c7390dde09f787d9b49e39d93954fae7bc2c9150624eb00a08edb417429ed62e230ad88508555a2f279449c65f956d44d7254e1540ba28b8a4de93e372e09e5c50686cdf3535d8e3d0063471412b28b8c39c569cf9843933516391d773182ec5c6fe89c606168a2d3521587fcf4cc8cc697c2d7a551192e620e0c10317d7b0b214138139329efa565a5b34530028d038082cee7f92f15d7cdfe088281d1d41c866d51c0410225adb9a24553c3038d2be905f091e87339a0688a164db9d0e003b8b8aa8b5c87cbeeca1b7343de649706c9cb1d5fae1d3a092eae9c5dac7fab0b7674fd6de29bb4009b680ec91ce66ffad1f9a232b006704e7be3109b9291a5aeb73622549ad22d8f15d21f1d342caaea557cb2733e44751ce8a0761ed7d63b3da9b00118293a5cd7689f4898e286dc32386c6d786de90d7b72180b1498c8e568163c5e5ead229e75296e4b698880a39a907fd1d5856bd248527fecee5fc81236b76bdb7a498aa13b254a7342eef6d2436c87f71d65709567710ba419783369b39848e92a4093a20c94cf953af3ea5eac1f6b4224fa9331ee02742fa05a8024cd879e549f2663327f1449472dd6ec00599b43e3b215003a3a4fc9f4fe63171d28bc59c539095ffbcd597e3ce513aa554d32b31ba24ee1dfe09f6cb2954cb04fe2ea2144aa5c3790b617ff8cd2544225b5aa46890d3ee62536b8bfd07b20dad6a01619b34a5e6006f5abe47d9ffffadb0e144444a1e824f2871722aee38b1fdb4380c029e5db43e71c501429b32ded40ab2ec4a1f83153a5b188c72eabce076000243534dbf0d3ab7428ec534671d70a07c3f7f8edb1e56554c3675f543f759fccde3611605f796221e6191eff8ce084caca6ec2b754875e844d31de0c02736e3054194ed840d08188297c38474ea0347cb113ce71e5cc763b53f223a7bd330497ea18f7c5b7ae373fd1b4a8e060e5a9b30a7aedcf89aa1d8d4b7622c6658ba9eae687256635390cd7c36be1ada6cad1eb421c25453019a2a9a78947bbd429c473fd268064677d3c393c9df288fb35ac8eead71b6debcc02d5df689a28c5d34960ab6f7ef92a151a806a4f174aea85f6020dbe2aa5f8e482f7b81cfa3b4a4e3f7ca0fc23adc3515cc9696556df352d94562d30bc9681249077a468109a20b22759246ac078a27dd10d5829325680a593c4229c20ac0f621aa8556ab14b9fc7c22cafc114bab13dcb5091d7eaa7af786ba3eaa966aa826ec53eaf8613d900092c4703ab7103a4885d9a11b65b27cc2188b87389579f9831e68c0bb65602814f2e0c8068da55995bb3af7bdeaaff420268ecc12652d0ca08c37b2970e23112193985d6b8d3cb9b8869cd16fbf5191ec55a8ef12d29c85e28a9c0e1b138e34946d09abf8fea823a544073ffa40d0a28c5fce35b0624eb37b7fe2637edf48452b42ce4d7629a3254c2ae26ddefc7957b2faf28dcc74073fd65dc9be45b7f05802cc0bdcd44741d769ce753f09ccba6b02d0e3a81f4dd6b0bc4442710db2003f1b837e5cdfb04fd2a63f4ee1002006b7da8e368df7b971e6c0e9016d25f4275f5dbe98081f1e599e51d017fc9d70cf00a3714882d87ef29030b40da46d6c1f8f3cced749dcf4200af1b023d3a067577caf07a5d84e6de911146be638bdf6f8a6d5d54559722814d96b05c226e42402fc2c0812a3d2b69b65536b764b23a094b6e57b07837a0b9fb3223469e691a554083d9341ac1028ffa76118b3352a57779e8cb74621f1e8ff52c94d82c19a4303042cdce5204959329b650383520208f6e6459c2af2df2c9f42921022fc432216e47d1062882b4d13a31aad4a59c4c05e416449fb33b17e0c5e99cc4ba958f4eb85ee3b6d7ee79931f6be1aaf3b6a42cf655562f0b41a6a43bb3e5db6ce43481a9026e464e550046f9207ee9aebbd70fcb1c198ccc53335a5db85ac17b6c2fd4d4a9e6843b58192b455912169416ab76fc2075bfc89fad7f6fddcb3314d588973f00e4a7d69d9f519b3b81b4353cecebc4d9258ede1c419660ec0ea8de27b1d0a864fc06f0930324bfdd9f3254176a2b18be5de1aa690c5055c7028630bc69e949f1928d5cfc4c8224b152b70f26ee2229bbb0f6d8f41764aabbb9c3f0ab6c15f6b8ad2661600af325824d165219b4c263db77578d3c974c78665b4334981402ae745a32c744f2c05ccb4fd0d6d502a24a20c28fad5044c0cba8b2940ba9e7afbc4929ef4dfcfa9efeb99dc1ed7746ce4c657c4a79a3934410ca0e535b466c715edaaa54712abbebcbe3b65b6cdfcb9ac4a0f739b701d5b87c36386e469b55f3d8438dd9f66f6bd106346694f06860714e43cf0a149ad29b699765ca648aead91084dfe4d9886cf2d89e0a7ae9a8a21b4fe9b9a269e3bdd2607559c999cc32c79b3d63437071447bb9932459d10aba7dadae278356a21f5be80d267e21a446293af7fa4696950e022ff8b235581e612f7ec6813228f65e92be5e82ab5ee119ca817bb3fb3db45d1f5047b2bfa5f8375b1e9b2721aa9df1ab47a69e5de84ecfb650fc27bbd00be37b8471a83a971eb86d5956a7f5c716b331438cc803092b7bb9da9a42fae91bb7bbeba7159c856111bce1fbc7ea5ce5921b79dc0de39e23a7529a75e0cecb15a843b142a406ec62c9118360be6dbaa400c0b67af1bd19f08b520c872e361631306b5275f769d43414ef89fba815eff4fe8ea05562f785ec6bf401bfc78f71428b00b878605f1c125b2f4661ac5f6484cda4d89d656f875644e0f811105a5b5ab72da54dedf53ce17600cc06f109bc6bb4eb9ca7de58cfa560237efc866466beca57bddc37fcfaa48266e9c7557b05c81a370a3766f56502742131fe61e10eb0be8b99f7a9c8babebb6092bb089d97e4a7508bef67ebb16772ec18001de1847488e7618333d639c9c01ecce08f57b1f6418a77e4b1f63d481c255597adb9fad0db4ee23223ad5c66a6a787c39b10e53e1af1c13cee1932cf575f013a0fd38a600a6e2e12169806c6b4cee1e2d0ac453ce5b9cdf035a70fb8daa3533c1271059d6ae6a6732af8b6191ddc1b91ff14ebc016b987ca6e980221908ef09f55db2fd00cc2d017a1cd5b3f02aece406e391f1951de9c0f1774721d865439c4637ca00bc39a545d89acff777f2fc15e16a3b148dcaeda4a1818636255495bb2b05a00fa63999962037323ff73dabea335f4a36e999506ce4b406e8bfbf4270f47b8d639c2592e268c2c82b00f8009ef1d2995c462509424425916c9e6e68028f2280927bb533f89e62261157ec1691cc985830bbc886f415cddb08c8343afe27d98678ea64eb568dacf5338267d0bf6a836d9be91f101fa2905008bba8973db6a00b0a518cfedaea06bf8719a5d6cbf89542c07d81631652465a11aed1478983af56b436911819e8fc8014b17a6914bd4fb3988debfc1e55d9138a0b79e5babca1c49746cb528c4002df3a6b39b6c851f1a224b85263914e542c951c62d71ce9ec13290abde3da2296dad1567e24306d9b84194e390347c243d87cb1d9d240a902140af2fefe066748c430b910fe9dbcabf21ad6e59e358b6be6e2a32d542e9a9d65a819735bca549e87c3466b59b12f122a5bf0b9c7107816d6afb78fd067d7f20cd51b51b07349da96dc335889f8d2963b06238883db3a92bad7349ed3989eee5b22a1c98b8abcf3e84ddc4faf8e7780e2196eb74ff3c554238583dd69390412e0831caedb0dd269b26d4251264e218c2855119ce35e2fcef52b095aba3dd1041210460f71a45d1d6886790b32db39f9a2e965de6615ee317e60ba1029842ee50a7b6f2d6bc9b05b6dc9eda45be26a37ca8e4a019626899a3bb56d5a223c922099a8a3c27ca70291356ad9fc3a0e2e8a285a770718639c78371e7bc6b71c5d940e6a4b9f1572a0fb1c579fe589b7eea166783a7476870543a5b6caf720ebeb529816f5e6083227ab5d7a0acf02cac62397fe522ec74a0b07cf112418cb42a20eee6f3b8ba6984d98a4e904311a3b605638e9120a2b7509eb63832ec2840caa6735345550fbaf2286d4e5733f8662c7789201d99a11f4ebb17156a3e64bdadfbb380c3d5c86e5e27eda1042b4aac68953415bc2351b9134990594f1a0cd2cb5c7f7c4dcb3a0be5f81800b97701f160c7e7612221764f6820900e76408623d187a1a30ea51f84da9126b36ecb31a9c7e8bc9c212683d32c7eef8caeecec1749cf0e4f244fdaaf330886192e4b9747c5957a312abb0bcc14ec1dbd9dbb44e3300d24849c0b204337b18eb00836fdde5e6e68bb5113083f2c217fec32024213afcae0c5b29356dbff0b8cc81827311be40eab7b702b827db86c904d9095c6f30fc67754835325d78ae36d4e1779a2f0cdedee110176ed0e33b914953d79be4ff193ae69004a7664bac0912aa961f3111cee9ecd6c002dcd769f9ebdde12745fad7bbb6dd6c4f628ba81fa06b435d8fcc2bab96b4f2c9875a1126b41b1352072ece932466f5d391dc67b04e9ad54088aa1b7778f41d77b9e8bab2bca85c8f1724163d8564683284e2d7480e5fc0eaf0d1edacb79a9643c08695cf508280f1f51f63263efdc398c35927d9786260515172ec8676470283c1f1c58dc3ef20cd623cbd6a4b7862183fbd1784c0e808eebbc5db1cbb5452b065a35f4f3519e0cca868716b37f303ed85a81324204bed47576944f98dcc7466b62235834c2e30a7bca22fb7434b54274ec5a8c9541068778509c9e7eb69ac6b33eeed5af071f4a230f0c973f2f041e55a187c6ba462cc0243b5b81c71a41acf147f9809d58494331a2919781f358219e796fed5e86ec64ca7df12727370ad7ab9823553ce4986052907dca548aa69633b18c4f3bfd81d50ae89105f0d9f507a39ac9309909204dd0cc3e4279f4bcba63efb8c01fffba8a9a10d09d3fb50ae788260e099d897af4e4dbaae3eb47cc7b2c3d1e44c1abf5c4eb0618e52b9e76ea0c974742a86998eb24658e336082a06d68186f8d93d71ef84ec5f452a171243594875d63ea6684dcc0b10f44414e200add624c378bf4e0ba8fa3aa7b6d6b6d89119779a005e3c15e891e30269d218e11c142534a5a76e9d06cda843e5503e0aee9d8694247bd792593244ec0ad3406a5d0ff1064ff8f4cb0ae80c563c0c8ac64ad25c4be48e925bda086662563a5c03e0a47d94335b540364469dea20674b598ebfa5f79797d8f407027869510157cd907d2788584a18f46d343dc4184a0dba002222d09571ddd6cc2f840b8c9bb27480f210a803acd14b89bdee539b1f3dc07847cecb5060a7fbb5e5a743d09ac5c76bbc3d8565e242435aaf5fcf6d253172b9a69b59e22dbcccf2df9eb7c111d383f8a4347fa10be1f5471427a8e006a5ba9007ae36ecf4b4c5d50c81ff924bc0fc8bf9187c2900ca35554b1d5008a422a05852781887488f78bf3a289c654b0efa8f5d163ba081ddf657027436728d79b4085f046d991343c1b9f9e78f44233e1a6e830e478bd424f82d4c58e5a3fb6790ca6abbecdb51f9b9c6a2a334abc901acf76ea5303b3cb883997f457189978cd07bc4c442ab5c09c68cc147168d8ff9a6cf6afc44a450b47c0b4a880518b4434149c96bafa37f21bfaff5933c4cc2437e199caa81189eba414048d716af32508adde658b60b1371d25e36b6ec14f1478c169c3605ac5884c4749f93713e5119adf3ebb76c610df25d1385339ef203b535aea918405e05deab3920b9799dbd39eaa2ac011bb1a02b311f1af11d42047545b8b83d844061ead15a08c52cb99de9b3bc86e4cb0fed13d15b510eec402e409583a440142b294e4d269ba97ce6260ffc204427b52285ec002ece9cc2153964eadf8068e637ffffe191977da1079fa9e4bc018bbe86ccab42e68ecd8cd96a10a5384185f7141bf9b351362182161f9bc38d1c13cd5de2a885097c780d4631914e7156bd1a03d11ff5ccccc41321c67860ec5cea50ccc46d193c3afcfa85aff237a2dd631547e5c4a18368c60265be0aeb6313b6386c3ae7eacbdab5a821760b0cd06040d5e07198263a6852b18ab4b9ae154e37412ef1b661053915baf36b2398fc1deadc056633fe9719d13d56f6cfa2a738f84f5d1d20f5bd95d2b87445b5bc76c9814f126bb21a1cb116d7049bcff59bd117e6532d23261c73ea653ae0dbde37109fdfb60705c18983646ec2824f0ba47c4f6097be94919d745fa09ef448983f8eafbd6464bfd6e19ff02f239a877312d334279e226698834fedabacc49ccdb0537f2b89412c26997b658908873dd82da6d029728c189708cd3f17d84aaf4c67f8c94acb980a2d76d55cdd66700a6123a579da28faa012cac448f33f0dc2489d14c707428cc18f19e3899a6a8750a17d447061ee76031e6f246b8bfed106b520146b62bf861848d0fcd95c530bba72f38baf4ea18c4841462eb5c8887295cc975f22f141e9fe3324ce0d81a57e1d692ac1c92fceb01ba6f3e5bbe0a47a01f92cd091c908bc64d5ba04639d677ec9e9e0be5c9ca087c25e8c6da1f855ef79b252230d188ce21c579e38c6d777969d9e7d77118d3cbb0644889531f95f73fb2c4c48ea2a247b408ed13ece148ca8e8b83eee7096bbf4bb0a21388262ab5e425f1f0659aceadcc746752623c882e3e477ccd7512e646dde546f8460c7174d64899d661c403688698e93a1b37ded316179c58caf2376143f864d8c4e7cc3a0499f29868fc636a8d69950d629322f25c33b57c95d14f34bb1b0f8d579b93b17ab6104c8a98e14570ef4a7ece820896fd47c6d03b2625531f03e9134704e322d28423f7c69e91f463bb522ef899674cf0df291d3bd9c2bd495ecf4fe2de834cfb19a6946fde4a2a8b7f463b85b229e9a02b78df0ac2ee58b94da4867416453b0d5f314b797f69a1ef5115095b39a294a3e1c155b0ec7a1ac39f03588227f5cf0f2772f2dd9f134e522e0d36aa4a78d3c2d9958c04265c39a6d7acedfc08ca0bef173aef91868d419e13288e7d585d209a33d101e6ddb2e934c0f52f26ea2c53a683ddfeca9826f04d79a733612343368dc5765123635836f7292205107f76d97e8d2b7b852ef0e57e4a90ee123c13083ca8fe83263b1d02e58e4ec0713118b889ff3ad4b9ef396a664d7101440847dd00620d1c83a6b5b757851d1ea2dd742e7b4d7564534f05d0749fab2fa355bf2287bda357a87068686a3ce85583fa61d54f412540aadbda44fa2c727892e31f2fb1450f160c07836dba8d86068fc682a4cfba00a0db4863a36dc85195ec33c28ebeda24462682a0900fe0923d45dc9bad081b3170161d0f77c4de555381532403e7fad998131180ddfa640b70d3c2ac2860fe1dba15ba53bcaf7336340e37404413726aceec4cf8a8d55ce6dbd88e9c5fc5eafa8a5a3d0e1aa2e354b5d96558d338f0f3e7f9ac45af0c5d6a6e6af1291a79aff282f3815dc553347feab65eb898f566e7012ff642b4ad4b0056f2ab11d299ecaf7ea2d0b4ddaa2061a6b6cc63b97ee74bdbe5cab9eb61209274b1f26c5a69f5da16903a559b456711a6b4d3b3c8f5040b3d491ef4d6b6f01d935a6747e16af8a469ec662b198ea4e415d1346513342e73a455cc6d08b9e19d69d04b3515ac1d385269d083555d35d8ba2ad32121d2190eedc23a71ef453519fdb5bc7180f0118d1b357bb3007b5f2a6176ddc34c8d245b495f42b6d2ba79f89f96280dd193bbae5246daf03d4c841fa5e68cd9a66f408594d34d029458e8524b7e9b335d4a888abba195c9a286bd0a9279c10decad48f1f13a354424795afaa8dce1c3d60f5af15ae041ad6cde612c8e5ad9e7651506917045897507735255723aebc7069c5d502980a1bd870c3da87eda8fcbc86febb83d52409ae064298439aa65b66b0a2ebc5c222a09b747b08916bea82ce1395a8156f80f05ba8a6df96e319b491ca5a566eda1568c308637f6818d8cdec931596c19dec5391f5b3918234597152c6b5e052bdbea3c720ed53bb3c1a3624ca8e678a162c324b18f6b97b72a22dcc5ab8f4d1a8136ce0b8b5eafc00ebf2408173218b6e59d5276952b29d242f456aa34112e75f2e14451f8d51cfc96fad71a4aaf2bceea2432c1ca83b52a542b95e752cd370a998452a381402fa1c83b06f70dbbaec07eff4195ff373151691f5e630b7a62532dc9bf8304f3f3e13ddf339d3b09ce79f8be232205961faf0900a98a254d6423c384336a50d7f18f89a26a3b9a7c60d1cf2d28845779f6215c3304a83d24d8c35863da1de17097dd7fba869666e3acab6cbef2dfcbbc15e1f9e567d87267d2010519ccca3a015fd0a65bbd67717d9560d60f954aa6fe8e4184a4ada215c31203870ee758adca65f27c7d1bf422ddab119c0a067a86b73701314c0e897630710d4c13929a1d58ca89fa3cd257dcd573f749178279270a7f86f023df8994f23b4153be4a03c9208aa7a5a72146901099e32db45aa04b64a51c69bf3c8288a614dd626ac9f3aac2083f82eeb21f6b17e8fc116410930bc4a29560f765f12e70355ff536f24ea19a99e2c144b3b786fe8b404a1cff2a56212c3ce2be900a368c2439f4a83ef2ff70aaf0cd9613164cb76848a5ff93e6e30acdbe21c391a712ae3a059f99303d916771ea07f06ace68471d795cf9aeda8269709bd8443011c9c46124c67a521102289205200b222d29661bb0365b8960435ec1279e7ebed3cdfef8ad4ea852abd31a73aa7e3ab2fbbe5dc5cd2e440243b9d85375b43480a01607409f1fe62737ce509908b7c99a3a97ebaf728cb8940e6df97ae9bb57b857d88171b1fc9087920196ee0455bc36f08e0276305ded0b9b55ceae55a464e9aa125078eb1672e6a87e5b182c344d81c35dd0aa807aa5518eba0455507c29c16b3da0d9f1392d97f52713318b18c9e9a520fbe66ece0707578f9004f2960904281d14b19bf40aeef0ebda64c26e125c60024a90d14d5b40541aa5031536854363cf78aa37a8240194ea581e31fadf4315e4e71c6128d6b8c8ddb47c5abf67eff156a2eb17df07faff0d7f0542b179cd846ae4ba884fad0080161406dedccc3e9fba21371e3522c9de7bef2da54c49a62403ad04dc040f05446cb0cdf66c8fb6757bd8897b0d773a72b597215aed897adadc243d3dbf757bacc4e720e8934ac2357243e05f51536edb13b7de1eaec22640b168e4405b7a4eed82d11e50d80dbf04b2cabea2a38b6a3172245f5e52caea1920df052ee65de4c3bc2481f25773ce693d45e908d374188ddeaa34faa3d168f49546b7d1675a77c38e8f0bc39e7aecd23aeba9af28abaa2635e546c32baa82fa8b6bae8efed5f26fc630c71c45a29eca288aca18405d4f5114f52ed4c364da0b19b4bfaaaa0a7baba585f44f0712e9ad4b6b79128944fa4b6b21690fcadcb0e323fbeb71e0684435eb4799d6616ffd855d570cb5d1f08aae08024b4b97f2bddeee65ee0afce8ce4ff3a7f9e3fd67add669566a07799147f17dc9b2a73d9d4e273f9da0cd129d4e4bc4414e822c9a978321b641a753fc15ea929c54bf0946044d0923c663572808dad0bc997eca0b0a7f7ef54bc435f27d0ad5557a797aae8d90e7c27eabe50494a8a484b9a660d0b9bdd6b852da3bb255aa6f9dceb3b2526aff1231d7ff3244fde3cbde80bc191a26ca8c8522d1c373e3bdedbedceeeeeeeefeeeeeee1edd06c6b5b315eb750eac1793c5ab2b5655fdc478542e488b17dbb72c6b311e73ce4aa380164487b9fe110684b97eca0adda7fe61f319e3bf2e8c0733d7e0a761b51f3330d77f613ca84d06e61ae3b11b0fed18b8e6c5503d0eb434ea6fe6a4b4bad182ea601b2365e45ccfc3e75c1f8027b4aaaaea75aaaaaa369a576d67a3f66ec5433b6a5100cb4b15f46bb8f6fcd57098b3361dccb5d0834259a17173ae82105f74403b5ae15378590f6b1cd0fe8ebe8c41ab875f9a0fe7c6d8dddd1e638cd1dd3fba8cb1bd713045eb629eaf3b650ef2f3af1816c3d5fa2d1e3ace5caabcbd9b85f5d8a62951a93a5f2ce3b307b4217f33bf8b39f71724d07ede615dc2a6f07b64a4dfd63577bfec7e7e330d17de60080441f50d7d800c9afa869028a9706edd7b4f46e66dbfe0a00d8e27d35f45ed7e17b295196e3aac962b656f3a98eb9b161f0a9f6f186e3698e35e8ed071af8abf60bea715d35eed30faefe78fb418a61b0765e6cf6dfe807637f1e12886736100d774ef0217f32e259851bf84419bb9f9f05fc6a0d4f6aaaaaaaeb74824faaf8e3ed374a0f42d4a233da5943ea591364afd68f410f3813df53830cbdefacc7a4cebaeb79eb22e8aaaac2d86b96a9b6ced456901b082428e991b0dafc85360bda6429bb91ab48bea42a05cd029d403540aea0417130c30c090734eac0653e816d4092a0595826a41a5a05b502de00728537d445044504bb13e222849f0583059683c79eb63359246d2484c2693c96432994c2693c96432994c2693c96432994c2693c96432994c549ba8363d2c0534f840c7996d9579f57541de6bce498b6877438b6811458b285a44d1228a1651b488ea23b4e82fad87d252e99fe3686e2ae4793347a89c0c01262c58b43b1c397204e3416e77479f3ef8e0c312aaa6aeedeeee28df83b24bdddeedded163cb17af86533235bdddbb7a148581b7b77bf7e370d3312ce83fd07dcf8fb8755d105e8f6b1ccba6a462e760592421926357d64247a496192d2e540866a920a987a1caf249c5279549e5c2a8606e51718b8a45251bcd1c6eb8e10631a8a832b2689c443368ba606dbaa8680635151c1c1c9ef182be933dbf99ec8ba00d33c7fd974a34a3827619fbf0122acb36cadc661ad74cebf685ac36d663543bb3966b7703d71a3d60ed8a5497bad5829566d680156e307b68d1cf9830a9d98f1e62b93ee3a9d95b61646f0d0d61a5d23a7a8b74655a571a4d2e0c7e0da3eb2d48311fd9c30c7ef696b57da66518d6c39a9161d715c33167837d7809d774a3273d0da3a7cfcf3e2f47cbf3f31156a6d530cabec507fd8caf2cfb87f5c89e3e0eb768af8e461b49a31a0da3cf7e622f5c9fbdc47a8cb612ef50e793345ec23e5868e73b40a3dfe19a8ce7e5b0de7d98180cf0adb75c3ed34cc07ac0b73618e6d66a1ff0af4c2bc15cdbcb7434e1ef20aea1c16a20ae81ffc22e71aa170cd7670f7b589ffdc34645d0c67a13aaf5d613a0e87a33d637a1a3ef6f816b073fd3ba42ec85511dbd45b5ab9eaad42784fa86863042b50070952e1a50d0fe97a701868667b05acbd045a3aac5513a0dde47a3b366ce7a0c6e3a345d006ac73e9d09ddac56e0a3c07a311d1d80d0ce15159608eb7084273b394510209473b10a5c7f82a0832c39dcd110592f8a8a8a728a9cc09353438626f22011139e7c71ca29322acae9c721471e814e2229b8e0c788500e9122720a50912e4290104d5def7d2ec6c8c115ca511efc1f14601b980284f051a9307a4d122acc79efbddd7e519e94fa4f66699eccee7737f3f5e3f63b0cd46bab8108dc8d62c9c20a030820f4e4ecff7839560a73db3f45db222bfb43f65f96d66414f4c78c3cf4559ecd916f848704e4c8ad06cfe6d4f0adc603e2cfed062764885b0db9d5f02d869c97b3dffd0c43a0ccbed4366ab49274a040b61fcced6756d0eeeb7e3f4187ec43baaf4a13590e2c78394f09b483a9fc9dce05537b081a03dafd338780bbc8a8a808cd8e1078729ca8d16371a830083eec68456e604112e4b38a5e452f22afe43c56a1bb5a23e204f5f38914e9974f6d3b45fa6f28b24361346f869f99233b435e666666666666666666ce89a5a902f545145a00e5406d2b10f40b888c1070114495a028188f143a2ab76e3120bea88fa8c749bda98f088825d5c8a91aa03e220f905183280aa268ae171ad0f8dd2cc1cc6aeb70a0a630379fd270600db2522e25e6a8c9e3050b7d933ed75055556dbb3e2f44a04f0ae92595dfda46421042471e15f50d0191a502d1d8a1fc38dcdd3d1fce9fd1a24d0cc239a5bea11f943092fa867a882a10579649ddf733341d5c5c5c5c5c5c5c9e8f961933fc67b468dddcbc5b4aa2605a2efa7efeab147c4a836f5114653d46bd456157900721c4fec1fd9196c2ab62690f0b193bd0adbd31f6b204066a61ab05bddddd53582f4bd8dded678a9aff74984f04879c39e79c0f356a9bd063640897d7590beba58c1725d057b191efadd321833936c2dc7b1a46286faeed15d6eb2add056dcb7a311d57a9fed632a1b41e3e59bb1a3b612186c2dcf2c72cd08627cd92613cfa338c472625c643525bbbd9c97c3e3989f4159f5ae03a370e7a33fed833e62ea5c4b61af3e753d95b332eec87d291564d226a6eb3d2ae96efe612f1897a8a4fdad6b9d14a73197d47399b8fc3d6a4b4bdc2dc17cc6161ce37d3b0c781d72f9090ae51846cd53609cbf85b1208c7356fe3a0d168d41344ebeec6edd81e29b4e3d30ee69c6af479f81cfa12e3b17067352755823e1122d4a2de6aaa1999ac829cf359a940a88d93dbc7f0d0ddb141cc759c3f07710df5d97c50aa5ba94e24a4b91d4002d3678897c38b1ae0c442517ba5a8dd5f01d3b399fd3a2f07974e4089a82d44eddda19f18b5dfb718de4c0d68f7aed8bca7c3fe4ba89299a4bb7b576414942bd5399f5b87ab3674825ca161aef9497f4b2cb0a2eadd6d33bfbb7aa08c6fa7239ecde41a25706ef1046d7c044fc6df9928f1fc6131741628e3a72c57e2c981aaff6c826e1cc1293e51fddf8b4b54ff7844f5f6676c7fb1788a4a98f3270941e1cf397bde8c9f4e5891c7e0e973f4a550315a64f801f781ec07e19a3945058ba8a0d09b820600e02b10cbfe66e19a3745103c7c8493700df64af8a062df5ca342c530ec29092af62e18132c157b18ae1940c5fec27860d7f516c6e38a522dcb4ac208d5caa25a4a0c55eb61b866562b09263f9fcdcba1aea8948ea113f4f0ed8e4410d5afa83e844495ea53aa0f2d09aa6e85ab020a9f9cfef9281432aca8f05de090097ea8b08aa1237a7819c50c5c806da543d34f8217e143c500957f4d40778acadf3e49882a87d12204698b0f0cd12202dab9b40841da826b49d29224dba9f14944507f2b13a2d2867a496d5bc4e2d9c8ebe57835cef72ad0466e9168ebe68c44dda83a9157f164e2c72936a8118ba21a1f08ca442650260ada45a2b842449d57a9f1671374a6a00aa297634b3ba831725163c4a2468fcf9a8d37137f85de4cfcd5aa9ae58076f16314aee9688aa4704d0dfcf8718a0c3112311785b9f8381ca518b48b44b1886b8862f7a5527ca14824a42b49081a896afc98ed6c08961ba6a0cd0065726057efed07730cb71b8ac2c3f184f214d68b89f10895c29cd4614ecaa7e4bf9cee3ae116842402da5b4fe922e6e46759d0ee2b6908dabd2b1c846bb8c61fdad427235f4a292517557e7783f366644743002f077cf9cd700473ceaa8823c81d1eca881c7e606187c88823474e469c7c6041071e238ef8c103558cf8e1c929a38a114d7858c841c808273db0e0811e26b2b89460a88bd737c4044fede86349a8baa0a3fa8692ec5c3ed01920b0aaa0334ca0023aa1b860403329ac312865453594440a122a065494d40a0a7ad5379484074f2855df5012309ea05edf501224548e893963381b434b00757d434bfc84418bf0a2fadbf04fe146c7ae0017e341bdbcaae7dcdddddd5d7361074bdca9f738e9c29ccf29b47a3bf4c282610e3e0ee7ec2e33f60284d188f56262accb06cbfec9bc15f60da011e0ddd83f8167264461ed7a61dcba1f95c35aa89ab116bcfaf6de4c1753b91aab4d4873357e8dfd965d63b7491201bda161ae3fcba225fb0f3d3f58c02e788200bf9983414f1034c052839f2c64fc507102240421112c82538a80b218018a11b8a6ebfe24c8d881108be6f37282425c132310bf6429a38cccd1e463836562a0ccfb257ee89179df8df64d487c1b662d410d3073b7303894e06c9f42080a14274e9c043971d2a44913a0264d7e7e7eca60d24e7aef0d29f9a970eb6c60c8da1b52b2a416611c20ef890a274c05871414a23494fa9ed4fd86519a803658f2d344a6eee28052aa25507e9a38b9aa4dc9e573317d620938e5c4350dbda01d4d55c24e5e0e7f6a09e9a7769357c542325d962aedac380cb549f94bfccf9160522a0aa2a6288aa2a00fb30d50026a488a25345a7d4344b0a062f50d49812489d902eff1017a6f8804427589a86fe88465b10b423882d76894c54ce30a77576ecd6426b56eae2531488009b95e5728fced7a59f6d95b188f2c5219b30b423882d768748d62a85d062bac85aecd1c84ef3d2a5478360d142dce5c7c07caf097465b57a2d41b685e9bf4e9a2efa22adb341dcced4e96f94e16bf2fbcf098b3616b89396605c0c91a8d21baff485bd07d48f466ded3c2a29aa226355b93d2a35fb088b7ccbb1aa03176473963ecee28e3c3b809990c35f0989a1dfd751671bba1ccbd8ff38180963e26ca3ec25c6cb9c1bc17d235be0763a3c27f1d4df4878cb9a073557f31f04a942b254b5e22bbbb5b6481ee727733776fdcee8dbcccdd71b7d79b87b90c073c1bcadda5cbed6a8365200603941c58587bb48c1de876866fc6ddf9cdecc31bfa3967fb66b65acefb6267afe31111f817c3959999999999f93167ef21b9400d12b0823c995c74ee7951970d93aa3430a9cd40e5e9ecd4a46036501906a6e445b0c0964a302ec8102314a5e43c5c73a45461a908b4db9d51af1119f018dde743c263747f93bed70da9350cd9ae15f868f78d36f4c9f0773035ff387e51bb1ef738fee54ea7eeeeeeeee3ab87f529714de4187d29002184998d4a5d4a301a035866cb4a258cd2292ee078dc0158a8fcd0725ea1eee3783774ec8038decc7e8eae05cb6fdecc7638aa022a3ffc01a10b154e99bf23886f7408ce8e924be9f2d853899e73faf4e9c365ddf73964d97d3b5059fa4a67ef37b32eb7f8da89625ec494980f311fb4ca870152e5c32fc5adc41c941b8ce6639997f70a9bb78028657422b4b8dd171ce2056f8cb0c361fbc1e802ebc3fa049c4f1fd4dd638c4eb90b91313ae53142eaa1c72f519b4bd992e59c326edc32d09157648801c77134343737ad843e717f4c0c33d8e8747042445264f4e6e9235d7c7dbdbd63a15def740f12ecbb2ea5948bc1f0acd4b8b910bacbbcbbcbccbbbbccbbfcbccbcb4378b2a574e91dafebc9ecbb5098d2f793591b6a436803b7669c53ce1cd7de939910feb03b7ee3373a82d8b0034208a1735c630372f0444fc886a0dd0dce0915be8e135e8ed7833975f629d1deb135b8cb8eb10f4d498a9ab0e90591f0e8ec8295246f695f5005b163f4e8fd3a8efba13c611713f8e75f43cac8cccccccc2ca3bf187eafc4f4e2913ca0fcd637e0fd42b83dfcd6ba98fa989b5b80e943f7bb1a2d787d6f86ab5bb103c2ee6eadbddb77b2ec86eeeededdedee1ee5e41578b7bd21dd79055ede1b5dd3eedd30ba3ff727b91b76c730a7ad1483eec7f480ee47777f0168eddeb0e2972fe82e04d294524acd39a947a23419147068dbd2bbbba1dfc06f00b988436f7fbcdb446055551977f764b231345913743fd3c1332109cbb0bd7a4fa09470a0501f3f1a8dee76772fa5944649cd39a9f742a23a4d06051c55863e1918c8a7a1b6b969d5a37fb7c5702ffdae79839dddadefb8767c37e69028b11e5c63ec000cd80b5dbb6155551993289af738f7f6b9448fbfb4981b2122fecdb016621de580eed3c05289d20ceb412da7d88589eb875ef50dfd1ca1557d433f455438f811a20c4aeb1bfad9e1e2a2892c2d3481a5899d21acee9a863b98e30dbec37e0fbe079b7985f71dbf96b337de7f57dfccebad9b99b5fa98396382eef2635f120fceb97b3bf172a06057e8f75fd3abc0b3a1814174dcddddfd3708733e03f60405b2fd602e880edbd021d0c6df0ff4e548298220824f4e47eb15d3ac8dde0c63200873fe5916b41b05798e66f4727096dba8f48d3864b56444230000005315000028100a8703e29058281285da30fc14800d758e42764c1a4b84590ec338888228861000083100006000000619830c6d0500fca2db39ec721bf411faa0b8bb69aaa87b6bc3a99e4699d70facadc8b4616f7113492b7503dd3da74431268af1c661f8d3e1bae4c43b751c1669c33c4243dc01b7f53a5a4b8eef2dc2acc9a57c4e103f1f2389a74ee8d881fbd23a19a4024e6881c96a62da8d1069ffa56c541cbb67bbe5b15378a45f0b1d946d860fb8092eb589ad785ff5e47f5de907924aad70adb3de209e804ebc2052eb04ba6587c48af12280f30d2233134af76b38a7ff91d1c9f69e384f096b9478e9e7d4d4444ef54e810a7e3723f7adbd69dbca545c16685225dc3f51811fd48d8155d3cb4e89678c0260c3cc88861ef347314246c69c4dd6ca6c2460df564b1c0012648b15dd1a8dc38a4796864649c0881ebad56f02d7b7cd72f7b511453e4a3988b912975d8d67c6c2e28cc0c5f0b402608eb82acdc8f4b7c5bc01c2ee479cc9e60872eeb8f26b1b5ac2014680f2d2ebbe31b5e4a4a08ff0a2c97f4e563e3ecabb21869f3237294c2af8088dda475ea5e0b8302c738e5a8ac5eaadd4e263e4cd2c8047ca3f752b66ec492827801c637adff41981671570f19828fe8ffb96691be071ca394b2c2059b9cd611e8f3ec496fb587777af4f14082b01c9935414ff25ff5598f64ce5fc7bd6b345f944286dc84aac04144657430c9168328910150a7da522d937b67b3036c089673fb74eafd9ece319a6a35f417622137095c5cdd8af787d9c6dac095e0b4641b493d36180c475b6ec156e3036e5a9333fdd33168e7e25978fbe535fc3065ae9d035d90c10845c5965f562e8e69e2bf4c091789ba4d47d05cd21a68122b7ceb1c4ce0445c7544a64786d351a886f401531d5a62bdfef52130c76b5cbfb5398268045b60b4ad559caca55b57f5823273c18b79885fc311a408472733c2a01b4f20e4680b1840d7bf592b93af767440ad3dc76f7c772af41b38a91ecf541e44e0dda555bbeb760e660bed4fe9ee8a3abedf3f1bf9751df7500cb758df1b9121b3d10eb901fc2dc46cdd516659824c7b4b8a7d5fc0f9c75a2b02c7de3ffe894cd90de0b05dc3ce9608e39b5dba3cf66fbd081dc1064004db9e494714780c142c649cd65f4e4c461a79b91a0bf6394d379017473acd2bf28ba393238ba2e762a7a9e6977a72cc71f173c0bfd18a2edb00789477aa27db4780282c8aa484b7fd40aabdf2de4b24c7958dc12390c9b57a280cca9766ae27e04287d5f5832e5fd62ca2aff7a7cd4957426339fc3cc4033693ce6cdda24a18ca363d4251091325f62fd8bb931d7c4b7cda91c137b39d37f4079c06d6ac89f3cdaa757f85ee9270e226c4673180377f986cf3647d22c9102c0040516e93d1e74c10693d3bfc1b4f94aaac2f26d5965066951ee26e74ded6a29740d9466a6ddc4fccbb9994bb09b50fafcc4098dd6835aa0825950ce627b2334466a15d155bb1d48e9e6264f68a00eb92bb811e77041df16ebe38d4ee5490061c24b5311f6a30feecb655a5c33de247ec88f974f37f7d602f3cf0edad7aac3fcd3530733dcf55a2894fd3e495ee8f30b7a02421fff222bade8a874ee0afb507a827011a18d9063b46b1e9ac8e3a3318b8392004f6a7a5b3e9072efe219ea434a8f0931f4f81010b90be1d8fbef757437d5ac17eaecf2d421e4b4e70a19cc812336b88fce22022c90d5fb48810576792e8fd29d1a4310a0de300072b58d140d4b2793b2f942d1543f4eda42f121854302fcda1f19a6b5f38ece4660db02657d226d3aab5f8b3f7e9183a97d431c0efa548f6c8a6fc3baada33f93b899280ce287aca4eb51560d2c7680659d41711358c7fc8ba7d1a3b4ea8f1ba0b003e9e4246141ae6fc3cab86f5c3fd090f4888d39ca6fbe9b95dfe1fcccfdf1ea0ab5d86e17642d4c28b91b6e16defefcb0a387d84001990e7e901ca1c1b673902e0294d0b8b54c2a6674df52678571fa3954998a58fcdc80cedda227690c64307ad36e6faca97080dc9b7a20d2249ec0b52be3eeab07bb1fe9d39f8203a8e0901974b352f51536769bbe9af50340101390deee8e4dfd733c96a4e41010be774933550600f1187a74cddfa11b04daec945cff457857b98e0b7e810ca8600d7eddbbfebca2decb553fb1ca27cc42e3de64ab345695fc4e4300ebc714911061500214c130118f350ad35f4efb5b8bb9a5607fdb69af73ecdad46397c858173f4d8b76942230f63982deaf8f006868ff04e4d6bfc7292c75f4c6bf12dc02120df3f6b1a319bccd953e0e89a20405b35e61cfeb9b2d12072e8a032e751d4fa807211569477b30d9f042cdbf8b7492dd06c92d83119144ed52a77eccb3105d268baae0436b048f779f243c130174971a1593c45b7ae0ba69c4862cf1d8a5c891213a963d189d8ba7979b6d188b10a9311ce84bcb0c4a722147ef930a99efa7e811daa857fe3cc2dee922fdaa058a4633d886f5edaa70bc01b19289f6a8056c9220cc0cfa185b00783e6a6e0b74e9db6e06a56cd5204c8067c2a8c66b183001a57cf65cb7cdbcc7a68f1f0278cd416a57983d4aae02d3c145a6734355bf2c8145cb041b2a4dca4f3725b2aac207ab7257264804e26541b11fb3c0314ecab2a3ff4db83358debe7ec5c3a929975500b57c0538789350a9a35e118d75c88ecee2379c015c878e5714b997922a39935b2b691a8e5ee3f6b292442e704daa10bebb63f3c62e6a856e377ebbb542dff42854dda2aadca71885b6c2731fbc5e942f859101baf4154d0f8bf8e454a6e14e24da40b095b284d8df4f57cc20fb6b3958cb29e095af57d596ce6f16ceb0feeb6b6b7d1e64454e610d653eb6569441742284409811b4bd10f6256f0ac68b92671943f4ed6f9cbaff92fcfc146b7c69baf4dca7a11ab0dd6ef7a5befb76f7e72d64c9864ed7513e75bd5ffe236dbfad3af029da50c9a0416c3d608fbf2ad566ed05dc7590d21fe67e8c351537503dfa13ef1f0a3e44244577a5bd6bee454ecce90165be2736991e7b24052166c17b0c04caf30305df4379510aa8d7e23289202f6ad7f1aba9481568cc82d7c8aec34250745c4c54f81019291f91aadff1163b4a856038eec0f636c90fa19bff133fe53d45a89139b0e065ac361c8f58a7a8d89c7276e0dcc507367b8b9281f5017017a6599606dbd0d181b71d72185a3b21daf46b73d52db88cea842d1cf94cae0ae43ac2a7b4769cb9f18adf0283bddc976412b2ecf1364f83154c636ae5ced4a72e2bbf427748dc940f6bbf505423bd7754e3d45e10e8932cf3e8ce66fe620b26c072d42ff5f1707be207e533c4833b24d175924d0f3bb2efd711536ffca6038b2f59e26e5161fa8edc20bace8e7a84022d613d5bf49cf3346cce9763504f4aef48cce8bc7b4feae5b793e7e17c29bcd9ac69b9c9f58e2a8507c3c0c39bd7b6229d555aa5ef38762531641658215bb520023e66af4d82f69f1e0bfb7a8b9e142ed2f39690986b2008001f751da33883a55a17bbd538df24603cbbc5027ac98503b9e7db7f6042f1e8a4f7fc1b3d425c4fc9ed450182922df047576490312bfdeb79a842be13ed221c5d12875ad1aba2203b3a859d3b230df8b9382860b646566946b0487ce451d02d37f6a4305569a0cb63aba976491545b288523f8f3cacbaddf361a55b19f7164f16e7d36a9ac76d0343175dff5f68568bbf41d2db82620b05b992969bcb2ff36cad7485319ee015decd9006cc734b2170983429b90f3248aeab3957cc4758b3810c7b7a8e58c85e47d9cef26bc16096dac93479874cc0661cfd632c9b02b1fc10dad9f0668e29b798bd959bbc94284796ecdaa0b41478aeb9d812245aa60a3638ba70845aedbf1e1cbdb4e3a8d6e6a886f64a62652989ba6d98133ebbd9fe0d98640762a018b11d0898fe6734e8bb59bbb0ec6602e29796cd8052f849181d79362cfb88e8c4efc8869fa5acccc3f72cb1112eb867b85bca7de746843208478acdb8fa438e33f0a7084ee33d4432d41157790969054272d1fc91f6904f47c954faac0fe68da7395ec037b8b9c1cb590ece3933f02fb081585feab1fca6763a416ce7f23af8bf860ecad886719ab9b5002ae5f3dba51632d12872b95ad015cd7a5cbc29db1af563b6064c6d1f96f2b7fa83baeabff5ccca54515120f4f3165c101814871c9774a68a17bd96c97cbde5d9127f19004202c002501f28d2eb9beda57cc6c44874aec83c0f63aa0d5d6c41865555e63ca8102470b5b8929d4ae00fd10714c05347aa36318642394a479f65b6bf7e145538547962ceb24ffb88249f77f09865be61fd891ddbeb5b5208af8f632b03e913b14fc537eb1447f76d6a4fa982d3a923d85a6b8e4c50891de9c2541530fc7225e5fa98e79ee484b2cc4cfbe95cb8b206d020dae738c140ad7ca67625d958cd2bddc795660ec6263b767fa89de88ebdd41e17a1a6de0cb08e27328e27a4f3f1584a552b5cedf993e4e5496967be2afbe6c9fd678f64ab026090a2fcf835a2509f7fe6294096e1ca1d779f319c42e8461619e54b069b536a3dd9526311a57e8f90fc201156da302602598ad646a62c1e58dad4cf68b95617b1351be94eda022fcc6c9200915cae4a9c8f89d939db38752c0d548bc1a7d21654cc8fe3011c65b7731b35bc91432dd4dc5d46a9032d7bbb1fc1d978aa73400b5a06ae8ab2146977401aa05af4a250d38ef304a89f808cd3699f21e169efb240cc1fec9f294d351c3a14e8863465bbf082440be0492ab7b1367d4a37dc3a8a7627c966c42e993d492eee6247389ba1a71d7a4d7730d6997207fd0fcce99edce9288a107a2b8c5e161484ba0702f60a0f3d9002890bbb1038a0e223ba83a97e6cf98505bdc9bd4bb713e1b72f62dbbc78a25499488986fc7638c3e67d3acc6154bdfe88e883415ed9ecb489840a1c4f07ffed2ebe883a8006afe3c2a7873711356ca4a71ecad67a040c7c9578c495f52d738471a31b58de0a7e3d0eae5674d3e39389c24d996438cfe7f4cc9a7fa7109edcadded9710be7b4e58ac4fe669ec16a13a5f02d267e4a282ea16a91cf9d7806a278049550908f9a888d6062117102fe4dace9d2c31d5755ac2e4a2e08de712a50a3580f456d820bb4984c60f7dfa5e654998476a84cb0d23b315f410ff5c5677db5f6a8f443c23a78b2d2a286228562bd7c38899e3bdf045fe9bb6af5736f57fd1ff5c2b66501661be2c8f28d2ad5609eb5f1a6f64faee7867adbc6aeb818efec690c7859c0b8c1ea647f44ee7c96983c750dd49d8081cac291f603c9ba714a74e7a129d5d953900a5f4852d6e45852556efff2d8e95f959bea5c7525d3a7b071e83b8a87fd82db67e7cb917428ade67dc6941dab6e27b39463bb5a194ed44158a92c3be279ee3df334093a454b11924c670f92a33c15550e9fe9e70fd8a21a8fc965b1638e569f4dd954302579b1588f08110757beaa50712340ab1037c8ac235ffc464317ffcc623133c0404bdf5e20aac23b30d80b6c4ce696f491154e4e47c966210879faff30aac2963f23065e50f128fd4385a9bdaa7d09d9db3c347f8c40430658181b419cf91b7c2ce5f2ca383d0f0d224233c0e0ce770b5ac9e71f712fa59b5b0547eddf2d64d22fa2275605ad0f062a89a51867699ff995a768d0dbd2cc69d3f38bb6e4939af59763ce4a85666273c05ee99445e557048411bb3a19c33cd45267b8285cc438d8d2a6b147c7300da026aa463df28f596bb5911dccee7f456bf78ec18ce820def694714eda3526918243a164031acfa70c5c303dd828e5189551cad7e451b41dae3bd4e377917ca2a95b4f92f3903c59e0b3053077565b2f588f865bb5556e8a8c1615d737712447b2f9723e57b2214893e2cefc2a5d8b20d78eb5c6a92fd23bf31c8e7407c254323dab6c880588166efe514c9bfab429a33a46f1cbd8e2c084ee8c24bfb9d1c9896a6473a3a686f0743b7d5ab378f098412acb8a016bc03f985dd3cde91f135b2305632d0f4687daae47b5255de545861eb3b20f5c40e0181c33dd2504b818352afd6bac1d28a681284428e66f3420497ffcefe20682924d1cf04477118820a2df79d84b2d6f35b43c6bda341a4b66bf276ccc31f5faab216420947e59399c148fd0a99a3d9a9049a6a649d4ccc6d643935106c5d5b2920b6364c730c6d210fd754cc0dd6f1a1fe385ae403cffd8c9bab5bb69ce52bc1090a445d0cd36171f8ca3bebab9c5c6c0b62eeaa93128fabbd122290302ba092c7da53917531165601f7427344cb1f90759c4a65a84394e74dd8c7803b85a27bcdd255230d5823f9832f14906914cb70dba193aa74f832112dab8111652c6ac630f3d6becf4296d673c8bdc6afe409753ce6175809e70b0f933cf1acf6c7ae85cc68df541f24ddc5c29611d3ed5b4a26976ec518de28218c08ae64f08a966282342377ffceeaa26fc117bf92b53abf48ad012ddb17832b5c4e2d964c763b705387e01694eced1b2d61b73a7817dd984f775e64983ee15b76a904ed659d35ea825e45c4c6266d3c2113bee94c60c325d7d4a425746f03113e8ebc04206159235cb266bf61a90e908bd7de5e8adca81273baa5e051968b2ae052212995e4c6632dbb8e86a00368b9ccbfa73648dd7e2e556c246cd7d89057f010190ca84b0e0f8274402e0bb0c609ad01843b441652920d56d4258ada457616b89f19a1d3fd7333164e0c0c5b5ccd368bbd932c20f882fa7dc634b98b8c4d6240f503e476ad7b71e582e24e26637fb841e5857b648aa25e35f2c45f0d65ed534868cdf6201322c6bac5722731d4ae9507d1a2909f5570aede40c06857e8a9e260d565920b722a2eff47641b7b6cad7ab42e8af57426a5a12e41de370da6b1fc06dfac9e257edecfa18d59d27a00a7bf11abfe316b12f682511e53ac7cb02d839e7a6ec9c13d5c2a9b93d9ede1471b3124f1bab3a5752c704f6df86b9f76b275bfffa8af3ad3fed05c609564ab3d70c0ce712531c88c7decfd741954f28595776654e294d143fbd70dfb19d19301b7991f30ec31a6f696c0c06302f14ef596d57590825cafa68016577e1df871f95fbb5580895fa1a65c042a84e1cbd1f9465003169d790a802684f4d25538d4f7906bf6dae0b3aad83d269645e64bf8c6e06900f8dc1f0ed7a79c1b6019163af7c2cc90cf917ccef5f114dc6cd97c5137e6099d941959cf649d421885870731db414029db4d242ec68f5c964c63e0d254a731d14152dc3a8f885818773d714af8375c1c2d7db1a9532d4cc1746ab14622a75f5131cded293558243a22e0939133212c16550bd00926759688db5c2cab6666822a99051524decd19c0f2f060bfa48007f54d1ecc662152b6fb9d71d265a48025ee742a3f6c6320378c4740087aa05fef3542b6856d48c950b3c635c40c2cb4bd2384e66b93ccca08be5abf1f5111a59540b95d002548f468b28a8792778c71eafeffa27ac448b7b8ebd50eb6fe6a0e5df021b35112ec41bf3eb424fd2a1bb0fa025e11da9d96987da677b08654569349fa4f7c6b59319b1c0a6c49fc05aa8316ccd447915749c27095ecf48168b762c02ab5cb7acb5cf9a04aec12e60fc6f59cd2e906a584925d2e8e1e9f50e5d9bfd03190bb1e0510cc664e168d9b739a3a29f116754b53af9013fa3365b8262c506950eb42ae53aa57406dafeeb2e699b773879c191490f2511d5e42b03f0fb5cc0896bc5d3e31f0484ff52a0679512d0dfc23f1bef9d2e06a544454069473f18b7b0de9437caa70e91fb4cddacefba0004f4687f0630ec7165803873761efa334dd3dd20fdd7f431fa9663a74570eef2a5efcf42cbcd0323531e93c42007a3c397f226366443abf342992fdf5433b720eafe16227931b243f190ae08a7f01461b74b689a593474b96a1d44b463c1394df0aa966e81090d2a7a5dd0ca850dfd700462deae0f43b094c8927f202a2e930d2ff53a9fb0df38874389d5333bffd078411f42c9fc52bd77a111f6fc30c6872c7ce5267cf7a413d5e38bbaf6a727f980b8edec37fef70726e310188cfb97e9deb0d28550a5d0ca0537171cddd1b8e07b591bb1a96b1e41ac4b09de2aad6ec96a3f676b514cd09b598043f81e66fae1d3f922af6c5626ef6cf6ac3ab886d35cd38c26ef959328127e7826756def08ae0fc45d398f4229a253c5ca57175fcb21e2d125f7457fc86da74816cad92d4de955873efc7242e4d14c5e5589eff604975ed3f48ed7f3a90e4daeeb7bbe3a3f1d5b16bc2a4a4ccf17fbac32f90b91800e4a470db51eb8454f02bd15608beb80f2fb194764136bc525dcbebf97ff79c501edbb0ce2e36e4818653f90e97b87a498f4ea38b8bc8d9c77c2eae18d471d2e44e431c5eab0f726559409729f5488de476f5ecf244eb596f1e4deaa57122807042f93926c76a38f1e6d63db612d19828bc4e983562a5613deb921f3715d3d0cbdea55abec8b76854ea06964e02a228a147056b1deed4c23504a62b4f0be9720375ff4645aa40df5ea4f0af7cbb47fe835e747b3750c6ef4c586ef1413c6c8202964548a5a968743d072120ef24dc5e5baca3366f537929df7e00202763097ad3a04f8ad9fc81bfb80237728c2c7409e5cf04577b4e6e0ef7225d6e35a439a70d2261b81cd1c1c4864508bffd0510853f13acc0e454c539c0f3943100ec4580c971e74e700d9a69f634d6518eae5198dcf423db299503111df4b7869d3ea6ec2da1337662cdf53724a24bbfc0008070c99600acfb8e59e809dc6c1322e1c81b3be02d2a7dca9dd67316d434c8b947a82216b9ff9bb919bbc868ba4195af839d29c123b409da9676a0090331d75c29333788c4174c2c4c2ba88f36e49c1930e34b18406ce24f152646ab9df76b52dad26477edf173966b9fb5a8a870e5b605207ceb197d5632e45c023fa87e1a39268fb29d62bb2a025701816cecd98bdad86af326623f39c642213624d741b08cb2b2038d682392198f7f9e709e53d5345650a510320e84eb5e72f8c9e643e56625a3bad1857a0ec34c32f6ad4d4a7264efa7996fd1e38745e9c6c39d79a0debfa29050c563151051ac6245dcca061d899e86fbe3d0b0975d536259739ba6286dbda19ce8d63a8f58426763b54e6c2a47796551542e8e4ff60e0d21f0033cba1c9b0f7dc64aa500c7d1a54f3f0f3c3144da09c50d4fe31d9e0d52e9b8576a7628954d29f8116aa2ce0dfb8a3fc9601f49208ac0947afc9a3182cd7aaa02038f43274c166c05eac469bdc8e7b1256f5e79d630a794a172d312842caaf220a0e6b472504c466e95325864961e30963f6553e65a34a428818b74ff442ba17eb2cf2ba63999eb9fbf51e18e5d27f8a4c31022499b3a573beb5a7d0a0238b0c502c7901331dd833c0f865937ec5634dac009a116aad7030e899878f9eeac04eb1318a9051f1570d28d2c454f90bd93432844a9bb2b39e580d46d94014badd694be523c5d52d06d6c5f89a07478321753d8ffd3192e9abca6b366f8305852b48975e58e75e5c729e88a10fb512241d5a09a85f3869650b3b0bd3e0a085bef15cb52834e571ac04a022559e15a66c33a9e25d41fa18a0ed0827ad0793c786590e3228d9a1ca8e8fdef0dabb297aff17c61a16b394e2fbcbe170e901c7185236a0617035117485810f789bf96a2e5b60482aafc10fac139811b4667090c9439be623175943a452f86c403df958a098b1d5cc7d40081c84ac3aea0b4371306895b976a7237d21c9f6db782b860a2d6ae9da552c8be0fa7a44271585f0e081619a82279b23ae730fb3c68a4b48be843c6eee7314ff6dc91a2c317af38c11523d401f6f9394e480a18605b75f6cf108f35a48b17cacb9217cb25fd444bdb5b02f14a20723233a2b075edd1590b573d00284181f9ee539161e2e6db26d935673b150319715a6292a5e7c7402ceca9d2a30f6b982bfe9274b4c2676c8081f288a4111c82b5fd37b732dd6d3a95d87c05bde213b55b6ec93ff7cd73174bd43fc7f9f2ad61f00e749f1f29fd8212793b5ad4f6ee603bb63916b0805323ce47190714180c28bf8a0cae6f7aa94e20131381f171b196784cf23be4cae7ebf1102967d28f909b440c9cd870600151b87a4f38595c1c238b38f8d05ec76a8dcd0eff32c1f2b86a767f55cb4b353a77b77858a9b44a9e80aedd419f9d2207b403978152aac7238833090311c3de0b3a599e559aff2f3ec46d0abf0592b6809a82a23b0a9823d8a55af7eb3bf1f2c317f592ac2c7e71874378f58968c0ace9e4c97dca33b02747a252661f59445fba738373e70be1cfe2367036e0b94ae5ae2fd58749ff892cfc61440841b0db76dc90cff700d347accf20a5f12d28e7fdde132840573da960a19df9d1bf0e507cf382bdc256d696c274ce8b07f01c4a473b2563bb41765d838961fbe2f9f425bd54b6b058dc2f277e8f66ef8ca0a367ca2bc8813ffbea11d44d4a4f888f5b4740040de5063f5a621bcf6832f60097e5b602adc20e2a56ac6fc72ae000092632e902db4fa0aaaff3e34765204e75ecef5b6998e22d5505dbb30911c7765acf71cd5d99f0ddb98cc6ff813316b1ac019b9778e6f3ff16976d059c880ffc07a9ece5f2b0347367bb2f2f22d489991834f206cda3445a9b1753036ad4f26e16cf8315ef78bc71bef26f6fcba25de60b7a040c1be5fa52b742a13f85d3227ead189aa0afd4eb9b0421731a8c04d8f5debb3cbd22f60cf69cb0f8a1880cc2f51445cf28a13e1135a4d982138b2e384b286369c0014fc3a0f4347d85469be949d18689863a19983a6afd86c1a81041fdc44a73655527905d166189aa0acea1bcf0576be2ccec56a15b7692dbd99f80e1954477a8a421d8565b025acecaf43a7838d6843bdefcb5712a6588ef2034b904aa02e8555fde49f901f315b1c03680b67a66c17bb267973ded5332386c36826c8159c11689bc600e929aede3e3dc51153e7cf5919295f3d66524a6a16b6649fdbf53811d0d53d67517c43b5ae039c0e06c184ae90879a66e1d1cf2ae1ad516585bd74b603aa940f1aba1f677333adbdcebae65431c1d77ac216942f53143ae3eaf2aa6d2f88304e2bbc9806f5d8ac15c2ce5f1697c74963582dae88728f4686998ff8d0487edf01e9cbc4828146b7d92002173bab0d91192b1f4523cbc0d656fe714f4269c5809a9787e3ae696cfa0369621c4c6e918cef968998344ba8f6d7929e503dd524d543435a11623940962f5152e0757999b50b4d61e34d1dc81477c7292e1b055608311a2fe2e4ace49936f59cd24489ce330a92f3b5604f3f9bd0c6d021b6afa8a4ab58bf22863ba8e6129f29f5af16161e6021b3c2bf41a65217ff1c7ae3e1c4c9bae7c959608a7508ae29cd60c797751f890a5ca1bf9a3bf8b3c647b25aac398a6a36c827998c70849520e788bf673530da214f5f09e65307707b49d91304c10c41682b7a36e44517830b1f6ec7cd9a881a36fe81881a811c1e606622b907f2b794c88918711ecdc30cb92a446d80743c5c8da88e97b7ef1bc71e9769386e972f2f7b733ce279a4267703aaa894c204bc3adc4ef8987835bd73330943dcdc2154c479f8c592923f4f844313638a55c2d05f9ec49ac71b41ec7379c2b147e88e371a8185621eec717e7eefebc73a3d4309df058043a41ebe764a7f78f45815293590ba6eba5ebabacbfef42114eb81e7f77b418842ffacbc25735af5daece2ebc621be6e7a9a30d762897186ae380019574732fb8ef160dff058c88381e63044ef13bf94198a5b4cffe3bdeb214d83ff2f1e134206144db48344caf10e4543a36441510263d8db555dc0029a7c2447574763096a271234a289504c3bd65b12237b5243cd3a94224554fd3b5c2210a6890b3142a8bd23c6d26eede53418f14971532f60199c02d12ee12e6aa641f04849e9b91b47d0814bef5f08f9d9a4afba7d35632e24b8adfd3f7c6e8d58417f1d3da9aee364fc96812c89367d52222b9cf398129e65327cc1c9ab8b893347083deb5a101a1864c38724653f871ffd813c497bcfddf06896fe00ef097a954987fafe804c774b1b74d5701f71574850c0a63fca813d9b8c7fe58f25a27342266b145a2783a16010de238083073516cc2aeeab4ca0b8b7ca8ab0701ee25a498d995aee1031df37e721d6767d9aa3f5bcd100d27324477b780bc0f3680e17c09ff2bfb93a3013a836a8b1c07d7a3d5f05f0306d711a46709c5c118c406c50e921d530704336f65c5ce8e70091c9ecbc5ed77e53b0752a7f5f435bc5af360ba561f78d283afa15d5b359691003b12d85d28123e8f1c5d78cd2557a3feac7735712f68ee5e3f1ff00851acd78652d595cce2fb82eb52f360ab0697c24a26f96e57b272d036336dba993a1c283d7d0d4b3322980db51d53b1695211cdf23749b2d62fa0976f8a53a38c0d1efe2071bb85723012a803f81dbc3000027212237790ee59beae35945668c4360f8d83a93017532cae182013e6b5029684a1a9b2d135f82ce0055eafdaef230d491203b71bdb4c2fea2b84e8c7b2f13859b16db0a80546eb1a8141cd35f142e00b165e28b96967f05dfed09af13463baa78614501851958623e78df0b62b39c30c8ffbcf107854157870b4abab1802a1d23a34e803127d920b0fbd93361e1df95822560366f78a0862c07e38cc0cbdb7f9bc3c2a310d0b7d7be6d8b7e38abc6421604803d6301d04d2e4dbb73c4721bd0de577436479e6aec21683408abf133b34d6e0e9817640b6598e858b5dc811ae80b7d2f42ec659b829ae3ab27184167f1837680fd2a930f3439a6b1332b3c29819230bb12666a37d55b1a8b99a391eb801f036627f16f428e60997e1646f97f7ca7771a983fdcee23abd2430a02b85317c02bb62c8791fca50919f557193e05df2cbf238efd89f77b6796db2271bf7a3f18bcb2c7e441c56c600fc8cdd00659517c7776356fabc6a4a5ed68db6feb08b259cc073d97b111ffc456ca1e08925ec6d035b458f694cc5e180087dc84ebf7aebcd2d3f2ec6b2a60f833a2dd3d4812243a573f333784d3b79d896c59ed5ce82b75da233c9e07cb7a72a44942864d9ab3f7b0dbe2d8c213e6db3ea0c4a8d1e334dd9053e5ebe3b4d091e843e11e919123a8f2b81272af283041b7afcbc5808b10c6374cda5d0b26069dddf2702ec3d1b4c4829c49989a131a213ea4f47dc9e2f6e9ca1b7fef9ea5f6b152ac3ca3d8e661ab84f39b5443651d43762218eed1e5140adc7a84c4df8c00b81cb47acc6872d18f7b011f93a734620f2c068ca3f3cad450b1a4a23f27951002d8167ab0f4ae078f894026b6ebc13956322f79cc3bc8b6a5c24af7c3b376ea563c92dc23064e4a94de1062e69370cb50463be9c035c51ddaf4f7d624256e2662390ba2ac6163646f85d14ad102078afbbfe53a360fb0a7b1bf73503cd61ff67bd500320ffe78b92acd60e574384c952b28f08a9565887d1b94c8e06f8d37b915d10dc92355af6ce5c46fd7e40a8158084189f70f83095427c1e065298822da4224cfe9f81b144f9e94681cd8492e48a19ef5712ebbe904ffd3e7e2a76f1b8ac61872b4e4d3d70794b8f3250ca3fab4711b6782f0f43b76213cc491f4744360d9940c926ba7b3a54b3311eac4d5bb34a88ef2fe02c36f1f113375576e6fe8459221afac69bd2e313360b1f3af51e505a2660352e4fe0857164e153db30c4c75d0850cf26c4c9c2e1ad2a38e5da13219d40adb6144d4e6a41647d32644f77c519b4b8c0cd6a7533dd6d9eaed33f233e64c8d17836e2620bb124164bbbbb9c3ed0b1baff84d61722a13411160e612c72790604b7184f768f0b2d859a22bb8b7cb4f6812ac04fcee4e23d89b3e1b774ac5c0b08d6e1f40e14cf3a8f6f4a4245edcdb6ae26ea775e116d96cf2ce388c3643cdd04818d1b04a405b749e0b4863e399b1a1fca626a760965ab791dc2a162486d13e1cf3c48ce192e651e6374d94bc8d698f5f7cade5acf7cfe7913e67234e9b485cd8e58eef5bb9a9ce9bfb7aaa6472325226d8e42054a45160b55596c99374732a30859c00194de7956581d72537cdde794ccc6e05cdcc4f5b465a4d7cb59736b73792829848f34f821eb4965c4746692145bd4ac30e02b428b3d4ec8c0158314a04733ff1be019d1621786fa8d460e781776cdfd27ef521cc0bbc401bd814323f30ecccef4b3930b91bdd801a05d2ecb1ea1fbfe466033811b261ac66cd9d57ca5371a62817c1adee589c7850ee5bd462cb9acbf82fdd033d4f4dffd8490bd72862767c6581e5ebd9a500d6501f4763b0249022d50b34bef0ea39624aa87deadb836fce51e019a37891ff44a9231bb0307ee572302859d663a3a2dd5d660db3a9eedcfb5b916c268a90fceca711791263b37a93edcbe64844efc7795ad47f5779fb8b8f207232973e26852c8704a126e8d912426e1a92391e7942f099efa9035cab30608a2cfc941e0f116b52d4f2fe4c4f2e35dd2232e9c83639238b0aef394ca534623620afd833b38915c12369a4224769695c2e8b1c2cc81bd0ccb074760af439ba244b111057b9992fd13490dc65b1d5f87790a66458facce5e67b56584b4ebe8184907b142f5a6a4e726f72e87c8c4573ade0bd53a8224246ab70c43b509af095d462b9c8601c93b94aaf65529e3e2c1eceac51464cd82dd55173d1990a9be9a5b1b786995811fd02de3fd349083425b397c268fc20c00307c6b7cd7a6b91449980530aefeffbdce60c264bb98b889c0e1a71028485653f17cd070564ed44425e0d03898da007a0e907925b10ab9c0511cd127f055f4c8435946b2566463c979eac060069c871897879c3da6f0dc331efc250f9ccfa2c9935421954ed9490094becd5d1978bf2d45f44a33ccd096579902727347e4a593eb6c4825e7211b9d95fada41009e678a183dbc644a93d480d4fcc2355f59e33e606d64b15d08f898a5da8b016bb16515c1ef2e860806a9a8d3f01a65bbd5e960c68dbd7d978c855c66893555b4eb430234b4651acd6a510a17517c65860174bcfe08252787a263174be6cf99558ecbf3a1a544d2dca4614cd6dd83838c76e8dd8a939c36e4e3353ede9835573f8b3959eee6a8e3810e81c03c23e2f83c0b1612f3cfe6e285485b7d2e4cbb99538a01b1bd6f1fc5ec8136ee1e0b680a56a3641762a126a59918fcfa7ca2e6e3d4366ac6c4924c7b51c5475045574170e4198af12c58bffe26ca2075df67c3565d47724623688442709b7935851d5d2873d5855c35474a272aa1fa5ff4b4210df363f7102b5fa83c00a45f814294dcb6b9f48e6951f5e5f220363bcd9d8c207f702e86a16604334d1068703408a3a878277fbb05fb4604909da142b72fa13b1c1bbd6c669cb3c9d397004d0c43a8a8d01b4277f92e52768460bf0a7606428a4441483996f163b9dd51a790bb1ab7f72a95f659b5998ca91bdf8d8f110e84d47256ada482b7f6a35dfa3932e41b4deb4eb577f21bb9a062037d3c6259f02f747ff7a873e850a415b51283523d2d9f828508edcf289320888d07d8da656722b8e33f43513446e8fcdc24777fb4b163cc83c2dce220e3ab2574aabc503fecf2eb78dc6f8dc3b400af2aa2193ec953498cbce61b555321dc8d6fe922f19b9854cd6c2ee7b2737fb30ee6034af074e2978a3fc4f344e5459ec608ee74d6c314612e99b5c23df50c94829ab445f94641a1a82ff2f4a7448f1f67eb1c266976d4d664c0131a9d1646e42553c8f14cfea466e4bda9f7d62c1eeb1fae90f59124abc0d3d2ca92a611e957921f92f89aa1da2d29f8aaf324d7045acf5bb8f199dd51c3258437ba8293fd1713e52765edd4a696634dbf4965c904f7102faa39122dabd01efdb056c31b3f18057186de110aac1df3c9ca1ad1c242e4c373094d4aaca35c1eafdcc2dcb00db36c4722a2583f514e7615b5aab75f65e76677193daab6c69674707132a943447ab86ad0ce5337ee3e879f67feec70a7bebeea433a22df16074b6d287af1abdba3c7249aa31bbed817861bd09bb9df674cbb0e48e187b85ae9009139144b7f848df2450bdc76829a1d753c88c41ef1d71e4c6a870f001b41cfc3fd899286ceede0ea85ee6830524b5dd79ce986f60a679523d2b0822e5a4113f03dd224eb8ba262d61885fa99111dcba3396e1837babaa3c158810f2754381981029c4637914f25eeea8d70da475d85fdd03cfea30e2f6738fb9dc7999f677ecfe1d99d7ea86b850e3815caaea3e3e8e0349ac78ca1915f96511f9185c9a2792caaf1e60a0684947da8ae3faf8099bf978923ab31978059b4162f70114ca6239c8b1bceea79be181d40315cf0d7e18ed37335b312f758ce366e1e09a79a85afe82b79f1c3a44acd60dbd1507cba83b67f8244416cc0707ec10eb48a84690886b703fd7e83320e4a4a7f522e8f475b28f03cc7aa4ad1a9248c14e4e4f56da84fe385fee9bcb40cbd628170f97c91b4454f33e58b19ddc40585e6f9636082438c6c7502edacf6926d4ee7948a11c25f982a4bc4c43b16814885b2703d791040bcb592f37363ee4b08c07035df00a62cca0884aaef03a91e0e7364b75aaf8e366e9592a48a5f9a38580874f63882e0a8bd08fe51c2706fd7bade3ee06dc113ba608f07e97a216fd87016b808c560e0693c1750fe1183a4d12a1705aa7b1c1ae2322fac71894eba3adc675cd71ff52264ed0414f7fd19f29c47d2df28aa4836e99438680a84c27cfcee0a1f3f9ecdeea8efd692fc0e58521f4f597ea450e24f09a352a4fa4ceaf7521e6fd619aac2f616b1b4a3207dcd85860bf4a5852ca782b96384f61cdc58c17b964b50cc0492b78c098699b8d2c5b3041bd750779f0541c2b26af96486856f50f36ad28c0097033ba447614881493a968ec6e1c2ac0a8d64a251b5797f28bee992c45c127cf5eece19d219b358a0784fe522f512d4268b7f344434b0d37b4e010a32135726f1172b7b0454a8be1063a5b4057646783bde62920fce672eab88dbaa35367fedd2eca0536d9bcee4ba9fbf36fbf6fc5d4aa2641176d77afb8ea020d85f369d8452a373a0456b174dd3101bf769bc9f4421c4e66984c45a58776a3fadb635de950cd97ae6ca95f411afbb70d89d0d608b4ddf7d17c2c15036e72e8833b018a6b70ea9e2126ee95670cccd3e92fac59a874ecea1b9da0bf29f2ea950ac90c9b49510335819cfc3b42df8b483e2af18d4b2f71c5069cfb94dde64a4583c953c28850c335692d9a8fe74a0db33938fadb5807ba10354b1141dd279ceef6cfc116c7e9b50b34344bf29f608ab34928a5ab52b25a0644b13fd0b6e3aebbe282e9f0a7a952bd2bae11007f8a5e0ef88119781195b653006b9b2e37617203ca8cea799d109cfcc6cbec556183801bbc4b3ab74ce0e0e6829a2b13484241f633d2027ab5c3bd115e522f75e4813d1f86817fd523bd41e41f48cfd18c7581be6885b8e92d835a8b10b5a20c3ef23ee23df2a0b72fd8bd6668a9a99d57b251a59699fe87815f6d10f80b416ff3100f9fca2d1c2907928e50b07a88269a4699641b8d0d5fe64211c012840e659b700eec8f59e6f68760c2f968253d407c6176775787f4ce968bb14fff90ae76e58706a11508708bb7c61c9ce84c37874d79320539938ece1b7ce704f18d3a1e3ffd9d8a730183b85f74e3631005cc9e26d9f211dc114f98133f9f64109db82818fc495302e1551cda66551276ca9a407bddba2d726ab83c25eb1d51e4becffd24f4e3f936c7edd67677a144c8fb89433c82986db03940bb4528775154fda142f1aa90a1404e27af28d61d89960c09f44d3c851ff6dc2e0079047c6f33b40c556dee6e921be06a41bf6191b76ac1ca53f44adf24a1d5b1b3a696c5d030d89f2adabe98147b4672e288b1c9cfcb6f00690e37fec3f7fd74aa071d0103fba40d48b5b382f9e7c336594caeea8218e7a488cb635ac9af858e544b258dfa0682536723c4c863103fcb2f5318fdf063c0654ae1b9811203d5026e3006ffea114615ff7296ef2fa504299a66f59270f91f2ec020f012d852f3c212f7200bfac42713d57754abc221050171481608b89f2236e2649f17799ffd30c832e9e97964da3e6f8dcc24723b6b420397445b40cd96cc1e6d5ab3d84bdb1a5c585c4b0b1cc030790dfb168840a7db118ec2c825e40397e796723a79b01f7784f1701538743fb779f7a1c66d2db2dad0e8e72a478cbb4f152f176814bbd0c5d9011e1a9d1f1e4717e6b27673d7a779613842a5daf596c380f809c27024ff03d3850053e820d6fd47e96a38a07213c27d4e6a5a5759a96f9e1de74335854153476e88451106ffa748328a40b74f640275884b172c7495aa8c3aa49cbde10d29b040d2ee1516cc170bd484d391a18c990c42ca34c37e898549a21a864a5aef70f03b6951d1c7dd0e1052a027050f304b976b010f020052d89d49417b14d35493e901553bc4873513a6fff3f44e6607d7d3fb2b7883482e623f44628fdba31e9733652e8c14783ef0dcb19326368277a36d6f93ba24f805810886212b2e48d45388c1a3631dc7e64b67bcee0c12aa4117faefe995405742e8d430d575a6e3dba9efe74972204a2e60988dcb0d999b08f94ad2ed590949fd8ef70f4c176349a6e95256a4956a00c8e5995e5ac59ec513e3131b6cfb20315e13a7972919a51a46733b7e89d8ac00e89409137c1df780c7a277f268c6df68fe7f00d6b53fab109fe23979caeb6a2e7c0612e0a6a6f77e07ed328346a8b652cf0be3fc848ba311d2abd1d2a1c74c4af640ed91b49a3c01a8da64f908843546a6840e5d28c2494eb75d456ca97cd04e38d1e12080d2991ce404a30fb51ee39fe09a4e97105574620ef7087c3a56091c62e81db16fec235c11ea66ed1d51ac33652016f9e42bf3d4f7feae752e50b41cd0b30b7ff5a0956f93a69315cc23e79bc53b4cd53bc652644c032d3e90a9b3614d032efef06bdea90c6eb2159002c9268b3892c1d29b7c2e6c54849baccfb10f0db530dc649b57f3520c8931e620381037d975a8576a25182413ec12c54dd6ed6ccd1825aabdcdfdde0caf170941f815715a9b67bb675afccf0f1cccff7ab845a4fcc0c07cd7c32544920fa40f1e662ed93b50d9fcbec1b616cfcbab15247b1974c1bc6c9a20b9974114ccc3a6e1a04c0579a5b8566d1e3741df1cb65bff058bd928419c2f532e80990de47d3e2c6f2cab097118f552bf00361b2808ffcbf00b90b281e4cd1fcb1a23049affa320754d6076e65bb0788d62d40ab1af751ae843ea7de9a6e7377076afb2d5d7d2e7cf73320febef8c9bacbf166be89530c933bed23f5800bb25a5d90de876f0272aa6817862286fe762ae5144eaba8be7b4e44e7767254e568761dfc76fba3ffe2656f51a98ff4c7a9ce4b6730e67f2b00ba6fae28414525173d7128d8d0a4ac7f4f2ec613d4da1ae6b0f62dad15dfafaf30a7f2ada23a2f36762b0ca86518ba996952386b9bfb0b0068723fc9abc03b90e13d83d0de2d8107da472bbcf38835a1349c986d417378752504e439749f5f40cf421643dec2fd6ac34f8c1f5df3aab52163000ff1d1bc90de68c83d4e9a35533fb237839403e10cf62b33d444f112abe62fccf81a40db91cc0268e7cab69e750499c76a7c130f0a41b79f96239abc0753b55036bb5f187a9d11986572f29292a3e61b5837c916c0a4539e3850c5cbc5127a2d9e131fa6283732ebe0739f9351c7ca369a71f18f974e2dde8c8448838978d05a94e1ad390bc69dcabad82444d0410f942618298fb73b1639a8c8933949d10fb00cdf8ab1e05d983782a10ced27f9e006d492cf12a4a7bdfce68f3e500b8f3e1afd7bd01227651141d674a2ddd9697034334ec1b49195b8dec3b345ed750503dc0ac84ff63cf005a4e42dba0bf658022d511fe22cd7e1cff7684b797059b200c18775aa123b1ba51e8b578e52d8ee0368a42cc03ee415c84a9db5307bb0883c35eedeea562ea9b552b7a7520fb8fcece365b9e587067ded0b402598e19e26599a43c18278c41d6d6c16a95d314167d2f88a502414b3706156222b099496b35a6b34a0865e61938754c6da504e111230342b0e48c23e1c2d6c24d1d932d390b09a6d198847b20bce9dc5cc02c6b76cc082c19a73a79734c13c6d3f26accb3bc63063d6eca3149bb6dc2db9b788c4930ebda7333643d0988bb9f309ff128cbe8dfa5f30cfdd8d733e460c0211103d226f930ba84f803ed6a06c41926a5624440a6b05ae1c326d4308425a96120306b98debf82790c894f3f4f0b069c220da38fce18a936ca9d9e3953935048343ad514f0414afda469cf521051b94f553ea3dc74efe3f9f156b6b9fbfc0d5abd78aa87fd8bea4da5f0c3c47bdead2704fcd4f74d31a239a3c2339c2aebe1f9f0760d0b2b3d765b9373aecb03fc0e041af35e965820d2b24a07dac3b29f6aaf6e322d2e8102cfe4177cc3fd961b0dc06c7f3985cde826ff92245c92dc014bb995d1fecd0d880e83c1405cd57b75361660a8125aa811eb13c046549e6f6090e6fe5612b2f7de5b4a29a54c32057f091a093e095bea6f9ec757a84425fae4643f2aa9c432bebfb05d8d0eb155bcd08bed2811257ae8d79227f4246d6253a92841c844b10df1a625c0125392945023257383151edfdd4ab4e03b0c2337503c187dd12f3411f580431841d080068884edd004956f6f7f2ac057c6960315464dde84ef235249f0c0054178924498179c31e54a0e2c40c3e88a0c780842d195249c9c11e60a144fd058bab2c5194a57bad880c6932b643cf9d274650d1dce380a93e2ae80a1e3f1baaeebaa49b561a573184b9636b4a4dae8c2dbe8d239ac735d5192fe6ac1eabaaeebba2e3042740e1751ad740ebf0a60b0740e7f6740442923092bc2732b8a1b38b032cfad1f6e60d5a46e6c0d77c53a8d018f7438068a27a6ac96d01d8656559022d20a586cbf22db2cc88f4ee5e274ce15ebde1dbd380202ca3397e7a3294c7c867abe802b6e7064df021e98246c57a38f0a5f9e3d86a0e6c192b88584972324daf88e995849f4f01d8389b02dccf10167b1bc621cbe49de1308831863bf67e6fe0110d63eb7aca44164679e5b5676904961650b7a35d9e7b2d2e64a6ba59d8573b5b6267503299d32ea786ef99085844d74b214d8f9dcb2a225a3813d35a1299144d6b219112808228a1529d912b63eb7acb840678baa634f28614378a7ec096184303e54e418994e0921a4714619238c114208af2813498011c2c8dc905645e82e1f330f6915bb43d89529cf18218c1036c738698a0b2a279553f6806257c5ae4a59152177dd0a499831c218219c0da146d9b0cf638c30463823eb446c4647c7085fdde2508431c289d221639bf75c9c5a8c51367cefeae69c51623b40a277f221f4694dced81146392984d005482b1862c02b46306234c2522d1f4eabc0c8a2f68c9ab453d491393683610fbb26c4300c831906a30b606c27a69e90b9877be6c9afedc46d9cc6e9a0a0c18dca8f1f2bb4aa9dcb80c79764447bc867944a61adc26017085fb641ef70a477aa1e3ab0eaef08e4c91a1a71d38d52296b21f757067e56ecbe9e0f0b0c8fceadcb252b87d3281b6cafb2ea416e460f4c1089a35575a1553635940d16f3946cef91c2b9f126ea1ce9cde33a28a87a384e131169d14b2f9b4b15ee229a28250537138dc4cbbef11d35d13b9a8fe80dc139d29fd19523ba6808e6bc21a221ee79d7ccd239f21d7d1bcd6bde77f402cc914c4c4c5d44ab641711b5eadd6ea226d2fc69e942665cd07b83d583a555d0122c8e29ab2acf839634e0685565fa928e8369555f96564997e96223511311f5f7bcb234d17b8273a45351b578c9e5a56ca22589e222fab4196783842a05d1844922cc2a68092a8909d38abad06a656fd081791e0bd6d830f8e8ef0ce6519d3efafbc23df2538d020b071b1f99604ef408ef63423179203665cedb9121304772d82331a4d67e948d8f2f93f9c1b6bfcb3bdf5880feee63e2b0af536cf7584aaf36d22bbd36f23ed6ea35e99c181f13784d81d588c859f6a295c793dda8e57681e565972cef7de751a3429dbf08620ca4d592c8056955a9601fd2bb5444621fd2657630c45d3ec730bfea1df215bd36f3fa0aa77328158cb46445c63842546186d26a093605d2aa4a434891e89152850f462821740d000f77dc1c0f93a00b5e8df1249dd850b9b47080e5db29c5810a34be3db6cb5ae1067118c24e9cb94197a67203237c3c7481b5356210f0105629ccb8210e15b0cad0c114d7132f8e50c2f976bea6d0d18cf0c2822b4b66841b2ca8512461452a78f2a4a8872156910c76601559b94185d694a22754605464450e524c2902430715a20853048414a82085524deae6593574b0387ce8e106563eb77ca832848dcf2d1f6ed04412592c7d6ef9c0041c3e6461b58e95167cf41e3aad1fa4e8d038e523942733e7cc9c50788850e69c93cae5554e99773777f750643de1220fb189cccc8c0c04f89f75ebfcbcbdce3cda04c93c7af48f43f4b50f358943ad9214c8b4286ef328c433ae0392cfd99c9c7ff3e66c9eb3f874398b59d606283ae2288bda7322fdd1dfa582dd215f5db14957496f676d8d749f159a47e7c94d8f94ce4b28454c7c129b4031ddfe4562b52bb8987ad4bccb0a968ab628825fa0543e79d4b4d8360e3d2cc030a2094af144260c1b264c182d8cd6535a08239a63597bf6ac4dd269ce82e69c107e6c66c685c7acfb40b7dc1bcda453d03a409ea007050dc020ad829650a4a55595e74bba486955e5e4ef85490347e5fe866866c258c7369a9b5d9fb9b7bbdb95ae42dd27a673a44bd84d508eba41f0063d2cb8bc016515b4e4aa026925e3414b4e185a415f1269485a553939ca85564f864b7502a4a338191dd8537c0f8e3062b867be4cb5e0a5bde165a3e0654fe95a884e002743dc64c4b0d0c3a498eb87db0bc33ea4d32f76238239cd81ed8dc8e636454eff36949f50f739e91cf9865a25fb85e1dfb827a66f986ed2bd30fd9c3c79432fcc55d4345ea494ad92d37b2e7f4343b0d6d41b7ad9ef0aee892e4f524824668f6daddacd6f6e4e5e73e26e4eded5bc3ca1b2b8fdc5310f9d76ca70f4deb08039bc371b1094ca665e230ac366cd699b1a37ddeb964516c0e3a1f788a752b2deeef1d07b8059847dac11b44afa298da38e19e4eb35ac6955a400f41706e644a76dc466faeea900f5cdd4aad88514162ac1a466824945da2b7fca2ac117502eb6ab69d02cad7a7ce99192a547ffbcc2584fff5ce31ef80f00ff767439fe4947d960fbbbf8b0ef2295177013700b16e01eb637bce4335e96f152c6e0c206608f1b581dd58f1f3fac055c803c6fd5350ca63c7456a239b0a7352cac5e2fce8782612947cfb0bdb56081266c57234d21fafcf0c276ac54ab6c81b2d1c2bc2d4cb1f049e5e2e8a99c5c7394532eb6936910dd38456908d2211477c311d2a512589d434fa2a2942ea594f224bd89490e5524b8777abb4392b661a3cba1972e6f601e6639d43ba797fd12bb9d9cc14bf9c3cb2b5ba01d7dd132a28befac16c7a13df44601e9482c8bc562ada4539137764ebb4fcb14c1dbb90e75fa4dab6694d9b4071ca8f8bedd8fe9f12404abfa396bbd9c7240b2fd51e1958c15d667bdf3e2c142c7dcafce85af4eb9548a521f7861587d29086daeab4e23867e4edf40f3f01bb3e9e7a499f389113eccf9e3a75f95ce2e959a7376da4f96138e1c1c3db7a488f249cfad259a6817b6c3b1414b121007144dabe94b980c2dba20adaa24c19c7a3bcea5b35dcee9a8ceb0cf37ef5440f231cc757a677baa2c6a9d0b1f9f7d9c03dd72d17d208adb1c9e5cd53b27dfbc7f1c3066cc98df6a3aa7df557ff0d8b5353bd84ef543e7e9a532ef90af648f6e80bc36cf1d7a97c20f7dbbb73fced6744ebbcc15ebdfa96cf7233ee800960da2d81fae70dd25c28753d3faee86e6c0ca252d046755820701ef0deef9794d61766c46a0d3a6de01d33b616eb622d0a9d374ef3b771a9f5e7aa7ab93a97792cca5dec17c7aa6632bf2524efd6d2ca49c3ac6f193b011d9b0ca1dc17a04797855eddc766c41fa31cc352fc1a7e6373a7c7a3c827b4a708debdefb113623374e6f9c52ea37eed33a78c8119c52cfb119d9e1d23305683aac58d45faee38aed62918e22dbc529efd9d3a1c3a60427a1bed4a43ed04687bb6b184fe927bd63824f7fb773a76e82d7d098702d6a23824979e3dacf7b1e2e3925ef798ce092e36c304c878661985f97d98cdcb88eabe4bdcdeda4f370bb19d9e1d855f25ebb9dbc5c0fb58abb3645dc31c76e12ea40ef77dcf69b848703bdbf719f9ed23b25dc0e13a2776e6e128ca877786cda4604cb7ab4c73d4176b874768e8794ce4349ac5e824fff41fdbcaec377362336ef76d26f3c019b11cca72c81eba16b53644712cd81de63bee326b9b9b79db42ac81ba30307b6eb211db7a34e824f8f567a07bb493c1af58e76bd55d5a76b5b91944bcf3622f4a65a555d6658c3c758f5146747b81d0c3a9fc345b84472b8742dc7d500f03b5ee6784cdb6fde692fab4b29a51422abeba85e7b07f3ea341cff0ce7329ce5badacd1f7efac9a7e7e42127f308e64c9ff336962dcac7f903e74447e2a36bb74b55b173061f9dce232f9f61b1128bb626db3514a6e90d25f64e95976ffed9ebc8539773ba4fc3a033e5f3970344c63b16e9872321fceccc0c8419e31ec997ab6397c8a5057bd7bdece3fa76375224c8bcd6223f1d13e0557df4a65534d52a7a0409a5484faa4dc11922dba95494461b62d37319e7e1651cc590e1d16b17c5c93886835ddabc83a1e651cef616792ee332d7a326a45f6237d88e8f9abc7d192b6fab00e3d33bdd557879cc33b742884bf3e91da97964a48c72fe927bdfd94df3598fb6dba52ae642ac76bbd74922a897c9b00dc8cf7b1bea76303caa2633622fbf86e2926877baa45b9153100c869a6ae38f4fd29ef9c575ad693aa0d8e849dabad655ad1d7537ce5f867b5faba6690e37205af4ad56cd59e374ec6035d7babdb722ed99679c4d91cc518ef2cc3394bd9dd0bfdf5c7314d7c9dc20cc3e3447b90fdcb8cb2dbf863a618ef9a65d895d8e9d9bb217648c93bda742abdee5526674a394fad6c23dd2aa878406b6e3bfee90db4cd827e5057a3100adc4fcb551eec88da155d2757e5cdee93c0a3fbc93eead52a9e40fac54122f9554f5f6a3559733a7340678bada4dc26ec74c0fd4d9c6fdd051b271a583c28fde805c10a88548e9f2caeb027a9f65476e0cadaaa72716f3232d58405eda76afeb87be44d242ab3a211f9855bf38ea18976473c485dea117e8fdbc40a23f24bd036b9ae93485edec93d3dba2e080830d8a6eb8c1882370c0c10645ac9f9ea560cebca60ead10be0706fbf133a977fa3e2cad9a3e3d7b8d1d61db5ff78cb21ba9474e86385d72d8f4ca75962b87789bde3ea2c2766d243d5adbf1b65a623e0567aa6a9045a56492f60478459f167bb01d1ff94497fc0e7d0a31f6f99c9bbc379b0f7ca4ecc8050e38d8a008a7eb24efee99f58561592af48c6a333748f8f3c654ef29bd93dde7e419a1724fa5ac856fe8089b397639261df694aeb3c8c9350f39d8ee0d35947eb2847d43f14518e1d01016c5b6736b0a2d6fa89366143cb6d5d2f203786eb5a4641e9d3d02e1db127adf24d29b8528af10a0f7cd45b6c276f68340ff79e840ffdadb5b0ac8ec9119028194426608e784537e33bfa16a5543dae3db7be460674d4308a1acddedd25bca08db77f0983516e2ddb0bb9b86eca655ec834fb58a2fb72ad22923ec369a61c18c0e325fccec20f3030b7480f03d87af9528e2092e51fe41ce5b05803ff21d0c9cf4de7b2580fe20c3acc8f327b814f1263c3fa18519ff3623108518d877b12a965de84127669cc87c21f383cc17325fc8fc30b3c3cc0e332b98d961c6c9cc0a66d2a05a92e8d223ede2dfbf6f59e1e5a7cb5b2fc756c59b6a555b91e5e6c151f9ad5873597dc2a60564dec131c878f6191b6c3bdb0ce36a75e99a569fb430cc438cf362800e324df89563f621bbe8a0001de4122f6e52a137a3f4241d074629ab80402034aa47162995e44a2ab8f44c49492957e9fce8ec0f10ca522f35d15c353519193dd66331d20fb6b396be46d1f06c1ee62f400524b572f065a9097418865e948717d62e6ca077a0152cbc157a487330c4cb61aabff0c60b58ec8b2def0a9d2373c55eadb22982796327326cc74c5f1d4a086b6d7e709691a50acbd0a62c841cd9fd7a091d47aa8c2c467f9f5b3f284d11df733be553df494c10f1d0bf6882c9670fddd6a49a70f2d06f9ad8c143e8aa280fb9683911841f29f838f1d0551882c5dbd691183b263cf4162ce0029387be81175cf0d061804f80b16380873e8215ecb0867278d8c5436e4141c643dff2b015c5120ffd4581597678e84f8887840d330118820ab428218565850bace234944ab5ea59787dc6a881b4650856105ca8d0c2a579e2aa72c31e1471cf0ffba04e3d4351f803f2486747c2c3bbdb79f0e0c1c379f0f0761e8ee32678e72eb4e28e3471bf2eb42ac17940da45cdd44d4953deaaa88b70b80a73a89bc065dd7153aab5cb715c1fc11ceace31cc49cd1ba6ac7855e5f1f02a486a501524ed3c6e50aa88ee38b2d4fb56a95dbd5e1b245d1d08b6fbd11403fba05e83c5528703cb1316dd716f6e07959edadc0e263dd541a993703b78f4d4bb887a1bf551ea168d70bb567a2ac2ed7a29c7ed9aa9e676dd4473bb0e33733bc892b95df4d4de0e42798aba1d9cf2f474b70b8d9efa10ead94dd9156cca71a2c125f35e7c2aaa2325ac5830333373bd52b27dee1dd931c219a5363720cccc91794e8eec32c218a1b4120ec9d03e8e015a96cdd3055be79471146189830a7b6ad2a42ced606b9e5b58b4bc8105cb6ba824f3b01f7a691e5513b5d23bdcc262e5212d02d2a2a7480f69978734cb439ff251a607a23e2dd6183a36c58783346a0065b5448a51f4806025bedf1143b80073fa3559c2760fca434a556f3fba505c803cf5327ca15226fba09461bb1f3fb827a500e6218173da39d5fdf84e559f59ea07af5230fa01cdb036f66b7cb036057914c039eded0fca8f07a56e3951a29475a8047996200ff4e8ef76364af7e918a38c1ee369a98aebb444897a273ea4568c1e522c0f3dcb50d6deae4fdd325ce61b908a5d1748669e51817de794887d40ef2055e21e198775d39c79871770b90cc73bbe515ce7049c92fec83ddae774eef1809fa08f1d747e5c6f17f4d59beb22ecf6f713c4fe66f881f307428f0ffd720d620343c866c2b07de2961662be8bdfef3dd7c04c184daf640675f44ae6a671cff3e6e06f4baf44fb6724b2f881c99e67a8a93943ef8482600eb3c70c21c7ecdce3ec43874875f69aba6915bf2dc8e58f7b196f401893b1adc2fcf2ac13e252ad62bfde2b79ffb0681304fee5d7f5cabd9fca42f54b7af4d436f3c53a077d1661770f787eb90f0c7ad87e19810f1fce00c1426fe8e367f7a4bffbf37e0ee0e91659fb4c193609f513bea3fc4e38c03d32e83c157621ee813f67bef236a9c1c74afa10cdea79acf9e83a7668b11d0caf53c6912672860c1b3d88ddc21ca115b311e54a0cae142db1582bc98a44e010c40964c0c4aa490d3e56cf876856dca4865e4d1f6ac0eab9e4861ab00a3a125405c9747983e60daa8244fabb410e7322b761031554ce00a306636cb1e255146a811626a4487942e9066bac78c5dee92071166bf59cf4ce094f5e0c2263eee974badec1fe07ce18bd83938c8ff7078e19d3d5cbbb257f5d10b0178741e888a69f17048cc593db057dac0eb988450e5f2f15d92df90e06a1285f41c0802647b71bc14310301624f858e73d42d44401b640116ff7bca5c597bf796e6971c55309625f2214654559228871040d3f60457f54583b6e98010f5364008a81bd3c155601b640c152c2802647236031164f56ec1d097e76dc4a42c103bda77202f6b2a27c83d89780400a105c988861b156f2b29ab0582bbe5d7b6f1428c09627c65040660c316810070d63c6ac7848cdc3db4b9e9c47198c8f5629ad9433026996657caa55724a3eeaa58c3d3ad471159c5ee77408211c817b7a0ce96fba8d4d2463baa49763acec037653c61e258742aba46f791dd8d59930ac431e2c8bfe837b9c7d54db393527d539d5a5cb118cbe43e1a58f3061178cc9387421beda501b6e65a183e756165c3e15ff621fcc4730898c67b258291b1620e39927bc9fbd83b0b33ff6e97326991ee774b8b1e0af7ddeee6518d7611a6fddeb38090d429ddd290bd4f972be5dfd194193133061bd0cd8fde944300438c6fc0c9c44c4830a3ef319843ebb7c5d21d8cf39a59431460861773ff651e516e43d951b108a5d975b10ec319b224e47f03449f59fa0efe057da4d6f47bd8fcfad2c923eb25f4f02217a5755636441c4d32b99c2cb9ac724637eccaf39903126a3718d63b1f4c0884e9bf6a43ef68514a8b7904593a76e81e6892bca4a9ce5a90f7ef04def3047a1bc183c4d01f1b48636c123207c573879e81a7f008e81c59347246311cab0dad2a7b8e7bd3be0c6c22132d9cc19964570af0dbbcba05f81f4ed3d9a07ae1ab6a77aa73bfb353d908090d1961c8cd468810fbcac60c59b8cd6aa38856d61c1faeeb6bd03cb78577b6e5dd1f4d049c6335b6cd700643c93856dd7b29ff7ad34a4b9f4e66678df499e5f2dc3631f3f3c2688e69863ce3704a9074ac1d7b88efbf176cd2fcf84607e5d8febae221b91cb3598f9e332bf38cde156a4fa7b7d9f675cd73f6fcc33a7a4fe0f8c83d5013da1f9da07585e46f150cbfb4b328af89ff7b2e5054cdc8274e46c8ac828923cbf4a72408f3f3c66cc182f22f494e408f3d05b46f19003ea229da4a143292f50f6648079a07e081dfa43ce1f287b7621f9ba29e3e6914884b0e23b217100fdf01d10ab034bdf013d61fd7c07c483a47fde85408729ae585a7aac49cafff0983171fc0f1a82f0cf67aeb06dc4734b0743df539e5b4a4caf7a6e294179e833575898c4736b0756fc3b7a6e89b18217c0732b8c2b5f592cf8926bc24933d057d2df0119de3f2d16be139e37203fcdfabeff36203f91c542e3d57806f399d4e61684bbfc73c87197cf58ce39679c3d277cb3aa4ecf751e6a3959913db7b41cd12401c507342891832e9aac58cb3620b703821f9b48654c26b68a3dd53b19cde885f9456d4df63621d0cbc7566940cd0f9e981f4b81af5437cfb79b0eb91993d9705ad5aa78bbf7d342957c81cfb466a6b05d955e8d3ac5cdb4ec739c5692f14c0e2cebc878e68a12334df41661b6407222634d08eae056cdece00b2f5744f9e8d2e117ac232d78c104c71803dac82fbaa85a0b2e7c6125aee2185b9286f44ee7382df44ea772a1773afb82cf0a5b883e3a0acd2357647cc75df0e091bc7c1ce33bfe5213e3434b240867f9e12616eb81665e3a9401487b23317ccbf0e380079a38bd136560079a4532f0257c3b733f0ef8f700a11e6f0b223be86f0bf2824c6082257449df15849c78e61ef576ed49e8eda0b37744e0b52972f9e5ed1ef786f83c738fae1bc2225a7878c931b7bc70e22527dfd6c011471c6f0cf760970f1072e29bc53db859cf1b9166f2cfb52b8a8c67b09cbe7459a2c505518b0b286d649fb3d72b7b5a843186156818ad32d8240b358656597c2d7062456995c996134e30adb2d9c5102c305a65b4f5644bd22aabda142c1043b4caaa06391b24308b2584c0b482cc1852184720ad9a88564bccb3330dc42ebe987154ce1b5fd7bd300cbb2a9d32422958cc3ae763ad589665d83565175a65a416a6f0b3d25a2bbd138b4cd32af7d0abcb5cbb976b99a6691946a77c63741c478561b005307b4f6e405ee6d16b52327618e6d533ef8d08e6104896dd0ebba6e47022988c71ba6ce9a1ece93c2feda2359a14cfb04956e60b3ba383ede0d2c7191da4b402ccb7b434f9813f437fc6857d4016d82eb04bab20cc5ec73e41a5ce94d807f4ea46a69421c11ca846861465a049f02715db6548482f43faa46c69be20d3d16ab536957a2a6e26fb846c317af7ebeec8c3a0c35ae7c45aad8ddcb78f743affde7bfcb4c73ea08e9402599fa1a2b49df67c0479549dd30ea5a83d9a47f3d66a384bb793ce69ef8c876f8f58946fef1cda450cbdaaadb4aaa8551d93faa5773cfa6edab75ed6c7251964ed12be6680a5def5afeab13d7677e4bbe8d7bc9df653b6cc9e90f61984a8c78b8b930ae613eb66a16f7867107aa1ac4be2ad82f0fa15a4bd5e49e8fd08f486b0d161744b8b32c6e968f422a65a635d66c6376e46611fd3b368e375629895524a998da0f5934982a6a39f3ce8140281e5a1d39453ea957abd71daa2a2c9ef705ae78debd881a55c5211e6598be71615427ca63380767280c73dd383ec70590002e83cf70108400034ee3ebdc8ead333d556e49db011c170304ed503c334e9d33359c27b0048e919cf9c934a1900e900901200524a13e495525e290320fd92544ac9f59011e99897b00591b79da0a03514984a593ba7f3d86251abe66c5afae95a2ae9724eecaa1e3dab1b904829a5d845fdba2895544e2d8d1863a4554746372075527ae375ad94927ae549e994d4df8dda8cb1e5ede275d14a5d4e3aa3943326358490cab4e0a9ee969cd55a15a3dc988d8ca9ccd64639258c514638dfec21d2f81e9579a15519d6af524c460cabd6c89820530ba6de321668d5959ad3a78d7023329dd239e9bcf24128e18d31f29b56d8686263094b4a08379a5c1ed22a5b5531c6b719997e39bf28398e5a17a163c68c89e3676c9e0ae6b9e58696b7cf2d377868c3cb73cb0d2cffdc7203c8fb68848e1933664c97ace3ac9876b233fcf8595983ca7bafa1085dc418e51ce1b9b5861994525a2f119860189669d80bb66d3ba12610d65a9999192a3434343435394e4a8ca089208208228c908a53e8d0482081041274d8c83cb7c058b143bbb9b9b9d9b1653cb4c7b1f3066f6b8d2c3d5797c76965740e2068880882121a4c354081e18ee39795018341020d2221a0180921c50d22a35a2b092a806d34a1a0498aa6830941600a02181a1b688848c0734b0d355e84e7961a5d680da2fcc73d5208bf844a03b841149610489ce1861a6c86194ffc10c40ba2e04107ac8c71da2194efa5c37f3641fabde482f43ff9c3d9bc799fbc3552ca5b538f90f8683952e2815e58b1850b561532ae58b5a798478887243190764802074b6cb16a77e611f241ca1b717451c3098690b26a5731cf04549045114ec4d0c1124258c52a32c689dc331db6a6d17ae1bce8dc0da7b88655ac824e398d5510c227c46f525ff3e2850fc21ba37c856430851aacafb58f0a3296e6cd3caad10d886dd9698f09fba81b900d62cf847db4765d1f01f6d1ceae0003643dd527d500e00560ce7e02f75c32b6a6c6870cb199a1f19172880a43686ca48d4d0fc19d992b03d44050437cfa76413fe3fde3a18e08ae837b763874c93d370e7dbe05d838bc1d0c293c741d2e83dc8f210b85a0f06307f79a700f05eca3dd867b35bc02b4ebe0de107764a66ea71ae1762ec2cd51738da8f15283456989791c704506494608e188279258b53f26e661006b0d2e8aa8d283d19655d3b80fa4e14e3e390ea85fea409efa83060596bf5528272f2929e9488e262c9224ad6d60bbc782ab466a55eb24bdf7b0a4a00756bc2883d583192ce6082c5bb088c021c988d370411149e440e4058d1f18a9082d586288c882850224d227d743af9a320489ff13f4d289c4973c5f93168ebca4e7e525bdf7e6e3239f1ad47003064d3e8879820d2116ec6005131fb092a61421c9818d2f5264b0832084d0801cb6ac4104031dacf1041ca159237cf792b8fbbde0fb3d102ad4c7748cbb38c83ea6572eb2208fe49ce97df3821c9375e79cfd90de518e2cb6e3a4c73ad2650a93f3083d4123071b0c9105076890b16a7f43cca39d9103378200833784588379847ee081194f38a1c2441c57300f07a404e1c5144f88d0c289553be4de941661c91392f0460719e3c438fd49d99cbc3434276f37a5cf29d7cddbbdbe9323f7f03fa29ff21d2fb59a7ef0ef284648c3058d17b6e325c93a4116f9c9aa5d5db9ca69b6553107e7c4127c7c8c2a4d66b284125ece235a52bcf248adb7cbf15d9253df1af6f12c571aa4c67ed7efefdb54902039d22ae9dc3499b2e890ca8c9d136304d23e4db99ace917605360a61bbfab201f2f5eb96345bfc888c3b4b038c1b60e0600fa46854904ae9d0a4404727c7180bd9f8078c09e24a0dc840c1104d56ec5c43b305cd1651897678060d443061c34b6b0a0493715fb1354e93c576a88f1e238410c53d3a5452ea4d5305b53d70a2a5d4a59472eac0f1a4c8a265642aacad4941086118cf287a4d94523a146fce491345ea26fa54b1a5f43dfae61775c687f99cd4dba777f4da10a1deb2a6d65abdd65a6bbdae4ba79d68299d8609db39c739dfd4f981121a454c814694eff1dc3aa3e9d99d80c29670a4440a0359733448d253b6c604194dcb76a86f14f7bc254cc884f0334d13f6391b00e6800219e3f04683c5c62a8133961ee7b9f565cb67a81969b42122fdb9f448f304238d41641f11514a9a1aacfc182bbd40fdd3a6482be98749a4523a3a10a600844ef9240d0dddfdb648c991048f033a36e58ea3ea71d1ebbafe9c7238f6cae1baae2f29f802838741e7afebbaaefa85894a556bc5ae63d70aaecbf9f2da3b5ffef2541b7fd5ebf4a66aacca71be54f19deb889919d3020252cb0c251ad6a906ae5f28b580d00331b68e790e395bd3fa7283c79e5b5f88beb33e84ce4c1c3a3acf6148fd0c1c563a7fd767c853e90541eae74d12350e04a94fd236e8e84008218429083bd5974bbf9921d8fa35dd80253a535e9bf8f03d2e4a9910fe27c60edc1ffb88662099f1c4bf25cb2d32ba7ca77d9bc104f770cb8c2b9f6a95986ca665359d283c70d55cf3dc0becfd03a6ef341d18c8e716195f628c7ec277cfdb85a65cf2d1bb8bc9f879a938d36ec9cf7a4140858e685ac9cb622c9e9cf0ce5b054e78d85eb47a6498678ea3127a8cdbbc72429f65596653fdf2cd3354a79d747e4ccf66f42c137adaf51394fdc0cff833af496c8a50974e33f7698aa245288a665e3dbb2eec06a97ef9c5c347c7bc68f2d12f977edd0bc3b09b6406212349a691a8ddebd26e17f49a4fae8bb06b6036c05b3539790dcc0698fe563ef027e82307fdc4f12ac222d7dd9c37ef66e6f3769b67d72673ba5d9bec16a93ebd3ae63449adb448a5d7eda6679ed95cce36d70d223df3acd50598acb5249867d335d764908c4876a15f977d44e70b6a437481054211c5091f299c704ef6960edd863a3f8493b3a1dc053e38af6b9ed8198e7f1cfc3986e1a3f1f4ccb58f192b6c337976796dab4e804cefbe746e7f8e796f2b0839019b7b587bc6efebe54930aecbbcb76df3cd8608f6d8fd41c9c878c348e93ca15c327c32cba2461d73699dbf139241e77fde2b01eab77ee26cec10fec4f5678d71ccc69f4e5cfc8cd209c79f38d4c9b3c82fc678423977f9e6dea3b81622c34def3ccb5c6e429e675986691886619ebdef34f601f9f58ba7b6c2461693df38b8a11c6e283f9d2e079a7ff2ecfde51b27c309e5fc53c2e5d70a975fee0331e779ef4bd4a36f64104564faf4c9d521f5ea0c2157ca29794f7d5e7f7a21572184144208e14fd0f3f69e01826d7f28ce06fab381de1ca55c3ba40fd65a9d372231bc0b0fe165ee5183649e55ae42970148fb1f073cd07ce8308636e2c2d71ed0efeb1aa74ca4a2bf8d3119ab0ac25990642f08760dfaf7038522a55d50108562fefdc07ff7a7c33620d295d88721b2987cd7fe43c53019f34a6a12aebb7c6afd539b9c80c9cba084fe0c42ddb14fa07eecfe3c311f1de807bea387de3d9f0e03a3c4a8b4ad75753deb98a21900001000003314000028140c8884228148301c136565ef0114800c8c9c4078549609b42087519842c61843882100800008808ccc0c6d400007dc24b134bbcd15fc2cb8023d2737381f2a38c0d6c74b53174531d5fa07af84dd27b0a87e603e9d322b39189a94a4768a495cf0e7278877827604001c1314a2015aa994fd0721df8a2aacbd9813532b9e434be01e8032d4a8320e14fe7e3f7b5bdbce5f658e32412d827ddce951e3552019f5dd142476e72cf4cb9a2a0a30daf2b4cd7efbc140c80150dc992b514229bb477e82670fcadec11e230ff089b384a5feab5d9a7ce49841fb2ba73d08261d4fec39f1ca31535d85d260fd78c2533c152947e36b61b2978ab4ff2793630622d9674586506f3d09845d25cd7fd434135a03c8eed3fb2a9b228f302c9d5497256de3d7291f38954bb68955242e1d2b84ff5de417ec77269f33da46f609550ce8c54f91bd49284100e1f9691f0bc4fe1efff3bb9ca17e7c7c1c8d2e63d98edd557beeca7501f6fb50c6b1ff8cda90bc9e13384bd21970a3e3111798421190c192fa447406ffc887570abb2a7d572d5e04e627ef1a23ca530b7e5f6d99f9c8d065201bb57e37f91ff0b49cf3196d2743d4b7b0b73a6245034674ed3cdd6d45b32dd332c54bbfd7f9dc948a23e25f0a6785e311d00a8885eb65af87ff00d10837068695cd7f1e658c13c67007b5f44d204796a77b00c1d8c9e7f540566575f82b9f10022d4147a7a1efa669caf914f6c3d845253567f96daf06e0c15a22e59cb6261ebb55dee751762f701c0c624de932edafd9be19c4423c9024cfdfe26c7ab6e67f71c3a7a88fdfc0067137c64dbfa0cee47aad67fc0cfe28a5c0140ad1264cf2379baa2f56e0580ccdd57b1261caf179449ecb9498198f9c8ec28af371c4d3a8f0d6c1c66c58e27a7ce4a0791a23578c5b0a6598d2fbc8306860e4018a8a18f605a5439aa96a22401eb12fdcc46d758ff16ee48b488d2863b21986a7f4553813b6bff51ef83ec0adfce868dfa4be700ab97e482c743d9e3c817813ad955a8b067f64dcb8923b05d6dbc6321bd885091d07de5c32595295955def6099e3d30bf7a86f79738054debec59424e68e0f674cba6b65244a0022b82234bd385e7ba010452e449fe2eed580890e7f5df3b7a751b3065a4157f1459d39ecc2264a21fb753198a6284d73f853d0e39c4aa3dc183a4c4f4233d7e12345197cbd025a06ce727aba9840dc5731d1aee0c96e0c7a134c830d25aaf0c68844f517e3aa571319cb03ac4ecde53821a3fddd657f3f9cf1050a20a3fb997437ea8daad1356a8db4916de48d88376e41f1de4a10d67b9f3e3f3c5f42fffcfe67d816abe160e8c37d48943d53f3d89b540e9e4861d3ca5cb01bc412a5419052f6cfc8b93f05b2e3683c666b3cd70cc1858ed468b4a269bc4474a61b2582f30824f6f46747b8871df4c8762368ccfb4bd7063de84c83ec3a1a8f9966cce57cee4317e97804897c17ac7a31f74789f83212473b273b5fda08862368e477647fa24270cd28f2c1adacb60df74c63840f499c26b4477b6585b8fbc8b3a930ca20aa935338ed000e6d69596385a0d1b0f7fc89c41f682648fe5f2b663e6bdaa2c2219326738a4dc20ec6960d9bd0a4b0f09ac0b03746a6253ea6fa2946338ba66550ad2011851e2041a884af2452bb03ccf25a4c5f4090e1c9621e18de1dbf797e5117428e66a081e9a70bd139326c12b13cc1a235789705b995e759f9971e752a90941c7455693b4b9183d92ae25b5da5817a33533ffca8f31867521222baadc733f27de65c93647105f85789b6e7bf2bf70b276c202c20634ca363f128d2fff138ab6bef916217d4e475c509d03409be9a71def9e3965ff83834a4fae1dd1cc82779c06e524b20265878913dfc81cea5c00aced423e10d485c36a20a1d8b503b84d2ac529aa51a2c0e9ee948034673af2bfafbce2aee2729721b8810513c4659a129c465ee3243407fdff9546f45e6324fba41a2f6d228de0a511ff40a588b7dd843610f66918e0d102bbf7180d414f0fdf1cda282948fad9439cfa9937d6afa7c83ffb96d52a96a3191125b3e94a9d1f9be04f35a6800820997115c83b86fff7e5c479239fd5adc3e38c08fbf1971e782b8835580f69b596752c85e1cb40faf65a60dd414ecff7887e27260f7418efa05ce7ac98a7d70f5d1faa632109ae025446de42837174281d2acbd68f2747a2728ef1bd0a684444504524a311df3b19bb718b0ba012d1f7f5a507e0f64b5f42c3325a154b0bd019ca79adbe7613498353c4bb44e14f0c4cf98f23cb150156f91022989823811f4d0013a9fbea76b5022d52f01ebd5ac1661c0132d2761b0cac30092f91d7835f4a95282251f3b45821a5e0e25fdab405d07ac0454fdc0ee31c04af13be20402df3478cf6dcf1f8d9587fd0111ca6a5ef81b7aefa3d84a7b32b9d6f5df1fe93b9f59f1cee2940bd1e940eb79b38e842057bd538888f8de0076ae113cecb09b8cb56d8d9f314b13a0c5e7e2e7375c1d41b569f9c3efad19e78b494f05dd06963fd241d92ec70712e5fc29d00dea076fcc591766fad1a77f4ab1a209e9260ea48959f21d3cc6657cc69c819ff3b5ff972de96278518b0718e717ce1441f1e1f4bf1a3cff96a702d9ef7866648d9312ab5da50a14d872951e482dfdfc142e047e9701990a73b4d63e540c72c4305f8b76a490a9ada759053069e2151223f26e7b2821c6c3e70a29734294887a637442b135a542428bbaad03a5aed9c697a4ad1b05ffcae6a04718bd4922f94a640aa8d8f5172748924b5cc22c8b7da5ca6f7e1acf02699c1273b8ba1a1fc57b1165d686bb6cef0b8aacaa0ef5c7942a5cc9fb753f9b83999c2de8359cca1ee8298af8c05f9537bf0b13672acb625734ced42e4edb7af41dd6e6436041d929a1c1c6ed952cda299b2387d18c1e8c4ff96d41e283759094b81e42fc8f6e69001fa3bdc4b411d20b7c7426e402b5f1cb89dde33b565c1204bbe440d6e814696d58d46391d842ad27d2a89ea75c511d369752570b88f3652cec4adff5260ba5d7154d6ccd0aedb99d3f2f6043fa030698610fcfac5aac48ae47b2ef2e0b513386e1684f27f495c6cbee171b4365279b5bfc54f2548d25a79869e60c37162bb702b3381d0ad6c8d55a36b8aabb456875788257fdbfdd7e1e2d8a7a44560e0efd8e29cb911adb4a0a9dd5137b54ab48c3017f7e274f4aef6770be20caef26699554670cd4c438c3964b9b2b86c2150846443ad0d249bfe06faf863212806e145393ad6bd29fb1d7a0fa6b7a727c404b7b5a50c802f3da3813ee1c3fc70fe656861d5f14816fc992b26ff3b5d4a2df032e761d9e234accac1894abf21a75e6bc8667515c88ab6a22917ba98c2dbef11728d686b192299a50a5332b2bf550de362242a85484da755cd748a60b73511f9e5192a17f4c4a4f9295370cb5af2fe5cc543e2da158aa5dd47bd25ff5eb1444003e8bb9d9761186402c3c958a9f001ce3bf017056d56fffbdcfd67dcaec38cc11e1baabb47fc38a723c466d9c3b0100ed901b07c64399839c09e5b60c25de0dd3dedcb8430ecd0ff16eb77a875c08856ec2ab7f8a99b8cf6024a356486e3049defdf943d9f3d13ecae5917b1840054965fe0ddc682616f194ae54164fe3928bd291c17e5857f57dcfd7942b1b8b5d301dcb7eb80bded97760e327a1d1ac57615ea814dcf52d926adb915f7203f9c0209720f4d9abdc603ad01fa22567425b9001067f02f1b90fd8c877d10d49409f65c61eee143a01679ef643ca0e6451f3d902cccc520cc53940724b22e11732e4365167db53d681266b803c0539b950a6cd8ff2c9454907c7b36b003d2dbef4b38ef2102bda620618906914b248de7ea23dab2829cac0740bd06bc9131f6c5df5dbb52ea369ddb5b6b530336f8831ed5218ea57805e09cbaf746dac8e40573330aa8afb6558ebe4b521eeaea4060fdb065f46b7b1d32028e07251d11abb68e19ad68aed888ffdb372a8eecbd8ad0ed4968ffea22c24fc39792dc8b1e4e0836896816971636a499fd93ccb6dc6e0f049145abe0e2d898c5765a29eb93295a24a5b31fc5125566d6034e8503ce31c6971d02578ef859355e8a2973ce8576d475d890a4d8ef3c45d25dd859a1a864f8f1ccbc52b0d3453c22a7d5954f5a46d79c9cb6d3a930c511283b8aa72a6a3c8f2db65923219ea3366e02a0a804ab8d9eac6c25cfae9807468d78ae8d6e4d16c012b50124eb17075b491f88ca0b9194fc1f36be8709a3b033024981a60b6c47e6203539d16215b3ab95bc1791723e3425eaf10fb8f46233afa8b4941f5e9fd24cbb4b15c1842297276dff5c6ce8d24b467ae06069300e8529c1c6cb054b7e02cf2ec74493638302f96b7a761ce8c7f39f552d789dbfeff0ab3bd5689ba795c76b8bd176de30b15901528079577bfaed77a07a39174cc913defa28a343b6faae4e3ab9ab84ad511cb884ba6fab2654e745313a33327017d1f007a84ac4f2f8857648b36ef36616861423b42612fe80e07d89e0e6a1b813e3faf0af0ebe1c99a4a61d81e42a51a85cd919555a820dbf5f0ffa777d9315bdb54394acbb9593b581083c494a4e027f37f8144cf17c5a188152c5ff0c2e568db77fcccb610aa3b34315742cb7ab3688cc9d390adbd15c31531d9ce6b8160343dd513ce1813ff14b9be80e4c83b65a8f211a80de78f05ff9b016f2bb9881370b673a0a9d15328ae1992032ae2677f441dd0952d39883716161c0dcaf8d1324411b6f2725692c74c4124d9637b1df3980ff5587484675991a03f7ee623790943cdd18e6acede1aecbfc221ed4d0a86c1a2723ba2c9f8f89cf8c3b306a6846859e5b50f15d5b8e8ce2d1210d4bea2a082885767cd26f2a2c72051ca7015df1e636722ad61a3fb8750e54ea3f7fb92e03df1b5e779ec01f82f5b399f920c151eb56a9e1e1536daa77af30321e2051fbcf60fbec5a33292f46ea0eedb324b77a7f7433952748bdad67e3ef27b50add7ea6f3032139a5c88f6b7e45817dd5c3de79bee7030ae67260dbdcfede5d9522038e44cf7696bfb2ba30d43bdce7268d009c62584a08c6d89b342e236d41b67853040c14d49901f04aa5452ff903c5ac5b100fa6066859c8302f5dcce4eb8814d8ca01a9fe3a4700a3ce7e9d5dafa88978edcb8e1f1a36c7a8cf0012707be8afb4293c05d824dbbfda4273822901ebb2086cb0f256f38508cf4f003f2e73e5d69a40dca8a6c15753d126f2c82e502396e594f2ae61a31ab3b294b2e3ba983899ac7c0a0c4e949cfc766ed15b016e38f570108771108162b7c434a5ad239c134bbf0471ad0606a23cdcbae2c5631cd26abb8cec966bfbfef2aee0a0885526386dc92511966b8174add69867d5dfa9ad6198984fff0bf8d2e10604e56769ff034a73bdf8582eb901d39f6590724c2d9a0d45fd5b1472d18c22bd8b232e557bbf0c935374bb247f957f9afe61ae67e6efbe28ecd8c04c304ee0cce24140042f91a14bd8e224f601777293c996bf07e35d49d6ac115155bfc133819b6b7fa2c9823c4f95110d4c66ea7af45693d907a8d0971f0714eb60aab5488ad5609aa5e0a31b15456e24b656e3de5835eac1a75d8da642a75c3cbb400439883191c6585c27247216747b17fef6cf4181fbd4494fa7eef676df2e2579b092c59255f56ac3cbe178441d819face303d8ef0eb35df0f60ad53e9e90806dbe89e1f83daaa9fe2acc3663899b25be0fbb99421aad8b5d7ab8f46c0a39bd714a50b49f51bf0fef86de317f0cc7301027f5df70c91485bbdc20ef182fe56a871a3d7b336ae4668f6aee28f5c75a51401c6c515578979f75dee4f795604a91d42dec5581a0b22b719219c0f8fcc9f5de9c40222ba75eb63b259f41b78b4b47a466cb498d7bae3e8c92efcd42730b44605fb4cfbac944d7830e066ce87a54eed849325d73c3f6c54ebf89e99cc023c09b91e47195e3dfd951ae9cdca89a6ab11e5f124046be31d3bd0955ec79b92f89d60247a35d86f1a64588109c18719ce8b74cfb3354ed7f4ee5ace2cfe578a914e9e8078f07205e76481d8e94fab3e54c1184b32bb1e5c84173fbf55850d310f181411b5b08aa0f327f9af9023201e06d246d1d0bbb6a3014f22c60fe46dc1b4c1e453d7586a62ae3d773db9e21bb815ab548c6477732f341b4aca1588c9d9fea25760ef6733b6e377b413fd1e2f7ccb28543dc13411ab1285327f1f33e461d766cf1387ee3e63a1d82458c41520079261498ff2db00d7af01ceb74516ba44323ddd482fe2e3488920264a260cb379af0bac39b6d6fa74aea59f42d820c9d1dabe043dc79cd3b70081d5a28f59b1818956b6456eba59ada48a0793aecef9b89e439782e371e669c29660e527eb1f506ab0724f90e71981abfb5e69569412badbfd0dfb26ea97724ffb8a304279f568c045cf3022c9bbdfd5cb4c5b5c65013ca1d50d9902f316a08f31c340194a8fc08732cdaf29c3b497efd7c825304525bb89f6cc77512ce2f71ad2abaab2981f09d78b6f7faa822d79beb6f0d2f9bcf8bb3f8148551d2c7cd05fa88e7040883de2a2ec48faf2636dfd4b63de4d54bd0e780b57e96461e242cb5d401fd99b7b9c6af631ffd33dd2c38f4460fd407150c916acbd20da45487530088605323fcd5e6cb1fd1322b41587a529ac075e698c956cbcd346385f0fc50d7dde586741bee6897c47642adc48dff47f7bf608c8d494c0dded994c86f4f1b61f0dfc62e26f56dbd5579eefe486584bdce79590050188e7a0e43edf941ded2ade071cfcc766a867524933830160c0655f975ccaabd179d275bcec68b865b1d87df8a57878fc299a56f37c3a0500f3104d078e4dcd4507ba8644ff2172694e0dd2d09e05f1759976fac0fd9fcf89635bba139dd0f12a660f9dcef4708341e6d37aa59093f530e6b24cad47a451fb2e67c050a1fe2157d2804bd2e51531463bde331ae068d6d9007a984811ddd643f2b96b73e9ae63d82bda6d69c73cb7429d4695faa9fc1e3e76f1d42347d89929929f9f22a05e7f1b05bc71a13b9f7eb0959b88cac8607035f4558b89fdab125e0a1cd2f23f914afa03bcb67904348da6dafdc9d6f578736202234e47f8fb6840d375ec167df63b8296a900abb6a05f3cc92bded9e802130a8e8a292956519fe0669ecb371f15f5eba022275065c5c29ae770334d2f5c62ad698347db09867b4e14d7bb264cde98a5dc108d75a8debb1b0bd18961a79f624a5fe45000f7deaf66f7e38d284bf89ba9daeb107b4354ff7ed5842b64f7b1770acc1fc1d5606fa6efb28fe2daf17e3f9faff5462e67de18ca4325589113945fd4ea25a2ca748fd246436b6292455f53f63517631444f965d63338f94ab682781e7b1e7f2c1d46ef28b18c752f6733012678f079e3552f5ed02b95307d98cb3314621feb4f8f0e8073841915d006065eb69ff1faa208c3a7fcb8ee5099171aff29960111b08138a5af4f5eb00ae6ef2c0ae1639cb44ffa473f110a979b9e2bb10c12750df068d4a05f6c63c600f7cb05f3b90072ff538772617fb303f61722e79f95bd206f3a5486871b76f18155cd5d2ae7c9a2a6201ca846dbfc82ec782c91ae3d65a519798efceb4c3a38f3ceafa5925c35e2dce3cdac74c5ff6685639e8612a25ac6a03072662fc264a13faa7f64e7327085362fb0995dcbbc8518b5b64fa593cb9baa71fb98a36d4f66d4a79e686662b51c8a9886d1ff3a85c4285197e0a0c79782221a7dcfe1adc082ed98e2c41f81ec9e1923938c9babc08763161442a11d3cbcb349d7109a5ec5a56c67def606df3754983c97a82d213e43931e37d8f093b12e588d7c52d9bc9b68e112935b4a0b86fd88f14cf48da4960d28251244f8d9e7a99d82b8b60e883d0da916ffa5a6d28f49941fd1da69601311ea38d639a98cd37eccf21662331ac7d4fd6e6596909059d50830cd6783f90b8e7d2e55855b91d2208b5d991a1208cd359c60d42c6aaa5716ba836b9005e910c04f19904e035ae68474aeae217a378e090f0f0b56781fa114bc46ed886129bc34fcce465cd55be0198bc8e9fe605666ae0e4b3656e8e3030c76f42283b693d002ec4e9aa98ca5d318385fdcb41d56994c4ac2ad43c402b762f95d8107097781793bf7837689ebde5770781545add9690624872b9f863a519611083f42ef6e6d96990324104f4497e61cb918e51c09a37af5800db5c0da7b47cbef4523db385c077736333298c5b6dc434450127b771688869bb22ae3246b3e3c466835339e88e85987c6745458c114644fdb2008aefeedb2bfd5b083aa2a4761ac2746f61e332491b3420c641c2b18587cb060d142c42d4396d1862930a190c613d8706651001dd52520bb1447a89256cbd7a144d60503a9b4397d393e8956dd041f75ac1bb45851f9b99cb76cb8c748981ac3066b89e82aacadeffe6f5140e573e44299d8d989bc6879d01d4f14e19bf9cb2b4d308f259d36305a23db2abcb840a50a7f1b0d11d2e9c52179b8856e923d8c378b797fb118fab07adb6806c45159a493cc3aaf9dd9384e88028443fd938d9d72a8d832c93eee7762604db9fcb915a1db84ca4618d82cc4370eaaa9794eb2b6c37d966e1c10d56e88be2cdcf17d5ba88bcf044c86780191a8e044782e6092917d87014f39cf7f051dce1d85f8c5ac7b10be99c35d8be8e7e97d34d43a6484aaf503ada8a19edda11b982e429d15c98734c7394949749b6aee224d34e82cd207181ae37d35fc581cf592de8b2ad192b2c80a95fc6fb34cac0a1d5f6fe42320535f952d08dd845c2871c6ed83275876a0e37afd8e772493207afddde9a800259940057124671c7cf075b8739168ce7e1f109215208445605207e24bb65c55425701a289189da527bb35ecdb82ad175ee48ffe75f6bcd30177c8c4205a8b55bdd043150f4dc550b91a2528bce13384e86f859114704d7e9b397035016f36abb384462b53143671e2fea9d693988ecdccac703e0dcf71f8b6e057bdfc9ffb91440dec5e0a2625280e4baeaced7e4e6536b5499ddb4e501635cef97cd3d3b2684c3e19551b24b8008275386406626221e99deac78c415f0dde0427e3aa58523c2be0c68714eed5b1b3b396c125427d95c423a962a9041485e68e848d5804539740529dc2b20436e732a0c8300ef520d96c025ddec66b2014f6ead4545891242980ef69876daec4a84d50fdde6d2a0880e6ab2bca94ef2d173cd2b55c5c5f564969f5ddefa32052ada18a04f074cd8246b1ac567ba64d67dc605318808309d9059e8155a1ae4016a7fc047cd81e3a88bcba1f026b7d8e39b3f9af70ca12043165e441b59dcdce0ffeb6e66ce34283d51a25fc443fcc3bc6b54712bd7f90b10060eaa0e6dc59833fd8496af3b42c1ac04c9e37c4858d7e86a5788bccea878a2d68f88e24cf0fdbf8b5bccbcd6fdf21f33c9b35401e07c6dcd0cac5c9b010bc762b4b8b1d9800c8d7c7d8e1e380d877015b23e55f2d27432a6a6f801c3b36cfb70f825d2ea07deff6311820d390dabda5db80740010291eea2f35a35836221264258d81e890835e6ab20a81cfb7e863092b22a17297d8408224aae594b7ce11b85b2f5634daddc99962f5a64bdbfabad26b78e4e8265bd556450cecd09c4345b4dbc115f1292462caa42aa91880542a1ec3819f5ee41508fcf5a822acf38da4b7328591fb11da0484b640f676b5a11fa7bf943d0d0b2c8d549619b03364840874ca6cc9e57bd920c2cb43646d4a5e079f5abcac2ac4d6f2c3e83bfe49636641421197040d53b87c0b2467ccba09ffc20f413f4eb793e7172adab61d5b2407172f454b9899efac45445a621058e07815b95d345d7542f5a29613ff7ab2e1c6e87f452547dcd0538a9f8d8c6234c56945e64ec1dfc95dd699ab388757a3fdbe7024388526d2fd789aeb2ace8f3cdedd0d4c1556945e60b5979d60a99f1329dc19a77417ca2d96fd71f17af00b2687ba68df69b97e4382c8e0fb33ff2785dc759632e0a994797902da683582dde6ef60cb8e35a681aaf9346f438d8bec18a52d7642431b958c75d7b66b280e468ea561649d505831af64be326da7a2d928bbba851ffa45b5958c1946b452a00a7aab45c8f0e353a972f90dd0a43a7a0808f82f6fd6fff256ea01653bb9a0067567db55db168acd9d19865a9cc898886a6aee3e88c81be5895134709ff88f13fea614b4717883ed89938bbeeb9cb14691f9547fe1e9cc2cf3a268b0d57c07288b9271b008c73004d1341178fc3e8152c61553187a952eb79fc5acef31afba6c8d03d32fd3dbf0c855f3c5650cc9ef594887b1bd4cc47892a284307dc23465be31e2b5400a2cd2c2b5337b9738a84515fbf8c7b24713ba2e013fe5b708b59e3d1ed34c92dab26df8413ed2c1ea15580f035eaa08577667d52d01992c1fd1105f90675fe7a9c101063f5410d5fcc7c9820911b99844a78e7e6bde279e31c5032b4a5772da5902f9085f48441b7dbf605e5707cff1ac81feed5713858969979d9efa374329835bb96efbf3359aac660500917232416331fd6b1148afde69df4bcbd8f29aaff5abbe1607366c0111b6ec48812616a5622826533a792880642f8ab018f966b658fc44af576e5bef258b637f952882d4260d1beb488b490e557a5ea7c15fdeb47a7da53242d077e3bea45e662f55ad9be526323dafbd1b4eee147fdcb45ac64be4a1fed68a1760290eb866070e0b43c7091a770ffb9ab922b2d0e856b920072ad0cacdce79073361e80710b9ff2c0364acf836a9e10e68b1be2aee71d5902a66f2ac3b933b6e4e9299140a4f59da15ddd91ddd4cdb66d2f132168833320179257586ab079bcd6b493bf45dd12aa2cb00b6985132d3b54155b101efcdf077fb9cb3247a7f5c4acfb71a1f97d6e5eee061951e1b9d4ff7a5ea50290d90918fe44a336b4a0f1f9cff982e45e5ec8ce7763bc7fbacf8430bbcc4ed1e5f33d9481e5ea17731d5a53c230e7fc70ea4b938da7d703e919bed55246c39405369a3d954a063c2a91e30885c4b14b0b9a470ee066a7865d4a34cf907f4de71bbe00affd847941dc0c5b5379fd92a6b25b1fe0b384061e60662e91a4b717e0df2bd6ab8c2a75c6bcd9d04721231f43171504558d3d7bf1658fbc3b7441b641ed50b980a52f426dd8fbcd2d6fdc0f83871ebbdc150918a6aba854d0fb8c671afabdb9d34c7ad0782965e54b2c04ee3869a9809e990f961fea3229a2626232f186ad8db1846f06821ffa4faddf04fe5ce071f74350f591f2557b6ab2995946c35d04f93dcef60e7386fbc8237b58fc6db8d2880334a8536e612dec7472cf26bca68934393a9a4b26788e25ffa32ad76e6e900dcb20be4799f006d782ed9fd35387230f2fcd260943a73ec848f7d70efcd7a6df8421c0922aac1bd3ca93ac8d9428ac7944923f874ff34f4648208ce4a6a25d2069751b4819ad515d2568178cd520e9d184026dae6ba5273452016f5d49fdde10fa84d49cbd6679b8bbc2fdee17891eb32f8558d0f101a3c42373f74c64f95a4b0a108a545994923a5538f97b33dc88da0789bfb27834976b7100a3073f0315be93b6d8f48fef7d34f4cda6207228340ca734da3210907ec57997b53f7aa99647d80d1cc5cba162399ba0973318777d199a51a98b51cf7bed17708ab9ca12325e3019780d711ffdca0c1cab2a6ebf3f03a1ee7d7802ca74f8c490289df28fce50782c381af82e335c8e757a562b8132d04a55abfbeb609baa065a3facfe448c6364d04ba9e5429c355aa1913c221f5b3bb1b218cd8f6578662749bd028161d6cf30f3b50b1bb3bffd9f2cc8122c0546aaa97b60be55f970bca69f9c1be5d5e00d07dd7075b4710c8d3b92ea267b269901213dc51d9a20f1ff416ecbf2cefbaa554a8592fe13047fd9096f53d0e01a964b1610f3aba38466fa8096875c0baf123a3374b6ceb3d2ae20ffecc4d481229e3915460c5263f8e4001d395c637cf149f8e9c4eadf8e63e67fb505ade958b5d3328eea66e1aa954844cfcfae201ee44f822e109ad2c7d151320437162cc264dcd1d341d587b1829b6f29c2a762b1658a3e5087211dc22b8b7cfa0ab84030dec2121238a2d4802e175e47e7079239aab40768f4652836a128a73c264b626c890c409d52722dc70c3de2311b9167f893cd8dc1555da3da18e8234fbfc3e981c1f1e5e09fb09de65874f27ca13a73b4ff0f449e2962fc6e4a267eacdd7bb8b9eac53b0643a42ff80a33c0a068badb0d202aa53c760b5906fb5d4aba579ca362d8a7b7020774cc3cd0689799e8fa2d9a0466ad6876288853ed8dd7b712cc9257d94bd6382a723e23afdf7c7424418e4baa4a5e4cf9f3418683ce950ab28df2f76dbcf81fb7eebcd243ccd9cba6e408ad160e16d6591ca4123d1cf3ca2c5cd6606f4df8c582bb68be6d74e086f371138ff688d9743b9e4482597285e68e19f8c632f9bc054944c2048b72a3dd2d3d7039dc17b99a0e691da3e5b23c58292359cd3ec48a3a5f021b3d5ea161a442adce09f426400a96fa6fa49ea4f35b60d755a329e5977e4bc50b434ec5b9f3bcfc471d7e757ecec4d948a4e62349747283d5793d37ad47464228f7b5068e84bb5b821a4d1e94d04dec0dfaa6fd4079cb9f7c5d14844377aeb8269c6988ba12457e603b4b1ae47275339d6126f540234f12ed6419ce2b43f21b8fcdb58ae35fd63d70ecc2b10ed5c9e779bda0ef45a5fdf06d68ff248b5e384f662b9ce34a29f4124c5a7330e6d2733b962b454a9e87fee12087360bcd6e5d0d31a6d4f4a7ab3fbf4383b0e47bf9ac8b74396a35a32c55c07762ed157c4d0c8bc1d9b99b48bc2459e7b3fb1cc03c62bf3022530d868660cb2de2a48188b356c0b6f93f368c517712740fe58c7bad04a1a3d19f01323002c5a62961cd5d309ea7f1737cd065bc69e0fb924ed7487e98a6dd83d82b0ce38e1401781d50bc4260d88ee8ba3ea144a3a4e8c9d3cc3c5576c4036857d8cc5b9eaefb9072f8087ba43fd2985c8515d3c75f021ab01ab5d6067ec2dbca17f98dee4ace8b031d22c4efc380a610faf6efe75eb323fd4a03a83c460a1283b7f6afeb42e730623f7a90f50a74370a4ffec861062121376ce81a87802a5d2aa3d9e48290e9db3fd47e893a99f20d739089d1174bb7f607065a6c5a658261d5431c32334790ddcea9c1b6426552be09ea6d9b63a16cda55e637f53a1975a831bdefc394597c3643985aa2acd2922a572774aa303ca1304b1bfe8bd0b11abb31de6846b85db62cc4535acde125ebb4ba10116d2a1fcb23d90b788ab7731567901e74163d6af881a68eda141f909b6b3c7ca631780853618be502f5720352d88e8934d90790337a75f0f4af0b52c62b012120bcee2d9a9239ecac3b581cebcf8a2cb25674075466b93ab1fa3c6ed9c8403d4bad0fb4c713e272e30e8c96b5eeb222aa41f7f33c0cdd7865bc3115ee0c99ec5aae0ff20448469b3415fa8de2387a8882000d147b3161b587ccc4f0201f8c926329a18ff1a84969538fa4445c5e826b782af1f57d265a9c7be63a0be6cfc32025037100d31afbfe64ce06cb279316470824abf2f3de4254d5a972e739a72330960081c8e10b94936168ab6c162b9519c1172bb7b25cdd872f92038af20efcbf71f0f3f5835f5ca8d7c0c9b932fd8f34dc7201e608e6a8fd81a3951e05a07b755d96e9911e0e2d8b215f2c8b604ed024be1afbc79cc9322606174b4b1d80f38493db4d68f20a143c494d8250522f68fdf49048ad448a57961f564b99d51e958b2912a9f687266c92dcc9e3a795504ecb0f449e83d7d47da33be4f66a14089fc61fc64f9b8ee0211c30a2ff517cffdfd86561ad30c747213dd8341dc5188f94648ee6091e06c8d9494d3bd1804866aec041db45e688d2c85d98e66fb354f9a162cf1c3bb4bcf75da05ba0c695c9150f2d611c7ca76938fd44ad05d6011b73e944de54a714721629b93eb3192a399c83dcabdc9aee757febe855fe525ce55fdd0effced287fc8a4ecdf9a41c1bc7bdec80de27f5302f9b847acc59213c1cd8dd2069f846bc107b69600cd46c7cdcc42ae091338991e3c7237bb85fe3dede5ceaa06f290dd6d7eb8e8c75f4911d158d076276c91d8a4c4020bf6419c1ddd93054fa2f8e35fdb48e7acda8341227efe8021b4bea9da7465f6c3dd3c8a6baeb4e775d3918424306781a5a6fa5fd8faca28d62cbe277241ed18964e9d4b89b597acd1eaddb9c20cedc2515dd78c0990a290ca7380faf85c44cd8b04f181b047eac1cebe76b08ee6892daf17eddc6d398232004359f4f4fd7a1ba8201e5e2980fa55433b31fc55a153cc00339ec7eca0c1cc991d7ffb5fea023d62dd341d4e08830502959845454c7357e21a0e32ab86608da4417c5222875af0e89ef6df127da5bdf3b3a1e1f850d28a84041bbae17fa140fa2a9a2507fc48baa565c4fd425a62ae3ee7ffd6ea810c8c1d870864ece76d896fb7c8019ec7225d060d1e2784414be7c4236e4b9b02e5927d5ec2d1e62e64ec79379070d296466236f7c8c8624c6569cb2e053d3e792561e8997f7bcf6a73aa1aa07f7a3c72d3db51473988e42fb7b123812a750fba0e603dca0475d0c4d00b1197320ddd6c5b07bdca71617f38caf9e8234da7c7b06c7caf9b1ae26c3150131989846bb8185f4590253029098d5e6be1409095e013aabfbcca938ec88786191c3027f04481108e25052adc50afb0ad577e77c690c95c8bbe3971e96f2087d6c42290de75f69c9ae3ddb735691097aa17b24e85ca996a43fcc4a92ff7755dd6c5dbbc415da270ad047211b22fd38fe5b021c61186f23725ad51d32d638e992177c57e9ac6ddba0f89448af85d1cc44eac40e5dbf312645453766a6ac84a4429987aac4e7ca2efb37da81c098bc70055c94e2df73840e4646cea982f998f9e69f40c928d095438e545889a774188245fee1ece4038f4141256c911af3bae3b574b6131e2e70b6ba11ea3bcdf562e8c34d45d511de13052343b87ee513e8124c18af03f395a3a414865ce2df8a9fe825540fb167da0c5215118cd664bf670f67a9ea31c64fb918dffc067ecf3768076911b3fead868f83c44b0cbe2b2e89c0105700252cde38ae0a6de504c73509f9d545cb2c9fac3b2b2b28ce747f59175c9c9eb2549893d90a4c20b316ecb44774385168ff8be84f16ea9fa8caf11a20a1894ad4b101e8700391569973becfd18acab680c31e0a4aa87ec588db24a09c8cfcf2cb15b1999d600ad825abd03988b3f43e949f7c5a0d51aa9e040ecb612234c07811a02989941cf058e8ca1023ebe2e2cf76ed39a93e2b05453ee952d9e0f0cea0e0541dd3729e1e1d3c328bdea39fd32a8cc1842f0d40616b63c75bc2a1f44f21f53c0c0e0892911d422cb67df469e53d93ae693cb444fc2034ed8625552538ccb4bc00904ca66bc27861c9a07dc6af82d070d47a1374fdc063b9aef110170636401e618f7904b6803d28b5e1245f14079615c3b015383fac7e582c61d57513fe23dc3fce69f048529ec1316c3f34cfdc6ce455a8924c3cde43dbecc5161cc6647bbc268fde02a1761979d9f9c988a20e855c6eca1fbb30fb72607c33fc0ee418fb880eefde32ce85cac0e3e15844fe0c0a3a90670800a6043b4c8bf9ce9239b8320db812cfa0a393362e35fc41cf616184d57570fcc0798191f0c9fe9c103cd3a85e3eb229efe4828573047bbf3b7c2d375bd3d42a7cfc7cc82567f1793fbf77b731279d6b569a1c471f48bea3ee082434e1bb7fd48acfc4997e50437fb14899371106e1f39ddb31fa78a9c13a3f8c6c7dd3f78b2ee607810b87e043d4b3e587602c933ae3228860e43781e80e1429242dc8ffa3a2a1fe44d3ef6d55441c1864af58972630e603f45577dcca8bb5dce200c74bfe0748bf085a278a7f4a8001c520988a40a79b812b9228895b5e6c7b63ab0cedcb33bdc290e21c840919963c845bb07078a6784ef8788ff682071b26fb19a30827117de71bfb98e259dabc6625ca3ace52764c234f5630c002f718bbd5fa2ec2d123c3094f6435703f008448b4b2938c6cc864d23b2b99ebd780e84f4e413d0c5b58bc304d487ace8d834c9f6073a5aa66c43b0a3a750b59f0754334d413f0d066a80068373abb1f66c8a5923710e288c0a3d8f030f8b924e8bbd13fdd1cfb406af63352de44caa336b246182505e480639a28c5b3652be109723091b7c29040f5a12198706ebf540e49cb728b7318606cb2344a7e3e8db111db113ecbb2971d8461480ab114150e57117cf75d6b698b41d4b50d0f24dbe7363b8844cd27f24b3b2f9b8392adeb15b8e44e07d336dd518eb86df82ee94adf9d743ad59f82120a071e9c57a1402b36a099baf27dead570628e9c00640f1cf105415a43c546ed1e505640655bcb3a3ac86c8b8018ca3e234653c72255e0f67809acf9f857e93a4441bd6069b900243bbc55b071acbdece41ed82d5f0d86a1c932f1f26d16c22b7f39f0445690515e08d8e3501e5e83e56967192bb1f2afbbb832924a88788e382194510ee3bad1ff8f15ca6f5a78de3325702c7ff14d60fd5d6e66da5e69669294454f2333fb02ab004024c96f508316b0a879596d49bcc76e1018f90e686f3c05ae0967d6aefdd184734e7049c845e04b6a26ce1d5eb92cee68acd377d583cc036d9aeb8470c8c0a237f1a99f8b229a60c7d771031c5fa024443008e264acb04a2da5adb2a28abed7e35d08bc56db9a96edba926fb8812fc270a2c8c15803d65596326fb2735095ac599423e69224243a71d22d0d02b9e1ab3b897e8b542a097474e2e9022dab7065414425e2e36a7cad6577959e156d444e2f32c25153db40f49a50be4d7a99529071928a5540e7e0689e76579e4b3fc16d3f35e30069756c4d8b01029bd7ec43803a2f4dcc0d48b755c2404495c1eb150697ba75ee502c5dd39ce7bd98afd44c3b6c55734ecd6ff9a524dc47540008b51c3beb2c68b48a24910efd27998033ad0aa85924ff50049823dfaf6639a856e16f5003470749064f9c993154c88ec4588b77fa4acb8159a8e449c1cb602ce65a1e9a0bd59559ab69379a69b419b1c7e4de42b0d8ddc6a42230c21f5d0f20928807e35f03d856011e2fc93df9f5af2c1020b4b8551ae8c898836b4a226b968457740761040512d230119fb8c90039198f1413fb2a4f5036875770a1fd6a3418fcc4ddcc5cfdb6a2c9d51a89acc67fc1f3b8f91901f08094884d59ccbaf343ea4f0fb710c18884f20154fff092cac0ed0c7f1970d557a5e55dc768544e3cc4c912290f8807b5f846441728239efd131fe42f98f50fdca7ffdc9ed9e5be40e022fa28126c2d257343d97eb840a965807d4a1919c14a58c641e6bd107f826ad25a0c3a1a6c1a040dae32edee4d6552f22bc77293f19884f0b28aea21b351306b9f8a3a2779efe5b9c96d1d5274b435f85d81e6e73bc8a3513c5714e706c85ed28e0573b6d46b494e033a6cebd827627c001cc299ad849bb4e127fae1e335b1c144ca4409a341d0c3b8660a86a3aec4a07d1c761e04e574d61056c8d34918e3f875d3086018492ccfda3b7b84aa75d2adf58879c2d47b1335e64f16927bae738ceea3a529719654099a7035f920b0cc87263cfe529e3160201626a31b11a944af838c07afc27888ce1e10fe5a1cb9fd09fe0dca02803bbf1e070cf9db2638f0d0c014ce44eb01a825c10603720cca451c7e48ef00f4ba9ba3105f12b0d3c99995e23e51c4205235e35ccac8714752e5e160488fe11e82b040c46f461df5ccf3e60d5df2e3b99a042f47787daf1ede71466d124ff0746754d5422a135b7b886cdf46d1848bc6f8a8348072f6783a039c08fcc84dcb360c066aa62511836470f9a1a70445cf6ce91957c69ecad81ee620c263d42d13060b841d302434801c12c79fb22d4a8a3efc2a44574eb09e0b627f2d014b3714e39d9088b82feddf53a73db674f40b7aacb72325930cccfd9445ec54760c97ff55584d0ac9554d13025e54006bcbf223f1cdad89311be813d21081c6cb673976f91aed3584303a53e3daf6fda3599ac134d165cf42707fead13c2cbc4554135eafa59eea09f4c8a8a0927417fa39f66afdd1bd0c7ef429f666fdd1bd0c7ff421f6defde6ee41c3d44dbfaf95b2bccc98814bd011d494f6c0b529f7731575e627cd6879923de4d484494106d602aec490e3e37486d546ad59379c05c3632272a4ecb04538070397e90ad27ecd5af09505b693b531d618e26057ac2c4557f29fd24dda2763c10a758f732d04801dabf490a85f1b23758855c2afb2b6b7815f169aedc0aa4d9c37866d5741563a25b73512e24ed390f6dccc94beda3b1062353955cce75ee563f56ede9db092e2ead799db5497364eb9d1a2575517b5dba76a72bb55508cfcf28b0a949e93dcf8dc60be1555d036fbc663e12adceabafbcac6f80cdeca6bd30bc5f2ebc404087ab78f5ce82024bd3be1e532b90a9c7947eed299ec90350702d338fe29449eb5c0c7f480b6b44b41c0293efc993bace27ba90c39b734e398460b652c026ce5e3409a4f8d7c01db9e465975c7132fd387ba50dcfd8f635571dbb751e79e32027aa44e532a9e2580248fb10cdca046c95aabec72a914665c70c26b51352b996b9666cb6a1f60b01989fded89b5296979292ad14da74fadcb4a9137e5fd05d6b5a4cd07b0013c297a8bce30b3fdc192e8b5b501f73505e5656733ede65fcae8658f23b1c7b692646d185c76e0a4c79cc4add6ea6d9abcf1b6f0869584faf7f6b10deea3c2c94fed48b5f43faf6bc8adf4650eeba7bdc3201a69a9007256946da4d613f92c7cdf81de5313d182f21d6c356dadbc0936a965fc78908e1e65551ce57763c80e8dff584595bc49450a16391fec195104709dd3ce04bf6cee67ebc3dc676642fe61a287d601b81c00a650d723a7f6ff5638392bdd1ace02022a0c2e736e6c6771c6c609887c3ddb1173a6ced1b02d02f2e4b586523d0149d40e784bb926acd5c001fa1f7ca1fd50815aa5dcdd6a09b86ba562bf7931a6ae8861d466c0dcbc2d83e0ad1660b22f3b4369d9127885ac04cbf55678bfa9da01cc91e9182bbcfae5f5a5f7990ac5e72a4287e80910d536c58f0a03c503b46f54dc65a082fab254e4b04322e2d4e536f99c5cea7f9f559078ccccd4f3c9e849a4a9441cae6cdc4431271d723821fdd2878e8ad2129a4a3e3c22890f295f31f1a10e86834806e372f96818d285d745fe95dcca0344f9df1dd7c305d0878b5fc053ebc22291a3effa9a2960720f6cf47afcdd86844bb1d26e4c50325eb4574d7e90a2b981292a605fa677c0bf1c9903eee5f5adb0f60dad2800943f5fdfc0e8a45aa355bec0428348569c0516b4e03ef5e8272097ee5618ff878549bca92a3ad3ac3618be757443fad41ea0e24f87e5a2df317b9ea5aecb3da9fd6329117ed140128f5b7e4034858da68b4e5107941bc0ab3b50f068a675d9cc670dc0559499ce582232ff2047ddc21362e916163c42ba913367b2d776fcbc9c50ab66bb2169cb02a33818b5b3d4a4cdf10cac4cfa54c9b8a3c7bf0423fdf607560be30983b112877f5ad3820c97dd56be611e960f2d9cac14c490ab57cd8a95b7dd79ba42a9df4f53d854c64b7a88d8fd8f54151c5b4db8658865f1c05db86bc9f0ce5a11ffb9739307b2884da6881f1f8e2c18e3c303c1ac51aecd90321d9f818f01cae8e755c97ba8b9aad8ad5a3f6fc852892569b636d5643fb5a702c6d4118d96366860f1ea268594b89d2e256789a5dc3fdd6e41af02364eaf5d00b89f738940ef896bd4d96dbfa924c49100dc9183196abe7e93cc61a3ce205a5ee9cf44e796115299add25cf6e060147196b461be273e7815f16fb32913a6ca3ca7c7ed28ebd15499e17bb9ce46c8b6889d2ebd6bd555228a87fec33ef274c264d244b94ded3181a832e84afa863b0cc17d9382446c70549ee124d97a84a812b7eeeab6fbcd452b0bd7372206f3c225ad42b6b7ad1aaecb550cf5c37c1f6650ad18af46918abc6fe9fc4acf3052a3fa5af9d36e6d6f0e3fa50ab9ba138785023d7a0a20ae68092d55b6f7936ce061bb1ae1db5e527916af05bf5a368e3c10e230ed2794554311b73652b99cfed5b4632b44129be74b948f287da33cc9de76856f301cd009beccf659f5f5a69f4524f9438e35aae45fdc3ae870838262092374efc1aabb3d6491b35d56e9358dc34e3d548515d248de549c0754c7fd65b39f3354c7a5a61f1f8f5b5adfbff1adfb1b608967314a02ba6d44dff3fd879e99a3c0051d68939b2f407b2e8eee31a5cd4ec9f6a9c82edccf6e83fb0ba2ae23411918758bb88567f527d078cf0eb619276ed42d843c37788950fa984b0a555ad1c822c78fed6be59f8980397fab4f25d86e4640764eb0a2c4dc7db81bdbd4521e9b6dda5a93ea559487f69650daa7dd23d49c836f2281f4d4d15a2962f0b00e380e09e264cbb74484c2e324fac4a99f6def180c0f0fef4d4ec15c98ca0f53742f33f0a550e14daf8ba10c13ac395c805fd627af2065964f36ef9d697b47f90a625b58dcab5806ff9d603321bc80bff742e8bec3b7a45298df127d72ee9937454964bc9ef505376427636ea65d4ab6a12e9ef76e8de2658024cac035e253f972d8539579b844bca9347fcc28f5d8212f84ab0bc48d29d0265dafc56895a38a5bd5f6768176c5c3cfee4d5f247b724380cec0746167e4c9da78c8b5f0a994768d527946240b93afeb3cbdebd11074411085a3867ae2f527500b7571ec66105913f83986c396de00a4aeef748f33c3d5060b76ff3325d2c451166dd71d23e3ee6804bbb3ffb76fe2f8d8851041343679a96685e0968a6a21677537bad7d1e48d4b5d0bd56a42a3d835796bea025d9a96139f12d5fdd837c8957e34e304029f78e2677f5c5383f91ac26396d3d571ecef75612dd9db92927c62981d83360c7ebab6ee2c8c54458c1eeaf0ecf6026cc96c801d66f6b55e300c6d684eb4f1b484df7e55258b432be096997d36f28195cf345c1f672e5086d079094e3b6dc15021882b76e9ca7e8582ddcf65e1f568ee50807c4d98fafc56bba9537b4e0184b493feefec115b84944b6814087b8af6af307c9908bcbf41e12040e010331ddf7974ab69deb80304e75cc28cd2b5b46827e25e2e99d0c465baf790f1bea84008c8929c0ea2d3f58ecb01a86c00fdaa51f9bfeb0d7b171a9171ae3bb84dce34f980efc9034d29515b684e5a1fc475cbdb3c282077af42b7a78f53548232e6fbab2b25ef9e3ee117fe4dfa30ef4aa5cf48ee2aa024986e3a43055b9a714e1c9b568b266058235d7ad7f0fd1132ee38d4b37e4a1aca6a6dc90ffe5cd702135b8f9b9f2e6a410a301e649d45397d925daf538f4c9bb36dcc594acd1406a8de382dacada15ab9d6e6a13a5be8d1b508b0943b8b551a80617a78f9c084f767b6d4b5fc7995ea8c6db45b079c6a9bbea1e7dae1de70a6e66f3362ffbce162f26536397cb160573ceaf7c14f09fa43fdf6b537c0060a4ed2a3324fd82cdfba5496161ae99677d1eba287bc28a34bce008e5203cbcc00d82ad046aaa30072507d117b7da1ece8ea919e67841f224a8444fe7f0672fb866d38fbaf1450ec87ebd26026c804bfa82cc9fd08c2e658dffdad28f401b458c3590ad0c5a7b1a7e350c451c412867430d227207298dfee700bd28fff85b746c6e3cbbad42c3f6ae1b17e5e38bc30196a41eda80e04154eed5704b0a850af8be8810a2be6912dc27c4345649b2a3e892093f76844128a7fb250d4257bfe62094f94d0f0212bf032198f7954d84488224099a34ea3d49fc81f67d2d557940369ba72fcc29a4274f0ae1a9a210014f05a1e672ffcd7358a800a9e572b21b72488f5c15b40b0d80fc04ef3276f6676cb14af90098923c57e93c276e1865eb877a8d91f855573bec0658508c2d4914bb058367f437c7d37e80ae48867989d6a9308696bec1bc61066c3649e4680f0fb3047506d1631c819d52d2a3fe82cada947649e5b4dae0368dc672e8019ba5bf65e65d5471197acb41570ade45b98a61a370bc0c2786f279b2797d72b27f409fae30b777fb8336a4bda34555cf015e92b5d095fc34cebd70a916f4d2650fbda691efb04f7f9def3c69be9c07d195488d7fe784938623bd40932b579b96d72e259abf95ec1232efd356f7d2a2c71e84b5eb9903b91f73bd6aef94c9815ab3f297c3422fb8409339a37fb7ebbd155c5e71b278904d93d64e187d1d4acdb11377fce65653847f3b7e9a0f5401bce77f48e51f2c9c60ed78f79c60171515f4405d1b4fade3bd086896efe2f9170e8823406c46dd0d0c97b30f283d90a608b55bbf2359ce93c68041bf1d3b5c2403a7d2c2a3e50010eda4df5ceb390e00916b14f747dc33d9caff3179633ded93f128124befebc2b612c83fbe0da3dcb917f8fe5fc85361efe90dc0e871ef311f5742e731c508f8e0e9d6b69b44765a04f550fa432d2b2bbb54e8d38d44415513d78808b82e0f35c9a2391551f92946459aa7d20fe31a94cd0658115831dcb892d41d24d444e7980c7ef0a27f039b79e212929f0333a9f30b2bd1e26891cac324da1feb3f47340c52b56c701c413abb3c088e9ef9930ccd1f0e6e95f2143674a4fb488bf356e190480afbc38fb5ad8377c69a1071a1d4c280e14658c11a7e66f3087d7c5c8ea99ac0cd05b46e9263893ef4da3876f8a240897c18b860a323275f1d3bc05af63e3416e22b4518b2def676eae5b3153ac9fd34614fd80fbe370a8b326adcdf0b3fe421b44c8f54f75c9fa80ae3b64c1f0c83c32d21d47f664d51a11aecc6bd5fbd409e7657e14b45088c9301adb63528937fe17467574f3f9ad1269419fc159784f5d9785f13212eb6bc8c3469f2f0c4084a6a77afb01353e87e1ba78b13a34304d64ae4848e8e177dcc2461d22ae194a58ffc454916934a1e3a1e7b02323f03cd4858d121349a4d289803a9b4d6ff60fbbce568a63590cf7f336942a3f8822c6540e672b896d4718895b3135d4bc19d0622c3e9c35e3da19d0743c7bad3b063d898e7c39340def0555ce900dca6a4422a798beeb7967789b2f40d657906c68341c8fabb4757f026d2af92dddc9050b1e1ce404694ba038d4bea8faa961cb0031365ec964a17f4fda13f99bc42a64b938553d5e875fa3baf5a340c07ef99ea697447f4f7340bda7539b784d72fbb3e506c858398e3bea724a0604e88fe1334fab62fdc0199ee8b5d189a05af4838e898669793fb20c0159e2a295db240de70bbb99a8a088e35d946edb0f12ffb89289edc4c59059a5917fcbe6170ed2e5cc22740f9adee3373ce66d4b11554bdedfc3628d086f2cc5811d86dc47d946662dfe34bf53fd3afbef0cf48c9899d28c3493a4d498d8a97cd30ec41aaf5f884aff8deaf968372f4f63abe16ed1a3c809373a3f90d9ed57817daaae387c6be96a800df50f38afb2abc0630b827e0929f21359667afd1ad807ad9893ba299755b9dbd599260c72834a46f800d7635050a1ecde266bf52567a496ed4f9cac8b0a3792d4e1169ee678628f6f4b43ba5591c2479e11b9166719ca37d8a82195ed772c0485509c0969aabf2fe5a26c48e102df18e4f0d2b018f5d2fd0ee3f1533278bc1446975d7dbb39c9e9e2dcb3d82035a5279b6ba110db4016d24350390273dde62bfa5c12adecafb0b9db7e645b0ae6d0706458659099f2490ce9f36a5f1dbc09fab0d154b3f67355a9e4c7ee61e7ad48b052f7e357beb6320cc946e9f3a48133195fbc5e4c914381fa943e1c149389d425248291e636047bed7182f13c3729f208f84a8186700cc1fdd7c13956b2c8b2d27a15adaf01993d6c500956a7925d3fa39b6e7191087bb46e02bd27a5236c3c4391b8a4bed2fbf27d21e3341a414353d1d6752a90a717342262ea892f22aa8e36bdf35d2d31f8822521e1380a600784307622975da6ac40e1ddbdb77abed28b74a3d63141ae177a5c25f9281641240c188143f4906cd263ac4a975ed263a684cbdf699732eb0886e366512d4a1fb3c35d2a72c7f3fcca16f354fd1654029e381b69d27973eecf417f43208f6d3a7bb985356ce36028152060151a7c70136c2bc49d8fe5a2e1f8b8bc00395208c74aa2e2681e3088325c5519cd86214391a3958b23056393a070e470696308e71ea16cb0da985acec89d92165062f56e0980e445bb8a725953e652c58795cce1140f193f7ef5b08dd9e88b49eb67433627be6e9ce3b00baf7da06327bdd9db7df4d9b27fb51486f1044759e71f9ab93cf79b2ad9a81945579b4b7517f4d1115a4c7642b96149d1386b88a200bfb44b5c45074dc0dd88ac9ca6c422857edaa66d3e937a2a460922a242adc5a1318137a0ca1a69810ebf666b3caf2239ee29f86e45440892810ac1b4d63885ac49ece4b71a51461dfd13a1049dfbf46ef819a6c78d5107e0c1f2c9281e64194d80be91ab822f3a057453a6c69a29857d94badf28556af02924f19a2bd184f2957cd302f3fb3ed7a47d4ec7937761050aade33f26d65f4238232b356720494999bfdc1ab891b25609ad74cf4db132cdba8e96b2d564bfc81ed41acfc58bee9eab3ce24a935136be2c59cfeb4e67b233b4ef2f5a39d024761969c35a6ebcc570501a3d0af10729e06dd03de2631fc87d673d6a6dc9b69b9e4b14aee64e4a9b44a0e7676d696130fe5b0f4a14917da060aec9f1aa91b1e2621fa633c971477184963c0496d59436710be20961fff2d4276910a3ade184bbfd2c24666d38d8c59e428d492d76022ca52bd0e2472f19598936fb983d653860c23353584dcb00eaf56df08702c98967d126cba00a10d80702851bc37062fd079eb12a8405de8cc7c4a5b128188a71bf2643ef8de19ffb0875a2abfa2cf3e30a82845abf5b50e7bfc68d507a972e7a677c636d44c77c8a1de9fca71dd5ed14791494667849a55ae9fb3e057ba64826a366004585fc3f676cc3f4021806378e6fa95b2ca01f1b60a7e81ea974ec6251e6af447917b5a68379431a99726dd9eb34ae4a7693aeaef2552ee4343f03fcd236189557e2d73617870bba06a63f37d86e8ef5f18d37f7c67a587e1e03b03756b4e8222d411961b1f7e3a58ef5695e583e9fd7bc0d546ee454b504885651ef45ecfb6bf7a86276863973bacc20706e64f4b6d85cb26a3d294bd14ffa16cdaaee97cdddc064e5a0751e0b7c39330444900e620adbc0eb885877348f0496b808c50896127aeba7305d2b777d664dedb10b544e6d853200a723e801d058db48691f92a5542e02f236847ed42d0adb4b222dd979288b8f0839030bfe7910c704b6e3d37035c75c0f9b2efe5f4ff42f1045d9f390c600287c57a085bfd785e7146b28fc10a0833831e698d298a4e7ee04017e70fe3f0454bb0775fc843b154c9220c48746fbf2721d9056a7ebcf2c43cb4e582f45c782fddc684d3db2f7a62d0daa57396e283c2e2638261b592882a0856eb66c1cdb410e07b42e907da0aeb670db73d8b2259b1297966bdb9caca623214d810bea1554b307b7905a957d17ae1aaa0997491e16fcd23bddc8638537c3ca87abf35dc2266424854ccab2367784146a47d2663220828eab92498e69977cb08db2c4e7be502bb888521db56edde5fa3796cdfeaf48abe6b1be8c2b5dc4d55d82a494c604e62f159ac4814d0a967429893f07672112e8bd8daf67ce3fd0191e0bb25fb030fe2ad19cdd4e9d4b409f115d36626a2065fcc4af333deca55c92d5d6292c60531188746b3959fd02e49a785f8050189351a110d016acda46848161e73f552cf8a117f414158898327d063a09f6c8f360e6b02a3a1265717cef13cdf12dce94d7493674b8cc3163efe2092d16560746f086a20e4b5dd7c1eab5800dfc2363ecc0bf9b91888e9af48f1c6a636c8018d38b68b87e74018ab5f653b76cbae83c3d6609240d58986cf15b9f43617b3b85bc7761cf8f60797d17649b8189c2d183453856df3fa16bdb60fcef2ef4081ae495b5029da4c1cd264d947ab6e881a831f3958b6324b5799c283fe939adb56208745608e9cde7206f1c0c3a0d30d1a424a5d9eb9c39913a71b232cd9cb7097e0a21e911833acbcad8e3c7fc060f7a03bc56e7bb00f749c62817d14bbfa11775d34961a0ccca002600b1cc42cfcf249425e2bde62b6f442b045769079f569593e333903944734ade10da43828db2c73bad3ef20b79988b25cbe2cf25670e8672e9cc0a2c90b353704cc10a2833aede8fd641e807cb9159f7bcc7dc984ef1f339ec89539d6d9fa8c4330f6a1dfc65982cc09707f404969d06d9f4a6fd6db65968adb852a9711d624606df548e39c39daf2c50fbd8d5648945c09bb21eae67c263b8d5480b865420be3c07554de4a10d7c56ac956936aca12fe6261dd6f1e5b551e3bc65ddc7d628bfbe153da3e9e70c09ff0cdaff37ff97d9df56145a6ea31ccae29451bceafc50f786b77182d149bba054d7bf963c9661c6379260149267c44fea4c39a8c60c3fbe37288f1647e50030fa2c5e37a21c15b9580718117fb79e0b3737ba6c22eee47a64f2237010fa45d187c046e05095795476b3abfe93b626b77897a6e78e8dac4dd96f5b58087ac205d3718d7c320a8d2db127297cf92fae56f2b2f1a23dce7d580e9184ff0871846de54e63bccbc6317df05be071171c774c02cb6a1807fc8af3bb87c6b91af87862111c537bde538eb68c0183a3cb1355d1a2249c0f8dc1923d7065de36e08dbee88386173a31b83855398f227b44c4a67b0b516431c80a4261de90cade4ff453bbe09260b65c3242e3d399984ded0266aee99cbf7c618ac5e1f556299a2be5c8b58650d815abe971a162fb983ac18a985455de2cd503ea87880c1f5a0148bb862d1e6774df46ba4f15bfbe112617835e523da6bfc80abe9ff4f820168c4d7e6c2f5b891eeb498a7570d74e4dfcfa37357203a1ba4d4830559d0d7a4c6f4cb34b6e73e127763477e2f9b105b1ffaa3636d96aa679855eace5d0a113ce5754579460c1d05c838d4ebded1e238bd3b1294e34422b73ee1c316170d99edd7923a3ce7dce401d23d68e8d3aba1ac3acfef9c4b01e86c8fafb4788f5453faf592335ddb7a2530579ca4d3ec307d7997e4fab5452cc3839a2880b74d7744f4225cd64ee995ba87af8a6417074231d715458dd729a729741cde0bcb16129465a2f4ab6ffe280cc4b60db2f745b20d697d64f742931972d147bf464c1f1717e8d176098623a664a0478df5324e35415ff2b67a718ad7135d8c096c265c6916f0d21324649b07f9f2322d5707c1c6a7310cdbca166cf3757d1e6a39ff13fbd89f8f35db48a59585f226d6c5f7278a13bb959649e54078eedc080fa23a282b88121922610c8725a9f5a0a4879c8ec95ad7807cc47415047ba941bcf3789a1baeab3eb71947fd56931e2d1bc65fbb5aaf4024dea73e25597cdda26c0401423fc4b9249134f3cf2ac58e96e3c9d6329f6f4146adbcdd7daf36d0871392e0b37e20a095158c7399534003c1b61b0ddc7650efe7274359a3e7b44afb86a976ddb7860cc7c5176aa48d5e11b5f2ab5c143efe3f109600aa409596b8f7647e03039041ace822978f2eab3617e8333000ed086712c0bf11089b776e64c557d5c29c86be6784a36b82d82be793c8b4b39a92ceaa164e497f80bf998e9a015f66f31506239ae84e5d72c20b2783ea95b3bfa8aa9abecb73b6499e4cf036bc4972121965f136b49a25b586bc8f0e69524641b218c238a2115d52149d1f73d43578a0597c8946aee5e18ad6ceca6e946364bb7b31047fe4fadc716edbd78569701ac0fb3e350b5af4eb3beb0bea025c79ca899af5064712a726a04a1a7518ff44c15a3d9c6ec26127ae43605bf6dbafe952645f87fcd93469a144b1e4c49cd1dba618c69ecfda0e9bea2111394c42f82b021a563fc3013395a4e0d49d714b405c98eb72b3938cff7d0555207835531113c58af78a19de8d15415b364520be3634d80e0a2b02f68222f9492fcb0f5814ae7ce6968d8d7464f02d9cdcc86729707d09a3084404fd78e82e64227f885970fff52c920b42ec375e204db6724e63aadf8ef48077d4b52b54cd59a1dce361c56bd1f81ccd2ac960e6e18a5377d82f1e580ec796dbe6eb5b95d3252b2698406344161991df4ac783a88bc11b169fcf633b0c8f0f4352ba4b906178bf19e26bf6f71b5a203bf541195f18818ca197a294ba01fea64f1d5ab342750c93dc1c5ee392d942e22b00dad7ebfa3a0f277d2a06bf711324ab6e3a9e87f5c9a84b6089d9f354979abb7d58de9c78506561f1012c0d2694b6eb46c17553359028f647df82a43a5cd1f63ab58067dc82c409db9031772eaa367e4d295516794aef77f0f1f83996d118dca342da495bc62c92fdad6d469ce981d36f3c3c35776bcb37b7f2a36d66034d37472de3193440a459cc9594e7790a565e8339acc4a6735147c0caf1101db14be897c3431d587929eed0b5a83afd8e2172adab0f3df3c000a56f400bdd148b7063f674bd8497a213e2ef01b39af03ed108d7a6a9860ebbb3c6749bc021e637613acc785b24262fa3b24c3d2df99a626ab9245a9b3092f285bcd1f5f6d6e2d12d70de85d86cd077586108887edc9ce7a0a499328a0bdd443a2f81058f5cfd3a73ca6b1673cc95d7b03055039cb9bca7ca38d5288db70d4b6a84a4cb72ecd960403b1d3433d5b461928e1b9c28ae1545650cf89daca6e98a531f08ebe152f0c661930d55944b7d92ee608b4c4606b30594534572e58864a4a9a2da55de120b85b4c4683bbb8ad2ac8a35e3dcc8c1136f82791ae40058a9cd15f51a0882254694de7d4e8b45324967f545d65867f7325b29ab26169aad9e66c424fb93ff43ab7b9fd4a7bf3c7fb5058a5ddd6988f672ea8bf94333928b55c540f76ab37a70e280760c538ab02bd667c3df80a6d8b132912e0c1e8b8786d8b280420f543e7dde4158ad3c31ea97783a91f347323ee34a4a4a0fbe0f5d9427235965e000c4d97b5c6f812f463a6547042b9dc7305cb579f401d7ab7e088ad57d0bc4e34662d0ca6aba824efad989b37b21d300f272114675629397df4681a391137cd579466bc1f57e305e006f855799d76809ae5baed3aa8f6be08d7d6c2dabb5f2dc3f7360ec84ac215c94cd6e7f01ca3c2712fd1707bb0969633f11cd1ec57039c839bd0faa30c5e5a1751cf8bb3bed628f1cbfa177132c0428c7c4f129173464ce39f5000c4862c78f037547eae80fae43fea01f3dbb1d08bd99dae9b1fdc816a1e6a4a737f7e5b7d5cf601a4676e23e9610f2cd037964fdfdd7d66f32a01900d6501be9ecfd6c2505b0aee26aa91a5a5735f6bb2ad44c873d65fbd9f2da38f99991fd656af911212a451180659963e14a5e7abc51c73c0be79e788e7111907e0480d6d8c93cd6e0d408a30557e403cecb385f483df08108c63e750ac42d8a243176381513cf2563b5c8976b43bda110448d6a206399e32edce4c963a5652eaf2fb5f0386c6ae2753dcf71376710b6d16a0a33d7022e33c1d3f09c05fcfdc91ecb0d8364320e42ba7a22970f1408bb671701b1a057c20546a71fbfa0a3a16959986db39a5ba9bd4ce218345bf0cfaade1057902ae0135e2a6ca036271449fc9bdf3952b3982f419cd1d45f2f10015ae1efe255b5ac30ff57fa1842aec608cdd47d7c05767b01a1b8ae5e408631af1a5972895d7444b88013e825485d9197b2192c8fc9617428fbead0da2151f961799b00b0a6fe64762e455c0ae1a3522687a7fe6498640f3203efbbd733b1d76a5e1e5fd8767d9bc1ee3829d5fa0573bf3358ae4b6c1d7371b264d4444a090635518124485a5b21945ac7160df0d15bc2c8a3bc69d423d328696bfb968d803d39eb38cc4e7bb23281cbf09e2a20b84ba19b9226023abdeb96050f995ccb21445e9b24d102998c3123625789af2b63bd038e5d9bd0f30eb534ed4fc9e2cbe270d301d5630e96f01f199a61a5874f497ea78426bccd6f93e7e58ea5428ce032bf329c3f8ed266b4c2a05f88d5ddcf986dc6c8b8c22e02a0ac612ff4f7496e1ad220edf680c82dceb363aee5d1463bebb468df593ee852883766df0ab4fe86c185a88ef270a564f96977d6a3b9d29ba6b7165d666dd966ccf22075c3f62eccc90adb44e78909c30179484deb51b0e8b5d9dfbbf6a19031d6ac7f027387537f3a96afe3ad166a7a6d786ab7f60c81747ea37cbbea127f352c7e2f4aafb54a895f2994112a41c1e12592e2eb5c4820bf8e3fd58d4686456440c0b33c2032dc388adcc6eb1ee6adbd793a547266f6b74379fe36c512446f2e14cc2f7b9f5f115597fedbad949255707dc67d39207a5b82777c53a66e2bc5a315ac2373bcbe795c93deb6613156d6fb5d395e1aba6f592175e9dcb0abbdb329ecb3cde4756546d3703c4b0ef7109839006c3360d7cea9d7edade49b2d03047175dbd630685eda27c8f56ace9c9801651389b1ed4d966369016a267c4f726798d026099a58c1015db4dacf3422ae229aa132b03cfd4fdb532f86865b42d68f7408b74c336f5f77a8856488efc6abeb90b4407fb89f500e475865f5230beabc9b345b7a1fcf0ee36135e6c2625c54fabc431df04310e3ac2f5abfd45105f09993dcfc8c0a3a0727b15d67a8d67a26902a3af607328f911ff9b3d9ffd91acd93a17ede68a55bb25a7488e7dcb0b5a6a04b2ac8d9c3ce99c323025a3bb79255cc7a232c13cc1610951256118cb693527a1663d36e0f00f4b4139c16e9ef9ffa71b05254f67ea7302d3afdc3399b4169978e6be35b09c20c4a6ac90a0dc4463d3edc7af7dc9447f392195c4d8a0f07807fc5fa7b39beb69a0443ef97c6e04797ac02b93141aaf9d2d02bc0702fb97c7ca4df2ff957401d28af9faa9cf285756e268461f4d710c3c518ad7d31af2be79f8c8f0e8f3611373c3628ecf4f03ceb01c3a88957a11134036870b63307f23f0e68cfa05474dc9623b30c2c4c1150ebf5a83e9740fb53ba2e470cbf5a4d58763a0377277a95a313843ea686c203cc127904dda7d8cfbb67931d2ff690313df164968a3c9acefdda3fbdb0a5ff47d3e937150b03e28ab97db7f6987fc225f2997627eff386f3cc87f0d5fc69be99f1ccdbd56761530ec0349fc1b79bcd3a4c853e66bcc24fe6ad8b913082e36d041ebb4ac75442839dafd40a62236bdb10e6fd9917a25bcb8b0000f62be63bd5e7f66249a2161dc3f13fea53750cad588c4fc620fd38235bafcb767d0f0e6b834f94e3bf1797ee550822b651cc31903a7daf4d1346f577e747f4024be212e7974e16368a3b51d6bc7db26bc34c558ab60b4c1f0d6865f528f8dffc225fb8dd5ada82fa24b83ec5ec5cafe6fa923a04e9b472bd65690956629ee3eb887e317c97c3a386376fe3bae6724dbaf0799e6b94b2060ad84ded98be44b8968bf31544c27352c024fb7b929756464bc48391aeea597244b2e08263611fe1412a829ef4157982a2dd1507c41a6886205c707c5d508e269c98e43693e16094b82920900e85ca93810403d5034c3d0aea6b90d50c0c30dc9b1fb2ee7e412822857f4ea5471367b09d2d6b5dbc0e6ef4eade4ed92ad8455a028b21165e9486320ceab4952a5f5a5410a7c4200d6e9e33472836cdf4e6c36dbed080e5337c7a23359c064124441efaea14b9cc840f25ce4fbf45d28ef2a587faea7fa3511499a7a55d9999982e67e1155ed5c126f1bac2c8aff2f42538f8fab494851d9cfea8276a1d2eaf51972578c60d40b0b37f4eeec84783e2514d4f283aba24385cef857237f652f646cd83e9419ec2327762b940acc98cb8e3236702badef685ff0d635c3cad8e48ea2e810906899bdb3555271e2078919743de22715b599635fe98b8dd96c7817e8abf79a1b5f9b0dc9a5663acc2594da9ccdcc66220d3d9074325deb21898aa171b38130ac342fdaf64624d57b3833a33c9245273d02152e8a559181cb70fdc1ace374b910660abd1da4f1c440a139dba6efa8cd4b1f7cf144ffc84cbd4031248a310584841c3658193a42659452da960d0c7db084a17c9e49b2cb650837599286c7084fa3dfe051d00658474cba77de4686029fb0242c99841f204a94528b39775188535e1733461d96f17888b86b185b440bdc1e754a24101b1e047ab4a0c3dcd2d91f86963dee911bfb1ac1b796cbf9c8d968d6580ad32328bb7ea81ab6be5c7957584f59fa3956e16100cac6f8fe268a59be33d04d477c9e8cc577596cf4e28a2e761862348f02b44280385d83f3205530aacdfe7bdff9235547400fa7c52cfaa989501ab8d113fce8dc124616be4ccaa95ea31f0cba7c114ab36992276c7e7049ee7fb658b5b72fb0b66925d2314208d413b87221b880315b224522113e7e0a19d65a23dc0ccef25060d973116d9b0c22b05241f6146972deb76ae3b006d9183b770c323fbd127999f52f9b7256d56fe3a084297adcca1561d94f242a1ca323ec79f2b05e5db4b61e483bc460cd1cdea56cd01e6508cbe48d96348a3053d91f6ac0d8a298349858dd8539e380c993a2a7bc512e408c7177e86c5af6eeae386da1201f2d570504f205dee8d8e2c0e8b03842dd83b82b505e54280106c992069f174dd57194f5e966011049f0f4329c639b67e4a867d67f4830f5183ebb20e322878b998e45e0bad92de5c81ddb07670581b52859eb7826d004ecb50b39a1ee35b81a6ddff1afc6266402df5ae3662c072cee569e453d00929cb65b0a0d92059b3b6734cad31e310c06a12cd39e092dfc170026b33fda2821c624eae3b8c3409a8db596a66c603782ee44c17e796af2a1db7b5395cd368c9a9e3f30448417bc863dd3e3ec38fd5449bda3748e1c9a1b6d5087c4ae2342c56d1078c2c4a8568890e258d2c0e76fc439d26f034b13474a7c5c9289b18b9330410b267d5a3be61045fbe29345b935016a9ca12af890bc0af231c058698f99c7d134924e71467017c0c5bae18a5e4f08a45199ce27a40315f819d1d6715fe0a402738c7af2fa3f87d8fb3b924159f240e48959257a3cd8b23a2b77fd032cdaab95aefb651a1c37f49306e4eb8253013e74f2d1428fd9bac3076d2e7516656bbe1fe27d673166eafed6d57cbca0aebc1ba18efcac61c59fe94834b856e8bac4b16514f6b7a0601fd9ea57df250e76c138acff8955642b1a38df556dc5908776864e8ee28fe4bcf183fd3b7576e02225afef80b228ceb36c3bb9fdc9023a71a6f24e5e2a0e908b382e8cb5a2c024adf03cc33ec0d802e86a0001c9df813e1c8d82f036cf2b798f3ccf7f7ef02056c6d02caa2ad565d40ccd1d21cf42b71b81b2ef0ff2cf4d8b4fd25a75001db42577ffbd668b82892971bad11600d73c11df18c1776db7d0ec5067662af81e73416cee6547c950709b111d5707275b719a43a7b09710622b3dfeb8fb45e5ab2724b2993943205056005a105adcf62cbc57d1186b6d7f9a1ed6debb6eee76f6dbf7d6b1b5d702e9ebfe1791cef6d2e8fa7f373e7fc8eceb7c291d419edb71e145b9f23922c760b7febc9dc7a127feba7e78198d9963dc07d9aadb5368b40b4ed6f997bb2843c92b0b3c127ed664717dc9359fb8dfb9c496bb53cba00c72449df2369daf7bda67dfa3597fd9b4742b279a4b1f538cffde6c211431149dbb4449245ee3c71c89f23aac006cd3dcddae4f6dd536f453776e00197447bf7b6fdbced560395862a8d25da342b2b2bab27db6cbcf6ed48d20a03671727c9ba6eb09927f2536f5390e2b0f09fe9010155d81cf2874d0d5c4f9f8e248bad93bd0babc3e9e8e4bc1d7f7cb976d0f36f602ea8db2775bccf461759276f1d161e8ee0d4bb0691e408bb84cd00ba6f08db47f27e36e48204df49ba9fdbc8fb174442de7762073c17f649107c9a3f7b9ef7484442de88b47d1e3f7b9dd145ce98a47bfba038f72726f1dee5bd8b1b37d6d811eac6a4ee73d77d4642eac6179b9021507aecf8400d4d42333f52f7dc236da3f69ff9de237163f821f8096fdc72cee3d5e3547c3bebad701c4eaca0068d9f0747a4dbe6c998e7e301f0a3b0790a8129a4fd3842fda9afc50ddc6d33865061433499b325b3cde4eb8a1aa9ed57d2746216eded2a8cb3d65afb17cbaaa87409464684fd2be2b8e939673f8db27f4124947d968d46d953319b5074e7751fc96aa58eae2cda3ea54b53032aba3efd262d7fc1386f01df12bbb711a9cfdc5a28a6b6c424fa3dd12fd5ef96ddb6f316d01a3b127cb7de8a555facfc4c91129311282a545ac00861b1ea3e6ae239550dcac6ddbda5bbbe97e6687bdf25c0a7486f741b5d44932e553d0ff0734077f636730a80ec9e7a3fbd0498b0bb5751a96a90f7fede48d604dcd1a72a8c04ba496a459ac419ce76f46d752aa7aab049ef6d659a093b1b47af125d4b8559f7a24997aaa2f52ee51058cb51fffae2d4408b348769d360b91456cbfdcb7617b313eef8e0681778a35d60055f4e77a4e7e6e1791555455dc1f33dbfc2e7f5ffe38824cebbae2061b5f1d79d9d77fdf89cab738974bf48f75bf0e38b16cc71a9f184f86f4189f1b99cee73bc15167c8eb7e23f677cbde9e72a708160c4580971c57d9deb4592eed773d35b81c1733a9d4b893ee5523868d22e2da9f0ef167c890fc093f60803c702c0935669fb7b559557799557fd07008300bc8faba5fff5fa9e57ce5edff33daf7108748d62cc8767e7439df70f80e818880e00d1a754986fde01feebbbc4bfe0029d27c1ee9d9d70e75dd8ec9d9d6f7da68377c20b767ee7c721d085f31ac7ffd605e3387e05ffd2ae1f2f007170c6210dba46f12d2811d3c2c525d22fa048c188e911a9d58e48437f1d91625598678f56cd0cfc5d551a4585f97f4f521315e6d7aba04b7f63acc25c7b925691b156ab5571dee6b5bbcd989b4a380f0e578ec0a2f54a59e1386e7a4e5d45c5185fa714632dcb30ce6a7ebf5869fc2f16b31efc5469532a9b9274be8bb5feb55d851da184e6cb9eb3d65b27add35f855bac83be8980b66d5a97a9b5d695aca6699936dadc28a0c2b45b8b3d9c617b2fa697da3539e79cb9dcba6151617a6b1a2c4fb7f6da1d23b83b0815c6c1dc3967f4e2ebd65eeb5361184eee464585e9fb39df5b6f86750e4315d5edb5d5ddd6aa1b0b541807b37ea7697e85db346edbb62cbb99e66a6e5a4cb74e6bf54aa37ceacd0696064aa9a5f5edcf9b106a7d5bdd8e23d4babd5a6dadd427a55eed086e9dd6ea95c2108621ce32bf495161bac26cd5390c2fbed66f941aee1a538826c499a4b319c9bc5f1596f3463e1de99c63f62a9cd31596c70e4fd76c121ca5b5ba5b7b5f9f0d3d47f2dbf43f253d47ac829e7f5b5eed9cb3dbd53aff3c4ea734ef39c91276a65b113158863769ad5beb3e9beecc0caefb0bb733c8bae39a7d499ad2dc81f027dcfd9f75d1a7c23cb7c299c17cebfff1d0f47d049b73ced8662277c5397196534055adb53e6c572d748acbae9f62c50433c1446db0670a14e69c185f8c6f9e025ad2f42becad2561df0d4db9f163d2f43f1adf02459ee2429f3d514c0db29f0f247aad7ff39323adbdf9ea9144d5b7473710a5602750d41ffad3a625e6c4d09efff73931740c5fc7cea533b1bfaa626a301f8602c8a706753f2fb7bd0ffde50d74ccbd155c1e5bbcb428a0c2a88dd6c69c18bad5f277ef1dc861da676d7bedfd3be8b8f76e6c91626fdc144561b153f71a2cac273af0ae9e40e13ff7c1313a7ba1a2823e68508d26291365aa3f7aeaa54a21f8f4ed8e624e0c7dbf83094c0db8bffffdd02058a006755fb7bf5fc28b1a44b6806daa801a94fded46726af15664dd3882a5513383bb51a69c189aa44c1e02d1e4bc0a61844b9d8cd420b28565aa413f6a10fefbb429050a15378f2de654feaa8f06ca542a5be26cf7d1d0d529ad94daaff3721de379e79c1f5a8cb1cd6e6462c7439e61328f807196e12cc330eea391499f3d339a65d7c33d270773a31042317ec2dd5731334861edb5f6a2a8c02b0513b0170d3a7db86f87a67f9fcecf5e41b1ebafc8e6ccd933f1efaccfa1d8e494c2188f53b4a2add6a2c8f46ae138ee2bf062923e1ba8c25e958ef7a5e9db2bb648b1e71c676d31a7769665d9b5f37dfa4743d3272d99bf209abe0f1c97dd9f94ccf65e7baf05e13b41d3b7ffdd0785507c3f4ba5566f81e743d2640cc60b2a74ff4513fb30322b21cf73ded0cf5b457df9c05ca427a6901425015649834a59c3aaac21a5b411559ee0f41d55952730954960ca24a832a946992455edc539572013295ed5d631576cad95e167d6fa0b7d72ce5952ce39bfb6ba36d41f0d269bd4ff030d964b8919a811f010b5444c12395078fa40991b16c040d1f185480c1b5ef0616fcc289a81a3cccd0eba05c90b120aca641b1e5609290aa94a193400d8b3a43163461926d656d85beb4a427b67adadee835394942a3168cae4f0c5c8a93452521ae12865209134c300c2a0097243912022b812b23636a94ba85a0ea926bedecc096a6445998189086e10aa27840fcb19be685e3020ac5d271158942879cac1851774d8a423ae3695c2978655e108eb280dce91f288a9345ae242e3c2729b82b535881cb1d6dacc06d25289c4a34cce2e3436973244c09532a4c8f0b249fd466244c462a19930d4f647634f2c255baa24110485274b3336d192222b2f3f6a582991119a3fc12bd795e541a3816172ce39cfd8c1862f9a4aceb9d5c28d910f26364768436c4b9aa6691a6744838cb2e8c698b3a7955933ef8d97218c102c4372945c90c4683ce49c20d700c49a336b8c82d04b24c0820f5d60c892858b0ef6286b4896134dd334ed2a11e1a862e3e9ca88a41c54ac51d652d60e3119cfd0b28eb24e10938180817b96317028f240f056eb2ff4c959cee3cc5392b29c731923cace39bb4ea05d407c650c20bbdbb38c8163bffd11f321160bc784a195b1b5922b1cbe8c00c911205fb838b91115c4192a24a1186162b13061c28460c2b0871e7a78bd28ed42b5ff170c8807adf7bca286086d24b3732681759900a646cbc67b5e5183c3263fa60375916006c61853b94a50c4d5456b43488595763c18d38a5d22a02e275d6f58e563b86e4b93b3a68d39d3795024596cf075746cf81ced763eefe49dbc9377f2ce93b09d75b276f8dc3692766fbeadef9c311e39eead1dc9ed4116bb1329d77a17971b49d8d9dc6fbf8da4fd5a2bccf0b5fe1acca1e7ac30a7ba3a059c4a264b4fa00d3d4b26502593a6253f943c814a7a964c8aca2550e512ac5249941a3561a8c6aab9267286463b119b0c8bd075cfd2a9ccc6b726011433a1c669080ac6e96ad707b2a28f1310466762d966b19c7af88e70caa2ffca0dd7a1fe422cff99ffba05a6fab07fc18e38f9cf53ad746a4221d3abcf08adf72c9d969c6a644924494a72b4c98fe51a2c15c638c7b84420b1f29f8931c648905c2131c2cc97cfb22c33b2748d30ddbbddc8c03835b946b9a93472e423e23353a64c194b86cc2d7244c610457e240d21445944061124aee80784def62c895c590e88586541c0fe35c4872126d8e4c76a5885f387291c0c91aa3f9af66dac443564cbf6a10231260cc78cb1a109c2b029861960a266e43dcba6a7262546609a8e1c8169226204464c938e26a512846109aefe421f2fd6da3ce348103121be75c7b4a613ca261ba590204a2160bcd8a41bb06c8ca0ca193165c618118244c8122143b2643494685c59e14b1822a4d8b04584e810e2234b17dfb314d283101e646811d24586966ccf52880e5d826801e28317fca3c88da22948f49892431591206582a0c97498457f5a5ba32041042193a58b102a5bdbb314f2e4dbf2ed0024cc9116205f666801b28586962e367b9640aeec6dcf1208151d74d0e1ea60813cedb965d7fa550a5483e69ef567eafa339f7ced1b3bb1fdd4d7c42c624a664fcbcd1ae20ce7c755ab55fb6828590081cfb06bfd0ff63e15b6030b54c2100847c1ee37862b56b41e1a904ac304891e669cae2c101f417c2491d2693a34cdfee891e5c34666a16993faed0e59ceb29c03051d6659c9c28c9d6559966559f655d1ad3d4b1f58574a1f42ecbb67e9e3070f70b90655ea9452a24a29168dc3318096a809c111274c6a8aa0842c0b593e2b9a0ddc977fbd8677d89669cbb65ace403e7ca03eaab6deb3f42155c307c337854c62c722184de637196ad1627e1d33b0e9c3a844b41e20cd3682f11745632cce1d36fea4f0d0863cd1a223cc9a2531640163997ae8d083074dd3344d0bc18dadc707788060931fcb8ae9d04a96a2692de49c3d141610e54697f2cbd39692470f1d3d9aa4b498b27adc907205f6af1792f038faae944c544a1e377c567cc73cc28a8c2c5047dc0093249457d8f9f50f4c417c52be2b258f209bdbb3e4a16309375f9f0c9aacb4869fc0264cffe9f9c0b15715fa091f4dc0ef53a8deb7ff02c608038fb31680a454367dc78fa7541875fb78ec710085f57c80bf5e1dc1d13de9fdfa1ff868c2fd6aeb67d958c7fb3d2ca4eea8fd6756f96fc0c507f6ef7fe07f9fc5fde97dd0f3c135c1fe1d7bf0df1e16990b16799cfef38049bf87c5f49f1744423084a617811e3cb298fe3327f0c28e75ccfe43290ceb76899b150a1428502e2d7714953b9686e066552a55b832f2f421d1e4bff6f55f9f38c5cf88de7eeeede9675bf643f633d53c0f86a86773663d4d58240c631f91584c47520d1d484717ec59e608b345cb9a76cd60c974a83fad2d9921d966cf324766ed96d8d49f935229aab431f541e5a30250290d51a344082b3274840942bb372e00440b388a484a01992c9b43a94a690b569a52c2b2b56fc8879f86fd2b470c312858c4152b39cb3973925475387320b191a369460e1d9bd4cf84e38c0c1c46187d4d9f9312879a6df72c711c3155e2a052e2d0522e51b1386096b321c15201500264d13970f3c51fa6684b25ac4a859b35a806d5c763c619679c7176c76e6bd050fd2c6719c6f7927663b7a4fffdfad545b687b0bf0844bbfe38da1eb859ad7b200cabfd84bc5ef7b96badd1b7c2e432718e24fd72e88c3ff62571293a869b2f32d67d26762309db99e8e5c4e832ac52cec7fbeeeb7b22f556c4aa0cdc7ce1fb599665599665d9cc2617727219a748a6d8f3ebacb3ce3a6b0cc5a7436f4f4e2a2d9bb41d50bd014b9ba89dc1b18851b1456cd30cc4f61c87b2cf5cc6713e9bfbb006e13cc771cfe17c0f8ae46f10e773d12766fd2173d63a0cff7623d9c24417b3c164ac1b495abbd192a102c868095918fec360b112fcc75ab98e4e368ed692696162774fb630b16d7eeb9eb49bc45a0c6706b4fb219bee4bf0133bf3875a92a620e616263c4b861aa0b364ec95254305802f51cbc72ae10d6118b321167b9c319a9c31b68f73facca240b06071c7f2330718b84cb1aa5a010a06ab1ac01ca6a830450c7dcac1db9fdaf55f409e9d7234a5a886bbbb3b16c2f77175ed3f22d0af9f63435777b74f5a291a52aea2606dfb9ffd9752b4edcff14904a2ea218068d3b74736c786f6afba8908f7c93b72c0824d9f5233776edbb66ddbb679a069dba6e59ff34520da7956f1f37addfd6bd6e8b66ddbb66d4f7adddb93f57e9645926e9fadfde9693623ef8b40b4ada8d1cc0714ab28366c7216edfa1b94506a80563439c180704fd497720bc2a0f1063368f2bffa5ba7af0aab0fcea0ebcf6aa98453c2500ad5fa0b7db29c6551636844b155c2a82c9bd4ef43d3b49c35254dd35a484111daf6e404da132f4fb03ca1d23d8172ed594649a500ace2640a14169086f00993a6699ad663c3cc931b63d5eb49e7851de00b453941e070f19cd4e0840a8452256a69efec594625f176e0e6cbbe6229f6cb76df3c31ab9c51ea62040aaa465046a8becf3cf1606ca0a064c38d13a054d11dbc8a0df0a723e721e722573bcfbfd671a87e8f8f1e106da24dabd8e3417dfa0df021ff21fbef967af59daee1e68b9ce0949e9b7e50d6bac25c67cf5e93c410a51455a34a148da81860140c42890ac328f77ac1284b67f8dc13985660670fd3de5e0b761e5fe0fb531f44023af1221764a0e182111ea50b4a4c6011db421239e72ce75cd6235ea03aae7962ce9e4d1f5c0205e5020d7b7a4c72ce198d9c73939d3394d4ce23998144c02525f62c5be0a1852c9bd4ffe49aa830bfb1247a02bd2accafb5f6864ff4a4f37d4ccc482c061ea9967e96ef0b94528c83b081d1c4ad07f59de9f50287d4a0990030c865523669b2f503dc75af7fc739bdd6206bbd1aa0cef9737a25022e81298047a0118803c401ca008b7420a929683548502687233288014208336972944564cd8d263ab28aacc159176759cb13ec01f6c8a6141685b2aa176778e23ba5b0289455bd764ad539a5b0ea047b68fad36ad61265aa09e1734ebff75e7aefb573ba0562a95750062843533adde7b452384caffb749feed3dda7fb0465b84ff77941a47befeddca7fbcc6e92399d3a1e5dd8f87b18ffb154ce9c299fc46000d4f15482271ed6d8244f5e9eb4d0ff170c28673967a00a3aef593ed900aef01402d8bff09ee553954d7eac9a7952e2c3c11d4f3bf664b286c71a263ff0580332e1ec5932d9c2444a09375f95fe5b30861ee9dc53a8a66ae7d6de8b716673f64a73d62ec65996b386b39c356ddbb84ecb9db66d1cd7751ed7759ed76ad978ad968d8dd63769b0b8504d5989a19ac25acb46eb9b1ba7daf5717c0ac79d767d971bf9ecf779a5df951056b456776b2fadd5dddaabbb1b1c1c97ebfb703ad7f781604e8e0e98a313863b3a61b8b3c3c3d3e3637d7cbc521fdfe1e1e9e9f1f1a920aa842d51c22b2dc1d3f5f8b84f052e9670a5129d8b1608f1f6df2bfdfa545cb44ca951156a294dfd518bd26071a19ab212433525e5146ad7b74ab406f5afd32a027672890039ab36add5ddda9b73f6c92f8ee30517bc5e00c0c0628081578a41bec171b9be0f04732ec82d7f5addadbd1767f6629c65396b9bdd36af74dbb2ac69dbc6719de779a59eb7715de779ad96f65a36365adfdce0b8accbe595ba5cfa0607c7e5fa3e30c7e6e478a53939608e8e4e18eeecf0f4d89e1eafb4a7e77391f4d9f6733c0ee8e672743c0c3b17777c782c0f8f57cac3139811a854cdf924a96434250001a000a316000018100807c3e1702848424d13640f14000e63863a7252321506c391400ca32888812806421808000803186488515241734a00e096f866db22a988182713f982baca44596c428129db6a7d5b756b109c6ae3441da7114123895505c2a92223c211f88eecfcfb7cac0d63bc27603d32652858679321d13f8a5eeff2be188de8dca4dfb3935b007276702483e4b7aec4ddb618d7e8a7a0ec438bf3890ceb4adf9437fec8f6189e1339585c498468e4960bdb82c5c5485648f5731677759bf7ccd36d11a2742d749e8dedaa7fdf57c8ae854d41a62c03271d6b212f8d26553bd2b0699e701ebb70fbbc392a740b8da647c3e6d8db76dd2d3e2db9ecd93fe3d9436616ea128a84326d6560095244db71e233d2e759e82c1b03c0275144037237a4e7536e584b0396047556ca507151e224bb80b41950300d71a0a553fc0a61fcd2e4fa56fbf709a9155e0215952072425d0e234055d3cbc94b67509c76543aaccef270e06676ea8fcc95087573b80fb86e025be1bb3eb48d5794bf197e9f3403bee1f91e9afac72c2bbe3d196b6ec660e371aec0b63d3a81f04bf1a5fa33bd7101d6b3b92befc5fc9a015781beaafa3c6f70427e585cea1ed546336dcf24059667cc89d6b02942e890b476afd4a860737a75c25d46662e5a389d0b728cc6c243840fd852180854e7d66a9aa94168ad4fb440a59045567f8cd27db4ec176bd036805a329da1c2932e4c6f741a288b74cc1041d8a39e2d51bd4c886ef212d03f4f885a9718b803d63e9b0b83de61c005c49e3ccd954c8d24f05ec7875caec6c888485036d90e062591ddf5afc7895180d0826299ac28d5a561e612395b304b7396a412693c66ac26c00e83f2d3ce4482ea145d6795bb3edf486077c6603e0c06b9791b535617a81214dd63a61133ecec1a4855b2ead7cfdfdf7ffe5f3ad402630c80f29ff1f674701be8514a9a036449760d2d1db68f8dc62679e088922c422ab77015f84faa9d3bf44d23a901e6469206841ba556b6633513cef6e64f981a368b4a48d5165832b557659e1eb52d131938a6a1bc94b0e53539b3fe77372f6ff06367e1f97b65e132a4656c98e0732e86634d650c7455bc0affea661cd60a8a4b9a3b6ec25ec8c5e0558db9a6b20016453480d14d201d1e314d0012fb01c1891a8a948c28356a1e4d770ec360aa74cade21ccb1a72c02b73c04fba139e26a4ebeac1b35bddb6c776293b7b99f14e31a049e24d4f44624795eb40e293bc86eac0ee952cb72c4476a19e9fe2f290362f2bba15a660a1a1d536ff469ec9ff6fa1f4002cbc173e22fcb36990110d43cb34557126a658fa82b2952892d2482768824e81da9a7817bb529751c0babd835ba38835b17f657f946fa28313d1129015636db8d47a3e30a429a5b2189c33d6aaebf9adc899423612cd09ec4ae2d25834201c10d90a0258038a29ded1997bab59191504f09361f0e48a068bec22e59fd04ae803467f4cac05298a328ea06ef436a0b0f35e8871d1b352a9978a5c8e317b8667bfb47e310b5ba6c946c07ac3a9e69898c27437ee0997fa5e543a92ad6a2c77887cfd1efa03ed9ef71f03e4be1a30516fe74f461dbfc28a696166ba29cacfd26876521283f3b491b05967f78abdc3be94d7ac258c006c0ea1f06933ad9010dc98476f581d2d6bea27d0533b188de3d1844e912e367114881be2b8edd1acabbc104e3848c77ddbf47c52953badd953336a10fa8b664c3577132a04d1e332048838ef2d5316b08d20d43181b6cf31019d0946e98f256291802242425b176eb7a47ce603302ca19d4904053a336817e2a32b2dca09306ea297f7f286c502c792d59165e2202eba0804dd99d0b09bc740c224221c8234f88d44dc2424405eaed5e7b2156157d705b6660ac25a84e65b76da1b73a987a6d2ee3ab03942cf164da7fb2d031da74d4e817129f8f797555fabb884fdf7eb7b3474dfe094bf1cb076e24f191459c21b84f8f32584087986eb99b3766f6f3da10d5990fcdb88a8b25825175ea7e1b9b1848ef1ea8d7e426dba05991872585471d33ae4a3a6f6665361a1072e8d5c2770843b541878be0451db41c9cd3c53bda39010b555026eb19a1a40904b60fa3aa9ad643e5e2e965ba43aea3aa57e91abd051308f7fe9e910e55343c52ab1836b659fadd331d84579995d423f29a20a0abbbd098e0461e0c491f8ba186eb45338ffe7304ab8d00d525224ef12c52eab6802c45d869352ffb6052918f07d496ec7838706ab7cb35582df0173f9f711de37aff6ffcb8b9cdccc9c4717759a9478a19bd556d204566e6fc120a836f16d20bff00c91c98f9411f1a839adb3e2ad55e5637d629c50c225fe1dc925da9c5a9de50e2eb9ad13857ee25b0ea98b16bc3fff179c74e378684d8fd322d40478138d361ca77e0e1af715cdced5ba89732e29c18b201a17c24aea5ffadf945c807b57bd39d9df7181a5ebc0bbfe01db536dfc0c10d2cff3d6827d41032e2115cc178557152b6d51e429fbfa80bf414a18235f7a04ef97efaa2a3c29d276c3733f6b053b45c39848ea30f34f232c2ad708982bc45131dea7e97c8eed5ed85cb61bf83ab748cd1803cf491ceb29939e3a2b62039a669b963943b7f4568d2dfccb8ec38c341d7ea2f34db37fa14e34706f88201bed465b09234435e493a784fd154782776640d9863b1331e31e603db93be5fe1db778b7ed9f99c654308a3fc81e7de678efa86f6e48289d5547b8959e500e6d678c5888ad69fd92dc6bd053b0822aec1469b8ab34fcb878bee6e9387d15557ccd0dcdba8c8c268b099ea42eba9f105e3f8e420999e5f57559d8e27172f26354a2588e0d0e4d3d9104bab01f52f2f6d3d82fc45e993ec62a564483800e206c6fca53732faca4224223340cb07968c871d51ebd7631eda0e0477c5ff949808826c687c2887c37069e6056472078c5d942dc6c947ca885f822546f926bad04439eaf2eeb08f1ca4120fa4b7bad16978391a47fc0e7926e828e9d86c9cc583d38c6fcd0d652ebff04aaf4858b5dfe6045f1ae10c9847f3157e23ed42cb84a23758511f61e95c18ef08eb4c7db1d7de4df7d7a9d2eb5d601423bfc8d5a36b42cc5d367da93962c43af1bf501a1a962131f90c1e4e165a315d1caac1a5e675d5cb35bf1b38ca6e405f979ee1f45e0e60465a39f9deebf6c381d0803b5663dd79e833299fb04dea0750e9593f3b1d72dc7ab9aa6da08498306814013bcadc1f62b6aac7f09d337f59a1b4f0d71de7fcf42b5be2f69b71560cb62d7e2608ddb7fa8c45e19e41e173072d7cfe53f3f5c4ecce007ef3c21db90666d041975b1d7bdad38721d819a4f369358d7ed67210523f9b3ce151be0d595b82a0dfa74a558073315db16303ecdaf2863827a28570688a89e6abd2d85ac9ee4efa82b8fb69a9e52320b09c1088b5fafae3a36b2c0a37003d2b3a3e7f2912b390bec2a7610158645fc767eba96d66ad7b67fa888b6fd523626c23bef26a67a4893dad0a99e21a1c46fc408e9904a895840717a5a02d280bc8f7f43adcf5d9652412bfb7d232b620c07074537e9248e4375a56b4b6364518e1307e417b93ad15051934773cea0e3911be04058c0fae18e954ba6b391742cd0285d2bf1d19052f8ef4b5d258950aa985e42aa553e704fa293b52a3a3ec8f9cabf29368c474bf683b658de27ebd49f2afed47cda2c81aa1507e0d904518cadabe00c766b2edcd2060bdd67e624941863c16669fc66d836811eb4a5a27821ce801a0f12b1c3e4c315593e56c9260821ba074895cc1b47223646106c0ce7cb2b7cbbf50d935ab550ac6c553ef3d56186627d3da5482fb986b16b404a105d841052c3074f849e551f408371da23e8f5d0755b122b3ce72a624f5b9fdba4711d803e23fa612715c0b9ebef00bf428c0e19ad37d9964ac68424f263a228aad55425d33c6307e0247c461833a7a702c03839622a62d29b84d61d0d71fa8a7bf915a80c808820e97a8c6e595d6a969449b2ef45f1c93c3ada2e2094ba3dbd66e9a4a28facfb71595965b4eeded2f187252c972cbdaae491edd06c0a16f918ad69b2a2535b8b447db704927d47d50c7e7beb23aa514c226e0302fbdd168e694f2c607445be4c685f5638af9c2cd01f5bc92e24fd571c333c7167a26b8855b6d358ed75bbb98e4a951e5346a9cabdcefc6c113c289f2a6a8710504d801b69309b65c374acbad6bf6b35bfb478b73d6944bb6204f9ed9d4882c8ec6d20d4e8341e25c78d72e8747b4aa5e1e1dab9f7755742cdeba70c581ec7c8a2ec7885aea1844d7642de55769f664d453ed57c0715748021d789ae7efe1568c42170feb00e0188fcd6bf1e052d94c616c07b8904bf9ca45278f4a4adeb6ab3e9b64cb0990eb4f5d6557af537f8e2dee070b1ff25a6634bd81bf569738b8733f1030884c500e9ed80317aef4e67fe84e9f6704d2f0029b8b9eda11635244dcc9988d8cf6d1302a69cd0c161c8969888a4f5b6d87c348cc1ae265b535b2c20fa9d54b9d8e6fb00dd5c08d6c6bc0256b4ca25fb37213951083266e1c7fff878de8be0abaac06b76e607e692847e424c92babc63f5d544871e295889a1abce1cd147d42107702e1cb5ff632fc20bb778069b4c90bb4048646392b06adbc38f6eb31a7baf70d97a221586306fae03f2a1650a155af4ae3ba2b91b6d6fa931ba9ebb3fb55ea0c9503e228065c0d9c31923b5e85ed53a98c5fd4c48b10cdc85647a2d0c88cb61edded1cd1fee8bacf5d6670fd1e7f8ab7df9d666c9ac6aa000449deb47eaae85f6fd7fc4cdba31198684b90ebbe8bbfdfaaeebecf96235711893cdde4aea8835807d8232567be4e830f99f412742fefaa74bc0d34b81fc79915471e802ee42c936fba4cf21fb05a29987b3f2da0fdc8839d8e283204b76c8d2ad5c04784a96c5a6ec6e8525a28c71995cc9dc16de751c28419d20d494978fa6574cf99ef0e40b1ae74037fd7d068bb9f62ed0a461f4bd64282b5ec238bc603530318e521de16f0cb3dca697e76a5c80311ca382e5c643d827091ce1d0939898095fea1c0eca199fac2e489a18f6175a6d59b1f9cf35fa04b67d1b806444242afd38d7a84c3f9bfb90c5195dd00ae6bdca50cce19c5cc5e82d8e585a648c67493dcd54848249672a394fcf638bba2272f5af8a2bfd1681c323f947b1bd505c9de183e24f4352d6c947d44493b6634bc136e8fc8e34c4e5140209dc920b056352ff246a78fdaa29f882fe59a7858abe24b295f9cdeccda90b4ad8cb1d089be719a2e013be30f3502319512cb2e8f29a64e975d2f91359180140dfd21d26149acd903beac2d211e4a6baa55e7d6d9a9f259b1793a836da8072e16f8207d4d7741413c3aadf46d128586e1e4e61bf3850fc98ba4543aa21027fe365b26ff429b84aa35a0a663b147717159ae3a9e0d44bc93bf8b2e21160d4e7862385008ed4161567a6b7d078115771630a9720a18265e68f643d6b6e159f95929efc9e0f58239018403ccd02a488835e0a6de4ef24ab9c75a54a263663a6088a946c9fff745028e4bce5220bc6f9f9e5768c86e3fdcaa1552f319525d0cd909f30ced014011fa6c5c769dc406524537005e2541fe57e08579a2f171ca6f6b65edbd688d5ef0158bf7128d84802b419e6f01c90846f816cd484306d05a87a01310f80b157736d670e0f039a5ee5583599b46c85e79d167b31d2d93b21763d0446642460e338d457be9685a0050253381273144f8d60c6042fa07e24362634d2328b08b649986e0788ae6811245fe67ba1ce763d919ba2f6b298f76933bb40ed427af998df4597437b3e7fb66d526a2d939dca2172b2fd408c42d2911a4c8f63c402fe0a9cbab3ec4957a7f16b77835012cc3db795bcb9525b0cb8a232a9b1ab58eb2d06f26025919be4fc1ccb705cd2042e191bc7014d35867d1e86c893a0c2e0a6f745503b4677bfa746a68ece4cdb6f6cd287ac0bfb04abf34e81f900135b5bc3c8b05d6087601c08450bc793d61f179795a6f5e11ba80e575a7523d58e63aaf7dd6e3f522ae27d847787d2c85552ccec079f1abdf4d84b212f30ffefb10495ce0633c9ec82d66b988f5ef0f8f8ca5f0a4032034b10acdd59137651d358f6a6d5d56321acd42ecc06a6aada4cda44d29bbe6bc96521ca999f880761277bdbb6629928b99c1a176525c4af72ca1b5b648f73da3fa5669634455c4b96e81bc0e58222ee6aef648fafe40ad221e672f045c1905a4640483175ab3e6be0e7accdc4ffff5d0696563f806c4296dd86be00ba981177fcf1c18ee8078e9cbcd9e73293368fa8aa51244c4e500d3fb2e5dd8acd2f17387ff6ca4cac8482b968fa71eafc3788feb271246192778a75c163444b6be67821108abebe58ada1afa34d45281dba2e4697499d28e2e42a671e3a8ee596aa594c6efa4ada868f574df125a1d8b746df1cbd3bbc546b9696800dd04e969b02af6c5a402c27e47d738710eb589a2dc11112ad5a7c139c4ecf2dfb311bfa322fad1147c86c4b278b10e89d8c3c2ab577d93157c266cb26a59d3836a404b53384d7bc6f0193d1356c69756e832932f4d1e7a7eecb3348015611831763d4d1b8237471a169b526504d879b8a3a135b46751a69a34e30c901276cb1f22f70d15f78064c640a04ee796788a54fe94b23338621ede770c9cee45c316bd9cfefd8762679671d081ad91f972ba97fe5f320c4d86533eb59086e9a96bea5164b40690dd992121387494ee63976b8ed311907b04e8b5ec95709dfe5bcaf66699ced6fe225df78caa17900b1f4355fcf51a232eeec0786736308311bcc52661e303d0a20c9d9a91b8311d990dad633cf74f9abfd88ebc5ea028d1e8f67a61d0c0f4fd1d6c18d62246c634483102d93e5a2bcdb20a64d094b12bf9d8b7a372c64d79751d662dc732895e13478ee1c7ca3de7586317615422a312c61be26bfecd24d74ed4218ab9c3bf693ce68bff3b46e3641349821117205f3eb60e2835bb736279e6a05b31cd5c42e077800395bb044cfc8ed84e18eb180dfd9a7a2e346dccc72ab7bf41eb3f77546e329a420a8e060de82f886e33a311de5b4cd16859116cba442a30c55af572e5086ad8d798e92114a527578ea0e65a011d1ebf93e503efcf47488a473f8baeb53421480ceb9aafb1515eb9a756806007d201a6cfada7e6c9b2ff59a4e38959aee0283e4461781a6758ea5fe462c340c57a0d9833ac62c0276c554e39c17dccb0437c11c150d6c8d0d3b5d18271d84fd5fe32781d75ab8adcc8f5a3e1158ccf343276cf461689679d47b85f067c773b7a6c7f164a60bb69ad160ac6018289276bb057d895a303d0ff2d3ca3492cafe053ac1874c5646916abcd07e6c4750f55ba1858b347010b243855eacd3a007176ef27677f6fa8d7e17b14c1e4321178b4a6c3758e8c800609d63f11f7782dbb400000a95223d9ec4e2ff25b490808ad43b05496931370df22aedcd31c2d620524d2e4f375d2c5d5899671bd722160093703d293a075821f284797a48f482df8089495248eaf8527635aef48f898b0bf5cc924502670618bde6e2eb9818b08701bd070140586b32a9679328f67df3c2c3e9c2e7dda3432fa34fd6d74076989b4f12c44e02a27cbae9d2572c400802aa4c166d39220e2dab62074d198a0f6494af2bcd2540158f94d02e9525d2498b8782c03eb6e7fa46d7bfb03ee3cf163db1a6c6e723c2f3cba6b7440e29401f1ace7a9fcc47cdce1e7531d6df228d1f3985a6a98d4b0dcb3895ff8660c34be29efe2695ee93e62679765887e28466bac12a4122cdb6241530cb92bc3324cc4ea7e09094a2db1e21d643ed6b039da1d76dfbca66a970acc619f0850dee6af2852b93d4b70a64eb32781a33fc394661ab872fad6f711dc266122542648c5b87b17c52fa6ba5d0001a50211974dba1f02502c5410cb34d55896963f1f35db90b91024cd251fe3635e1c7085a4e8648235814b42c65482aa99b44ac9f48e3964f42dd8d5ef7b55840b84be139b66f1ad69c9c6936e0b8a4eadf4ef0e17c39985940ec4850a84be9e00dec589434d4215eab1e3462003e8728356eab7af647351326e875ad8806b340e43d09ffb1e1d64b637b3beb4325f1633223a2ee8fc06efa0050cac199ea1e04e3d453bffa1d4ef92e383acfe43d33677f42959cf94964749ba79f93147969c10af1f8fd53afaafbe1d65d2fd5ef393cc8b51d9e2cee064109dd5877626c14c09b172d6a4ac2c05542d4e8edf549951eec588041290fbabc4ec867da5ea070f7df7765226015d45a5ec8a7b5572bdeef8d895cc8098e9eb4deee112822502a06bbe3a22a22bc6452265530017a105da7e364194c75fe1dd1cca1337df7fab0f28814ad044d074118a7a951fea7ed3b446a1d99168e2340b314fc4edf986f3476ba2d2e63d1450e74cd336a1b1ec4ad68c4670c2d153cb8525e6d85bfd76a54544b4ff2975061d3013c3f52c8010cfeb03dc9a24755ce13a7bb7538ba61adacb259546d6710584862db7ec5f8fda4f64a86cb1b61edb0d7d11311afd0745e10d09695ead8fc2bfcc63260b8ef69ce3c650ec2573d3ec32a5644870b15a423a02298920054ac7c3ed3a6a0a2ce03ff7273d15323e5baec87b5ddedb65cefc5633d72d5f1315a573b191a372bd2bf0cbc0e09127a70d847f66d921814f807da2bdef1f49c81c0ec2f11d13fd02e8f40809afee206eba2196cb1e3984b8bbb47b5124a82e25ab3bc21f430a67654c6a14c99a3512913ad56448c0c82cd964dc6216a1baa7e08a43696d5bc0bc26585105319efaa9934dc0fed6c5a7ec6108d2c2ebaaea0c72854617f46abcaa8cdeb85e44b5de37cf76269abe0d67f69935bb79b6b87cc7a7ba013d02a83bc01f7c6df1e79a56900fa19784ef66d05852508b344b471adcdbbd6174277eb0e44ed8616c29fbe1fc1aa43e18928002a3cdd13dfe78f0f38e3d3834dfa16d2d024a052dd2f5e9c64b1eef4aa499ef70496320af935240a58defa00b938f95eb8ef8ee8ee8d3972895e83aa46447df104c89ae3706fb7a9aea845ea93e511f651d6280e3631d5fe6c54113e9435052b62914f390295caba2177de3d4ffbd0f2dba47ef5cd14cd31c7a70e8510f9880bab7b86e0ddcd71da9f74132005b77ff9e30821d7bb7916c1b5f441bea51353145a23d689917a6f18cc4a12669256265562371c9265d9a116b5d17fea3b12f8e9d3ceac73717530c81e0f3d88049fc6069ec69d53d7ee7d0b25db160f2105a187de5ae710b455bad413087ecd9e55c556ae01dee7636a6738e202d97369a01270172c86513b22e73ae7a7099f34a26f9c31bc1472383c9760dac778d2215699a8eab357a9bf0bed450148d865ea7720f2de9998965588cf87ff8ed54f4b63bf4407983459cc0029309245108427364bd8b4e6fe13bd4cbc561530805a104f8dd77faf275dd2e52414dfbc550dbf0318bbd84f19e59fa1da25a22570af5268724586bda313d3b13fde7f798449153197ac4dd4698cc85dfec4481eb19391329baaff24c6c848adfdf9943c0d930d80706831c3f7abd0089ca16c7c39ec71d8d5f2e90abdb23da2ba051f4571f50460b5b28dced97597d4da5e28b19e080d30c82646762d5cbaff04e10e98635c0d1fd2810539e62b3299cf5d246187c6cd953b9a6f5285748dc27b21bc4e49649bbba8d18e737fdee98693e460b404c7c9fc6280119fabb84e8088fba789142b3c69a96c500abaca1b709f37a3888cbb6d19d2c3b0c575c02799eb9e1b23c5a8e9274d8a0d21f09b679ead121852dc12e24b116258b7d4e885dbde7938f9f5dc2bc4a6fa1d2ea5bed70e9ad20d3d28fef966dca8a8db741d6ae5137011d1edcc5d80214412b84eb4979c47b4ca05c9f7149db8ef7f33718299f136ec898094de623c41a14b2928c46790570637be4cde945b3a6d1f4d16b344bb4a64a14eb37f8c010d0e6ab57f2ddac9662d13caccf852d0eb2bc9365348d240f75401ad9433a8246973cd7b1a585aa4c3172988f7c6fa408c4c240f76a9702d06b9ebf75452c8848bbc73c8507ecbf1b0f69c13fde949184881e318eec500aede9bc96dbdca4f8b478221977b318f8e045f5776025f5d49b931921cfbf2081d434716afd2abe4d3aa5bd125541d5a966968c66b7662351083cd5b035425b78439bd7c82d8dcbc27a4020919eea939f06e9751879691149b738118f2b57dfe32730dd3738934eea90524eb8bdc437b8a2a1eb155bdf98060057f9ae362295676e6f926d84f44821aba308a6297f1a087a1c4b0c838bd83360f1568b2ba39f6d1b503111408d924b30345bea0ce7a3b5c51b7c897ab52a55908e05f5d4cf9773ec0ef2cd923d6211a03c06b220a58483ad620e67063cd82a337833fb991803ddea0a94dde0d66398b827a23a97cbc4cf41d351c7c3f593e5990cd91ab2fad84748de352f38113a3780774d421ed45b260f7278d87b707c5e940c8a5c0195663468df0fb4fb434d2c5022263081447598701d4c7d5218d464ec1837c5c18ef75724d94654d2cb2156587304785e4b17c0c5ec81ce2fd84d7dfc4c61ad4a2812a1b85f0ab5d002514a57cd3d09524f47f971623fa16e231a80a01a4995a9407519f937a9eb9cf7edb6d2b82248e99efd067ed4e8cd4b8dbfa9395f5d48a9b3bc0562e6303c2f8d0617de22271f9c33a07d68ea649de3d3ee4e703bc8411026759ef84cafb46203b3df920e8f7c0371d4e135293611ca07015132a54109e678d427187dafc86cfa4df90473bfb9593b5934804a36159e8f6d57547cbfdfc97b1bbf90cc960a4fa8a3a184e29dc689a6bdf36c6413ef4b3c4799f86ac1f99c9b9f9eda35fd1b99756b37297b90baad6f64d61487ba267f68eb770a540e86e7dde37770ca867bf697d46d3e0ee80a4dedf86581c4689584495989ddc1b31ab3a05ff6821ea28eef9339f29fc99b49db43e4877950e00f3da609b98479e56b9548a0e67aa7298153f8a366c849e81b74fd19f823e7127f70744282beb370405ad4bc3dcfa8ae7134324d372aa815b6a34d24f47f4e0f64253359bc191a02a2aef8d1c0a721a0ae9afed45673dd20fe451c6c9844f11cde95f72cbf47eb30720fd9cf262f1d922f56b90476d40158a6868140d4c064d2b018af4629b725287d5da83e69b95acfbcaf6d422f1a35b6220161ca9c15c8e8e7b872a318c4a6f7f93be20b7fdb9823b281ddf3962455f8ca0aed9843957f7de5c7a71088ef3c353a6fc0661a6af3fa1ecab8086badc5ab10ba348ea54b30e09ba41e28cdf17cbb2e0b021823bb75b3b821e380c5c0b392cdd103d7f04c7e1f7abb5ccf09f327649fef4a6d3dab5b6499c4751ce22a0e92131fc6cf974b96161ad95c067a46e401230486d30b1063112233efec9763f0def53aec3ff24013834b6757a04ddff482f87f491f9d1c4ffcb4dd1c658a81dd818692c5d1f0dd5d440720b86de8ec8e0ca2e41905a61760d9c0db9f5d8eaa196da115aac4e5aeb22c6ba57ffda536cb17b2f328c2b4481658ee34facdd4bb8239f3bc3b080f7e31bb55763b7089de5f0a64b59978b9ce390878e315a03644c2ac7651b5f3cd2d565a711c81f197ff761d3f6c2ab54f3498161e4349f900d1196fb5450edd47ba3c27368430a4b05ce60ebb9d9267fa32307858def52805b0a16f35d26da92697ad9e46e301148dafc2caef6637a2dd8e84a6d2980f2f47f27688ab36a4e9c2d9b9b0620f6a193e6422f0cf964a512dbb9e41a93198c863abf8466817fde0dd08799027c32490b189afbf05f8cb0ea69cc83e987d4818061a0c17849922e4f4a6027cbc7b6da140ffcef103f4c6693292e2ec8eeb71f6616908d63b1cd3b417c9c1b30f08e9cb11f36a2203b640289f9b734fc928534e9f015528630e823cfde0a7ef9a898dd722b138881cd1030fed263e444368c3cda941195d55ec3055062047bdf29897d0db37bda68e0a7045b9361f627a5f188b39c5fb333870f38333b0230a05d092327079552a11d936091e28d7736471df2f34e317f3a1cbf8693dcdeab2ad77319833d70a1972bcd2a8097ebbfa446598569d549578a59fe2882815cfa5077c09916b09d33884ee6df684ed2a535e6d496bcedd06418619f7ac8c74eb6fb607c64bb84388522bcb22f26f53f491f3a647a1cd9932b6d26e978df0bf23b0b4ad23790e0eb407f3a201441184682bd9185489079ec11c75ca2ef474b712a1fbf8fc031e4dc0fa0a2b94acb46ceb46292c0eddbe742bc41beecac96c19ae44f01091528708023b3a127568303c46651294b983a0aa2b455dba30a2b092f1403d2a2050d2965a47868472d19070f1ff3c02ef9c0b6ebf33a7d088939a10e807c906b848d525c1b7e3c3b9f242024e8cfd19f811b8088390e2568aea60a72f8994d041a41eb349fdf1449242180818aa0f13aca72f9418bd1304587f15d1c6aaab4d5711448f98578d8a28656ff11103215bc54db034c5bee5ccb839ce6e1c80f530259c4885a124f8f90e892edb5812789aa78bd48d5d530998477ed847d79fee38114b43f74767449fdd3b42a7b5a2857d51f5cb7c44c620592eff59e4c1c83a0f1d7e054e1bd23d18bc3a4074d1549d929b5e46acdb122c268bf3fd1105336943747d6728ac2977f8dbb2d510d12f00a1a898609c5ea986bbd9a2498e9fe12830ad09647c9f60178f594f8b7687dbdb51904430e058f44da39cec7b8de5ab8141ffe96e64a5fcc8165e91e1a7d3dbdfa200198f3bf0ebb0321bf0202dd7d1a464b2cf651ed739a0b3805d3feedf6643c1b3d679c4a6e4c79d3656f5fb3d3e0145830809b713e896d2e003c91ceab83dc8b3c844eab8646b426dd442c7dc9e73a468d79826277b1eb9e149820c5383b0d8f203de219991191eb51d76d30ea2cfa8eae09add026210a07d58266dc99a749a3e83ca046403f84de3e1455b5b0aa48d3fc4281730123a29ea2ed8b53c1585468fff44f6593c8db2b8462e96f9db5a068cac05f030d3bf219913e7360204d12771434cc1c9f7705a93650cc30869cc86ae62e8467bedcab74d192cf69e29068b9f0293df6ac9050455f0756f6d2449ac760ad137f107b65385479956529cd486b52f864f7d5a2579566c339e9e0ac202693db8ff3502021e4f79c09d7a89730bdba172c8bd24ba013f39f7930cf724588721de77d3dea8c6c93a327f8c7293c4ca8dd5876bd453e645a25238a6eed34a156aa109598b1b2eb7386fada49254b9b327c080058753eb4f357ccc295e3b48ad9fc9ee1fd69fc192489e51f514555fa76e272dd2a0aa0acccc1c05a433e391440dfe0fc6de0fa4b689eddc5ad25022827cf6b12097c2899a1a93517a5da53c009611f39d5e4a56f930ddcb270acfff75c3edb64f5ff9d99afb106ae1d67b518bb3c3789d88404814eed511406ee098229adf4c1e3b9b83f37e11f0dfbb9df4c481570fb3c711a1285ff303080e0538292c22a2810df3f2226f04cbbede82e8691f5e8f75122df1134bd9cce73942afb5a84b33ae3ff9262e3f5bdef2a5dd0eb8786452222961de2869cc5432334b642135ba2481675b02551546901a5dc41b16902b608c5fcb398184ee04bf495ade9636918069a12e175d4d1df4c2348dc3e961f64adef5ef355c6074f113b0187cae6ca6349dad0398965afb18bf121ad0e1fb8694a5834ea6b6436b00ccb5dd1f2ff195ff6e07faba5eb59148b7bf6aff8cb2a518300de47b2099aec4bd0156894c680ed4a248adf0119d2f5d46f07815a8126394e6f5cf36eb44bb112022ce039b47873e5bf76f6ff1bc4ca374552474c4419df9ef5c50693accb206a30256856df36d6fe4a6c5406856f5361be228f547882dda444d2178c3aadcf7cbe3cb45c683deadd7fd285c6475106eb511518bc3932c20ca2256b7ede41ee7beb26b23869eabc68e533dcb544b5539e3a4ad40bd66790e45383bc356435444818ccd49c26e2d229272b3a45dfeac8c5bc95d9ad04bb15e7f7f262323729162d52be36838964d8256316ff596bdcae0754cb369367b6f80eb1ae04bb9df9ab88b09eb045b83f73fe7740c6fcdd9fa828a9b79f5e404d586f870bec32c91cb6fd32718509dac78843bbcd7431906a205f176bbbe8f5ba1cf636e7ff177e09ea6a1f7e109211c375ac70d7befa9cd13d062b4d98c3d8faf7eb844defa98153c11740a144dd916cff227497be59c01a3db76b957a7773ce71cc726ec76703c4e72695f701e5fdfc9851d6f38582ea5c9f34f91c54a9c7acfc2a18c6b416ac2b10a16a80e8d01a1681c0a725c4a65c11fc7990110319f14635f2b4ec6eb1a5c6688c60350a84157542554a60e337fb44cc406356c514f0c5b847c29e04836c18de66fbf8273f838f22506ed86f2d68ad3d144029213294dca552ac32fcd4153fa32145b22697540cc314d845c4d4ab002dd9090b5d2e573a6537ec0885825cb474975932ed62212660c78768d2f1fd2a8590ca58cb06c613823c06f2748dcfaee0c61f300298a1e59508dc62741c0c25e61429b1d478b6e06271215cd9000cf97930fb7e2959400c58cfab9031b3136d764e590effad6973327681b4de80295de55a825a9bc5763753f40aae2894bb6e00cc6f7a6e150fe0ab6fe1bddc4a38086d58834af5120f5553f3dab01921cc9dc76d7e6dd469e27ce76574b475c454bf3431bf13d71fe423501dccb406b05c96829ffe47baae2c88400d875f2c572f97f03b83085c5af139d663752ce122c13945528c7211c23dc3a9a7c66facd94b0696f5ede991e62bf2a3ad68a255bb168891a9503d4a61efa52fa96d3629e9eaf09d1497421d48e2cee8edf5cc2f8b66eee668aaea79c606bea12dd5998344587b7dda7316f545e3af1ad989bc006c63aad8471f956e8a62a745d322362cd9245a080cb60c94b9af8f43098916b02cc8dbdee23af1d65d42f6bf417bb9653b400f9b5cf59b3f597f033a4679cbef2455369506cc21e31ac1005470fa97988d4a717648d4c13a595129128c3009d939650211ea73a93288dfb488b82567ef394dd3c893b6bce6ad757ae14a5f76ed7497615f213257f719f2db62384d31377ed4a359f0d42a26d001584493a1226b4fa6b8037047412eeb76b727f641732cea50179ce48ca430071bdcf3ad993b795a677b882401077b545e816dff1e4a590af3c8556e842f6291dd39d90002ea8982f6b580a6fadd9cb7c9e3b83f3b03edda965d3acfcd7094f6677096749d6096a6550a1542d5b0d751732bdc7ec5e37980839f7751f7e94c4446f9dabb825aa2100a9f86afdeaeffae38f3b727d5507e25aa13bcd2e93e2cc89a0e01956513ce31ae3e462fe0ecf914fc2e58e3ff4396dc61fce73ed786091c44c95f75d640bb60dbfcea7a43273dd2c8b72621c35b662e6f773bfd5d8f37c80a200d1037b95cd67d19b43e385757404e8f947449da51da18127ba20ccb3170daae949759c0975e927a89d40cfaa29b10febc743a070bc9e91d343c08cdc9dd0aef16982d3bc6f1663a12e2585801fc7188e4b7a5e46f9d2430393292d03ab57ae4866f674e2d0225df1de49008c4ed62b320e503d6c11438aecd68ef3a6db958de476535c93db754e0564f52ecdda328206a0590cc9bbf60f4fc4d90b09352265fe593124dd6480bf42cc1fa150db566083958d25eee4742605b78754793b4c304c7630a9ddc30d84a3f50367a4e69e09362f0b3f861da17540ab69d9ba8ff758a3966eb0124030d7697d8dab35f099c8e6c44fb75527d580b5445b42e60a49dbfd9cdaef70f00148357a9d3b7f2c473fbe44a06c60132c550440d9778374dcee6ec1c8e9ae9ca104c87a0c47e866a19cc96d637c6a3828e5f0109a35650723a7f8c94cc8a0a29ed0c8a5c6216cd69088b4f7b4a7f59a8d9bf9c16ffb0d8441642a6dd191680ca830d44d71333d84d783e4a79b184d995700420b7e6d9e8b37afe0c3271ee81064bf356ad11d478d40e98dbbadfc09e615ca1e6c17615e825f6433ef713f24342205ae48326387bc8031fc859306522490efd2120af31c52703964c3b66a32e6f430209b042f1d00518256bd6872544508e9fd2a50d02da7f7970902e88d2b4f0ecd3e8022306b070e7ec5563b3e2660175e07c6a5943095a84503d477512b2429df2fe1b2477dc5da8bf41a235d19eb3fba5904c1f94b76178ab2634f4c2ded9012e8c60bd17f1a06eed9e766deda400031b568f4b343a107435ab8df2589c6903d5143f771dfc0931c23531f2847a884a25c1cc8a75930954a9f97e4098034f800155de7b565a0218f03a87d57572eb3127b8a55a101fd94221fc519ee6a09f128017faccce1dfc84b71461700dd291408aa1655e4d4845c094f68d4ccd1b95587db87b95c5950b574b621007a4c234083b9d469ba9c98614aa6d986dcf9ed5a7f9ea93325666221e106fc0518dc2e0533d003e5ce5619e9d5e09a6d34a2b8808cb04049f4a2056239dd00680f199b7deac5024a398bc14a9fa1c2dd454355ba81793c5dd943b9f5e4efd792de27e025a05dbea68d5e2b92b941655ea106bc764a5ac8ead0acdc45a2b5994e977dd0c652276ee68b2803f1403c319f3e61662aec000b5ac4eb727bd8e49dca18ae290eef795c8526150d630577bad61fef11dfdb9e23430d2c6b53ace86693dc4a57b573b7dc192850f9d20e1959b4b4f58d8001e4445a13b056004c528f704f7e6d5e28c62a25b7646b0d38425a2f29151384a89e66e6254a290a6b0094243451de195a66ff0ad7d293847d80a70398e287d79dd03cb7b3930f51d6579c293c1f5d69e12bd5c3c7e2fd0164fd26455ff479343dfa35a862e4b9ba85b36fb54196b8411a94e312c99e431ab104b867468604b94fdfc81385cead937ab4231bc27b83e87eae56018078eae9b43837ffb7b8455762a10bbdfc67168683c18759e85905970e9f4e7043f06934d9a5d2f63560226a237562fa878ef6cb3230e94b0c7344f675e86413fe778a3ca0348b855a654fe425d19afb90be59bb8e68799f9887eef8d142608c16a4a29b81fe420959c6bc7f0353277f40994d1f064fd11cefa4a0c67ae26e1149f98daadce19098b936f14d465caaefc5f12b8a9d1262079a5d323d5fe2f9e98d3fb7265feba709a2231b07efed31f4cd1d7734c08331eebe862874ae4ba4a06f5ad6cb4dddf4eecddc16033fe6dc3ebfbd358b565290af9d71e62aa8b2df00153bb5805e6968e59a4bab71707f357c38d1d8b9bb5daa98fc094e25e577c0089f69512ed75879e30b4db76707a7c7921945ca0eb9d3b85bdfea2d0ad7c3e0f65735486fbcbf3297f3141b369b3eaa9aeec944b16785b927f5123e15cd49df0130daf3e5e6f2ab8c19cc6ca055d34dacd37a4d775bc81797a8bac205377ad0781b17b9e0eb03f926d8974f70841e73bcda136c7d01eff7087167171bcbce1efe377299bb29077ac9e3bf66b2b04b516e5449b978304d39339d023f298fe9a367307331573ceddc23469f5713ad3b6c7ba7fef4e6e828d32ebc8a24050f89f20e9883a51a1c4b8c5667736dda98ab517345ee13fe1d3762e2a7e8957801f8600c7b5e50d2bc8eb81ae0fd95f619f25f37661c51b002ef2f48ff821b3a91a293722145c971f2b22ba9e22b8e8732592256e0542ed03ca2aa8d652638a5c08e2ffb6d1326e11b6beae7888995cc58722b40af0adda920bc7b01489f4454b292f02cbf644dbc243acd868b9edaaa05b636a22241ad6db7387dcf7d1863d52e6cca14edaaa7f3d0fd83730259cf2681cb0b17bcde6c4431b8889c0262d0a2ae6197149b9d4004298bf3f4c8a16ae3501764a77e33efc493faa5f6e6ea3e9d86a1e27926866fc5e866add4ea08c33fde4b18ee1ef1142da0091a6d3894b72189091dd10ec3f52fd6e25f2694f526518e4b96dc9631d79757b839309d908d19bd75192073446411d1aaa4c6ec53359fe5a8e58171724f1f9803baaa65d013c2e8c8467350ca07c059dcb70d128eb57e6aae94b6529bbf2f4656a012810b7391f8612601ee813eb457be6fec9d1a88fb163746ffe02568d3876c3e7405cb81236db83c77b75eb0b306f7c155948b3601f3765cb2eb056a35300c37ac0d902aee11060948aca4d7bbe57f42e4c3d4362e022e4760cf37d4e02d1f9e3594bbd94aa9d3a9345154197cd92a3b9eea3cc97d1be5ac4623c6cf06a6beb93381d2a0bcb9d2c7051e285fca00050ecc899c876804879816fa06c3be5e6ae1161a792a4b80cbe727c2c78f99d1467ca174a5557d6f363009570be73f01cb2d334f786fbdd2fca0b00c335e8da7e48e09a64f72d78d145780de0291fb5e4129708012b35524df83d6c323284bc107e48851073d780243ba90b7e608b8384e697e38c61a705a50b259e9e24c551e57d368f4b4cb4ed62030253d0c947f5c27a419fd145a9fa54ee3a289ca44ff48a26ecc7673c60c0c52930c166b9daf42c1d5a31572ca4c2d0724891d04bb4151b9d3a010262a2cf14e558912f7948b2fd5d03a46f2638b97d2c4f6ff8c7552f5cc5f1a84d6bf2bff6dc00b8861d32066c005c4d1b381a9d75adf93c6bdee41b581cabfe708e1f380a3d092353347f149d203eaf465d4583ca925e28b1f89477f39b42b83fb6be4313a61e217812348925d2a51656aa548ee3406cadfa2f430c5fe5ff37ae59d9d0dcc055ad7f4578019361d987face26d062635ee46a0eb76b3cbbd305354e20c02f934490774c16bc0ea77a23ef48e98971d6e870f1802390672bbb0ca9dc7c73a1e98ee0a1826b8db95026d375ff8188e3538606f79dadf606663bc3f411e7e05fa25104cad0c229d35c9de9a18e29c281008e6e55ac7f34bcbfc441a1917d3462c13c21acf8e53d2e2d6e41927829aa0270c53b5b403b079d9f69c575d1a33abfea4044e3d08a7756592438fa7dd8eab6365cb01cef53bbd95b10ebbc9854429e99f0373fd93f280f7228a0f8d1c346f273b13d8040e2d3854c06515b666dee66e60eabf962ebf480d0fe08400ce421238d413f006adc150b2e819699258de71601747dfb63f0cb07c0fe1a1839b9e3b0576f368b1d104fda64739e630d1332c4021887069e6170af08ab24b363b833770b06da0b07f6939464eaeb869862a8cb3b4a8ab6fd9071bef5aec1b6ed8b9c892158ae1dc59665fa7ae0407cdceb8c50284bee197018d4e494a5b58c2892c1410dd698059f04068fc4924b1753b60459d9ed9076f4f4ae1bf7274b8ba55b873b008ebbb2652450a1778beed6690702ecec2c385e99d10fafe55040e269993513f75fa0793df496b9d089e81b483fd22473bcbf392f41d003956c18302ead0f6190830a01d5e0387f878d5b88f24198b5d24380c6ce5f03745311151831e23fa08439f3b2448d265bc496cfdbc19216145a51fef6e55e10652ffafdbb934e2c14c7de314f3cbf05597c2832fc69974cc9d453d5c902922eeeafb3df16421486710ca2ae29ef12823fc21480f0fe60b8441cd1b9e91e7012cc68478ced5e50e72936d7506a2d927792f2cf20bc639d423215ac2491b204abab8df2b7a4e7afc5bead7bb8d4f087bc6786b65a8cb0ffd6db3975cba02ef7ce0bff5d08e4641b1e353d9d4ee00caae4e551567040f8460f136232dca3c4fd6b25d5142a447974bda467cb6b3cc9dac38f59889eda30ab269bd7346242e46660fc97727644410f71e9557a7d08953e20bf2f20d57d911ee9bad9841b75dcd2962b82d53b5f5697f6c0c22a5cc3bdbd44b57c4f3296b49adfe85adb9b28a8003a6d99afa7b7a2b83fcf0bac6084aedca0980bdbf3be3fb409bac0244c9329ca61f507250feadb3d0749690dbd5f08bd2376ed83b1204223612f065b918bc24e5c0c408fbdc04d2c8ca957634fe32839d9b8195141c0378a84b13b1827bc790703961ed8abb1511f0d28ad4ac00beb84019c60e9988141e0698498d35bc1b88362514d3072021e0b7ba3af17d13b0a6b847499535445dbc14eb63e9f6c4ac919fa8e55d44ffe6e604a595411865e3f4bf7b2d1da4f40d965eb79b6adacade9b7e76d3050217b72c8c003ce921151f73b909a8d0dc8b6b8b6395199ae4e77d9d0a10dba6d41bda23c0bacb7ce12ad7acb21a71eb5feacafa333487d161f02f46b04085e8c173b463633b9d7362a1d2ea7e30cd415e6c0708a8b5f9fca52ffded388977929a863924069632c4c601da3505405d3010c29a0eba9c655b642dd7507c6297f35bf9dbf0c6f29dde21b65a369e48b908fffcd01f39af33d19d184436c6f42b62e02000280002f1d03184124c07552e02548b15152103f89a9a92cb3f81b2d665904937b2e5de724b29a54c329d03b803e80329ad9301f9a8b7807cd40fedee03efee9efb401136f71735ed472ddacae7092fc75187e034e887f17cd4e39c8f3ece477ff5cdafe5656bafe3c17ceda706b777bd4643e7e917f70dfd1879eecfc9e577548e0d0ad1ec8731bbfbf934747e7eded34ff53887d6fdd4e010fdb46ffdf6b5bee603eac0eef3af56cffa74743e6e9cbf347f3f1d9dcff9b8b1ab7bd777efd23a3abac6d066bd8e07394ff3394ff34110ff111223026c7edbb6cff9588ff3b1defbc0d46f7ff301d57cdc5b4b83dd6fac6fa55fdf05da9e464709cb1fb83d500af58143bbd335b4dff47d89aac1e110b8cf8763fcdc13c781c07d90ddd8694f3c9f9bbf3d8e354d39cea018d124300465fb1973fbc05be36aede7978a3cb5d688494d8dcbeb25a5fd39e7943a1ed4696b0c19e3e7c8d697538be7cde9d3274b8b7777963d51cea0399d3a123f10d1275ee44545db91763cd1a731331eb6a061e8d3ae4928983033c0719fbe0d4ac350a1485eb45db9fbe4735fa6dfc59fbfc5cf7df9bb4f3e563ddee8cfb963221961536e88dadf28cde4340ef575a31ad5a0dcdaab3428f7c7d168148ad6aa6dad95fe0e17521dc906f1dbfa8173fb0ea76ec48272a3def17bad1af4a2ad83e49e9a3e0ae3faef1fd85140b33adafbe36ab5177955bd0a65c3a23e65bd3ea62a0d3af5cf1285b2411f4845697d95ff0ed943c3f1fce2d6ecd6beb827adbb52147efbf7f1471fbfa71c65dda2f05b4dab5ef6d00afaf673630d4441af1207d64edf7afdfa15a55d246530686efc356e7920ac41df39baed76a3b115ed6baddd9aae23f8d09d798927bbdbf6674d1203a22755f613243e8c7992c3c6bb7bda58f58a32f247a418048ca703fa6003e4fcb6e7be8af3b7c1735f7dcf79fbc9f7c073e002bc370fe6b9c163dc699aa67d402adc75ae77ada3619c01a8a97a30485a0d7a6cdb1d6badb5382994ca7b90070c90070c94a7f2868446a060a8999b29e73b1db3c12009fad672683feddfdc8072df3c6d5924b683137d44a89ecd27abbe711e306ebe3e1824abbc79d0834498ce64de8c715214504d1d24b7f69ef7f5e592eb9f03ed4247dfe8392718a74fd5410ee8d3ae1ac8ffe655b6ba347893bb4f691d955ef297d355e7831c689cdfe0f35036e603a9528f9af6dac7da85b6fe2eada3733e9ce99f42d1a84936b6dbfbe2d6b67f757b8e7aa369180ae6c6ce804d1f5f9a3bf4bb076ff2eb86eca1791b373fcd07d2bfb9435aa25ef3e0b57930af1ef4aae601637f2d18eb579ecd17e74ecd17e7ced5f4d540f5bb9f2a077d6b019ff69da5281bf87dc43358feb6dd7be9b65f8c2f3516709c3e0ec662ec1c2afa9edbc8aa2283b1188c6eeb20b929a5f30136536bb1ed68085e1bc85f7ec94e64307763b2ac94c6492683d9f5d26af1c2b7878469e9eeee1e036bdf8c2db90705e34648a0372539207ba24aa56387847de03be5794bded204bd1d811bf766cfe334f81a16d3e46b23fb1265270eff39b48d6cf92d12f22a239141a0ee3f297d721fda2e358f33e549988ce16d54a8f79822685f0f19804374cfefdacacaa24790f4c93e3f970ff5248c9545067f69e98b10e1ae149c40f3e90c09c3a1f16853f6c428c3b7db28c35935c835c871dfafaf0ded181206a301f59bdf451921f8b6eff3b57b5fbb3efcccbe1ff793fb6dd33ec8ee0d04eefea65d1de30b4da36ecc70548d38bb8a8a91074c6d1a38228f7f2d4275bb8f51c686bbeef591c7bffb565864f07eb15a295f3f47536315e856dd8ddbba6ddbb6cdb5370d7e2e923256a974d0b4914a6917ea8b7745f7ad5125fda92ffd194ab9dc8225e67ad6abdcc92188edaa8162ce84e30a87f638f56defb22bd973bfecf93a1e6c3f3fffbd8f571f238f8dcd076ebf7dcd4c0821b320c8ecda5d140dfbdb87fa55f7f71d5cbdfca72b2d513952dd4af66cef36dcdb7c3af653dbd36c5ffe9a0fbc2f9fe6d3f1206b1dcb7deab9e7b697affa1912a803e2f46a36bd98a0f4f55a02db576ad6cf9fd2a89afa66cc54ea69de464a83f4037fab683ee5436877bb6391c9f761d487bd885518f7351f9530ee69be9584719fbf8f3cdcabba2f4a98a36860fdda9cb6efb97612a6f219858646a3d1344d7b1af037c7dd3ce86dceb5b9e756cf7d277b5acffd4af6b09e63e53c2b07070707c7fb26f0b5be286134cffae2d7021281cf28f5b1e9935f5ecf35f8f8a3066159a7749c588330cec90e6db352913598a9fc4dfee53c664f8a20dd9d08521d77ad091cd84014727fdbb1a328ca0b7b51bda2ae2cd93fc6e2160eec7015e6b742aa9316f9e0a587253e30f980c30e42481433bb3eb6dbdbcde79c5383ab2d7dd3a05b940d1a37a561e893eca1ef33eb2c61f145e4f9004bd60282796fce727ef1f865c7f4a172c72945929bce2452b874196db5d6dad76bc97bd5a5fa555f1ff1cc6b477de3cbefd29f2b3b584764ea5ed4641665cb2ce94aab840cc636c80306cb08fa74e914ec3f4b62b2779c252dd9b3a4300909aba6d34e5a30685ed9c30c4969c719141c7602769c4169b23df08159e735214f07b5a71a0ca21f4b894cbfb2cce4a5fdc1d6b1c319e0bb7e8d18283a6cfa4cb4e02e4e1fc97dc74a22730f763b870545aeef920f90f85a2dbe59ab1ca94d4dc699e828ca0ee4027056e5f8d1a65ef7a26044cfeb74e088338cf9ad2f393e09b67f57da4aa5e0c7a95b07b67cffb66abbbbfbc7170e3bceb208d930769c2d99d9aeb91c67e02dcf96b6ec20b97d683b8417b5d66a6fad313158cb4447b4bebe46746a9ba7ffdc7daf6b32baac597ba2a36a3f1b511fdb7ad27222c77d658f519df993c0357c4b1d2c5e769c6121b30db0e30c8b0e5bd33ebce5cfe8d2e87a8e73676ababb4d9fe8c8bb64d702c74c7424e7131dc58f1eae596a3511b23d0973773995e8a523b32527b32525aa038e7276858cd4a0d8940a2ac35c049722b61d028990138810f181c8d2921dbef4700585ec822828a410448726bea410050a96f040e6ca12214e9eae1cb952440529303232a22524058948418e8870b252450e428654a0e20a241a58d0822c44e80e449c59726465092b4fcc408315a52a499820483cc28a161968a8996d0a04120f89e7c56688c58ec462473cef484b3604152cc2225710e11445129622a0f0429b0c614436801d67559054814187580962310f06cf7be18517bc56d1bd9e176b1589c5e66c1191441708325482a0f2a46dfef1f3ffc03f8e74601d858e746c18cbc76fa375a43ef5dba3de0552b639cf1dede95f3d1fcbd6b35adfbdd0918e95163ad2a98053fafe365ac7cd4f2d34ff467fc07ad74231d6b7344b0bcdd09dd4423f77b45f69ed6fea519f0e9b17c27fdf46ebe03ea585bc68ee68cf612dd463ee682f7fdbb4d4424e822e72fd520b091de9d8deb59007e68ef6db0bc5b9135f15cb1f7fa213e824d47cfca101bda8e6133ad2819f460bf9cff763fbfbaaefc7918e4d7b921f71eea05c2075ce84c94cb2b5774125eb1f424716883f57ffa8affdf6c59f99d2988db3e36c4a914c19d5ff899f01ffa9ef4823e0960bb32f52c8b45a989969b1d072418a162954c820c5c9b63bcea430b93bcea428994951a229e028714d19fa3ee2fb50750d020e0e84f7e123542839e0100d9bbe376daa63e4e9244cb29a8450b2fd23ae2f68fcf97dcc513528a4339fce17a44b0f543bfe9c71be7c2b18e6b2746a73cea9afa55f5f2e09933f25a54175d29f9f0f0844979cd36335c1fcceefbddd66b76dd3ee5bed3e8fd7dd34f78844a9fb80c0e5b4ce3fb52516fdafa6c1a85423129773584f64302add983ef7e6ec79ff3047a2044f6089e9065306fda316ca1e2984b5458e7f63eec8bf3767cf53c22fd9b37df738a2ae576f01919e44f650cff8371eded65c6a2ee9437f9ce813ca2ba9d1fd81bfadad63224fc725c7e92a24146afb17b1d7f6b1a1376ab846d3b7924eb94998e69626cad875d32883daa7f4caed73752be9e3923b73257ba8f5325d8e32e2a6aef9ddb77d608fbdbdfc64b7a5c4f9f34d6337fc325d945250ed38eb528497152c97294ea856d0d805c890192f8d5d8874894148971a503843bd2e4a3698dfc88d53be0122df94203b8d29b2442bd4222d500df38a642e4e1ef6af9f3e994bd210e762c504cac4980d7e6c8301bba4f63241ed3873aac1dde5ac327342a294563b73f2e2b4c569ccf630118aa608c771182b49a2da9cf897b4bd4ea552a972762e4c9b72b1b25d4e724d4d6650700a32e44ccd8e33a7223844989c649982c342bd61dba4602a630412b5848d490c13194f8bebe5552c7bff2fd88b17ec8537251b793324b9a99263c0219261ff6a2ab2533bce9a806cf06341709460342f4c55664d4f664d3bdca61c6ec04d669c82449e18019c7201d2ac8b12f662a7e06205908e489718bad4b03d09eb82715c68e1a470633825c4621e0e10cf2bb3875a00059315c41c19a2c810743e4829a547728c31ba0381bf3eea515a887efd219d0c3ceae3cb25e3c3a28cc8e3a817eeded575afce5d9bc321c102e5ac4d2370dc1203b32386c42d738664f729fd0a30b158d7d1d76bb592d5cb82882c580869102e40860059c442e33298212c802c5ef122b21e52e03278096219317e44262a61c527732d914a102ec426187810124e7126344f21864538840c598c4200325f12cff89210b3307291451a70327a01912a9660fac18ad9b6c151809245266810ba64619a90b45032e64a788230ce2056d991f90e35b217841e939cc20e64b224a2941a8432071c091f304508011d594b2625f421ac41c8241e21b37e8277f0820c4c384105851e8a8c81c1b6c1cb132112e11818b2780503645dc258851fe1444c10a758610431c0a0491329560081859833db0628e2124ec22bcab813b14b13d65a6badb5f60403b8c9c28218064c48654dc22731083dc948a881080d4080c81445f8926d71257a64318b10452e4b228c2d081b20332274334bd14a0264918acd051230518209204cb0a045125594d9363c116e11ba181c52b1881c421732291c895218b77c09152023137a9248048d519ee0818725539a68a28a28a8b861a30008590d2107b21832d953e841dc2217c06189322d88c13245c993916d833751c4160738139dc8223421a461caa2844c71ca0a210064418c4a08a18456543257410727a7229b2de12a885a90e02d6809e397880515a18d4ca9ca10a1c3204716bd5ca4505321072294a0086285252d5c41a73042857d03f6644f6e8513f9c864104624624021e491d97083bf204504f34338247cc1ca58c200c8aaccab885074d10c10bb82d00555d3c23025d182a65129b6366352d23f85d8645cc21978673c2d6039d20154cf1340263af26407f3c18e7e2d2ad9a3c4d833de78e39d714a9e4634009906b886ef578e1aaee11b0079ea8f027e46ef38cb62b4e30638c678696e346146c2629624dbf70232f81dfd92257439c3324605e659b747eabbee219528ca0ee69ff0b4d65af56d7db1d3f2e8b6fc27cfc10632c618eb7f6037efcd59bbc8f2e3dcd1b1bac525cb29b02b478a75a2ec994652ea9c2c03e3e448adad55f3729de126cf2b73523ae79c734efa7346542bff155c238fdba804cd17663909d51004001000331500002010080744228138281a2413a33e14800a7f7a406e502210860281308862200661188061100640180000100061280aa220a6f9011607ee0f0bf4c67f2315e78444514906318cb50adcc3364063faed2fbba460c9b804e978368ed28a453076f340574da5c67ae2cba0a418424e38fa36e29083b19cd98cbfcad693858972c0c2319ccf3d9eed21a52b2b936013c12854ce71a502a179ccbdfc41750c8df2a81ff1f2c53479f070884261b2a19b502bd1060850cc0f1a6f6f1ad93b4c83c2032d05d41cc0489063545e7aa81fc0225aab8ce3ea967e6db06acfe1f9b728f11355c8d87bc49e470571e1ce1597c54d940318efb0302fcc7882b65b760e6b0bd9c2d71d1a76dbf44c43f5e4af71fb6f61e8ddce314300944c6ab3f56ccff6ca0fe10c4c599ea59a87a5a2013ed91c0ddb3b897ce00f347a80c78a06283b90c41fa66d2570a4920c2e836e20c5dac9233e60d1d97f6f14bfaf9c6b60ae8da342ab54315ef021a7e528e5ee00062050c0cbc46f4a26d16f729cc65408918f44f1274a9c381bbc6f282dc4c1a0fafe228f768dc272b80bca16d678686dc896f8057bd724daa8f5d374df807d448cad1bf617c4b3ec21e26266b9e22945a991b0c9f2c340319303593450b1d79c39e49bf51804950314a631127a1a3470bbeecb094dea6261da46de7ccb27c179a843a66602cf93dd182bb27e55c5e5878d7ff24ddb815495b6be05acf0bef368f41c697012efc0dc8a5545e3180cf6a5e4894994aafcdda9aaabbef0a0b54695d2f76be5dfca2c61aba1d18033e92928623f609c6044a9c8a4bea39d7c5581028ae058d709368410d3290e715e9bc35ec862d16217488d8986608af6ff9e453a5bba3ac4107004e2dfcc14f44bb8355218e78ec12a1df153df5e847ec31457b4c622cd2c968ba2470908f877107444b8485dcd09c3a91edf7914ac974b694eea68045505151a9928b8bf424c5a93860aceae03cff159c1cd3a55395a91ddeb231b3a180db5b8f099bb89873b5e7087869e4480017c09b3ea73f62b9fd4e973a2ce46bc20ae4ad87467e70229421877748fb53eb01395fccc8fc23277c752c1397c4e294f0b35e9ecc2fe4ce06c9dc00c3cef6a4b70599d80838feba7f6f5f24e9d4afc30b514e073c7959ab31ee70a253ddd1dbaf8358bca818d67924e083cb77fc94356e18f49b0a15836d8d9186ce2ed72cfc9f43f816fe2c9f8a596e26d0fbe7897fdce20e2cf6f4023991f774b8c83be96662908f56ff7dd184b62e4a3d73d2c14e9f9579fe30239bb39dd924dc9119943ab3bdb0759c9ba43b8e3df1643fea2f6265627989a78138ec7379380173c675e8ba13719f2ad7c4e1449869b885f6b9497b65ca28a31f14fc1402898c35d94966a3b62d24a5abda138a1407db5ce7e543796e46896234e353968ea9911403ca40fc3de942308150a6d900cd64bc283d957bd88ab225fadb1e86d14b04bc4f0a644a384a59f5e50acad954b8ce1cd80ed42abcad6afb1e4c69e93a4823a218bcdb5e8d82605e304e325f9b471282469a20d3687d4d5b654a054117a0ba86ed27c5a1aa248e59b2b2b865d62cf5977296b7d24a943b0b05d854fc5da2be02c5a56885a544b6d6aef16e6ad804a27addf4caef05a1cb1305151dbc2b7b03a8b1bf0a469b7b402a8c2c20acb8a71580c76441abbada8b0914bcaa501ab420d4a92fbad8d8a6f15ea169167d1a14d6adef22aac908fce531ba71dd426ddb72dac80aa21ddab496761b08424a1378e27d2aab35bcc5a445becb4702ca268d13187e429a70625127bdb2f4ddaaa50618326e9de56fc8ac10824afbb0e2724aba6af62e7166944277da6d5c024418d3ee6e432b37b12605746052f593c592fa148ee3dc1dc1ee1cfa46b2d370b1b67a49216170b34b4939a66f92a38ae243936a86e48bd731d7ba400ba4ee5498eae379834503412c77685534aa7dae60489eb86a46fb8552856e0fa7094eb571a80112307768b8e1f52c0dd60f22447d77615363c52580d672a08bb24f59abba191bed2c055c8a3626301bd222a2d26bfbd7482030a8f533f6df2ed08aab0ad45543ed2989bb5a0a8c2a5c28a94bc317653d9f004ea4488d5a41fc2c049caa84805bf2251acd9696425e3f66ec16351b7c2f12d08d3264ddb38f490262eb185d6c27a2c3aea24f59b9c5a70fa907a358c5a3c9d4acab4c812b7695d31141650ef49a76e1c77a4971352aadfea5c61838bf4538bb480b6e0b2c2ba161d45929a26a70ba86f527f1b87289292e30bc4a7f807b965b740bd02f415a8ba493eb79015e9c925f4cc82a81fe7b065137cbb8e05a4403835f0497a5a368b6a855d15f1b0803a22f548e35025c972c82af6b5e8504452ab995aec5b4d702bcdd684a912446d0e77a4d9bb8e3d49006d5605a50a39539360b11acd4a4532c43734b2499487dc3da89d1b3751ce87b9705dca946cf4e876c9db4e623d27189e24008de38c1486ed54d908009f5d7deaaccdca9128d0716396f470b3aff083069348acf48a2965a53029bedd5af82cd055e02d34ab88a885a71552da38a86f247aeef80a1b84a4a9b9a8cea41577ab82e52dd480220966e39820f54e9b45542c3aec904eeda0ea48df4ec21536f24851b64a8b90858b2a62519246540e6ed13724b713b2805b054b85288bea1555dfa2e325f9aa41acb0b4851ab849d5350e6ca4422768e10a8b8e2fc9c7ada01569a091646e112ac2b5d80691a4742dc83324178a6820725c4d56a1575611a45dd60a8e2ac9cdd996ec6f3b5418b1022a0e6952aee392a461eb5bc095851a16a4596d1c36d2db05b3c059a169315285515b74dc9142edd0d090bc5af052ad3955c4dbe2e988d4e38d4385a4196db009527fdbd65287a14d07a5181fb4be9524a257d35920aae0fc947f65b918b92401d7f2527fe3d6264eff87aeef1cd582ae32f76f9e342ede2e9ba1e8e0049f99986dde1d35f5505b42164d8edf76602e7230c345d553370f3a1a76f53b9931d88587fdb6256a1c21925a27274287757c7217053ad052b9aad4389e8bfc972cfd2c99d8bc27697e48e670dd95d51307fff994b197a4b30952dd86b95e0a2636c05f4048440b34bbb4c339fa4f81c5b234398a7f5cd1676fb9dbcc629e13380f1c7cc28f67d88c46a71811f579d92890ca0121d36aa627b42a5223c42c0cbc485943abe79cb35d9bffac1b3167d20a4b8c8cbcaedfd099bbd4888c5bdcd5d587b2bb115c19c712eddf7e8288f2561651212cf8773501a11664253af358babb3315a57c1cf0204c1281de037316d967c9d6c58c6a85de51a1d0bae1e6f78ae34b811ca67757b163bdf1054e48161eb53fc58e3319d013323068c3d6b780d017611d1e63802d3b4b234efc67d74e5b76b9f3f7f1774dab6649738a29e050a559368dc062bc0b81cb2899edfb61d26c20af26389796f47ecaac2f2f59cf05753f50c29e8178b992e8d82c79480441022d58847d521f3f4352935ab08b041a431122b6ea527852bd30a9d34487c0723defebf08a91e04cfd7dce3c91e78e6298540bd6a8ac879008cca958a7a58816236a4255b5582f4fb223533826dbbb555a90446f8eaba1cbe826595eea5489520cfd6300b56bde7200056c043a3f6845c116c9f188e6dfbfc3fd49ef3801415f8c415e5eba3bc8afd8e899a5344e58f8300ffbc89a34ad45462005ca562c449f6cb4311aa137df2bb35d54fbca9ad0e1b699c82d26816c7bb5b769b639ac71a12d170b6e20e7666c3588fbfb14f7f76012039be00e0ea14fa1c753a46dccfceac3f01c36274abc2851ad91348bff16c4a54a2e23d2567e017ab06e694306956854661c730c2f4951cd180963c10a42f240d0aed2c55c2f620c6f1b9e47630dc83401ba1f2b07934e535b711ecc373c1db6f4eedd4368d74dbafe5e9fb6f9e22820d0fef412ed73b22a8de1ec9b5ba70eb6887a2c327a027731e82f53f0243275ecbb633136bf27f5c02b791a61264f14ea7840aff25f3c4db138f7cbfbf328ee8ff513dc60bf0d84a273886cf0710189d0c1226e9af022f014620fc02a68fdc6406ab81ff9035e665bbe0899e06b4edec6332391099de2a97f85731a08ab8f0100adab0ab3b523755a46628e001281ced4f938a124f5a6d10fed6004b9cf1eece8b0a41f6576dc7aceb442e16066952de9f785a82644a943dee653d77ec09477a66664f7b1f1f71cd48548c043f462c74e1c46a654caf5190ccdbc65f6f1d734eec2b2e4d081728a0cee45800c3c1e9147007efe04f1ba30eefbf0565e4246a96c232e3d86167d38a174c3f5a0848599d22248c05e972763f6ecc35beb177645b70b0a9c5776ebc80dfcd1839ad3968c1333fa0f0cddb615973db68523126d63faf5ae24541d30b1dd72d9263ec223adf8b47e3e46e8db644ecd759488d36d8393145cfc5d8b8248b37511458fb7f146cdb6c4b989e53b1aa6c9b9e1f53ab642f81216a4401dfeb81dfc7f7d799270d80eeb636a97047729523cf54cd3d25eda3ecde0c6f4d6fd1e0e31b05979cbc83666d09dddff0bb3ea1ef0c40b1e629adcfb24804867b1fafd3aa183baaaf81ef3b5b5b9fb5f1e14e76c23c0dacae59c908c3617217a3b1cb84712aed438988524b01378d9720621913b671d58cd09c5695911e7afe2fec08116d4e7e278ed842ddf55d1c4f8d126f5418d5e76278ae6714473939da9222e73b076e2813fc9c94a03696a0048d1f2b0cc21655b7bfc13803e5767250c20df280e4a0b9f253510542dfd87650b250aa2cad2e3b3c926a83d9cc5505ab2399b48a2e86c9fd595748de1ed3bd3831770a11f9098a0ce6639b05b204e1abfbe5d0df348cc541d4a41f6eb1cd13587ca035d19a235a0d2a4e79215f0dfb85e765c0700e8095a0264098d0f35a68113287ab0622496b23198891aff3372bbb5840302e6a1c1c25689056a5c2f89910625279ad2d3839aef7929d641f9dba4b539085b7b9e7caf971b9168523976f148d09c6a1541425f117c1081d608ebd36ce662291d339504a2056d1ac0c93b72cb89ee9ab08d2c076841a48b617afb26611644330f771c39ee3b32d1586915d7ec555ed300bbac9646277b43e0ef99e3fe3b2457e3d8b5284af34e77c484ea0d5df2ea7cd7e1beb8709c956039dde51dd9ea8d96ce054d46af4651f3294d793f3f8426dd5b117b5534a157067ba606e8a84f0a5308a598c06cfec831222a8ea83b5f822a0d5783dda98db834ec3648aa2d0dd39ff4575e93dabe8dad3e9a48d1888d5429c471e5b53507cc49df121eaa8aaad1dcb0c6b92ef0d86b888b57989e5b9ec0115b621a36425cdb0057587a6e3b7202c77d24b478e8f85c524421aba5c97ebabb58c14f2b5106d483d044c35dd81574f297fa92ba591143247a5773794ff1961d607a4f04dc894c7a122264a89176cad3430fe563cb49d79a524ce0f0b3ad1019dd7d13b267e940372dbc46066139874e784768d5b22e0fe0fc218666726465f472fe670bf176f7b7407def955e37fc54c79de99d31d7acb38800e39449f8d6078c4b7e6a1a805d24acb22713899d71091556cf1d74f527eebe43bcd33a65c3f80c0cec7d47b366dfb3a238f22ce281147f48c4fa0d3f56216cf7c2458c1ab696fef05ffbc2707717711903ea57a03cc4ed5ac10c0631c2cad5c9b82ebca5a3b28906ddde21f9d20d36a9cdf71d99747a27fb650b0cda2516cbbf460e8117648cd239d3aa903398cdd445e4c9f7276e739bda9647fca4e0761bdb2543237233a4fc59f8baad21a44f75aa98c02e0162494eacefa8c18de01d0e07971fcaf8f53016c6285a0cf37d56971e1d39c549729152960d3692d5bf1a5dae5b825b23764bfbeee13f64feae252384bc5cfbd4d9713cf5f4b7ccc83c4d78e0aa1f30a0d89d804bdbbd1159594396e11fac106e8e5a82c86fb7e07635ce20f99c1d5b73b465ecebf1b227be2561cf48b13170bc1e541a8d6cd057c8eb328f978ef5827d69c6affe2500dbc757b6ef4401d2bd3fd077547e07b362461fd3d72ee57c1a6dabc1a34d724313ca53d10643bef6a42745b1299a52079bf05e4760bee80afa0a04591372b2572eba500075e64e895d6e4f1108a2152cafb0bf918dfff164617ffdf822d3c6f828eca5bd8592f5265df93fea58eee174845b8af059c25a7127efe0c47b56630b3a998dd625ea33571c437c8547e03b8c00740728e37560f09a0ffded01cdada6f0a2a72355356b329a15ab4f4e428c82785095481edf0b70885653c86114ced8f3bb3ea8473824221d56f4ac5102af7267eb616cd7867d7a4cd807c9b6b3694233aa582032d324ae6a68811a242182e3c0f4ad13abc76e679af367e97303ffdd6e80eb4b2abb26ac117d619e1ae0248e7ee020e19352f48b150666515035ca2fc4f8930a808226535ddeff65a2e0bdc885df5718f03345830729b2cc4eb59ecc2fb70703630ff77d1287cd800d5899a03120a90dd57d1316d5c7457c03d727b31cb422a2c1bd5f18393a7d0a3769acfc628e91c1e417bda796acd6593b635d386e9c62c00012329adfa91e5400e00290f7ad6156b878860aa87cd2ab6bc23eae86e98396831d9a51166cfdbda92c887136543232dbb730116161e39625964d7b38969003aa657730509722c02c614950daa2cbbde50542538af37dae8c6cb413d6593b32289d788fef416bd37329bb3f81b548438920b4f5e2a6c484c4bbbf7c05685179642cd5e43d307bd51582a1c95c668618f32b13f34b55f67e81b973447896f6f73591c0c2b9a0f0f9c0b828192ffd0530eab82a66150accb3c697198038012eb2d9f68daeeb25882d88d995befba09f776968b839b6a4205b383baa493939934f401c4808189e85f952c0ddeb47840c31baa74a8e1a7a825ad927916a52ad121d3e865c0c4b14f1505439a042fdf165c986706b881f1dab84fc7875fa9380fe1c125506be1fd02797349835e8be37f11b8c101ef43646144059f9d02f4fbfa716a5b13793a792c0852975e5005f66f4fa8aa6ebbd2a884415f0e21b3b746c882e68a42fa8febb0c5421a7a99bcda639c12a086698e8fc840b6c58ea9027433092755df7a50e1b96a0911ed05f448153b63216946d0adc0139980e3fc54fe9640963b432d704086a4ecd3ff624f7bda8a3f1e4bbafad75baae813f2509a3cbf1021b753a7881702811dc56c088d4f632bd723dd1233f84c774444cbe3d1125e89b027d26d9ba86d0bd2516a8b08a46497de46d0851472ffb885f160c81e43ebe7569fea8aaf214190e353c23cc15b5a215906a15a9acb2a55930969a2e2920d4701b6ff706c11597c439742e680eedde9ec61accae2c493326ec22ad8951541ce6744172963d1a9693469feae07b3e14c7900ced3734e68f9b5fdae9dc37bb2a1e1ded445d3ee617f44d4a43438205d185fe2955a2563a20a51fc80be2c661aa4994152c6b7b04be9de5189e221d1f1ab71ddb5d36bb3ad888246656b8fe098b98f4e906a76e2ba603875d8ea3dbc282a4fc9745d97dcc262ae7a9e305b81193217b1cc9461bc2fc683c3ec727429fdad80c74b02a9f14d6d3bbde3794d2716e7276213fc8722300ee382d511bf392f4d5d92f4ce530684dfe5015fc11f7ed1a6e39ec6b803924f94d957f1c6ea348a8f1f82336ad5437f27739fbf5456a2e51f50708faa63611ab800589a60c7a818d688f8c9851d4daa7955e45a0b3f367bc2aa8b08e080cebf21124bf4a4ee893bdbaa0edefd99fda64c8ed279582026324f46b7ff3855320a1a8e732d36d26311e2276c2b7fa4d6ddd5b43bdf53972b93a7c8ed5a3a6a1d61854f886cd730ff3e23d64ab5cf1ffce3c233c573686aaa2a991dab28a0657f21ec3c41b393ff7447c22166be6405c0043f1729528118ff79750b09f3b90ad2c76ba6cf55a79b5b6365ef3e5eba2290bf5cc1427a7ba94e57c944191df85bc2cbe09af05ffc6d1c235c9d2ca08569064603e505dfe3372262640e10198fb336078a66a6cabdb7d4a0308bb9bf73045c875db8f620321ea61730e971f15106c48b20ac82a2b5d0504c7526e933f5867dca538bf0b9d42f3179afec51d3c8a443b08bdf18fc52a5f7af95a4ac06f39a5e65b1c7b6c2aa330405d19a86c53f3e45639f12f48ffcbab0a38e1fc2e7cb1fe34db693e9eccba2e85b7e705d50303e20cdd64a0f197e2a4198219d82cd044152d6ea642d9454b2d93b04dc03a0c414499bcd5a03553b94523d243d1cb201591c92d620eb98b2833950c2bb2e33f517af84869647c8f55796414a642d8cc19e2ad65ea6148a96b57fc78090adc73e349b09f3ccdfa4077c4226e9abf853520211d80cf8805031d3f673f7141f4ded28829bcdc3b524092ad93fb8ec9ed64f04e6880c6d6695e4cc55938323a3e326b5d2fb5203e34a5e3937b2a5ad415cbb32cd7e3bf1658a1ff5f5b27d8055cff6de8d08022c3d0cd806b0ab7471b68ec9c5b51240bffbfebf805b2f76005c559305a05d2e5d748b12da7591f26f131e40fe5a20b7482e394806450ebec0a41f4ae42590017f7159149d4b26e426303c50c725b7b08b115baca65c673a2c500b1cbcb12c21b86998e4d5aa2c77cc91168dcb010fbb9fc3b2770bf019ba676d53f392c255c2d8d0eb16609f07afb3d80b081f86880c8e5b7c2a697b64de2c17b6a9596d6f59ee14cb55ccb03d0ea453bbabf824bf337df0274eb271b659f1303ef5b6fd74b8fc9a972fafbc05d135512eba050fbf975ddbcc77aa32cabaddf87b02e3797f99913d60501a4ab817e60380aff2b9287f953cca3fea99adb41dfe6063ca0f3c3617dad84f559ec35ae99efe31f300f8f0f7c02e39e8fbb8db945d061e57d32bbe5d7c01f8701cc82467afaac7e4fb3eedc205b0643f2572046a5a2af46ff2a9d08f23462557d752cae02cf5c1c45e84c66e179f0171e28a81da12caf929537f6e3d2f9b30d0633c15f9a3eeb59cc639ea86a7436f262ff30f641d2c2f8a10c60d156a37e061064060075922d8480fbf8df6bcdfea3e73a5d47ec356a6c224252638c21a6215f366a7387bdc274733620c437adba69435ae450fbdd7a8f6a8df51b32014e3d2abd87c13a8e2923c9c17bd0523d7d3cd7bae96731166e65103b55ceae3b8d2fe3ca2411389a139614b8621189b30dfdf1e2f76d558ff89430391ac99ffa5087a703b52ba24b8b2e3d1fdc42687016aac1b69d29fb5ab7a2a496780cff2e91125fd268f0829dd67f17dc9815c6d4326236aee578e7440481467c193b3bd71e4e97b76fddd5d16c030a521fad4b427d49ad34d6d7d38ac961edfdd95c1c5b5e807f46cf8380e6c3ee02e1d9fac28a2cd3fbc8775003d4fc1d43d25b659366bb1634d59ed9f0e39fd39ec281da87e23a635f7ae88921462db4a2f98ac6a82b295f2307ab3e21b38d7bb8cdf7ff96fb7c5cdbe9f61c6db974e142a8a374b6537fef222b184cd34aed45c5ce2dbbd6ac06c1dd6632b837ee2cd74eea2d5ecf17bc71486964e5e0481eedf2c71dc93012f071805940082ec76f3360600a03ed8b7d92f13c339dcf2985f28a03e02b0c82fd5e9e87d93910aaec2984ce75ae6e9b25d8a7189e6bf17ffd0cadbc1af9177c151b364a25b38e5892c05add57165863fc146b887067839888ee5849a3ab190c0e4479e46f07264fc74bb9a0516781f708ca4156e2c2f41ce9dbbb3f6173be6772fbc972f3f4c59ad5137b80731e10767f2c15cf1bf50f324f356b81b83458bcb2c3ec1bec97396414252948342d31748c3416381bac2524a9be61d2566f1c85fe634299232a8c129ab197f807461544693213857b9653aeb92ad60c4c542d45376016c73e9465846310139c81d7faf0f150963d48b62c6712cbcd6a4f4bf3e3cb60d9de58eb8c561a874d3f4b4cde5151445c434e4f301f8985e5ccdab8e47c62c20c4f3359f581e4a9973e7095ad29637403c460632035277e697e93f56bc984f17333ce962c85a0c9c40326af586db2ad25438ff59330bec60e3f548f841f6c1753bec0190d909a655871f4bcaf614e413429f9c5c3b15eb1899cd889c4b198fc585ecc877876ef597a8a35e34a24e848f1b74930d54c681a5af0dd4a8f3fce0490ed0a618b0039b87668ad571f460b16576dc93227375b15d48e3333e28e9a94cf98c0daafa57eea3856f551a0cc40dab6ac747a16c6f5f0d3044c4f30c97629b02135849bf78a0e34084c01ce0fcc833f7b27b3a544cf94bdd2922eaa5673c3f710b9da89ed4d8256e0f11d9bf0a39d175a2e32a26e5c1d6644fdf9f8df065d6edb2d5e078c37bb64071a5c4d7499a1687231cffa3644a231e07166ce1f820a3f21cdeaa616af88b845448666a1db14fd218869278d4ba0e99f6ff50dc3926146d2709c9a29f555bb6b8ab9adbaf1adac4bb9e54a31e8f33889dcf746efdffae141a1ad35053422d7495c340a697d48be17a140dca5e183041c8d3f9302ac9326e4371f55d056568403fd969ef9ac90420c3302dca54cf871975adcca5a7a1681214be541fab399e0b2cc06c3cb398ab914cae5c781ef70126d8c6e3bfed86851292a458b09f4f5cceb9ba2e88b71237d731e09675a9842699243165fdeba5fd5c6c14f3fea9360d8ed147f84d34e5189748df08fa137d05a511f925294b4a27a8f4816879d2de146baad39d01d125ad4980b1ebd221db04e99223e92111f6efdadd20c152107fec5b3607bab906888fcea7faebdd8a65e9a8c110de9d9b15a8f2bbda832a4a9ad9dfab812e3f1fb00e5be771e87b425aa4c90c285bafafb06221ab762ea2aeb7cc76c1b18b0cc3d4423229a5c3a8f7eeabe4e9dc2dfe9ba67b23b9a3abda3c1131ead88426611117d0f508a803b4ed1e77c6bea5e04981f1e93cf0a9d3df29d0d3b04d9816cbe3a01968d64b593062755430cfbabb26ba0cffcbf6f66bf8e22ee00cc015e7e12c7f378f52ebf8a280f90e1992c696d768dbcbacb7ec28e9b3ee24f5397b52c6ae59009a447518a59f0f3290b8cb8235c93681faebe5f1572ef19d1f14aeae5728abb685c35edb8ee4f27bfebfc1515194e45ec12ccffada7a2e803162a9edce5ee18eabd63e0ab43984dfb6de6c4513ef421c90d406e82a4c5a9283ff17e080727173c4a0249ebb1db9124684f25e407411a91df11fdeae61184bd47988d46c751a0658176974c6c4ba9bb0f8386452faafa34137a80985adbba0a6eb758b65491ba87d107d288bbea99df410006e58c0329b4782e747fb038cc6e9e9086c34be5466d2bb9c5e8c5303328990d8f48fa86cfcada64e80e955dc140c110b4e6ad294d80b47c4093da3dc64ff1cb64cd58092f4dabf7f9b7e00169d93afd5f57c46208d2e02b512487db21ec8eb872e281eb8beee662dc14fc740d013ee09c2ea47ccbf01834a6f19dcf4785bb2a5452d422d1aa4677a94d839f73b064a98cef173a2d89d26c4e8f9371a6a9e6a9ec2b7f94764e5520953bc9310e80293becb4928a73d2d602a0a0edd4f204361838698f58a506999846df033ccdbf4ad3e05b19ebb87adcceff10e2e5e4bdbc8ab3b4bc692c2620a62b230e05588f48e9f4fd5676988b7a93fb2404ea066f4c66a45f9e8cd55486aa003fbca7aa9640d66535b6dd99b28ffc89ac8b32b3613884539e47a9190f2a2f38e75e45685fcb12d59412f36b3d819a1c199c52179fa93d5e0d0fb3a058e011fb2d841e9700359c12ac1d9721e78ae84413cb1980da2fa133ea3f38487a8aa9b8fa3008d6cda7cd6daa28d106ca8904d431485e8709d9093c668720f558674b908f746ebcd46735a6aefa58d7051495b099868a6138d0dc97e404fa74726a879bfc59926bed03fdf1d575adbe2fe8337f8086a0bde7e9b49fb88ff96a4316fd584f40225ce0b6fc5c5903838b4c49a9d0c5ae1a1a8a5a287d09607f1891e2cc4e15b75473ca4c511ba6e2812849fc991b009c32c9fd89c6d2bf1d8daa8d8ad0a3fed423c54db8125f09203fd411c5194acb05f5f71534f262e5556fb6d862384bf52be057a622f40dec04e86244384b24c34c2a5fe6d23d3b268055b376a46729c5e96665aa1021d5698a52a0571b31396b4a08610513b3ee877f72bbcb18ff08f53b0adf7c255dc38ac84e663c5b994f5e23908bc3852488a992be826f9d6e67e576a0a486b9688a75a3cd97a415101e88b23d61b4d327f191c885cd6b6d90fa17bd80a65bd4b25b0f109f321ede063367b1d3c320040d8f1fcdd43e9ba78a5ac7412b47052620a4d7c08dd632195726c23f4bac8ac50e094035c7ab8e058897b48db6dfe321dfbd1a09d5c6febac2d83d120873ef539d77c9b525d77e73610c9697c0d78e92f5ce084e32d8a3aa1c1ec64a06de933c60a065f6a39fb83eeeb3c8bdbaa2d9e964924e34cdcb8c109ffb0be39a9e60ed1437e93b49748131c0fe9c8db74aa278ef9d9ad33da0e915d10e71b703e7ec138a31d91d8aa1e31b3e05bf72ff50caeb6800cd36df3a32d284dc3fea98fb27724be4fec9c1e3fee1629b319e176e305ca74fe05736966f3c8b319a488efead1cc9456dc54b98d6109b247ac355091f830faadfd7ce226e0e24bd4a09e726fcad157233638ede23f1362724c6ce1d8ed5b4813af9b44f13e9942732b8e83d32c16922392d60ea4010509e26126da88fb25f89ce95fdb9ca380e3562bfaefa0fcd3c2f1795ee2a7e5996b38954e4f9b7bfa11200d430df784688e257f9a034c39a6e0947b6c3883064c7214ae9fdc7c310646bc6f7bf40df009db6ca5d18a1619d233150442c271ee3c77fc33acf9e443e14db35f982906cf181960f00c7633236505b6917c9eadbc55c05d40f3998496c88131d86694fa2c9d9643be755fd3915f01c811e7641b7c4f604c484044494ef6731bd31e8e6f91a7fa93833c7e76b816f5166232630e9cc4d01ac8629edebba8a2229c3101b36b3f0b5f9bb06062d0e5608d21b78baf833236bb471c56ad0f68e9d81d49203348ab39f5743f60c515a9115a90db94642fd88c71cc7e0f78502ee9abf0bedb5c43687289c0c3e14118ffcdd033e0e55e247f8065e7f93699e1d4ba06713f45438098960d841ab6fc1e0c0403e5483f546f2736b3f5fd47099ed8e82b5c8496217c06eafde94afa5f6b90cbcb22eac9d932414b4b8122607d74789a5db821c11f585dee80a3a8cce595ede395d62aad87a16f0a5b94d1abec96b9cbb824286985dc73fa723991dada16cb4ceae632bfbd158fafb9289b26f489c845b16853ee2a34413f2022619ab96eede43c946eb3202098ad9c0ac50279784a17af0ccaa07761f1711a19bb60d9a7ccac1604724db07c8485d0f246346431c0c84b6f720c1ecf08c94444f9cef2b4f47b8089ce5cc25ee251452efe913e0cbe66b505ba2c323531c9498524114352fe08750757824ccd9e885b4b596136a62b5b414108fa831f9a93465eeb6facf5fd395c823eda102b497a3d9eca9f807236c91f77f77c681d7709e6437129d16ff2c361bc87775fa573ce99eade9850d2e10bc45fb9e1624ef88c283a75a72a21b3a01d3f662cd0164beb0921b6ec92464781957caf77b744282b20f6b7f78660cbcbd84a77f0ec77dfc8b807c10d382ae5462b9d9f2ae6d4009f7c56bac83be9bcac016f0e03739d13bfff105ef1f298d26d038a3407c02d88b6e4138c98972527c422736220d04da5cde24ad9e4d72226730193365786c5adcb2e27b75297e65286c3f39cd37434d9eb52843c3761f913b2b712b800877757671cf5135ebf54f945a839128326b226b57402c343f85e2b391028b7e62b293a1c4fde2ffe0bf9a285867514a6d192b90903cbd9a08d05d4328fe1f183152e18eaf9460e88d2a870ca55aa6ef02744204520b98a8825e25021e7cfa85ece7ae21f280150d8008577c51ac9e58355f254d82d80891ef9696d6b32d6af26baedddb586bcf698415b2e45f2d3f9300e6e8bb6b26e622cbd9bc4c3c79bf386da72ac890789e730ce8542b137243084d13abf9a30d128fd346bcb69a7b77c59037367ae2b34e2fb00586218a9e5eac7308ec0d22f5f74e0a6919717cbd18e8eaf9ec1068e3572248b861cbe7bf93c0be25a106a18c047e884a09cc40b97da35d2a77d339c2fc0c8468a655e49c99b409c21aa60055a7cab72533ed346bf7483789361fdd0eb3247ffb068ccbb98010c10e0e4976a6cf1f00f70e6339438a8e405ca80c7195f457277912854f092a73b2a42916d879ef180f4a83989887de12ad38e2b7f4697c083a59b3106e4c4d093a4774133788dd126a7f39f52f5bdc34c166f82f0e778fb741ffbe37ba08d280a519b395c5c30039e2fff82c19429d6e972ed2e8ab4ebb1164f5fbb2e3373e9225e1fb087fe20cbc5b967b93333c72264d812c8ac22c4d030e05272021bf5c9e94da917cd790079421b59ddc8660186a1d37e6dc5ef3c93e9188da6d3c11752211cf38d8214a64a545438fb2cd34322a8a42dcdeba2d9eb17c5f68bc31e02ad86292351f43cfc2399105e55bcd99f7f187379b57ab7a96b84c14105e35244291095cc7db2c141635a483ae40ac7629349f153c0fe515c66dded952f76aa8a0f7d0f0865ee1d32dc32d37fea3846a02f48e0355a5ce2d6248fec3d0cd981dfcf836498dfb403c371e31408389c6b36a553aca1a39c70c127f10fcbca1792af543062f768abd08448484fc6e87b05e25448adbd2c30d51723588003508546d038a509e765d40903a4a070a1fb5005e206da0b9b79883e31c99c0254f9213c2ff4300fa6a98086be05ec62a7f76ecab54676c6370c7da047a0eda5ca16738e82f48691594e15052d385622fde0896cbd58e8d1031594b882464cbbdb7dc5b4a99920cf10711071a074760af713e99cdde666f39fb5cf696fbb82339db47eeb38cfbdaf847ccf61b41cec97e7bc899b03df7376eeb03a9d87b32fe9a44aa258eab5cc9fe2723735f7a5a7a127699da6149f187a51062712cae873bc2f57046ee15f21e7aaa5cad95fb5a72773f9d4e7ebace55cee7dac8c94c89305861e8806104462b23204328601889b127c6cfd2f87d45587b28a4bf4908fb61dde98739f3616e87b0cafe2aeb47cc0d1f5effd52ccb68f699aa9ade3ece7cadfac771b5f41817c3913ea63be1cf846d89c4d50d03c1b28633bf968bb48b10c7e27a3816c7122209fd58fbd84926e6b30c7f3239fbb19179fa1e74d0676432ddbdd96619febc8774aff7dccbf9703e9c0fe723641d43028c2160ac80919207902114304ac018c909c810ca97a30c9431d95f63ebb9528aeb4e8f40737e8420d3873966da93bfc6403cd74a55a5d728c51ff719ab02b9ce0ee9b1d36314d3b7d6f4b5ab7feaa0cf30e14f664b226119db3e38c272786b0ee70b225ffb4fab9f8f1abff2f40814e7f4637fbd5f5b9e11c8fad5e5e44ea439ebc8bbbabb7330a8f5e598a9b576569e52c3393dfcb1d6f027b3a5f437faf054df35cdb54f047e245768d23459dfab1bd14c38a73e26f3fe37fe97c9ab7b20e301fe3c9eb0561f93fff9b8def1d7f2c233da8e2de321df7b7a04f9176e778ec339bdc4f5d432f8b331f2278e7fce85bfd638136af6dfe1eed3dd4e94b7dac1ac691dccd5bdfa4befecde794fd7f4d3bf89ee3e9eb4f75e4dfbd2df6863f167a59439f2b5c7ee73ada2cd8e96f69f8ffbc9ac7d4ebd3ed37e47ac78c6779f1e41739fae99dfedee13836cf164a572441c4b1641255e5a47d31eebfc6de781078f753f2c124d50866118967539dc2ccd99cdcf1acb389fc6b2deb82d9b6d6f76db9deb71ee48fea26fee5c4f8fe09c91b865efed19c70aeac7f16a9c33638ff9db77bcda8be57c2effd84ec22c16d7e31cab3956f6d7348fc19f3d61a0ebe3ec97f1d9deb3695f2f135f0ec9188c3f1fd7723eeece11e52dcbb28cf3e17afab5fe098a412d87e4d067e31050fca0655b876697f371c73e2ed7d666de9333efce3e1f37c38282e250b416caa1cc7b32762f9605654fc29ff7e4eb29e7c3f96018c6b1b2966559c6f974cd85298d54d9f06527d76cfaa9ed7c29faf2f345962f88bef092b7dc46792bc9dfc0c837ba47a50b64f6bb369b924dc9a8c4c4601bb7f9c4b22919966c4a6625a372d1d25f5e845d31522f8a1f35b2b9404645067fd4b6b229995166649a38a3d2351d89e20cf932b18874fa18200f621a33d12e1661d8f51ec497c1912862d7c7e04f9a704645dbc9a864536e22f6d5fcc5afb65c1ad1e844a0dbad96ed3e6859882563584665e24df5418b9b9f51c192e30345200894656729ba4011c402b1c864eebfce9225f717e0b09d589451e9113aa392196554e2d1c965f0b0a55eb0a5148ff58734d2bb18d2054cbeee41e94287bae72aef86e74fe3fa0ab995d8fa6485edd4902e3c74c981528ad1172cf065871d1f584a8e9ccc21538ea660e9f2036137ecee6ed8ddb0a56069da21c5940ca17419026173b1db3f8862e3d3861e8c5cac31c7f8370eb15f5748b721e9d7dd98fa8cb2fbe27777f7777715597ba7945c68c9525216eca4620b2e7020832862746199c8722643285c38e1a207211b99a357ab1b51ba8bf0f9a0c92b11b888818b1732aa082e58b04460106d819a428b1738b83c514c29423501e526298208103030b94524a9810d31c06c01030ac9163ba818c25c1eba2051c50cb0e8544169e1c4f581c10d44a82782b82e34e9e20431b03872a408ca055af05c19b420418c2cbca07cb8c205545ca31adc2ca6601105b5c405282e42080949b1e4da90c32d22038a8a2c7a50416421e40af92246182c50476489c10d6e0ba8dc2f629082248e1081ba61053df070a30042e1404310163ef70458ac50059824b488b203d490145f18dd2398107ac19016a0be384181f141890e5b6aa8c285757bb8b47087c208830b940d5b504cae5c16d02006174da0b2b4ae0e46a8c082185d5070a950828ae206d40e3168b9c285cbc4153a4674815a8115b735c57d62c5ca133b4bb870040c86504529400db1c38501072c8ca0a85841e4eec00a15ae0f5ef4704181910394161b5c2b505c1d48417981440b435c1ba800952408b5058915335c2f5594e0c650c510215f5040648142810e2e95231acc80880c6e0e4a10f184f503ea871e546082185e7e946c79e1ca600b0b281b8071822d6278a1e5090eb24481022a9a024a93226800e20a931a92dc1cd8708d6881012585961d9412612eabcb2541152816b0a056a8729b7022c61718dc8008658220502d687295380111363b82fab159911676406467074296f8f28316b7065aee0baea07caaa0a63c714b10e56241620744a074f8a1043e5c1324d1c10d45acd00191bb850e84a068f0058b16f70a2d2826aea0ae5419e289fb44947b84048a0544a0a0f8218a0f294872a5dc706f5004d545162231c822c4c917d40c5a0469b93d5c6152059583276688729d40e2762102ca0fa8177c405d91e4aee086fb5304e5440e88a070900321978b2f170a2d8cd0d2e50a8aa78a0a4f708982e202092188a8e287bb820fb728498c306ec8a208ca091544bc5021e4e2e00bea055ab4b4005d411955b9493c719744a90109140f44a08afc7087f870774842821b504b1441e53005911bc41442ae165f74b44035d182aa72e542a912e38b2750462c8d725160291231b47882a201883b832617c992186000a1c2d480122286fcad5e0544f205c2621942c132247f2bb88a315e0193638c2bc7055061053e443541ae78b2619b0f69a4b07672439161cb47286f7e738c31023bdc73e2cda4834c4780da48b3e26f3b21f800fdd8810cc4ffe25f11d8e1e3e60750b1df6a2662d94d7a4d3a3cfaa017968e6d8324fb25d50a36e210e4f84bb29fdd072447fcc5b7f88994c8c5489ab32d0997b08d184be83931742ff5849d7f13310a3ae67fb393f1eb9ec4b47693d351e79c5376a4ee6b9d4cfa92ed6094304b2e2ec9bee167f8013ec3e94daa897e0fcb8f333e57c204dcbb2a006bc0878dc51313292d3fe8e338e969e7d9039d534fd8d2fba8995ea49f4f252dd157b560e76f539bd943a94d6ddbb6d28cfd9cd263f6b30f9229853548e6aa36e794a1617979af660f5b77d3fe2c7b202e93fd459b52da34ebee868f3dd76d5b46bbe9f6b0ebc72a7ddacddc3d391df0e7c38e42887bcc8c37d8a5a0b040f207dfca6cf02b766532c4ac8a052bc29441234f19b781f9937101f7260a32a794b01f24721bd0e626ce988f255631b6f50eb791dd3c80f6c5d2a0984005208e4ea276134861b11f2cc2008f2b476f16ac3c5109b1405ca6e6861f21dc341b99e3c2b4bbe60ee6fbf5d97b77c1ebba2e1dfedbd561efb8c7c4e417f7de7bab54e9c6503628a59450c698a281fdcebecbe8c3db8a0d7a8ba79561cb052b2d17845a448eb478c0d45a6b8d345629391d3e6aed364d873605c775f569877dd66959b7bdd6d5e74cb872c5f0de448c06f6bbd9cb3c5bb229c3168f5176f7ec5730e29c8e2681d24f195d57c5be66fa1f6d600e7a5d13b0bf9e76745e6fddf3ebc23253d8c6d5bda64db80094e7bb0b2c1774a88d5bb5ee518aa3d2fe298733718e96435f7bfadfa57f531dafdf1e50de8861f8cbd19ebe7f8b051680e2e4a1bdcf6e669a411bd9479969067100f19c4988310deb1cd7ae97b3070c1306477b8a677874e679e37850cf1b25a1b3f69b099b469be3d19407fd0c4bf73cb801c31a141bf4d60a4a6ca4aab0d8d3703a3c5e9f5919ec83232c8d59ef800d69b013388435431c6b60a97bab98ba62fdbfd5ea5d76f9c6a15461ce77779ce33425858510c22ab0a472605351d8259c78f7e0df283ff4a4a4f4c05416fbf54e868e5331a83d5e175ea41c81d2051350bce881e2c5ca0a43524644bd04cb763e0736b70d73ac4943ec233f4e727cac63923ac27e4d438e3d34a4949891481211ca5d8650bee8c95b094eee6f7c96e46fb587d3415ba07da4d4352bcee8e97ac7bdf82917d8af5ba0d5b6f018c7718f439a4f9acf5d40f246e2eae6a3660d7b8c6207aa1ec3d8fa691ee02a950b96063ebdda1f40d31dd5718384fdee078968e28c38b18c416c2ad58efdbc2ce5572bf39f0c8dd2cfb2acf439b3040462c95a89bae7db43ae725d905c3b1f356ff49d461e15cf8de2ac1da474cf0c3ba925b61451abfb784f4b052b50ba509251a18195c35b4761a6d7f45a1d62de37c7639b9d4caa65e3d3ae427949b790004b04e08e8600cc339a96cde84ea21fbb160980f2475b3a4317fb0b677a3b49fbd879a6af6149a3c464d8628ca539e79c8f05f980e46bd2c63e6a8e1faf6c6ef32e699cc93ee7fac6be99751724531fb58b51322a1c37e7ccb297dac70f9267c660908c753e6abe70e5998d65a3dad3de5e2375383093202701299f84494fc21f09cfec8099f4383093f08cf639a4bf5e23fdf5244c1f7e90bc697f136b909c751ebb4f660fb2b54b21d4d3136b4fed710f739fb3f64ec43ed6bad59dca13942393ec4afa2745642b0f9150ffb4941fc8b29d63b987b95ff2eb99d11958264bfc6d1bd7d335b29de4399471ffa48cb0feb143806f22e7d335f232c2c6874722110e453d2c23b9b18cb5410c3d214aa225a5a827f56468e80edda12bc4d0d013a2245a528a2a2bb6622b4aa93b95a7887b653c0d0d6f950ac2ab3d45dc2be36968782b216ccb781a1adeaaf254d6d06d5d19ded0933b5479eace1deac99f0f5d1f1a1ad2b49da19a6595569ea2241ba4f9e28fdbe8c6383a6bae71a543f537a34a842522b2303584cdc97ee6af89364d8adbb8a66c9833f2d1281a452bd8d65c0f9933dc4c3ac83da10e721b4c84dc06fdce660ba586b2996a81a50ff3675343d88ecda3e6aff3c71971ef82e205981cbdd8a20b25397e336922b701a1786164d33962136598ebe91af823860963559f13113951b4e9a0e84439e22fc88635fc1da4618869503caa5058a7ba537f4ea7793a9dbeee9ceacfe9743a9d4ef2cade44b3097ff6647a68aa95a7f2549e2abf70921b860ca1840124bf8ff95ab1ae5857acabedb7584c97f35d4f7f04b9eb552bd6d9377dccd64ebb26c655fc496b63eac7d898181b533fc6c6d48fb17f13ad7d98abb5ddd73257fb257c136bfd114df54d507dd0b25fbae697be1216f3a5379970c99a6cc9d23f613124fba7937d69df246f09634feaaa7b5bd6f0777df633fe14c3d33645c22a7d2d559eca532a95beee94ea4fa954772aab542ad59ede29c9cc9148250ba34dad3c95a7f2541eec49182e99001942099344de4a391ff6f24790b339ade5e8ab3e0898867bed592401ca38c3960e607a66fef6dfd55acfc6b08e7ea6659426d3701b13c31af0aab9bba3101db6641c19b64c206507263bd49051e887b0c6f51ff69763d7775daa212e28330d58037e13fe3d7f83dd0c0ff9d8e3c80ce1e3349e4941e6fe1fa5dc387b88677e74be3e0599e1ff28bdf641b2e44cf06f9c429b301fe2143a5f18ce899eb513f18ffed1b38e25880366887fe02ac4e14244f93127fa7413e447f8b1b3639a824d3e662563cf45026dc9f42ff96e13235c79ab950921e4c622a8542db02baf6bc2c62fcb11ce88ff2d20c70a2db4d11f1c4121763d34413e7db96535ab533a4e017608f4bdbbb81e3cb81f3d7fe64c7c09b141b7f1e35542d80f4a9c82630c2c31a224680156a8187182ca1226723082e44a447214575005b572206ae150a45ac2654884784116b383c4e1065140d999218b2b39e4c88adc80a42279a12211a299ae40a24329a5a20445ad1ca250299932c87b9a16122a9994610b492b7fbfaa43508f61881856308513306860014f171840a03a816a87d52ac9bdaa2447a4dc60848a45f3a96480d87ba53158ece18f128dd24910698fd02a1b20a51fc38479209daf99254d7cc1b6c10a218efadfa692c1767ef8a59f2c399561ab069dbccdca75333cf047da485bede26f8e03ab2461ce399c6eeec1c8f2e9e51c2681a35f3d3747c2f5dc63cf610e5c8fbdc6e9c05eeb627338f1db9e7ea3d0b0067d20324358833ed6e56c8f7d96dcb945835186196e78a6c7f5d86394d341bdb3bbac35cbb2cf64eda6ec2cbf11e47e8d7629d02c710a343b865d1384ebebcb5519b977a59a61b582343e704e38278473c239618c118407010407788cee1ea3bb43e8d91338a3c241832108922659c060092b4418419183b2327daba4754393d6cf905c336cd1e0e5886dbefff49cee3eaa64b0fe31ea60e14baa4262e5c3b719c491bd7c0ee2c0689ef266096bf4779ed87c10b2bf0366e8c39c83fdfcac9ba1b84703f2fc09c3ccf088314c98a7d2bac148cb062577000f0300e15780dcafcae1553878e69ef97c4155c4c2fc3d55e540e3d1f0c9fe764bf697b9ad19b02059ad60680983cd37ba478fad19a6b46458a2db47362a5fef4ce80f7006cc5f29cf87d066870c4ae00c98a9bf60511966df804747e50e521149fd60897438f21e67619895b9eee33e9884441e0d9aca02fbc1d60e0861cbb47734f0a8ca7456c43e421f1f861b6212c20ce3f54ce35eebacc006d59fb1bbac2a5240c860c4480bf9c87b3896e73dd429fe2ce7c3b18298d0682127f6eba3dcff35ec567f0ff593268250c67b381fd67b7e3495708ff74e950a8ee52d75032cc396119d2aec7c4895cc2975a007f30e2342a007f31773cc338c231c98fdb7e8272de405e2e8224519b658528ec8b055a427c60a401c5d0158236229e59c31c628a39431c6d83f588a1188a3a51360e0961b327a8c11cb8ca49452e6ca95bd34d383518a91927f8a8b920c3f65c5b615f7d2b5b770afb1fe3172afadb8473f1585654db19f7bc9f27916b721b7b88dd9a92b6c67fff58fe7de2af33ed7c97d15d9ee7fd83feec13e92bac2763e6a422bed273dd4429e7b8dbdc5302ce35b26d35df7ae2beb66be6ac4322e7d2fda740e0cc3260df77660d87bfd37ae150372f7cff6d1ff923fbbcb084e815232c486a0292cecf518a594d28c526db35efa2da35b35994c8f03b309cf9c3ec7f4f44d4ffff41989f4a5d2c9643bee2147b25d905cea309049dcb6fd4dacdab66919fd49299d42a4b2b02abffcbaaecb49ce7d865d19e90b92b5ebfad25f6fbb8f746320fba659ffb46c2f685c02a1a5acb0de7b914a55eb484f6d819ba6d59727afcb313db769dc69723a4894d2c78199e29998cfa1afc5fc16e44836fda98be9609fbad243ce9eba20d9d46120db12c76db2721cecdfe25f5a6bd9fc6b4628492c7777083de8de84ee5d57902c2307a79c73cae99e84b519b68a70c9f36f82ecc01afdd1ca8e0e979415b6a6bcb0f0ffe5df802b88ffe5aa619873cee94e7227b9dbaf96e44e6a9293482427cd9984951fa777305f59f7c5ec6f1cc39e44a597affe99421c151db55094618b85a22c5920cad78421c07e7236da84a073d038a315e0f8a370b6fb9449d89b286583beb5583cb4583f73aeb4fcb81ec7f3f572bbaea8fd8e084c40bbb6ed37edbab479dd701b50fba869f18a9d434aed2f6dde38a5086ec3bedb98d15e1e84c1863da461a2750ce8c771acfbb4c76ab7bf8f9abbfebc1e0766ed37efc6f56b4fd9ef5a47dddb7ea379f3edbae19ee68d534cd86cbb4fe3beb95fdb7cf7e6bd7113b1ec93c90c701bf3eff5fd84414a951d11d8b4edb5cdc7d669608a919456e9099113219292a0233f580f6b880e07e4033e3470420666603fd83ada6ebc42c7b5be47fcf9cf36718c534ad93dbb5b3aa4d6094e1c79e54adac7df48cfa956686d5b42bf491a8d6ea4b7f6efd6b4ed044c31e45a8bdffec37d6ea4b70d0afbc1a3fe1350d0d1af43fbbc47d33e2058f6e19ebf064e70cfe50e9afdfc956cec04278e8e3c1d10d2d961fd040d1111e9ecb07e80822211f5a258545454845d13c71b5318f01f1de13f8be3bfbb80fffec67f9ecdbb11c4b1d9b8ef1de01d08e2a8d45e08bd027c678138b810feabf1fe5a0880ff6abcbf96b610c441fafe0f7c35500567a00cf8010401c2ff6abccfa66b4fa687d0f43710878538626678c08011702ce0860dfe6a6c2840840420a0665563801a346a0830c31b800042c05f0d4d0070f735207c2063465553838a11654e1e7432a7d3e9743afde9d47d11064aad95e920acb1fda99b7f5d3a97cea573e95c3ad77f355dfd53773d8661188661ffd5c874dc9f3aecfd29a594d2ff6a643ad29f3afa308319cc6006b3ecbf1a99ecb5ff6aa00635a8410d6a32da9b4c2693c964faafc6832ecb325d0ca6b046ffa933e1af44e22a90d1115ea840072688e2468d0ebc1c20c3160a92f08e127dce3927dc3029d76758b6cd0baaa2ccf0d8dc677ac89fd93912b22c7fdb1a487bc9c4bdb8c52a7bb2dfe08453ce19bda7469258eec01a717b5514eb7f1337b9f34925397ed67d9225853e8963abc77c79e3d84c0ff9d75f3867e21c69102a256c908cc518638c31c618638c31c63844896ceb16bd9177d4475956425ed003dd1fcbfad169d1226b748f3e8bc7057a594122efc6af76a27c48a9b51e67518eeb8b8c8eb270f12275583f3f4040414142424319c67894218410461650509090d0d01011512b430821d4c910fe644844d46a151519191d1d6581d0defb10c278e38866e1e2e546d4b9117762ec80030551213b7489bec5a5884b9690cb95a383a20d97202f41ae13e43b41ce0af29f99a38fa24dfc214a645bb7e88dbcb8bafa48e6f09fa84377acff345010566727bb98c38ba20d975516efe88d6e5b7aed5fef57de0d4ac2f092eb8b3b39c73c40181ba4f9ae2205fc4745f0f25cc59a4be3bfcf9797afd58cffa87705f0df87b0f20fc067ea6510b2c419fed947657cce3eef7e5ed6bef7e0b35983dac3b8caf63f2f6f4f8a35c668e3469166d67453df4523b2730fa902f047ad08f8b33701f8bb8f00fcfd01685e617f4aad01f067ef7d1af87baf00f8f30880bf55fe009d813f6a3dfcd93b00fcdd1700fe3e041afcadb2e41200212cd409bd1000843208f85be5191467f8d30ff047ad0cfcd97bffbd14febc8bbfd53c8a33fc29bd1ee0efbe0cfedef3e6d1ca8da2cdb532e16ff57f49f8bbf6fa31cafe911529b5f6de7fee3f8fc335f98b2c2c476cfd50201b74857ec8cb217522a553ea4ca933a54e0e39745d43d7d035740d5d43d750f697392497680331c905935c30c905935c30c925c71c3388523a83e80ca23388cea0ecdf798e79b45a79deffbdd6669de3fa89945a7befbfe769d70fcd48f1b35c3b0a6bd07eda5980aea20318a0b2724481930c5b4c7e0890618b4950962e401bca8a3376208eec8d181a5281100f412600aa21c71f1872a41027cb19c658b1a6c6f3feef85b1a55242eec419f15530b0df66c4328a4fa9b5f7fe7b1e8c5f2cfa3623a2cc8a363711a3ac2872242153b56ca4f95b2271654d2936ffcd3b5513563eecc8e1c89f9e7bd77beead56d2ebe428b05dd794f2e23e4c0636319c1b399c98310ea7610d49391d1318b2028c3356a071c6ccd86f57ddb0aa6915e370ae8cfd46ebb665b556ad721cce56e76fb53d4299c9b85bad1c8ee570300e87c3a119fb2d835947392fcc3312f638f372ce0338305f50d5848d4ffb6281bc1ea16ca0777951ad76430869d0ddee5ba494735a816118a55c344ddbb616caf0b3e0388e44dac25a6b3275e9ee7e2843610dff56132bad265e5a4dbe90f962531de18466d86ac2a4d5e448ab890cd9bfb69aec08f19261864c76b6df36fa5757b38fdddc341c5f7e590e0a3f4aeec5122e3875c8fe606c6293df5de32fcbb071961cbf8d7a68e5f8d4879d1cbf7bf092c20f2ccb80353c8b8fc9a888b0dfe7fc349f8cec316219d83dfb7aac217d9ad18f5c0934ce87dda7e589bffeac8412fae5635c095c09fdcfe9a03d0c7190da88e5c4baa6c9b3937149321891eb7a2d28682b9a6264c5e668aff5e8a9fda555123c3bd78307c528fd497f7e4c22432845e6ccefd12d3c439f04cf9e29fd8beefc70898f0d65ec2916d8d378994e26938da9321c094d94316ac33feb724c5c8ff8d452cbf1b8e68cf6f421099eb1df3cdf44ac5e9a15037654e0041f1f18c23a92a573f5a76634469df62106bfebb91e91b6727cecb1d778d81ef127a62e1bc6496aa29f256072ff91a09ebc41ae07fccbe967ff75ced9e70c7ffe580929c487b006901f58f6ebfb3d05ad253dad1db6c4165c5ba95faa9cd8f8d073b0570561e5b7dcae4efbacfb51ba346c02f697ec308472fc08c4cafd978e950c4286ad1d9ee4cefe6b8dd3d16d1bd6a84fafefae3e851566dd97bd7c1919c8cddc0391b9fea78428c7bfb5650c611ba7f417f7b583b006e9b14e7bba3dd6c1524793499f91d0ffcd0c851464c6b3fb2be1faebc25ef541cbe6f4f7e478f45f18c6873858fce64800d234544eec8f526eea828d28f7b79208e57e9fad834685ddc1afe137798420714ef77ba21ea8b46df755b9642403000000f315000028100a86432281481a4539320d3f14000e819e446e5019cea4248741c818638c4104180280101180191919190e008243b78bc04bf04bc79f73558e85ce0d1d8a73aeb65c073b54de2eea5b26dd7adde5fdf77edee69fe820a0aec5e24a1724a0e8a21cf97395392173d045c58fd589a395f2d180cb711dab4ba7e0984f7a9e5172798777d00174b2f2be25d8996d022121b69614248048005d97da3e6c51d31ef1e0c6936abbd9f1bb9f2e390410336c5c24454eb1899a0514bf477ea385f174e69264e7e472b44bbac99b1d63696ac2542b4675dab29a51ffc428b0c308fa0905c944ec26f5e03a41011487596ba94c2045714010c141ff9ee9011ff545e9ac66a42ac53ea9bc561a52867c24703c0f0302b45e1b75cd2365460c3056faa8ce6bac0ef6fe7e83bd3cba3437d4a5728ce823c6778bd81ad883b9e7d502f1545f54e01ca8b4da96a596922cfd06c2f2fbc50759babf96f31f0748336a4416e536754805d35c7d4a41b88d940fc0a5d1ec6e3abc07534dae2992b84dcffdc154213ca56da1464a0d3a43a3f71fd617d2608a5ab1d37bb87326357c527cea7290006cf704a85c1523efd3bd4df96fc809a639ac587da51ae9ed20c2862c0ea096ffb980309f7d348cc9d3bcbabca4e5175a8a0aedc32426999401976251faf6250dd6dfcb46a97aa6727f9adf3d70acde8be52ff5ab2abd0b956089bd37abf7b1c5aba32311ef63f1deecc9d5c7640bf55d44bf9be57753964e525a0b354eb0af7188875083772dabdf65f5cb0a96e28a5cf48bf69de63e3f3713628e203dcdc61e0cdf3980ee26991cbc6a56a59ba01f057fc140f543971b386ff738fb0350367e399cfaf0e54b56bcf2340062384e3d0251eabf2612459dde672485ad59e65ea2505f1322c495b522e208db2da70a8b755697d4008ad5205415e00135bc6dfaff34a5ac0ed989201063ec8a82c93647cf850e5299502251bbcdd92fa6a92902bd3bc697641e96df5b850c967e164290d0cbc7987499920c99b3d1617aa6c2f0e11a5a84e204305b17c0589e14f2c124f10c2be787e917499c413aa9967bf1b956fd889e3b9acbd54a3191e02e2dde8366e7dda0393f79850d8f1b089e83bee406f50e990e5e903d06a5d2d9f6ed735d56dd1fb246afcc92fdeded75b41b1eb2412bae0ec5582a2f2f471c518906a9a0313f3f3b4339b61f11a85e593bc39326a5486f78a92e51706085b79244aab9f307b990fe600b1aab02a7f4011de927a7e1de68c40c50ba3123bfdbdedc0b5fae555e49397f8b254f33ce9fb256e914384390eda3aedfe6645c089c62c37cb21b9570c767cb21109a4f98559df54e6e1dcf3819a32c73020a83d6e783470f447e07a1ed9f612f87556dfe59106ea0a8c8d7eaeb4b2b3d3f4490d3b1802d25263b8734334b7c40860a114adc2a87d7f898daa3503c464b4c31ba28979c7ffc1f55d20935b4c089ec0ca511455c44108368a4a82719454e275bc92bb22f4cbcc968e432f9485691b985828aa5964034187d45f8bc661b41e7f976bd7b93a67408f6c532af33b0863279c153999c27f0570ce2df16e5ac812ac9c62f8c406c18705975c53a7d499d079854fa315ed2ab94449be6b3709446527c032bcd9c5c3e4db13372daeadf4ad64886c329fd61f683264a9d3055b6ca4af284bb248358653d207303d5bc02e43a796b21fc0ddde8f6ab70354194cbf1a84ffb327972f5edc00112c8b04b10ee7cbe838f0c10c77ca25679867349f8c5bd4828f2d0b4618bbe36cf6b6e6557515e14dc48920748a972310b075388ee377371046cd749a181faf28830fa6a9706c0ed3ebad4aa7113e780a28296f722f28976345397aafa983a83f56b98a021d1fdd3c7d1606b44356f9a773180917d6a9cca26b06380aa25479e38224f4d010508f642b34a9b00fbba1b5a2f3a33ded94909ea1f82d64bf36d8b46eb9518dc26d37a7adef621b53efbaa3d4e8eb61968de9099d1a2dbad614b68bc6ebea55937bbfbf16620bdf1dea26f227bfc017272706061bb7769c687c71a33ba8a2ebe6705f7ec486063f0dca4b78462cfcdf8aee7f2a420bfd9bccf67e7fe57962c32ebe762501f865118f09851b6181cdcd3ce2cbf820c69673a920af3ab2cc53cdf79f72b5097ae85eaa2372a0d0bdd89e1b0360e13d95144d716e5a9812aeb2a8cda9b97c1803087e6e505a6276ba528ea4cb002dde57b865edca26da65bbda2c987b5b0895702315f2f3c1c7d47f4ae7d30ea08624e8dbb5131006861c9b380e2e458d54d81fa1a3aab2e1d70add25f44386e5380af0ad06313891f6fe53aa8f5aa3034c13f11916b4b0ba323f6680b7e2f076a1334c15f24a3daf25077a783086c1d3ce6f1041811b8c74a097d1e68800b432e4f8e99ba197cc78ec527b92ef8b2d3d61b2e228e8495caef28386f6a92408a1b08271832c8b64e12b6048ea88d9294fdaca6d8c6548ebd4e3062af4a1a1787176dad37d8c4d5ac72dbcbd0e9a332852461d04995957f8b7f024995e596547917234b89efa104e0dde56fa9c3dfee0fe66fd9a1da1d2efbb75ceffe2d95ec1cf2c6dede376080344f3514fe2d753630f4d84e5e9ca4b70e80cbe858c3bcbbb50f502539dba19fc7a11b152df8677b685f45ab8fcbfe96ef2e88fdc4b94d2965a83e54a512e234ee3494a91aefa839ec881b2f45ba002e036a781bc0d05f75958be5375db6be3d8cb2bf3ed9fa6bbe6188125885935adb1d089b9a0d01450d2e20d9e0208b4af14b9223ba0340b22d5d8e72efdc60e93b97d32c467df6641a902652b992da134051cd7f2ce9cd9c26d8ca91b41af6db7b1ee560bd5a28fb88fcad31aeb588cbc61b88c0a428fb098fee51e3096eb372cc412300e831bfda9677081cc6ea3126782ee564640dbb3c782ea364d01abefd7b9828ed79cf80cf261cdab764c81900947f42fc2338fcd35d44d45f5e5b9493497e1a58e7da3483b3b7edcaa4d8b033497061752371859543fa042b8164db8a1852229ecb88bd10f08874c7d18942f6e126cf536d2c273ada7399b5cc751b7cc9645ae29b41c35fa75316156dadf35cee05f5619ce7b22c25cfd44806b9102bb7dbc3fc9484319ab814655714f0eec3b47cf43a614c782e5f63ef83631135fb2be0d5076a1e3d5c7c713a900f40262e3f7b2f23e91cf5eadaa3930a25332e9ca6eb161c604d3a03071f111307c55a53d1fff7c004691a593c44e5245ef5220547f0ac46dcebe0338749677d011cd70d40b64197285ec7d65715a9227525b64ef70fdf78e053d35b79491e29045141330652e615d38ecfc940c8a4e01113652a857c750f8eec1f3283372772bb9f04292120020b4279ace9b3f81e7ebae0d7b7e0e5cdc0648aa2bb231605fff4d40522ef3b69570880fa0ad965f706880e9345043ce65c081e7b20e22d037d2d0b6ee20008ed374a16c04ddd220a703ece324bafa218ded5970fd80cb449689a50f48036dcff122e428cb3ba31e179bd95c921124c87ae53d410860d32904b9ab01110d27ed03389cc1485284ec5549fcd7973bc691d6e664c09033b0bdc2c9d5485f7cacaf22ea225f2ba1add85ebd2e017b7de68dd7b4fe7801f9bccd44fbbd790a8449cf2e98ae317bfaa6ad5f3fe3da4ad83cb5674e1cf817e7d8637fe12d5804d160996e0f64ab3165d142d8159ff3463cdc74cebec82b728fef32b43ac1dfc4598de76fd61d60f9c1f91fa11f03dcb4b62d29cc4a6a2a4121ff0b5be2e366d9ebd38266316e26599dcad32dd02d3545203c1554d5ee24a70a7c033c4a0c5c7dd18e057c0e134173126d0e0b0e4e615de115c5e727987d5d5926246e3124da6918c8426668b6e776ed467297fa9416432e83f19e619ed19bd1bbcf3ef2c94288a906efb9c114639cb63567186cee75b93d2f5832de190ce8d6491f955c7cd9b94957ca9ba887044e21a5f51b7d7de25386b5ddaec8690398dd26007a173c7c51a6cfae3c83494ed149de88a23e894200757d5b383351073cb169f00ab1380eb898bb2fe0234845e604b4ebaaa087c238106f232de44b9f03007493ce488278f39cdf0175c21aa678ae1bab604d261b8c9eb7fbf22a3f53d9bdedc244b5ed0de190a0ea43263c35dc37982fcc422910a09970e0cbe97eb186404de33e10234bf0e4ee2c2103fbbe0aeac39ca3ae4780f038c1ccaf8380240031b6ef60b9fdc47a2bf2969a9b1fa3f30c240280fb7f4c2599992f6979f962f60dfe56ebf3a9bf77a44bfaf7b207941fbe836b29e7303a4ca568e19ad625133cb2bff7d1ddda350949c5a90cad61871ccb5a94163c6e4af8304ea7ebd34a259efe64ca36d5ce3357a23df86a38b518be7805e491bb4cf19f78cd42a93427e9f7b4a71522d0695d742f7325862f390df99f0db03073173a9c85d2447f10414caff4d716917dc1d13cba0f9664362bf2e5cb90c6f4ad0dc56fb650233e983d619f6b1c2d4cabe4d99d849b44b262a0b38009dcd1e7748adec6f022a730fd6f03bb39cb9634358a5ecda14dc6fa952cef4578d0472a65fda81cae560f32a6111b16c32ab2664d25d2a49a2d4c105cdab71669cc11a6c538f9041b075469267fbece632c074d25e50330555a5f9cd5e89f3f6c579903d158313eafe028da37a45a64c96dfd69d0538a67b38e9a0e4eab4494ba1f1e29dba8946fc399d4e4e9928dc0a220eba2800b6a669d720298a5ae0238d2f2686c127a0ca8312a060b54580ec7357c25fb914fb777f975a00ea90d2d818cd41a4c558b4dd99a891a90bd46c029aa28343f1324b25b8daa1a63186e8abcee49cc99d043592f6f0553582ce620067552d80e7cc4e5b3400c7fde1cb2c712184e3f3134b86bc4fc0e2c95775af748217dfe73d0628ed586b181474cee24ea044e2f3431ade23a64b7ea0372316a56e6236847d973f0c5d3a23ce48da9a774cdf490fa02757126fe406dda5ec058a8f93992d2ff1f61f62c5d492af763e620784139bdc100041db40953a5be1216fe84ffd0151d1d25c5daf330f36192d4ec6826ff482954b5a8b2af65f032cfca3dc497719a75b7aedc6917e289cee7afb521bc3363be1974c701d3686cebfdb28254451a5159afd3d707650cf99ab47f573c61000929642dc18daf57f2d4ef8e0ab3a4a9b67d593435cc684aa577d960ef49490a0ec91034a1432b203a602990c0a6b6a20a4e107fe20c0649e245bd37e26867d0f0cbcf26da2ab197287c09ab5066ac49b5d82560dbfd604980f118d9e3f1e7fea8520f3d32db79daa1ade4efeba2365129777946ef70b51818fdd40073c44dca2efe8f0178b466ded125314dc985a3da3f3c5cf995585170e2f7c3161af4a063ced6636d5ac6fdfd781cf7c21000f9dbc24d4853c4d3bb3a6bb67916bdb1441b8a0dfc390db8ca4151c4e54203d77e58b7e5af490cae5fd16e76e28070f511ced4566b2f4edc08241d5ced438856174cda6029a12659ddabb5dacca5f93f92fbd125384def55f2120aca7df2731d2d596ca92a41f7a12dd265e8fe3230b3f1b4aabb2f1f1ab5f194e0d82c7c5dd1ed521f212650aa5c65f9da815e903711fa7145dd1b0f54a63121f3e9d78936eeb174b1838e6ba52b7b86a345e9abf67817ef303d5e030e35b2365a4e9a016a2f079309236e565f94e39209d6c2fb03c7d4ac9d7ef551bf8d9b1c4fa04b8aae05d2f8807aec18fc7138e1aa4c6446a570dbc9509ed66112e72d5ce29eb80b75bddfa3d7527ccf284453284cdf5fe640a36a5adbb5e366fa367198ac936e1ad4013d04c739bf4924c9e060397630d28439d92a000b522bfd14eeeda7bb26266f1bd098ee6b540cb42e561c38cf862b0b34737623147baa27b38d6c18f48d7d11b1aa31df2fdfa19e3bcfca48601b5ed9cfed6a3adb9883e68ab7816bb34f7bed58f119372786019d1834740ff4c2b1f73a8399c6ab01fcc02cd5a74a1275b51baffc9d132a5ea53bb94406613af357999fbb702a284d1b6f622101b76ccac0b016872811bc1432ef1d1b7269748702f2e1fbd5314bd659be47b2ee9d7595b85184322447218bc50f3e5bafb22c98a10a2083ad223135dce9e61c85e28ea9e0a2731f9b7892edb80405a84a8362793ee0714ba69a52431754bf05a80f9628f220941764fc33afa1528d4e66981da36c3d22739b98b596cfae32cc8153ef0784f29b03ec4d2a0fb921e7c44852c5c0c044152ef5cf1f8b141bab659f97ba997c136429a623ca33613befdf6dcf556a7928552e14335532b92fbe0009d891279f1e814692acd92457aaf2942d519566706c1624ca7b8aef8ac106fe1c56856df7dfe5ee7d2853c579b6c36e27e10811cd15960d0c06aceb0931ee0d17494dd19e3140daef98f692f7e803cf5268d7bbc052bebeec9cae4c5b8eb23b03acb889634647e89a18797f16375dbdfe5a863637e6c300a64c1583e0d58749585b3b6c94ada48649b4c14250e08e82a187d1c4a64c46c264beb00f8fc1b9a7419b50801abdb14f10d893e7cfe641155e40ac1917188eb349b37b74829f2658105df2606ea39d888468fa60fc6f26e34f8b2afb28dac02925ee939d226be345d4bbbd28dab92c8628a0e7c0fbd45201d22a8e9cbeac60404175a27c45e7dbcc667eb519501b8e0dbf83da2ac3485d5e5a7bfe2a329c9d28bb904b5e649694b13a4cddd87385a979c2c28664ec2079e6809bf86e45c4bcbd6fe5ce1104920f740a04a5b5ae0090808c785afe87277c1ec85f718bb058fdb39d89209d23dbb885f5dcfa3e4353449874e5b8fc5fe7b31445389aece5b8a02bc8a1f5f8de09485c590515a9fbad81c18bfdae933510bb3596edeb65a4d4ba8d2cd2f3ba407e0aee84afd32029f30593bc1224e9237c04766c5f06e1fb63f7c8bcd76a75f2f313205ac58ddc27f33f3d9aeaccf2362555bbaaf918af1233682ef6513b224084a83108944289b505d87cbab9508b3ff97f7014338bf905590bf1f58ce4d3c7562e27d15d5b4698ee5bd0caf5687314fabd2abf282eff6c045af4f96edfd2d3c8b80116175694ca36ad59f4a4aa00914ecd9313056c8f074be03bb00afd72dd1cb457f1f396e5bf78feadbeea9e01c9f80a79146f88ad4debc05b04cff63d8ad80481f594195c255be87bc0647a9ef1b1297f287ac4e93aa7cd852c84ce04cf265bf06a132f8d38f7177a98ccf9133a51c01e0cf76b4241600f3782e2d86fac3f19de293f484ce789543c041e888094006fe118b4aa9528b06ff172e23aafc5345b2f66d18eb8d3e792e8f7755068636d568f2769ccd8cb0011e425345c92897858632670a8dc3f2372742880e21d2ab511ceef51045cb375d065a3844d45ca19362fd58de1df8bf875c18729c3488804a160d0cbb516229d0b73b20e2c20384f3a5aeab218db8083e4fb5f6ed8d9128103ec52b3a566be5b36772a74f927f2644aa63bc00059787ddbae9a6446855af44305791b119ab823bb11126d30fd3df74e67f621b334a9a4d3278f46ea6e6fa7e3627a58d92e8330f839672a9416ba0e6703c94b23862606746b35dbd389ff0373060b0f34285568b4223cb09a91fd8e750c6e60f5ced859920612647b98378261ea42f0b0293c749a32886cb18f9c7c625511bc23188586dbc9230027fb95089c9699b3aaf3b11b2ace297e4f4d1fa61a475f76b1b2011d9c5dcf445c90293d1264e5af843ef6bcc023bd90da189976b4362d5325ebe9e75b61a072756c7d67c5b63f1c58cfe340167b4530a4d9a49b67429833902723e38a020a5e79cc0ba281b474b360c6200551805817ca13278cb5b5db2fd7b2369d52b722240b1c758cd3c584fcd92552a1a21805056b65f8548cdc546e9235d155ec1466134046180a69a1181c26e4b978b0c5c83623f9597de9279a543c79db847ad581d0ef28ef940663a52f9dadc11480a8154f2ff452274eaee1629e823848f82525f3e0c4e435622d04d8217777146d8f2a078aef275444a351f140bce6bb8048b1bf0b6c0d5d8103c0765afb41227061697cf75cf39f207e9348ae66b0b29d865474b6e1a70ab036e936940c3ef336f1de2eebab29ecc5e16de8f48ec2e78b3619e91a33200c67bd704af9a6664c9e804e6033998180787ddaaff2bf422ceca5858879248fb4474ff7003687099553b989581e822e806e83962d556172834507f4eda08ca7162d1a1401bc2d6c2b0063c432816c01b23a837f0629b7731e02e56bea20b55a804ee65d5c1e81eddc5402cd7f69d3742b5047b562f47bf345fa6ce6b1b71591076910bfb5abd8be270c23a52d0346744e44083effd3b1841da849822c59d877c8712c09c6114c93dc6eba764cf26c7dd76d315024487714d43b836dfa8ce1cac857a8e57988679d0b4a7f3e6bc27d7bbaa7b57f58193854ecc65b4a2fbb22824bca09086bf4b94f42695fa2a158a1a3976cab612f9712221dceaf9c17cfbc312f35f9123560bccdf9a970f4674a0328aaf312879ffb4348515637062252c52bccff086761a55cbe6a1b1ab27209df865013451d6edf9ab8be5e640a8d12464b1c72eab1ef8082beef8658b09ccef11b7921b64dd9fbf6ef143be5537d88655e238818a9b1a97f28d74251c821716097460ec33f2a3d08c41198314d12e977905ab62bd96707d6f3af04542c8b56bf76eb4afe2f9d4923f0fa160888c5554dedef004f5dff7cf9af691fd3be5198c049ad4d15a1866d4b0af5c57a9e63c287a4753974bc83c7db1abcd3a08950a1a462c5c9a0ad9951d2816e7d0314c9b4a293a7b743e14f9035c379fdc2b8d7b9e640a762cf8bc12a2969663cbf3bf3fa4fb90ab632f26bffc27b910f5e64ae0a512f4127e995608dfc929becc2b077a32210a77422f195b91bbdf46bd726b07925bf770c6ee65931bbc8f4d5b59678e1c5e75d4045ff91d83e640c596a936a055c094f1fef745dfd7e1527f38697a6dc45137d6aef19d2f6fd03c9f190143a2911a882dddd88eb4f4627e8f02e438386ec4122cf07836970f09d58fe4012be673634d64de60550883668d879704c250afc69278e6c6a004b2529b1bdbd25a424ea4a38c6577fb03c113cc8db53d3f80d06285ba8fff01e0d062a14003dcfd2404c76acffe47a91518823e3c3754e0cf6cb2c815bf4f84ebf8c68fcf25727189b1e6b008805c21b83809ba7a450fd3ac7ca5371283d8fea51f778b69e91f15c9b144ce02b9f0971d9a5b4fd67970e957e98c52effa257a0caa349c862bcbb99583b04e49e7c14f8aa974afc4064f2eab017869260bcefed0d02108699a8e33e417a6519b878e6c0aff9d67df5c0b649fdf2127c33ba20616c001382cc675c305722339f3434a54acb0630c55408303c675341dce3a60bcff0b75f9831305c055ab8aa3bc8f147ca02589385558ce6a98ba00e3e357545db7d2ce3992327daa224ed0ee15c42b22eef174d49a0ae2c3f600155a0890502d4339a74a5822a4949e9d52c21851934c34f97bbece4558e8c4c74acc05a5216d2bf765bf4e55c46df6eb5d29b8495a81bbaba5142a457d90dbd848bb5eecde5532a62bb347aab89e24e3d855a6df5b341543f120f8c69c5fbc145f1d1ada0a8963742d41b149e92934bcbb89e2555d850e3a21b02a629c8e51e5b750d9307bc4c723dd065454e50c9bdccf8c75dae6e186538ae0d8975538ba2efe839d631f97a5324e57a27af50ea2208cd657f6c5ba50223d3d69a58a51a0dc5c6330fd817630bd198fe7478f85468d955f51a39658c06b778e164a38a914adb7babb5f638f9e31b69c3701735cbd357a70f9e47ef390494a461c04184e69c6057abb955bbabc3751be36de8b40f22f58877aea326e760eefce6d393243c9c82d67b910e361e79c6da225d255b897fdf619746a214d338fa18a0e53b1746be496aeae114d78b3e2fd4d3b23b874286d2068025fbf69588e991b8a91acd1d458bbfafc5bdcf2d657ecb3d9d42bcf9f0011e1f8d7a418e70333fbb6359ec247d6e196aef6d61b6512ca216ec52733e1344296f4882e274f4339dc7c29d60d8310683068b76bb7387a378c4d2420ed5deb23ad1f8167d94e5643a4e60b2cd8ba9b3997c052046fdf63b008a2c4f2c4faef551acf0c4e06cb510cb146237a65d938316f079794e3254cead3eb95f53974e5315f289ed90fef3033ac66c6db7e20908f19627f97c8b0fb09c6aeacf1ea1fddb00089b3d994135713ed13434dbc64202a490081d15ddabf64e9f8bf38f3bb0bcc0d80c2021690f57505f06ed90ef0cd8d5a83d3336d1534b2cbc5d5c51e65c973a747773277e739db9eefdd0923cf14542915d3aead82542dc06e93d8df88e93980734bad978ec9b80855807caaa928882a09c2f033f235a3c53ffe03be966ef3d89d676f376742e68f8df8f18db046438b874dcd319742c0b2e7c50a735f5647521807b691843b03f45a864a0a4434cb0662b8ba8a7ae0ac87de59d17ab9806f3cca42168454bc6af4584c3c3c76abddf0e5d356d5a1b124e27ed1084d158aa7b2c5c69b9d97c15fa0eea7b3bd89eb0953aa090bb66d819d95be19b2d4b5bcb0fb1f3944b8f130d609dbdc5e81f8be095665bf4af1fd7b51e2b84e5671843ee582403b588627311b997499375750212cc1f12adf78946aa7229f849286b1dc020057be002842ed918781d73d57347b34e5762f792676774a6c2112ad6ded6f189314b51549952327df87ee08f4704d207c85f20145be076e599c16eb34b78ae56182a6d1703e987c7e0cdd56819ea62377e740b884bc7becc1aa2c4dc2711ec19feaab98cdf7c575df95e5bbfc49d653a1d6d02cc7e25185190600620a43aa4488fc4e6aa5d7310385b879d6234936806feef9de094a040cbaf74e6b673851661950aef462d57fd095eeffb56ad99ee0e8a644b826840f8a9f56da08867356eef9741269d562e2c5edfcd1bc0a26afa2e0531199f6b46fe868812bc349d6a3854fa237c361d89117f937f9cd27ec78434ef6c930db8ab81e51486402221f4529cea234ff803fe6333e3d3b77e543000a0be3a2601faaf758c2342302079a527e29a999a92e59547e1d0574994ca4ee81e6da4401b7b3d0c381aaf6487d694618f19e52ced5f81dc6f059f1442b81b3a0d27227237a411beace82479662bfcf3685d701a3129b179db3b0ec9f89ac08ab7ca89185cbc5bc1487f65ce7c55f19208ac7d34f72ebb58710d20906de980a1e57319e7cb2b8dc2aa8ff89e50e3a7c433ac9911f4a6f698525d1676009cede0beddacd300633bda1d39ab7a71f413c59deb843d7f62c81d17a2670ce53a6005687913ce11da81e958eddeb8de6a8932506d151b26c5be449f06dac4a6607da3764fd1b747b0c45b3df653ed0341475ae6e6fe81ed4ed9111d9b60d936eccbc1bf556ef76750df458d63bbfc648ddc637c626980f6c368043d17ea1ae46bba1bf764b1d7b7c33cfc42534127b8926b45a828642291b9189620a1ba9682b3a43d9ec46eb86182d24e17f47da7325189f684427a8676a19c5b79e153544019461631519701b7e0bb405df7b17e1b9ebfe241121d155132444e2cc9c561a3acc72f924e7176bbbab8d34ed48b29eac15a207eba82b2074c262688beac34840eab4c6af0524bbaf059b203daaa16f6f95794d324ced212938ed035afff8f1e9ef1c54ea2a7aa74e0bb956b59929a9e824a8f281bdd00ce183db7cd72713dc05aa67801ccb18584fbcfbb69676c0b1c03b9124a188d4ef36dd8e5c8054017add09917a0eade2abe022585fc72e664c9fc084b1d6d5c1ec45d0187f4c4ec4537e171d1537444a731d62cabe1c64466f5da5f164503c584f396e6251caf20501581e92a2b57f30f275d753ee9a0d3b0bd549545cbec10d46be63fb8f3a408583bd10b53db21273353557e27c58b145e010e5d4c9e7dc82cb2b12a2ae11e5b7f0ebfb91ba06acb9856243108c244b2f2f1a81b6af961f96de0c0dca678a729348f13b12d159098d3701ddefc73166bdc3eec6170e62e3d2989d8365a3396367d30626880d642666a016bc7f90f278d7588f303608aa2a58543e9c68c4fa91ea9f173306cf0e14c813b0d98db3a0b14fc531753df9e709b3465ed8c8d6930e76241d46fddcc2861d75c5bc6ec07f21f75def3502faf30e261d2fe6f092c5de6f0ec983a5074b01fd2cccf1dd450a19ab50c92a43b5657b72808086b79585a3aea07cc341c88b17cabdfa47f547c4328c941d578efb661f8c65ce6eb4f01b9be278182c62e5765ea0887bc448ced3896536511b1be4bfcc60e578e80737ea2e0a2f8b83148bb98881bdc9a3c6da904363f1e06834c92f4e6c084ae392a5eb0aa78ed7568360d4b137d1e52e72f76b23e161f7013c1d683ed7c60993f2ea403f0b220f593f0712361203aba4745f0faf960882039bdf9a1d82fb2af041bc4ca14fccbcc64fe867d3f2d832c4a3801cd182ece7145b203c602a09e4579353d8a84bc22a630ec402dbdcfe086320cbe3791ae86fafd4bedf53d148cfd7149c208c57937e8b26ce8db3ac4117bd4a94f2cd1f52561eb15ed655cac198090c31ac19c70bd12290a5367ea1729bb277498043016e6701417030f6765282ef292b784b9fc5f1de3bd0061d3484427fce52c9ebebbff1798bf1c5413474fc1b242fbb92964d7d49dc95a054f34925a9d319ae03ec4f7d39b6db8d20b8d74dee8ed956bf688b6ea528dba377fe7cd2663106e4fc2313e27579f41e975b76974799a1d2c4d48c0f9da34e5958d86e68797bfa5cf2c9deee1dfa03f483ec6f0b3ba340740e500078e1e5aadd53d48aeda5ae0698135a8c100c194f02a980a53804d6467a9e24194369e84636a86c16729adbd5754de134540dcb991b6905cc65f538de69b51214b75d71c2378c00e430909018914cc44fb79a0c5565a49ed375688664c06a570a24c907f479084be888cfa625d13b849c86ac6b1547f0af0ace353f28291956be40b0c0debb3837a8b151546ef49134a20d4e4f3d48970ac768305b8741b92c9b3e94907cbb1ecf63336174cccd5a26dd78808e32f7b015a02cfad3bc9ebcfa849f566788396c6ff7ca83cbff7532af8b6263b757cec449348939da24a5a955f4a2b9816f76b320f5bf0b46a71519475c7f17a68e71031fe3fa805edb3f3794aa279938ab34e29311bdca316e3aa9c705d6a1b4bdbed9fa6b922aa12ddf6db4b9756f055521c01c42977894cc6002ca84ca7b20a5f5562fb2d97a889e7b30154e2c2526ea330baffd87d69501269fad58da2fc3b453e373beb9b8cfa94e82278f38c303abe9ce6785e271acc73d1138895604dcfc6a2f9686b1854352856097a5ddfaba77838c8bdf35a81a6e6c7359ca870c7bd171d657f7e81d35381c8d3da73589b48bc6a8f24f0512470e51970fdafaf075a8a3743f08940e84562f8d24983c504a6d1bb6ae27c5ff3a0dde5666c26c05651308038dea4c06f4c3956ddc74a5c455a402c1a2d5973fab19c008f7975792bc85e7baf4fd2b5310b1a02367d84136f7af1accb94fcce6bbf7e761beb8341e64c1ac8e31faa782b61b285282a7cda76663cd72928c5e16785ae52e57ef80ea05e618df81659eabc3c86107829471b08811d90b00d172f35842f42f8588924d9f62f4597c641fefd53231516ede30130c1f6149d62f879bb549336201bd93d36dd5327f9d04f9802a4862919711bdbeedf475034ce0e06d1101300f8170669edbbd9d7c17ffa001dd1f3c8768777321eef3447be7e5622710d888999e8035f6f499d1bbf8fb1e40bb7458792e1b6981504711b65025502a23a67c62e8be213efebcfa3ca29943f771f17f8c7dd6b6ae6a2f2a0a4e86ebece35f62fb45e8907a448110c1ae53d9626cda2268aa2b51e8322177e18d6b4f9ea6dc6eb9b2261c94b6f9cc7a85a04d4e78bc7b84d764e093bc843315b9b945fa0db81d1447dd3db50f01294138209c445eae4c6a0b81ab24a21a3a914436c4048909d026d462f71cd04a92adc9d74ec42670d60a69bbc8129db56d9314271fc8cffe09e4488d66d11b1e7b9a579a4d89725dd88ce375931096a05a0d64501c8b16d176055b6293482413de0727a571550bd48489b76f6eb9b59398376656f2c81e9a439a0c522f8d87d3f5c6a092f565004a18fc6d6d29b49e8d305d5ffca0424511e16f85abb6dc1be9fb21c34aef5013a668eba15d56dd5d0b3353dfb34ddf3e4b0342aac33bb51aa0d920a2ee2a22f2716edc714d493ebd0b04b80e952005518a4ae662d5ae06cc53390ba16eed3f5596dcfc66fc329934561b6644600e87ed442a420ff12a4f42f3b17767fe61d7f8ae202c4431a2a7442c2ac2c70cbbcd5dde8914d274007aae806aaefe21f1d6da0e74f3dbfcd08ef737ff32469f4c13d575d02e928a9a843b95282a7c459f35bfc54a7c9449431a49936f575f55fc60b0ad8d16095afc2561aa0ddec0141d8ded5602c3b0d692b57ccd152d50e5c9a22ee2cd562801ed45c7897abddde1024e36dfcf8dbc24b189689da770a2949e9dbb07f76e174ac719aba6c2be32bc7f7a81c82fa592dd278fc2458f261cf618de1fc5d19b5aee43d1bf3f7d4c0bbd29e405ee1805c6ed6646f30f98e19da319fc0986b56f2fe9916c9055a6fb8328ac20147a37b8088c1a3aabb53e507f74914020ff7c6ac13d6a01cadc27959c344ef4cf9bc5e7617ad34722c013c9a1796180a0e6184b253e08969712e36e5d08249fc28e7bd7df48184fa8f94cc3e30be08f283daf0b09835340f15540f622d453f5858e428949183d129765170868ff534732244cfbd2aebe95669a2c1e1e5b28c7e06e0bc1c5a64fee8a412a76ebb1cf7cceea917be3105bfeb4876a72d679ad9de826c3de8fb584ab0c0db9b43b152eb9810bb45810dd30d7db1214a40a6dc5069371e103320f256603319d7aa290c4168b67982b47ea0dbaf99b45bcfcb722e37501af24f1cc470a495a6d34c9cd5f23c976880cdea73c818c0d9a373a2b076714643b5e51a86afec8eb04a427bae06996f7273f62b226b5c9b74360aa47049fea38d9fdc0ca6d85a61b9e0be433d4535bb2f4914cb2a83e3e4180966e422258fee5e43cc263b57aad16f13ef46287be140940cc4101570cd4cdecd9214202902c1a3fce7a8952cf0b12eee531e05a4ec3605e55f64696076c22232de3d013c25f6e77b670943178769376d1ed1612fff1cadd8f748d7a2a76c9640ed0c7e25ecddba77d54a0f8732492cae37e0988216b077655246ac25ee432f5672800c3e561a61bfdc4563f257250d5c9980a87ddb4e0b7e0499187790aed7eacfafc9b4f833c6ff89f8b456fcde5a2e8de664b58369132d95120210c14253918484ca4b3fe3fd63461b78e9f5251dd2e5976598e3be1f40824426a46a472ce8883e6c742793c068b4bbbf3e39502539104fc4d5b77f7eb2db70219140f88a86edc379f5d16666d098848e4470154c0827fcf821afb2f98ce28cd4c606cd8af4313b147c3a1a333f053847aa4e1f4b6fb7532924a4c23f2ae0292310b0224def42ca9b399304783a167856399c980d08ef602c0fbaaec8b79bf37623c3fb339957811cf0f03ddb1f0f9cd4c170357d93f6b1708a5440baa0219c09d9b4b246b9cb0f704181ba6c14b1310b9b9b4fc2ac893a4063ec5ac952b49465830545e3dcc407303823b6457b6451e8294528699428e32a6e051b99d089fc4b59b170b61b80fe4e72a56191d71e3b626e5490be819724b8225aea4d0f360f97173b73ac565e1841e727c9fdb24693649ea1ae96abdd9baa24af0af336f3df8a5eb6608aae84fd2a4720b511a0ff83b320cada94e4af528f6b9cd83fa859c89f6b04fc21bc2d14c2ca3834eec3b5e4db1811c25bf787a4d7960e88933d4cc0e21ca46a4c7173ef4a43d733ff880438fffd2a351ec57339f2fad0c14cd4b1b807d3409826068ca7b0d0ab7bc8591141d90452827023597125bcb971d557f1fcdee3a51df00241a0283d7268edcd8ad00650264e7e0a9806d5bd00cee071d295c7312be1e9b8700a09421b10101c6cd1d4357bd227643d622402304a8e52032a020b0e82d0c33ba4e36985616b156efeb910b07d4941c1a66d07951b0fa4077aff0cd92604188c38c4c59277fcf297e8030f67c84b9cd4d518719957c843f3d3ca670e2650584e128ce73f0ecb03b5e60aa68131abadda2e54c4b3f24ba9acb592993469049205a0d581f2ba51926f1c9fff99892d592b3ffec4cc6903d71e96ded455fa28037123998810f53871e373f2d0657b0367827c5048c886436e5322bd3f6051d6005dbf6e14a3d246684dd15ae644a56a269fc282c673b98106865cbae473755e26a4d08e4502d1a3826e566621574cdb9275677a4f42c0e32429c03d54a1596654b6cbe9d41e5c393fc666bed860351ded703a9bc12426188cb1679bc5297b1dc8aab21318e4438875b844a1e049475bf46515bad513407a9472fe5371dac5c5fb23b2391a626c359cffa95462576baf4c714ab96ef6bfb80c92acdc0f7b003de30379c1534aefe4e0b909b5e3dd0d1f427de1b5b0aed6795c8a0a6dc073b21f1e54c54f850ffd303d2c56753884c92a806ae686dd5b0886de5aa3aa8ad69d92279b6d61607ca19935948553b61035d18709b344f694543e817e2f380252e377200ba30d03e0146a32be96551a9c48f68ec3722cbfdd5a176001477a7a5139517969e813f0b03ffc4ae07f7099783d490f469e352c6d8a2cd8669375e2cd09dc138706b8546eaee9440b5ab50154a56cc32cb3f81d6c5752387449a2db355cf5707e117c30205f185df2dd97d600d7283ac6dc6d14a722461251aa74a939252e0aedb45aefb0f8ac0b7ed6ef20fc05edc3d8b31a7e6395e5db95817d463d0fb4b2ba9280a1c25af4397355fa19ec7297950147d8baf076d7d5d05490a98de564486a7a568d80a8db3e8a3c14f3e6467e5359109e1b15e9dea9577327afe68ba4abc26d8cb95de513ef132c75112cc8572410075ca1bd4cd5e0aa67939ba0d01ee47a3684e29f29be3fb3128e1e66f4c999bfc1f55644dc327616eb204c8ddd2e1e270144d35f80010060c0f6a83778582216bad8477309874a9327709b347bd9cf73868e5e6c1fcc8ac0c752616ac5e35f5b253b4804098fcc14c1766015397433d0743be4e6d9115e4d52c7d3632a00ef5fc4f9bf6fc81e2f3891f0fcb25476a657f7e4dcf2146c4a0177607f457b55f0ea06c1b7230a1faf456b18bc03e0b7d9ccb1bb156a169bcb9a2139b22ce65bcd7c06b2e4e5dd137513288020c8912e941aee9eb9c0a80240677e45a2a85379efc5963e884a916e02a8530c3d6e0fe25f0f2b460991dce2a7f76e081ea5d57a52124bd49e1574f382cc2a09d6751144a2a44799c27c64ab599308dde2feeac809d11a57b865955c96ecf1328ba47234281066395e691088840c2ff87c716e9cc69cb4584c9a4f687e9f459f85f05f91434515f980aec83b4e0d1a55625183cd8d390b528b855ba9c77d994ce46b171d1cc9860d348058c502e5a8a638accb4ac961ab1c323a442bda2c7f5b41b4fd16d637a7a68ab7ee29a4bd030563a652ec16bf83a671186d7fa3ee2d2d12b45c9a87db97818f4783bd93e14029b41ad2ae463e93eb9add1609277fe11e436f183b6198a31b1e1cc9f58a15ffbbe2de090624f392d3441cfa635f990731b0d2dd563b00f899c73520207060eb36eb8dee5daf369ecf336c8cab2b13ba092c5253c3271686f16f0ccb72b9a4f6e3dba59b5fd8de1940020439f897160112f48128b658a6a153e9f62456a5205ef70f68cac1ecbca2770850325e7569595615386c030189e58e2f7a3b52246228228668878680ef9c424271b5d78a9aab4cc11a834a437b410de57116ea7a6958c56904cb39478a5983021906948cab433f501f87c957e24988f51cc14eed692ab5087de391e6a3fac6c130bf1e1ce732f664738fa7bac60f221db1084e634d435bf1200f2de216c5790d5c71c1945a78fb189958148006515c8bd307188cd92be137636892fc53a00e7d89228900006fa3f59f8fbe29bda594c74c834d21411f6a0a5286f8ec20be7a5572f2ed58e027f0745e3041fcd482e28213316344b3a9444b327dda97c2d984aa9a47d12c053f41f2e70239231909b47c309a22ce72bcef2739c8b72806ce3e9eca6b05e64b609a5932e69e88484aae63db802bb9586ca3cbe349cae8ad24aee1a27134085294b6f57e44e26c99d13905b38a9635725a59476166ec0154521b0db21973dfb13d023c0c9fad2f946247619f8cf58a242e8ab2c515468b9f1b4dfce78bd2b2f26814a4b964638e443038d6c8340a74063c4505980d805687da2f43d431bcc65c8c9627045ce6a689b185d7978e2f6ed8d2158c4861bf4fe5ba13febff357da0955d303e7327224317958aef57fbd4bd5a76e40527eaf2f199e48e92f402e0f46864e7ecaf2de34c1452d64a1898ab0f5e432df2913f603aac8630a986a47c32b52baa0bc4844a09a893e923fc2aab532dadbe0f7e7358bbf971d6a8bdd0b53aa4edf93e613c8893e638bb44d268f39a66193cb5c18c075c514288d17e7f8d73815218de39c28b97d7fce991e161a5a4dba1311b41ebf5498f8e98aea90d13816c2547b95a435467f77d71711c306c92102a80331b0d1051c1ee83a96983de8f21ba58bd8a0e0d14c77dd96a6b798d4e001e25e2cc561ac8471d49ce6239f3f1c246fb009e3efc59dfb22019177804509e075753013f6afe48dda5d9dd9a558f2f950957fc90513bf8722819a1f3551c4ea61e8ed11f0e9d98ac86312631cd456c46ffca0fd7ab1fc537c76696934cd136c5f1e82cbaf9e05c04079f4cdfa5a82f1d5dd7cf11f715d00e64a1c8a285ef3a19e7ee0a5800f81edf64e99600d8176feb1f3e36bdc2456210b265a0bc781ae061065547c60e947d60d32566e2cd9e1caf8c2fc244b5a13f1081eca22cfbde37ca61cf81a7080a30697e782376afc563a9bad6edb3eaedbaa7e605e032acbb2c982c00d1db3b18d9993056db0ac4fa42d0aacacba40d072fb0967cd55bad82bd0ee9f7a54d022b2085a44058d40bc5eaa2a597c369e1c7cf1c06642bc8c1a8f03923bcf8cf4138e8f4dae5407175f96bd44e3c0b8a06a93585cc58f10a800fe652333c441431b610926b40f1c1c0c88922cfa2b28c670034483f6afbb7bad2c22a860884fdf3159a3733f8c241fdf0abb3449e807a1c13cece9fd332d4f6b748da047f1b0b7072974451aabaa16e146f72d345ceb5faae45b10173e9fd3d91e838ed5431dc32f5fcc502dbc0b0b10ea7944c37ced60f9642b7e8f3f6e5399e9e0ac39b92b684929a24b752023cbf3ed4ad6a7aadd013a66eb00c5cf9c8141dd0ec7f0c043724fdf65ab10c2adcf899031655ffc78dfb4a1b1c8ab29185ab36b4870ee7286c424960b821f82fef8a8cce8e20eee00eec472efda9b8631b6d8cb4ef35f627f4bce8386c7a4292615980568018d1c27af4c64484b64a5b181988f486b9955dff31bfea4247a0d2bb0135b39a438884af38fbc68ac68d40cf4021270cea80c726046a3a850906c1527acbe03fe33b267a9f52a6e239c054908805828edb9063645b753a2a0f5c9414f0547bd586b477e2e02803097d298c0e5111510568eaad715b6479d84b10d163e885504e87866ffa67ab677912f6176bd1e817f1ba2ab9d9783074a3180d3a8f52098e87519b9f75d241e1a87e6082a3292e5ff206736e051562e24d65244805de9ef0efcb8446a8dcc2b38b9319fba3adb2a8c2fb920f5d77d2e7d982f3ed282d9e10cfc8dca217a1ba603a60a34961a22a614b03f5d6d663d2e3f98ca0057f67b86338ef0c8d0da432fb60d4e0ef69ba4fe51401a184e3f445e008723fe4f811eab42f1721430753ac573eb02bd705aca7d5e20cbabc8486d9fb3d04b83834829da82f12111c487cc149a3ccf4abbfa52c910c0c37c32ee043d45b117a7708119c7762d96dfa72205eaaade70fad87881cc7209b4d72fdac8cb9117761cb3080022fe90c01626abb192d487e393d16f7d1fdfa0b62ef8702c07837205933166fac4a75f77a0e4d1c90150946076d1b0228d1e05e04e0608bd0491bae5124676cd096bb8ffc87fed6e461fa7c9558c43b5339d70a842289ee32e5c65b391b3712dbc67f1e217045efdec03dfb89027a9a6c46d8de0de5482cad0045c8695dc886808b58768480a7bdd77657a487e869fd3abab4317e852a72b91aede5661684413a078a876aca0737f3e3296e014a0cc7d1d9505d62503d0302b60e407af1cdfb90a5203423d62d36fddf0893dc453b3db95a263cb5db1e9b3a900e42e106a04979de985f0da13abc44db9fba3d9422932b29b5f801ee7702a1d181f48f233a634c6a0a75046d48ea02c71f41b9d99b143b794f9e6945570a3e96bb4adcc71c8dd87f74d91e0f8313f06f8c920ce05ff56f4d07bbaf03cb59a0585346e1e53fe362375d520fe91187498e693f6cfb8d99eac762315ad2122d7e75f32cb14ba60899a2746c3d3d48145f1d8c9a09831cf840e8637b044b286524af97a1dcb93fb54d468989fd465bf85f31e476199f495167d11150169408bf1e07c5188a8fedcc8fa740a33c1823f7522202635a92f09ff7bd742bb99719f29f2a8e0f72b0a5c1a7369ea81949f90f0cb9fe9e965c62c92126e7b4e2704a674c4051dedc18f7f76a0543ddfa6c221d5f72d6c6eb0415c0455064a1a028986c7f180e530108ec46b79d381839844851799860c751b0511e7ed073b1876194cd6e7c7e47abc2048e75b7e44e0044a854d407ead4f5c04c56fd0505e750f25096306ad2c54b3ebed32b8325b86afd9d3e76d3b2c08067d3026c26c19b758a70ad12c909cd605214612dcfed65a60da3000854f859ab3199c755484f7a326f6f39a69bc59336d1b629c8029c704f74b2c1130be168a1a69e13f5888b60772ee384a6ca693eeb3a248cd8d1467d6ec2455fde585abfe81309a815599f80a3035a1b83ef82cb5d1dd0e2cacac042e7bc69f9fd095f9825c2fa6951097058e0817351d0a7fb49b2a52f689456a47bbb7f2bb717567f3b24e3b699dccc76c68ece385b39dd8d1be55761365c5d91ccd746754fba6ce9989855c98d67175004d0d08517c5a95cb95ebce3b7765805124eaa965d399c652e2d8ae3f38986f99642c559ae9639d98937810df419f8c1548963eeed1490d7f5e6c14be0e8e40e02e9c367e61f5e7ce2e52b157d36cff94a1cc2ef8ed2da735f05f87b0c261e5753fd8dc90c7189fb213a017785839402d81d713eb224c2fe5503eb0ce3a3a59e32c4b83b9fb20b3c34354bd44822503dfc8251b6c9986d3c10e60c13b0886bd15187889adba7011f368ee01f94ae6816e6844c4ebf2895f2990289858f73114622238523a75007cb4d989d53169287d4eade8e6540c577e85255967662765cf59b4eebc8bc6277493147f0e8b8c5300b4dba64202d502c1ae459a32df005d5e0e49d3ed05e55a67c44138af3dc5d632441483edf0e38a2e4cdd617d2ab77703bc6096b5d7aacf6e2df87cf7cfe30c900383b470d4217022189281dbb1754d92a93ef03dcea33e285f1561971a843eedac30dda246abe26c3c1aabd0ee4cf1874d45782e2be38ea137f91c2b489aa0f870f913880130f8de1ba75a4d193b8e5807e6ab070c3b27f1ee1464e0fbeb60125f918254de937d534ec14b3713c8335b76d0e6f639bc6a2c383bc19e497a6021df9db8a667a74842922a36e42d9da4ef46a8478179bd49f794f4565c9af26559501a2e8a7c72ec50dd218100cdb16bd0c6ea2df247de299c308f65b32a3627c663334483526a36e36441702e112d6b7c4f6ae4f21477a2f009405aa29b2a03dc889a147e0044d6a87802290e33f5676afa224c75908ba5a555c5823ecb7d12cd9f9649f230689b40d49be5da70c6cf07c3ec0b10767f5864fc208df457c01397055f464cb40947a4a74b4c2d4bbcc96144990bf631e2a091856b2ad3ec98340f646e55e9729fb8a283c6a23c014e99a9bed6ff466374e6b8705e4e4620c4457effffc16c876bf53e3fa1cd680be4d92d54f06f14ca44127f30670b531f9be81adef5fed1f648066f1ca92fddf057fffd43e9185ebf2607f9b8b9a461ad419d4b7f173c2dedfbafc22c4340397ddff8f09a10ad4fcfd3324640970e8e4d824cc6cb2781ba0f87ae6d16b08bd22f8844f36659d6c3d0bf9e9ec577398e9f88ba18f5f4b9e4de39a273b76e6816b689e29bdaf8e381b34351dbfd1f802a3c7097fa4662cc255a992d23b08dd3cd94cb65ce1e77f45b86693dc93ac766894d18908651f1b7146712184bbaf72b7e7541632dc4a3b64e40895d613ffa9684617b8487b5e1427c8bd6bd2d2e0c6d2b4e76e1ef66ebe93908e7a0e884840eaa3833a628be59e9c7f40ac090a1c51a0ad96fbfd1685d8fa0e6fee77454450eef71415665aaffc7ad387efa3d2c58e6e597d38ab72a5c0049963eee8c5e6b0f9eb460b0ee3731f867a2401790c7ba21d968f9b0a1b9f861409341b5220d80fd0e87d5acc981b7aefc28a66a81c110f270742b69ebdab31868129cb7d40bc2e735f6170fed119e0ade42a1c3ef606c4eccdeb75dc82755b32ec3632ac83580f929227ae483dc9d0fb9c2aa6098e007020ebb894c6f0c1a9761912054c48835f10b98d0f4394596fc4f39182e9fc4ff07aef0f65c65c55098f77882cc03f301fe70ec24349281e0a71c8a180152f0e1d611088908b730a336288f02ae7b77f1fddfab329054d5c804767c84b714e7b1f22592f6711beb12ab4d2ca6c66e11eaf96caca4cbec15691d88c09ed86d97bb34921f1d31857db749b442b316b429821f42912eb243cdb649648f1f02dbec3579e33dbfe39e61c65e629e8d5bf9701ea405c56bd0f7a24c8bf041573c18e0860d004e9d4505e70623447e95d686ed8da4f4e19d88454c7cc879e37d2ae0153ee13fc8ac4662fcc5fbee5d317d5c1431c9d44f1238e8a09c3af3e3cedb8acabdc0433ea75b57e4ca46f8013333ca9cec1d28ab5e16f5f7ec838c6bc9a252448d595faf83133e13f9648451ba2301d818e106c40bb49bd46e41a5bb8c6a742d49f15e71d3171c72ec28e00811f8aa0492c7f2e5f022b3ee3c07dfe52cdd905c95e768e0fa79884b9d41f77da598ba93db6293fd4a603a9fc7581ac6567d92e396c47802646e3f6e70fee94d19913643f8abad6f1c0557167fbc6cac895190c1149faa689e00b96502367880d01b128411dd56bb62d8e93ebb38a92e9f12fc70a20f73f230f391ecdfd824bfdaffa2cae6892ff29d207dd37706c3e2c2d2260cb82a429c50076e017b4d0351c08c57a94f26b7ab41f4f9d66b13fe27a133a8720a90f04f63eab0479dcdc71dc6e034d0d4d1f08d5cc50e7b4fbf6a05fade7f290e3007a20602bef46f4ca04e96cd9833910c5f5e1722231369ae315ae18e103c66da8d5a0950069a5fe814e7aaef2c0eb63fbfda3bc8c9db06720384027bc3b5bc596f279e693510fc7331da6129d32ddf7122ac516d2477faae9009548fb18c821834c430c57d27e311868c867ef889fd8f142212fb38d73acf96058c7f11523407f4619f35b1be8c7ad268722a5e34a06a7758d01025f3e1e972d2efd03686cce60671855480cea1fdaced74530446dcffb839ae01f25490aef087740d9cc0741bef3abd05da7697b102ef6dba97b717b93d21d6bce76be248dd04608f1b7e5bda5fbbbe4ef646b9ed4439be4476d2a29f97cd00fe64d442eb8d97a4209536c271c83b1ee2e46d06f2d9920a11dcb3f2f51a98603352ac9b6c181522f2388eba897533f52281bb0f0ca67759e929e61f9c7534451083c9407a2b0ab2ed5680fe19b346d0d3a6487f976fdbfa5393322926ed6e73916083cee5ec826123dc4ac0a982505eb1c9700bef7e2c7d2b640cc5018d6f614fdf51a84ee7005f944d3f10b03330885306748b41d7a37d488ce6bf5d1d560a236b9b0b8a7429845711255201f28cb3278dd24cb1bfea4f40cd8d384ee52e2a1bc6a03381c83b2dd03c08c2c1fec95519cb6296fabb03e6cf2d352879e1ad7658d2097bdeb22d221c4f6d36863c1b494287b44f0f281b7387c83f9f8785600598cc33137f042ae0cdcc92a964b01debfba00f5676af82c06136bf1817f4fd1dc1ed9cb9dde0e02fdd097f446871093b063bd06addbc96fce06b2365af9a308e8c8182a787e6bb5cf35a9aec41fee2945ea782d5567cdef2e8e0ac77feab45354c48cd7a63e1e084b22760a75d27561b7334ec3d581b410190b18ec466d914df4c78aa7e1413694abb8cd89e9918687693ab34526391bafb58e85ca38a458625a65cb63c9b22f2eab7a58980f8eea6e586432ec2111a9a3be6decb3e577ed5be4257d3b3b4e462b6982a302694604fb5f13740cb08744abbb8bcd7ce549ad20112cd296d57b09de56d2bf268b8262ed577a2c89bdeeb0872cd2bba91945633d0498082d56aed61395cabc61b160cdc3c3e1b8816f354236d641d00765479d8d8ab53a8b216c64c862a7fcee1cce2f8136882ff7a1cc79374664b708fe208cda001eb2d52b8cda90156333810a3ca9f43b91d93efdfbb40f28765e5b8d1999c40cddd38475433e20f86c6d30ab579adf2d99786412ac3edffb4697ee052e2a1b6fd0185dca8c4c42c8e4252aab73a95a4af1b83c1d66303a25b698a4a079b568fc903ffa21e55ae63a9d7b83302b55d774d13b32b5e341b424a6339fefe2374208345d323c61062e3413019c074019410b894ef559c2ebf06a962c765000e6aa436842a5c70629e8a1d62d9f6a1d5240de12a487235da762f87b5912889ff0befc8e4293611a11e576715aa34e159c64be428283c5d505c72075c6af30aef198f7a5ef063903dac7e966902b5fd93752d06c33f2883a55da34c05e4323b2f2736ebed400dd889dfdbd00808c39644dc29a0fd62bc9082e26b0a0ab3e1807ca0d1b6917ca280219bed1979a630eb92364637372253b6c61a774b40f2130871c5247ba392a18b2e12f1e1a08c0bd394805e466ca71078b0aff074698d5d6169eff8371a8259c373abc88657718b66d56c53b8cbe151e768c5d3a5c7e5e61551cb1576f48eaed8fd2c007358726f38183a0cb8e78ce7681f7b667ba5c4e90c6467147f8f4901439834c54e6f0f4dc96fc43c69107d6b05a427da4e026a606d1462ef0a385957d3dab37d9308583090f160248fca80465271395a047c65c09e5f1647972e1e10766c6fe3a2d643e7931640a1b9819c5cf7d0f3f52ea6cb226ca918bd1b751b872cad564a981288f8e3ed3b04e6bb0a362f31168d9153e4b2faeac6ea745e625a79a736ba7c51daf94d247c15ca414ff85be9e655aa47e9b7a3afb25064772fdc90663eb0bfe57efa1d4398e0d274ef0ecef63a4f1dc37c92c080cba38bb1e3902976931b3eaf5c2dbf183dcc5fe12a97b67addeff98cf3f7cd97878d013784fa9e953716ec098479221bae42f9227b31fd948119ecdc94669719849931461c67abd6a1c4f1fff1730fc98dd2d53102f33515acc74ee7558bb8705301eb88745cb525804ac8bb9279f8473a3fbf31d89de2c09b06eb89fca9e28803c5b00a7651abfa271962d3c815f4d413871b08be63d0426ff0282bcceeaceb70bb6e269bf63051d0c916e8516b3f0c1803d13d2174d1f06f627122e236ee3ac428a8eb518c6b30e515d562348aaac40ef71012d968fce83ae164812db0afb63692327ef0515d022b704c9650e603c9c4bf13687ba7f04b5be7b53be3242e32500e22ed07677f89e4567b61f284f40ae2a0b2032ec4c2521e2435c2a256187ec2c9e6a304c13868b239de03395eeddbf1ef30c949b9dc535212cce81faaf00136c2208c2b6da9bfb40cc92eb184fdc229ad9817f0b1ae0c9a216f5041e841a5d527f2fccbe657830bdb5077fe3b2a08f0591a4539f9c8463aa3c9579663148743dfa8bad4115453c19d3acd92b4ec630b36ad525b9e229e244960b70cce2fe887eeb109206850b80a4eac87035541014c69d3daa52e597213242b286c18764dd71d2c12d8ba64a2297d615198d514c0ced07d03d7bfe7d0c24f76310425e9b9d98f0b8ca2226090d2e9743e007d881d8e7cfb877cbb47ef169672357c728949b38586c56b12240b7dd4f535083c25e4af25e0e12d22b2a57a6f590146f9d28dcbffca53b2c74ff072be3961fdc9e717076106595fb4d949122f91b800f59d6a8d49eec1db9804a3211c7ccdfe7ee46c204f28ad35db01dcf836d32252f07afd9dfbc403f6abff07341686fa193521ccbb5cce79d36114dc79b88f42f4e448e720d188a1e37f167921603424b283981b4a183a93ff04d5ac397ccf05edb8b06d308824da085f73e2f04d70b3f85fc0513719d2625c75303ff384a49f5e1d20dd8a9693d0ed8e16f13d168fb53b8a758e9201131b36b2e2ea8bb4f93006e854119a7e3074ac30006c9cfe267a371cd889833243b150e2e093e86161e34716cc5bc1c1411114798f399423bbf4af58488d8d167315a016d438987971623475ec1d3c4481ad0e554671cf442943b581388187c6cd3d508edc399e1f7957a5e6221526cd74033a10476901ce55db737ef9e07c86cf6f97752f5100939457d3f0072be4b40e9f46328fdff3631852521c8b43267bc4792bd433c6222670b35babb434411f86f4f4f2c92db06a3f5ff5a08637cf287fc034428c3f132222593bf4364a768ecb6003ac1d778bbfd745f094f8ca983015d52a043cc6af1f68a2826eee09e5b86f3cf4b2c1f036fd4446ad9f36aab9cab5fe3fdc61b7ee0b73456c38d967e60572b9450abb8b7a930a19f36c40dd94587927d92d8c0be33a78f7dae35af02653578bc99a69f842b98cf193d176ce8ed94115aa86688937a0bd6f6fd8b281233446c942bd203bff53b8d337304fa10b2c6a8a26b1962be940137ed7e3c5c5912b1ea7981279d05bd3540220d9973a85e6a58b4a55bd13e4e5f385460df79a7b071a4e640458543264c500ea8067ce6e1cfe4592c3c1e038b69822202ca8285c833590d5ca4dea0e3736b217208d702e6676c5a3bdbe0ea3398147ed60055888e0f2151244ec2d62be13afe4b1f312c0ad20034ffb7fa011efc54aa95626ea9be9e5615016bfc47cfea3f516a8fcbdc0c658e902ed8c59451bf752d89a43745768855440bc8ceaf66b995fecfdfe99a6604c80e014a6fe1ede52b5c29b581894d9cec7fec6964800728a40e76a9bb18bed7cf621704dbccff68fc75d28138b6e4056670f029ccf0079f7465415064fab6a5abb4270d7b30a779cadc05587e41ce0ea2055c964453ad1946b12750ef6963513ada1b70690a564989348b379656d97a14a694f089b200bd3d029dd19e95879e08dd8e92d74e1f7baccae94448e12445325265462c6bd9a71d72ce4f07a4bece0bf52e44c5c18bc420f310247e81d797621fd6f3ee0216e66440b0c83751624519811edc8cf029ba72bb8a01dcc4994efb2444d1d0fff2a97649ee28f06283347492580de1c580123c7971b982bf98b21f8d80be430c60f4bdb5a4f38967067ff9497557a764451a2af6ab98b0fde2785ec82e21189fc308f959458ee5d9c21e0a27d1ceae69f6693739d296f9fc6967b18d11d79ad7ed35ed4485e4992b044d34296b73fdbf601bc2ffba94e65e30dc8dadf3337a0a598505f6123c92f06040680f6a47ec63600b83624b2b869908569272fe4736af94460ef15fa76617b85bb995a3e70a942959cf7a2e401a2df00152d0032e943f96e715f612c881787761a1b4084c496f2c94fac4f29c2af8ec224ee699ab69816f0e7b70c57f622a3c4b89c173f861d68a769feadadfe62829f71b5020a94736841c08cf943145c20324d7b0a5da0f748bec3296e5da43cf9946c8a10188952ad712e907c87dfdec28245bc281f0584de6b7367e49c3d5e756802bae9a9db0f276cd260df5d31da272b09bb8657d82cc1e1a966d1fe56265cc97ffcbc43306c1a814cf989fe60a59a5c8bad10fb6d54de697dd57312b3f220a2ec6682bc215908fe678ed8b6e047555cfd6cc8af724b91f0f6f9cbce6cf742a22017ffeeb0212c0eedbc529a22bc02ec518c90ac39c793846f1ad400091e54693a4ef8f97465a512c1ec516e22bc3b42393c03edd15e1faf7e5a908042d8e96bc48d7bd78162084e851a25f0defbdec3c4a16960e4b1ea4f35e388b1072fc78fa834446a381263a805bf87429d113bc75a661c842f7afea6d57cb12ef118c6c98457a47d92116295c1c358c11828ee19e05d5562f2e3679f5d2e0ab882004c69a860bd195773e410cf4f1d70a338f1aaf18946c69f027ca11df99ae83982af3fc72133c0683e351900866bd9c4e09cf2c6f63888fda9a9538caf478f84358d6c6f015888f9b9dc2014cb6a876f0f57fe235c3e1d2cbee4b12e664f361a00bdc89d3b024741a3b8f9345e5c39341e19976de8b29cd5277b111a2c41ed5e30fc4b2b724ba74e6dbf2b51b5323cbae40cef18e5f2b8543dd1af327536eaa351309056495696cf9e56da8c68f73fd453f0ffbf7f9f447d04096321680edb2c656e41578efb3c17003c582012027bb65d086584b4f833fb0bceb2ff038b29f3fd162e0d5ab42e7a76f6957760094c82dc0490f8e3b0e3b9ce8309e15434b87354fa2532bbeb6e92a64e11db8450aedb45d29c9f4e07dd906031be2f3671efbe655f23cc3a5b35c96ec467b71aa4078ed0d642d6aa29974aea586f01cb482c8e65cfbf72ca5f61359310b50104187063bb5c01213ecede886d41ccefa12712430ac1c33744c5b58aea4e8864dab9ddeb4764e01379f49ab6944a9e06f64ce015a0fd5345c8094d5a603970cffdc13355875b9001cb6dab03390316eb3ac0d24cfab5e1a625f3c81f84c6fac7616e07ca6d5f1a91094d9eeb3cb398aed72ee6e292bcbd544410f73f6298e50fc63b6e9a1d7ab8a4f4f5aacf5265ba694a44c52ee38031203100317e8232f6666668e31c61823bd2a2badb4d26659966559f64c2b5807b08824c08299f664783044eab5f058c0a81a018a69fc53eaf1d4fa792636428fc03c47b06a040cd659fb02c111609008fda7d4e3a9f55db1ab5872940c59619546242739c9494e72524a292547666666febee67565599665d9012c19d609115ac2d9d0aa45940c18a895394d5ca0cde6c4091595cef5026a518c1c0f79c8437c715f1cf7799794524a29bbbbbbdbddddddffffff7fce39e79cb08400eb640825515305a334935a21a95425b93a08ca05ac9af9990db54e9440fdc22ee655fa0bc43a30f8ae7e4161030579e8e5de7befbdd65a6b2d9330322c7b63a7494ed443a887f89f528fa7d6cfc743fdc22bff947a3cb57e5a24a594524a4e7292f3d8c5fb4fa9c753ebe753555555555586ca50190a85f9db33c5b702f5140a20d0577d242f3059e2e0fe883a6dcf94c1d28a8c039e068645044c6819590392c009986a7ed48026d042623e1e13254c3a25ad0155c0454d51910205c5896b401600808b4f8b134c60b1e27a4c005e7d2fba80a2072659569d2fdc52f98a794d753d85028932676c58557ee087578818e68ae9968c8916b7d556b42a46725769554c67e0d905553b6343ce6959f0d356c5bc5555d3c2602acbcad8c8544db53236f8c12a6a401700554f0725938206d4aa191bd69561c0c30f5b117ebabe5531939a56b5615d2741d007d410eb8340c45030d03f5643741f74a8931fa8ac5d414cc228173560d290cfb18ba71269c0b8ca4cf60bbd61cc9d8c8d87bd80712744a1f00305d191e5aa548492bcf00a0d756a096743495e28198e3146435ca2238a8686639186e34cc3b1a6e178d37057c38d341cc62276c1bd89769e6a3f242216921776c15b09c90bc90b89e48569882f1aba4234c495a5ba68e8a221e6127389b9c45c622e3173899d9d9d9d9d9d9d4bb1d211d311d3111dd1d1a82a7d607c3cd5d3d10bd5702511c68f4404b3178c21c9cb338530661a92a6b7452ec5b7b174119f4618371d411a4fe5e48582aa12c6b5a30a933a237801c89c1b60aaee070af2cc331bd05767c09319d0cf7825d60be45abc3c7b1556dd264f145a4fa8b27c443032d387ab25d2b5211651a6c1387dba6af270b4f42fefa11129cfb4ed8eb0d3f6c0605d215ac1828586c16a020d26585305144318ac27c41c2d628b160c5f8b16531357ace96fa37c9af036b472188fe38c0dce08c7711cc7bdee48d7751da7eb36b4e22be4de7b39f7caf6d9ddddddeeeeeefeffffff734ebe6a3ce604ebc37d5cb8c000c0721550008abc882f5e307c2f5e4ccdf70cead6d187c42ff7de7befb5d65a6bed683402c0fb16b5a8452dbae6df8ea2e4bfe91c47d9ff7343abe9f039cafee71b5acdf9de1572ef2db9f72fd93ea349a784634f96524a2965777777bbbbbbfbffffffcf39a78b4c8dc7bcb09c5ac1e2110b6117fec132300c1855d903d40ab3505f7a8e9a3cb03b7dd8c2e0d01d91eebdf7de6badb5d65a66b958fa62e17999fcf30dadee7cb71b8045a950d409110a6252b40a2865fdef1b5a39ff5fff36b472b8c9fe3fd26d3ada55ddecfc4fa7dfd06a5eea514fbd7e96f84bb6cfc82413267598543189991465fbac98999939c618638c524a29a5eceeee6ef7939f4effffffff5fc2d9d08711000c26512366011a011e8147402344502bffbcf450a39be7d6d18ba6699aa669f7de7befb5d65a6bedffffaf60b072de9caffdd0344deb984c2693c964aa4adeb66ddb1572efbdf7393738caf6afd15232260bd65a6bede428dbdfdddddd37177dd78cd168341a8d08607d0af04506d0055088cb0f8caa50066a65066c9899bea3efe4b135f46181014577447a29699aa6699ad6dd7befbd7706359ad7889d1202062b89b5d65a6b7f56dcdc944aa552a9a4fdd0344da330cbb247024b38cabe948c1772efbdf7fe3f47d9deddddddceb93697a9bae6659a73ce39e70d8c0a16a5f26210f1006c01b26084231855df11d4ca0d96a6b7dd11e9a5c49cd462d7755d77e3a993bf1a305833cfd9d0f7f9acb5d65a5b31804924128944d27e689aa67d0696600987a3ec28195e618d476217bbd8c52e76eeee1c655b6badb5524a29a5a45775d56ddbb66d7b1c112f0819b880aacf855a795b8ca7b734e461a9a24f06e36992d3344dd3346d632230282f10dd50761d60b0c660d9afe26ce8c358c122a2496e6215a51e4fad7e813eef7a97a51547a95132fa87a6699aa6f5d52fdddd3506a512ebc870942ea594524ad9cdd15a6badb5188b7dca6e5a7531c618631c3264c89014d25a6bad94524a29bbbbbbdbddddddbbaeebbaeede7befbd8d624929a594b2638c31c62839962953e3d59321d4ea646abc4a65bece0927cf3867c72a51c273e204656a98e4b16cadb5d60681a5572a954a8fa3dcf4cf1f9aa6691dede74726414ec29fb3a15dd7dd7befbdd74a69a595565a69a56d67dfd0aafbffffffa594524a19efbdf7ded883eeeeee767777f739e79c734a29a594b2bbbbbbe5ffffffcf39e79c534a29a594255e867ac81fa3c578ac13285052a8a052624a0ac397923235140529a62275e1bdf7dedb6edfb4d65a1b8368da9b2861f20e3b259c8dcfef947036fe7dc9869c8d9b2861d26180bbbb3f26a572ecba18dcdddd7dce39e79c1cc7711ca7699aa6691a26c5727777f738e79c73ceffffff9f7fc23a4149a1a2c6eec52e06f838caf6f953d3344dd350689aa66973ce39e7fcffff7f0ec59a73b2bbbbbba3b026f66a8a142f4860b0a6986015824f18ac2a44b85a881571c50a866fc58aa9a1ea831c5580c17a6dbca279c8bac70953d322c9713bfeffff5f2412894490394629fbffe1ab509192522da9515293575fecd7bce410ae429d38b1e6df0e857551ac69aba562fdbbacf72cac135ab8b04e880ca0a38e304211410541558ca25ac4f2e266ef641818d6c6431ca7a1e39bdf80390b06ab01fc851831460c862f468ca9c1d419d043bc82b93c0568d1ecac63f03899040cd602c85327051e98584f05d4210c56153a070641d284c16a00c983189649c6c686563c392b726525325c59991ac951285073524f9d522382c16a6284bd60b09e9045305831276e909a0ad6ec78a97f1cc7711cc7c57b7b005bf432367e9a744adeec389b6984e338ceb90df5d7baaeebbaaeaf1afe9814ac9f4ca248241289444a0283f50447d9ff7c43ab395530006784e3388e9b1b1aa549a784d31bdadd73ce39e7e42b5ef23af989627d0a21305855bca8484929c27a1595c8c315af8be1bbaea989f71b6694c30cda0083b5ced94feb38231cc7711cf79b8aa334e994703ab9699fdfdddddd6eadb5d6ce59e355e3032d152767e0c183078f969696961698816e5844081fb1a5bbbbdbdddd5d1ea1079013b00e202edcebee6e17acb7e8e3bd17ba91c821043e5a5a5a1eefe0d1c590821c3e6860055d0a5c8a80430ea8e38512ecb8810f88b860c40f6e00c245083c6010bbbb1b4710a803052e447409e00bdd7d440e99c4614329073086340004238a14c1d1830b36c81f2e3de0c183070f1e3c3c804312eceeeededddd5d61c41cbc0ee040448669c46ba8030c3ac3f13a32cd86c73c0752c8a187203aece0324311cd878b0dbdc3c58716287b0801c23d58000476f798e181a0861c6e68c1800f7ed0fd0440bcb4b4b4b4b4b4b46c000710b4f460019076efeeee6e7777f7969696225c800c61c70b76c0c2102d9f821943b3c7d5018e93128af0011a924002d4c00a4bf8000e3de03802088e198038628429063e320c88e0470896e023c34e32b4806009db0e9c9461ebc07fcb963a5a665857ea820b8e209163e076e02db89001191081851f2668410d4cd0c30fd2ddddbdbbbbbbc27096aa7394c0a50710207401102e3b74c05288bb7ba52cc09c525a99c3d12d7b6c40dcddbdb2801f7777f7eeee6eef6e8fd13d86dc49c0c3103af83003222c0d973c3027b9e810e31bf276c01d4839f88002c34311033d1902899323040107dd8e219c9c2888a2c00045e1839e48408e90034514aba7436bfd541613a348409680812a0c2328948d14e4440aa20325c844f19f2dcc3973c0610727e1700369fb010a0c281b102218c502e4dda76781f3653de2b314b8f17e01940983d5a278909941a100eb9c2f73777777b74e8678cdd470eab4cd3abbbbbbbb298c656534943e530e0c560eb4252c2fc40e8967a2def68a3cd22b615088a782b75128c09afd63d29c7352d7a75592a552a954aa6ebc1ba7d3e974eaf78eb4e22be4de7bef8d32c618638cffffffdbb66ddbb6614e86a46c70dbb66ddba28c157747baaeebba8ef32693c9c42693866e38be8931c618efbdf75e4b6d65d95a9b65599665198559843628891d638c31c6287dc391557777777bc7cccccc4386a43493482429a59452ce39e79c9399999955c418638cd1999999395a9a1a9957dff6d9bb43678f902b0296307463716009120183b5033b932470b008cfd4c012f5de7b9d0e0f18ac25ae090f2402354803fcff67528cddfe4c6f72648e6c9f264a9874a69c524a29a5fcffffcfb22ccbb22c833e2b8cbfecbaaeeb2cb595651bad8d31c618232c7129992ea864109a339a01020883190000c300104581404ed352d1f514000b28545c4270301a2e402e1088e2b0521062281400c010400820c418431422c22a007c2a940141c2666bcee60ce2855bfcc620f59cba1f5dccc6ee1a0ddd22bdf49c6a32cc64039aae64c7d55407125b2e718b93e8a29e41f70391d9585d2b2e466377ad86de265da95b96871d4b6aa3552ebc39b84f9a20419b069b15796f3e889b401fc6955ece49c803aa2e03193ed8121fd214d58b54cf9d1c98952a0b94ea5a2f9928029ac468d0bea776198a0d3d5e161cad3eb12a9b6e6c25aedcc5b4c1f2b6d95747c5d6526f56daabc27de4f4334c90b038849f0590055fc91677cb850fef2ea2411abe1b23d5b27dcec9b465fefea26d74f5ee6599beebb5e4543b65c6384c95db523bb119aaf0ac2c01f6834213f42a3afac7ff25a11aaa33119cf64188b322b0ef907bb00c256efbb1cdb4c826b8167898a3b57b905cc3cc132effe487ecc0955eb2c057bbc3a9080b15f144e8e6994ce50d0a18b95ec1974a0d3a7252798f02eb765599e26405f1a1d445e7024e41973b91d95c5d2b2e6673778d86da225da95cb6879d84a5e97053514a2bae4e20935d6dcb12d5964109fd20a90968c60d84041f4972196f7eb493691bb3f4b86ea5e62e9b62973cce64bcc92c895621fc57659069d011ef112fd10d1aec62515f78b205d508a986b245878ef930c84928e33783ab375f22ea37817da17c809f4d52ae635083d08a5def0898744decd18750ad4d298241593a3807c447ae7a4532d9ca308e6d1059d6c201cbb7a51d517e9383e548d64ee613224e6f653cb11db172a1eff499d674ce24a51b88339ce3d255bcb3a214372464ead89245fb6d895ba2675528f916799b59bda01d69aa3acdb58b9080d67971c028c913714bc50ea5bbbcc6bbf40de9dd49eaad7423f05a9764eb3ac06a4e0c375aeb9312a45a5e43d3e2aed57557504b881259c51812908d1aa82978bdb5ffe92651fd86cb39c24cd3c38be35282d082f7c4ccb90b29222aaaf4e59582311351f8748ddc5c8e0d305a213a37d768d5e5dcd8a3d5d4b6fc287141393cab5b43c5422e3ec9121375d3a3d0f328c171fbd1802bfa0141654ba7b11581ed0fcf81bc18e1a47541c3735174636d7a5228afa29ac7faae794573a293c68aadba9c1a3bb69a4a9be8a0e7a9d86cc62d6309cce1db472d1a1cd6c62487a9e436c22c70a4b39c912cc7700779420b954d301d5e49723cb098285b571f55b3f3d38c60daf2a27e7e6fd9fe2a1537f6cf4b074e1f94f39fdc4ed6a27024a288144fd3101c8ef87325331e07c3278b38f6c765ab65395f52ee7e754f47b3fa2d700d9df47d160805167811c34e89c616ac135b8b551f7c97ab997730caafc353095ec046a7b5c9a09562b848a173c807baaf1565e43d2482d9e1212d72cf47cee4b45810e58fcdee51b9e62777754e2ee47024079d56f72767754e5e52c134d1d13813a4851bf7e24c6447f161fcbaf6e69346d190af6cc4259b46740eba0276f8ca1ea12b013156d45edfa0de80ce9ff6f9624f106789cc86d52d6a0fc4c45c757840c1fc88abd57759281396449170920a87e33032b5798fc9c20f525fc42672d1f4b90bd5f0de052225636837d1dc91040ce48297371bb347086bb8d9f535f56d837e7c4fb5ce0adf839ab47fb8e829a14d63324442be1d49121f13e098533c2d5a84ea0c4076d4703c65bf466d357908dc171148f438d5467f6ab92905a3ca19ba0a21b4da19ab5b8c484376a156caadf578ba02b4a34e805b8fb4301f4bf0aef91fb4ca76e719bd26439f6fcfbe76ae4ed1da5c342bfa3db5af16564fb83cf6b0ef6e72f8e0cbc24f634b991e49f42c4d50a57f47be89af0685b906bfc895d3d1147d35ff6495119af3c6e37143e0d222caa05edb87fa72e1dbb07a99f69fddfb32e22c2d3fe829f4323dffcf6214a018be0dfe05e993821645aff63b227dc15f644fc21e54b7bf51a8188ad1b166f52121df4b057f4e64a15ee4de9187f125029db4fa946e4fcada0c5e9cd0ad9c2df81c6b746876a5036e7224993409ab870026504f5159618c647838be34cd71f771d88bccf27a893d10bd01edbbae590adf2fd12260f8dc68c9caf60c013928952a1a6054900e2d040433af1df31866b22eb555084d5cd59a07b41a6b1fb53bd68dff5529c4a88d38c79e9e468983ea4919e487de3ba7b4318d5c0c30202f4c1e99b40f8adb3f61f34b6d7af8347bf74a806eb1c5d93e7f654b800ab0930a6546734151ac1e82f819e18c9b54468aa99154c709c192f6f248a97d69924c5743a6467c9efe045256510a5c9cf22f8b6273c45ec3cbc7aa4650bfa444a6334aa3678c6a6c364f7bd20f4bfaa4109e787c31721d8bfd3dfde10281b105864804b118a7a8fc154bec210985e5b6a633b7a3277eafe4092aa98d252efb0b1cf2488bca55b0a8e058551acc8b6d56860f50fb880a5a8e1cfd17a0ece1d46ea250ce0bc4440234040738b9c4821618238ab41528c7ce3def98954c52c3bf2afb09e16e159e7030eb43390329da43b691bd6d822d835e4e2c88752176cd00bc12b6786b5d9e3c4b238f4757481676498313d4b8e1c0f71dc336f10526ab26b688308ed11d6e31d070378e49150aea23da1bc0693521771c16b89b6684ba98ffbebdab997e88313162301cbdaeb05e4ffd28b799b05e8aee38e94d6565e2fb48d4728647c39e6270c1c9d4370356e452d468665271206220f65a96ee141cf00137f5946fbc5432df57b9c0da4acce72b45ce322cbdeeb60f3f748c65a67660eae88c85d28309776e47b7a44162d600ae08dfc84f79d09957c0706f272ca66f8a5a57ada233f52fd40773a043078ecaa51faf26686cb2010efd4c74f3a8aa8789295a2d677934ec61a1ed01cb46840900b0b4563e0c3cafa24f845bea43605f0b82363cc26f953d273348a739ef284a33b977be2ae5f8e10681bb0071b06c60e3f5cfc3f015dc171744534bc013132dcd35c23870da770f3d2bdc21756de37c2688f19bcad6dca70ab0fd94d3d2a76d29bd9cd2296bebbd3672a898aace7a82be199713bc86494f50d548c8a6946f5f7e5dfc97127618b7b6e6c07508de472290afc480ba199fac127c5168061997281f5eacc48c079143fbfe2bfa338275c0db8e7b5f54a05454f1290d627af13ec29ba55a29d5d622eec11968de202f430eb933b4fb2d2e01bef8b0756d50b4fdad1130a6c146459fd54e951e879b86aa350dab0bc3d0c08cbbacca37068b55c330d5d41f7c273a6f7449f52617686f50f5f0ed993edf924f14c2a9333b6194ecdd043c901deac670dce334481bd0653a7badf29ace43a6d708419f9c81caad6c7c27918d564a44a20a41916f3a4ed4cc32130704a7b3de5885ff0f3d39312ff7253066c7aadec2b20dddfeb82f070f74371e751fd2eb74745787a8c23c40a0ce9dbd4233281db375d211a4663b020e884700d4724c5089312d7c8409de60d1863c9a8eacd8e8d4d40e5cb717180e392e5bb9f5195ab0a719a967ba44e8e2e4a6b17aa02c247d28ac048ebd4f6fced5fa4e5679422d556f89411ed0d97ab74795ebfa9b37e9c1cfe2438e7afbb0263c79779805e483ef98ea45556001c932ccc6bd76515a1341866360967c41914ce92b723759b3174021ff99d3a3d1560077d4a218be37a8b90eae90efda37276b7b0e410f38d6dbc66c96d08d5aa3febcae2de5d6d11b5666490738c5caa2e436536ef66956bce472e12467ddeb04e23dc9c4c99880cdc6a4b2824712403e667eea77e0793b2be42b09b01c02dc775bb328fa8f1688945c7e40dfce4a966aef26de000ddd044477827933b13d10ad5ce5242a64a1998e760dffed94ead38f8f2b45a9a9668bebaff8da0c112351643cfdf6bd53b5a6ea06f7d02927d9e5a0749205eda70d5a190da1240c644978d70a33729dfa8ea73a44acac9da149f3f3786e46344e58631b9d1f9d8c07bff339a4a30f29e06051b25b66e962db67600f39d43bfd0f144efd99cc0d31a491426aa8e932ede10b1c7e0ebb71d8cc378513de86a88c4c0a9ec9a2712840a8c9ac632f9dd17af8601457b1919350b640629074b36d07833014ac1a88fd4f9c662c40fab9f1afde57f5ae996064998f1c7af266758a5ea77494deacb349c7dbb242dc629c16141f2cc90d401f9d9ac976636e3d52c690f328c3a521186483be24aa487988fcde608c4f0221bd3f21600d46435f639467ec4d192575dccaae99096969ee81de65228bf9d60e177269f2c181571e9fdc2a48961c52fe2b1fe48d27e4832f012a1412cb88b1974c356515a9bce64278735c5bf415d76ac77bbaabd6ec93bf326b83f79d0e315fdd32e864b269630b7e9500bc91529d9941fb67397ecae798689849b02b6f90e2e1032f3412fc9d05d15b4bc2f1f75a2d84aeb417530449f77fea235fa396f7ba14449a3a2505abb0d2460f69b8cca1df0f23a00e407ce5f02d1c184c6c39db27daf068104e43949d6dad4adf3bde3cf2dab24d06cd994a265019966d091ce9dc350ef0045eba9b96e5150d83d6010e2a679a455334d55d0926853cc1bae6e58e98667b2f8020ae5f0f4aadca0f02a0c57f8914aa8744c078a9403508fbc787bc8bd9c918987e669f47103be231a0594ca1bc759285d6cbcbc40fa3fb752aad4ff2ed8bc7ee12152a42bd5840b997c068674cc463aa0c601658dd1f959ccd01f2fb8ebe2377aeef98bb66f9f87d99f68d3220e2d58e2086a59a5c3e2934628b80c10091bc6ca6e236cb9eea27e0dadb6a7d023308357c1904477706e169523075986fd3016f4bd18b9444b15a95e8bd49756cf1e4d27cfe0ab3397936281e1a48141a618685e8417fcd4dca01226c11057ed8661ac2b18a9ca78ff5d074ddaa21b9af8b79227ed75b2d6b38e0d90bc16299833000afbd52dc6b398f3c623a6ccf5766d4b91907fe629ba9b25556559a1fa6caa0a8a8b2aee0a96474692ae66250c585907c2a1686b05563296bfac76bf0c9e763965c28767538d009bb3f25574de6f18da96e4ac7b0202467b55eff01eeebbf5913ca9185bfe0044cadc1c87920990508967f66a417c86b2f447ea6ffb275877f040c5ac85a47213a50dc083393c2a40d52346c89b4c8bac5b42fa69c83dac6e76c14410556913f398ba852719129198ce4fef42e9111f1025ba17182a611735b2c131e1d5ab32ec461567899a1631f4e58754e09d2732b60b8b000e855a6e33823ebd0c72696440ded5b23027595d378ccb87457ba085c201504cf80c2d96ee87acf4c769843089d4341819e7c487a7d91131a14cc303e1696ad0b59f88f8d2dafb60843192a3eb690f49c1913f61629ac4954e4cc19fc84d2af1a8b26028bf0e0b517b471a61afa4b1068e3699f5652845593e37f6ff24824d2513183299063f6fed83d047e3ee8fc8e53dd98087fcefe7dff06891c3f31b5a5a675bff9b529991f32fa191381a1cee8841ea38cddb7455356c2cc92abb00dd933058b775ba1323da48be1e1cae4cd7583a22676c4d81913a329c8db0c81052fbba4410298eceb66c0e9f5a6e09b9dce83024aae8a2df5cdc203b95955a3c9a27f3f502e0b857896c648dd2dea3fec301e6d10f1b3dc8cc2423a1ba95a049f35e25173dbd3107c9b04b7c880ec692ae2caf7b3e3f67289b7380a1e89a0fdce98b9e9d639ec1e71927cb1c9ac7beffd5a0564d093231c58874beb5b7680779f1dedd2b0eedfc4f5571d3cd6a7029aefb24646c447bbdf40566dbe7c6ec15b68c0b3213dd98bdd0433d93cfbb4db8b2234654eff4378d6909fd9e76b44a3723fe712de1fdabe4f98e1f35c5cf688ad314d7f98ce7448a0ed30a3d8e14ca33a2e340152d6463edb0c7b02eae9d4412ee80c5b3cd7e5c9f0700042f8af8b80539de85b50fa7b203088d476755f7422cc964dd5af9926db8e030fdb7edde740dc15038f513b8c54f6c16517b0a531882203f8706368583b7572e94de874e1937721b6ab063aa3778c087913dff572d9972ea2b4414f23bdcf909c30ee726da16bbe40bf0f39c1ab36299b196b5e1680aa6a81a018178814ed0285ade7c917ec3c8a87fd7f7672ba0e6232955897858251b5183e71b6ecd5463701b7362223ccfbdabb16a6477eae5249ccc2e0e1ec95e2d373284f4d0268c9f5e4f9a4f6931ccf6fab458f9ab0e2b3b7327d40a80cba3b6146006c75037235876ba0c0e242cbd13ed1847012af2695fec41311949e5e5955913743842765910c0fc4b5768747bdd4a5b50e0de775d666150b5afd6cd09626ac6108d5bc6a4cbd066310581b12122c667a265fcc3e43cc4b7b795584ff8e9c66621a828c35fc38a1470024a2b9f57e73bd156ea98e726b01f23794dc578849cc6b478f92252a60125d44b4d58bb9454685c687b5795876fac2e666b114878d6bfb2a1db9f5f85cfc255a5042bf65e250b12f90799c38122deb8df4b75eae3e68a1f1c6a2fe698711da0b6366fb9144762a514d440e8cadae0b7c069691101581756955500215879281d2de0e7d13c4b110875d0f14a2c00567718aa2fc66065a7b69502d254cc31af59f8ae2098e16ee44b24a029c4b1ab801186206e1015447e0c9893cc105f96b2dcba8f04caf43c6b54ba5ebf099ed0a5da81c83dbf360d481a9b7089481924b3c487a9a3166a801eda9b6aa864a43c1eae0d9fddcd7cca09e0515c59b0e8589c4c7e739b93a292bdd229bb3f6c2a28267f6b697daf4fb5c5640abd16437eb9556ef94c50edc7b935bd62042934badc8a86cfae99deebc8f0bdc1f2d2481a24f2d73a5b1c4e50f412d8344d4bea1e58a60b90518ac880a0ac6d434b6d86fb014f8d31ba1241a46fd6bf81d11b0f93f6d23357341f1958775cf5835068de10617b95f7c67289161db4801c697fc87c7c32f79c215d6a4d494e0290df90c0a7327fec3dadc1008ca5de99a4b429ef2b7e6b98e9eefb8309484c37683d00fe5391a3fcd6c46e4dfcde43540563df5c95c6fc21fe11e14432674f9810f11989f3eeadc6e23e01cfb958e7094be2e7ac1550683ea22ed8d44fab50590f74cb73e74d6e7c961e167e5b782aa0e566162f98c29d434f389baaf3411b563f0a64bd31f3fa73f969ef90a3eb38385860207c49e8e90bcaa777e98c4c7e70a1a5356749b68b2f456a236ddc07ef21742c2f24f7cc20dafc3a40fb085b9837856f1fbcd8106bc4fe23fc0dab4e1c748f578f2523f63f93937d5a84947f878f89bd53018e6bfb17e098909fc051fd39fad2806fb8ead6f4f68e589e60b533900d25c5a450368c6c12b82b091ba3cd388df92b35f643cb9bf0a536e9b063086ef1b65d8566980fe3f945655b56abc885291be1092d2947659baf4a11457185c147bff686408a677de16817a55bc0867e1ca062a8041a5b8ef38787f947393ec1556253cfbb1edacb3302622e3ea27d12d1e97ae6b625f772a37a45621fbcc4af54d311c5740010abe1d948dacb25790c4e0eaa33f4847d6839945a8e256adc0004401bcec50a8ea35146aee0bb5485fb6d9e4c9b6359c663adba7ff1a8fd83bfe79e35944f823c6b0491118d28a275095201a05b7857ff93caf0cce16515a0902f1723d40d572b411e27e6e4ebcf6b0015d0f828724d00039c8601a1101dddf2aa08d25270cdee418d34ece220bcac12b0fbae169fb70b2bb99854814001c461a0ad78f2b415ae15bdf2ff201ad969621c632883d46edb2cb2b56390fd55df1f7fb7ffc62e30ffe261b4c53c759d223e13ea551a1049b4b152b0e1b8c6494d7c438664c84f8b2443e1c25680a48a2be6d803b23836c6f030224e2d0e8d6f60f54447ad0359f76aa05657b2f87339c07ce51044ed0553227206096e0b6a523b35519187086f678fbfb6b3ffa9405b4275c3b41f1ddb6e0975db89db8be5e9cbf076f87005f07dadb41b717afe1ed50a1d70dde0ecac3798244a0b932619796309b87b55856e09c6c67828e0d389931e9c85fc9ba5ac7cebd14d87253800fad0d6d0f068de171d56419e90807750ad8ba2f1665dc47d63a3d805ccd28d65526935dfd3ee555a06baf166afb6a658a693aeefe2e3d039d2866c8646e464f7acfa0e584c6247f42b1ffdecde4586f0e8c7693ac959b87b4db6ee9d406f5aee79cf3d6de30e9a10d8eb4913cd1da3c725ea91cfdcd4109e984029b3295ba82451eb48682a514259ea6101f7550b0771936da180254339ce75d27cf890da0f1eedc5fc00613e6a3ccf8ec3463b8dcc41df625151c0d9b3498db5386a37f6382a591ab4ed10790f8db20f6efeb7ce36bd30ef8af77dd8d07666ed3c7d2dc86daed4885373b6aeabe8e9076d5110e6e3ab27518b8de22b3f01c255881315c74d415864494621c1dd8ec4b1a58cda7d72b8991e7243db506a0c231fb34962720fb69442520fff89a44c31d8605e3cda0a2235c4c817f4abbc1939f1ce3bc95e43a2eb944d51d3e14e0c1564e2d6a37b6653ae5290b6d5215644ac6eb388b5e80038a4fe6059ab601f7be605b42ebd5dc2e43730abafc534e6320eb7f1ed09104ba40df1e6a3f614e9d242023d4fa6b8c66567ac4f1f0568781753b09d648333898e5c15602126e975fa82f846b026f7cb69ccd9beee6624a72ce43f0a54a74c6b8e92386dfcdb52e3ac58392f94d59195d7103f8893d1710c997aae826a802f8726a321c536962756d5ef1a09b97cb645e632393f10b431d3efce9ecafa65623bf0415b74eb4db5cf4be8fd066e17f124c1946c931b96249e10147362f4111c223039f46641acaa609e7a1a5193e1df21536950cae1f69ab1875a48aa8b3547c954345bddfa941927878e6c9ea8f695561e2a06083810f5a4d5133e64660d1099ec9914b216e2b232546280d2592f45f23d55280d26b4d8aed960a38a850ebf29b34958697e25ef941007f0cddf6493d617acc4fae3d17e7ac62290360416704c02ebf00d958cd201bd7aaa58c0a80f81c213300d0a344d0c01b2c01491a2c41ce81a965c405649104e159ba795fe4dfc8176a6868f8d270ad41e32ae9d3ef92d87ab3f42e69f3eb12f8720b1bbce2b8d188534a1f1fdcc1d162184fb6a0457af4196865865d6a96221dc8312a849a9680b41936784ee218c8551f48d0d501f8446da0925106525ac4d0a4369cb59edd17b746ca9ab165727aa44c08d2f3a222b5c033fef9908775b0f8c5ead555c52c91227acb02d6dbc327a6ae5b8b8945cbba262509c018f1ad32128f27ec2bdea50b8d59057db131a351005af322ef5630dec7feb35dd92b6230e1cf285e589650b065065d61785544a5032a483b656808358177f87fbefa0c97a909479ffdbcdb3f315483a812863eff1eb1e337cf961d5e9ea4158684cd872f482a4896463231aa61cc5cd988a4440bed357249e221ff6551f1173a5bc2c8b0360c3d9cb20fe48bad1f81b0b91dbc04ce1794e2a824cfec63d245b1a00906ced5d6a49801c300673716290687335f1c8bdb1b7db1b2f3094a3f13d1315da96ec265401f365951c34486c0e0420144ab84fa31489ae07ee5b192dec0ec0b908086b1859fe8d2514fea7953e394cf680aaedee9c5186afa29dcbbfe1b0529b57cfdcc2f20cf423fad32d100de6f7b0af408070e348931967e020b2f97557c07e4adc0bae2bb1b9e4bed523f7d8e8cad96db2793bf07af0a2e96efa667d21e86e8e59ff1d77cf7e862faf253814ca9274a1a3ef3a3f319e7689f1998f979e7a24fae829567674cec57d034112c69221272a52976a291866b557c5abf6166d61b1347fb4a12e5d16e1a42fdd36305b8ae92398df08db22066b2e67ad2359c9d4f8a34924cf0dc73610191202634f5b9048cefc33a158c834d6b84e21505a5bf7476abd011dfa745ff5c182d951084c26eca8df47227a2eebbdee5522feb3e0da1e45997f004c2837c18bc5e85cfa0cf014280869131b64d56ba1d12ad81c9820bfe841a2b3c05004f084485c3251832e09c13428d9044541a40ebe21c409c40cdf069c798c363eee0f09649fe6069fb2a539628fd23f005bc902a2fe12882cc1f7bce6a8a8fa48c94a19c280de9c02166c4ab0da7cb4b5458ab1a2ee0842d00bbb388434156787c6ada28c0982ca3834d3c11dce6190c057d476c0496f535f42037d80813125959177347524dcab00e07a2d3e8cbc08e73aa5fcbdce01bc2cf36b07aad95364e2be3ae9debd627e90a874868b7b68f643d81e7ef274dab7d6f8ca7e27bb8edb23df63720ec3194b2e63a1e739a4047f0275b9900e0ffc29d002ac200a2186b04004d01548d0156b1e99236ef0844d356bde15036541697870099488fc95960a8a43bd9300b581b9001622f8ab72855045ad515226da5c8e38042a73ca785658fb48c6baa452229395de82d2508c5a1849ebd93287f31892111077a463c70b23aecaa476a82c140b6865265011fb62d81fa2e985a32cb586a81fa06e2abc557171f062c629d9662103eebe6f15066e5403a06ed2ebfe6d1c9d65211e2c965abe2e327bf5c853228396425a0a1846f265d7d957d098166bcef0f8deb01419206b01d3dd525abbad6fe91c99012094319501b572b5a791fa0e6e91ea83978080eaed960dc801429a0418d557370c4cab56abb2eb5c8edec3832a6c04a04fe9e5e7ac947dc60130629b070efd7500229bd63d3fee96ee6a310a1947fc4ad5d986d2bd8f8b9bdf1c344e800806d0dcb3a42640b338b9e7eb247b245936d2ff201952d4bdb2b00f03dcaef873c2429307d9afc060092341d4e0500a62ced4fdf692c818783766d1ed07ff0ec0e5100c3a539c3b245c3f97c111b67c9dc612c2ba33b97f186c0cbf36777dff7a29b0be2fbd536e87358a5e6d19cda0e922b3df8513f33ab07cc32d7ce36e75a9120fcbd07a3e648871584de1848cb90d0253183f099035704bf828f2ed3f8de91917126e70cd17e70b51a294ea43585cafd264f6b91c0554d336d291ffa721e5fdb1e74eafb2f0b5f65920545fbb140ea2e1644188605a1c3131f0d5991eb78c32c5dd771bd13848ecc9eebaadfd6e0b86c18a547ec5def8d1d886f501d8b52df9d3eb600bf1712b2f9fec67764df01ee64c9269470055d2774810786d54e4ed1673d5889d6cff337905bed16bf71b41a0a4179437ef894f150f8567856136fef9bf60c4ea2eae474fe3d9c9f30b6eda4cf33c3f5cee3b35389920cc85eb64dbb5805e7b92964d4c075ad689f51b92e5d04e7f58fcddeece2908b3332f20e51d9150edca38f57326615d7ade834df7862e2bba38b63f6b1bda07c75b3c9d09edc2e9789d35825bfe01b612d6e231ab9661a0e770bf5db84d6de420071753a9fb32e1aef4224ed5963e2ec72655d76a8eb62414e86f86f36d3693f863dc9f63befa693a71be21b489924c5b59c38f7d629e91ba9a9bf2e2a79f2181f5d9f2f0b83b7301830046587ac741fc954e1c0b9c68d266c81bae3a835f78baef27d7b9215e71dd4630505e01fb3c787318dcd01dda7b046a7b540f7cd428fcd2c8952b4afcc6a5d94b47d63f6f67e505925ab5522e4e961557285c91386324aa9c9d30c3cc425cf2fcef335edc14cc5116041bd27e8744530d337be95dee3729e69ad33b8d775dc39d41a160066c9b9d775d67769ee16a65a6a324d73d3d4c72a5dd8d4f3e117c0e942a5ef03429247aab43a3da64ac48a194e71058450d854c58440c4e282904199360a0839340d111bc7f65a715ada940beed2d3ec05c705140ef88eb87acbe2d3e78e6db11269af4b01910c3cb2f3e060f46409f825faa8c0b8868d42fc1e8050bce59732e027ce5b673b7bc72e6ffc1adaa04d485ff6e5983f2e28fb0d2241452061fd578391699d170387325d0e7c9abf1fd573c09199eba451ea34ebf1a51b4582280a639232f39c10011034db107e6b888b4852dce2c57ad20105354b36de3726ef83cb846d8ff1a30dc8b7b249722363f0f69b3d1d27e9ab42765824bba1941527cb328cca150d6258cdc56bf89a38940346373d41d5d239e8a558709ed33b7e2c1a6b5990345620ef62336eab38eb1f0c08d6ebd0d8786cb3ae776dce07ace71378d8d92564625a7f3fa325276dba33c8726c4ee4424d1f8deca767ccee31e04c774a1e07953c2d6903767999b7fb5aec08f1425eefa5deecb422ed04ae262a01a80b5d9fd2eb3cc5a9336ab699b0fee759565591dc07629a3f36ca9c7023e5051c198fe4087e878e98d7ed48d9e6ece06190af1b8c904599258976876eadc31108e2727533d381284c1da266f3681e0f684a0491254c001df1496e5ac79ed929c27525e86cf374d3501540018063c75dd6e1373a13c47a6bd708b21cd52126b3003217d64fabb9ea8b5a5fd5b704251cbdafa81cc8b9cf2ef0312d028513d745acfad900d9e991bd5749de2e061ceae51a440eb45fb078dead83a3ccf6a1134cf23a1548327c35dd15fb8ed06253194e2bc707c07473c1c182cc8ee03d6e88c59045c8ea6830642b5cce796124f057b2a5323071bed4d2b183f4d421ab46a2a79aac81a9476bd429ae51957a8d1a9d11850a2b5fbc06d6a9474d8458f09f8f6a1b9a0b060ab461aafb780b721e1a57c6e8f9850605dde00b9b219d1597fea213104e81e356a04d2c58695ef81048e0d6282cbb3c287a3d991dfb43b9916ae89e2e140fbeb022301b52f9a7706bcd7082143c54d28a604aaa432e5d790aaabb9c46fdf0bf4f61aec7205b7613c0f5a18c98662939178250c916e6f23769cf540e77eef413609d7a349e84a3ee4864c49abf42922530749953bb05263e8b6e02535938812d9b2c068992553bcfac2a1dd381a5960e5363566d1015667c6a2da21ce977e3611b14d40d6304f550e58da9285a21d0d299fe6d7760203fe50b948153a32487eb254177902fab564687cf1fd9f21414c87cabac12783e617d7ef9cce935c58469425cb2ff06d67b4f37254949873b1c8f92233ee33c0513ae8c6fe045eb8819614d38b341d98129077cc139a948d08c046b49debb35654479dd5115c92c7941a0156d1779d1f415d17fbce192454572bc03af326cc0f83bbfd90276a31eb6fc0459e081ebdb2b40579bea7ca295d66d77188dc216e93f593961d3760f0b9655dd8405d36249165894b544d86f22052d49f49ca2e80f70e98c336ce5de89bbdcd6804f26074666852e2e4255532e812973fd5d18d06ed49bb242e5f42d2a49cfd6a4e6f658e2667628a33892faa19a052e8394d8320dfba2fadbaa24680d6fb1f455cfd23a581708cb5bcf3b1aadd8add7a7ed10e6255eedbdbc38a2108c10e6d3021b49edd21acde1dab0c1b3d3299296b86a613267466024c929371b5481112c6303e48c6cbcf182f6aff10ba377d11ab5a6c7b67d3e04ab01aaa06d3b775d43397db04e9d6a5174542d0ca181d86b5bf5d7391c540d2314f550ed8ca9684a23b0214efeed4b622ef76ca3e89ea0a1dc3ddca1f08095851661a3038710956ae20a523140689eba285ef55693f3f603901c399de7cd047c0f9e5e1129703177a7a380bb674a0408765c7601029436b68707d072e9da25147d2cd9611c812b9537931dc1b09d01252f2afe2b218372c10ea5c609dee5315bb822a1740701c982011a0e9f6177ff5227b587d93be2a1c590b88f283dcbec4ece1a05ab4be119b2f4038d0d07e5f8e3efb6c9b8bb60f6a98f83ad6ff12c4295777d6a4d0503b3fdcbc8d4957918c410384a20805495c82347f1422318c78461ab0ab39bc172f1540d42b9058222a715326db59889b21dc23f7021c6911af2854725d36d5f57e0f0dae4022d7c7ef50f096a846c8b49ccd4dba5d1c53d12c4b8d8626fffc16f8e998e4107a646c710b372c27e760c31f9ca4d565e8f7b0393db5d68f4e0a2b446bf1d9007e523b7b95a0ca22b0566ff507e96647245ffcc400337b3272d7b8cc3710016115819238461e8a4f645692a758f06b5a2982de975de792a5d5f0d24948e95def79228c3cc3806c6fe621f31e4049e6ddf0ec8d1eb57e437ab139f0afab73c92f2eace746eb0d3a2cfe86ba6e8fa991c7888065f71ba10db1fa93f28982b45ea9c8254e04e274b6899eac941469051bb015ef8fe947e616343a7ba320610b42564449fe3685a3b5a233a6d4ae3a8bb2a5cbed7cbceb7aa831094c0f2d610e3c1ff4fd6f262181fb93df75b623c752d3d988aeebaf7d34365011ad2070595ef3d285f6d29f96597e8fe92bc211bbeb72b38c9a3a6611d7322ddcc1a5dcca0f3a96841e8335a1775900e507154197c5c379e97208aef11a42a18775864418b5e85b0f5bb902dc4d2e0549123d97acc2ef250f7688f69e500d55b0f865c42f5a25c3f6a7c27e5b07e074a6cc8a1088910b8459a5ad81ff461f2677a08c9d469a1912e83d99c1f2e118feb9e6fcc8a87ee9bf0feb21a9694ea7f4a904a9abe569d9250901b3dfbad14fbafb0ff002e026b99de526afaad71037cd0cc125b57785d3a053a4643bbcbde9d8ce68703858961aaa14d00286d42e140149f5c76220a275a564b14ce4768260a01b02ded95c8a2a09f52addd17cd416a2016afd18c8daa25e20caf2a3da31c79d534fcfcad1538e3e3175f304a28abcb651cc7f484eb3b0f9515eda15cfdc68de34eeb58f1909d2ac1bdb107b68237ac128e6b1c17a7a4cbd53488cce15071016273fcf30ecd4b5a4b37257ec9d5380e4e64deb06ffd32b901a580ee9ae68a14bb1778d5f9e1f82e1e8a98157afc24d7394610545aff0c91ddffde4b60401e871c4df115f137a86010c22093d8429f34322ced579f8e30ab8ad70987a4b541760233c65c4ceaec1506f2588a44297ef152efbdb17c1f6c89eefa9bbea10531ccb3d08fdf6be1f2cb2dbea184ec4eafdfbe36508218e8186e4bb7c67b057a6c21122709e8523781451ef2ced8e191139340159501db527549c5ca74709b5ba5c052ac6ed8ae15f1e8bccf561f87919a131441079bb16ef4b1408efb556054032dbdfacbfec76cfc901d6213d9829b0660d5065b870fc3450d986fd8dfd18b864f60d6c13988c356a9053106cc2a70fefc5cdeeb22e22aa5d4420f64e775330f444207a064e3fae1860a7a344bd67c9b452f694ad2a86e3c1421b0e02042ce17f3b935b95ec4c3f1807fd6a6099b36c6421cc27d78439d94b685a4b9045244b728d1531b841de06b32e95e1a0bbd44998a3407a3a753c02d82d92b3f6b87dc9622009a4eb78417c51a32d5f1b6c03ef427ac3aacd489bdc9b5186360f1a0979658d03a822cba0d202d2a9b8a95f7e81f2bc49d39d8398eb188a13140d180c18bf265ea6047d624362a769d112b551743ca4945af063f77558a80e0137650c3f4c1cb6865c61b08c400f97eb167bdfe167fd367505b9dbfdbcdec50b2867b4fe0ceca5c88220d3598f5d3beba019312e4e5c4cd9607ca70dc50b2a2b989df3d1643de971a50b9ef68d25f91bd3bf6385cf1ac2a590b422836c29b9b8df56ad09ef40897be577387dbba272eba799e571d36d6851588c6d9217439a0aad37b8a00a100535c9d1b568ce5e992d6d61cf7de06b11bad0ce95a88aee353ece5f9b9ed57b6b83a11bfbd2718e3ca577aac57b3201502aa72ce229d66de17d62bd7831a4b53f5062e1eb2dfdbd4b3553eba61bdea598e956faec13addbe5bf5db89d885379343a78346fffee980ebaf4401f93608bdd7b938a3af24c854bf03ad56d77443bc74e8d817a2298b478dbea1ec8bdec7231a5058e5b451faa952ae650d092aff3a298565326125188e2fa62aac7915ae713f26659c22ec52a80a4a4bc5ba558a997ac64f87d8d010fdc45fa390c682ae731e552806cbcae05cf49d1fa4da2da3c28ec23625fbb04df1bfd27d887f0cbb3d3ebf6ff83b18535c4a41c3c771dfb4058709917f7738482c7989bcff08b6fafff6d3ece3bdb544113cd715f56aebadbb80155980e91d8f39e26d70c855f6178c384fe4042bcef07ab00f4f5561ba0e64ed810d8d4aa74dae60c7b26ac163938288d54c9a586b7f14eb9e7ab1064065acb376de013e48cedc2c098babf7664b71209f50caaa38c1a2b5f9188edfdcc13181b61463d35e9505024cac018af5943253901a911b32baeee0aed2b401110502110001fa6707052bf9b120438daec3424e695ea7260082e8b7c8681ca759000000008009000f7a5774530d388d9e03926822a13225b08f94de1262b9b2376dda29a594023903070302031cd7751ed7791ee71ecf877b3e9fdebf0fec1f08824061180a8d909088624989893d8d909078b67ab19225b5d71975df53756194ea43e86a258db7fa5bbd256dd2b7c05a043a1cfb36a461eb48d3479a9e6dcd69681e16f2b1d7469abe77e7b9d75e253a3ce49e2cec5bfc6a00bb304acaf6f8d65f998b31ab05d7642fdf5e584571ce5ab4b6b5b6cdbdf1968d23bb8deb5a3ceef9e4cf075ffbf1b827e569f9f40e6610c4d7829ffeb13e90b780203204878076bef5612c0c8db87c4b32e4cadc9820ac964dcc3d6345ee8d9b2a724d1c4552568d90d6eba6666553d6c5be58d39eb605eb72f1ebf21a59d5f996b7d85feb0c11679c694d6b7be3b8ceebb8e7e3f9f4cf07824050080a8d843c92111291a4c4a4c41b453164f096933822802479cbf65432066f3989788db09223de62bf0ccfff4c92f85a727b46dbe36fcdab83f1fd061cec1147e754619c30850b37ddebf1c58ab5b31ac2b55a620585062bd847f914274ca0e84bf42a7aaad36491c1c99f7001c28c15293db38507194dc941a6e18003132a3acde9a27f45696234cd861d1ae08d476aefbd9de8332d0ccc2cf6f066e68898ed87397b9ee67db2287a8fcaf724006d6ffb5b602d8ea2ab17acc17e36f7874f1324d3e0601a1d94268a2c345837cae81d3ceebd18cfb4f2bda21b65b8d90a3bb3852ebfb871907939e79c653426cd089aa6ed3dc342676c2069ce2c4737c6f0cda2445b0bb7f7a9273142e2f7d91bfab7f67b3dfc41216bb5d65a5fbb4ffdd40c48576f0f558f1b3c76f20673efc5b847e660c8b24c6bdbda7bef8deb91f2d3470ba2577a6c501f3e64cfeafacab3ea03c6a38bef03878f1b271fcfe3f1783e1f74c645fcfce8c613e5f15a8207122ea474316759db5edb58f0483df6680f98af695dd44cace81c0ca3aa47900d7abca4e8deafa88f12a67b7e457daca2e8ddafa88f9bb183befd8afa889dfcc9f72b3af382cee0f8289f929a3c81f258028915780819c2061d9686859b695a0c2e9c578e1c3972e4c8912347a65b5805ad63c0612184c10a22e85083143af4bda1f585f148b9a069adb50e0104ad7390208207115e30c22583020b1787e9821c74f862e68622a898a1062334126d354dd3341a8608b2b5d69aa6699aa643870e4d878e1f2018024120187aeb47225f08f491211008040281402010044110044321b2f320100441100443a4e74120088220088648ee412008822008822008822018223f1e04822008826088ec1e04822008826048029120e923b98fda60421226b0f057d4860cc0d062ccc00452a48b14c61380a8807f4581bcfc915f512037588c3963ce9833e68c3963ce9833e68c3963ce9833e60831bec6d7f8ca17e74cef2ab6a673ce59c619678c33ce37639c71b638678cebd6481871469c1167c41971469c1167c41971469c1107069389c52a6bc4d91ebdda58854d0c834f9915eb3ccff33ccf0852d213ccbf0ae81eabc61bab9de7799ee719410118a563f194e23ad302ae3e65562cb4659aa6699ae6799ee7799e11a4694d2f8cf93a71669aa6699ae6799ee7799e3073c5425b2efb324dd3344dd3beeccbbeeceb65654cd3344dd38cb5cc144edd56abd56ab55a95755bbb77d19f52c69b8edad702b0d3d5c8d7dfd32925e53a80f7eebd056791e87a31d7b07546d6804bcf00ff7b5bb4b189beb9e5357e0d52cb567716db04f9dfeaf1b20c7fa2c89fe4ee4424662246c15edf79db70a581f929932ccc8ade221731fb7c3ddb2d4a9df143f337017db54be69dabc80704994d8978f49bef3da5644f70a3125dd5b21835a2a334f3c35c73bca2a3306aa2da1e5dbdfa5cefbd167baee75ef65e2b2a052a8ffe283fc8216f0002bffef170afe3b6ade9ac8f64c4108d262522c9482804815fff78b8d771dbd67496b512d01d5ac04d6c9f339d6da99fb71ed01f3efcdc43f407cc4ff11361dfd97f36c6f681aeabf57ec6237af6a9b5faf1888eda9b7bea3de5c0aef186eec22b2fec7186f938937089573a58aa4b3f8e79e5777dd42ecf6a80b571593452e7c228d88b30e8282f557e54f65257e5faabe2e1588e698fd44b5c44575fbc01fc827b60995ab1396427765ff6e29cb34c6b6d813aa3fa4c6b4ddb7bd3f6de368eeb368eeb3acfe39de771eef17caaf7c43ebdd6fbaa33aabf3141582d9b2b73cf22f7c64dc58aa435425aac9ad70dab66655dec8b356d59abbf382f60edc538e72cd339d35ad3f6deb4bd6d01214c94ea9c84ea2a518a84f22a514a5c61d38957b26af72e8ade9f4e1b29ae30ca584347955eafd2abf42abd4aafd2abf4fa9b1fb9f00a76edde45d1fbd3893472895218c56e5ffbfa67d954833f67b1c9c4fa9d47995094a9d57994c9c6749a5636ef5f7a39d03188a02ccb321c1579c1c3bc46f6b2aa33adafc57a7bb617a526c8bc013b728d961831e1473737fe4d397923970749a83d72994ed3d969e4f6b5af7f96539ec5e351a69adf3dca636d82a11a10faeb4d31d80340fefa027045a09bce0450269b6f92319dffda6f8ab92aa0df7bff90dc382b80f520594acd0dd34f315da5acd56bc37a2afaf2549e5ba6af4496474fe845fff55975ef0bbbaeebb35801ace741d2ed629c7396e99c69ad697b6fdade368eeb3a8feb3c8f738fe7c33d9f4fefdf07f60f0441a0300c8546484844b1a4c424e46d72c4939078fb6493257bd71944faf62a8cb2f7de5e5c89b6df18c01a0965313a12e9d72b80452a8c72bd025714a554ff7a71550d48d1c02ca657b640cbae99deb0f32b6ac3cbb755fc8ad684f03b18d057ff7598d368401c8988246e55d1519c06c3c1aa019fb79e23520d90e1ade7a8b0079078eb399dab02f2d677255e71d9312af1d67729bcb22386d760b38ca8ae4a0847675e9510af884c46dfb3e8ad1749fb91216c17d18460dfd56eeb3a7c6dd76d1eed35dcaa33ac1fa9e8a8ad3fdec333ef929cefb477c9cd779ecdf33bcdfbc8ed8b482ce4a258ef8d23b2a40391f7632157658f3874d4bef7de6bebd53c20d2476a5f743f0f025dd0fd48fdc9ec9790a4174a5e446e10f991f99bf4d46629f9919ca0d619125450fed17725d24524edf8fce7419e44fa3cc72ba74122ed1f8d48e23d5def23f13721779022d26587277d47facf7b4ffa8e2f503fd9bdfd1f8834225f10bd0c3206e9eb8ceb45e4c628d78f26a4129144428e902e3b3e8f8116461861b08cf8ee23c5b22c7f59967f976519facf8742a1f784a19094923ddf47da0f22b5cf47223faf00fe48fb3b09fbd67feecbb32b5ba22d1c9b206f3beaf4fa2b8c0e711e1623916ebdbd59ccd925bfcf063841307ffb4edb5b7bdadedbc6719db7715cd7791eef3c8f73cf59611565793c7d9527df0abde78549af2a85a12bd7caca58185bc6ecc539dba44fdfbefa4da2bcb9c9ed8b3509685fff2c8b361ffffbc51f22107b00f6d78b2b7125de7c9125d65c152d63cdebb8ed037922d5bf362a4bb813a638e321335486523ca40add0863e2eaeb21527de667f3713484853aa14e4824dcf9a1ce55017d4824a422d409dd08d35087a3a0c8e2e88867a3b284b01016c2b658ec8bf96070a63ff493f956fa637d35df19c2f810bec3517d7e2fdfcb67c217f3bf97ab02facf84ef84efe5abf960be17ad416298e6cfd45a6b8df5799e9ff9999ff9999ff9999f79f90d6fe18cc7f88bc378ca75b8eb33391c5c8ce9e436dc8603c16f3eb7b92aa0e740f020b80d47b90e6f719b4f6badb5e90c3f188ef221fcc553aec35bdc869b78dc4665e1285e29bd4e1cc526ce518e7294a31ce5e8e56e7025ce52eee4549c997230dc0b97e2a80ea26fd26d67dbd9bae06efc6de7aa807eeb62f362dbe15eb872db49d3d016e370702a0e867be1ca6d678b6db1344dd3344d451e6ffd6ba3b2984ed3b9c54e5b2c4dd3344d71aaf516db625b6c8b6db12db6c5ee6ab55aad748d96c159a95d9aa5b58d5e6db1d2ce098eac3c758c8ed130e89aaf350c3a061da36db48c8e31adb272842bd3344dd334d5a70ea259baa56db48c8ed1a73ec5ac9451bdc66d54163d7285b01096a6699aa6699aa6699aea13af64abd5e9d427ce1ad6a73ef5a94f7dea539f9784968a9460383b51956227e549eac4a594ead314c47493555b6948694829a754e497865c15d097724a5094869cb89460a5212357568d44ba3ef599a6699aa6e9165bad56ab55080bb984ca902a74234c439d10c6d132a5965ea5520c9fa44e5c4ab0d290d2eb33f7eedd749a829858a696c9c624638a31c1f08a6519b9464546a92f473b9b448d5ea39b7bba2397b8c22b9665efde45d17bef55167dea33dd625ada4571648b6d3112d73ec399a37ab54b48a8de45ef39cad1acb4f833b310d6bb287a7f3a9521ec3331cafd4c11d7386f5208cba5175ec9e8eda2e8fde914c24aaf951aa834d255a6ca080200028a025318000084c2500e456918524a996b0f14800a3d86486870402c980943831888720c46314408008018400801c6989a19332400f560764d08da75bccf2dbc04ba6d7894636ed6a233fd9790129a1ed154f3045c7246f1780e5faa4efdf615bdea85ed1215040aa1d0f9cccbf3ccc71a09499f5ecf433fda4899b1fd8092d69fd17c34a85727e92360b8ba7a23fe1a7c565a0be00ed34e0ac616f5a933fc75425d4b3ac528d26d53bdde2462469b1ec42f9dce1b609ef8271e1a690678959b279a590b6792e8743679b4dc229fa659c73ae498534df07b0419647c5e91b6e00ad3beb273a7b8d8c6a90399c1630c70f794e9f18b12a174a060e3e156718ba38ff7a33e189a017e17425fdf9eff62ffa6830699092b92682a19762dc90e5b5473062361c4d22b517b10cf273f3e140cfe43077672201e7172b11b5f1747de48d3c89058793fbb20c477560957e3d371534e80eab94700d4ecc136fb70087dfc88a29fa8433c084e5db631a3d0c3caff8042d5c41e9baf6cbc4d672ec2aa09a9d8d340e66f9a16aa2a039aa6f36bba7e04263a09af3e6bfffb38edf83682f416a24d7fc0f6174beb719587f3396954f5617135a3dd23dde1e3a14142782ec24a05be08b557b1c42db10959bb81990d658a31de32460649c8d1b12648f94cfc4296b6c282f6f9405e1ced47d1e1ef7d0777acc3dee4d7b91d7302941841135281aa06d013af2143a6a3d7dc94135931f70a8b427d10b5eda9052543fdc6447869de024b3c1349b3a5cc4839914fa0f252dae9b2b423ddcaeda7e666f5d26bf03b6ed0ac13f9f6685d79b3f70413f9165ff59d8636e454d2289cd5797ef3377dedb7d12d2096a469c9f6a1891371fff9d8f0cd4d5051c36743ca0e68ec260f6cd5fc4e47aad41cbb5cf99a9931c6a6ef2921d89d574ba3e5f7f3c4cd48599cda00f116749c899001670c13202672e3011b4e81409f3f8c4940651a3ef55d903f8a4a1876e48ff84a5319364a944e3b5ad8f01e44d56d473416421caadf768c8a104fc40cb0e37a0637fb64da4af13ab0a7613426daf896b16bc7792e794a454d045afab8712c11765cb681f10d981099d83e461edab18d112748622e0e570ef6c046f2ee405429b54ce30481df55f1efc58e9b5f327c6769ea00992ccdb1e28c1d6bae17759c43d4d494536b1301b6e0b002ebee91a40b335c61adbf2b32e85622836500ab65f0882ea84ce4c392e9db100c25b41f41df48ef612346c463b48e56cb93b16fc163b438ac0dd5f2ad69651f2b6490caef2127b349e3cf769934ad0d35a7a0b8c2a69168f68cd7595fdff688dd4552b67002edbf4b5d19f3c10adde6eef4f035be9c9db889e61271841a58da0abbc429e8db90030c6240218cd12abca318be5d3a2420202eec8e04fb4041bd09b52c7800996fc9dbc9375f223300580e0d877561d92b73cef8e7e0e72de9ecfcaec46f9cb14da2cd44ccaa6afb67790daa24a10106af68469c4cb934e655b20fd398f5954680e7c782308e2781ad45fb359928e3f5131cf66816da7356b50540c2d2de7aa947fee102ed8304fe3829a7904d15e8e729da4f5a4a34c9df1e08b4dec895f6622e4848612f7a9984dc48ac17b447b629f7866b4132897c06cfd3be05122642c25406b61cf6c006f4dd4056326a9b061ad826e8261fb0f0de165116d50ccffdb3a967339558982c6446624b7b1a0955501396b8b955a8bb2121277d5179787514c6d6128ffc4787ec07cf5eb3114a0493041a2b7edb97000955cad9d52c3baf03e97dabafa6767a5e7fec064569fb4f1f998b57f61e63fb6fe2abba6be8858e4a32df0c479930cc1af8a2a337198ea5a8a57cb5fdfff7fb33087d3091f8b0b12100522b1c97dbda8afeb84059d32967d8953917364371c61030d2dd3d83191b406b573e85f90ab30690997a47cac2b5c786864b8746a5d94040561dd58ee1af3303495b03e7d60df4ca1c14022516442de09959e201185768f4b952bcda53b10309b94550729945b96f6b990289b90b383e802e9d9814f8555440695b61a4b0f8b2d0a234c9452b9cd090baf0ec7b8607525c6c612edcba89400daaa70be7de3da24ea068102c840249c91074512d3b1e469eafa54d88ab038050d0bacdaba4cfaf1586015a6547b1a5e2c9a6a16d59303dfcc7853d0cd90fc88055455e8a5997045ab903f466ac22892851da87d32272760f5375c209a6392a1609d11ca7202950f33e4c3e076bdc9151eb14ffdac3e8c959256bdcf730ba6856538d0b1fc6af10351e010291ca184de3d10f235c3256c0ff764000e88e5f0f63f6228454f444aed5c8158792f030da36c8dd70284d22d6cfb0a387690787133e3137842f8731b091257730a57478a7f1ad98cce808095eae0c1fa7f5cf8911626da280cf609987a925809d9d6e1d91b59c867696e590faa237b3181ace682a681c8e182d6a36c2d025226b25d3376922e65dd00452f1c25a9dc23d4382a7e8e506e9fca2fb6e04c11193d0237039c9de6322e632f1b5de1a7aa3a2925fdb33cb47f6273d9877a131c0fc33924d2c134d8c98f7f577f70d4c07a4b3b14c3dbb7481de493274a1710d84c173f43afe1812b7edc781f3c0b6f09c7442c999481e70dabce824370521ceb3cc01b7ffe486d91dcf19eb00c9c1e4812ee7836eab48d15a240185708e90566b5c4049a04b78ad5240b5cfe686d0b0444683fc4b33af3a0d3873fb104626bfd84bce31ae7e46d3f8f0cb1fbfc1e378ce585260c065ab8503c926ceb836cedd02392a4539286c01d569fd97607f994c74c4075efde8693a5fd8682510769aa72e89f7ca1f7df3fda81c6e58c3aa2a0664db18ba4accd516ddefb7b93ea9876128291c812f8a05c7924ddcb7340971388908455d2361aec19647630e5214553b58b2621e66ba5676da0533270bab47a769477cf7a31e3313925a7c3f24015aab5c5425d20f76e11624056a794b96f344a7ced17dc0bcd98e29d08922cd34273d6491d32af513a76701004eb13d6ac0fa98ca92ddbd709196bee85129a9a5511c96ccd846b836dc046562fb1979b0646da030f912e7e61073b00736967706b296507f1a48896c958d7a89978cd50a0453c922c72a58680df54a3d3174d0c789d831599a4bf466c968ee8eddc070af88a44c4741083fc03b62e1a0c1cd550db7579b8032feb693c61323102302266652c86bb29120a4a488ab8741d7ef01aa38c5e9649e96de1a6bc3d13419431df8c32b635f93a54eef3c1d1328a5910fc77b01b5fb13f83278d5e7fe24f41dbc351f6232b3d0c4266367a1afb991ea5825464e2d79df81c93ed14c0833d884f6ea87cc07055f904d5a3099f04c5bb6b25f176abb21e168ebf4a07424816be9703c0e4d5626dc238ff713504ad1d1b6370eb57bfd48caab4943ef8a9456c9a4c0f770e1544aac72d58c00fef9e597af6fd426d90692e105bfc69103355c0fa6009e20f4135c9bee00b12e2e49bb80febb87d478833fb69fc2c0e72e7cc13633eac17cf96ab1581fc22dc275330c681c6d4b8f2346e11c288681b40e1bd2103f59485c9b50dc0adb8352470264535b0f385fccb1b8253fd424210d4f4513e7cfda48f31dce8add14dc2e853af9827823e1d55e8ea750967ce27cd0d79c4c20153bac1d3f109b68d78fb5b17d81a15147288bd201fa1925982ffe7cf0df3ae6e04e2b32c5e9da30fa1f1613da0b4b7289cb64f8f6bb13fc1ced2f2edc70022f5374baa6205f262762020e367ddb799c30d5c2c007df2611f30e26f2c83c273aa986e8539bcd46bb512ed312533250c0d8965cfa2af9fdad10ce6d7499f6000d324b38ffecfcd8651a1c2ca0316c5deef197cd622e95030a016615b6fd5483325c30d76556340404dbfe689c6d1f92dd650a5eec972288881a7dd28153af5f26c00d971b6423951d84196cf232894b3cc9a627657ae6c3066c4fdf063052d10db591e29b6f8d79337a99cc85d112ee996c6b5c120f3d881c902635ec82dc5e660d36383aaead826508a7f611e31c385a9b9799b548501d965186907399886c74d446ce999904548894def43291d2fd2b8252fa28c3d3afc8dd6f44cecc4cec91b89065efc1997999f85a6f0dbd5151c9d7e69cd357d01f3d166f425b02f3cf489fd3d2d18cccccc38d93650377808b7eedabf7dd83384527cf4698886c9eee4c860d13ada21ce13050f4f942652be38984023e980d2ed84ce85c2f5bd1de1ba8b5917c75e5785036d092ce90f3611d37134d0f026c5c23aa59df87f271a002fb0fbca23ed92f64b4fe4d1a51f21a690a7ef8e0cb87f0396663d6296c048b101d32ee6614f0f4c796befbe5945bce96e5e8dd70300036c3ca3718cb7942e8c0123cebd79d6a54b2bd1b25878730aaa36ff8f2e94216391f0307568ec0e78ef2efe43ad32e5866a3ad10a0e38f8f55a1793082ab4dbc120c3091680009746ba6cb861592172d0a05521ec1953609c47309cdb2743c009971e42b3c3f181a60b614096ac80fab810131947a994626038d9839783003bdd7a4614886b95c1568a79432c762590b9cb824067c4ee4ad4d0df67b04fcdf4ab5b795fcff4c64e84d06796f0d78cbe14a60c302477473c37edda912f08c130628a969b11f6d67eb9867eaf4602a54763d04576d1d9be0ac1af23531cae8a00a7505c810acd5b6a9872bbf0abd57766d7038ced4e81d3bd1de2bd08567e5dab3103db3d1270b54eaeab0bea9fb1c833c72905efd926e1e2528bf1a46817000f38cb49d7656323971800e44eb86ffc14670fe213af235206c40c96fe4f77bdad9dd2248b4ad11cda29f660b5e41f4d90635036b82e901ac3d44c740ab6dbbbd380391bbd6e966f42ab0c45db574a20511c1e360ec90c5aa7109429e6d4e878cdbd681b730b6897dbef9a976665458db0cd1cce966b124ba5d39fe9979448ef19e937347b4e8c30c0fc44b2225a44a6177054d91e9beb9a8ef8d08a22e3d83fea6abbba6e7e9da0bb625a74d67a25f90e00c95a3286e9789b03d70e1b53658307903cd1163df15b32e6a1637452a92995acc90bf816af6f555e1e66911890b99f8cd826d633909d0408c8ad63e66549a0cce171f8f2c35df8d48d19077e5b359c1665e3541428eb45a4d5fdd5f606a26fde62838a334d1e54c2b106b52f331e48833346bc3420ddfa26fee397203f9ac15ade4a3d3e8d1fb30e44d85b49ec0af370c4636e0288fe17b6016ea39e9f24025e31990de7e7b8f813d1723d2a01f0fd0777cd3dcbee219b9912fb5361020dac5b888968a9a4880e7baff9491d22add32fa2e8529b7e147f0c736369456e0740662161c547e5d6c204ff8b5b9e2beacca43703158ef158001d647bb93addcfd590df2bd49b5580b6a5c6d0ceae18ee91d456bb77b3c86f1cc11c2a2727ca841599673324efe96f2858028ff8717dc21ee86c33287feed1e4dc48399346408fde48ea4bb6aed574aee2e9aeae45e0eb0c69c6be3f86cd79fdbeaa745f2067d485a62a0cdeaf5941a9ba80c80a9c8b9ce86813200a176c35ced276fd56c6e8610c467b5e22c97ee705ea0154c6f112f75851cf158bcf699c8a7bde6a09d6c4e3ad46e804a795771370dba80ff35474a490005fca5f40f620a802f928a1715f005c7862747b4d09198e40a92454bb772811a66340635d0e1da103e24492cd1eb956170a68bb9363d2d90bdc4e38867bb6843770b469c58c7b05816f1e0280b428e34f1e244d2ce0728b9aabaccfe1ccd26bc866b606ba95a21d89c055cad4250ae73200a3dacb9b555cacee79c111c75a456d34edc3c8a69040a49fd98b7100322601186107d26f64318056182147e41c69f125bf2946727dc934392d8027e476028d223362348d91ff2d283df5ea743d2f0444c1a2655037e3fc4c60ae919c36f87c2c56e3b509be8bb62001ea93c0517c52116b9826a2f8edc2871a8309be8a2e491f5bf16f7bcf8cff48ae46d87ad6ca87473f26878a49377b8ac596b1c71986715d2b528ad6a52d063349a9f2873d543e206cd68b38cc458ae877e464c42bdb26cc4f1ec9395f7fde68403335065ad196ed539cf839798194ab520f1da6ff25fc4f1936fd927002f63b6bc5283b52116277a77120f10b2f47574782cf89c00bf800f95bf11f74558758a0f7efeb0fc8a6de65e2cfc3481932894c42b7791c161613241be030e4cf8c7dd6f32a8bf04022e986ecfaa74ca42f4ba5db51947dae3e1b9b90434750ce28e4760726cdb323d0c39d4ff058bac9fb7d0aa25c8ba3101c4d42c8d7325c8ce150014beb2aa59a2f86cd7b6cb8254b28c42704941a85372b05e01ebea3d2da020978be2de7579a4d3d7de41b0c459344b0e999f0d36aceb800ebb5edea502ca2ac1069a64358a4a006475611b879303415bb861291a7249b4cc1bd13ef4ad93fded4a88e9b8ab1bdb031bb0589a9338ef7f6ae7f45e1ac1f20540e8b1f535dc967c2d853542d4fc99edb68f8ab6fa4e88b1a13b1cf7031c0a6526ec0750d842f321204669e286d078050b3d5ce45baef697407b2d852efde341b937bf251ac41d49872952c16541c1d1ea9de94cb0fcac1156a4a8573ca7a3dc095eb48c72a7f5ecbc908e81c22317dd638e173b6f667fd0d3b732a3abd703ae88975edb3ed04e637b527cbec88158c5be0b00322edd0993b6333f5363dd2dc070a9419b54e7d0ce5aef5ce2a7545ae9118013fc0c7f0b7d321490be6ddd78c44733d7cafa8f288ee6ed694eef2f09fa9bed52fe4285dd65ee7ba2ffae2a2e5cef81d66a1a606041d9cb8401d3b057e3d6c06a928c91d861bbffb3578e1d3b8f398162db9d004928c9b8faa86575c01de5db5012e3c811fff422017e76b1520653b102d038be3366b1d6eecb5518e6830dd0dbefc5d4148ae50d3399cf95d1d8ba315241e2e86a8c583174c241121962d3dfd68b802c80e0fdef81aec6dcc5f9b3ff7db85734e7e5d9d183bf2e429419612c6a84b1009b1dd73ac82270a70502ea9908badb64584155f7a2034b50935d41f55508ff90ebc6cf760b441ccbce24b3703b19855c1e38ca916efa56b65bd1e9038b6d40213622b2dfa5d7cfe3e36780a5ae58abf2cc9364fbea725c6c17b20856cf627a398613e9e5cd105b4e796d35f25133a7fd8c4240e70e968d841b190903ce9d64a72f1c1a1073a0a1ee9d08f3240a7e3857da280e0070b415d29c55c3135c3b752df8cd5c7b58a5330e6a9e023cf593d9329ff0f8cadfed5ad899e260f488980197088fc27c8771c2a77baf83c8d94d82a166bdb9157368f78dfeaa86536d6a6f60ccee8bb7d06406f4208b8196c9bc2b2e2cd950b20473de570354e530d09b1af2e32aa1e360c8c0c14383cd4bed15706be426517cd56402a408bd019746ef25c5d510347cd61b4047dfe021032307ca1cf406d2d63318386c1880431e70326302e9f40c1c3a6008a0a0187863ec5692589d8bc63c3c6470c0b00d5a07b2d272441eed19a42580290e64d71b230e39828db6e43eeba27555ebca8be5bb2c1a3fa2564a0a7cfece31fe06c432d1c59d97c8ef14ac13511cddffc249af8bb1d94e2b1c839ed3301e5febe1edbd74dca02628066b52703b6da11ebf995adbfffe592682e9fd91e2dde4eeb8a6336e7cb35981c33e3111e39dcfe0ce010eb4998a2111f2245d5bb92502f929e6c1019ab1f8caacd035ffc7081a8464cd747db2ad3c41cc2fc3a831cd06ecf5ea56b874b26a5c74e901cccaa2f460f91711f088f95b3b62a192c152870fb5a10e08a85d7b90af4365816b1939c3a9f1a1d8e62ba2b33b00d25703e96319c6569af1305d15e8f653d12d7f6cdee0bd2e6b08788e8b98a8f50f4040a27a438cce3da5da994302d456c79edae95ca080360f59ed62f9c46c6975cafeb2acb5afe35424422b05b9a9dde4ca712573cef0665381c37e2211c4bff8a73a7b884d45c5ca5e3c25af0494d07236c7b75f225d89e51446ad5b39fe4c01f5638664c5549746b1d72f4f2fc13bf3630617e31c586e9cf49a0d3527ef4dac519a3989e3c44072878416ec91082f06242a281065bec0303a0114bc6c35a83763490f3230f105e9ec30156c1f86ac4d7abe911a2ca2290c487d4b59c0771286e5100df0994275c52480909a73c3d8402e0a6020a2736adfd2791e004fe734b7b7ea47ff9e229a79cf2a8b596d0e1b62460d261258d2658f479c8e2f165d8538d66cfcce384e25e30d0aa0086a36fa6e9c476708c1a0329171e7713a81110254139d2b8f87da433aae78cf5cf24326daf22a7b21412cd12c041f30f01b0f3032e5fd51d84973b1473b3a857a13114b03ff9a18a6c1648add6ece2dfd770e49eb314cac45d74bdfed6d3e17a58a5372517f261076f94f7d6d902eafffcd520f3196c3f8ce38bfe250652435804f42a8b609ab4a033961cbc7f3947fbc2ed8629cad48c2316b92f8109384c7599971b4425a1ceacde73864c4622a4637b0c4f1a3b3373f5bfe32a2b08e2dbc820acd442edc4953c8121ef629142604502b8240ade94efb6a0e9134aab588c3cae1786128fd21e63257e85239bac8b8439b3a6f1f29560124e3eb1b46df36503172a50db35a0e9c8a3b26152f61beb85647a4d118b5622b361576afe930066f6181448dd4e129df204e128824d3a7c1fb3f3463290f3195070c710e4ec34b1deeae7dbd91745621296d37f2b65c036be7e40b51f7252caa6c4b39bf0545415a89df8d9737b91d8fc890cb367435cd3afd5a9e22652c87d9d7bc1f42f9fe175a8e079e1efa4259e0cc447ac3b712c7f99294cdceb63e2aea50beb196aee3a289d29b88633eaf427dda1241b92887a0ac76202887cf07caf4a5c4d1c503d169481ca9a7b77ba92773b253cf4c25412777bd804e8b4c456a15651585a7bcba7af1b48779e9fadc2ac7d63dc006f28e901fd4323ca894496cddcd07cf302d90aa7dc8ae360cea52f2cb9e58a73904868982fed60cec9125c2fd3013ae9e9133636ff9727a630c93e5eb5dafc2dbd1c24dd24bd5d3a1ab52dcb82a6eaca72889b9d2464d501deb205b897838cbb01535f96ff4eeb28fb4566ff0315a925b5ebe0cfe4195d624438faf9c74f2ee1ddde4f5e72a1a7ae2d1e17ce09146e3c12d86a4d36e9085cce8e4fae364e420e1c23e05561b5effdcb241916ed9d916b757f887f1fbe332c63aa178d6315cfe4406e2a36c4d5cb231d4216f0d5615074710ad890bcf7fd658955699a4defff176e8a911306958c714880a2b1c12eda17fd0656adde7b2142073112674344e5145a85c3700239613cdd78bd003f5b76ad423c524cb484dcb9910bbd370f6f6ea3432438f184f8268e8bdbb9d296886a1891b6a5d1ca75564fe9d45fb01b8c7ac2e5a4b181b5da828c26fa70894c0072a19f624276b678d7478e2b6998ba66d2b4854cd78bb68f52682445a1714acb46a661365e6f114641b1196ac9bf6a9ba69ad7f0a40c589d5fb86f3d9083010d198f5121ddc603ac895ee55f40a4d45663579e109290b32062078a2b9ac9969b8b8fcc3f7a2019fba356b51c8f87925853a2ac5062863e2561710bfd87040b9d221da8ef28bc4859b4e448c82b6d9894c3aa0e779808e375c8b2757cec5990b7dd6ec38569ee72e703a34f449df03a6d093519b52c8be2f2ac64acdefa7b7ad8a560035713422ac5e13b48b1f42cf7ead742bd56bd31f3dcab4c9d3cce6795b5ce57298439882ea9ff748a58d7423922f1922eae4fae54206494cbb8bbc1486d31b0acc679b6ca17619c0df84a16eba6cc5826690d32d60e24418608141d50da90898a0f6d9258add46dc68de766f166efda646127c9b9eedba159a6c75765d712618d0c471d7a5c0e4e766cbe25cf78b08c2f1d2fce80e0849e8aba091eb7207e2bfc5e65ed6d5dd4dbf3927c848a59d07c7389b87d4e4e401928d9040b81abee0b644937f8674d5727636c58962d172646cfc9fa374017e6b03d0436ffb737e20e7b047bf785526dfb7c349356a83cedb332ea71af8006f78f76e61d4ce68f39207c85471cf434b6a60079b1671d1cfed57337cabffe226308a2cf592ddd67e81ec90b06b0b88425cc4c53dc4bfdd846bc27916f00113398f4908f8f766d0822166c404857e970d1e66e561ae74d640efafc56dc441870a3fa8d3e66919051a65e987f20384fea7e62bed75c0a17bb1030e3d94f927a7d00096440f3ecdba0a3e302718cadf8beef9273987ce68b8789278d8f519807d99e1d089b57fdba7a3d06f022d51eca7e0a50aff20c072c5fa11e4ce0a544eb604397541383ec3db6c169b3175deb8f5cfd97e5d8b7f0bb67ca1df045ab6e827819628f8b38065457f10748942bf045caec82f221807669ad8035c4524c46d31c1f8f3f0daf5003fa22eb065e3fe33c6cee2aaea0eece046012ecb07f6cdc2ea0f2a2e9e16f43b76211f20a2aebfc9d8297f900f20e62559118edd376d5a19eaf9ceb8180ca20026d3ffe5142cc1b46b216253f4547899d8444c378422552694270d3b3bb504562b2db0fe9f7bc709b226be9ec2fd8037003d00741b87dc613e22a82770adc144c0b2e0c9eca27fcc60662c36c822c45e4e6a653a16bdabca68c32231baa4531eb826179dd2c054cab7a7d15a9f3fff45a644333d8a78ce3ef55fe049e0344a5954533a35edf1cbf11c733c8675129efaab4a1bdfd1240eca3661377d7bfcef0e3d10a94f88ce6b9ad5f27f91f9e383ffcd71fb9075d90d9f281ec3ccd4e4bbf20522c40e376ebe02092a8aef1a646d30e8763c6bef40768375705099823dd61625dc183ff0623dda9b1a478ea5b12924bab90bda0a792873542fd8e5889c44d214867e23146b041c136be84011f7981469fd9dc5d71d7c81f24e8c57331d6e497882ed167284e6efaade9ecac2a30c2e07b31a22ccb1611d8359442b1d39dd69510f6a5c22bbbe6c8763a309992aad1539f8a7ccf00cdad0d30dc48f1be52d9337aa7295ca684eac210419bb4f04de364e7be10c43dce9eb43589d2a70642826244a10c7a81bfc1100e24b4457da7bd3267e0e20979e11aec8290b42338862b42f926db644d54c935af14c5b619d44e97c65bc5b93dcec06a124bebd9ef377204bd52d71228bd09d18d76c6f85b817a9af18e897d3ef196becd92493b26a2719a85ac9f9bd1f3aae8f70186bc000a7ec0a42f3b60a3b5658396b1a8132fb9f3aab7bd65a0c03bec5da5368943269a18e1276a4aa270696a2561b417a4c63d66e11d8395603834a85d3912d635441b00e6b6a25509e7e44159125d70d892ae35bcc53ad4d86a1b08523df2ae6ede86eb49561a7368c0ca5ccf9867995ede4e398ef7411a7a9268ef7002762ae52011183d6ea846fc7e4bc9ee35e635cf35b3f94541e9959fc3817b230872ac2a033df1b77b5f4b0da3703698bed4c442394b8940679b16ee46075108ceb49f26463e8f5680763744c7c8abb7f4eec9658dcce6aba2d1cc2556f0baf92bf72362e76be89a856081e32d654e231289c0d972d8c1f5ac708f793c092c67cedebd10c4f90c8fc083bedcd1d56121038e70e5358115e23eb553ee4e1c2b9c330f4a6c426ada362199b5717fb0ccc0e3adfa02e3e2512e2b76fdc7187e10c18afa50982d07ed625bea1dd4f2ce8d73ac374c1c43891803b4bbd1f90a14363e5065d71ee70bec90b298ebecbf14e5428e64aed7c3e8b0b244c4049de5c58c146e3270761adde682d9b3302b7986b7128027ec4b1cb0ff13d236e31118539b3b180a04931ce0198ec4c8cf5e68d168adcff182a7c1ec26c1a367d54a74f409f64a174882ef6a97df10a456e194e713b3c87539868d78c3e637d6541e97ccc6e992eaf7308a95fa42613abc01f6ff0f2e7ae466354ccff0cf83696ad6058fc42387ae18090c68b088201725ecf9d37ac203def2b16f02787ff6d6043d78123978258c802ac5a793702d5267ab1d5cacea1eb4a292eaba8435a293bc1d5aa0b8205aed4ea17c4d20f20554e529a3faf38e64e1c5898526966b9c82dc802e87e6feff50700cd1f0f380a0bb0ef6936506eb1881ff79e04c675c77c00719866383aa5ca0a39b955193f28e66a2a5271c727c347e47ec78a8692f1ea8ecdd98add1491e119f834997c146696eae6cc5bf7e86de707aa3bd8ad0610a0f87d9d4585f91f7e452f9c9427eac2d4042ed97eb5e3187fdd0535612d05e7588fc6a8d87f171e7a6109442e4b04975ba5e28544c95ec729e31a565b83c6784c9e3527527822f8f20148df83f42607d7e64c0bedf80a707318849535ac1e538139f20f01248dcde3e3b1ade6b025b17c5f470822828bfcaf5f41ddb07daf662933cf0b07b1b7bdf86ee26a436da273e6d53a585d60a6a7d0bcdbf692c0a7c914de6ecd69634e362b47746f56c618e527cb390ea2b0d2b4f80b7c50c83a1c1b69c9675c22cef2b6d412dc41581147eea53940b3511c6c15db0f881d74efc1a03f5bdc49e4bc63f9b6a07ece523c730f2062ced0fe9106a979a82378e47f4bb47ea3bdbd255273048f436b122e43e603607c406c3d2cbcf1b73bc3f4d26154a2ca17baf8dd9ec34fce7cef0a47a60a0bb9c9a466335860a8dcea0ca00dcaa3b792594416f58844d22227feb20046e47593853307fa3580c311277ab8a4fb1dec67748cd1a68e1b3c85f5e2ee92886bf7e302bf1501072a03cee84aa96d8c50fac1bba864303d427e27d236014c1006279e1c95b32283891d62ad5d970f4c340f8684bddc10b0f203584335bdffc730a16ad20fb9146e46ad9a01ea6fa356935e2b14a3565639c4fcad5e6f9eaaa04c4550a1ab09fca567131875c0dbff6c6e12bab23967ad0fdd74bd57acc0e2e60d330308503407fa9299003941514d42a823ee87d9489aa1a67aaef75b69e8c9271713daa35b41f0fcb1aeb2a73d217aeb757fb18cfa5182a8e1bc0666e7c20f49635f00a41cc5c50fef3e7b558112ccb7144f28980d51823a4c6960721de2e8d9099929393aa719184ff6c54a79cef4fb58b0766c4af635b90e7b2e1c8b172629324541cfad1063077a496e6b2c63831ac8f6dca69143492ae086c54f8a19328e94777e9e022c3293c2203c94b0f70f7b98263a269296712c2ce2b6cea468164d6085a796566a7c45d551e1fb84fe3a158832c692df89d862b64f9120aea42f3ce37c426fb7ff02ab9762b72687d97283c1b6c4be0bfc2eeadfb5b7b6f5be28e41cb3362f9a3f89f9881c35ff2850abe5d3565c3a5781e3fb41ddaa3fbcc7448e7d8e099246852888026d1f262d3507620286122a4ed4fd19a9e9a011669b6594902ba84ed5322c3c741c41892c8f821096374ddf0c548d80792f7a12be15fc006340751672eec44945a5755bdab8ac41e27db5b40e216d5b34baeaf056f686f637ce6d2013c876723c897676daf57cb8786657844a636446daf89acb63517ac85c5ee13958adc741a84d39b3fd19b13a7472db1b3c40d95d5f8b1ef46607e08b84c159f6efc88d3d5a299d754dadb83d54635ba5edce446877b93d3a9a5401d6ff45b639c52d288ee5d6fac785dcff82cc61d24e9e0dc455154200d1cfc0eef9eb4a51358b803d23834587cb7848813570884c15949cca203a52d58febd75f34a2fbcff736a7252c1d6bd4e9accdc16c7f50c63bd7759e05863ccaf3e34321f7d883c03921cd845ddee1adad6b189d3c8c19b9d2e2e891e1d91dfc30b169992dddd0b41650a9ea5cf95e70cfde9ef874eb5a1b621fc63513244a4606f30bef373da2cb8b224ef26aca3f661bbb00528372e05ad361d72072ac6d67f1714d0e0683a35caae9c420419c0db86a53ee90de3fefd665df4a82687fd6786751916272df6809b16bafec2a5e8f01f42addc1978beecb4d91c69fc9a4e4f6337c38c2558c93f8725bc1c107e54b8cada435ee4db29b6ffdefbc064c231ca4d0081d45ddf0a40b0841e72e6c17256c8eaeb952bd892254e021f203aec557a59a9991fa3cd46b27f87d2d83f6d6b5cd679e3b0dfb599ef867ee613f724d073f2a75aa9695158557e7bd4e6992cfd8983b82ef810fc7fbfaa58e2e9d52248d32628c1ff964a3e267e7146c723b56ecb9f96ac5fe1a31872beede549bd3022ba6bedbf5effefa52fbb6c912b682b2381a102ada695aa562b016db35272eac46c9af110afec85a640345939cc6027bbfc9879fb57e54b217e8bdfe1877afaa28ba216c614303358bf42fd08d2d6dfb163f92e813c971f044e1554eefea0ac8027492ad5cb796f410571774add40ecb83acdcd13e27697ff10958d566b7a41235ff20d2188d7b46b97f46c4e911516c9b752fd9d5136d1f3fae43ca630d3c613ada83d93cac1c7dd152e43150fc375974971f45902b88be14cbad74f953007b25d1bf62d9152e1f8a3bd79aa98b38b15a9d65224f3fc9d4ae5870cda4049d7d9fb5bd1da80d2bd9df2ba147e4fa6d1ff6649b027ba5e8da01af106b3e525bb128b44a812a4a29bdb6f08556b14f5c427ad88af9504a438ad939cb453622c3820fcba2ccbf80aad631b74bdae5b815310a2586b617850683af06dbafabeae1b00d1e5cf79798d96220771e23d045ba2a425887462c3a051daad136caad2ed59943f8dcc98356acc25921281974356b701ca8d10a383d28b0c688331600e66a942445131695d2b8f439a1a60edc4fb46e2d7ad63da587279b1b01cad67d2abf2571af1f1a8808cb57fce8425406e50351e1288f1a676b59c875f952d8b9d24c5c847898cbbd0174d002aaf941635c509a0da70d386a4e61f5f979756f64085297d9a9ef82d4791468e791dee71da8312251e709c59a86503ee23c5b5c49e2e47a0400000000000000ca58d62f5216da38bc43560e0b6decb27450cdc8fec6ee6e9288904d24b27b73e50e5c063906f805d7b580c7200c286120223d8c7831bf1ad33266cad476cec664aa4c1547bad28e4ce52567d968970dc34964cc8c7923237206bcb565c08ff2658c93642e6e8aff626fc08862761489b1d951ea0c47ee4a9d8dd93176d96ac78fcfb39aeb8a0ba10f1742196d7cef6e7381f732e907b9f39a1e4c49adccbcb5df937e90bb6c6d36a3ce489488f483dcd94cea81b4241f3ca9072e8056402a825404a9082034d4e1feefd5902977bd8488140391e805c9c68b179dfdfe7da213db46a6d1218924242193040e98040d1031c83ce414e4246ea450914411bbfb175990b191a94922a592694929e74cc22589969dc40d2cdc17afd044143eb210b60c12bbfb1751092728815b1914e820d3030bd432375051c9f8404688dde5a72d39c83df78d597d74c3393fbecb29a18e4ed4ecf877752313d52b08faee7e95a5879c9f7154e41eb15d33e326ab5d8545ee2a4b6571127c495f6dcab90d5613238a53698528257caf24981845b1bef08845114750a20a4398620a190a231f86900517b02401891f468084113bef48811f61878844134a0091b04929fd0b2a24ac80848fddfd8b25504185bb4724b8b7dca3b790f0c20b53a66274994202890777d843be22e7fd544348d15185d521858e1f52878f12641d3225903a9488f961071813936a91db7e2a1d2ed4860a74a02281112d50ccc0c5478995d9d68a322806180f1c56cc0f231ac45cd513b21572dd4f1563e3e626cb20d79516b20e199555f211333a1c41850f483ac0b899cc8fae4733c8876f221f4ec0ff3d0422f4bca6de114eeeaaca718c114ece1ec9b6124d316e774b7956abba2396e2e454d1e19bb3d6ed337a4be5b0a52089d3f84c2cc5af2a57eda8339546ca904bdc717b6c4a2f60ebabd974b4856c6ffd5b235bd9f4338a418ac5483177a7989452526cce3927c528a594528a55176fb1a9a137e24b8b150333531035b3e9574c3241ee64cba614fb8b791098aeab4dbfd247d93062d53245df9633646a477889b8ef858e145f893ec5a888caa79a524a6f1dc1e40cc8d496411fcff92227919974912927018542402e39927cc89e711f50ca49a287e8d40e6910c865cb1437728c1bf9833c0a4e2c45142c7938a415e2a1871143b84f8f8f4d2c6d2b4ca69c243e37e5cfe16353e3a618fa58f14aa5f8a1bf31a3d8868f15cf147fa3e299dcb39a43d8f39fd0df995db8451339e43f3daa30f984e8ad472cc50f7d6a1e0cf1437a731b600988f61087b44618900ff237c807d13486f0a781bd7cd73780fcd534ee83dcd6b6f28f0828a4b54923c8fedd6d81fc67e52420b0136dd872d36f33dbca49eec73cd24e926d76776b8bbe0bbab354d402d1f4415cf7b1d9b1bb9f9a1d82964c396b77b7f56185b47614d5c73a13ad9e9b301bc7402c9195d6272991fdab7ef4c954c910fe30220975d5cd07a41c7297b74b8e4f6a45fd5212c27de1288bbc4759e4bff23e185d4aad0381e364f88e65b07b03d97eb154dffea3ff244af5a0cff8eac994213cfbc9a5a87cc910f78790d95baa1d5fe533556c1859795f1a96d408a3842eb50e04dbf59528eef50857de514ef61fe5e49593c492ceab8bc81359be0813b9ab2ed585eaa8ab0b57841cdf25c68231c6512818989717d20ea41d9e4a45da2147af33f8582add60bfbe0d22b7365ea94740c81d49247293a721ca96765a4de7c8e4eda847f06568144a3a01104ce4c7c7f00c52c32decebee1f5de320513cd21e2edcc2bedb7c164ba248884da28dd8c4b36313097735d9e69cd8843ead43d9743eadbaf39a1106fce3df605fbe0daf242507d7fa7d0ed66be44f1d84e47c65e2a3fa9584b20196c4184ba2bb0d5e123929a52c99dc9c73ce924829a59496c45a6badb5964cce5bbca5a626bec417160b0606a220eaa93409952f6c832d897fb120a29e766a13aa51f6c37334c346d90fcb40f5b3e195c4181770ed2b37c197196b1b6591451635cb22dfa88345478a1572c84008a3d7aca49493e668e560d55aedc592c230ec6647bc1ce18231d6b423ec1130f988992b7347588030874a1e810508618c2b23e0714757d051848e1de890d93cb8ef41187323e60708618c47c4784ccc163d9fe28ea810f323861553139384ed5e821d5e143e1c21448c1170502306251712fb22020b9785d7755dd7f5d94f75841336b69f2a86c7142bc8b1d223470aacc8c13242410e16ec90a3c62825470f2254c8d122f223c70b72d850e51862e3fd54395c0850b3e3fb8bc3784bcd8a6503637497723e97724e4aeba4b4ca73ce4929a5b4d65aabb378cbaa26bac4171b16bc011383e484f497aa07836bc8bd1d9f44b3e34fe086a76a4226015b64772f5d9ac062772f46bba1dac1b2bbb7c3e193f3083b52f16a6c6a87080f920a56320b9ad861f443133c341103957bb7f79e742070c0a864fcc581701797724e4aeba4b4566baf6aed7561d8cd2e0cbb37cbf0cd5419c634da167d788aa39cc55722cb47b42962876a450353448438353644e144976823a2705a3255ac5432363d5432317005de1002b2c015987a343f561bcec018dda584d15dca2927a5b55a5bed7561d8c56e9661ac6958dbb69c3b9e0f080402120a853cae232560c3ffbcf8805e8c5b1647f08e2412faf3a9456d0027ee7ba1932e328b3886f6f7ca4ea40b416be32b43cb18a6bdd4b0c675288eafbfaf01456cf91f2094a8b1b10f512265cbcf88f063cbfffcbd3583b80270cbcf1ad827be65642f5fd35d88868f7c09f25277a0b73ac752c45ebb527733e44313ecb17c8cfdfbed33c6619886719ef7bcf69d8e1ee5978f8df2dfd7bec38db29601fbdbf98bdda798f61edd4247d6f40c99da1ed332364e729db669ac43febdf490f698eeb4d427beb3d73e621ab2ffe80e7638ec19ee637f31ee723296b00ccb8f618869e8f0dfef4e7c67ba13c196afd170b1eeb43ff113df9dde52eaebca1eb2943d7a5ccd4564c00fb10c1d2d5f77d984657b3e73da77b8ec1f8ce8c939638dcd70e90b3e46049a8dbdd4344deb608f85a0c561ad73bfc3e5cfdda62bf69df6770b5bcabfdc680b59caad3d7e187ecdc061773364eaea80cdfec07b3b8370f700dcf0a50b68eb715fa456091925a68831ba7ff653a928a5b4562558990fda0f2a2244b10445b1a442c2b66d39ab9a000aa140407a08797210228aa55028140a0951b124c87eaa2576b880ad10c920b70416a325b22089a8b4e8b800c005220220daa25882788b6209724c4801efe09292809dfc6068ed8ed4894859e73100ee98df7eaa246c5ea0844c0b5c50620a13885aa08412ac55a1b6b536b4adb5d68e60a06a810f2ba01f3e44b07874a4a0f3c44a5621e1049baa093a68a81e700f3c643960c115820ab01d3c5c56a0c02e81850aea1259e840555e309970598164820817f8b3f231c1440b134c40011352503181b3e77e2a26aee0223b882f8a2371476bbfe7dad6207712d5dad50620b8064a2047e03bb729795f9522140578a5f89dd364fb3b7781f19dbf40e03bbff180ef1cc601df798c471b06c496a34858e28d04c418044496023c8a82abfd60cb2f60bf4f7dc1df9280ce11d0250778057823f1a58bddbab31986eeb20802ba13fd0374f70ed0abf8d66606e82e8b44bf000d5fa6ca49600d4539499c79f1a254fa178906a029cb493c555f5ebc2895fe45a29c59d6e62c12fdc7607f3b1c2c912c20ff912b22b943c8c7973abc18425a9e0f7120efe1e8cea2ff88ac288baeb0e2a525519e0e2be40a2b3ebe41b82cd22f963edcdb718b42aeb002ee10e83bdc470701d2f9b9ac3ddcdb2532c582a97cc910187f7eedefc431b4a718ee8d833b6fdcdb0b7012e9e2225da48b8b7459ad56abd56a355926cb64992c9365b2c4b7366791e8bf145b9c84a2288c9be2a35a502da816540baac5da9c45a2ff1265b929d6172f4aa57f9128e7ea31d563aac7548fa92fa41cf9bdf6d7c57a8b5ced08e5aad6c4c842e34bf4a99aac28511206a260769c300e518fb276a49415f7c39e9423d7178debeacb8e8f39b8dfc39ad31df4c712e02e532f7080170788e2d5c48314438a21c58440e0d69e1577575a409cc9726bccddfd01f9f89d1703c8c71b6e8a200e847c7c9127343d5ce8411cdd21a1d7be13ea84fe863a213d3b34f546bd2177c86bb06705f270efc110d2d12f9642e2c60f0610e7e150ec077708f776a8c6a383f8e8100e6b10f7f6ce4e323fdc8bd7f69593a40cc1010cf2f19d26f49e8fef3cf2c7903fba4de72307f21d8e6e0fc8e70f8184401e83844034d7e1a62704729bc7c90df20ed03d06891cbf07c38b250ff776878b1bbf0743fe18a0eb78b8b7413e18a483f8d0aae1c7fa3d183adcc332b7db679c2462b8e216b7711f31d7ef25e1c89ddbcc2cff6638c6a67d074fe06d6dd3386b6da6617f5bf174e813f403076ac7a9a5cf1f05217712b5d57c8d6f421ffb7b35f6ef0598a4704f9df2e3da6ab65dd9f1bb0cafa4b20d7586a241eeb6d68ebfb56a86ca24084585ec92d5884e097861432028500b24754a817e8070405240ac938a5d89256959b67ce1216bdf8287dcd91b5bc2b7383b624934134b52a47a30c807b164d602b1e208fc1f5b7ee644ac58c269815859c892d2887e80583455f4f0f103889797938a44b1b4b89058d98d7b5ff6440d2794d8776634422891f30df88e31e29b5a980b544808aee1218641883dfc09c32f2ef40fc70861d88d9cfdcad1cf1c9df9edfca6d6db34df87eb0cd749402008eaee447e6630b7343146857ae4b2a5116a6c17f65349d1da1766241e5906fc3937a4ffa989239f15cac7268ed07caa88233d503e3371c4be2987f444beb2a5450f59fb163de4cea6b6fc0f071fc4751e84f36c216f38349f901727f1bcc4b297cf0c08376271937c10fe6ec309818925f91e2ee4850bb9b165f65df6f299c1c974d4b2a5105b3ee6ba101c5b7ef699d9f2ad105116b1a5c5b1a5cc962bf2658b93c4124943c3f0ab6295d3ce72ebad3c8a786658c8bc6d1bfc2d6f5bcddbf4fc96f3f6a6960927772e5636e9d9dee32265f378f4f4fc7392cf77de3a09e83bba3b9179d39df73cc84d9e4ecd9b29c79463ca31e5c82dd62808b1e10af653d1b4e40e7c294f353a52d64efd93b8ad9c28343a9d3fa574a4f4747487d2c113eab4d2e93c8ce8919dade6af1dddc1cf97fc93ca49e5a47252911ba438d8dd3d9bda7c2d9e54b28f9aa6fd2945839ba6633ca14e29a7154d7b18718b5a764ad177ace90e668fb9ec3aa99c544e2a289a430a9bed623f951438dcddb739f17c9c99724c391b0a0d6c6ae137e160172b5b76995ad96f2e5230cef0e602357fd33aaf6d99d67efb4e4935df77d781ecb3cc9463ca31e5b8ae19c2baa50e9ffe18fdf97be8efe1a9c683f094b20231ec947a386ba1ca16d327d7b6271551a62d9a148f168f191e311b01fba978ac688ea296ba4055295168985a261c172b97a965c2719132e9772e50d65aeb577c2bffeaaea4dada7d7cafa65ddd9d489116aaac2fed669cee307d22f7a545d971882898b42d970b9475eb0285b940e5a8c5cb57f7fded6b5c6966dbebb3ee4a2752a4856adb747769bf1e5f2f82f90c5fed8a61dd892ca91c9a724c39a69c1b11e54a0a832870a2a089426613603f5514365451aca8a05859543ca5608e99f538633ca5ae53ea55fd2e51bb3bb9304ca25ae8c8559f5cbb7e7772f9a5fda47252916e5154d836788239a5f6c5b2874a49c9957a5ffd8ccbf5452ece28842955cb20ac2fe1cb4a2f1831d31efe49e59ad9a555eda21767f9de8842e33aa14e29d7a9c6c61e873d6576429d52600cf2e369e58a8fd5909d54600cdad318673ca536bddfc9a9bb934b8b8fc50a60548fb03fa14e29a97d4a6dda5f5c43b6e56ff0ef9d5fe5cba0ba8317bd3fbf42f927d40966df1863c4b4faa7949ae19f73d29f504aa94f28c7d95e5b8e736d19f2f149051a00df1faded7f528131d0ebdaf7e75f4f67777f6cff8c3bb94e2a7ffd0975bdc431ae53eaa4b2b1b21150a076b6414f6f40a1da0ad84f0505cb9ea9d9a5fd5433307b86b5ef862e505b63f98fca610ee2d7b8ed2f07dfe2cf9c7f87932f72fdf51befbd574646356a3fbe09c75e4d7b4b2ba8868feee2ceacf6f948ed47cb889f7dfdce568d42a33ec4a90f5dacec0eff49fc3c0ebb725d35b54c382e527687ede7218e559fc44debd78f7f12b50cfa9fafdfcdf055e702b571696657dde1cfc36a2f8d860c7633f4287bf8f8bafedeaabb19ea9b5a7104be7d130e8ca1bed52e50b57627b17381daf0312e6313d0e73710bcaefa18841da43e08bf0cab3b88a9bd7eb3a69cfa20f8a6d68d7d23f728fdfac16fc28106a84fb189a50fc3ed33b562a93e375b71c433dfcace429be1b797ee4c393086ea798fee4ea4eca0867fbf5678752da95610cf80e1cf807a74fdf675daaf27526eacda9b6ea123cfc05f33b769d5aef633b9f17718ce9e337c65ca8131647fdfd4ba4f718ceb02b5b1b9afcbca7d596dca8106a8da6a3311e53a6887fbde8b363d6a5a3f583868666270d454118303264e08e5a415425a2f08ed855d08b19be197e16dcb9df73ec2d8fac1c24133e32ee57c30ba4b39a18cee52ce49e5a4b4566baf6aaf0bc3eecdb09b65186bda86b56dcbb9d3f178405ec87b4f040817421cdda59401ff62a923b9899bd8f04a4cde869444850dc229ee0803f5e5df505f561b9b1a28a3f5fcf03ba7623fea2b5f3d185e8c2ea594734e4929a5f26fcd22576badd55a9665599665599665d92b8b1c8975b12ed6c5ba5817eb625dac0b8b5cc431208c1163b8531c434a1963ce3963504a298d4192420c92146a6a582c18189214f2b5563381113b51dcf782678fb9ecc23450db75871fbbb2cd1dffbb4e2e6cfd3b59f62035def7c7ba03fdebbc6b0bf21efacfbbee3cff62f6f8b3c75cd7803feb00c42e7f2cfbed2910faed61440b641a7ba9698ff5687bffecb1c7dc68fbebf168d3242c72967dfe0b7f06c36716c2afe9163a32d61ffa4ccb085d1beb936b8730901940f48b25ef3cfe4c774f4b8f3ef18d69b8dfd17e3de3aeccb3cdb1bf3ebbba1301a6652c658fe90eff89ef0cc721b27fbcdee6fc2e02b10cfe9ad61e73f937ee6a5864acbb932bd317e6ffb05fd73be6647cecd996312dc3ffbafefafbfc69a072f619c3b84ed3f4babe03281b3f769deb68a04858647f8cf16318071216b93bb9767621d78100b51f6abf7f565ebf010781da156e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6ede0b73fb2c9b9d88eeee6b9dbf32b687f7ea39c36db2196eb351776c55b3e7cc9e8f5731fbbe687563cfc72b973d1f343f6fba0b71d04f17fdcc1ffaa93b90b73adfdffe7a7e766ad8fe9adcd7323db5fb1e0ae4ef58e06aede9e7f3db7b3c9d9f7f479dcf7e7bcfa8a365b89f7df6f73d9fdd596ffed490ff6a19f93b5a86e8ef4faedbb2965af4efa5e31944fa85e813dfa0dffeeaee6909a24f3c621af083f4c433e3b23b6f676a9ffded4430b3fb5a4777dbbc3ebfc510797e67331696b9b9c87cdd754433fbf31d6e7b0f873f9c48e73b5147d398be345c3b9bab156adf9fdb26da38cd267ffd8e27d332e6df3bffd268799f71da96bd87ebfcc675baac67b8cda4d142f291e79cdcfdeb358ee42367d76db087e127aa1b2d6e43faf104d20f2070d470826a8a14951336aa13de66038cd1dda59472ce3927a594525a4be4df8d04051b35090ab6447e7c8f3a08e9519b788cb6c6bd2f8b19cca04699e8d1bdda7bc492bf7daf229628f48f32fbb4149bf8be7f658671264ec5b62671dffcdbe7a03dfe8a4718c8bffd0d79d3cf4d3768da3ed66eff5ef721ae21fbfb980cd9d5bec234e98a1ceb53fb30fced7aeda99d8aed8f8344b9a20c8244c1594fa94a69d4a714ae7ba79892da16154b530939be4c91a9e9830d9453622f3baf01c185e20245e9e300a79df39a53e39872aa8c8aab31b5c2ec68ca59428e3fa59c3417ba8f0def431eda6316e6346c84dc39abaeea8a5557ceaa2b67d1d4d5aa56516b6a8f3842ab8f38c28a23b8d5c2c1da8493995aa61c53abeea8aa3a535575479d8923f5e135eb0c89c735af8b8a5cff55550a2a4593a1f596e3a4a052a61c172995556de2485755cef21fa8baa3ae6a15ceaa2b538e09c79a5a2c538ebdfed2563b749629c7a2aa6733805a947314d74e913bd9625fdce46fed7e69214991655c2ff6c50a71c3161147a8c5111347ae4ab5c39e524ea893cad4d6464bb42e2d71c486758923f52136ad0b290af8d8c434465ae5facf92a4c8704b1b2ef2c66965ab9ef8b16d4b1ce9a48589239d6dd9ee63fb4b1b4ed89738f2544fcc6c7f2b846cb12f27154c9f52e285ea3a8062e18bc0dac9167d69fe92a2c832eacf4d731c799881a8a494f444a6efc1401f4644c5124dd954ea5bc596ff56db882c65e887505e73423fa1fc6bad61a2cc3fa1ea9cf5e7bc60ad155af9734a59b96759b6a42794fc4eee27595ae0c894b26cf8180cee7d1984746a0f239a5a10d28cea6eae76cebaa335a4d0871c85906e9ca65508e17c4a5da020f76af51bb37dfe25f1c832eccfb9edfbe787246b3bfb637b0b23f29ce136db66c06d36d53226dca616e6ee8575154b2d8290bbba6a01845c5da493d0695dc511db42952fea36db3a8ed56edfb7bfed2eccb5da939b3f9f52a734663f015c9e11d1a9a7d409754a39a14e2aa754a773429d54b6ed4f29db9f502795532a8e6c27d44905428b0362915851805827959ba5a864ceb4563975884600005000d315002028140c08c402913894647116ce3e14000f7e8446664c99ca83c2248751108324638c21c01840000800c8d0cc108100830805f207eb85b741f43ad6a4f4e0534a63f6e444e717a30799f28858d4871e646cd4ab126bdd2cb1c45d8d01b319eb6126e0f3200e0e596689ad16078f5b4b2cdd3d2869e6b622cc895da3839cc80254f4200892fb8b90f02844fa6a79215a96a2e86b28abb8c6faa058967f4fd278621f107eb2ba893d8b341ecd7499d81d235886f1127bbf4ef257ff96d8e2ae88c1da174db1162ceb8ae6fa63f60e9053ddc53e6252d7f47fbcfd3e6cd25588cd6f5bf89ec7a612f4f91e215d4248a62ff4f226e4f1e5662b6c722b9be71a8ba65188f4ae270e7fd03596b3362180ac2e96157f2cd758be8384dcb2ba5031af476081aeb106124d95129584ffaeb149eb26f105d7b8b1ea48d4316a080d5f7d1781c71a5931458420222effd29a4cc34db88bfef54028c8f7cf2e4bd2d2162103bdedadaed95b4442d6b78e3bfa8e8e349b77426f125bb25378f0a409b02f2d70646b3b0e6a6d6b570791e2130120b058b62c24746db8825ac5fe7ffc210a34269eae3b72ff444c34b00c124c967f3cf6870ec54b1bba44dfec1a04260de24c681900fa530a50f1fba91e4edc4db490c5c156f77ba8b4eb1017ead11dfad7cd825d2bde362d43356b2301aff4ed69faf603b5fddeeb49b2abf437f8b621f9b32d480b9aa9bee239d9d326ac1a420d2939020d75e0202c79c9588a6fb753dbcbe3174cd20d968e9502ed483084ad5038eace5d4c930ec9e5b77d6ba5f31d2eb322d244dfc3b31ca2c114682f4640ad65f4e7280827a9d9dcffdecd455447bc52ed939593f43b5da5ba6eeef478b9a0cd41e110ad55b13733a6d8cec8d4db3c1fa92b8f8ea94715b04d887c2ec23a2bafeba03310b41b741e8afc0e17e043b4cce4729a380ee4246e475d46a786696c44f27725a9a4427c021f3524af61838e0517ddb80b438856e44e8741ed56d65722b39ecc6e540525ebfa0a45ca849ee15169356616afd4d1543fde2e84abf8c51b49bd1bb568736215fb8078780de8e984c045a9391146b5fe52236778aa7022439dde3b2cdd63c9562419a3a2b663b3dd4cfa12a6abf3fa5cb1b480325115986d49d07085b0764d9310c4a956367bc666a2f1b5f1a08a1ca2a646f2458b5745e7da85bea25dbe9910bb67040bcccab2984c179abdfdf7e17a00c64efd64cda5d5457aacc443d60bc9704da24c513d7f6dead791863a23949744672ea0c3600af5ef4dce62233d3dbfa7a439cec84e47a3bf4734add739057a664fa8a480ca2ab8ead8581a56a234211305396e2565199818e0d194504106cec4535808517697d3a0179a0d0d9be3257b979abad8fc542e7cab35b2834e5ea8391929763629541870cf703fe855c1ca8f344809d42c2997a04755a566d3822a455eb420f525e1e29272341c39f78735cdc54cb168b632794bdaacaa9efd92ac86f899c715dbdfab4749539869b695d1fbad00429312ff4004cfa2c50bd6a44923798a285c5c6441cdb469d5a601bc850b172faaa888823468d4d65ab336d050d7cfcd23ef112972a260f1f8f1bc8b8cbb87113f688d7f5625c2bbe0b3ecb62f32cb560bc4703b879976efb87ea91403803de8831e2311e5270b89bc54402cf57a77549cfc512e87c489d2413b4ddcdc04eb3a468a0215d7270ee74491bf1b29c38902c968cee85867523ff4cde1264e14fe2dd046d91a8d320a64970fb000422f71af718d297cb452f17ee251f35fcac65f961702b3a238a0998239a2571ffe24ec949de9b8496c27a84f72a260087bc2a5405e35fc2ac6a56874b10566015af47ff97fe6222eaa2b51608f9a22d32631522843bd6357beddaf32c754ddcdf60d25e4d06766b597952290fa7e6ae2735f98244d5ef397ca97137562bd19af85dc13ca5efde6f7614ed4d192d22932c782720dc48131f027f10ce644a9f72554e4c578ee0fed26f1eba00bbd5757d98c9d31034c0572e87be66a177f797658ab539e7c445cffac37555587957d2bc0830a34270a8f1a8910d0768ebf16c83dc40b9bd39075e481a1d7c3813f990a30958f2acb108b1c514e14897613425df4ea8313758cc5094f3b67514a08d8a1cb2f27aa5985d2e1784e941ff005f3bccd4d210639ab2b4b45057432dd3fa9e9c62a7952c240a6591b31fa36276a7e21127ab4c8cb9a7f86d1947bb214d518be992f2a4604e88a3a23ed9268918b60134177ef780608e2550bf8fbcf22c757a6e3be7a5c2946d53b608d4b2d1b502721752a270ac4cd596424c8e2ff0c6cf818c82570a2706679731320776f1a1e569b1d11b7ad06dd2ed6c6899287f6da36e2d266a32511ebfecd4a3e711878d6338289437935e8afa27b6ba714852cd8eaf840dd3c0aa955269d4d5a01629a241bad037f89dc606d3696c4dd71654875d909bbfe52e954380bcf3bad0c1c938290d1e8e5ae843ca90e3a90048f160d34e42bd3b81ae3aa2aff7558993730b8b29714b68beabf8b3f7887a18acea62902f80f36d4c9c598638da5af58fe2d16f372b8a64835d6dae2955a64f10b2cdf535e2d2ec3c07e4f448491a2211d5a8c18a50c2fc2856f7ba60d491dd1a8e6d8342a04b4d9604abd97451bb78234430610e533ef47aae4a318cacea31b8b367915a4c73fb1cdc5043dc0a317d7fdb9102761f4a28e9a828f1563b0fca8e3a1b727702209cb88f889bcfbe7beebdfccf0880ada920cd286de079310c4b5ea10e728335788087f2e7259959233e195ca0e98019a909d59b293ecb87050fddfeba1317121c1b1e2fdc4df57e837dbc28be4aeecda68d77889edc8aba0642d6465c2cc00eaccde7e4d0eebcc826e662a2bb26c585554507014fa540f1d5e23bfe81841777f42b7d8212561d1720d2f92aeaa1321ecc1064fea54b8d005e5ae7719867a23f2955889628b019e0f3f34ed37927038b22a29572e1462649e458468725a3e492ea08970000ba9f8d703712c3f3730fa2a95a3794a189ecf687cb9380ae03d40978fa6481d3799171087fb7ead30b3cd3d36c82cfcf3a00099163896e978abc3c9be29b00ddb6809e8db7d11ba212836bf51a0814e119aa3649919f07d3e8272a24455909e16a53e9c2287fefd29b5c087d004ec20d2108f2a35fc820377da764f2342b93a511e4b13be4cefcfc23819102dbc55dea788d672de2abe33963ff3928dc813605f176ccb4d8c2302ca6e0d272bd6b788bfffff55fd6ac5e62ae204c317156038292a598abe3bb5d3228496d7909dea32c038ec77adb2c8b0a06d957f5c771474d43ac625bc1c6b5c3462c1d1083d378a1f2570eddadf9cf76afe04f45094948ce4dec02ee77db53b534d0bbbce415ab402edceb73fe02697cee86e30a98f40c5e6511c845213bd65e38f750bea30e10c0c7cfc9751e484769e4998299d8337c5270ef711572d10e772bec2f1c2d288d7d0b942db792eae5d2cfefe3d5fe4e9cdb4c711da38115ead0c793fdd2c78e24b9c9a5ba9a0523c19b7999bc90e7645e8667bb482c905e3260e4b55ec0ca1a0b12262ff340685dd4c052b0bda5a5eac57848c9e98d7840445604a99d6f48127909d0dd4089329d9ff14a4a8c66603e8c5c12319d059d358a48c19607f9d95be11824d0a98f1c2d2bf5faed10b5d3f24b0fd070620e2a9125412b4011de1535c45338de781aa07984e84864b552b02dda7ee4cd3fe8c8e35978b459842203572a473a0394cba8b521ca6b0088b54a4639367e02f3a4902b189b546d87055bc0af0c2acdadbe21397da30811c8ed9563974e094b680ccbde3aea3168abe3ea18c46fb3aee4a776ffe4d4a8896a2948b95b81eeed56845cf3d3520a9a30ae726f64eb6f94f72b06879d8323cba66725224d5fedb886d2e70b7cae12c1d0d1f00ed1e81ecadb4a91d1b51e4603104db1d9a124e5e13aa77b5a9f2afcdf31c6c50f88744d53537dbc067803367e5ecf2800d4fe717e4b1a21502a6f5e0a0830389f4fc7136cf45179d09d460f3ec2de22ebfd6d97ec7599f4427809666da37a3d6de1bd836bcccb5ccf9277125d016d7c0bdfef9159e61bda533bb5a6ab33ef6ac1a7d7e1c828d67e93ab7ecce0b1085c0a6f244edaa3632b640d483a76c6e0299f9c2481d3a53cc9ce49da9e16a994dcbf378fd99af2e9a38e5bd71325ae5c6b7afbdd73581221210071a96e7487051f7cab3b887d85bc9ee825e9d12469b9351c3cc4ee6a593db8d667905d63229ab89ff3390d026e79631b3b7f8296ef5fc4bb0b63f27a483856135e8c595a1c811f30b1b4158cd93eaf431c9f16182f15ce814f36dd5ef7e6f05c79d48091fc91919e4c3f5379dca7eeaf6b7d42e3c73a7e9a217ba1c04c1a6913b2143d2dce0b7920ee3fd77030b75965c744ba6b76111ce2d6dda46a072db04b18e61b0b48dd891deaf9f3a5c616cc17269104ccb03b65cd81d27ebf9340eb9d190f8c8859d923a51bc17a048a3b56d88f6e84d3dc696bcbb54625542115c73669c257cd4d8ac45e91c0c31dc56c9299a25b5e11eeb8267ab864b64061f853e688065add676845066d247a0304341e978d2012bf720850219ad9db8aa7bc705a14a915ab22ef8e7d17a65e6bbec7365e840827f3cd466ad74d1f07cd995c0f4f2337495679319d2c1bdc43a697f69740fc853c236ec8c7d58e969cbec70c5ff126d1082ee5e9273b6518075f430a8f71fbfd2291ae471276f8c35743989fbd56d46f1125b41c8f4b82cc3087f4c87a9b1672ae82452b7befa2550fbfec3cc63c0406eb1904dc2da1cbe13966a09ebed57c8abc3d2f8d107bc98409827e2a24cfa877ea36b6b0d125e1ea72861a5908549953846739ddc9a4259d89d9546660030dbdfa61fa7a799a111640736b197dc5911d5523defd17fdae44f2021f6dd1c687bd462b5b493c1d0c9630ea7d2cdfbbdcb1837edebea451d221c6e332578bda670adb1c57e78c0c80acd18d5ac32b9963f364017e9eb1b942b5c316dfa20801acc8ea64ee6712460d8acc36aca037cf02970de3ccb7519aa941d1ee0ad219c8052adcb60c4fe7c605df348e2ef6835043cc89a4261323b9240a16c564a48228d397a5bf1c6306d49d1924ddf5714a5555198e18185ac520ecf67780cb144b25caebfcda448e98790f238c8dae6dff7d38631da3ed931097d307fc805b8aa2ceeeb542eb389d05ab503b1781292ae11637ede5aaeec3cee54bceedf7419b1d44a8f8a0d39f0ba18a04eb9f3e294c8da9da7fa29a0032ce62dcd0807d08a3db8e1367990ef685f79c351569917cde44446fad0204a7658c7a92450a63aa38250d61807b3350e561a069688ce3b9197aa198f48f91f2b60c3c90deee62da52b574d60285e513c2648bd1247148d993e29eebe62868b1ad95344682121ad990e4c3803034f6e3f2422d31817b837638de9414fc541254bb9ec01b467bf927255b2c4117929ccd8b0a1c081526e22af2ae55e2ffc7826deae23c446934ae98ced57483658a36c2ad49b43abbe7a28863d27d994535850aefaba755bd7880928b10aafee6a83652473862357e4d3e3f928cdff3e2424a94d61f49b9016405c951333a95a50f31bc0a2ddc20e7345e7f32da65e427d74a6b06f878a9ca532f0cc052356e4c1634daa6ad2c64f74802482f94ed94fd47fbf6234327cf439daa00224d3c868dea1163b5a61d6211991f8db9d41ee6bc56da622ed41e018215af37dd3231824c2883c03d595531f35d653c5328e7292b508bbe269af15d19719443cf61dbe636a7173d6e6a0484766837b00af290391ff63e703bc27051c425c9db84f309f9b49bebb159dcb4b90c59dd6238b1a5ff2f5e82a74decdc1a145f147b758a6b63211d82be57885618bb8e758012d6f452b82de48a159cd9a8e9f85dbed9cd09cd5a464f33b207c22b94101b24c50aea3bbf3f0e297b2c8a991aee97373c818c0535c3b1f4e5ed3485c9c32bbcd1644e892efb816efacee75f96e5e91e54fbadde457880e9d8fa21d2d1dd43786137f39868f0c006bbb3bce61cde6dc3412a22ff83332f50fec6ef584da29e3a9a5eccc15d51df8ee6808505564c029d74525b936858faccd17c6d659ff1ea43d7e8998ea9db8e51bc227e68f506683b7aa4c6c0041c5bf228b48ab4285a9988e157866eef896c561b85c2639341f4a4b21a04fbf571ff07ecc014ed4ece278e982b6c9885944739941d314d307925f5a66544ecae57ddf4b3951fa6f8d0d1745af897f0b201d6d0858a3a21ccdbc3532ea10f5b17b5a6cddfe8fad5f4fef124ed827422a2c09185fa248d3aed65bc7785f044a2f0808c3bf98299b5ba59b2bbdc18b5966b2244a237598c235d46f1ba6b7dccc8b4e6457c1f0be118854f0753283568d1f7220501fd730f5dba67be33cb3d1803551c827f10e42aea977313d8589434a7a319c428d7b7360d096901004327268e06791facc498446016756b5d7d75140826c91658b73f45a78a10a45de16cd8871a190a9cbe4cf6187dfb717ea9617318b58b99fcfb2affa409f1796b216d23f96360c31d2096e78d6501ddc0396b24e2d6206931199def9c7d7680270e8219c321d9222dfa80b438ea56462e4144b81293ac10b1586d7a6a44f4d332ad4a630558de5f5369ad8cd0ea72e178afc6faf421d4de731617853df93b511339b7f1c7c9e16e074b804463380f5fdb761d657f2f72ac53971e25e56b0410a2d543edfc1dceb0e7a63b08b230ba05bbdd49f5732faa3840798e12d7c22399512ce1456e7f14aee8bca4d39de70a10c0ed731d495cc5017125dc9b6ed8ef8713b5dc966f624615d5c96c511e1b965bb068ba0b9a354b0baaf520b6eae644aef260458f55536e366ed62a50d81e68e75b45ff240ff3997c5e45158874d8f01857ec8a0bfcdec78fc0fd9b91f304cfd580478df0d979c7c9fbf9f89d38c4363ba11cc3097eb64d3511d466d158f6f60b4d6d49419acd21e115f109a777af0bb5e432d52a1509db237dc566f57a77c399acc64cbc62f48574acd50b2a853ce807fce2867efabd701e671c83cee0d050a3f7028b8ac65023f2e27fe0f76680310bec5538e7742094ce80ed55b437a6b94b00984bd4c607c9d8914c261e97418b3897b9abca4cf9065285dddda7e6697517d3703fd4c4d934b3e676237a43c5003ff67987ab0baa9c22832592fd364316cc70984fddfdfa08eeed8962663dfda71990477255e311f57a934399cea7ee441eaa9ef6f0a4ee5e451c4db637e3294b5800f1e9e3f00a5c97c8536ce548b8b30c227903a4c1747572b02cfb76cddf2cf40d78440e7f3d75a0099f97fc1b2d698993a2eb96fa4e0cacfef76dbd99025f159a0a55f665c305776e65de4cf259cc27e6a93b59daa7f235cc9d633130430cac54055b45ad317ba4a1e0245d2aaa7ef3961aeec14a40fea35633ea0da74b40ad77c4f3d8fb1e6724d45805477c6a0357ae6b9f6f2894139affcf69d3cc3462c96d5eba76777654db00c976d3eb9decf299d5402e8d50d5fa2b447c41c21d1f7bdf16eb2d2d8f7a825a3f41051433f1d72bccca5fbfde337c9c8c4ad1c8ede9f802f01b40e31c94ba8708306ac6f314c2ed05e50ad68bce03d48db6b9e07e2f94a99d0059576c0e503e5528aab0218363545acd7dcbe1a396f674976726d3a03ebb237b6c8c72882927cd74e60e3450d94af2b32b9a7484e1d4219deea2432738cd4c8568a05c731f20265008c894affc302e5e7d260b002e5455d1ea7d61757d4a9f16effd3c042e84531c9f849e382108963a49505ac58474478561e6c80c5f2701025c507736c4eb2fd730fa180999aad84dd6d9287af1128e7a99df96be944349a6524c21752a6277571c08fa60b0c53ba2f2fdb535fd2e114a6768a30a04b808be654b1f3bdc9a1167a8492d86a80c4966f907001c9642712464869868f8bd508f5435612645e2e133aa49f191efb102e259deff606cd1a8342281f40d201c53a7498e957443742997a0834fe05f58d14b4ec2150b398f9e8b71e09d2ec7f77518d8f8b6e0c426a000406f1fc9b8ca2a9f28c287fa0e6292548493cb7e8c9468882409ad8d5f62f4f23a71307e9b44c913d7ed3ad7931a61ae74315c39f937b4aa261b58c5ba226a3187ecee06fbaa24bb7cc853335c274d9c32d8912022bf960ce4b8ebe4ad6ea413a3349ca7d951d101fb275021216430e947edfedaca6ef34a880230da7bd61d142e86941522e772a4c9dddba2f8030dcc46c58304c18a5c7b5b7f0f81a203cc8c1858818378a0fb73d431fcd0103917edb2e5ce8f3445079964b10fea60849931c200d4f573b3151d927ab84f43f91c22a0d4a5ba417d978fe0d1600abd214bd131783dce78525a8539205b8f12a2222aa8461489fdb888d946ad792d5422bd74db07e75612b01353c4b00ebea42c0c710a6e24f16040fb6902fff7a2b70ab931edbeac8ace3368ff7bdc0b80b136bbc65972f3aed93d75f1ecfd8aaf0b4867656f708129dda7d8636c50d89ca117781305013526cd2fb4cc84b30f63ee30045fd80fcdb23f168c09c502e7bcc5d1e0054a4f7d179bdd5b0db8ac34619c2d5fb1e565d1e026abc8e17bfec610356d5e5fdd15b976ca9eae299ed05031fe28595a73b9d2a994033dd1b95a45d478459a6354c5a37559716d8296fc7adbf88cc9f0b134230113dd204cc5586c6c001dfee2aa0024f6ff3f3450981acf8757cd5b8d242fde6f0ac624c511d83d0b78a83c8e7c30d0c008c989113dabcd2fffb6ab22c1ae9c0dade090eebe251a2bebc9a8b32accbd1a49b6248704dc7458cec708075510f076e5e9f0f0d0ae13eeb5969432ffeb076d37c807f9fa17f1b95bdff4097c2ba6c2f71378d70f8409d88ab5052e501ff708db02e10a917bdafd96d90625d2cb74a07dd564146be68b60f364dac050236d4214300fed27d44e6f8ddfb1241402e03933a5764ff7bc2707f2fc06aec074ab42ec8e87f6d765c260ec648df98e55d13939070cfffad76c887d5622ed5c24cb32682355b589a880ddd9ce75327e2fabaf02d6873a374706cdc403a0a253a60120ad052d7a571b795a3a018f81fad4c191d70360fac0a68ae4beb6afbe63fce21a841db9a2c2d1f9c3829f7f2a15069ef2e1811a281791dd4d2151506925799aa26a2c3c66068240aba75ba604f54dc25529a482f940bce7f791045d0180cbc29edd652db4fad6fd12eda44f6dfe2e678378f8f3126c496bc8b06045fec195fce1957e896f34f70b3c4ca2bd89268a8c490bc36b602c36cab8f98798257a3c5992580fd559abcf3f354248f9df80091d13be7a14a5d5ed96fec4727e778be7efc081ec145a833cc6a28298218306c40df28ba2a209658b3b888f8d8670b6950c174dde72513b5611ddcffef8966bbd6f26a005563e9e710aeb5f0dd7737696a81a51ea5cbb5e173821fed32bd3898adad412fb8f3b143882dd33aa71babf1a6d4eb932e0c1a58b5674b83bb840371de4b753387ec8059534a57ef4b146fcc16a7f0d0d2a574d854ba3a61209278a9e80cb5c948c11a54b228394f00868f1c0cadfa39ea97d6e1b08f3acff0221147b0718be0b76e6597b25c0df3deeb3c9620386952fb796014cc9c9c8b332c1c42b342628af721a0df7569c4e9182e06cfb2944855ed9a5943f2227738c5867ec5cf19bc359877f68576bae1305ab41936605de49d84b45aea42746cc3b4937040c99531f39853bf15cc1b2831b1adb85a3bf8e4d89949ffb573b039fb0f1514653e768a0b3836a74ace41189b2b4c9477a1a32c32d5483c2f5a0a962ca27a46bfcb0aa089e7a511ae69d4ac0deaf9f555752d472fd135f0764ea7ef13091c551e114bb6cc65a851ded2fed0f0ebeee1c69ba06659099f1de2790cdc0aa4688c52051879072fd4cf089114becfd01ce3d9b633b1c7c96d31420b7a1adcb8328fdac16751d45657d3fe2478753207f2eddd82c13a630d9c2671d312bb183a91705642d1ebb8df52b6884c4e5817e8d0fb1a7cec94db995c57251fca46118bbf75a0ca757e5323f4909be1197ca1530f956d40ad6195db33545110c98da84490bfb2ba898249ec19071b41a8050c5fa581eb5221cec867bfbde9f75291f6a54cfe90fdfc2abba076a82f9ba364678fbb86793e8dce61716688495fff27a414dccc7a5240f0edc02d68604582125ebb44f351fb98336a27c7f8431eef24c5d12578c5244501b73be5dad5f040f608997af817eec348ce562307461f99ec0cea5cceab6cb8b3f0af7a5c07c32a070f7f5e0e2e08086c7fafda3543397a89f59d45b5e4c29c3cfe846ca2482040557fa7ee26c9fd54e54a9a896072c5f7409743cc2ca58c3fbdafa0c49c3baf76dbee5ff71809f866cbe9d5bd97d82e4a35b9e764b01281c6fc1324741250f8c26d180d6a0102aeea67d45c869c08964bf543131f6bc4ef857604fe4ac0d63386e695356cc6fe454cbe422695c35fff1120a306f87e45daa3d6d955756e6642cc427246b419ebdcb79412814bb4f73a71a9d6712de2bed284b900aa010e5819479c1d362b7c335b1093c82c1572d4e56a65f387b7c9cd0e94c78267d79e1fc0056bf1209524de19f73415e07d928d208600d58c68bad4a81c998f4de170e1cd27b5d46e2313560fb752b894774e92371f935aae6f8fcbbd974933991d2595dd6cea624799b3f83e199923a9150b02414fa7c9c5833086cf89c14e6976e97389b272c958ded6454356cd91f5278412101524002ce2faabac530830f51b33ada896963c97b8102a5fc029bbe4483284949d9d30c0fb1cade35076e90b4a5ec43b0f17c2931d8c24b7f8b98dc39976935df62a04b20363b2db6859a719313fcf339ba061bb921db0c7ad6aefb736c3d6a91e72c4feea9800805bf8cd332b6eab79dd1520d295f4bfba1f1fc6bdff765d2355d69d8cc6e44de3af8625dc5eb4029bf3be6783aad8f91608f68ef079ef864ab1d63eb9197db1308fd587f3c0cc741ac021843b7c63efcf6529802ecf17560a6e757f040b3bdabfb8188e260303e1fe807d0067ccd395f3502467bc299be50f8c7497c96c96cdd7a03f8c1f641301e84ab004e17ec4ee122ca1649ecb52589036d11054cc1c4db56b9e11eec2f9ddcecc4bd6a2559e3569d13a5692eaee5a9fd5d7496f453f343fa3c9108a37f92f0b8893d36a37ed115f7e1555f86f39a055dc24b686efef74c96094042d8588fa8d2f2ed66e37d54a346999037214a064c7a2ab08dc66de774aafaaa683cffe292b8e7bfdbe61bab55763daf1c78cb93596dbd11512008641cd5704265ebea21af868e9f2ea7f7bdfd162c2f1eb528a1336c15249778a44be2410729f392b095a029f1d9615b0349a80c9bf1bab82b00622d57407c4591b334adc2042d2e25362ea62fce1ed571c675af3f50f00cd7dfd7c106e960fd3bf53c250007af7f2594bf69b9f816dbbfaa890d1095391f24fbb154e400d1f9a3eb4f934dd608d469d4980a9eba41aa3798fb58158610cc69a2b603f01855fee5a50dde2ff30be64d5e17f1a2aa72d1e6658c843cd474d2fe5caa7b9b8d26c00f798ef89950b84fadf83611e435503e27cf35d8e65b4561938166a0695132f5c8fb8e2a57679e319292c520687e474ba5de7bc9072263b30dfb49016b36a8707a9c74f760374620ee2d015b3cbc63bd775fa4119883a10b0880de5ffdbe6223a9409f292a1387069e5344d5de7d99accd58c9c696d8ec6663de1802867b34d9bdc591db9561e0a3672adfa946843ff0d0aeb775927cbca3d215dc837467c2c0239b00f2363025958b68eefc310f154c6c67ff01f7198e46e7a8a2a26e5125d35f3d81c75a9a06160ffacccc6bbf59ef0d8d4367d0a2a2647265d35fbdb5df5b4a8e961ff2cd2c6bbf31e70d8e436750a09a3e16dd4083576dbc2886bb09b8782c35f9a9d3d8cc212532274dde0a7fa60014c1ade38ca378e2fb7d262ecd6b192f3dce02f43bb65f336eb65a20d9c355975b9e7dfaf84935490b89caa28ac196687c5b96da8ea0a355718073bc3cf226435c229351d5442c6434fc02e1201c7fa3d751487f54c08d846edb2357d91779f5d0384498b83fb7800cfe45abfb0cc9759f860ebdd2f55d5e5941a79291729885082ace405e0f14a7c156bc13f2c60bb3e918b500f83722a17b6a0c8e66d3b341f62225c93f92c716d756f47b4e1a5ed481f12087e6c1637310aaf8820d0a93490c5d83d593d3ae7add8abc546b02fc4771d496a3318e5b1b8eebfa60a3e6056da236582e2c44fb2b84e70467da09ecbd8dc99fce8f122744e184b679d5b2dc8cdac966456fc46ebb05698ad1bfebe4bc202865c909039881165d1e743c15d4d696541fa653c98ea897f8b4cba2f99ef74ac10132353d6e45c889d70cba4903c7877afb450790ca704e9fbbb175c27fbf449aa84666473d005ae905f04e74638adf70bf7fa3e0dce771d6e56a95cedc5712525d9557b903b79196c0a4c6c6caad8d15ba70b37f2844b39362c6006fec24bb4c4b8d1b88b2adcc6225c96907f6db7913fece8d531704de7ef88ee91848aed7df3f02dbb1a30ee17bfd6966f973a765607ca40fcad39222f4a40b5e29d8006b65162474e18b26b11b607d1144e535bbdc4963225355f4d545307c822b097374bdf224464ddc66366047425941926c36f92af91ffdccf2ec649d66893bbc379673f1e02ea2b6f6210518128874b6adcb2316444a2c2fd9cc6b760dd2df5b16139c4178b975277f1a2146eb1098d68d0c1452c30b8729aa875b5c5c81fbdaaa773a0119379f7192d3a8bcb788833f4f23e3139d596a8ac67a171ee0b8a95f25863e97a8a350e8ea13ca3f166d22a683f2253930fb287417da4df58e58724568ecad53f4781d13b2a3c430f46abceee0d113db80efb1113058b374e8dbfc6c0a16ec2dd7287459c10189a8fa310ce653a36c34ce781bcfedb0c3ff6166778b380d8238aabfaea8795f1f9adfac07cc0674e0c408e7bcc0c7f639a62e31b4779767eddf86f009c12874c168605f90ab9b4f106ead320f97cfa3fb64b305a438714b07255410bc890da28c24a34d84a96844ff7589e391b9ac00d4d802bd1903788c6b080d36e44af1ca2fad60b94375c55ce910ddad758f9f82205ac5bba0c04df78824186cc1d99e9c2ce7774e9141e6034cc4826d7004591b2027126ed214a4c609042abc7cb4209ad59f00788446ad85ac9f1625861a370c071d3bc1621ce238e3cc9ba602c04e4a9ee81f6877c523e42f753a64355d04fba2fd22c22126544fd6bbcc2ce3db9a4e2bbc2db24b39ea39a733e52bc441bc122cae9192fab6dc0b6893d78393871a2d830eb4c53e739f37a8d74bd38d4bed14e31f65622a98ff876df2e698ac0f7d831ae36009ab50ac105a600d4c3807018a6cf070b522eb357bb8e11de24e787a14f5aa6bffd05475492628c7120e7bd8a3d5a490b6d01bb8663d4a4465e80afc28c3252202cc057f1479a54480b5d97708c5c52512fc8d7b072e4055cea4e86c29f226537c663d6e4e0ac283b088aeb7fbc44cb106f17e3a52e6c6fc6096277fd28e87b48820981deaf74ddb2bd90e1ed50e61d750e76a4cb4a7f60cf42562b909f4c1a6ef2911c6e7e2a9c044d9d29b4960eeca6278a54bf2eb692352c5b2f765ef148c43dbe68507b9235ba7ea54360a9fc47fdb404ed07381c6bf5beec6aaf4e16102eff1dc5a51e8b9a66ce40904d3cd9a9e867a63223f98476d6b4430df51ee672d600b888a95263df4055ab6a95ff142b15346910b6d11e430ce3d791498f22378460e8e7574105f9c6a4a06c66b74899b7c6a401318d498ee073c9a450ddfd7f747202438045472cc8fa675dabb8fd39b484314dd76a6501a68d14ceb956cd5a982ee65a5d882335bd281b674108b8566486953cdf5ad1b42335f3d62a1f8f5413ecd68a4297e94ab06d6b6590a41516c72cb602c19984dcd70a52211a1770ad920ed1c242b1563555b55a664c62f8a815cb20a92c1372f5b4896059abb0c7481a65adb22349c13a592b5e1795e731941e6bb55b1f8395b1563433492da0b54a5a68d3fcac15d9060eb59db55a7768136cd60a41a20dffcfddced6339bf5bcbd65b44193cf0c2186e79e900b004bd8378047c4fb0d54ff67173e0e14677002b6c91bd9fb555057af06dbd8dcdd3c6cc85caf3400832e844fbc21ec10076c65263bbe6d78646da8dc48f81c4a6cd3b23b6802d443008bcd5e553a1f2ea5e16e07940467412236d2ea4acbf06d2e76303c113c1a0e07a5257d0a216db7831c214962d66b334be2d15c1667f865496ef9bbefe5809ae708589525517f83d6fa56fe2c89b81a786c0e0ed7c651006f176e561ca6e7fb6d56112d2cc7362b750f49549b95267de8e981096d56ab7d8090f10e9fcd6a4fe928dd56f22ac324af8dcc0d9749bd5979debdf43310f46615e103ca2b7e63cf9202c60eec68934e3649bac8c2d5c366e5e2bbc26615af310b9b95d747019b15cf3bb8b5227e2fc3f2787e26804b96942e73b9cf8bc62fa2c5bb5dc809d44bdeac04d757c85f184a96b4f000e4b15f607a9644715480566766dc1a62799a6149ecd120d8ac468522d8ac2c3c6861b3e2fea41896b4720d4003e82d27a1eb3d2007a1e18c250705bf608106c93a6044b31aee1ae373855ca5a4b8efbfd2bac732fc59356e9f3f098ed1eec926e8a4b98aeb5798f8551256425c09696508a52d4f6be818c6581a1cac941227f532cf58a8f0f41e58ce4d42259e0d06cd63ff970ca60b4132d744d42b95a65f36bca74ddefe6ade535f2f2ffdcd49ce1a8db858c313c676f0591de453c4870ce46fd460ab52a6a42841e23569c760c2ed2402bd898bc5cf544fae3a5184e18bb70de1a48446d6cb105b788916b3df5153adec54a836e5d9c034fa8801cd2000af7fee05a4bd6755d32245c49a21d5072c97ff2fc23702823161ec9f3ab2f8c8dd7d300beefd34aef801a7ae075241818331d1da85c042a20ca2903f5c4abf8b5dedb2ae3a33418c287cc1e53a5db45090d04979634fe6ed7ec09afa76253ce5a075ae1e277f94af605c1e380c9808fd73ce6c5b7bb58d5b4bc0ab0e7c5676721aea90688c89dfea59fefb222f536f07ffbef8ef0848ecc74ee091b415dd38e5b353498a8bdf775e9caca9c53d2c0bdaaa8dd11245004d3924fcc35405622524442380435e31d90f9ec20ff98fb4362fef6ec1baa0050a19230581457b3c33313ffed840042e10c2b35a4d53c897b21a4e65ee172fec48ccaf5e6369603fb5efd2b9559af8c958e87ebf2ad16586518efb2b05094a4fb207439bc2bb04704cf266899b9cac12b5771587cb9de5a3a448a98f0fedf65d603023762ef44d934e2a69dc785e30d8397027cf6064953d303a8d6a37c75aee1e43b43a5be3e75654957814c1b090381ddefb1c7477a7357eef8a8ab2c78adb8022b6d96efaed600ddcf7e1b2a48e7f71b8a613f6f5b60f6f7b0981a81da864a1c69bcb6290a7fc6dec389ea8611e66271150744cd7119877a2456ea094bdd59f51cf238db4b4a3c3df0260390225782dd842e8cabd59bbb0ac3911c8c18226daad6e2a14c83ee503030bb100ec08ceae6db8d603c180ed701d15cbab97dbe8217f80adc4ed2a42cf63f546031060519355d418aec35dbf2a3a5f4b6cb31a53bd9d4958ee40f0bdf74aa682f3692a932d413f82777a416df7df3d9a4bfe1f5a941f65e87430b68abd762bd09ff31ed12ee9fd08e2193858011d5f108a4f89633d7cb2a2e5d73a8eb8609282acb2e124ca5c228450bec5ef3bd2e554e3a71788c4f882a39dc4b802423ee46559eb681491d16d82dbbf2aebf052f1264670892305c4a111222eaa8972103bdc6b76f350c3386ef0014b79e32b6f64119846ec93a6d004e9b54260f4b8d02292855f1c9779d37e735946d56c14ca8f6609193697b06dd9dff42932af597d1b51ce1a64df093eae5ac09ae2ee2ac2ea1675b7b784fc2bda38fe2ac2e83e7d5adef9b7b2547fb2626fafe44bf6e1a586f37c917e3314c0a2d63df79f6c5331252abda43b14e210ed74443f942806a50bcf6e195d66db099dfa1fc70817bab2eb25cd9e79ca3a1968968f6d1c4c97d0d4d294270c7aca9054173da4bb8f3f02812bbfc1131276ec65e2cc219596729aea1c3882b2c301bda0f0b1b072f00e1d8843372604f5012d1618249796f43b087e46782bdcd92bbfe8df60ce9ac6379ccb364eb6101bf6b47ec93c9ecbc70d1cc6d23892e555a1198768addd2f276e07abdf7d283971bf842db7643c495471fb703e28f7c6dc7669ebf35ec0cbec7a53549d015136e426a4bb54e589a9f982d2fac5af52c18e72b640b4b1ab18dbd7927efe8b7150d3abea948ab3b2506892632b70305c517f747140e696289b8cfd3a5d9ef822291bbcd4d84de3812e333437b91be3f0dbbb84a2b618c760dcda8390f8b26cf40b1d74a1baad5d34cf76c1636d6560541a43b60c26953174776c40b0fbe53379e60308ed4dc193343a05fc132576584858ef109ef33728e8b51db511dc6974107604f880635a0377e0c59945eb2270a4e245df86163282cbcdb3bb3230537f64073571f88e92aac2e505050ba2ea7a85818d2afe802b86160732bd756554e6217ff687c74e2733467873f1fc2c6a3fb589140db351f655a48059a9c0fbb6035b8e3062163cfb18423b082676d8bbcc68e7cc90aa30fb69b5a8b36e8111a5435373e1d4dc72fd62699ebf5c36dd3a3aa29dfe3629347056e3b534b0fd2342436f022f733ca471b3adac64f256070984cb207a095655963d774018f4eabf2b3791fb7efbd199a2b1e4ee2080cab490ffa1281749fdfae2f8da9b220086b262a0b45fba818e9c2304990f544996619c2118481a5c8404d204e03afea5b32ca8b408708e6bd6c88001b84b244ff0536f4dc0e35fa00a3250a14bf44616829412a8fba6b06e29f43ae5f6243e04c00f2f9664fff98e585a966e25779b6250f7d8384d45974e0fb8c74950763a618b7ba83c84dc114132220a719c22a1e870468488d6c0c5e936cd34f93125d193f561f4e58881dac12b9c4915db12235b03b2c9f81158933f03bd7bd03c79e0eaa6c1d99a7680c040d99a2b88c0112a0a4884cc4434d7bb9dd612183a1f3e51f27e70a7de0d34357ca1af3e86c3918526f17257913d3c9388f08bcc08cab9d8cb8801db1a0989a1fe183f8904763545e564541ddd8964a0fedb988683741c51b034c200e1890c2141b5d3cb415981eb2214669b5184c753e0e635b015e7fc6863fd4cc3218ace432f165dafebfb20b426e75879ea8c22e736b49181efba7909bf56cc491c07e3b28b5b754df2908fe8b724dfab66ac97f8705360db2cad8fcaa19879d1fcaa283f01efd1cf04986b6b55d9a62e6b70f46cfa6fb684e6a340f0a23594e7e233dd722608b2d890abc2cbe0a23e20801d06e7f137bdf3893c18c00812fe93dd6f8d641bd0cc12b374d3f52a8339a2e25bf5b54c3900105f85cc88307b6aebe2a68a1bd7a5c84f952066dc6c054503296c80de9529993a8d68cd13932572fff94cb4dd28d30600f80c54904b0000b3a64498653f459431a38dbec1ccdb06cc86d75e9ba508076d2a3d1d2b20b83b90fe8e6506ba3bd5ad347a39655c1f62de1db445c7c0043230c66e85541d099cf447802b3f4eaf1d1b90c541e31edf94f33aa49f81d367c7b24971960bf0d15bf57af3c3686c90725e4850528357161540c6d216b00eb552760386e588e9b0a2412487d5d27e641a0c69e946332233b870dcccd9919971a7f15cb9a9388dd306d9e0219570d45aa99b2b20ded92fb670eb3aab9328899840c911378c2be72510bf2bb007f1a05a17c05e002d9db862c26e3007419a2b16c751d3367299cc84b0b82f1ace2f1e0a5ee25f8105350d4c82a2328ac48d78de4cd749d4c14b225f1c5d7f0e40464b15edd0cf07c6e9024f774fe17cd077b38d902c99b2f606c32f0fe41d79b1898d87739ef61e62b0b000fd3aa45d54d811eba087284f1ce3ccdecec78016afd18cf4977a976f9e986bcdc4bdc2b3c6f2bb90cb4cdd5a7c229b0991ef80d432a9cb7e9bda89ef481580a2b8c74ac090a444a4b7458f59149853f65be1d53473da1961c1d7124e48b16854aa4dd0e5ec94c5d9889cb0029439ec9fff1f589d9574c37f4bc122b9e7513ea44c3ff1f9f3cf5327b5ff0cd9975d9d431913a918ff6b47775f6eb32a48d506f1464a368f50876b03eed2529b40ffb4523057734be3c5d28740fd120a6198a3fb30eb8f1557f7300a86c1565ea5554073bf7ea5401315f0581cb85c51853a546ee21a5ded4d114c71028846f475869268744cede7f247a05352bae8bc72b50b0e43293f33797063dddc85104220a4fda915cb7489111de5709c95471c6c095b844a8b36a0205989ea9cf7ea0a4e01cd49957eced99e11e7037e3c612afaa7866da250445f304da93310fbfc07d47299025e43350930435e119e844a506caefe42c07ddb169301bc396fdd1497e886a8da39e1dbd5ebd2726110b3ec37e92c1f9235942386d6afe78f55835fd68d9fcd0c42b096c16484dc6688c0805f517811a5e2a22195b5266420829588c50beb1ab58c52c3e9d025da3a0215a8c65725c8e18c13599a9441c500515b267f26707e2ebd3c792cdd9c5fa85fe61fe84272e92206043f4467398fab9059d20f301506620c59437b6492456fba0816d4b46d9257c017479a4592dda2ac4ab681b8faae77ad45de049bbab21f0dd0b923ac413455ea7cb687f0377c97e9f471b1125f349838e41e066fe057667e842b1052489121b11010a73828ae4da4d4e40241e77ea9c0395fc5918feaf15d4acc02295c18598e2426421f8df693493a4b138723af912099333e8d0af36a517f85b8794a4689e65569deca6969ef1f6c774a73e94d4b3dff1060266729788c9febcbcb3d9665e17349615a332bcb6f96aafc1fad09bd68f430b6693d7abcde8d6bc237eacd2cf9c9ed28fc0753fe5330575f40a8e37029d79f7b1ca87c902a153f4154454996b5d26b0d4d512f9ea6b8ca181d62f2939ea626476f3b5e6cdb696c451768b5913a1468d14ece8b6c54626b0eeda4a24db3b6c6c7de89b0cc621c9623072b44b38c8adf27bdeca60d69e2b44ea46ad5b487dcba56946d7ce4acf1fb5bae8b6a5594820b4b114adab8b9957995e7b5caf3eec93f14aa7fd613973af2b795af12b5c8250f27d6cb4efa484b6041b026a75d0965abec8d022a33a709a2fa315e37eb87d45715a877566889e104ff3222388fbb1c17f793a175e9b0bb081279804c9cf8e6d180ec25177324510aa2e9b60a827976fa2e116e1b13c88435fd5fea0c9d7b493e82b6ac20393d107f0d18fad251da2564ea9f71ad554d3582d64a13dc52121f45d92a5819480718413bbde08f535be9f7d951cc7f86bf6132099320469d0805893c2afbe48e41c0e2cfdb0058499b2d260da9f728be6d1c0454045fbf55f8411e0f936d479cd326d4389394c94612126ae650fa003cf2cde4806e520e8cc6432349ca4895d4e582d90cc0098b68772c0775094a969751ebb9bde39af5a9f408eac4c46535552c768b714a66d0bb298f431f1fd5ed29a114abf430a643da9cd3ebdc05c0807f7f3e2a4284e2202b32713e0ae5189989c85367b9561af5b6a8e3399e2c258a940a25a10a7affaeabeca43d851b9d14dc7121bfae3293c44685f04b85bb3add3d26cec536221b8efad0d104ff67cb5c0394970466e4ab1b732c1a7da3998a2018ee0ff4831b0551250f458bcf69f7146e657e2c2881297076fcf2f7701d93049a31583352e747ef227a3d31f2145f9a9577a10ddd37b92b45da5d09bb2875d36d611f2e92580904efabcbceca1a003cc5645134621e2b2040168c6f7d08a647a25965bbdd5cb204e81654ee2b26c8407d1af449edbaec079f1340dd955d03ee4ea3365630aed519d9276fa0f0aed824a105b1916a4f13bc4b162f8ba720f53bb75d3df1932a96527fd4695b60358b5280d49c941647655b0053231e554a4081104a6b54ebd137b5a250a24acda9a792d38cca0efaa59658d41451a2188a0f79f645cd6ef855b98154201b9b1771f350061bf3f2b5e1f42b6e8a56d0a63bada8364b168355453e796f3e7e909baf5e85a8b917da4cc8fa3097156d237f4b5ce86451d5c3cb11414fce7a0e556248750718c017ee9787d19d18095c06b33deb51a8553d9f96314186dc617de1c4c30021a0fcfc1fe98b4c09a1fb11e8885168f646f1844a1046c981eb1b9bbfd303845850b04f8e0663ce7c0ea9f30ea3f072240c05b642ecd18e8e3d73aec944892b11368bf3a588c352a334467cf5201046d4f11079bc8eac16ee8b3d24afe1eabc85910f61b86a83e8311d79e70464b8524eaa818100caebc7d90437d656c2bd865bb220e34ed2152c1eaf04aa94b3cd32cbb73276e28cf356540552f7bb47dcf41d62b1b8b4699e6e30d1a80d998c49be2da816d4ce8c1fcfa01b106c7e1a7ba5545cf423f3a8f644069d3cc2404231266362b05aeb86b72d0be86971fc2045041d522c8ace5acea695b6068ba00738691478c872072510ba4573144c9a69ab7b3621c11c9f83585d3cc60bc6c4ece338d114b22c5a15cde0df9c218545cf2b4229a356759844ced586a70bfb0d6505486d80d16186c02b44adbd424664cdaa4fbd2aac5d00bb960d517812f09f519d0069e263ed5cdce073a23bd347ec0c714ae385cc9d51a40f2463b840cde75688ec1db3587257827cc221c428f2be29f5ddeb5c0d022ea939a5f4c9e639053664731f5d1ab7ea7988651360d376769ed5d9b4deee9685820d517d6394c1474304c008afa5a0995c4f1a1333ecf801703254242c35c80ba1161f83b46864d893949d4950bb6af4e8c2a80df53203c99d16465d9d19b10e116a5e4c2ec03dc64b3c47ea90fc857ffecb926827a2221f6e85248732cee4f0da8b75c5ac9e986adb503930596da276fa0ce3f1941f03f868d4e377b8436ac658450331ab43a39e1c5503c960397f3d584d8c506575780dccf8e57f2d4953f8833a2192e64f251bef995db2736b514c1503e739780c30192e2a8191e3d9647fcc93151590c7013e4785df7120043cd6eff1f4ad54f87d23948955184f192ffcd0648d13e80503b3a6c45de5100c23ebf66eea34782d83f0a06e4dafcedf0470be2936f7204af11243f1b68f22d2eb3519682240c22e0ee88faab61a8b7c7dfadc7e9cddd0712c0dc294ff775a27cad1943c27279233926ee73f1df9c1cc56b74ded0fc6cf900f818b51da8f28ffac6d27cfb8edd53ec42dd501d535dafa7f9db050a9e785a27d44918ba210e00f6501b76ff0c8e4adf625e72ab49d0c06e43885c323c9d1c21914e72288333ed2758d31dd215a36375bb9bff0c14b00469782bb6a63c0b80bec6fe910237f62cbdca3088d376a1b837d2e83687acdba55f5ac90bdf739961fdac72f8279f0fc284a2139d1ee67287697c69069c7a804b17d7c3dc58099fb385ba7046122049fea3b1c2505ed30728035f872b8fe63a76525521dae771bb4f16725c4d9e64e86851fe9ca19861c0262d5ea3a5d4a11af062357d156866c302a4338acd5bd8817032df9862f536db62d38056a1f597e44b4d0a393707466cc38408ddcc390f13afd6c969e84ef5ca54e73575914935516800c0ed6d67d620ae9c39e7f09cfe2f11d164301125703446c98f46455540413881549099e39a67707f74ec12184471243b888ad0eb13053e0f23a4eaf6b6d953a128306bf710a5154f0153b2ecc4aeb3a94ce09c6e2d778ef977df219b0b6f666b563b30bf1e5ce27426e5d8370453af467226c3df48ba916ab2568801043f3db1748386c616983208e24a60c0832ef5c5964f2c6dd10a58e4c5eab87c21f9293075862a54c12b8d01063b481aa5ea4e393a4c1a7c083f8bae4b1806b9695a7947821a951327a3190e759261b3fb08ac649d097845c2478dc26c2708740ef855645c578c8ec0afdd1dc3947218894f729d95cd3acb5458178c8ac1c43a5f0acc46d69f541ad30305ad123466cd51115096d71ab7201dad249c9bbc5eabe140e61d697987d2103ad62195d13f434d797b28c435c5db0732c637e56f97c99e6845ad0a05a4b56ba7015ec968d5652ab0e801c4c25ceca3799acae80538d31ab5864ae7253c2b97bfea671d27c1c046c1338c8ea405a06641a8f0f851566b1293b7cd5e95f30fd7b78f6ecd822998bd4b88f9f2f608e651f73bc9388ea969792e4a2f4214389630282b4218e46529d5075028221a7a85a932ce52c73979700c74d42036380c72db5f5cf03633fd0a9a0fdb9541b806991e9fd92e2c03fe37e7d810695e8fd37c5ed3c40a7d357da1f6310d7a29ba4eba548e0f07ea26650c39ffc92bd3310b28ce70d828cf2084c0f0f92718a80ca6b984d50eba72c874a217da106a5f2191eca010221d742dc6844018cbe327ba20fa0362d2a90e6a1e58a0134b72a0ae1f6714d3b44dabb20ad887815a6fa980b600fd072ecb81c1f87c6bc78b41f82b995620b0b822293e28340930d893463ad6091c5c541514f41f56df6574e77fb3ab0132e0a833c644c593262d133c73c8e3fc1a9937723c4787b03a99d374fd51b3e47bfe9c2aaa09e743787b7d0b88eb9436e02674dee34904b6df54fb9b35731673fb4bf1665abb55783e3f542e40c356c01e06817cf48ecb2e65bf70eaffa09c89f708cf26d37e8b7af9f278e39a87aab2f0f6667e2fa707326a27ecedb9214cf448e2118361541a1bfc6255a7ad153fee723cd97aecbf4e45fa609c1f4b78645ecf553db8b60b3ee4ca7f54fe49cb8c87324ac76fc050f9fecf3cff58861262eed7c0b3e76792d3726857a171920de39d0eafb9e028d0ffbe87704893023957bbf050d3b2774cbc594d1dd4a5242f21c88759b17d0ea23cd6addbbdf856fef0a975124d7a803f27bcaedbbe2ab6e5611d0cf7fd145c335cb450c02a6b889cab5a8b0bb47f79a269595fe53c71bae1ce09eb18bd4de80202eeea4a787d74d911ccd56a64cd95803ad5dd8a9dacb0b217a9199512495d7f62fcbcc04c8575874d6b073ce8f687262488a9a75d299c5e2d81d8b770b515f631e0b41d3b9b6946ec03a755f689788328473235536be192552f0d31fe028a00ddb513751ac2fe5f7108075dcc18cb3277c810444cfb6b56a44fa604c3bbb6af59e4b8723d5f5fb3cec91bb67f5c654b413ec6c08d805396193501c78cde8a4a04c9c00b85fc90e82182e38562765dafa8d12a5f5e901a7833fb4bd3c0aae0ea2f0d18cb189d5310de7254d9ea6791cdcd0cdb279eeed4956599586bcc262f51470e8bd2a1cff1e1660c6484156e4c27d910900df561d1dc30f774583c6e7bd55f86dfc8146f855f40ad5a1b5119d63a48dbe555383ddbd25c71f89e0ad8dabf6e150a88deef347400c1183b5acf17f7a85d90ab0863a7c51733f0e0ce1edc21e51bd581433032a21c7a257205a1da903ae0980b1a94a54d40c6193424fd8a0a9a88143445431092a8d19ba20a878c2172511ff969241447223c40849bb29b1f097021dfa4b76e01f1b9460370577f008ae1935e75ce013acbf386a4f36dabdf74e01630bdb0962095e1705c8d3c1e29d7341a3a028a5295e4c5722e241a1a204edd8b163c78e1d2f883ccf34caf1623a0f803c9cd0299504d883dbe958de11cf7358002e093f1940589c74024e460f2f243977029850c7e286c2ce05204f13e5ecb070ab148c461f10ce3df7563ceeb13a16271376a14c2a89d22828e58218a32792e8ac10f54cea0560e74d5942a78344a58be9bc8a952e5c91829486b06b24c26e0889aee61ba211724da36371deea1b22115d093b9f924a02e4c2ee58cd79d735ea086f0b9e15cf4ac7759e67f2be26789ed7795eaa8928a630258a2900610a50583895254481480798c200d8c2619c678707a36aa1423d4145b9c1bf23daf5b5e452787af1e22efcdb401fe0c53dae1485632945f17494a478319ef742c5a285857f0e03c689050c16a38ee9bc859592144f8777a5633af74a52ba17aaee138b9547d4acce4adbe8bc9085ca23ea667d2f5cc8e2f4a2c5949ee9be6eb4829105d0c579504f3c1413a826bc4f051252d8a14e8062a2f3282e543c1e14586e50f1c8849e73aa158e7a827a62857b8e3a018a09981528281c070306d7a53c7044878ee5351142cf795a8a4cc7f2767461171ee9900051dd8aeb0e809d8f5e7c321cc67764380c8ccb5875ab9d192ec365ac92c8f019ab25352f3b420fc66538cf8ed0c32390e872b838004a527674395edcf38e080050ad70cee5c90e1e542e2b1a1d4b864a46e7299fe1302a1897e1466678ca6538cc0c950c158caaa444c7f24a4f3a96576ad233de8eef084f870cf74aa5924724435582517d517ee8589ee733aa803c5f1454e9c90bcfa5d0861b62b8e7a5261e0c477909047d0018eea19eb4f80e17aa17315e78e737dce0f2e286171d4c0b18316e403d413d710123c60d36bc68d1e2058c1837dc002305306e038cbb8069b163c5c782c5ea53f1b050cdb042d7ad58b1a2fb542ebe42b524ec5c4a4e5a3c37398f67e5a3d1e9e89a1aa1e781a318499c524dc0ce4fa08f564a9c5032f2172fad94b0b80a2ff9894381237ff1058cfc65b5001657b1fa5020e6c216f7d2f0057953f48cc7e3290d80de149e47b4fabe162f95967cfe8347f288ba2724188dea463a6828140a8542a14854ed41b90a158ef2ee54f225359ec94bbe63f2d22a89139d2729b9c9eb563b30a62535a7929b6ed0e5e0692ba52762d0e570e1a318bec2bf291f0c918ae49cffd07d535cac507d533a16958fc8854b8e50ea08f0264708c66f7098951227764c0ee34a4a2b199e971c86c3f06ea5c4b492e1ad640401c34b6e04c6ca080c8cc3ac606ed0b160a2c040e9991148f484a7c3e42390050b9e6f0a0c944e0320e83f7430503c1da6212f66e42d5a9c560d43e432b4e2f1ae802e6c507953665881e8e424d20b6f49d8bd70e12717fe836783ca8569280530261507d30d852ede8205cf3705158228958bbfa838a11537c40575ac266089880545040346e732c4c3b90c85a6219721d3104c8bf398864297219e125189a84ac9442a119588484d401e18a29652019007868828e58124d903faa65899a2cb41faa874393c270a475da075ac1149d564c71a91bad40b40927b242ea8638dbc519782e86a4aab520a05200f17148e9ceb7494bcdda44275311c2ae50190c734445ab1b4944a303a18a26f4a9783e444de12c2afc404e4310d9986ba1c46343131d1e590d18d4c433c26254c43e188eb54a9244e9ec200588a3185281cf12479c28b29410947533ad668e4304455ba91bb08ea72c8e84644e1c8499df378ab52e772e3f1a0c82960742d44744b3c52aa0c5c0dc98a17c339e98a152b57ae34c7828ae17d2e37328288e12d7c27c6aabd9816ab9dd30845254c3501bf262edf1155408ee73b8224e4442e852e609c738f4a2e8537b40be59e13fa002f9ce3823c2b302a1bbc53b18437a87c4a9cc380f1c1f0bad0b1465e958e35f251f7141d3372ef0b61545e179ae542e5530a6d5879569a3572162a21ef4adb18f9048808aa61e127cf069567e506954f2984b1f2aa340c9557a5674623f7a8d034a316ee429582a1524d0b87597956461e51cf8c3ca504387251a14285772a1e6fca0c2b809d8fc04ee5e2df8b4bc95d54260f0aa1a742b1c86fa87444b7e4e533f1e0d434521e8002a2c2f65428cf591a0cbff04b51006c16ef72b07c5e4307140fe1c7f2b9c7a2fac49081f6a49098202241e1ba158f47e449e1dcf325352cdc4a46109f7bbef3b9b74ae204e7493cff563b28fffc5b25f91cb55a52432249093dff9838c5a0cbd1a726784e4f7c242924d214228c46a7d3e9a49a610590c57948529230d1c2b1a846dea25a1272a4518f485454a425742cd29411498a47a43a49e1462c38a53ce08dbc8fa7a3f87e1ca105e9727c2ea5a97489c50b5317005346809cb7f777fa91d3b1462b24dc1aa85441b5b84c47c33b5697a34849982a01c8e28ef225353246ab244e8c48abd10ab54a725a2da94991c0f3195640d3eaf4c363711616128b2a87a05169341ab1fca0ddc09841b302de2f7416550e411f97e308ed47901fa55147a54687dee5e8c28e867f9ed7a136907a927a927a925a22b5446a89d412a925524ba496482d915a22b5446a89d408522270e2c48913274e9c3871e2c48913274e9c3871e2c48913274e9c3871e2c48913275de7a49a80edddc30ba2d03bdd203c4539a59a803c24a20c40f174bc403911bd9c885e4e442f27a29717279d482412a97b21f217503c1d444456ac5ce1694144c454f332e279210a3d276a41d48288a8059111c06ec5d38228f4dc7b41c4c54c919200c8437a53b09043903785e7791200bbd58c2bc80ca1e0d43ac0cf3bad48242fc90409a96859b578c905889610d5e224171f2837f989f41dd1b1bc0f898ee535691f8d5c6e50a7d18865f402b258317a0147a3d1e8c442b5e2c5c197af73152d2453cb50e772d382042833d4b196b47c324c62782d3e6a19720a3d2bed6a51b1849e145d8e1647b9d7852e070af582526921e4dc1486906b162a849c93bcd0d342177a5af09c107a573c1d9eb7951407404ed5b9495522a93c27c8301981dc890923f44028ac11761446584214a470bee2035590482f2516a59829628aa4f0a638f98805f417d5d7f948858b0a2ca14a31453904a154a58ec5ad501d0073f83e934f1995869c521c0049feb1a28829f24a44744b583c161ea43690da406a0333c8e07ddea586c01715298a177372155184a793df2ff4ac7439507e3a8d5c482e232f0b56502acf4ac7f2bc2c849e7b9e97857675e8b1944a251797938b698989b4ea518dc9b3c18b978652d014a7d14a66e81b41cf74fe44f53da102c8f38de03302896f04edeaf01baa02c83dd139a1f424468a0660c9882e470f859d874489a77444c8f3050575242a61479ad2334320cf17543aa20a20cf1774c4f705793143abef49e78553d3e0214551d1dd8aa7149a4c4e4a0d813cde94ae89919a01f8b9477aa2cb710396d1c85990706b085da6ccb002884ac2c4a9432d093bd52aa688e36141297955c291abbc29aaa631fabc23b473fd845237c5a96970bde229b1b47350003fdfc1228305e6033b5217721c67527d1d0b9117815315cfca4b6a08fc3894c9e49d937cc9c89b4203264255d85148110a4fdc2a87a09ef17c0611c8430a497eead1e914a256560051ee4d095b5a7c5472d29b3262597d4774444f6650f19008bb269f12a39bd1a742712115838e63b1584f3c0bf48c2b8cbc2099a1094441a507514001ca0c2cccf0811a68f09cac94ba542a91a854f1ae90a87857bc2b1dabeb54a001e4f1ae78574aa922c091b394bc2bde15ee4322e43c5504d884a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a222ee0bfa823a9650d8f90c33805fcdfd846abacbd1b5b8e745986404d1e29eefb4ac764c9cf7f9e8baafe4c3f346208b8b8f2f1cf960e1f9823c27f818a148a5919f4ca3212c3e4203d8758c26524c409ece53e0b991aec6e3dc53b517c3057da428babbbbbbbf9e81021350780242e10828083d418a2778e10944218c8ec5b912a7ee7c5c1f3e7c34178630f8f0aeab5183f37c70443c10fcbee08a9c6e778d95f6b88cbbfc3e2eefdb4a1d1ce6fa77e6886fc32fa03c13abada3155f6a1a7c41433786cda8ac5a1b182ea7f831f77c3d67c6561381befc12c94b09c017a1ee0e1b7cb1e96e52832f3c340ce63efeb3796dc69eebdf5b8a8e7d1c06f34a274d9ca943bc15f39e43a6cd682d07a78994f6c3724cce7a3f57eaf8ef24c51fdd3500050c4f4250057c5b342e17ae96e2fa19e85daeda677cc3a00a0874bbeb766d9e639d351f67cdeb45ea73ff5f351168ac6fc325b6d93bd64afc77242d0dffa5e5db147f7c6591de8cffbec85956fa029ab597ad2602bdba3bd6dd938646bc18bf0fcdb446af0d3505885a42776bfc2cbe0dfff56cab63eaee95fab5597c1ff7e932ebb43cab4feaec88eff37af5ccff71b9622f1b16dfc8f8632d6d4dcf7c2184c0147f7d1f2f568b23be4d0768a7477c9a8da95bd5dd9c8869cde5c22ed7eb4b24d336c4f60fc47d9b6d5e21ba7b06acc153134fc662b402a0010d9e7a685bd963ad8d168e1bad1a33b171e6e9cd34386eec10df00b1d10006b8914314dfc64ccd8aad5849cb747633a6b3bf366b71ee8fd7ba5c36ee8f7748ab5259c69f2769b38f9fe7682bfd638e6ff3879c4e92f4c731a5ed78cb88cdf1e9b34af31c29397d6e327adfc76df691b4fe3f9ecb98cb544b317eec3f5f7dbacd4e1333fdc1fe3f5e9ff6e3b01f8292af6a615ea9d7cf99de9ffb3ed6ffce4abd859f667a2d2d97d39f969f264ed1f174fc3ef775bcbb7b1a34cd984ca69616a6b4ec326b32995a62f0cc58e70ccef57d9e8606870f8da5ad1616ed4843e3c2b69c692c07600678cd665cda984ca616b0d4846e8914577a33d02de6e37fcceb143d4f5af62763d3efdb3cd749eff4f1afd671a533576bb34392d3e6d5c22439451fdf65d6efc76a65b5ee4fdb714c92d3e656a7106b7766acc4371b39da5a77bf74770e690cdd3d3e123f803f2d7ba5feb5597d3a9e34f7f7a1599c7ebbef739381fe356f395fafee4e4077ffe86e20ddfd8386e6068e1d64376ee4a0b17163d6d08143d461c48143871d355ec7cce779338e959806e7d2f6884fb3b33bc596cb75cb94a4b97ce56b6db612cf7c6d5e99cbf5359a6b794931daaf95dd19adb9ad5e841255781f9aa70fbd3fbef024c9f9c2f34513f3b4613ad2c43c63af17af95d9fb43f82de63f521f3abacd9e6db5cf79f68804dd8dd3200bad1bdfd6fd4c695ea424fe6b451a71d610471cb21da60e990e03e4d8a1a3c60d03d89838748c3a747803ec88e9d07123c7e790ed20ea4023665c5e9aee46400f3c1c8024a798b1adbdf27c5d5a22f9dbddaeb7ddf2cb0e41f1eb6713e3afbd80662dd7a7362afebd3fd6c7d71ae0762715a9ecebc7ba7bc70b68d6eefbd0d9ad8940ddad03ffd8dd3932ad51f2d5dd3be07f5977eb80237f8f487377dfc0f9319e9936a3fff3ba2fa059eb6e1b237dddee9748babb4677d3b4702d522dc5f78d7c8c5e11c74a1d5b8d4ed206888ef56db630bfce7d72acf3c7ebe092b4dd5267aca5ec89544b73293ed0cdadac99553a92f6c7e74933ad406675d244a09b6befbd2132d617f1f3a87446ef903b9fb499558a2d69337eb6bd2886f84b244fa4be6d08f9b54e9acdcfe3d86af74716e77d19aef3ee3caed6869fc8ed7e19c4f8f95adb93bff33ef4c527327ea6d8da9ec7fbdcc74f243fc6e1cfbc232d5321aaa5592c6fc61508494e9b1b3e2e574d04aa8947ba9b467747a0bb7f68b01bc2b715a36406fa9979cb4983f393e4b4d18cdf73adac9633b824cb5a29d2643aa3799b15f1937446f3354ba3e96e6fb083e18c7f464727e7639f44cad09fb4d14c96351f6b697b909870d160e79d2969c30ecb13c6a2414e8a6e72dabc68908b4177c334c83de91eeee34abbdba57b1483cbf8b6465ba311df876b903b52d3dd3634c8c974777dd279f08ff9489696863dc6316539d08f95fafbd8dadf976dfee0ee62dd0da341ce6b7c5bb926bbf6def73a7dfc7acbfcd7aba579e6fab5276d35ea99ce9b7d5669ceb376adcc6737eaee190df65077af68b04fd0dd3f9694ddf7b17ecb549cb629e2db12dfe7f5332f8d78318d684972d2dceebc314a76374b77d7dd23efebeece072126c840063e4c2fa2341143832024c98902143bb223e8a0051479c35261618794163fad3334e9020e5981139876ac624660434a8b1b2cd0f26c98070d1f78868a30414909252a089d3a4a5050d85ea94a0c4ea7d40f524028754da762c2e473ce3b95d010e74c523ee819f9b75ae2710938f5372a094920025ce7ddc7713d9c7feea938d3f77d379d9b9c54fa48a6cf23914ca4158fe79ca9b4eaf1beeffb3caf4bc293c4a7cb1e4f9291374a521a95bc7349c09290e4f58cbcc34fd5333a9d96f490469d77cef913a7eecebdd3c8e43d5a71aa9b3f6759f974cee223151218610f8b77d8b24292243479a74202236459652f3439e7f2830b4b5e685af17ca51592249d8f3c67f1babdf312d7e9e054f27474dea76ea81bfa8486be9513487ce8f1bcc38e127a42943c1d2dde2c281557d339cb2aa873ce3955d79c4e5e3a914c9f9bba4e48a5a4e45c57422d095231f1a1c673934a6888abf19c890f35417c8ef21defe42daaae399d1ad5a242a1dcd4e2435c8d49e854123a39ca399512937325ce95b478776a51a16490dc87b0c7f314dc3a674109b5388b4a08e51c6a15e439e7dc4a4809119e9b56419e9bdcb4121af21a947b2e0bf01ca5524284e72dab20cf5d8270d9f1bc439954435c8dc94baa21aea6e42d2a21263ed4987c88ab69f193ea14c4e7285f80e72767510995845852835a297162a7c539576272959216e7fc078f45d53526958a8913487c0849ced5a4820022e93584a4554f0a6e9da7e0f6f9e79e8c203eef7ce7cbe99c25e7736791c129d58392a7234912223af79c08ce3f67f12442435e33da31f9c88928798baf9230f19ad12a09112ceeb96945446935e4351c112c9c8f569eb713c1c2d553d328813be0381e5238e0a6d800ec848a28c2f3e139a1599c7b2d9e135ac0163f7da39616ceabd2b15a5abc292b6f4aaa069c872ddf508b73dec2f20d7d46b850d8b9d75272d3ea33e21b227559f0d12114292838285250040541810205134c409182e2ca1528506e5250701cd782ef891951f03e264c4d8c667821250377777fa2e342a949251926df271324c34466a847aacf88cf08ae091240aeb9a02126ba4e26488649a7fa8c283d41012229a660251c79d3e0219172080abbe3ba4d2c2ced23171f25377537cb4d9b5425d5145e95d2172405ecbcbd295d4c3b2b8acf4bac28ba5ea574008e38af0ae9a3020681576ad4e8283bb2a9460b402e2449d15c78a5cbc1b2e2e92a3f745d0d1d46a3a0f05b491196ae7c00bc1276528457a4f054f70b5157985c093b1a61e79c075eb1c14b472bf514369652a954b2427b02e4c21692e338e738b009c79d807ba2040736019f9048aa51104f4f01e4e9d8b163c70e1ae94de974b0989c6bc2643275a1893089d1c97354948ed56100660826a8434589510410e6015fa337c72663fb03d71fcb63fc9fcd9cf0068e22b996d646f6449eb4d1bb6377c61fe79dd98a3c5912e96e1c1abcd1a1ef0d0c1e52b4bb72fdda6dda5cc65daf5b1973b970ae5fadad668bcc9b816efe96f8ef3886e5cdf8b508bead574d0472b9aaadd5acf8c2f7e9bd3366238676b779028f0f447be0dbca310ddac468cfd36dbd7dcf2b037dad09438d947697e7e93132b7ef617920e86e5a833547faa7bb1fd06068a51b47cb46cbc60c59eda53ef5b92042207c5bb79bebd3d8668de6ffe6180dae5602ddcd450016c3b2cdfb534b976b08ec86111b466a18318204fc614a77abc6172769fbebf67691f083adbb44f218013c5cb1d223803fe07023735ad8abfd58a62e336f19fab53dbc356bbdb7be463319a3b83ea6b49e6b7f7089ebd7c79626fa2dad02bc85efb4d9a68ff6dabc47b4640e39c86474744ceffcf91a6fe1faff933fe6a3a5f76d3ee49ff94879782bdb380c0ad020021af062b5e39336e3ff3c4e0f4ef4b0030f52009a425a78f6f8929c337f6d95fa5f5bbb81c367958ea3dfb7e159d3ba81e3f63de32de6b0981819164b660be03ac01c539fda674ace6a69a6e338bdce917cdafd3cc979addf44997d3c636fb3eef56d8f77848c8f83c9195a9c9fef61ed8e6c482e87e0a7d7e609245b9cfbf56748b638b36aaf10b9526bfb1addf9b141acdd019a42c6bf367fa638f64290b7c88b755292c4a5254b5b79455c8bb85e2f9c21407488dc1879ddf808890cd9d179bd5c2f7b7f8857b575a7d6dd41dd4d44772fe96e22682e9748ef8ff37fdc322567be56c8fdfb0ba816e7b523a73b3f9e516ce3f53ef6da6cf385e78b7cb14ed14a168abad500e6b842679abfd76db599f1d7e84e0ddbccb846b30672d4c0b755c3f3479cb2995badd7ef99b9849362991870619f0368dddda01a84107577979258315181091ce96edbbc3fe00e10b0cdfbe3364fff4a6bf7f38fe3d3f02475c6cf93de3c6d4f642c32ea601b24e392c7f83f76ac374080a6901a04680aa9d18cff5ad9f87e233d5b1c079a35db7f4faea5ad4daf95355a69ade7da9ffcd57fbed668d568ddf071dbd2f1f16b13c75b6395793cfed4a959ecd53aee112de924a6ae9b9d2138deba91d56218cca7e3c725ec76e748f1ac5a72c2608effda8cb10c96c9ec8ff366c75fb3622e6b1ca6037b8bc9595a05380c067325ee0840000f334f1e2e73735c06013cb85c32f27578a8519a8e6d0ad1f11efcafcd3afeb65b7677878013717f92da6a56b4150683ddb800bce5d59f766dc6a4ad3681defd69b9c4983aceb4964ece6c71b594c82dd391964868909a5c9f8a54262b7105424e9aebbf0f2543db3f104f96e3d3449d99919bf93c7077bf7407d1a000a0e84e8286033440eef20e014d90eeeed640b7aa2dd00242ab2a95d97437d9d33cdd4dbb493a7b08196d76eaf7cc9dc7f7471eb7f1e96d9c405f8be4fa3aa18c1a64845ee3df5e634d047ae5b13e2ec0eb36ce2732ab74ac9f73bb5f065113815e637d9c431198c31432eecaf8c7d7675b590db292d0edae6b65ad5b9d2ea32ef3b399b1631c86a08ea9ccf8d3f3bcefb01b384a18692b7978cb66ff1e4afef8ff784b66bdf6b4ece3d7ae9555eaffe3b8bef8d733b63592fc1fc7d3656e69fdefcc357b655446b3ade367fc3e934692a1b71c938e4bfb636b8fff4f90d2c7bf3f525cad882dedc731ecabc581d51f5b7b6ae998fae8322bc4e688bbcd9ec972ca9e87b76248727a9e8e337519751bb8647dec52fc359abd75e9b4790c0ce6e3cbb0f0a4798e1d6ef88def9964cc9f767b20bc856df366c714e86795da59b5feb41d71fead45fe96249d3dc6fa3ae3dfcf24edf1646cd6224fc628906c712acdf879dcb2ad76732d4dacf389645bebb4c115c8386baaa5d96671c6db38ff92e12b3f7e1f4ace97edbf8724e7ebbeac96330218eaae894033ab29ac74b00a5addf08b75923346e3719fa9597a850e5af40a1dcce8153a28f50a1db8a8a090a4155f2a25ba1b9374e61f5fffb296065543dd565655b6ee9eaa1d950edd8d6fdff37a7d9ef7ebcf5433fa7ecfb53f2f99ccaafaf5561a3b111ae7faf7692a1af418b812fdba9136db7423669ee3cc5feb6eb041cfde80ee7ebd07e96abbfbd4a0efe86e0606a007334f9256a4c160009ae8eef1952d89c1007c20004946ea63afcd679ea3e7d256a98fb3a63b150168a0af94a453e63603dd74f728fecbe5aa8940e38f56ac373c00804392d366d4a937b9be4eaeaf33def9632b9267edda1ee3ac9935249d3d307e512c75ba5bd660aabcc54c2653cbf839d3da3b03fc693b2693a925d7f7b99991866e612136472af559a55eb357e6e33ba64ecbb4fc3421bcf55746d2e9333d033d192bede81693a1b760b0f15af1afdff779c730984feae3e3df48729675d66e4fcb4ed25c4bb7cd1aa6b799b1e39f8d65ccdd8166cdc71fff45a017696dd6db48da9bab154b11d7d05bf57de8cca7579aeb63ff98db4ce7cfa5fee5cd8ea993d6c6ea8c62bf657a2dbdb619da8cd27cfa581f7f7d3c45afd4c7034caf74f631c7e4ac5d5bfd5a5910dec2b5cfd477c0b1c30e39bc4e5af63b735bfdc7de99e3af95184f7f21bc058339ac67086ce2b2e67f6fd956c39fa74869d965c8592279fc221d2b75fb938178cb667ca98c96656695d6acf85ea9cf545b7b444bc6684620f3ce1cbf6ffb98dfc86a3fcfd9dfd96cbab7b0e8149779661d1febebd89d9a78649c35403f562043c65993698d06b9ef33048421d3ed323692ce1edd69c0eb51c34bddd0edcd78a14477bb4b88cd91991c2136477c5629c62fda9bd3dd03e8ee6e9a43030d9736cfb8e4713c7ffc0f70cbb6dafbc73ce350a7d8dda96eaf060dda40a5bb35abf446e6fa24c5def24add7f088a5d3e7080e0100985185fa702c1426c35f1482e87e019c53493a5107c9fe2fcb33b776e329a2dce8f6a292e49b102096978fec0e9112d5963a3347c2d2dd73e03b9dd5c6f9e146b91eef64177db1a7461021713e8ee160dbab035be2d1a7bedcb050f57f66cab2880065d802dda20931aa933faf77dac0e0843a5c57967ceac523246755a0a0e2c6a3370a7eeb60dc2c818ebf7883366eb19641a6c11450bd7b7d91f4b92b3d279793429407797400416e8ee0934d8e27b1afc1adf564a13676de6f3cc787cc734e349e2696aa9d662c7d3c7b7d9ec1d7dacd3aba539e3f9a4e7e9b44c7ffe8a98fa97e434729be47d9f215ec355832c766ee01881e45a5a510cc7af33aa23a341163874e3e0b0d249b3b94df289e0db9aa9894034351188e6738cbf830176a0d9f137e6ebf03b8c3a6ec876e0a8a1c34cb6e3ec21adedfe48d232f6aa8940d58a2f97abd4e00a9eee8ed1011548a2023f0c59e9d6e349136f6913627344c6673edbdadf99560fa6d7f3a430bf56469b95d656baccd01da2d1caf467754eefc1a18a0629e0010ae80052e085c90d9a623aaf9531e9a1bb751a2c620b4508a18857113d84aa0865a0bbc506850a30012a4c2006dd7da4c10934a0bb771a9c4089478312e841cb6fd3e69a69dda6106ffdcb6c16f34ceb060e98d7e9fe3199f5d05d3098cfb458368ed80c8b8969b5582ec3ba7104e61f13a9ed969d24a910de027a172ce31f613ed312627364acd365d636453cf1bfccf8f85ff62f83c92c0cc37e9c35c7f4bf47cb6609d0ee1ed2a0046248a0a5bb8934180128dd1aaf95ddc8fc03f39916be73f6d771797f562de9f84eb21469bed346240235118809dad1dd330d06a5a1bb8d34188482d693b189af75192136475c3098cfb4b2b54484b80b06f39956cc9c79d258b2f93a0888d951bacc8e92c5c3c76eb3465a1b9b2f4c6f905cdacfb3577c61a7577ca1d62bbe70822ff8a05778610cbde20b317ac51774d0e1a27168efbe328ca2001bcd461ae8d6acdafbe3b9fe8f7fcdea780bc74a4c13ebbc352320505b298ad665f446d6d7f8b89c8961ddb2adf62f4c5528008918bbfb473bce9fc70909a0640942ba7ffc804a7628f99ede5c9b7f33f6a737777338b81b5cffe8f69164cc73467d66158a61757336bab91add1c4d37d7eae666ba39996eae00dd5c0edd5c4c37c7eae670e8e608d0cd0da09ba3d1cd09a09b5b7573aa6ecebbb900747300e8e652dddc8c6e4e463717a39bbba19b83d1cdbde8e66ce8e65c747330dd5c8b6e8e4537b7827be9e65474732eddfd35d74b60b0ee1f1040756b566916a7ad666d6c86206a1a9edd3cd8da0043c874cf3cc721509e4b7bb3d2dd3720dc72d0dd0168f0f6c466977157cdde1b5077ffdc60b720ed2e4bfb71197c5bd936c7f902da0050923c693f2ef3e250dddca9a59b333de9e64add2d2349833f3fa88ff1bfc6310482084986e3576a137023c9f0e7714622b97e6dccaff36449c407073e37e51780a690160c680aa995d8d6d693f6fa7d1b069a426e24195e2b7bda4e90561022451c680a693d2dff645a8b9578e679675e6dadfd8f8e652499f3d7dc45bf95d6c7ef11694fcc636ea4b5b1fcef94d96ed9e6d16fe2a54fcb8e6d5388b7f0adceeb36bf8f7fb63e335fad93938a6fc33eff96e9b53cb33673df56629f4f96f7beb79e2caff30062e33a3d728074774cc0eaf60917ec6e245c4042846407f82949ce1f4b922f731977e1fbde8d40b2c5b9916438abb447a4405cdbc3560467da8c1299559aad118b33dee4797dd43048b638b8f61908798bcc2a1e6bd963ace16d92364c79ccc63201b73c5aeb23979696a910343c7f3c199b36bf916c7172fd1a15220493ba39966e6ed4cd7ddd9cd7a0ad04da34705d37c7adc1a2e0de9b9e21373b44def6d9fad8fc3e8f2d29e24c2b7db2bcaffc78566a792aadd97a23c9f9fafc97e6bfb5578f487bc671beca57d31a017c5bb9acc5c6da176e4bc4b44623625a036a90ac826968e2e75ba677da683c5f7f3c9fb4f901c6bf3f9bd1bfe5fb505c5ff6a3cf8e8ca2db5d6be8ee16403ba9037ecd2abd345f22f9f125be0f0daef663c21048444005e439d2a38296e816a7391c8e01ab6ac5bf361f2d2d7fcd6f31ae49f711a09b9b02f2e8a0bbe9cda3155f3fda4a6fa6f92af00d7d12f8967c44f4577e33902a3105299c5ed0dd421aa42edd31acfa644b463ef61e78f091d6c8d8cc652d8635821e7af05b8ab018568f7d61da8ac19e24e6e532984580242e8359b7ef79dd62af570b63fc7756a9bbf0f46e606652acbde00c89ee26e2a166224dccb336de2962ca23ec2173c0138120894ab90d544bb924403438dea043ebc3652a95591ceee676e6dce58e80a30d1ead6aa90360e37cda2b3f76b95ec75b3018597e4cf4d05b5fad0c0f7f5ab6b5d2d9fb58a7cccaf2a4953ff96f9e6d7592a4d9fffe4f7efce3394288fcf0960dc75ba2e3f17d26f6b1cef1c769c931667dbc95ce1cb38e27b6343cafd7c8bf96866db3628f4db7989c19cf9accacd298cbfcb5b2bf98dafc65d3f3634af38c43c56f47cfd4719d5f739a48efd79e66bbd78ad7de4b6bd401301803605fb33a30c7148fd7fe5420dec23336eb35f4d64fb7d5d2fb4278ebe9cdd5310e99deb739a68ea9036098e2fb393006f897d66d7519a589f35d663f3673236b59ab5991e6c793e62e970dbbcb5b3f96a458adf893c912ff75c00d8f21362e17be7dcf8b24ff87010e80fd6845178c01244965c8713e6dced859e9f87de82cf4d6f894b4d966b574249fca647cc43e81389e556ab3dd6ac6cf344669f6e6cc688db53b334f1e61b63863b638b34a69d9e28cb5c8919e233f1a0673ca01f0c80bec724d978b0242c8f06dd1e499412344ddadf201865fe4d7fc3398cf2a25c929e6c0c890ea1fffb5f9c7c6ffda23da99270f2a0332f3e4011a71d12a8283eed6ed7b7c2c80c346200f04aca7fed88961af6a61773e293ace3ff30cc45b34f1cec77ebbb3d258e93f758a163bf66cfb1ef17d46975920dec2383cc64f1302dfbe07fbf8e59748444afb98cf2acdf547ea22add96ac527ef8fb5f41d6fb57c808816e3d0e2dc1e8811df1e088b637188f4a0bb3ddbdbcd1240b78a480d7c5bb7ef799153b4dd647706ba2b10c4083a082341ecc82943ce959e798eaf577e5cbec61297aff9cae2acdf75608814dd3c95d6e69d36afa5ccabd58103870d8a6f380add0d85eea6d2dd5018d224870687b0b8eb472b7aaeef2efc18dfbee7f5b35bdabadb34e256bcd4fce059a1d6c87d929c365648111e35f1884d4d3c920374336f19ce5b86d5be8e8dd2704eb5d4ca2a902174b71082d0dd517437107ed0dd3ee8010fba7b07ddfd75eba03bbcd6a65a9c5b0ddf76dbb901d99b030611eae682fcc4680f360c56e8c016ba9b63a2042ac869618328747437e703071830e4880a88e006ddcd5d800b0188b9231e56d0dd5d901b1fae70011c2e5086eef65c6840ca173ed0e40649e86e961078600a6e09aea21fba9bab42860d2449c307aca0a3bb3f273012086843e0994277734b88ddf041033080240add2ffc3ef8f640e8d0f8f66600b144b7ccda6bcb96c4eeb749fe9d7f59ddaf06139086fe99b746eb868d568d99fa636f8c86272d0153b2d3f0fc11059503287eecbd364692658d11c8ebaf155f64008150a031ae89475e3675329e41788c78d27280dccf96d4f9915e3c83903f8f837f2c4efd209824437cedb5e393b189290fdc7367ed7e9e42e027c55aa4c84879e02763f37e254b9f0ac456bb3fc889adcdde1c1a9e3feee7e0fbb1da0bd199559aebf479f289dceefb5811531ee30ff1a3b5c9af33521e334f1ef8f3f897e2e7f1629d25c640c899edce8fd666e659ad117c7b20467c9f92b6ff1e19e87164d6de9ccf33ebf018e7ff1091084152e391f10c32565b7313e748c73a6db0584b5b6b18979da8e4ce6dc6a91e26195368666404080000c31200304020160b470312995cd5f2a4d50e1400068aae6480461909a328c7510a11a38c210400000440000044300c4100b89d64aac1fda39e991434b1d75597d044ee6a1b84d23605fe2e255afb28c4e25f56ed8f1e0f146bab106c54e7ded082af03655b1cadbadcf376b757b3e930ca3a57444e198a324ef881bfdf9ac06371101fdbe9cbe9cc191f9cb5f1ffa47ce629bfc9719f742a5c6ed9def9602216099bf55974e749cd4ec9d327ccfbadd2b4754dc6e94a19b5166922d91bf024db5302cea2463f60b2ada77d16c45021878d97a12177f115b27cfed921701c7b4960e499181e78ac7848ec98fd8ae07231faa85417e19827a0c43b4d6fcda5ba87e81fe7dcd3338df557c89ceb16e2898a5cd68987f2f2087f55a94966aa9fa2b6d18ba58bd50e54bf7a273ad759a6a6c95358f359e97299bc8831ba11227161218603ec9f1d392507e30a528a8a59f9c3d76798680c2d387eeb33c097ec75db5d8cd7b51930e682f4fa6fbaa5bb85afaf481f60aac974a191803a07d7df847a7844ab840f9d741513f6822b08a3ea5f694a42c63923a4135912f734147451e23bf26db2ebe5e4bf994c938f80fcb44137113a92060417cc1aa2585006612c2fd3372e7c8deb716fa062a3344bcf3933fa76b3ef0bf065c2c2b592bd1033642548084fc7637d97ea269e58f02ccc6e5417dc4d324c01d7bce970f0fa6af571f2e281983488c2ed4d1dd05122b85e362bce774b85708de221ef3547f348fc93692c67a4641cb241919cb408b41d9d9aba4564f01274888f0d3d49da322492f7b079c0582faa06e09a68585dfd4a009e73daeb56781518d53e919caa50f7c560b7d31de18e60b59596bd9fd3d8ce8181b1b439a23203aed67a1b13cda242f287336681d02c8466c545223445590ae350fdd7078e12882068fb52827f93a007aa8ebe373ee6e61d2d413e45981ad062021c3f6c355ff9fdabc6f5168bf28015efd6dfc8c0e6f1a59bab3d84b83150767881d82c2e93e3fa4c260dbefc3643a2f7fe2e947879b27e4cac0266efc5e6859eb5730e2e5e2ea3ffd454fd9924b67a9860c1d1b5e27f505f60e5fc3b2ff3e62832d41c950d771582a8c7dbdd24c9a706de1b3f39fbed166945be0a8bd9fe70ba444770eb40367ade4aec1b8f712194276eb6248c4bbf752595b53284fbe147ffa480f3a2ee2e32011ca6fcaed8624c70a096f04567d9df9defbcb54508e3bbae537d067624125b5cf50b06d835157fdb84766083fa3af437d091af34e8994447995e33cfef9572fe76dd2f83b3b16883958bdfa33a6117275dbff3e4b48d14fd9e47c8063d9db19074270cb8af06c4fed613b8260b372c8ddebda3e26a14b2417333db65c8e378108fe1b4ed237dadeab543eb9bc90d42fcb887129ff0c6ba53995aeb783f6b4851d1defe2373ad57186a257ab0a920195abdcba8ca9a0ee456ce3e992360a3e101a12a27da08dc31f4be6c2b2762c631ab53216b46cd362f8e6e4263be2ded0f488f7375414e036ef8e5dbd9d1a651392926438a2b43ec9076055276ccb140d19ad9dd03901f52c190712acab9434e9e0d40408684d8289944233caed03ce1e636917dbde3462fa8c20cf4d3050e84f22f571a37cec2eb48a4c9d3c45b4263e519c1aa72da36a68c8ef6c81a163a09472acb6b270edc6b6db193384c7bf516d25cbe8135f05c661e1142f8b876ec18133afb9f588503c6a6df22b41c6229da060908b2018aaeb6f4900a0bc07d5994eae5e7eca3030e82dc90c3ffc11671758f982625d86708f7fe80f47cca0327b81aed14cfe46b2c44d6fd77aa1c11f420fe3bd5dd3042fea385e3f60e537e050de699fdc30b9a8421dc436ad30423ec7103d16f8fa28e56004a5eed69ee0429bba625056562a7342ed140205f067add2807eedf6809614775f6ee72ddfe23d984b27d890a93f99f6774b007ed1b37497b6dc1213c7d8d47e1ccaffe4d0ecd138e8f44c0bd1b63f81c1728aa77619687427c625a78314507201824ea85f5bb8fe9e92e7932c2e79694020a46bc69733c81cacf31b2ada6c987e0a32a23261bb9b1230376ccc663c6e6fa432e5839adb4ac6498301e7850592529428d3977fbed94beff945dba03ce6f7f5b296e763ee5a21858a0093cbf61e9935dbdb9ab6bf41e0188842d5d85067289ed22f470a74a4e698cf3d603574844f427dcfb381b4a7d760aa37c55bbbfd9e6b8cd3387435fd8e149cfaf33bb0b7053f975d87cc0ba4b9dfc22a332e72d63ea9544f6c97e25a59ae282d31e4e9ecb1d1b974d608788589fa173b887b9d1b0c182301a3808bf6406f566c4f6b68377fcb3cf59cded1138f7d7b9b835ec6aeb26005274bfe9c88b0be1c5ab700ca42b57cb7639c77fc07f93c899fae7a7937ba54042a26f23651c83288ea62800b94c7ad978357252817c46ae6853c0e0ded58f991c3f841ad9e3e1873a70236d8fe5431035c73c282b4e60648deca31f4ec159c11d3feb64b5e3f6f84bea4b9dd8a3c0576728cb264e1888dbb4fe219ebfaa0067a474829cfa95bc73edbfce30f0fdd823ab2798e693e13e13aa68e952b38ae45ecf0800e384fdb54fb2939e3b059634e285cde6819e9da37fc829cd781a5506157ce06b3168aa7436f118f30483e79f62a420351c52d1946592ec57e1988cf377ed3c259b97d5e2915fd37fcba14fcf151a6ce1aa860d7cf69f61e85e5b50dd427ab12af8fee891100208179baeac81b59347cbc1d132171588053067918d031a01d972f338583c8e1c245cd0e667924e30bef50f8989ef0dbfb9c65c53f4d1086959d74b685542732e4fb63c43a653b956842d91c22c353250263e1306a920b5eb57edfbd0088e90fe3418ba6e43452a821fe43d09b17f96cc6720a1601a263677171a4d3343e9343bd628ccf8ec91929365727e32e1ad23ab512d8950041baa3d4b949768392960d9e8f97f89c84dbaec3493c846c28d15505f934f3c490ed8a420964ea55ff52d75daa231e342cb664afa22684e040a173925ee185184ac020964836cde99b9ecaecd290bfc1233c8fe69d6ade31881581cc03b5921ed94c795a10fcb208c7b24f214d38d7671087367f291d952e4a8e9d8a1631a24f9aec6b6190c2b3c307759366c794c8aa2f5b16a728a3a938f322c8080369596712d236e5f10e4585c1ba9010b9627daf01eb2e41f9c501240ad21fddf78248deab544b6c0f9911c55f04784153eecf618e58116b3f89443cb237e5589e65693868d3db78c7a4eb1dfb908870e407557416e56417cd4f5fa2e930598619362ae807177b849a8aef7b6aee3eda011c00d0ab2b140126403c583cbbd3e4d7af60ced10e7f4dd52a4e02163ee17ea1002ca17dc1d299f93c2964c77846301a41a8d01051895a0aa26e19ffb8b39fd2013e095938bede990640cc552a10f5425c09ce199d4c144d6294178ed23c2696d536bfde0fcd0c90ae2d9cb5f48f0db264e27a46d95754908d36f2dd767b74d6c9d0fa823c135a44b60de0b264901d40fa0d3604d8822059986d499eb138ea380c5dd0869e3fef1236dd2312679cbeea305fd3fc9fe466c42c1641aeb5c6209eb951d31e3a9391d9c740bcadf94807b7e6e169f5e1856655c5c72167eae0fca89a5bdd3f842aeb059d3df4de99aa983c2e7c926a06f91d6367e5af9016482beb5c28126218dbabdef0c83cc0308e4c2412eb962154bc17110dac0c1ac13b04c1100b5e6a6efece11091730a9668d604ae6f0935256fdea93dfa217a89be4d23b3681a0f7625dd0c4cfd80592c112789926578347ce2d1d8841cf6c4eb0e9b06b98d861a84906d85039968f67b6740d6ee4a6e7d896da3cf8178553dba64c7b9d7f0ad38e2660b8d9addc9e947d66c5ccffdcc577336690881471e076a60167a91367a843d6439c8c9d4c616569db43f80cf92645d591fa6f1ffb533aecda84a52ba81b041bcf570235f2c9daa2222a76928b17a73900e0d4bd298258006d827a3ac5d7335db382c18a86aad9e09da71538f7156aca1370d4578f6f5114d7de07491d798f28fab76eb55b7ffd79797b5e921481f0f6ab69c9e86a475fc0d390f80a9bc83eb1bf4ee169623397171caf8b66774f40d40e159be31d5fda47ad7b0406514d73dff26244876b34e52e4cacf5437dff744f6b6f3999dd522070d3a4230eb4ce3ab0d53e66d8f1e5080b940a503c87af72d11ca6b065089a8d8f59947366361d1b21aed3972b27cfd2044f514092bb0c24c86b8a7baeb3275c24517a43e3a9b9860b2d9303e996e41aa8c3a5b0601673c1b8e4cfa8c1cc36b32fd4295d22824eb38c9c8f331b32827812bdbd2da339514c0c2c4451066f156e755ede984b3e0a727a2e138cbd7c2bc5a0ec1a13f3f5facf736749912aead283632f66728b74237fc4b6417d97c2dd653a9a8e784b8556c046cde22ee86fd57948817c067b4d12af9875aecaff646cbbedad0102b46a3dcb3cf61c8a4b60cbd5a57e64ea3bcd84a059e476a4eaecd78343b8520dc3d9bacfb2d3553b392bc850207da3a151f5fdab737d3d4f65c652ed173ea2068af623965962aa97659c9fa9a1d696a656c849611bdf9abd2a5af4562404158671b1cb617c0385b0962029ea917825938557f163111fdc39639e8123041d15dbacbab5a86c9110fac70ed5f7e9fee1f0b29300b5778bf83ce7ca3de67b4c6997d07e066a4f18d6426d976d60108d4d905d40e88d84c719b210e39ad805d8d835b83ff042f0dd7719fc4f92c03637b0e1bc6110ab114bc74ef433cab2858d8227067f155b7e4afe8d3be53d4fcbbeae2cfff582bfef2a707a7ac9fbdbff9883d8ca54b19283ff8fc6a04cffa72bd77aabfef19bbcd29f7a7eb3509f6203345df404976e3a41ca9f6f0159b7c9f38ba32a9afd209006d4e4b7b69ddfabda2e2742f7703e92c7de9a1137059d3142db504bacbac3e57df833db18f00361237f5e30a1ee444325448e99328005de5441fcbf3a6f53561fe63f5faaa8421216835081aaa12ded6dfb3f9dad345b1c25419465e8e912bd6ee8230ac70f441555b115c083131d97fc6f07e72bc1fbe3b3c979845c6f5ea5dc4323b03909e35f51796b950bba97df3accde6ff44db3061f500f05437409fb141882cfba76cba210493ef3b76f25145ea1605bfe7303df885eee1b1e824766f0999fd97841cee1f4bb938794c268afc162d7d180dd0d3e803f41f10aaa706e4c1e523911bf5aa701b9b43ecf0b8b96c12fb8530f557d8450f3acc91ad9e4aec4350bf829358bc399ef508b11e17a72e73eca8726211a274a6c6830f11da1d54decd83b75ad21ab0269c714cfdf6d6ab92ef1d03bc18964a9c07947aafdfdef1e264982bd7bd6ee9aa2284681fc31c173ff82d1443a3b6e1a8c4f09d2e089b1e1a411342b4e5d2ac2462501d41661e14d9d04967039fe202a44a9017fb0a363450df0ba80140a855b2b7875602763af620bcefb014012bff2f52434fd0650285e187f4769340e4c7e14686fc58e3475d6598c90c5b20e8540b807f86862dcd48f269e52f4ccd0c2173316a37aeff40cf16ed4f7d19ebc01370f17781ab3f8bdaa9b6083f8107123482e0a48eb5edc3ad419fef9bdb320417f0333f9ac58e0b2df7a75b4bfaa3bd9adebd32844a4eea76b685df62d6c71fd8540a80901f0bf60dd6db3eef2c79aeb7b481e591002a0826b6d0f71e43602f7015d5d60419cd4a12075bb93ca9bcd5bf48f39e8cf07d938ea8be10de6633924c7258c3ec034c732b750b3aacab958502f9a3e5f32f83b77ddf3deef3c706c3d201e2763b4ea6bb0ee769df82d32c37916aa3208204950b291b1c34282fb3bf87bc8d4ee6ea9171ed143ae2b86e4d6a0d8f554e58c6ddfd33896c14fe8e13652b84256915a3608556691084397e9a085e58cb5752eb197a2a8cf5b2451db018d106f4ff90607801ea3d2e6b86ddfcca919f81dd86f880aa28779fd7f355d307479b8ac5c924d1cf477974d62f3e8ac7d38d347780e96db490d28f77d295723d3aa1bf7ac35bddbfb6e8b4ed810d2f377d8486d587ce927fdf12e34a1eae3adcdec3fb50e35589f0e4db4daba385b29866726ae7990f5e3d0b24d4c49e9446fcc30fa1d4a837c3cc1c26c843600892fa34bafdc28404e1f639b4d648e7c94065433e93f80f16829d5b466f65733a644281a2565d795254413340fe87a817a6ae37fd8d12534a8386f002286ec35607083357e6ba99aa768b49f5da2618bee59b4c78f0515d65a24299d50239dbcb0e3729cc50eac418116fe1a8ac70c9de8964e5071ad2666a5cf8b59369a0a176d254702a7808cd0a2d15247093edc178308679a39250023e1246ca5a97eed3d05968c78a75d34e3c7a73628498805e036af8ba22624da6f0887846295735f5750119676abb077f0ea90db18da8b854cdae26ca764681fda63a722cf42b7ae0f9c0101876308b83241303a9f72105d7f5a39358983f70dd99c13ae878bc94a2ea65c49a90c73e9528042fa3f1808c5f4567c002fbe67e157ebeb6f9a50eda56871261c5cccc145d540d7f8aa3bfd04df8ce48d6659a9ff11ea9f1a7a373c1de7fad5c279efc4a3ecc8f109a1520331f3cb7a84e378b75834d94aea3844388e14f36339d3cf9e1832cc03ceefd38f09f5536101347eda0bcee59af5c8f7642a3c7202ce9c087a69589b0dfea76206d6913d8079c388a93d430b0ac5c4983a77297b570a8d45b64bc00b1855ba13c3487a72248961d8c49d5c53191e32734c515ee839b3a70938e10253bcf8ba1e3348f5f15685121f1d211929659d70938e5b805bb904a8043e256b40c494ed8d54f7d5fdee0ce3dcf6543c977918d186c2bb0402ae7546542a86522a88dfa560b70696030ae445714a0383d0a14de369022c6e1123f407503b3e2c3bb3865099c758c0292210b14026ec546cdf50255e8946ed271d8c301310caffcac1e637f00a75615a3de89c43f514441cb83e8d4ac79e5ffa2894129b930a8523196198b1806804f4286ec39f5a5d838abc0cce7e9e0dd3c106e0ac2cff84e62576f3599bb43dda8bdea0fdbb89190b3158fced49abd315bb6e572c3432d9290979bc2d3713dc4020e42cc3fcce0ba53624aee36523c960329da0bf0cbeb8279d596a3899ff5be2d942c26ac7c59e1b3cc0e93a331a45225535b3f108313dc05b61e0c079a22528ada4fd1f37190e58df2ac0d8869e2e1bbefa205395e370a979a6c81c05a3d84badb9937dce2e3ed774630ed4742b383c21cc27400fb1cbf13db2804000f339725a59b99acd35502b744f5e10de0f5db2563543b11d545617bbf8c22e8a497f043a7f0d452e80800d7b4105809726e18b4d768030bf79bcaeadcf715abbacdbe3c3e7894053074959153e659bf66e8524912ae82a662192e4b01a20ec15e6eaa3f12a800511982a876ffbb798dadb98e41f5ccaa8377c50937ec4101abdd0cf31c70f30a6a3a7d627a1dcd9825c664b5b46476f606c9484e10e23f737a661e7ca17a9671353013e0751eca712039070d37bb67e9d8b29556c1a39c17fe8235d367b1c9aa043c68b9b0ca1106459dd025f77957d6a2d66944f9b38ca11e0e9be50b3be02f6d1947658378d15bf2551fa641679c89ad4314d336433681b2779aba179aee471f491e91c376c00015ec8c2dfd5b2b0320f227c0b9aed2888f6ee1a41c4630c6bf6a5f9bedf6357f370e157ab61115c29cb53e2a922011095c6a70d702d7be6c0f53b712f6f4bcb382ff7b6af3889d0f1f8fd1adcd0318b5bcebd094c65545b81e222a5108aff57fa532c7f5dec219f50aa48ee30e984433e5ece6c2f39d8770828960663ac7ed6de2a3f48ff533031e8d49023459a7a9e43ff108179fa09b2b589b2196db1fce181fd56c8c048dde018a5fce13f4953dcdf6c1d26d9ee3bf59cd2fe4ad9038e3f7bea857d87b85f2b899d1c9c9b5be81aa6b102cfd3f1db189a965b08776d9fb46ed3d6bb8b6bb7db2f51cb4816563440238e4a91c781c2abf51d004c4ac92b89cc305320bf19116d0e24cfdf361c618d3eecf0925b4f77c2c9f9b40019eb0a7427dc2e258b5b32613d0c035f3b4fc68be3ef23948e91f924e078a9fefc0ecff8efec072a8510b30c6402006e022e1a8476c78fb2d79be663d26e41646a5ed9cdb2b8bdca758716ad63500f278d37603a2d7c4d849669e6f1c254684a0d987d24e090a7c7a748a263dac68b813ae2ff6745312cf1a217ec64bb1adce51dbe4e91f8ca3bb1554c69cfcf784c1d6a204eeb554fdcf97589b5bca71121345c8295b3219c7a0ac6a8e6c45a56f1c421800045e8ad4343de962f996704ad67d6a16492478e625fb538788d94f6e0bad7d4b3947bbdf4c7671cde7a1f1012e94033fbd07b6aed77dc1923b45e819ca083445e74d3da2491f3ed2cc62d95ab8791598cff88c123f25afebf94f7bd64a502fca403c4f97f747e83d6ef2c4ec250a8cbf43226d62ee5d73969246d866d744f3c6132192560f6431345b026e8a5019344fdf047df2a71cd3199ac8f0fbb715ac472b08279cd08fabe67ee3fc1d483144704de5e42d31216e04a13a0fa90bc25dbaa2f6a77071a3f1ee84c96a0b3bb1d1bda31b0e0cd1489476acac931132c49def791d022e63d584333e74a7797ce4b359b74895f0a8d779d1de701df30310777bd6c95b62660c2aef1903c42f8298cac343e92d25a3d05f6202258d06d1ba40717e1adb8c959619dffb393cc217e3f9f7fa85ce1c76fff65b1c9c818e61c55b95895783538859b9918f700c9236838704e8e3d62d606e5c03c6edc8f43c3eef1c5bacf9d2de03b7fddc41a3504eae09de4842344a0fccf0717b12e2b884067cb88d8b618b5e8db020d068e19fe1df64a71f312abf2cac1ea8090b7988efe854a88e96ec8981a8b23b088e1ab8ea1a0b27b4fb37dcf19108bc4294c04bc7a0f7bb303d3dbfd52c9ccc05bcacef29b262a9f7e4557c51f8e539c39450af15a27a491c827ec891e6da877696966a6934f0879cfe0efe9410f8b1c98847cef0517cd394f3957fe68b591314ea9f99b2f37bd53b6b887c989b00f3a41650dce3080950e123549fe131e5c4d4091cfe99b28c3f8a247ae0a084cee3a65ba34eb1554cb4c3ed636ad02a32e8dc4f20f3983b9756f990b7602b25f9093c8c9c9b45fd80918e3d238d6dc78265e078c2f2f978c5c9a125726eb89713f7f9a194e7c0bb5cdebca46e9480aa52e1d8e529a3b86f7b98d6901fa9de98b465c6797a9c275b16dc4b79f990ec44da6a51031dc6ebfe39e481c2b8f0151ba2775c2f0979ff9f78b63f255523375d423238c9a09b14cfe6248f55bd6a379d777337ab0854b1ffd1ff939eff2f60d08134740482905263880f5d06f1f5c0f9935c9a06727f2838beedd9a0a90d0d7fa34452fd5016fa1f7462045b9ae8a42318a834236afccfaf14d580d1621adfd05f24ce93cf22da074f7ba16bcf69af7fe8f36a34b5d2240d7a96e520b7624593e01cd8ffd9e98f7ffe0936b6e9e6bb39f4fe86bb7f06139192fbfbe4ae79cc58cdecc6e7f4f717e1225a576fa04198b9545359f1568668f7626627f3d5f3be5af9c07f645ad826cb1e1633f95343ec40755a002e8b26571f313254455a2a1e64d2954f3dda43cba399ebaccc25feded758e82315dd8972e255fc07e22fb400be6aff4dac9f77153819bd1a14b4dfd2e5a9f5865f1461d4e5902f36aae8c4b9509c3de4e0a89eb535e7a1e6cc3b25c400205db7f57f45815ec389fcdd0a9fc1f7bcf1ffc90f04bd48bda3df1876e4b2ce34c7dc2640eb2bc06e533a759aff0e06d3021f9e67fe4ea6d23bbe493fb245cc096e6f492388a4fef7e61fa3b40a652349683b3daad23cdf2b429aeb2f69d74f8b5ffe28ad74a97277bc4a56097d8ee740e9fd59325873eccb556550da485e2ab2de044ff7148f17398901b05c09f7cb7e3b8ddd16fef4ed34189196b90da34e6404770c14e9cdeaead9014c4177fa5d68f8e5fa21ed968fe60c01d1311407db79be1274abc8859599f2c633395de7f00e24c7808edb433625caf4b6f1ac1b3ed9931f77968e3c836097270a0bfffaef9f1f7ceec7d3b1e20d6813a549f272d12a9c1e6f85eeafd8c21bfd90a926787ed97785fc8e0eae8c25c065ed09651102be27659bd229b07a9b5323bf76616d60e5f9440c7095641401ce30924268a9f3423b529b0042e8a6cfa11413c6ab2de1e2a83686de448b3a0ec86c797b6fd1bc0a2e57db90e6086cc4e5830959edc5d7b96d433168f6013cad9af4db8e3c70d6fd9540306bde2923376ab7dc170824d02a6e093b531492fa0a94eb938001aa5f292753b46dc1a5590287babd76529aee1e43423510fc4b555e7a0937ac7308333ce0aa315123b70eba8dae9207d9970c71052c04fe36b79412499839918af9521760374048b18f3d5010ff683aa7322e35eea0bf16825eca550921ad65ac76ea19bfcceb9a82995b262c2eefeaa31d99efaac7f9bfa375475abf34d8df1e7ee095d1d1be7c1fcd4ec343e3169f385858eeaf5cee8476c02488544d83d15ee709cdd39d11fe9da006da9a6b67af2092a705fb00000531dbf75ef69d58e2e5a07c31aed6a101b2f77d9296b4854490feca8214872d1dbfe34533737f8ce85f0a672b781136d1c41ac28930182a05088243badcd23e05fece49d2b453e86595b1dcbf9e63fc577b90e7851dbc10d4a7f6beab9171d0904954cc072d958a7431a9c3520eaf4a1699981b6adf15b6a124a499f1022b85572c246dc19fe80fc09a026f3b8bd69943321e5b0a105ad916c11ddbae174a7686fe955ca78c562ea167c811f206e2d0f8f5fc708f456029eb2b4dd3c7148b264417f02972a5d9f1a623801df8f71a4f546bf2a51fd82c5ea7082042a4af868422a056e6a752f3a201a12bce0c96f3419cf6fee672273267e548851a697899115096a10aac0f4f1c8d0a759585f8e2ad3315d0a810dc26e1256431c922357b780a6fbdd9bbc576653eeea33e071ba03f61cccadf794bcc0aa3212da3c20b6528c738e8c0299f7d0c2f66f21ca8648ad896b5258e591e23b18ec47ed05dba036854ca79f4546581b97b8e23b8bcac201d137c8a087bdb87c1b0062ea96753f69cd11c85296fa22d5684c6cb7ddd14b740c2758382040734538fa873b6e8905a1737c8435d2252c337645f83edcda45014d0d37f11af34bb202a954889c06c1413992c8fa73def720e5eeb31024fdecaeea36eabb2913a64b7c7bd5b68f5aa9fddffafad6fe4d7471125df0d6b9e17daae2be8db3a1aeee5513c32b745c1eeaba8fa77c80a7f3304ab83e1800ff9b86f7e7c561195a9fbe58ba310c2d9274a5db99ba73edb642df3506e985f6d6caace32a1a900049a2abcdf2fb18d7c03f61d7439b77dfc5999e36d3cba050382db048bcd68d92af4f500dd426a61b0927c39c726937f0a08f4aca376f0649f24f42ba48020252b73d24346b25c9eceb2d91725a951360206cf082fe2ce548c23dfafff0f5e6f00921092e26cad3a3943f2de5c7d402932f1018b2affc05903ac54d7c16e450b5e4317485b21836ecde3c0410b215a81e0d81b9da23f548598be02f23b5f014d40840ec907f58f6228bb1146e56ad63ef404915870eafcd7b176f70acb0d955c45af7f4b38324061ccbe2eba43268d6b41f9459905182821276c616e32e5a039300b4025cc7b0a4a221a04862172e34224efa756917381613f44f910dc900d6e7b9b4b8a802516f4a6ddebae080acd915e66af657430267d988d80fd28da80d9a278ba16c06ba53e4638fd1b2cdf3f8fce50c7909c83f1168a6f921bb1c4060a5418668821101059a6d335f6c64570c3be1f994aa7e436f8b18055ccf77e06c6060c90f4c3341452fd786ae6491533fd660788326c6d3f1ea889a4e5a3b5f39186a4363f40cf9cf63fc910abe3aa98af1bbebdaa951a5b16f90beffccf5920b08338ae1c9e1d1556816a5cacee4317342183bafb93fe87500f50f6f2bc8fab69bffb0da02aae4daf0b42f72d5cfc4b34abfbd01501e8d44c06b6097550fbef839778a71c0c0c86f7a0c45d963b81977955f8eef3a304d6ac374eddcc3ee059db3d084c274c4686c0825afa9fc14acb82f9f73fe36ee01f348f38d1a2cfac2b9121379ec6d3e4a3498c18cfcc7117d5850600ffc3e29ae8b9b510052ce645d97f18540d1538e0b969c03f9c9eb61ac8680a7e02db08663ae7d674a9951ab52cd70669d71f3d05e60907a4f21ceb4d83029552678bc7df5811c30449a31de4cd7b6f1ef3fd099a955a59db04ff0cbdbbf124c8f762d8e501b3e1502834280f6fd60a343f6609909f2e2351e8270955f1e447df05e58af1b76984f45667dc52145bc102d5f1e824a191ebedaef4497a0234d29fe9fb036143a22d13cbc3d0a4614b06a5bae037bfd640279ce8c557e4b59597e3476428b2ed3b800a1dc88a60471e2521b01761d2baba8d24a933f30fee62484641995ea33cf3357c92404a9a1a568a92709bed4f97809a4b4568f671295e9a9f5efd36c54af4018c77a0713cee38e813bc1b0a85ade42eec0a0185834c68eec0b73eb5cefc6cbfd6843fdca91ed8d78201f5f15341de13594765c248be08b781d841966ea66f90a899c206128935f40d558e9f8203be5816d12d0ec25c77a6e48743c06675f8df3d10179d4746ff6b97c86f5f8ad086e5e6eb5f6db283cad891825804a2c1b04b5e31c609a1800c44276b3006e2b1a547b01e0bf7b39ec5591a7e2058fd4956be4bd6caf770ad55ea42023169847eeea2050f3545465a45addd180558df7062a3d67b40059160cbd4a5fcde82dd307721821518bbf842997bc6391208a041da562bc19a094643718dcd67bd1752074d01d4c18f0dd0056c2657d342ac69d6f7ecf674ba9d439aab9ecb478dabe2d9982cfb79b546ccc344c47815700fe993b10fba04adc94f32ebef6577ae9c6d61b33bbbe2db3ca7ea9cf90e5b2c4336344461003fbecd36301a87459c9376587b41410fb1ba895ed4ee876a8febf76e5c043ecb43043a3a5f3176cbcc57438e3271d2d61191e73a988cd37dbad9a43621e3f40f30230c028490889fbed679573774e582e672ced5bcbfa009495d3001a5f47ed95215c3a0398db167f7f32c784b0023ea8547fbc8986879dbc1a9caa13d2bea17bd2483bb8c78f68807d29fcd3d08ccd0103e5001fae45cbddf7c5b7c14ee3cc67d8585d0aa9a453dd209e8a64a302a71d545bd706efc8cfbd11e3c2b72b0bce587abc02bbd4039a6e4592e31af90397463b0436187439b816be2e4ae9c2fab12bf775cd6ecc6d6b2ca1360bf60d977fe6b5f1100093db658628cbd3ddb465debc63b31f3bcb6778ad9b5557dbc3ea6592b5dfd79355e226a7c15a1310056c0b2a097634b8bd61273535020966dd018bd444f63c790e40b1dbda2e7d68381c83ad7cf6a0505583e62f541abded27f17be1f24e3e32177af296b7f04a6a6ac3afb8468c72265f39c186fb4673d08de3392b1549b30b0833c5912201feb72a70213e4685673eaab2362cef12a0cadaba030330c0940146464d0df662863cda302ec36c43a5c0d7ef9ad92470c98944468381fc398248c78f7ec3f00e00768cbcc126f5722e7e3aac371f16864621fc00bc683c2d7a907581de8e3242b440947633e4720e7e3091ffa88753fc0eec3365d09a744bb03a3aa53d1ef800bf1a219ed7f9a3e2762795d6f5f8282848fb90911eb0c3f297f6dac01a21512b0ce77c72b39c6d6fc0a910425e30f785f08800e676776351d5fc46c010bece7de4cd8ee227234016cbfcd479042a54af1b22be02f037d809a8801e4053328fe7a88d35d1e06d01a13a1d1614d01b45c9e217a8856a1ab80460e20f449008639c81ca94a464f9711d31f45c8ec2c86c5a47cc7c4c2496a4fdf7e28a76e583180f901d760f299e8293eec8cdfe67fee26078fed765357e0f368dda10045aab3055bac331d0efe4fe961ca94f7e1c2e21e7ae5d8a831a006b2ecc31f77e1f9a7b600266335d2bcf1c422ab249292caea39450d064fb5a896974068503973fdc07f8ff4437f91e98333d4f779e82180b599f2570d08d4a04520863ce6ca0d0e287410489c69ea874a6eb5c005bf985de9e1839ea26a1d45a42a25ed68c5c6875b7ea931054a98bc8fc93fcf5f40621318eda68bdddfb65e2d7e45b64ee32c0eea7c0d8a9badbeb20d12b41f11439129d86b2c425c36cda4105d10043c552c4314ebf2d187dd3636390ad6052724c6fc4e029db71b8ec2dd8752f95de19383944a72c851d0453b222baf84120b667894cb7508a16c6a27139f6941b5c3d74d0e4817d80152693d7022034d406043de20d06adb40e827ca51987226d5c781447031055abc1ba83a5a35c9423947d0d4ebe0026d77a01586d134647656909364f0f85c3a7e0615357970cbf37de7dffe8b5e9dcf7be66fb13dd8f3c729bf7786cb3bbf594d8360efabf51e816637dbc93d56d066079b029da0d410a4a4c073ad71c3dce6346d412b0e00ff6b25a08c237ec1cfa235273401f868c3908281d2136ce109ad5c7229f9215decdd299d6da8cf30bc65d964bcc0a43ecdfcca27a9e5e1313aa38281d5250b56cb331040d7061476266a6252e67d0e136c41e50883eba62739ecb26702b904408eaee805cb210b19c68a3d18d2127446443e071e7b156249cdd9e7c6041f833cf52ca94eef95456d90673f1c0c399bdd852e1898a14d12869f244e7dd62f13454df5b94f8f0dc361d69f4935cb98fde634fafd6edaed9c66ef4ba8731c767a1329543710135a79d2714b340216e55c5bf00e736e0d96409339dcf4615aceda2bef1bb8d963776694106fc8c753c643b42ed5c4491348a535cd46ea5eee1a4c5e220155806adff82dff975778b293ffba1cefe56e4161fa22925c709b6968ca7180e6ee553cb2937e30d41f7e74a01da8c438fbed39a9beb6545ce8e38f99408293426bf6802dce09c2e214a5e0b4f77be78c41a80077a333096bde8882ac6b0dd08abeb1c596e82561bf2cfba2c569491ce15995c971475f9b8f0e51515f2eabf8d989bef40b574f75aed52a5e4660c6f03be76906403ff0ec4f4b152bc19653e06c823dde5e7f44e1e1ba69071ae6a2c7cb9f8052d880d86e55b74962bca785f483799c6502aa4ebe3b147593de2c81be01ed01e40dd7c15916705165bf721d3f7cc0e4555a0b4b282717072653b1e18e4a794d12e244868e801b13da8c19cd1e6e4130abcc63d2018bf6257a486bf7ee9ef2c36626688c3836755318b9202e5e51218cc9bc9342c86e89fe4c7eae6a3c1a37bb686b6d3f56467e1dfb8a18dfe633a48f33f73ab6e19552fccec0858a578f7a4437449490d01fb46558abfbd53502ff7b0581be5aa9305dff5c5c69e874a57b9062c9a3f48462fa6066f594880d5cfc4298304b8c1841ee67c0ba8d6f5688f6bd322fe898636db37d37c7aa9c2f027a7d094315ff3da84a628c0d41d568457b489b720eccfb04cc4203df559c688800430daf706115442501aa4bc6338234bf38dd92f640a3591c3e6a013b74f2ddfaba51d89b837f14b2d2544fcdbbe55441a2098324146394071830d483c8e5103f19be65cab78eeaeb936536d021e46a281b4b251b552ea641ca2015a9bb11f834428ae09850fa26712a0b1480d59c51cc0d56bc1312f77871581f66d49c2eaef940da33b0ac145d5b72964d18134f6abb458870aed5b58cd2b4a0cec069758fa7599c5f56dcd189849a9b12680035076a9181be774721821de16395b47ea12db53b92a58e504dff4f88180966eb150d94481d5f58d5be42f9d784e307014889ca8853e47077b219046924cb1e2028598eb4262f906fbca5774020be43817a01263d9cd1e7dff79404517a2e643162cafa9e3315ee0d51dd56d8e457d7f7f37297e7fa7976813ee7f8212e89af59a66bfec72b078208b69cc60462d452327744b57232f9fbefb124d53fb6b7ed5b7653c4c89ede2f98a273ec8952fc5f6bb608a9a4161e07f8b7b5affd22016d4367256c88e641686cd15bd0a97fe2e401d98d5d5e787f023aed19a6b899e43ba848bad6f3d1c21c8777fa0f14a645fb8b2884996eeb8552d0bea31b94e8e83485c434a23103d407ca8c789f161d59d11f9cb671c4da882c5b7090d3503832a43425c88274d50b15ac68f15eec3c5e77929506a637c3e883ebf194cb9eca47febf60dc5a37ba03456365f3132413cf6999047b26a2584d5cd6600328fd33072e3848a219711cc619e5d3e7ff3b2890260dfc752e1c83a7566366a3665a1115e6dc81c0b18af72288f603dc8ac883dae28a86358e0c615054cb0c186849bb362d2c1031ddcda2ada80b985a9657907b9820a546c091feef2cb3a306b283ab381baddf5976d0f105950327f7fe52b4f0f1fe7c0d1a729c80f8f26b188ffb97e20c4570efd14894ef4c524c2ca496d3e34351a31366c4f178068ddd90324900725d0c20dcb13c3af75d3dff02d4039d6f9c9e309d9eacbb0053f191e59cd35c3022c8743b9429c63588cd47544efa231d8f1988ea43c1c74f98d2ffd96b0b2318288564993d80f66564214d43c799c39e02152d7ca2039aebda939d764ddaffe516dc41712654591952ba9f55d1cf285a71f16a7ecc78ce1c982e9d81599686734f8be66a7f5c052cebc9d3b2c58609d07832cd865a784c2e78bb0c576afb856cfc8e7a7e2fc0e6914fb6ba205c03f3bc0f05b90863569f108458209fb4710c54270f8853a607edb46b1b10b1c01f99b9f505b9b3cd6523717c140e069f3f8b4ec59497e4d76dc6161fccb907693f87e081df47064c9f6ebbf71314af8bd2b9e6250bec5844ece4991510e16e72f739036bfb77f3e40536bba2ecaefc6decdf5940a7adea0f28ac53f822087519a68019d944ec693e200c12197b98cb4b013013a73724dda252483e04ee12f4a090dd4d5457a7d3458bb28f9f755a60600c2695d2bc04455ae2ae742ac959cfdd44187db1392de1fbd42b67ebaae8cbd60fa9e3bc3a56a2885a1a0bbe47fb21530e058b8c92a3adfa7dba51ba58f7dd2d44c61cddb3cfd29726ad963ec90c35f1124890e159fc2581d2e020d69ebb3c342ffd9d01c8ab9ae8e7fd52a821c3920ca1554dbb854ab3e61aa74de5ea017eff9f303971942e508f4dd0a94ebe0262b4beb39961d6a221c0cb46d178d948cb569f479bab6d488ce690ae30cf2083030ece3746fbd23467e4b6e28c45fba0445bb185f57862ec6320dec0c279380488eb9d4f43436f9631ca0fd5968297a5e234f347e8ac89448b99b5162ddf0125b80a4d9e7c48105305343f34c2185af3d0477f9730c35de1530954fcc8221f8f055695f99088366734430152626d37dd9a95b958884f4ec263fb72df228d07df0da5288f9669f2ed2f342bca4e5a1f722c072ee31cf1de8a973c4da369197ee521e13f7aa1d6f4a00cb4e863b451e0edfc19c801c389b6d22e3bbb6b32cbe818443053e68714edeed400a415a27dbe3dc6dbdfc26794becd4656b5fc1116a46d7cd549f34084f9ae8b81e2471bf8fa550dac63006c3b754786c9c707ecf5fa982b209ad3e23829df2da41a33cff2a169248f8fa8dd7870e85f4ab89a4fd3b89ccc60c2f369db17e7f3864d0045e53b3e21744b6049b24b995fecb292b3edb182d851917b072cbd29f9032cabed2f2f63d01b7e99f070d20f27e64f9db5f8f37b39e764233a032677d7d9df675a8ae1be1e29de51430ce69909c6b5bba0118245a4a0ab5c12ff58adb54da7f01f934c4f1b70912d08d52902055ee8eb079c25668668a1c59838aabf211c899bc0bf97ef92f8bac0966dd5588d5be98d2d63f8a391bbf11d0952c0720193e38802cc011cc85942b804b0ffa2aa80851c7cd8f82443f5d5c9eb9e5ad3dabb73e30ef6226b4a3e4f2dbdb401c706ea5cb07e240be97a4813c563821ca47c4b3de3c8eb1affac9e817d1e0b10e446c5ada7835e079c82bbe67999df1670cb31d6959eda391ae12edc065d5da19366c83c5c0fd59ba4783e4ce035dc1e99b905aca2d15c358898c1a14ad20d4333784e377056ca6bd29a07daca45d00f06886dd90140bee3bed4cc8470b81d1b5535b2f6bde53b6e6d2ba4237421c2e9e02a40db8de6196557524a401418424eada4fba38d1ce3b8a2d6a36ab7242b9ea0a15624117b00fb53f9c860e3ef2c05d54be8b7d726dd36f6ca1ac3f3e4eb4cfec69e0e7f481c6db8875de59b93f1d10ff3f055be29473ffc2157a7a31fe6903dda70fbd08b299adf2bae1fa21b570dc3c1c8ef889143ba63b9eceb58933947eff722e1f2e3a9d1b3ec750e5420c1f3d8e553e33d9145db362fe295eaf922b92ad359bff2a6490dd4daa620adc68bb94b93aa7e682a0f6ee4a99b4ee5521138cae76efd7d9ef999dccca0111d35bb081e79f09a271ac2aee7c9989873ee52850c5e7171e8a4e57c22cd458e40d6d6e5805b218d2607226ca612ef5fa0437cc24f01625b275126b24bae9b173476f4de208cb976a20d2a37728cae924a0844c7026fad8afa7268f765a3df640c55b8b14d436fc867bcd2db6daa6b29998037c98577544e7ebf8b20a40135fb428d91b9e330b79ef0e22410bb7ee979755ac1deb00b9dea7f538a0562afa9de1d4f13ddf32e08a18e791f10c8aa6bd54f2964df87195e3ed87ceeadb330dd59ba5cea0c62cf35f7afe9f6c3140356ee7bd14bb7af830527ac7a73a38265b06c8a6254f4b7ae7933af9f3d3eaeec3721c9d9dcdecd96729850124c93bb93dd0c8e47d34d3f70f9c44126948a7ba7373cc26fa09569af060a129652136d90b44c671ab4517b59763db047e6f64886d8e9cd197b623e62bb632a2606d3c9eab1ca79036c8badf7a144c1c64cac0f75601f881df3a88fe4d6f2a83e064cf1c84039f5a91e03597fc647b60b4ef42a9f02005b036b922090486fc618edbf07ef103df80a000740e9464a5cfdf32e1d10c366596c39b0396f6badaa357eec68fbcd61dd528644987bec67552c2d44dff74f4d99494d1639e043e995a606d011bbc59540f5668e8a765ebc6ec3a077e44bbdeec8191b263bce6189ae3d8785fa12847127497b1234ce73b187219d788b1df60fda6a2e3d74c219fd316ce3bf28a80119effc6c6db2960c6672150f896f0236f32d825d549f6048dc0f2e67944e4f9cd950a67c6167e832eef0c201d7e3b69e7c8e414a4dabbb5c9827035c68ad83134d9fe6243a0b29b77fb57a74d6e8de303455b336dc780b66e49968d00f3bd65a2700e3aff7810d4b4c48c08a8802384b037f38828b825d870c125bdc7ba69334b4747c0b2bb5812ba9c048f5ce9b5eefe66869391907b6c49bfc1f56c49b1cdb1a7590c221ddc1d2a0b2a07fb36bd2d5f89a7efcbea047893aad024756f47d2268b32c6c7a0fc7fa67436051ca8d9f27cd87f0263aae12225424bd354ef970631d433a5462082b2dc9164cd66c8aa0bd701d166ec7e3675ad7e10b2f1b76f24f95be6c74460a6b2a3bfd6d4143944c41e17296624a46aa1636684a1b6cee2fac10ac81031cd198c69f3d32685d8b9a1110e181ec53e8872530ea3494ad73cccc7cbd358141372168aa89fe085e50c8038dd79fd7c445a9d3ac1cd0f820b79ac13705bce09d568e5eb299964425e88f90c1bfbbad045d1defaee8076a84f30e997baff1440508f4b94cbad3abb3917febf39a11f4dd4a6945f425a71ad1ea37919e45975811cf117af0e761acc2add031a41f5c4304d03916607b0620c51701851289e221e444bd3cefbd44c5d02b6c666b2e329a447d6f2ea176b32c1dfe54a75aaa55a0290d13bacdc2782e08744b0a2cf8ed8ded248d32a97fbb5c587e07602d1e9ddf6f2ec63fd5f8aaac8b99fc417574a5c2dc2492cbb84b96de33e9ec6ebc1ef96077f23fd312b328a1f816ccbb7dcde4e0d761e3626eb92aa7dbabe4fcc082a2eb6d80d84e6decc9fdcd81e132cc99c61da5df2c5c2fe43a9116f1ee39dda15a86e78b2a08378b10379b76ae56243f7d696bfe54994cb00e45ff62f324e6a045a57c18eac91537efa823d5c7d3061c8c5b2cf8effce93600b7878649999b8eef460fb3eda3bdd29e7dc5e1cd32135a36dca9b04a1228c530c9b29158d4325a381f92d196849d8f035f24589e1f7d3e20b3c6ceabbed17523dc067c046e986b6814c311beba9568007df19c450f28e1816cc47a682fe7144e19d01611b8c6a862daab8e6bda06b32938966df635f84c8b9612c8779302ec2ba23b6c5b029fe0ae7b885675e7cdb55cab876080b551ac6a1739f7967cdfeac30daa2622b61fab4671e669c5327904473c0e29724f518f5f8e5c721a24cc756e40ff64d95eb8ea11ef97ceb6ec911b85dd39f50427cc4d1e348a763fdd269a096e7aac6db77d1b17eac462ea92020b652fcd104d90105503e14ae4da921db748bce24886b876e4076f9a4fa73377660d1e7830f59d3ab36dde63aa5f38a290654f3e3fd5c85fa8acfa11444270ee51581aa8e98e12dd770fa15f35b4bb20eec7bc769f8346b5ed54e1a9d8ea9c4a60762c04f9dcd12b0675038defe8d83eac43fd0f456eaaa11d93cc6e05c0fc518ad534ea77b8fd5ccfeb2f1588daf6655b3d570d1809cea02cc46ea25c50d79903cf6d6311ecb03b61a3145dc6d1ae33e7ff3586db014306223931a871358a9df8c8005ed5929a5ae760f69608476c4dce2314c97de3985191bb56853da5d5ff9ae96466cabb66d0990950b0ed275e1840f48711b39ae4d52c4937288c60415e3b9fd926e94696c4cc1ce7123b480d1719266f1038549f36495b44ee531e1833ef9bbe7093f8544bb8288ad413f8829c7689fa446ad92ef3f35e9174111c711da7df2a53b5df9e6e7743b02e16b0fef1685181f999ee4f41b77f38113571db48037c86d35030a22d85ff4a86490ec9e8dac518c2c6a3bb338fd124bd31781d2c94ffff9c5ca3d3239df822e09c667ea4351801471bf71d039ce634538e1eb4ed130b2c39485a74707b3f08ee02fb280c78a0dc05c0fc580b749e637d43628316cd3f4a60f1e513b5d30ef1816ff42b245b521341667e25f06ff49a9f6d54024a7dab75ce9d34fafcb8d7ff3bfacaf3a74dd5903ee3134f5fb9deda07faa6d812a9587185387053f3ae462798193ccb1d9275bd8eb08c51fb1c19b6cc203f8db0495215b7993023379635803cc6bad41b3ebb22eb2409860a83f7885d3054bf57335a26b1666426b266a44c4b31b79a56246f08d8f49ebb21fd4eeb1a567a972b25433fbaac05f0572d1211f4e70634f2401b9594291ee2788361f7bf6d82fdc01f7cc5af5f7266e83db0c7fb749fbc00b9e305ffce3939adf7c34755b57a657a6e0d7ac9396626dea301f1f9b39be98836396cc1673bd36054e61075cf9d8939b5f4ee217238d1ab149a49bd333da495bc80e786063eb62808d2a9482f0442e0a9c5ef7e80ebe13ba5b606d39614581c823b0172489914f37a73452fd8617806b96aec2409ffac766d4706760482981adb02077a0408aa437f80431bdaa17b80431deaa11f9a071ecaa119faa10fcd031afaa10cedd086f6d01cf05087fe50867e284373d0c396f64b77a1cd7b1e444afa7b063a0b3e6727608538b29f8cd760822e7dfe65ce88b9f438dc438eea4aebc799cdd7831d2881f9cd4901f47bc41af756ef409f322da7e9e77d4691f87fb8682405779a3c9d3279f734767fa3166256114d70cb52d9196085b803abe2c5126f4307db92285a556271d26f729be377a3a7f1e8dfc7d25bcecd4d6340918db1af7e3b7eb9628605cb7f019aa4b9d9cff0dfe4f8ba9132249ed1959a01aea8c8f8aeea63902a16432f3df2b12a10cc520a08a14802b3f8abfa15918a21669ada6e7a18cf7cb3aacaa80a649b9c13755199d012bd01f90327bb6d98883ca18f228819ca254bfa0a5898144602931c412f81554170a4cbfdcd24b44824c8e34ccd013b52a4e89c068adda4a0921bb579daa4e209ec233b05704d45596e9be12fbe77450f1e1994b35e209c02d0fe34df6c3254f0399c4e9d2378b286695f88f9f3a95257559ba831b9e423e39997eaad8fc9d02b83ff33c2068d35ff35fa5c115468f8f83af78bbdd660f1dd7b44ab6a93b0642e21b4c2a07925db63dd4703db6768d9347c9a7494a9029b03f05443b0f73f5c7950c0f875cb465b812c8e7dfbb3d4838e3b286e57b9345fb97990d6fa2b91f1013409057ec5043310531038aea83afc992c9ea1dbd608e42bfe6f41d7ba907117cfdb32476c492cf04f066e406fa9564dd20bd3221121948d5a61dbb21a38610dab610fdbb02db7dc72d50db35e23856e959018bdae8678a037909d024910641025114ab40dce20a36da065834f028596c44bff7674ce4ee83ce1935d57473b78ca87774e8cc2e6c9c33bdb2ecaac75bb2d7cbaae56919b597c82384a14ac734a799f8bc73455aeda2dacfdd479bbe7899d6cda09cbae473da7aebe59d86ecbd1ecf2beb65bfdd93a67577d6d5715f357d3a06b4045d340d3326043cb20890cde0cbc0c6e340cc0c040011a0627062368484a80e40a243220f182c4e7823fb40bccd02ee8e17f8a1ae4094569f9aa25e8a5b554b942f453654fa1d2bdb61855374d35a8af1e8e92f2ba17ea62d576c51dc53b186f75e7d44ef14e9d4e083bc159b0133ce575b5b0cb754e0ff3e0133efba61d89a2e9a1695368da129a164d4399c08485a909cd0483a98911418c2ca1192142334264e48b8c402bb28656848c56e44723028846848ddd727cb45bcdf2cd6eddbddcc8e56a3f85fa7bea0861acb3dfd53d059d18750a1ded169f403b9ae5f8cc7202612758284b516e332b6d5ffddd45ac4bdd6e4e59afb6670b737ec17bf5be2e8ed3b588b345b93db7d1ce89f78a088fb0edb5bfe749c5ddd272a934dbf1deacd56db156bdd3b5c57b0a3edaedd16e4fbcb3b5d615132244444a181288360405da10096843a0d08630a10d19d2866042e2f8ff53e7d4c972f6730a15bca3b3b3b3d3b3641961846d6f35e35de4e6558aba86f0d6d77c44b4e976f7576efb7e654dc8114268d8ba264468a3ab9053bb6a427ed372c8f8ff1c29fe9f4d8952aaa3dd6a39ae2bb5593c8b69121df11667013809d070a068377d58a1dd3ca1dda8a0dd90a0d990a1d95cb16de7bbbb6a8575b698fc9ae689557ec21d4be7d4e9d0f3dd436dd089550e74c2e7cf799e2f14e7ddf3aa95ae6d6ee92d861bb56b51bb16b5abcdca867cad0690ff1eadc68b7f579156a3c31f6d55ab11d235287e99b4ef8aa160228d460a282e8ed45776d568c8df341aadc4c66f2ec71e51d2ffbf563afd076933806cf9cdda4c131c489b39f391bb75cb5b54cf474c5e9b69d275b6cb5927fc6a738a888765b34f2ac5a36145ffbfbd8695daebf13f089416fcd18206b440851698d0028c0560b0600616b458500a6287200810e48a2058206004821488088160b0822e5620801504ad405301163ae789d5f5d4711327ebbbd595c5fd5df7dbe90c1571f614749e70bbd91da45705154e1d96cdd8091e3a059d278a65d7be06e1edec4efc62579c5dd479baf86b7d5797e37ebafc4db395de5d6c0ba3d65368ebf00e56b9baa6ebdbd7ac021d1524014405804400100200920232420ad04841d277172b847776cb817cb06eb30ad80956e114b4bdac8bcd46ab6b4c6b4d375bd4ae1de79dac378bf58382150a464081062738c109da3841152788e2042e9c0065020f3c6132011226684d20f4870afe88e30f04fc51fe71538208fc63144685f93264ea8cb139850aded9d931773633e8c90fded9761ba4f212309bcf179a6ef81c5abd1cc52854efb9e5f29d966fc13b1b9b757bc22f5f1d611d779f54ee5ebd27ded98a765a8e51299e76af8e5cce936e2e79686f57e52f8bbb6a094e3b8f2781129a045f4870f3ff7db3b95dad6cdd0f32fe373f68e0ef090ff97172eef698fc48b2e9b87c35caab8df695d5071e7d94e99cc5afab45bd2ef4a88f2bbfe9e49e8ffac0efe44d7ce481f968e28b8c700f1f484ff8b8f2cff9cb47929fb2071bff6cde2387dfdb555547bbd547bb354da23d4e7a08f21b515090169f6da728ce7ae4a087901e424690c508904640f4dbf972ee9eb8af3ae7096f17e5f2a3ddbed896ce79ae5b168115119010023e800881941010c9430379b4f258210fa13c4a78c8818701f098824706203003043b8000ccffc69a4205f3f6e572d666e1760dc23bf94875ead6c5e6b7bba868395547bb55b5dc348f36501b845daeaeabc63b186fa7aacda9eac43b189b5a3617466af5ceef0fded9f61076378acde9faae6efaba5057919ba9e09dcde5e7893ae2ec46715f3193cd3df776ad9ce71d82dc21c61d59dcc16e23b0ac77b56dd8dcacf525a12c373139cc17bc5776a861070d7670b1e33fd0800f74f9c0933a06a9a38f3a8ca8e3043afaa023083abcfc8f80f1f6767765e2eeeecadb7dbb0b005867bbdcf784b7d1ca66cc5f8cd2d99dcdea09b3acaacd9be57c67c37b4534b46de9bb31aaefa2ec6e238eb6b6db72f1176a15833376513ae776b9ef799e70df5b4c9bdfbc7a559b4533ee5b4e5b3a6e263007147378f96db3f2506fa1ce13f79c91aa884939162dbde53d6f37ed2b6b6f576d770bdc55557babab96a32587142b98bf2f968d238fff389a78573d7108c5813d90478f078ef0c0159d13ee190f79e0b4bdbbf7c0e1c7eb9cb0c66d86a30a385adbd9e1b802077e438bdf582e57dddd6abda1c3bfe1e5ff3716b0e6bc08bfc1b991c77e42e486179b1b47fcff66e4867e75266e98b6b3b731c76f98fd69a38adfda403a3b9636aefc6facfdfeb4b1c3061bbfe98d6297b39b8d2a7e7bb13d6cc0904aa57e785e2c9b53a9ebe243a6994ad737bf584c938847af3e9b75b9a9d40f4611f1a841acfdfe6ce149379735ba354a5bbaa9d1851a46a881e57f73f7a672d48a5118759e9b8b1aa6ffade558ef971ba5a1079b4699ed95f72be3360da2ffad07abeceebbe578280d1c34b4f8dff6e6bcdd5e2cdb8357ce02e63d681cf11b1a5e5e17477346c38451bde70c3bb63663d6de54ce20e28c2bffdb1167599cf5d6edc63daf5c8ed2bc73d6e70cad7bcc20e368b766d8f0bfea99cd584cbaa2c0ba5bcc28fadf88521d894fe939dd5cca2053c6d606193890419e7abf58fdc15b6716ead4fb6795be79cab9576f9b31ca4584b7b7b35ca9bba6ed8ac780610c2a28cb7277b37c75c462f1378bd100317e10e305318ec41003c9a673ea59f5639a44d84917bcb3e94ca182771b8477b6aef376f5c63b9b4e770ac23b9beae55c8b0a6f7487a1c3f0de00030730443092983af0812d361f1d9f5310cb669fddf314d3ccad17da4f784bdddc57f567d3c1eb099fe6dbe6b7b73cc52f6f5f6d6eb9dc9749cb8f7abb65eb1d00a103cf81283840c481992fd0f80206d31757b613757555cfa7d73511d279bffdd4d9693576f1579adf8ed7eee22f7e53177fb57c95d11d576fb7fa83f3b65d2b1bebd572eddabd85f56ebf386d5e00f2547e80bcd082037951668bd1db8b2bff5b7f6d3198b5f28e51db68655f1b850d2460035e36f0a48b35ba8040172b7461c30504b8487a54dfad57bbe255cf6f3fad3a2ccbdd7cc2197726547ef046f7d0167d6c31c6164c6cc16e61658b4c036268c0089306ba68e00353ef7775bba054f0ced95f1b851769039d1875aa41a8d3ec3a6f2d2815a455c57dc5ab743d75bdaa5e5b0c0aa64974e2fe769ef6e0edd4e97cf0cef6a65b55b7cbf3cb7bb6b3bfb69854e7dd436c2672395f1da97606623065e0caffb67ad7a3ddf664e0f46fc2401e3d1890e2370ce8f0ff9f8f7a30b05a3190a433c92d164fdbb5470b2fb6feba7b45a4c511ffad1642ffbff55db4d9d568755bb8bf6b4efbce3e5a98d8b7e5fc45b16c1679bc90b0d6196701c5fff642e243a64994123b97691221f1292c9bd314118f1ac4669f0b087d0b16e816302d80440b2ca4c0220058d05c81c7153d5c21e50a12ac008115655cdce1a276cd82cd202a414419c5ca1dd5ee7deeee7abb8b05177fe173bb4c5cfcd56ec19bceb959b9a37a5eefcaaee88ab45995bf789f27de466cde465ce5abb7af47fb6db39b5d45b8afabbe5d1567dc1ee5d6500518500155053ca8a28d2a74a8a2a40020ff9bcafb76f3b97b9e72e66db7fccd4248394b6b5df5edba5e97bad35716750951e0870a1250b1012aaea062f51bedab6e33d21ec2e6d94f6fbb59af763b555ae7b3af27cd9b2610c8049a98c03a01122480c6c6dddd42deb896089c600111482102190432c021a0648a124c41c414394c11650ad3fff7bc3a8538d06945f522ed13ef6cf9e8c43b27770ae1ade7567615ad282bf7f5c43b9b7be29dadc5cf76558f72ab577993143f26296a4c0f58c1039478000dff9bcab1cae6d54671cbc564169bb77be21dd7f5beb603e470c00f0e607fd32bcbddad7eba7bafde13ef34008e0614a0015d034abfe9089d709326dbdb39db3bcbf6346982b7cda26bbbb6bbe51aabeb115f61d4d95d9cf56a799b4ffc4231dfda2d518031452146f101147d400101289880e285c2c913673cc1c4d6f34a08ef983d78c754393ef1ce667677bf9b95dd2cb4a95447f8a5739ea7def2aca3f78ac4ddd60967d95e99dd9addfa85c4dd169bb7bbeaf90acbe674b5553d5fe16afba37f889cc8c30b279af81e276868e5a31e27ce76b75a79d5063941fee7a39e2600414d78531352fcb6593ced7975a4d774750d3531d44492ffdfb89c2ef759abbc69765fa4cd0416badddcdd2decb4bc6562c5ca4c5059c204dbeba65ba7bb9562d91575b790e669eab551e0493797feda6240d1f5da282c01c4001530400d06e8807db6890157feb756de2bdc99a0acdd7b0fbabb14e51603f0ff03b28bf21e52228affdf5eb54789169438ff4f9d6e53e2f4efcada6e666d778bc9591640c502560b58f2ff1beb4ad99c66d795a6a8abf3f7e55ccbab0b6ed2a449930d6955b7db7addfcf62da6a390041549d09044988493243a40620548ec810411ff8fe54d4808216105899dff4ff1e011369675a9db7dbbe0ede56e23ddeeedd439e1fdaeee518777369d6db4f6f6344dbeaa5afdc4277cea0c9d824e6cf2177778e7dc9aabda9c9e58453a87cef3f439f1767586b013ec730a3af14e8a078fb06dcdd3a33dd4d3b5c5df2abbe795d0ee79d5ea6edaf236bf597777b35cbde569cf6e15d3245af5bc52ed37bffd75b53877553d45c4936e2e61bc2f0ce76128a4eb0bd2d66d8a74f1a49b8b05fe3fcc9b14804777376feb366f67b339ed3de3370b0599664a0c3d56ea8574e91f0534316205464491ae6f66f1d7955b235023866c3daf8ac0a208b5880b88d000112d2294fc8672b7d56e2377bf6d6edd6dc48b7016bcbd5874ed9db7f05ebdddc5dd5dd466adf3ba387fb1cedb3d6d2fb6bbf86ab4dd164ef2a621869040661ded9635c49821947c16a20b21a010828b1028bdb6fc4d337fddccda2e7eb97ca3558270230829583c7d5df9c814c40b4108850183fa02666bf350101e9441e33f0c982f60da1e1fca1895c161c06014959f2f6038eff948e7d507800003958f7a80800108158028fd20c59f3a18a57fceedbade6c94572e2827cb669f13e7d6f503024c3f80c93f74e0c320ffbfe54d3e3ce10351183058af18f5058ccb314ae3bcbe72c6abf4cdaccdb50f20f430480f4dfc7f18309865336f555b4c7ecffcd2d9ca9b7a287bf8044891002f1f060c46b1d9f5a61985d22bfe02667b59d798bebe7dc5d89400fcdb4e79d043ad79130f67fc7f9737f13080ff57397ee523cc5b54cf473cec90c7ffb655d585a6b9d5b1cab19834b338f7565eb95b086f3a45edfabab8cb35e6efb6b7f5847728b3e9fd6eb77512ed7076263bdcfcffb6b35d930e5afc7a9e984887329b9b7568fd6fff9fe44d3a5c31e500c8a6e3b6904eed5e119972a8e2599873a21cd8adbbd68efb9a4ab16cf631cd547f0de19e31114fea5d592b962e3c487c4a2aa573e261a55e52291e243ee5ed5b7b9f0b872e70108303171cfeffbfbce90606dc30c40d574c3720f9ff8de3269bc57b13282d5f5faceef9e8d5e4e56d13dcd715eb525d1df76c5b67166ff3bb576fef9be5ebc981b617cb6697e317bbdfcdb6583cc57a1775d689db9e0da5378acdd80623a61adaa881033520fdd6b3f87839f1cea6b756b9bb7a5996bf48550e60c407aea2a11d74a832c58428236ffbe0e3091393911b9b2f2a04010d22061a668090035706082942c8b1c6181bc882020f60e2c956c20fae3787ee9e80047ec091061a5c4c0086175600a3829720a013ac80f08106196071050c0f70c00b2ea83c50c25b108ac811c71856d2202d48010ac07cd120036d8d0d7481812c2840c5143920e000aa1502d02508e8670c31ba08c30265aebce1c618626c808b2c2eb084123610400612f8b1461a595c000b08cc90b4f54f158d881f77d821c7175c5c6185049cd80187ad552b80f9d2e5a70a145347233286185f1431c40e336cbd02007eac548162162152fa3bec18430c0e747185151298c2091e1030431800fc4481628e60a773442bfd2077d8110707bee8828b2bac98c2091e7640000e33d4a10a03c684279b20816041c148110f28d1e1061bbc74e192c0c1861752037006996941c6029a40b215dc40517a2273226302f3b26e86c336213b334e66700620644ab00e6c3898d9004b52d200cb00e7822347664c2523448a988870306403214a72341c9b9b1a9baca686866606fbe7008a39dad56d3dd99aa76beb82018a24a010028af7c4278c57dcd7979bf3bf0b1c0a11a0f8000ad33f8ec2834f5178b098279478628c27b6f8fff78586d9b6edcbcf951a0e9e206addfdbeb9f5c47d9fd09c104467a7ae8b8371420c27aa78ddee37e38e7f9ca001236dbd4127bc7c77b7274e94e00412ec72d5fdc748f08ff9f18ff52102ec0e26f2f8ffb2c329ecbaaeb4495992e5588a655882e5577a655772654992e4488a644882e4477a644772643992e3388a633882e3377a633772632992e2288a622882e2277a622772621992e1188a611882e1177a611772610992e0088a600882e0077a60077260f991dff8895ff881dff7795ff7715fe991dee8895ee881dee7795ee7715ed991ddd8895dd881ddd7795dd7715dc991dcc8895cc881dcc7795cc7711c12d7dd8de56a9fbc2c35cc971cd429e7e40276010b0063540e2a4700ff181fffd81eff981e226042096c32917432a10213404cf03031c279623307759ed87cd5cd629c73eae057ddece98c12254a084bb040108c62c244cc3f3602116cc05ce2b544001ef775b366776599b204f8bf6d4b74b004126d09243a9887077727fc016a88131e43d205032b58090cb8796e1bbb8ddb7939770bb066f785c231ca72b9e9d6bc55f1b75d555a8ca6c41232e6d0165085b68028c820038be31ff3c03f06c73ff6c66b0b58690b0083b9f18fb541c6df8c918416ffefe126b8955b39c5d650e33f0d34ce30e31f2b830c9d935eb3d0de56b6cedfd6bab22d563e4fdd62b9d022141fc2dbdb5adf0e45c70986829b6027786f5575c251706b7d55ef66a1e8b4d6f794b2395545c1f8ddec932718f576977b9e27de508cd269adef09efbc5837b32bab75b93b6fcb5df56433cb7d7f70516b7d71ce98bff83c5fefea7277e55c84d6fabaab910878bfae93cd41e7bbb22e568ffe51db1fddf229af14e8681f6da0224cf0dfaeb928e3deba5c0c8508a73052661541c6e334701062f3bba6dba89559aa4d4c9a51fc3a716f5fbc21e52ce79717bbf58c056fbde52beaf5aead8bc542f5970375bd5f0eb499a61064fe3b23cc5f8dd9de66b773d647ebfd722e7aff6c2aef2d76af5ee8c9cd2ae61d6f7de5186fab9e57bb0c16651e50e6fd7f9d5337c2fbe55c5eac9bab704ed45f6dcef2470d6e001105102c204c0002f59bce49e7040404063fe8f13f027e333edaf90724decc7dbabbe9d6a5758ff6d17c20800f447a988214cf55cf574e8c3a371db13b65a49c45e53aa70dd55d2b227cae2eb6b5e9d71673c22d47b959e38e777f71a0cda2b9ddd26e51d93dc481542a956a47a57a7757bdbbeb96a3aa57faee9e55abea1f1b438c303030fe7f10d56305c012f0c41150582beef9685557cd595056f7c5ea8af98bdf1569bbf0fdc5b66ec6db88a33f5b73a02954f6ea1261dd66d344592ed7678c0d05e8eee6f237bbfb5d6d88f26abded6669d5bf05b4c8ae90409707644c6c48afab08e316e76c179c9c0db7bc672b38395bbb5b2d168ba7196f578c9b59abb4ddea2beb60ff98d0632576c1bf08340360b179690400a3d53ad7bebeb9e7367337cd2c0ce544caac259807eb2065d69227634eecba53fc048f39bbbb7595bb5be9fa6e16868505b8c0b6d01af87f2c9019ecf8d5bbbaf9496ff1ee6e9ed193d4ed48aae76458b29d47bc3dcf0e3bc1dd3d7756ef7a2426cd5d707ff709aba2f50ae7447ab369bb45b3417af3de3be6847bd472bd4c8e5c8f35314627ddf08f4d1c42cbd73d256900d84c2293c2a49bdf700aa742e8028316d80c61b75830e400030c30bc9c932a525ee8e3053e5e40437b018c77b70af5049b7a3fe92ad40b4ebcd083deedaa62a54829920b2470210ecd850afceba8d88ccd95de5a50d05b731f17aab8e0c1d000ba1022c3a1a1767565bca5bbd571665f11c8b0771142726808ebbdf5c6e4048c52d97a7eb33e5af57ce5edeeea725bf8ed5bb3fcd459380b163169dfbad94bc0785bb556db5dbd5c6d5f9d13de9dcd56f076b2727b76d7eac51c69bf6dbab6ce7d84d55307753a577dab7cab2a67f5b5cdab74b37076dfd5bb8d36bbb2e9cebb2a5ad9746df5f064a2ed9e30ce59ce1411cfb97ad723d65ebd2adf795d1cf322fcf216894fc1db4ebbe2cc850ba99a75718cbeba75e10d85b7f31cc29bd6e94c7a2bb34e186f7daf7a5eb5729622fee2d7d562f3a9e38dca4f2bef95b9591928ddada11f4ed4f5de406fca897c5a0ea437cd50ab8e55cf2b0ef4839ba4b9633497bb5f5c20f70437e5829afbb5f8093fc13a24601409d86c718c22019f3036c37cd1dc6c4c1e3a27f31fcbc06318f8c7b4f87777ad5586655755d5eafd75f1777715cbae625443907899e14d5e7478931724dee4a5016ff2c2813779b1e34d5e44f0262f2dd0c0641a027d6d08a4d786c8e1b52192786d082a5e1b2203af0d61c66b43c0f1da101f786d883f8e0c49a2df94a4bf290901de94c486372501c2742447d380b0e3352052f05a999cd7ca70f05a19115e2b03be56a6e7b53228bc564685d7ca8841f2434c64ca788d4c1baf91d9e335322a782d069ad76238f25a0c22fc3f9122478c945abca90ce34d251c6f2afb7853c9823799376f324d6f3293bcc974f22653ca9b4c2d6f32d33799ef9b4c19fedf880647307882c69b9e7ce04d4ff8781347f326aec89b38fc26ee7b1377e5bfc80558d3c0c8101b222da037b5d037b55a6f6ac9f0a6d60f6f6a39f1a616176f6addf1a6160ade34c6e64d634078d318f14d63aabc698c97378d297ad318d79bc69079d3181bde348687378d19e24d639aa8d1404b0bde3464f3a621226f1ae2e04d43ddff0b19f2426e72307a2d0732afe570c36b3994792d07245ecb218ad77290c06b3960f1ff432e780e3af85a97f25a0f7aada3af75185eeb4114c921f23447842c59e14d4bf89b96b8f0a62534bc69090f6f5aa280372d89e24d4bac78d3922cdeb4648d372d09c19b9690e04d4b04f97fb38a77cb71c4a0e05f63418f530a20ff6bfcbf0aafb1b06a65d60c0c29dccaa9ea68b71887f5682b1129bd5badd57dbbc9eaf98887dcba9d741bb16c667d3d54a1ad4348cc014f620d08c077581450b86e9513b71814ff2fc3135f471118a5a2d6efe02225ff63d42fd4a0be8bb2506f6597a80bb13d85fc662a3d5d5b9c68d5f3153548ef9eb160e20d4fded07692fcd905ffefc26b5ae8cc47ef0038d44857d8a8a126f82f62868c097a64e8e55c0be6003ea42a5a59d82e86c2e114bef2ff2bbc964fff2d57379555cf577436a30242873f833e6f7d662e7dc459159b58aa6879c2d596c58776cb8188b8a0d0ca59f67689a6b4b0f66e87b60211d8209f99a0ada00453719866152585dbcdaa5e75b32acd7205c8f0252b34ff3554bc5de3285170eaf619923abc1325cab68bf4ceba06e6cb6b1e00a21f9f1ea11e1fcc8391f4daa3c71eafed31e4b53db2fcbf06ff509a3c084cfebf1cc192d74600e5b511e0f0da08bc786d0478bca687f69a1ee36b7a70794d0fd66b7af4f09a1e61fc636580283df6830fff580fff5802fe311efeb11d7478d3d4ecba4acd7f2c877f0c01ff7f83e100a4c3108bbb56f4eeb6bc3d63d96f77e51552952d56b40084d1bcdce10587ff2285d5ff035df18c4cb3ef977361f1b7cd2b2155ff39ca5a72982e2db42b3b54b4f61956e0a2c7ff672e1a972a563dbf5c925c171d5ca86ce8eabe727029616d6cd9824a19da16a1ff6db46a5b2ee8dddd36d1e941f0d86c8f788b42ef99f571b7906b6825c46ea38da5c5898696e835b7da2d9a963aacf45776b3ebca5a3a4841059fb62ef7c5a8ccdddd425f8d56ed6ebd24cc6b594ef0ff1abbe11fb3013bc07f77b7de8558100223948210f9d84c55aa556fd7678bc9ef7a2d680acef3bea3ac45ff206dddd620c30a404d74eeee16589d37dbdf15c5eabaeaffff58972c270069d17b0c86c27d2b78af36e3be59ae50765d59cbe280370db76efb767658a997218ce271b91516cd397ae55c4cd3345397ab52b55beb75a55a5b59d5ea3dd5edf4477795ca345369abd5c3894c73bfd94d97e09ef193265764a0c913fca409141968f28427bbaefc6e31e9faa65697affd45b7de466b51cb552f9b577d6f35dd5c5829528a07894f314dbd91386a9aba5d5148a5744ea9144fbab9709e110f2bf5629a9d9166b95a956a0c4b6b3d68eeb922250f2229474841ea91426edb843c4ca0e1fbdb3281fc7f136efebfc86ba910a4ca7ceb72317fd7a3be62b4b5b2a9f3b7d44deb725d3d8a06fec5ae1c28bf998a90e66994273c78683c11e0d981a78727846db3562e546b7da1ec010588ede4aba373cd2dd4de6a6b7d4fd4b9b7aa3a7b74cb51a4cc82a2516cc261066152f9ed6cd72c275edbcd522947502a5112fd7962fe9e278beaa0a76d94573af9b415bd469ea191af4672ffdb2b1fb9457ae337f76cdb751515ad2b97bb76179b9ef0d6eb08c86f5de784f5da552add72742cf3dfd771f5ee17951f3c4af9774cf2b8cde3ffbf38c7f72da2175b6c4244fa17bbfc131ded364441a8c49f2dfe768c551e8a1a180638800eabbc87bb2deceeb767d5dd479cc53ddb2acdadae8199f6a1f1ffaf8b3fd9b47c3c689f94f7e94c3c1f3c2add1edd139dab23faed5d592b9613ef6cf8c5babbc5dd5636cf13ef74ae0e8d2b80c6f1fc6fe78b7dd774655b481beb5766f12234e3edd5e6276c3cc980f604ccffc95fac59fe6e29d0362cb4cdcbb96e168ba7dbc5afcc7af3bba62ebdddd5bbf3c78e1ada0e16ffbf5fdbe9f27f6ef9cd544e2d7df5ba2eb5c55d1da47fb29b85f4eeaed4aae75556bdedeea83c503aa084febfdde035d4490cc7282764b870eba48acd49d2d671dba33959fd3b11fa3cc509f7ff9bce539ae4f12fa435d1c0ffa67f4c33dd46a6a9dfae6a75bdbb4b55d4aefa676dd289341d29feb7beeab4746efeffdff83f593999a0315901933134265e3021a331398189065a097ffc7f10364fbd6356d9baebc4e6b9e59559e7897bcf2d2023de52216596cefb8a4a1586d44a709540e54b28fdd6ba484063cbe2e3a5edfba591200409575ee7849700a22dd1025d72fe73d7dd507a96b45cb8bfabcbf3daa38de08436c2ea7fd339d96db4f6bd5fa717e7cd62d40bd559f5bc3a8d70d23dda0837ff4522cc1142164d042d5e8426587dcda2894083268294edc5ba791389f021b0f12194d14248613b7bc64768180178069c056b20d851f31a08718040c3ab41a8261d9bbd4947ca2c21a14def2698ca0781681ff4f18110da072ded03d0092e6a57a1cd83254af6505287921b94fc28c11df0a175504607337480ea60840e70f07210493ed060830c9460704222c2051d1c51a2b13e30b9fccd4a8c80a2074590f8d1fb011131f486905ea75215b5ebaae7151682945920e4742aceaa8adab5a888b31be07cdc4d6762e3bd9cd7e8bcdd130daaf4ee2226335d6f92791cd6a9dcbcd954f5226d9df7200c0cdea002dbacdc963078238bffefdbc888d9d756560dc1083044c87b61c70d3dcf8a6161dd3a45f3a95a210c982f2a04c04b172e5b8886b4a420140494050b0a00f8b97282952a54329f6c4a0f94d7c298e3353188666810f25ed03143cf73176056d0f1ffafd691275fd4beb9abd8dcddadcf71f39fc9b1bd47ec7c208b23f3c01b2a38def877396a8623a896a9f7cb8b9c48e08893254798b071848912474ac0e3dfa7bbdb11122870840425fedb1ff76db7b0accb0a8be6970369965fc1b25b5887aab0d1e26ebb85b566d66773a2beb795970355e19ca8955d22cd818e8c70f39fadf19f5da14605f4665917d07f56c6f734feb32bd0f86e88957ad9ff5999ffec0c33ac94b1ff333234bb7661c7508358b6e73f13230ba375a9ff19187afdcf3ab0590ea47ffe330e6c37edd1bb5dd5ada978a4adbf00bd7872036267c57bdf2bbb5d708172760acbba80482fff7ffac7e238e24114eb9bdb0c65770cb4b359ec3ec25965773f555c0630f03aa7ee71c9f92d7f44c9069ee3d27161a548ff991659fc6717c82cf0ef7d7aa72be7d25d2b6fcf1bcbdbd3e615d1767916fdb35ef155d89caeed2add44db682dda58d8bca6ab7601807bb53dffd904b0c8acdc5d28b0f09f5d6185f7e90a806215190538efb551c8cafc6754fc6713786d144ed0ecbaf2c924f0bab9f59f4540afae8b15facf2030c5fff7144fbab9789d9169729d91697246291d94f79966d7ecdaa56b76ed52d4baacb42e5587113bd2e5ae5be575b3d04bf329af9b5bfae7a5f914d2eb5ca42b0ce7bdb6185074e955ff00b178bb358bb7dee74aa5bc4f8332df01b0dd7da5f3e279f9bc805e422fa297d1cb7f2604e9c5343b23d3cc82f8cfca0031650828e887c807680b00545e7ab2604732d0d2ddadeb3aa776ff673ffcff4de6c3ffe3d85c8041992f61cabf4003111890b0f1420cf1066001090a0413febfc9ff1be002222670448b234784808a20421322d589ac1ecb7fcf11ada66d570cc5c324e076b31c8e12026e373b47943a860842e8b9fc9b70c4881d47dca793ae7473e96baba7afad5cd4ae6c8bb516a183892345c0fc1311c1fff7ad797b8448f87fc2a78e0c09e2c8100e54fd881016d1bb87724e7024c7fb22ca14b5ab0d05e8db7d1db901d3da6f17d3df8df516181738fcff6e0571200ccb6b8bc12e5771d6d745e1e0e0e0e4b4790adedefd7add15f71ca9d18300476a4e474a7afc7f76c3927087922969001fe4b7676103092f80239914af3a929d8e388231f11b1c7941da232fc57ae4a5888fdb1523e9b6f4c7d16e694a175a302854945414ac83a4d7d3ab6e2ca6e906bdeac68231c62d18016024bdaa7691deaa359858820688a2283c4eac94b210640e2c4814ffd80ca48fff4c861a76cb81368b0fd51088fecf0ef09fd1f09f19e0b54078c4d0e347445b4c66a7b0d93546b3790fb942d9ddd9ad128661188621088220088220087edff77ddff77d9fe7799ee7799ee7755dd7755dd7751de7711ee7711ee7711ee7711ee7715e5996655996655992244992244992e4388ee3388ee3388aa2288aa2288a621886611886611882200882200882e0f77ddff77ddff7799ee7799ee7795ed7755dd7751dc7711cc7711cc775655996655996654992244992244992e3388ee3388ee3288aa2288aa2288a611886611886610882200882200882dff77ddff77ddfe7799ee7799ee7795dd7755dd7751dd795e42886e0e77559583fff8ffa67bd4682f3ffddfd245db77077abf09ac281f64a45b32edee588b37bca6e81bb56fe33195edeb63a4ff9cf62d022c481c8fc7f96f49fc1a0e595b170a0ffec85ffcc85ff6c0002c85da755aae4292cd7a7bb1ca8b73dae2b4d79dbb31aad54f68a66577f5d287efbba5f99c56ceead4ba7efada2b9fdd9aeeb45f1ea755714e7d596379ad9adef0ea568ed387bfd6748ffd99151982a2afc0ca9a854a112e4035445a525488b962aaa2a58b65009caa2f2d293c5347bda2d86136dd6a5791632c5daef4f1167f5cf6ed7a2b68a4f08dc7897a33d78db5a08cafc6745eabfcee9dfc59ac8438aefeef64255bde7d6dbe67665ad6eda578d59ae76e3ceeaf908f32bfd3f93f29f9990a2a2379bdf6ce53f8bc2b35dbdf9db7ab9a9f785014311f43e3c6672d7e90645170858e06c7f393ba46ab5b2aad5cb2e0c3db7df5103e9755b6e8ab0238aff3b94e0fcf7d73e30c88a925ea7eaee6eb17be57d2ed2eb5c1f38c0bf69aa5a3dc8e73f0bc17fd675aba49c657beab86204b78e247430f173ace07fe83ffbba7fcde1450e25be488e3c72ebc9eb7dbb4b0b2eda1dafde1ed3fccfbcac2b290981a60ccd0d722089a3070ffc84f13e385eff62e85d793c8355703c1cff8fc4fd3f91d66b6f24757753bd01c60d40dca0c10df6853c23d34cad7abe52d4db23ae59ce5395bb52b15cadf7b9d8f8e27dae14e95ae38c2194b3537495dcee37a72df7d13fa6d9811a66acadac9a01e593e2f9cf9a7ca6737a56ea45b36d8f4fdf45f91d4a834443028f8651efd19bb5df9f77ed728602b43384f2196f86149bc5d90ca4ffdfba19e6bff63e57198294c1c4ffd63346619563a4fdea7b8ac7a5ede9b81c6d203204793210a09121a5a8c8d5310a8853712a8f0ba7e2541d97beb5b06c4fdad72c7b5be943447af5e9b8705c4c73d5f32a9522451eefdbf2f696fb6014e9e2014597182978b16ccf66b9961a320c41fe7fabf8ecad4b6524a6dd6c7edbcd5add9dd716f33f761bb8713b459c0de13fc3ff1908af858146f641185cfc3f57db9f17db6af51015b5abfb0e9966ba354fbdcf9552b9bb8594593c4899b57b4691328bcd441d88a3f7cc9aa60a7b820352fcaf504e95cb559a5d5de839a5bb5b7f5756c6c1ff631bfc6718201939a0a4bb9b86f24514adcaddefaa6271577d926e23ed8b1df676adb45b0c7fd5f627cb2b0bf51d000ee48513ab9e57ab9e571b28f3ffba7cd531e7afb9bbbb8db6dbdd8dcd5d0cf1dbb6317937dbd96dd4c564b7d16655e67f66ca8cbccedbedaf2cb4b7aaeaafdcea3db3291769fc6b5c0cbd06e0b8924af1b0f96d790babcb57299569eed57d55adae2aeaacfc660dd47a9f0b03576c967559e140f9cd543abbe677531113d4c5fb5c9955b19ca3aaceea605416485ebb809076019dffc75ac0020b20fdbf66811b0d0b22babbb15868582811e4b3902310ed8ab722862d44a5e7e55ce7ad85cd796b79393bb45b5887da9f16cbbde253a5c572affc632bc05400c8bfca34554359f660c00570a461421221b8e38b26dae0f982410d0c3713c8d12630c60ef88a16b2f60f2a9410e00355906084005882084107229e0f454840023b2548f2431231d27082ca0b6610d510258e57155b54c1fe7f087da7748af4eaa23d18a57f78d2cd45c7fb5c18e57dae533a86a51ac3d21478a5a0049b983473970395408500fe7f7b77af92df4c25bf998a6eb7bb775116d226b0feff637fb4452b9b770baf8ce5fd483adf8665f3a528d8db3c8d86d9bc118c2603ac0876e395c69fe9a1f4814d767343539ac1b0d720db3e7b2c859209d8db40a1f9ec310c9bc9ae60980d9661d84c4d0b1996613659065a30ac06b3f90c23b2cd643535a71c8c95b2aca40356c2b02c073b4186e13c0d56ca663686b190615876b325eb20c3b29a52868d20c3b09a0c4b01d300c366b21b0dd0ccd814c132c0300c6e66b023b09a0cc3b2191596957270c06c0896bac16896cc44c16cb2acd4cde46419a66344c40450ea8404917de9330660a599538926c3669ec607ac0eecb337994c8f3d56c2328c0fec266b8261194d96cd60d8873dc16eb021599665353e18932c2b651837b309d9e0a6048cc8110e3220309a6c03ac84cd609f096538072b7db6d63c3e311c663e040d602fa58b6c06abc14a3618116ca64c96dd98331839836559096743704e180d86d970a50e040ecb726a6e320cc3301b0c33b12c7b63a606c3c94a33469808990bc36676301c21197663836552b20fb20f320f667ee63123584d9661444aa69952b6419665580d5652319c2598109a0ca3c18a8c188661580719006a84e064187a33c426c352c06e306c26c34ad815cc83accc946442329b8c069bc1322c1392d994b0199a190c1bb119ec84e16043300c83827d90e5ccd86037252cc33013c36a32c89060a50ca329616526049bc93ec06666b2ac9495b032cb300eb21c0c07bb29651886999807598ecd0c56ba29611836622c49931b9e192734d80c86839592603838a6902f1d7c808d50c2b2ac26b3d99809034ec8150ccbb00cc3b09db7f9d6771904f3a34bfb980b1d7990c105893a1cb025d3c10dd131c76b09c18d4f018932760a798c1742028b228442e0414174b0e00796103ef8e3043a94702512499e94b90814231d44968c21e460221d180bc473102344dc82dfce403ed8399bc850732cc151986be2e408541f209c7808085883237fc40561fea4d9e1714986ff992aff5809feb57441610a323533e490d081241c9b9b9b9a9c9c1a1a21331ee0d8ccd0cc603084880c900837a79a9c1bb234c408561a62138021ef0c9119130d1b320891545324b3c129a18878403a202987cb105d42152193811dd06c2961353c19488a82858a264356ca2961d14941d21c336034a606821432598983999d34929cd0910482d00c18189942809913c8182069039c2e43900891640583d64dcf414112cf8b73c2c983c9066786088d98d2016e207353d266763e32782481d3448d196e0001a2482684468a66539650d85fa488e1029a538e959c126ac0949ad89431540089136228238727331049b1d4b0459210973a840c443c231805923610c9e4d8943539374566c69f13663cc8b16243e687c8d0cd950eaa58c9c1b9326448f354204983124acca9312f20529323a48a082b2c91947373e503d486249a19130d5693424d0e0d949a263d260871e130b9b9529363b301112a384b4a40381a20515202071934b939016929814ccecd66f311f9c61f219b21251b0e68cc1911674889099662836393537a428342899482d1743013024d061cce4d3a53568192e42627039c918c0f9010f0e6545a525a52f344529322252a344e683ec059525262a49bf12086a4ed0936a3ceec9466680420c20a09e0ed031c408616523ce009256a80c105a42e46dde9b9021815bc70d93224840500574cf23b9540c208b8d4051783f4a1071e26a4481081830d6c8e08030c269648a18a09a607180c1152b305165634a00926945800124714b1e5c4e4c93684108308620254853ef8c842c579c861555350726c9ad8418711a70d369c68c22c450d9008c9b9b151d20105a800b3751010007eac543102010730c09139420b3cc0014fc0d085cb282641522a838c3fb8a4a2883836355314c00a0824f143026c1080028c30228720a014142643b040b215648094fcc07c647994f0c8e8a0990373235b235303278d2168646564636458cc3c20135362015b72e3018d12221b641a64186048b40b688e641a662a15c984d0e464383737998d0d4d56c26630ace6891899e960e60249251c924a586a9a60cce604644c4b24d1d00cb129c10d322524ba9206439480a2a686a412169c0c72942491210927002515663e10f2d60cb9b17243d6e4cc40499243d381a49b2a929080218333ce145182217224d10c9244338403359286bc225c2009274991cc060acd139a1e68c040c80640c450ba21c94808464298d9d19edc24d1068981c6c90d69c333636486e74689a4992cdd939a9c9a28926684d470504209e966b0d290122ac70a8d139b00d470509353c3c210244390e024c1c9c02600332c88a18683192962a0f1228904164a2cac22c1839239c4488d56c26676667c4a424432a8c96cbad874600344834111ac46c80c4d69c8cccc4c36633373338393a3a43463b3c5e68811a11ccda6c6069bb12981a52725ec6683990ec8e080400345529128c86835a50e6ea8c4509223061154f80769011e6db05106195f78114a74e4a873e98d9bfbb4d6ba5c80f64650fdd23cea4ed5ea372651a668d8712039e6ae14f5282291ea940333ca7d5c0e476f1fb1bdb0d31dc86591e45074e456a91677a998668bbbfa4aa600cedb5bf5be2f454110ed46d58814243b4e1d3db4f3469db95d4409869d2aaa59dc2abaf74e89c8dca83d527b2958967be73c840e51b224514e153bcfdb9a144214bbad725e0aa2dc37a22268250b22cda5f6d24c827a8f9d279259b232219a8e5f587adfd6a4e87d231019fdca9114c90fd52058ee1f50550d3f4ed4e3d87d28e8893da829990ffa2bb991cc2a47822097bd4e4ad6033a721ca7b74a66f5fb4a515d8521fac2639a67968054d4a9ca85e457962aa8eecd4316c9adc1d053c9f4e3c230efa0a6fa1bc58daaa517eeb02b75e842cda5a93a761f97aa602ae6b0d16e93590d450d869bfb4004ec746b502d552f2d3f0f043d1cc04da6e4a8aaa80886db1b6f20c730dd24377e5b0d3914ec523f9801321bb8141cd30e24bb318b28d99135a86017925d4a826039ee0e140fb0bbae0bc931ec40310d47b25bbddba5e123bb5cee9dee1155c32fcdab279901c0912c49d053b747a6629a925901b69a51f053c9104c43521cbf95696604e052b44341b5ec38920bcbafb392cd008aa858966a088eaad6bad33284212792df0e4735ed38f04b63e8ca30674fdc25a93bb5dca34f4606cda017aa2557aaba534770674969178e5b0d4b35eb120dbb7410b4fc44520c771ae68ca2626e01daa1614e534fe45230f4becc0292ebf248761c5a86651e41dd0513247bba2c554fe5c650fdb69787b04034f7a1610635876a321db97095da2d677d4c73b79c4d53c056d085e8a7869b2cbb91ebf41e572afe9a662add5c5e771b8949f3ca34a5602a1041516f8ed35987e4deea470462807060de9faa9269b7d1712c7397821daaa48a861ec76955cdbae4540c05dda87639d4a4d6a9fa6d52ad829d4014c9310d39ae444131d51eba0533813a8adc97bfcc795e48e6f2fb82fd41725c597ea046510e1453b03bb11288df1e7538aae298bf91fcf6ca3453284682f21349d20bc70e1443348fe1ca3483303fc04e245115e5ca328b25b73377dd2aa6d94706c98c96a3a873f7a9de0e3b3ed490d35de7895c198e9f9af7d81e28a26929e67497aaf8852bd34c0d617a683424d1d203cb510cd35414b911885a15d351e4d29d3faf143d15278292243b71a3a3985550832368050b011872eaa8ee5c6635e4d28e5ba552dee75285a1b751dea77f7878d2cd054303cb630c430ee54a72cca2f6c64f7378e8d4db2a9ac992e4c84ecde3ca34370682b4144b50e5526ee74fed3a75659a2917760758966348a2e31e3ff1134b6d479992695a8a63dee507d05144c99d3ff523bd51cc641da857762a48a66329a22a397e74749cd7699553bfacea1124bd39400f4d45f15353b5e4ba727772ec31443bb50b3dee4bc38d72ab54910bdd54884ae0e1b038b4ce5be534e7ed1415cb12f500da8d5db7cb14fc72f8a99c0887f7811a2db90f0c454e04d337c0eca5fb03751e4514dc29ba32cd1416cc8d8f044111fc4a552df51647340bd606a9352a8e6319929f0876a3b832cd540a63231dc1b223bd52835d078e5dd8626b905d97a2de16334a6e95443d35424d7e5df6763986991cc9343e0f15c3b0f44a910c49526734d2922bb9fd75e5d8a164a87a63b0333639969953b3163b7244d5d40cdd7ddde640f52b399dd53497e1a56257769c8a6611cd9c5792a14591e4ba34832a87865cc9a9d818dff7796309963bcde326b51663f452522d4130dca1ba3397869135d88129a7aadbe3c252d46088398b6197a2a958722557a61d185532d42aea8d99d469e7911be3001a96645635a7399203d5bdbfd021f86d704cc351ed3c311dc1605ea05caab5988ea9d7851cb8f306d20ee5403197e02eb5e89525c7bad061b93fb1fb4aefcbddfe5015c605098a2088aa59d5e557e62eaf4c73bf2f54b5eaae96696e01723b44d3512d514f8fa828a656980648142ccb4c7ae416cb12edd40ca45bab796f8d76a5ee464d6200ed465454bd74733a553557c28069a176fb53c1fc65aedca3a8ee2c462ff4ba3224c7f24bc11c7a2bd34ce9705a505c0a6c8bb5aa36db72bdaa016017d06929e6cefb48102c3f10052d80829c983d30f5b4dedd087a2bd34ca552fc6d7f50443cee7e7f58dcb592eed69069f2603360587c9bfc38b1d360e871aab8b7ce290a7645f96951ab29a8d52fcda8b8add05a4dbf0ceeee53530f25b5601518d530a35ce7a1e306cb700457a69952f1b0522f61b02a3a0e0dd1b0fbbe2e875e4ae69569bedcd73453a6c9e2ae95974b64f2b4300a80e588a2a5086e32e5c2911bada0b6a07e785a39cb9b592ba6d9eef7cdacea6254741c07e62f2ccbd4dbaab8d509a0de9776a8a8d150f5f61e5509a01feaa9e2a8963993e338aa1120bf91444b4f2d49317761ba21f095e0a8bf0ecda9463d90dc537879f4c651e5f498a2597f5b0a11cde5c8896198f397414e3f004c53ce233b500dbb8ed3e4e7004fd4dc0ec7efeb3aef53d306747becb6979279876458766814aa87ee942cb72653556f140a2efc54b11cd33224c92ce62742728be588eaf0cb5f1e45274255fdca2edc68a839b50b731339253f6f8363f985e547924c78fb2bc34ca29c2649315ca224734976ead87d192c4190019d178ededebbdc59cde8572a817e5cd995a55772dadb5a25175096ea58867a6f0f0441524ca24c495473bb43d591ec40245012f5c05d8aa0a76eb2f3c62340ed71e907ea4e0553345515e071a406454fedd0112449d40815dc1c2aa6e00ec5d213c9b088f44b37c9815a454734fc3411281aa69ca88adfdeba234b7008719719edd28e54b93477fa1302dc20b8f7f6c2b1e3c45c7a41a8fb23b98f1c39adc1124ccba0aa188ea2eec01055bf70044214b5f7852a0992e948923fa41e888ee987e651143327fa30a22099517093b9fc48efeb7ae0b4f634da897b4c3fb4cc5c02b83c72e1988ea32e3f71045395c678187349a63ae54872971d99b91d341776204a6e7267aecb21a703ba4b35cd689aa69be45094cc8153391d76e94ebb5245432f4ca51802c62e7b397f7a9729c8a921b84ae94c41f59c5a2f22ccb6582b8f697615170c8790e37628921e995570043b72659aa96e9a40d80de856c5aecb5c89769ee869bd32cd1769b7a69932cdd414540f8f699a66374d77bf2b0f8bd9106a4d921da8e68ed329a8a235809eea7d5a54396fcc6ab7c10384397fa8973f708f652a861f0d9b545175ec5450fcc630d4292f3c00c00c806a2f7bde47925d9772a1160b907a6906d3b2fc4830f444fdad4c93bf2a13300284e0a8456fef9d72a1063d74659a3cd80c9eaac18da6e3f8a9a0087ea30c1b0d4794ec36aaa25fde69b7324dd3ace283c59082797768b93559a2a85655321cd989602ed1ac414e1c552c692cc31144c570f4c24f04b586a11b49352dbd52cd1c987e2a6f552f945c5aa6a2288629e771a9565de0c2346fb00b472e55d18c0ec0db5f888a99133d115553710b80033559963a25c5910bc7dd421e5135e5c4105541b1fcf26b2cb9ed6950043f521d55120955c11205435145457573e2d147aaa23a7eeae7711efa85469dca7169f6ba14dde3dea076ed302dbbae1443141df3565f8ffcb616cb52dd592543ddbd31fd74b7c32c961f878aae1a82694e439144c76fa76376276e9daa29ba49f2035b6a97aa5ede64877629d9712e14f3a741758f3a1439b0dd59dc79875bcddda8825dca42bbf1db5d3a96bad4dc9859711cb55a72642e51bd7529864b3b9014cb2eedc22e4c459405aeeb542d7efad3a9da657205354776ea06c72f1539305c895d06d53173e9977623f915715d1e3f6e7b61aa869ed765d5533339a22a9a663d8e9cdeba24c3718b6249925c596a2ed4225966ae44f53886394547d10b4950454b314dc5af44d58c8aa89a51358f9a43f318a65ca9a6a2faa9a947e67324c59d725e98a6a8bad55135e66fd45f1ec772d41e07922b907a2c394f6f11d4e8eed430e1e6bafd89990cd5904347307924bf2f7b5fea959d9abb2f62198e28a8553115c59dcb5105757b65ee420fec34f9796a004a5254b7e7811c198ea897bd6cafe3c0720c43afebbc32ecc2a5ea97d58f54cb5454d34fe432661104393124434e7761ba65e7b2144772eb4f7f59244ac12d6aad8225f991e1570e95e4f8653197e5e642950bb584a1576e5093e9e63627a6307e6157a268d7ed516b5028f536c7a1a2eeca6ea7dc17c4716a497a5acd9f2786db03814094445355ecc4740c5351fcb2885af5ba30cc5c487a2aaa6219d15497fb0bb398aa1c3aa2906a75dc9c06f52e3db2e43c00841adda8c8ed100535d8a93f5dce68a9470e54c93145afa8dd88e6114cb3a837eae513c632ef5ce6bdbf114db76845ecc412453d322c37a98661958c96dfe7951f89961e2a7a1d1570a35d464794e44a5daa3e2529a6e947aa1cd965fde529e8a837886a508f1ce9a53d6a2a867aab63387a6929825274f77522f7899e97c35035a10b51af2b515254bf11143b6e659aed6655e9365299a669aa543d29944cb972aba8176e51cd5faaaa5cf5ae6cabf74441d532fc40af2c735a8edfc8e379680ed372935fa73f95cc29285ae454f1cb69f86d4e4d556e659a2ad34c79276a30f4bcb24c3b1145d3bd324d124a16e7aa2257a5ba21c30d6ead7a6249861c08967b659a2a70d41cb8c172ebb0db1a04396ff589e41876293aa65e8876245a862bd33ce26ed1167ee0377aa338e6b1fbc6cded9569ba6f0745dd6d954373996e8fdc65ba32bf101c49aee43a11d5259872dfca3455bacd2aae4d13c84b511255bf4e6b4fec546ed55d2d95cb559569a67a5047598b694ae9b84c7aa0aa4b9d77e8e50dae4cd3cdab54659a29d37c59aa696e1777c1af8b55020f144e771a55bb8ef3cabd433245ba4ae051b5ab69ba6f8b7be28deae87921f7e59c8e69eaad4cf3754dd334a36c642972e2dea8ea892289ee71c555e64edba0d68a699a666ff172075543cf2b43d51bc75205d96cb455a6d9ae226aa364b93b2d8e994b3bb02457a6e9eed649b9bd3425d3fc8deae87d61b932cdaef7eeaa771799664a8b69aa585cb7d95d659ede44d55dae4ac5810e93933702934e4542091e8ba7aaedaa549d1831f45ae9ee2309aad392974a35c208580411421001abaf0b844eb5572a251fa8c4d06be2819b5f264a36e880030e9a6cc041a58ba8641169d7991a640a19020292480000007311002038241a8b062432b9704ad6031480015cb264ae4e1b8ba47190839431c618430c010000428000c08ccd940101f1fbb2be0ff4f39af880d3921e80bd4efc45135fdf4fc4a586b8b7c4255071994d20d5049d5184f95f8d367f76bd4f1fb40b4aef96697cf556c8177c8a57a99e8117799258660be20e872aafd89028f26d24276581eeebd0937c9c7ed3e3deea716f7adc5b3dee4d8f736b8f8b1decb52d00c77895ba43bf0c31f0dd4afea459e7ebb1235019e49c84125cbfee2ba9988a3888c1aeda0503c94d67777f36cb03199a7e6a086dc5022d0ed06635d55ac0500f25d73380f26e1c8aa5922e6f7095b87db9a6076df87a0035f73dfef8463fbea160f5a1fba9c361050eb9cff178b67dfb44cb6e978fbd249844c2b57caef105a2aed71dd38277fd8cb5895f445879f61afea0c43b7b1340130ead9859dc97dae7e10ab58ad13a508481d2bf61eb15b29de10cc76ab90171f2a7a43ad0a35e37886cd371637a7ae72df54f34707796af1fa3085595b0eab3f9283d01b70a71b512688aab7420dc63ddb3cb81d1788b618aa2fe870b5f0c6019e2fe79a969b110153de0ce2832ff08ec4700784b661ae0bbd96eadc224d8348ad2925e5167f99cb649643633402886aab38ccb714e63890e3c5b429fb871f9f3b10eabf87a06ce159a7a2e8390930ce9ac15c4ecb00cb36f56fc326eb7995a117760753390cf328d3a1ed89041459c151e2b15d8d893241c3b62ff77f77fb1ffbbf77f582fdd8a0fbed614361052b2dfe64635dddce83b15bbbd9d0eaa5d917fc64b025da591407812e27baffc57da97caff5aaaa336d151684de0064aff0d41ff823b7a314bea70b12c19cd98fa9ea82f5a89eb63e2621f5598f59b5e5cfbb9fa737fb9aef83972427d808316570ee5a36bee32ade0332104e91e498fa45c5fde8aee2bb2581e908613b3e54a3c428be400f3b6b085eafd3a450df91b7986141e2d8b8956f56941cddbcba3d5cadcb2e21066fe59596f49e58ff9c3b3875ca863f2e3845a8d71ccd6857f1842dbc9e3f69acf3c7439c31519f674750225001bb6e92e94e85902b4b78f90c8130d15020b9b987b873ba69a44d1d7b5753d74e1ee0eaaabe473637c091a132624df8d00cc3ae87fa83b16057d1164d505d9f03ff5ba5f51f00eea3acc7d5758dd1226899923374a0497f730a976bcb95e0cde9be8c5d69fd0d0f1694883cc54ae486221884e5cd322c5a13aa72ed5fe7bd1415866ff8008e82e89fe8ad15f51f4578cfe8aa2bf62f45714fd199611fa3b467f44d09f39fa3382feced11f11f487393a43828ecfd17111744c8e8e3d82ced2d13111746c8e8e8fa06372747c041d97a3e322e8981c1d1b41c79ea33324d1f149051d171b41c725d1f53a6018c199cb0705cf3a9a3d6cd70b0add62996ee2124aa9b4a4464ceccb790dc9b02b1fc5da00755af2ab2b4c8b67bf80fd3a55d0c25a2eb39dad716823b864e3b38bc0b175c672a951732dca0e268cbca9a58e1659773488cc761a8dde03f673ee72c84729d07e344b07eb1b9e0c3ce0085b8c7bb5681714bbd220ca1fb3b334f06f5012962b31dcca60298d4bf65bd300d00e000d7210f4cf788d307c870142b84cba8be222fa7fb528d778e36a395678660599acf0c60a62ad71e8d5a25ce18d15c45a894333472699f3462662c571e8d8a28ce18d38c42af68f182413c327714863ec1fb121994c3e89431a63ff2313c9c4f0491cd218fb470c9289e19338a431f68f182413c327714863ec1fb121994c3e89411ab1712b73049ac927714863fc1fc496238667e29089d857c6863432b915834063f8240e698cfd8f4c24131b9f64228dd8382b33310eeeda34ae16aacc97db8bbd2ee1d7327833f64b6c0d80d2cf26d5646c18b57dd0278488d43bb3f083d427ce3b3ca439e047a20f28da6a4523750622db3d102be8923c0c45b7c58dd6754560c0d22c395c7efe68191d53b074ed1a6924da32b905ba62f63e746e39334683ede9f06b5255e0bd13bd33ddd9c488ec7ff3f5645b3c3af3e91fe23d44a7b44371ce660b6989b8e720488b3d788f3e6a9235db80610c1c5a8d60cd153a1483ed33a4a739fc00d141ab02477e01150ec49c3e66b5bf5515a60b98b8ceae49568a5e2c4c151cd03d7fcfea746c2b9dcf1f2e33693e5be5944e15909b83f36aaebd0415c53cf141f4b059dafcd4e69f9d01015a6f74a71d901b30174e43aa3196200b890fff8b7bc2a4017e320d37d9636729ff911f02d50844d70c8cad6471d0118d0f901c13fea9c5dee2ea90ee8088c4011453b5a4bb4b63ab08028d3d0485d023ab3b4cc25cf4811d84428ab380d4ea3783eaa312030e821efc1d1f8e44c477080e7c22196062006ce5a5cd8585091fd99185ae85e131bb3c205255a0e397f21a7e62dfd087b550b272c8d6321883b1f5af24c0cb7dd4faa0e239842131037ac29322caa146252d7897014e420f5c14ff20563771c3c48e3c3d298303110f39a402d7d063ecbcb95a3bf52e4ba9ff3440039071320b0fe13ac22ce26dfeafcb4fec536751578721ed6edca08a0d0ad05722c3a6e180f385cb754fb93802a42936da0ad95116b7bce53e0087ac586c713b0adc0b24fd61d927c8ad71f40c51db0837c0a6239cbdc5db74887e30e90c5e87017a83a84f6cfb05bd05c6332dc502e81dc67629a3f4b5fa5fdb0c187e3f5e1c91976ad2cf202dce0c0e3d0e44eed026fe011d3b76cbe7d702442de20f3ce953563ff5cab899d6793a7254a6eabf649507dbbb5761026f28c7c2ec9ce389c978e36c910ffb5d17d719e60783130f8b1ff6eeebfd75b62deedf4e3d6447e0510e5d1ce09e5df6cd3e8aec17992bdec0d66c1957205706dd676b2ff2b041dbd327b3cccd52ccd1fee417c1897ad06fa42668764dbea2d951e04ef5037887a09cbf8485a602353e7ffa9978926932e0c787b577b392a3e7c4d70f79dd996bfe10c06c5a46a23d7c93c977b6d9eee9d5dc1a8fdceb5b863555b3e91b1cf8685fc5654293e9f54de50b383a630976ff147c308e4af72cd49ad6c345a648b18517a46aabf223bcffd910a40d597b00f742e773cb20f8d95fd563ee042e03fe1aa7e84c687aef4188634a990ced3eca906a297673c4c30104d80b61f2cbd22e770ccf04c083f4c22051e3e6d16dafa90c0982a26c5b4a99b6d8fcf22961b553782524ff52c45e8504ac461bd5e9912213fa329407f9b3dcef88669491510975920c4fa564c8f544433e535f344580f0065d0455a74b293b947ebf98b047c827ae08884e23510109e10e76583d2e2357c81ab885ed80fb4f0cf1967b4c982b21c60158de20d949a4d295efb6b3557e70d33a18af8454d1bb64fdfc339971c7dcfc3f1f15dc95de3b665862deb964fab72f0e3a745fb5577fa2358db16c5af4712178a0702f662ead693a2f8ab0e695a41cff296549937ea9ebaf368fdc90605133ea3085c46b438323c1d87453e3d80ef36f5b1d6ef0c3870568ffb64b53f3c4faec4fd95e0ff3aecfeff3ebfd8664aea247d12e8edf3987a135a091f393db307bf195be3cdfb168df7888b1349a89c76a5e5533e85b3223b4024a7dce5d5226e6878d7b70bf087e7c8b6fbcabeaaef377c6a82fcb7c9f00952ee160ce840002cbe477c6da1a6a34b2cc8418246328d3f2dcca59d68e6ea7a3fc2c70d2408470273a24a673a0825524e5097226529d455a8ce49340309533c11c36db48bf7dd031d31ef106efb2288c6e4da138af510e83bb9ed5b34fc96bac26bf018c4ae803fa22ab7d936fb8cbcd1a47ca5895bd33cc5d6e3c875f46f336cfe581692eb3e8f4825339b543cb34eccb705e256f34f74ad631dc2cbab494d3adc493cdc91e33ea8723c00abf177c7b2ccd4c47b5848d512277369954a2d380549a558fd5006e542b74d6bdf8ff5b03501d32000c232ac66d6e3c47674a685f559f6d7703b7969ebcc5874a362b9927c5d99ef4717aeef3daa6f142a6188947341d85d80219c127335df197a21969a87b485dda6386add49afd70ef5764a29d26f047df27e117fcd825437f4aa1e545da747b1b2da787ef736860561152a7b755d0c6e317f333694817d654fbb0a2a04943732a5c05ac655ac1da0c74758b5c1f8bdf06b2f8e5cb708c56fe3cc4ae54147b747443d8296005c57abb6c96dfe2ccf85637b4b771883e865c71a342ae04fe72064f0482965b609f22ebea996c90a60b6fa5a7b07cf44a4ecc2aa0eb117c78315e5e6b76f539148ef1005457aa74c492ce9b1ed1fc27db8cf3b3a66d0196f9fe03ba67a84f96384700e608e6a5c6534697b96e4ff1551a702c8292027c7184058ced4b1230617c76fbeb27699cde8bf3a6b1a69638803de1ae4e6dfeca707c2995f1fe8166f788cc6e487e98bd470ebb0ae15a25f07e73e79075995cc27d48a66fd40f7da7abb77753eee129f66cb7bac7a97993daea56e779d3142e2378690ed3e1e10a372c6ec4af1bac9a1fff190dfa1f25477fbe56681231cedbdffca9805ef0ec13f98f6dcdcf550684732717ad6d186997d539e85fe837e9ea377f3dab025567a83fd27b2bbce2cb10fc242b61a95968de677e797601c53f9e9c3363eabeafbfc731f236b8085da13fa5cda87cf325473e666c2616245b3a3543409b8fcd679ae95d7925a3e1d56472bdc37f3d2a61a0dd5e2d4e3ea0373c863723e10e4d02609051e550a884e24c093137f45e512745306b048fcd69edb5f7ba5cab0fb95f5b91741af3628f28e51ff0f55eee4a6ab2f2fe593d9b7298d7e83edab24ccc0530c918ad26797c235fae57fad902fe616d017705ca02ad8f426fa170b71c09a88324e0183041f589e395388e17fc86bc4c6c4a78d2be33841ee42c92f72384d231e673a3b8e998acbd3a749cd8a623b20277049b5ed8c0060673e79abcf1e31fcff7c45099ba99c2adcba3c924f2b98a16ccd7e97ce96cc8b7a61d9477008a5ebbc23fc8c01bb7b2fa20417228a6104691cfed97ad247f2009eb3fe6339302ed7028c53b934ab5e964ddf8969dbf161d752d6dea4b0b32346bdf753adf4bd0ddd41ea24a155082d463e8fa313ee0fa3f1b37644f690ba959da04faae11289ebb7cf0b584fed51570e95b22bf0e2523e4229861808e752094d19dcc43be5237f3b2efc1bcbdf1fed9948341ff641ecfcf8c0b679ecaa38e36dd776af358f52b5f10e51007e71ac916df1fea3e804343b7b18f352b68b813c0c71b2cef3783dddf1431dacd0094e08b853ff191a2e6d6e9bc00497d3d6664c2d9e28b9b30b6c8da457d8e3861c67f0bff2d8be23f15f9aa4702dfb81ed8f0654782e0e527a6cc60f07f4512b4cbdcd86ed4e7cdf164c4faad8904fc78a3d173c70ae8c97c7883c2d57374051ece968fd98c8f10a5db5936edcaccd55dbf86e7a35cdae712db36794e02f2c317d107cd859ab7a8be5b1e097fd67a53e2412483ab340f1dcca13f36ea4d84ae593267f33062f41fbdb16d7180332a2b9a8f8271f4f7e0c7918480ee4757d3dd84141b476770e42484bc2fa5a33f6679a0e67f546f206bcc0d08b3e522bba16517cb9005a4fddf6030582d946f2d5733fb3e3bb65740d2983d10e4824f3e1171402705c86c244437421f9617597eeedd25fea50637bbebe1b2ef808222053ea5efe15978979fe7c2a9ce5e2eff4a1b7ddc3a9d9643ceaeee7b0e92e0aab9cf1e483c1fc7911b70ef8c27579da34eeb64b6e749a41ec5f539e49c12585c22bcb592f8d22445b0a578ed531a4c8c3f352d1536d7604c976dd506ca3829e8abaebd02335a8ce9b3ad62442947457dd5b72862469b31dd366a0c29e9aaa8bf1a1b8a71a07de76abbaea0bd2a31a0c4471d3bed0cabf8516553ab5bdd1dfab8e8e7a6b687125f3aedaa35aec445113ff5ac1598d16450af5df506cab828e6a7b64511531a8deab5af62441937c5bcd5d8286452ab51fd366a8c28e7a6b0471d2b05cd6a35ae63478d31e59c15f8a8e5ea1c7189a525c4b95d6d735fdb0fd91e61fbefda6f6befaabd40ed5827687502abab00db41de00589dc16e0a405720f6856d8778bdc7d124687d63ea004e0701f516613fecfb00a935dc3d216807c186b0ed10aff7389a04ad6f4c1dc0e920a0de22ec877d1f20b586bb2704ed20d810b61de2f51e4793a0f58da90374260c4a0d8a740b9df0d9e7e0be6907a3a4e5b8617b5ba4dd089a206b89614af91a17fa44e38aaef7837181787fcb369d00f51a184436046c405600219014441e3196f9c66fa919eaf5268c01a9a157fc1aa233ab697dc6514573854bce5e82fc462d90d10192887a73bcbc0fd492b0df72259f7042ca53fe5a6faaae5bbfe0bea6834f8a2a8fd1c2a2e9ec5f929c7e09c65932ecfd368a63dc78cee21ce5e181c9cf1da7c2f7a1bed35d86e231dc9b5a63b71a2c045fd0978464e6455ecdc084b3d13077e186fa2da86aeb1dce5834dc3e77bbc34ab73b012919013aabfb65086cda038312ea925b679923cc73d783a503ff7129850070c05650389a6c4367665cc2d5d8fb7799fdc68f9f315e5428c2d235f3cf2e2705071795c5aa71b964e9f3bbf2729d5d2a0a6539ad1068624299c7b24b4b1700df7cb1fdd35d06d6c78c858df3cc5b3fa6077146a0868b4bcc944c24c0c1fe66d81a948658e15b683a5775fb21219931d1096fcdd79b032e4350f40ad114d1924129b5ffd86ab2bb31653227f1ec3f7a1a4461f5301ae44d3956e9842c7cd108cd74cd3a4dd40c16a5d6aead32789f0a385f874544caeae01c2051c720be10b69118e046f29d1aa9e70f5fb8ce3f35037e68e7f2ac99d5f9c64949bd467846130044693b449a0a840e7873c801eb912a63a5e750a2a3f0a40b1f6f607913c1a2bea190a326333daa5acfa5f603f66031a2569bfd8336df4a918119226789eb6017d4892d225071d963ea7a10668584530a63aba3e38a9e0d2c2094db7c3d69fb39c66039ed43a232a3c9e29aa1fc1ccae2f8329665d40d07cd01ab4646f2048079de56ba0bb813bace24d759ae64b506653fff441eb3434c8698acad192ff6fb70fe5c32886fd8a1aa478641ab99721edfa6fe88839113f3b2e0c66180489991ec9efd66baa68ddb1645d6108cd806001192a7169e05656d3a13e0a5387004b1a806bcd7098b73326c90b6c863dcd710897b54dc97bb4eb040330c611a9dd3540746d6d879c542c49c030ae518013320227cac473c177f7481ea1ddcbf482792efc843ff0c2705e24b22a6cfe4dad745c8e1eeaca6251dcac0049ca0c95428a6a7f58280e89bd6e08a6267f27084a7b3b0c5ff3ec36c5ebea1d08b5c397f23cc213fe155a469f2a032fe250f400c8d83d06c08337fc5be6440c50e876d530ed89dbf33b1d3542ca85bb8a04038c4dd7f94d9764305109d64ec7f6231e43d5838bec1864f46cee96a5b32f623ec656c8c920068287133e07b3da610342a7b94786d320ad7536962af496eefdbbfbd826d0b788a3d4eaee1bc3cb052689e8affba3dcb01da1ee0e6446ccbf644fff5ae99efd19161b9143d115e4efd704b52cd26206f69c659e03277f548bf21fb12c4c9287432b7295b0a79d8d3d50aa1fa9f748b97ea3bebd10c4ebff30872144c66ae9d54fcf2347b64a2fe8a7a1afbb65b80e8fb3c92fc6d15848bdc61dfc507b1a8be412fe7c19adf1ecceb4ac637207d6fd8743b188d17f03a6d1d79c65f6160759707fd8eb6189781e0c4a974cf08048f15d0f4233343ec8b6f1bff8a68eb8b0b5c6c1023e9103cdf08abbe7bb01da4d2cd6dc28d5a6dcd141df37a2d104c1d735a2a6deae2911c9c1ead6acbef99aed5c2b493efd616198b16487c5f8bf56ef8eb1bbdea90ba48812ad858c1e38733dbe7e46d2f07b239d279424f661146fef0841a5bd36e3096b6d2c091a0f68373104731df673a0787b059bafdcef8d6c17d83244cfcd77aefe8e60e3591d1bd4a4234300a535ce7bbd9dbd7baaa8d8177efb5a39144bde256d05f8c7ea013bea7031156e5acd453f854dc3019809023716bd547b6f84e73a33dc19ce2fb7c110662d2b0d2f66850177087cccfae8fef408247b21383d93a4da660b22b142d006b0191ca7ff640d34963efb10249cf19506dd4943253fa1cc72512079ad985d0e4fb15897f66be776547c2f98346f86d1dda94fb8c8920b9aed3a2d67ba35742a1b3961eda1b7df2c3a75c17742675d8bf31fa3817d05be943873a0a539d3f2c1dc29c85d16f3e4132c53b8d66ffecfc77e12d34d584715c6560bbc7273dffa5e3eeb8eceadb9977dee46d09d308d8ecbb80437ca17eab10651d47d0313da2e230b4c3de5e48a438db474807f2fb84722cf2210e8713ebf80af35af7c4c8c4ccae2d7386630c78607164e029892aa65b8edcb20792c855f84a050160d3936db5325c1782511763d73fc9d8e75f2f0892a74dea7f63a0e1398df1ead9869bddfbb92ff3793b75ec035033bd312879602acad6ffa15ee9db4d94b998f859376a5c17c744f0ed35236b482eff8a5f7706d2b0c756c17b933a62dd1c6aa8282d57b8e0ccbbf69cdc39965c17f528fce3ca34e25117301614bfefd383e7aa58106488f9e1672cf7254dc2fb11e1c95eb6b1d512b8e2840680de8f167762997a80f3f199e9d086fbbfc9bd373d9df0881a4882146cdd9c7caac7a47458275a06a0bc063903663e02fc6e980a45f274f65f168dadf5e652ed21cb1a06646ec51db5216b8676ab9cc1c48259ce1844b78148ee8a306506403d341c2ee5f3099524195ab59ba37c909fd0e1f084ada0f32dfecc40f42dd7d754f1782d23ee689ead902c998292f298e82ccbd1ed54ed1f4f5bd969f6487fc602759ec5e63edc5a5faf330a67898b5af68f0bc830684c2d5a4f47e8759c8b2f8b99f0003f8ec477d904a857517f4b313a0d990a3b84f24a6de8702be02837e31667c2493123070593e00453ef38bb9505a9f446fb5783df792c51927e5df62697fb68cb9560829d944c346ad29dfc1556862c3ff470df53b0495162d0b8ea3f332fb3017902006c760b8d28a9ae079d8c24552ea9f6245242981cca298f8e895934fd2789191de49193faa428927a892b650b4a11fff8aeb31fdcfaeae0aef91e7c96f7e0f1ada5a8523c45645f5a41cd0a1f431fdc91d4b401d0dc19b3d8ec9cb2491c7d151bc23337f2fa61fed167e2294297658f6e0815713dc6ae579b2e8cafdd9e8c16e14a877da55f658c6ca62f13f18f6679098c4074d6e7592febb67f00bac864507678159c408e8c2fad2c5612b5b72f37612dc6602c51ca8d02ac0d3839c5b44b156f4499fec0213a2110b59d30f1f881c6b00aba3b5f0dbf017103b0a0d583d194ecc86832a3baa24fdf442030c1a4f6f230552d157719d8bf47d81ea595b289a0b411dc953fada047bb3a47e45a5cc8560d28f00cc871427c4d80edb5446acc3ad382209c7403ecba33a9a8fb8a986943dba62a81f26dd8964785928b8e1dea79dcfabd168bc54b9e7a8dc435cfa3a7a1aa000f057500e814df11233fe33e4b08d9b2b89ac35e5473714f7e5bdc507aec22618226a45e1943283b32e53e0474cceb6d1ed33638f0fdc1d094d557ec459db2e22423ea073b32f1341cf0e053ebee0ffdce5732d215fffba1429a49ce93b6f8df4412d5523a7ba57497fcf7cb1d1d2279d9345aabb080953f00fe86701c4df2f5d2864ebccb7023f80bb338d0b95b750102980d68447cc10d535c092910f8692b6a55e558b1b61b77caffafc0e7705c8f199949701584518d17b736c118520253e693c15d305b171d845a7fa84d2312d626b7360d6df949ab4946cea0023eb4fe5f2e4cf621774fa7be33c9778bf349bf2f6226b9a0b308bff4070b8f877532eb2ae21d661b4afda5a7b38b69d98d71c663a6fc27a75044cf969383c5a9d844e3bcd8a685c66dc2150dffaccb845e769a77f84da2799f0def175cfdab14a3defe26ceab9f1692e21926ebd4422ae9a612895f68c950cc4b3b009c7b56862ed7114ea99dec8dffec0e8eeec0fb12dee3fdf6311adea2fd4e3d285bacbf852fef434e5057cbc38af68b5558e154f7b6ae172b0df4aae4e87ea9ed3e007be305aebf2debd5be8391604b9bd15b64aa3ed7531987a0579a8ad7951e99c55366d907b79dd3c8904d93ac196b7d3d482ba62fa8d1863e27c0361ea05c38cdb549728c84ada63f9e8bff6f9d57f478b3fc266a88861f6cb7aed45c60af09cde82a8940b2c00c5106e8a3de3f94f338be1b7361f6faf3da69deaab607c9c8fe1a60bbf475547521917dca555ed0f91ad4056327cdce2397ba032f18514e8946d2adca54ec3b4b1e143daa741141d20fff4d47d8190db8b2eef1e3722f88681dacf1f5b95c5611c6b9b5e3d8f90840fc5bfb05bcc2dad66aac4b5df39e09d3ebd6d36d59d1d4bdfecfa59e77d6abf0ac542dcee98d22841d273d288f5595a755d72f8bbbcc5beccf21869e1ef2ac745f970acac02e9c99da7a622a54fc3c764ade08869cff8b1ef69ec8264f475e2867fa9c68a802e69a7f6e456dab96eac29201c4a82e11e8b3c58e8b5bbfa615cf315688f0730fd9ee82204eca09fdd7ccf7a8442f5eefe58dcb57d384cd4d31c053288f82c3a22c19258853f46ce6105d44eba28527d3ad43ed5ac2af567f375d43c3361f84f4abaca7f9e4e67d76174d9e4686246f124da1d63099cc71fa034f7a80c0e500d8f5f382426f7b7396eface4f5a22bbcff18beb9661bc8d324b4706c2e4311c3d87f50757f697d75411ef294095a0e4544dc7d542937442d9ee5aeaed07285a20ea9d91968edda4c6cd6e5ad394b5bbeef62c44bf6b0c99ca0ace5175bfa076a3c1e1461741c928e472a9f9f479b39dd009ee438deeffe7cf2863a4dad3d2e42c0551283b5fa32db69867151b75eaa1890d34893aac2df3cf241e0d16692a8c4372f0db11885d15e1a1a8742f3841396887704ea0fb2669cc3d761893fe596f1d3dd222784894849e6a56e803e9705cf750902a78830721d53fc996d686444d0286abe42f876d626cae9dfbb9c566ea6cd0fdd74752653787d64d9bc763bc0b3ccc74660917e0706f169fa3ac727e308b2cd06802b12607bf3c9072d0acb80248b4022c48081631f5294891d2c542da4f23212be3d41312b969269c15c6d871aebdff2b43470653273ccd190796c6a348df8e18f3f4de1f87071a190d2a1df62d157829f5e4886981b23fa750f05f8732e22ce2c0f995309089d2caab0ee8a08320f5fa27b2e3530555df82376b24020a392b48f6dc0f3eaa6661aa91ee6fdf9ad581db7135e89f3cb5b504166706fa8619bc7d5d27960d932a0c96da216a93d6a8c0f70d4ec97e8e09009e8b6609d7aa6c2192079a42db37ee20f47d8febd835b7468088d0fb06075ccf187aa4a9ef8e3fab525d828ab5f869945381038f5f32f0e35a272c17b6e0839e9de072b6d6426b4a2bec2a3fddce8cf05522048c19d5586531afdc05a7c2724a03da129237a355d76c55a9ba9f1f21a695b32150a8a82302e28c3a8bdc3ef470c31455a435682c4b3a0e90b8c50ed70ed883024cc3bc4dacf4ca98a901140198bcd8d38979cadecc9d8a4a561e5e9532beb848ca1a5f2c254081053596acdeded9c68b789a62f7ce2796f639edb3f8c850065f0b1e512e14a86f3706daaab97d5af53791916c74a612715bbdb4e4df1e0f62e117f521b33d1fea94a5b65fccbe084fc848f6a07f9f8443362e552bf1a520d879b2323682b3e041b57dcccfbb90a85030fb4f0c62ffe53b041adf9cabf61b1b6040bdac5a6e68ff21377be16f23bf6c5308cdb308dcb13a6b11da686d5d72b8ae2db3dcc85161843621b25e16e22ca2d2cb74999a52135029f28efb7e9f34913fb894c9cfa9d3e32a75af66ebc28615bf88cb58e317e97bebff6d3bd490ef867ba7003a4261b3d79b27f46e893f1b1fdb18f2d55975a0f37055e95a3172e8c8f4512962b39f159152d771c76be9887cdb944b7ef7d619c3752cada637a53a9740c704a3af62fcc029ad60489192895dfbe21ed7b6a1763519a8fe33c5c9a2a46daadf6001389b4024f5911dcde7cbb2d6f13784aacee50107bec3e7f81c59f65f7cba2d8d691442c8185a2f5bbfe134ddd4d93ddc7d6cbdd1d3614cd499fcc29c35d5832528e981089da1a363e79f5f52001ea0374127810168c2e2d66d3e636a11d637f8613b99f76355a2b527f3ada9d2eaadd676cb9de001c26e9711f7795163d8c4b6951ec7f00f7e4c36aa71315568806d2958da3e9597e95fb4842e1c757d98ac8160ad5983695aee346abcb94e36d25323aa93d5e902d2544979d8911411d5c786cee87dbd67b5591ae702d4fa7252f6466e5156d551d93e5655c6d290e0602abeeaf2ddab6e39fd721c7288eecc02a40adf9b8591534f35925c4f06fd31796ae4ab757bbde5a356de506194b785096e6432eabb4976aa61602c796612e594d27da4c1d764eb1e935f427d3e487eff27717e949393cfc0b8cd737dcf739a15b071b0fc27c9274ce2f93ac7bf0ed0600fb38606edc94c6dc2afe2c5c9a382b89c86cfb3e85dd0ea990dc3a269a74875509d02058f1c5ca224dd4223f80e03d2b7ea58230d553b6931300b249fac603ba9f6a6250cefa4facd6957fa1d3e4716e6abc9fe73df1b843d3b0f4732857db24c78bb9bd46cb75851ee5f179fbb010fc8ac7f7eb507d6e567caaf55384046722a49332274df870d54a30e506f3615232803f914df8201457bed017c9588e29d8408b422b934ce774edfc67eef99b3ba845bd62c3ce774488d646bc9bf113de262601920e9ef95b2a69ab896e0f2a85d4360cb1f6f0f89f4f54529ba7baffa8ea605eeaf3fbe1baa1c4aed2b63377a4668118583b3d50c49f1e8b2a98a50cd791f3e7615bcf1ab3cc4e125c757c85b411b5ff5e8cf04703dfd15a982d3c9be3b6ee282c01c903cd50e05f3ea44106c426e24a47705662e4c6882613f915ac7de490a8b428332e9ebd02ea3be771f0ed687e2898bce69b0837fcefaeb2c194b7e7bfae7e0fe516048fcb4131bd349633ff2e185c75a2c95efb5a29568fd6fcad9a9d32810a95067eabc2ae5570a673567c11d77c1db4c3bd8e483f3d173d6f098b307e8867766e600449787285ea7fd8f624eed930d631f384d687edd00eca4df980f71d0e3d898a46cddc3bab86cfe4d855172e82789250f7f6a37f552dcadb1beb1291f6de8acd8ffc85e5f1dd8258364c7770a8c857010dde78076d2474c5a09fb3ff2e543dc81d41da8b413fb53902ed8d16b4dbcd72209689c245d84003651d6a2ffe47bd940453c9cf3615301a10200c78e495340fa9204e471dea86cd05927c5c4373440080877bd82cc2b5ce86662a804152ead50649ae8ea9ba909c6a1f3f47a906028ced26dbb2bb8a20820ec11084a1931b2eb3e4fa8ed672e56f5f9fb77868e18c7ede42e25a242a3a000111a2bbbc843888810395f6a80c4497e0a1d932269bee166da9f5c5a77400705b339cf9c023d45665159969ae7227e1905b6e41044400346f48e491e3dde2f08505d18dd9a932230092156b7200a14845f5ea4e4768550ff2a804835437cfc59ed79bf189924b4390697c96222668e2696440b4fbbc8e2ea9cffdf097f5c73b394227b1b9f453ef48b68abe99bc6497fe7f7a07691b64f0fb6eef2da0fa48d21aacf1ff4bdbc893ad95b35950de5ab36d97a98ec9eb6c4ef3686d363ccca80966fea136497b7a71e542bbfdfa23401d5c37d5bb58fca23920b9ea498a0fe4cda31e3af03df2ffb5e7eeceb04388d0564b94eeb64c0ee6aa20664244de5441fdc841aec94fc2b6ae2b62b32732f436313f878696ec0f724d363958c9578633b779abc76df808cb65ea931bc6ca4ffc86b121de90a2afde1a9b8a643208945ffd1da171697a2b9ce505cf1d3980901de8ed420efd95b2be70a2f50e7952cc702214a5c35c9c4431e80e913865868c5b38873a3eabb193c0583685699a5775133b7de342254a030a66c0c90afe1f05a295216ea294226132b0abd8917acb83789474a0060bb4c5de98d58b19a08ba9c3bcfbb4b0570db562b506e177fe2e82982ec5ff2b4c8d319075b8c8be2cfcd32fe89bd18975734363ff467d15782d4a6f62e70a661a34b768e5f19f13e6e08d87df7dd73ff8fdce9caa10b51f30e61812fe677649332958741c2dea860e03acaf621246c2be52f3922d28ec924b45a2bf64e52e968ab0473754d55fdb2856f3619df445a7141525f40a304846451c93c2062a2bb3c586dc4c70466d9911b468c9618bec9bea3341bb0dda5560c70c2ea5d1b4522aabd61a861218d67e875682d86904a7c1c3e7dfd023b4dc7bf99da2d460d8872779c5611f058f89cb225e0600c2617fe42e185603ac55363d199b2e618d9eaa6b9ee4ab1dfded8e0b70181936a1d9fdf8663627ed57032b125a0e90085c3b688736247fddf057ed099691d303b151f1f555c50059ed61010bf78dec48b6d27027a14808a830f60fdef417f94f8e9bf00541cf2eb447046bf640b5b925c8c685f5faa34d532a1eee7048e352fd42c6de5118554b24a79b8363ee44a8790c543ceb21cd302edf0a75361d324cf3d874c5e032722b1306df1c59896b9ea649b17b60d17ac5a522275533bfdd4dc79182afb6dfced26be0e41b2f6ca7fe0fa12ec608e7bbb0e948a1d5bbbd0b7c300deac5d93c364b11aeca00cc900d5a96355284e8cf87b629cc1cc9668970a88a7b3454b97c9ea0417c4df39fe00b5ae300016600a6c9c54999e7ba026c160c42a210e2ee00244c8bfea2f1ce6986e496f5842a1657ab7b530e7a625a9c8af827fef9b949c7940eb90c6e13f55bd90044329460e00e37c12fcb6a7b942ea841709eb6c9a5f46d8c6840fd30067e9da0e8845916746a5a6a30a78e82e0631ecef662affcc7cf656a5a1efeca3166d26436934a94a8d312bc24f54acf5723fd4ce1f5a4d8f4f915567dea370957648099fd321e1d3adafb8299a386c3eacefd2de267752f46f5ddd8a75c14befa10ac5a3ebc1922887d7ec1aafcad1e2be1ca4bc50b84ad876326c6541980a23d3d7c3df893e289a152e8e1eb2c47c70d492b3dbf49553dea317c4e81fbbe99840f24ab19d04ed1b1b6cecd6adfa3b18aadf76011f6405bfe9c68ca1056d71f03e1c059ec83c85364ef778d38beec5447518514de44ac2a6312cb17cbc81e16f04b0d27f8ba1bd8cc87a6e8711fb0ed8e8403b0a1f3db66a3bcf25e740870c03c6381e143b27090f28439634fdbc77c3dab58b5a36ad1c5ebdd01df768a41e9b612ee848dd2cdc415265af1636c83dd5c1ba47db759fdfde1e63f9e13557ededf3ab591c377f23e8c2abab417d1fa9b945166e9960def2d7004de75d07875a101b42083c3004abcd7c0eb5551635843dacdbbdde5e5bed0183847ff08d1e4f248bc16814403a1c9d3ecb2941b26cb56baa6ab612a22d367294cad592fa3f8c9254b44c7e1ce6965f8be2ef853383e8a713fa92151be25f77c2a65c51325f7c87f76389568ca59e6dd1ea44a277f04a06d693e6c2c8f1dd11962c39c75158879b9c3b849c5cf21f08cad766b2632e1396dc0190956d9460597760509f6a7137b6940cf9b967a03b1eed9bfc6e3266bb343c7e3bc6d5c30e30dfda3022d92474a29d40ee48b396961e0dc47c4a0105b36ff227f2f007e371352245799126bfd3da9e0c3400ab2222b07cbfcdde1c13edf07069acda49c13abfc3b56704d1f1fe3bd4e3bf43520fd6b388cc69c8e9ff5d81b399062fd8e56880a01dd46e3de183914201f1453a899ee17cc5477fd7683fc6fcd5bbbf847f1c017344135183276db4baad684c11dcdd3c853e9920f9bc5c3c7ec75c849302d838c96d8ed77fb14f5df4636ffa294cf5c14b50a7d1d820a122dc12e5cb311b74a67271eb371b3f541a4f8acf0235b5d74bf22a4b3f7d5f7dbd55e2c8b19e8cf45c8afd79791f8d18d809cef3bdd519745d364a0736c8cef3a8e64c42246a9b8d0639ced2c3dc9aeaf99b39414e986564cf5fe2e8993a9813ce3c09ff22248f06ab06fa4248ee4e94454a8b2476427aab1013e74bf1a09021fdb7b94e2e7c992900e8dce5eb0d8d9c88e7ea997fbffcee9e32775a14a19adf75918283bd5219b446f3c923f9133d810aa471ffcd42d7dbb0f78bcbe54b65897dc70997e586f85e4cbec534d8708b42cba15170c9020780cb9c00e0319af314f6b63190c4bee76883202087937bc7d784d2fbe9abc1b5e09210e9d874e8c4478bdd5636eb4fa07810bd9ac27b378095b5317e1158adaa61a9da077f406bb54dbbd0a442f853efcc16dd5667b370f3e25713e67e2a05379ef2a1d864be74dfb6f40fffbdf1cab024f8961d7f860ad2139a7feff5cbbae337ed0236397310be7c54ec221d07b8edc195000e62db917c63cf1692d51cdc4c726e9f4e5070f12a92a2fad422a8b2d1e4804269475558f37492fb42b5f97f50eadefec993c90bc714a258893e4286631b421cfea4ca773cebb7b6689db362ade3aa81d636537242cc5f5736344857e75d74e46a7ae7b77cef885ac78bdd73f7a8362931f2a5d12fad707ec5fe0700472620500f22b66c9e427258e5d1c7cddb074027dc70ece17f908ab67b064c619dba8f87bd3e3a42cc87ac4fe068e67a16f98cf3d47dab9da0135a9a3b655ac34b087751c1c372af1621f5642e9153365ceb0de82d880c0566fcb6d396b88f225b85c4dcf842fbcbf21774e47469da8190d234586c1d730f9e96871d5c9c671d42262f6bb161fae7d09e0a7e4873a0b701f88dbdf3c5c676ca899ede8f540b7b589fda79b23b7876c7bd7167aee9e8059e02e6626d24ae3dfa71d30f95a1c0161df07358b518a6f37cf2de2ce25c3885cdda7e2630d12cc266874d6a1f11db87cca50b12a4aecee991e3156b6902bc9aabfa5a5d281ce5f6eafc9cb1168f4de78bb25a5c3f708e6cad08f4fb9288dfb4d36d8b8041c792e94e30350e44874bfc71181e3f4e78b277260ef46bffaff5216c78a2c90a9e51229f024535ccdb284c8304191d75f7597156fd01dbc18eebce35080255de931a68d9d08df5b4fa7735677c07838bca7790bf2b23f57f567b73410264ccfe539f44271f9a1e662227be357d48820ac840c005fbf96f7c690e781aa7d8c8ce6641a6e88cbe86a00a05cb5d0e0ef80615542a00373cc697f9b04017d50a343a97dee859142f875a1207cd28659bf5470a11b46f472a12e2e053c081b2781d386cdb1118917ee18caa830d2a5c08c94626063a0eeb53f43f8f178e013f567d0e8dc454de5054f29faadd0480fc65e0140e73c7cd0514d1916c1bd30788e145e99aa1cc7a1491789527fe7c8a5a31f708632567710d3e881372be0c2fffd95e10f7d8cafb7d68a8eee58b5d6920416f28eb584db6759bff553f0cf867550b4e2dd855208d8b33576907849167d92163024968f24216656c736a388f5f8fdc882f764d91f9214797b64f6dd5ec8d29bf59a2160afa76fc1a22c22efa13dba77f699b2e82ae45f51fca4bce21602d6f64d6841e2e6ed4178cd2e88f430e279347597ef5c56b136600c3f82835232ed1aa818bb6b8c8ece110857171b08ac62f26b9778984b4b48a4e70cbae2800bdbd8cf4dd95d41f6b7d3b280134976c448f579f82f86cfd8fff66f4a7f4bc0fb4e033b732201d69c1e6fac2e70f6fe840a8c5651ebdfce89f4427190fbf6a9e445dd61dfa295a88db72c5d5b19a5e2e117ccc0366a6d0e0043f71e38465fdee28f56a08ca1863a811021f8c430ec5ded7d96f4e162ed110c31d90a47a4fb658cb6da2d97167b3a6258e1facc2b1704d94111a1a761e1f2d73cc1ff3d22ca330fc5a295e5c37b24a199472b77c6d315fc40f85eebf5fb2a18c515d5c58884bcc896edf808a02c4bbcb09ece3ee9626b1e25312eab811e590d77d4635bb4d8ce88d8d936fac978dfd71d234a6b4335a14315f9a8ca92f23eb9cd151b63b77885dda128eaaaf16c5dada7b329310bc9de31e635920d4b1203646112eb0d7df8fc1df6a8acb114cf8d3693cb927269d90c1566ebd4c0afadfd7e0da35b858ddcb1e3139ca9c1f71295f47182bc26a2188bf1338d152b07f19661ec00e96690a3351ffdd5b28548d7a68ef3cf76a24ee0f025d48d14cf773b038684e5887b3b360483b0e8b7c148c936b691d65f7c2269c1d6cb861264744add88f70bfb6b97afa32476e886baf9fe99fa9af914b6c52d654e4cc00ddc948a588e9e031d1b17f08a79a82a5730bd1b3c482cb90e8820b79473cda1db65d61657033d4cc29ceea46ceac2f6931afd0425d295c854b87f2c9607e77665fb0f6decef85c71779d8cf46e557adfcb96172d8e189c6097989a910b8238857f002c8177b91ff44796c038b361a41f14f298dc65dc174a58aaa5ab7378a62a2a4afb78b3e8d3606223878c745c1fe6773900739c450afc80e698147b5074a162133e666a5413060f772f6de9e82db472c4f80e0f22b12dd8e61d456141604d37c73d288d3871b6e1fe168bf6dd1d8e3a9c8947a6b0b23c3c7a40cae474bdae5dec51e4517646a00517a004f0075ae3229ba821adf6689a9dde71962464d17398dd9387f5f732b61f12565321a271cd5bef85b2fe2dc7553a89d4861ab60e7e0d276ae05097300088a61601a301a26b49e22c62b726f96ff2a4178c13285b2f6c5248992cadecd6fefc5b8fe33a5c8edcb84413dae26ae85a563be87bf3ef9749f84bbaae4de9c9224285e007ab1f2cc47681abd720c45810f2bfc7167bdbaa3844bd1e99bae53b6739fd5f49cebf1a0d168a7f9ba66a323af77a2f63690c33e4aea42363b3736f576ccc811651768a1fdf9f1e5496b8adfc6dbebf8b4302f5fd27cc3fcf9aced8c08892703da26536f393f8394d6b02b29438571e91a2a8052f68ebe21bd2d82cd8d7c4952ccf31da18380843006e39f982eb080d218a88ed04b5743238ba4a791068fed97628bee4eab4c959c7598f16479037e52dfb73be3b3ee39b16efc26242f0e491d21747d46035fe49c9279b4d5b852fb4e9fa2ae55877bd448fc998f89edc9ca13bdc6152c3ba29371c9ed4b7622cd9834f6178bbf2106aabc14666aee924a96972108cceb444516faa94bad99e6a7549000e1e77c0d65b12184ac648f4ecdc60aa7dbba76786844c71837aeae93a9d2ab1d5e9bd11432ac4283c522ea1239b74be6acfc17777402b5a2bf89659319fdeba4a4793268e6a661b5c82b893d98e698f679809d6477c25dba1716dbe7337a58ce9bbe8fbfde1330db28f8a6ea696949f808a0a0f2875d1f81a6bb030d439bef4a85aae93667d295e7db111467dc3d91e9239093797c790b5cb6d563332ab5e548c01c6046158a14a8ce4307bb20b1a8a8457e9a097de7e522de9d233eeea7490458266182a879206f6d5068b3e4af474765283662ef986dd0984bc198cee153c0c53d0e9bd68c24aca9802f7f20a3db2a1f8a4200374c410ebe407e8b33d679768db1d4c933ff33c0de71ec05d5b321975cf2a787522c61b1c4ba5859ab8da95e100a4240accf51bbddaecf03ba7a6a5866439c83911057ef41d013895d7922a3207c2640628fb2fc915838bb711b81c4d662d5f0999e43c553e7929020feb792bc0397edb789cb3e02882e2dd08793d060483ee514a2ff4fed0470c2c60c3fd55e169542601522109fc400d7b20a2fcba96f1681e207c32aaeeb15745d1988abe31f13d42967cce5c6cf994a4c9f0b16f45253bc28e034ec229b31bcdb237f3ecb1aef3954fea3327698508c6970cdb87a68ec46e979eb14130d80210c64de8262328f96c9b43b77768ed8ed9f6768b916fb51326b097d08fe7ecc1a565090a4c4b71339034ee2a1d274aedbcda283d3cc628be2af90903b11365d52e9675739510063d77f4da73c5b2e6cdbd171b4c2d2e6885d1d7bf11807e19f72c12e58fbcbe423de5e58f1ab88289d5b13ae820c8292660e3005441bd3a8e17624020dcb0024d633065e29898bf98a850fda057f63da73ec3eb8d455ac249ff339507d692a14ab577b2561ab72efed5aef272353dee77f0777888c9b19f03f0f20d9cdfc90842411bf1dc3abc5cdcedbb659793f10f894cb1c587bfaef3cf35a5e0c3893777b4cd2d6233fcb4142a2a01b45fc2e667da86bc3baab356334b1eb7bf93750bbaae0c49743fd2e217afc01cf6eda3153738ed9737d01628a3509b6b569dfef4fa250b57c40180be1d526df09e6d013031ee022b18027084f502be8fd22fdf989f434f0eae2272a31cbbc43269120c850c99863a2fb42d75548db452bbe34e4cabc351e9d3628beb481a5408953a0333d9dd122cc7c9045f86e4a848045046e013070ff1776d4e6f9ea25b0436c4e1b9411430ec64f00ad1aa42863e53b6026199750d3b62aefd4cd6710d23652d715365f8bf5614c9d296bfb06570fb1bed72baea297cec04bfa1e11d99273b11dc047aed74b78cf80be6f86826b214b820b3979743976a371d6e9d22f511f447c4881d40ddc2639f2f239fc341e46626c54d01b7db72e79f6f67908cfdfffd6066ab296971205e427455a60aa4fef24bc5db88b763b8a65c3eed3399f73597d4900efb36a84d861a45cd3d3095bf15710e939ccbacc8ed83496ac7793d2bd0d3c6343434b5b64d276c176dffefaf02463236c2163703c0b966dfde39b4300c525318cd9664c35b2db476a8c6498e5811cfe0cee665adb2b7d1b51bb69cc083ad766aef006ba9785cbdbaf98588944f0039d3982dbbb07d7a9be4bfade06e33890adb353760237d6b3eae0fd22702b12a35c293df2ce531e262411f389c7a472c47f5663485dab9c66cd87b7cef5873d94e1fa6d69eb0d814b8c47883d6a6cbb46f18babc99232c4748bb82b01bb06446d086ceead461d435892069aed41fbcb09626917ce897fdfe3db7df3f664a1a1464dd8382ac0495f19f8175f6801ba3b540e9005502f8fa1a6ced5763a9a7699fd4988ba54b73e26d2a72dbfd3d1fde8e81cdac98150a3467b91c8b6b8898a24df2724393e2b6f07e3f6d958ba52590dbbf87da0c3e60d77ab102287aa851de91622e97c5c13824d17ba22c83e0b1ffa7a3867f5c79d59fa1021b037159f0061852085332b06ee78fc9556d5c643af503b2f0b6b608c065b6149a42744783ffc0884f3dde7a3b8e4c879cfc9b5303bbf477820f86d29ffb5683ed8dbe711f30203c6e53a7d19fcfecfedeaa2ea82b49fc649ff21dc64f3f5242cf3fa92dba29c51ab58fbd9e146cd9578ea6ca0fdd8059244c7ca3ee4f61bf616c315f8067ff71bf4d8a283002800b16719a6820e0588d69cb35a113ca41ecdd03296f047e4de985dfc52048ba412d08590dc99e9e0bd03b3dbe5f622f0bda07badfc068866eabc749934d5089e71ff8766f8582bad131c1d050315cbd4e934c06018fa7cc30b82bfd603af862e1599f87b3b3b93886551044e905f3c34f4c557b3186498d8a265d3c5521a4ab5964a2a70a7ed8fc1fc3542f077f30130808dee8f59eaa02f08365b27eaeb94c2613e5bd8ad00aee5ce3242ebdfa500b9679343e8e7e65f936a81bcd32470ea215c8675763a2893dc5147789682b1b312220190a333947c7dc385d409239e4310d1919935e18cfd679124d208af0a36156e88863afa9d516f3860675975fa8748630fa4fda1f5e19825c384240aef77a2403de6df14a3257623846c329377c1dc75518839553a15a9160ecb1e24f2c999065eb9253a74fe00654df47ee4e60985f11150f806ccd1eaaed9275e26f7379750d7708a44341afd1f6cd67bbbcd227213c25089d9dc30f3581b3a6863adf06497d35d57471694889e043dcdd4e0050d0da359c79ee4b568e067eb5f27a22540630143352ed449a0df1f73f0ef5afb23868bdac3167ecd9dc2a0c50757bd3e750f3a7e0d1c2848f923a359c5b4a5f4dd069e878f30c0ae6a2e1ee0258a86a556528dff1b3ab6fcc0976213b6a1c92af83f165338e57e9ad7465ef29fad72c558ab7ed8ec877747823c012f5c43d203d6e640b4373770b21ee4005652436f23c96e343bf6c6d7e6140e7be96f2fb6d0a8b6eb3e31fb1d0533b528bc867dcd141f26dc064983fd5ee60c7b10acef25849e12cfa4fde3841d783120be0aa4dc43e6e01b75e62432f3117af10641ffb5d5e30b1747214c8fbb85f7295465417e8804efd63d4220066340a107d809f64142d3bd788096012e66edbd6f5470d9585ee9115a2e58caf36cd0ba25ac3af313770e1c7d8e8385099bed85dd2f7679639abd8b7fae37ef105534b40080c44b357f13deef0c783966a0b8cc99f0a74de44c5585a78658d197afa7ccc8aecddccbe83a1bc4c63944f1579824b329127bfb33dbdf8e400d1bfcdb3865627824d82c6b98de5cbcf77f467fa1e0d587131f9ee4c92ce8db72bfa3cbcdcbff956fc406c4ac21f2047289202c39821db869e0b153463d4a0eedddc9691744a93a813969b78a03f1bf444bbbf581136c7b8d617b8a0d627b0d451194e4ae1003ea9b8a0a7267606d4128ae59b5a4a86b43802e5d8a05c314aacc85bc5e3d4739430e7051623e665b82fdfab3741d42cfb226d0e66d6f10c5e65f19ad4c9c4508cc5d6a8e77195cb4d4b9db5e21900f3e857d63a153933b289ef2788bd026c808117b13edceb5eb60817b39a5c7e2d7ca76d19190e3cdc859ef01fefdac7660969512be9723dcf4a042c27c836149410c213bb3fa27348682ed02ecbbd84348edacd1f67b837e6a19ed33f129f010ae02f7fa6a2cf6035b4f6741da1663b5e765f6006f00062ec20d1b4f31102fe4b757e8f54ed8dd8a28e1436af17488b65a14812463bc9ef89d32b74dbe824c40df1de73e928401175326c6e281f3d23d5fd77440d8554f1f5802220483841c97eba03951e854ce0caea1c23e063f87beae9e315e50692cd575f4b1a8746b76f6cf6d1dbb2a54888ba526228638c9fe9746d1aecb57565f76dbd1bd640600f7ea4cdf3f165864fd76286434df8447dcf9ebdbd14ef70b901d5d22caf06235f2c11534bb77e67138293faa108dd6a03448a4aa06689dec43084ecc500e1d2ca2734ec4aa704dbace8599d9fd75146c81b5ba8247c2fd6be8f62fa17361fbc7407ad81f13ce52cdc0a91c06b192260dd63637f41126cae4b21b1eecd59fe4ca34d6002b0aa5a6512b79da93453bebc8ac24c0aba047b537ac6e6052a10c9962fea193d2d93aaf432ca8314d197597c03c24ac856d6e037114314c3d2e10d16d6ee7a0f24d589e7a45241b25f0569608ca9af41ad2044d17fd9c94e95568e12ac25a830d53fcff74cb05d0db4c8832bb3a23c092b8a83a482420cad94c21b4491d69c274636f8d9a7be25a9d4ef09fa86017497a2b95b73b47263019cd4b4fcb55d9298e421b9d7eb3d1c089b0fd7a37d85f6ac6165312b415f42c91bb0bad21703119aed551cb486f9b040cca8be3386c98dec7f3ecef51c17a81e5c5ea6936475ddd5922e24053643c2060dcdeff6ed1e212e2e75fc7a1dcf920190257f122b64bb6339e508513d8c345c8000d52c1226a2545dca2f856f627ffbb6251637b2ca8ae9ec89ecb2c6dfb0295b7b969aa265c40a0d2cc3f0659d6f8ae9bc8a7a1ec46f24c86924bc0a2b25e2ac1688f48d2aa5c4b02e4c72fddc220e89fd81c6f03e007fdd96cfff6d180ed6ca4c6e0d5e7c5bc4392c99d7af77a66de7e7eeaaed9842393f80e5d527442abc7c4aea50fac9b2f70134a702fb6edffcf25b9960dfac79668232e1b75a0d86d49cffcfe19c63a7167d90c230fb4714b7ee3f90a440b402de49f12f90a39fb5112de7afeb245b94ee119171fc07a5f1c7d04728c1ae15ee5346c25abba31076173d0299f5bd8db92eb2140962dc14f58ff35807f45050f8694a9992fe045093ed588991865c31d616a1a2e8d036e340b53f2c213fd1902ebf2732978b0697b4534208aaeba8c18c33b7c348ce3e34a0828f9e2b1843d4943e2117cc338235550435957950919db943bbd43558d841c752b2d49b5fa29b82f25e901a2e6c56305149d6344b2bb00c8cfc5f3fa2c42b266c3742ff9c843afd3420f8bf754e314e5b5c7749b8e216859a0f1683c37e77242407c0b74d9414153ed9c81a3d91e7c84e46c34213ab8c7d92735b3ae8dc46b90bf9fd2e4d5b00aeb78a5867fd6e14fbfa6a4a107f64f87ef6fa8451d3e61db767e753d952ead33430f90bdeaf7bf236a6acfb15c32bcebae7c097ad04752ae67327f8de71a99a7d3a208f966843ca880a985f2e19368e625255e4f7e1a323b0eff9c88d413f5dc07e3fd6fddc6b9d5274b568b198bce0bb813d0782442d898398e9cef5dfd97702c085e796bb5943977608d7313020d122d125a4224aa35a1e06ac9867741c3ce39890c3f2ccf3adaea0fe40acf3aa1fa27742bd377ec0cf10f39ffc66e0ef1d4b982cb312b0b0dea046fc1833ec9b3f972e74a3493c50545d24e4e35a4a5050f317f60c46ab99b8638e18afbf9673a8220f82f1b1e02cdab1203d39430a72b40b329b1ca5a1f90d4e753a1ebb74e026464b9b59537b61bf88a2c094ea15520cc633ac22521128ee0856ee30ee247113cbadd48692696cc03257c47f40ddd7c22ce475ecfe1e66161b65d5b756bba6ee0e7317699aec1a324ebfe20f8c34adeed3180bd4e27486ae3f888845fb723d1062bf2965071a0f4a46b2ba2e495257d74fe4db803f6a2576e9edc106d69d7be6262a3b5a8d7cc04f76530f02593de05c3eda0c03c2a95179b4ae36a54a26ab09b7b710700d6ac9922672321ae74ee7e0f3dc1678cb26625003d2cdcc95eada6376cce6179116ea27e15ab648a059332fe15fef04d1264d9d7157797f0b6c8c58288c30aea7bc034edb0ae79680350b9f6d9a87363abb67dd23af805d4c40d2d65e84a22e1aec8faf1d9343fdffb5d2bc937b1294b1999b559dfaf9dbcadc2be09e6680cedb03f49311263175e77bbc448f0027fe3ef2d9baceb0d518fff1867a6797dbd01ff1d84fd79007d28863c4a4580f056e39eb0d9ef4743a3950de2abd4608569c3a1b88a86522908ee576441e0887084741b66f597d73d704ef800a30860b4112cccbef18083498a775a72d4b4b3cd03bbc3a9bd8dcafd4e4707823efd30ba0f645894c7e2fba4df388964e7a1a48acea93613e785b51ce9584aa9c6805550104f3fe2e74d1e037cfdd50383824a4f4a5ec43cbc9945c43e1d9ad13c952b58d4fdc540218127820abfee29c4797bca5ce127b14855f8dea7bcbda2299037789e226a98a4fe363fb5c52c14859131096df18e56fa27ff4cf3f3d67f843867c856db6898cfc175db8f7b3b16df07c3521160d06fcafa1ec7274f0e9f6ead9f234d6e40080d5200d261e4a2b48cf76bd3e9933a5ffa3ec7d2919b1b74b06644bbc7e4eceacb75355080e09e146f2d2b6e1aab0a5bd0865404de6d637df37faa962ad316f9408580f0bbd300bca7fcb3380cf8f87fc01b79bf1c3b3fece2a84e8fe8689c3980c05b300e9ea807676496eaded621c9aa90cabb7ac4ce9b68f9904e23ed47abb053d6921a57c2f1b51d327748901b8973d4cdf6f38ac9dd8438bba4aa0f75d713f63e0d51574e9d5418db5b9d25e7397a648c203c7ffd51890cc315af6a0093533926a33f00170153705f7447da420fa671de869db53f8d1422dab0331157a88d9b27e9a9cdf79c18555269b6b328a444e04a09b0dbd933d802afe8d0d8e84f60470d3ef2c1c889a5c217e7c868181dda39ab086a91f7cd7351e4b8e0fec737232a13837dfbe9d5c93c22f8395f3a4a5eb81cf8f4ff4597014a362e46dec6fe2ed969bb21e70ba2fe8ab7fb558aeef69a31ce7e7bc8b6ccafcd3f104ac8d8d7ab6053c04f423077da9f66b181c7ddc0799a4e17299804e12c1fe24fe270c0419512279b1b72436b142f09da823d279e54e378a88aed6d890d4d5309e400281dc00ce55ee7e8ce6df4472be298494d044886330ee5c1156a1618b6ce777962a27935efa5477e378c9d03dbf436cb2a8c277519a6c8a76b15f6c9560fc6df02e1550d054b0298ea642098ef0e6ad301c5d08e754b2d0a5d9899998509f9a0bc7b7cec90a7f87226665d84b9735013213856480d562b31b129bd017ccccf2c389976678553b8808acb9e037309a377d1692f12fbdf8f69ae949e1ac9902a06490b4dde8fe2e228a99a620fe639906074e5d18ebd52b56961009e51102f323eedae6abb31a3b4d332dccbecda70f60e8a6e86f05f99ac6e6b91aebf4c0e0bacd3d89d3d2563b6631d5c1521033509908816612636093837cc331f18a1eebd0d2e472168c4d46aab620af2bf973332874bf777837bf186c7ec4007a5031c598e58f2c36f35c27be2e08b89f31df9e6f2964d684cef55d758e81991ba72fe67f7a1748d777aa8e405280cba338c89587cf56b50bb40ed068c3199b4892f848288d4252a643e71d171d59d5232936ac87ca4a3f9538bf564fb904312b610077049dfbaa4ce1685642b57a44b120371f4152f5dd150954c04998bd9efa8d779797b0e5321ef72549ad8251c7c50307fce4a9e0692735af0d25d5092c16d181807fb4c8e6e290ac1d1fc90c4c8b1897ff41d247a5605cd2a3f06b7f9d305f4a14ee14c20c77562083980bded3c1686aa88a4142649df03b5ef648260bb3f76dbeaec13567b1d0e9de7622084c08939c2dc176b22289e4018005a5d12624eb6d59c75b22e0a76ec6fc30835cc3dc79c1736725ba44a297c6ac085143e773c2efc441ccc3ff10f37e53681b4f08632c08de32b96e204059b9a599a4391887a29ff8c25dacb8bc4a1d85d5b9389e53a397a7a6ce9f7858cedd8bba4a3ed92082e1970a2fee66b2ef43a1360516d9d44f7c41901454cb1ae09ee6b55431d1fbc6b8949988240f9b5508e86ccc7bbfb0c9835d451c6992593cad3c34ea9eeebea8dc85ca69acdc3c1e86f154e985de9cd35ca6298a97808cacac806fdf33de0190d4bf71dc54708324582240c3f38dacf06fb6ce6e58cc96ee02355455cfab31ec512909fe60cb2c0bc320d93f641eec8aab27f38683a13107a870bf2d8b47b4a8bf4c42ddc1564f1e5869ca2d5fe221a5c47f6991b94c415104cf60d1ee5c8d3e85a696e62b57fd0463fa546c694b9d511539531af419a900a3dd8cfa5c77a89af46cee0e2ced1fce68d3c063a135f55d163880543d0b0298b229243ed0480fd318e421e091616cae92f288f2a4fdacf6dec2afa09b94f9e3390d98b840cd37edfebec507d4142e5313139f875dee2aa303b5d647238ea5a827468a49793dd04cf1456f5a272de05d8a1cc0c2b634a9d11c4a91e8d3c2eb9199263366700538aaf9919fccf024ab24ff06469ee66f85dd0b1609fd04f036a3646e56b9e7ced9937a0b5170c5aa608dad4e1754853e227ea1f5d963236704f3a995bc115188976a2977a6794b53451eee6ebb0308da76018198d2e20744c25ef812344544636de441c50a1d36c74a941ba804ec266496be63152a0c25449881478a2234419d1ca3efa8b6ff35e64b137530816d43ad0fb7cd839132b9f75a8086686bbe42775996871f506afcd49dbcfa0f06b2ae513299c2631dd006d686cef1954c21ae730b11432193127807acac907b4cb17812f0453d1b8726b74bde58bbd5d0dafadd51cd8dea0fbc9324275b8885b0a309d67c19490087fa1156686a718bbbc42f61d0d26dc677c26cb58785553125088e51138b09f09a87c1862f9943b50b92e9dabfae97933632329dc1ff0298134b1c8f72b3565f52bd804b96840801e15254973665700bec83bed0400857f335a74d2c1a7d5f52624b8260ed1ed332380589b1a8c9dab143cbdbe2bceb2c53fb6a5194c130e49b22c90d895808b29d76dd2cf9b11e27ca8b1a84b1d6c71039b8a5a17132e3b13519188f05802670f86e986c06a7f60b90fd67588a62717a3806057f5e8575f82866a55e494ed4cee628050ef70c9e6cfb2d251f0a40610df919f46da284bbf23d525520ade80f9dd7f12d7bab0f064b0ff3a3c79c426b23f6ba229c76a1cb8ff86e46d85775631721138ac2bbf0c79b645c00e1cf640bfe5a13fda27f6b01c590f9772073c44d0120c34b0263d2aa16e10c55a638ac4bdd74eb833736f7f7fdeb823349f3ed1d7462233913d0ac496be6f1cda6c9098e0c7e06a74fe795ba4d3af0e4476e4a8ca77191986b2686c9002598b85a03b94abdde4e474dc193364f3c121d31093c554d2bc8bda7359d6713973495dd1e599c099b7faa6b5b11ef531c17c43a7bb0f05ba6d84d670804bf2f8eb5c81e0d3543633059f15dd9ee6dbc0741ce78c1da93fd8ec881229a1f0a346ec71e0cf8574307248a5cffae566d4bae50ec96711416f1d52d12986851155b29585f8a9fb16bba26193cec64e3d0534a995ea04c467027386f0fad9c14c5acc8aa4c20bc38c111a0d79afe72a4a77ea78a04a135049a061010246481a5c3d23f2874c4f2ea2e7c9b4123d1bb3a5b32efe77838551f7d79855417744cf931e13868f3d0a32e832f45863929391dec842b18dbf8ff93866dcdb4b70b6d0aeae559fe9b4c305fdb090b5d425820da663bf2d35e3ba6f1a1f0ae9d74b349ede7f3260ea38749e0524f5ec3aa9b40a9cf7db339b876d5912a6c5e4fb3e09e3a0d4d7dc3894bb1617491c466f1c648e4fcff33a554e5a5dc31e883528ab050b8990580fb19e22b284bc532cf5a1bd606f80a45b99f240df3835e0a7cda8ffd4c59f19bd9b23b20db54ac047fc6f1e656feed890e999d2cce6cc848d04784e2ca6d5cb503e728bb3e8c262ea0eb7b9f09fe205194cfad7dd5ec6a5fbd5ee0efe7a5878b9eae44eae3f3554c7160cab7b14aeacf687fa19e4cfbea800f59ffbc89db6e04b7ea77898b998e06f26668cebfcec10121b932112dfc5cda25210ba1f62a9543ac07e9195eed7b44c8f6c746cf606c7f6ec5a351c43858b0e4561d1ee0997d4e6decea323b2b38ef6c4c1bd36a869be0d1694d0579670c5731a3ae7822e64a56c1c6e96e1a0aa256f847dad0b064a0be2da1c90a7e9386a2ab91d5dfcec5b80024a1fb3b841448c1a273ea2d35724d4679e5dc20adbc08d107abf3cc070e7d8920367c12acdda6e4a499ad413e75ffdfd725be8335565e05470f6f4aba49bc56af5cae3f18447633e5afe5cd1641ee164d147ba97e8cb078195c35914d8e157c32cc7e0ff0ea747e0bfce8d0c419c1732ec408e8c26c3bc3281934813574ab776def517a7f5acddea9fd119f693fe5d407758a768e8f3d88c8806cf8fb20a22fc731353849340c81199631f28257c9acf926153505cf33113c58302a97809392f9d00cea8cf02badc018ec47cff325f0e916513e8703a12c090bbf6a081628a0f3164cc147e9ec4d084b421335ef72e4ee8bcdf7e81d6df30e430cf3734243313b2c6ca3ad365e31432665e8d9c7470d9c315639cde14f5b29e1e2a738f6b4ca9e7dfd462c622e4105d7509185cb01c8506fac4e9a91fd9a232f9e0d602724e87500a7ead2dd1c78782ec2081b86bb934404e16f18673d97f02e871a804ef7619a1b480a95e958a6b9571698617bc4610d32623a2438cd5e09f4aebb6b858f132de1a7ad0c2f66a17cf51e740cdfd21adc4267e32b0008fe22dd6ae710098e91d47cd31c1308af3d9e551004b12c6ab9dd37827568c9f21c24ee360b2bc2c8f9c6b745d64b6da219bfde9dee2e9eaf1f107f656222f0a7facd62bd1e9a2089724b12ce5f48aeca421ab610eeb27c40cc7f955733bac42860eca681238e9b5784a483ca05ac2651405bc00058071287afe7f0bdbcc3c047c87d9793c4f34d00bdcd142b8c57e47c4444367e4e08ee35aef0102f2d25c09b0138c6947ba83328faa6a42ab9459b480b8fd692c5120e81e90dcc00c594024543929876368ca169bf597a376b37f729411f8bc75fad9f0f30e84eb1451522ceba1768d7bf9423311b9c8fb7d73eadf8f9820c2d38030d44c990884914a60bb4939037d95383a75c68a0caec7c9d03d3462fd2dd3a7d6a77caac9b49c2b3a09f9ceacb8bbf377f53f1e461775a80d08cbffc3e05558cfbe7769f4e3b6fab053899329cfa7292eb3866b622bca61bed83cbeb49231c8664f5f78c8da66a66c3da9020d623b7749792efc2ed7677094bc6b6a4ef93f8570da13481c274080d082f0f97b5a02388d9e9856f984df59c647edb918b625860fa7362f9babfcfa29778eebfae76d02ba1b0ed69749ea253331bdabf8ad6c9828033dc28662584d09695dcb1363dd40092a0a7e76c955fe68d74b40f6fcddca2fd7588dc81897eec1413202f6f0ed648c9421e0f65c66272a4d98cc870f865d53a751f54a643a9bca6bd4846d1b92d3ed3ada5b30ab8b6137410eacaced46333d6b06e328262ceebf15f89970ce5feb4051b016a68ada588534d0d84220b07b258d92c7cfeb9599941e491c3956cce3d30ffe0f94a59b05f457c10f6c04855116d7b894a76a63e80ac33d1ebddcb010374cc674f219fcd1f45936795416e7c7af31f5a23416efe5b4ce13b167002a4c45982342166d29bc32630c37be4aa997b7c9ceb2d5a77d2a45034335ae6c059cc892ccf164d35da7816e7699b7c46e9ec14dd0346e442ef197f23a7298ec0aa0268a42d7625ba0e85e64e14a0e2ec3467c81c0e797364902f8ec48765698d0722df31716f82ab16e679b22fdf8188080620596d01bbb7bb4654090e9c8878d4a69bc201a2a773970f25a051edfff46ef9f43f656e0ab48ee63e81417d6325ea00fa55c733d8520687b9915b06e689a9f55e68d6190091b771e375a31d531924e1d85e96640e2c4724246aaf17cb3dbe08a088aff6916135c45d1977dcdcaeb9bbbe9eb28f6145f364c98bf01f5b71b374eed4231d09b6efe6d6c3d16cbe61173b1610109867d63ce7bd80abf32e3ebb77202ff01e4741715e5427179a52bf3e0c19068019714d4b5f23e794fbb9d95e1f5d6be79c35b302de02f094877ab6440a9e9a699802af64d859213c31013fa4294d50e047173bb9be704a2f8cb0189b230c70942cd6192e551151127510a1e908953b7f111b08875d9e3f17c0e53d21f5d9bb783521a8bc21349e0b8611009bb87a93c16135d68c23b9c612ce8530e95ba7f3a7f3584cf01680c46b2f17ddbf89645d5ca5ce481e30aa9e52aaa819d33c54024d42235f8c0cdfbd46bba12863de025863f0e515f8ed19362c155a1cfdb9b3e72d1c5eb7fc91ba6159fe6a05cb5cc297f871c978b524c59cdee4806d7a0b9434dc551f75fed849cefe723d1057cfdc57f8943177fb64f404b2bce072dff18d1eaccb4e77d906c8d111d115ee062a21babce219862c318917d33722f262aa2fd3053dcd2aef1358adf3ad39e44bbf77dba250f5eab6e88e8b6040e5e622a04cb6e019d40813b60251965d95474176f90cf3a36227c1409d69aa2a2469e517409928adcefcd1bea01876509558c487da325481f0d59092d44896f01e8fe80fd7000661a1e0bfa3c20fccbc36925ea060857ef25646bcf86a10b74de075473914236fbdf4012cab7a56bd013706bf0f52d99e13f060e330c7779b7f598ee5bc80c20042bf1a7c335609447b581183f79d41362e4c5a0a97836275a74d661e7873e0082fbef199513ca9d4f85f3b4fdc37b73fd189cd0fb33be008e0f8eae39185b708bab05ccabf15c0e81767bdb88aaa3f6c67824245787c4d42f8853963c38e16a4676b8705d42bd1ca15075539056d26f69632f77caacbcbfa9494e9e1b3c1824bdb300f922a1010386f4f6f83a1cac3be8bccc2623f1fed6c73ec831d447c8637102ac14a0851fa844a58f99a0e9e983404abe7211e6a5d0f96776f91475a4a97ed7144cb0af5a6279bbedb96f96a7c98839b2973712f9a4e54abfa49b0d8e1fecf8913305e6eb7e8705212e5c41aa14229efd847b874076b0eab8fc9d016e597d6b3e53a2a799e2efa28fbef44512c38590fe943782937e6995f765f0fd01c3ae911bc13022030074bdb29d938e058614e4724c7f4fd2575a021a052e044f33f8b5eb1382fb5f88d8b6ef871bfb2d2a7fa9ad2165b909260da50ce013944819ba9e0da23dd5e527d84eef7fb30440387c06e807722d8b5bf37a36e46f1521131c2e5741fb604cfa31ec81a338bf5987c34645674243cc455f1f8ffbc41492f6350da31c6775708877b25bab0f29809fe7f27ec48c19e32faadb95cfe8728250d670483a330d2141ce03a2169ec6d5819c015db3cbff9b5d328a88c5d11b00eb474634e18260a2a35e40a793f6c631d7bd5e9635c093624df7dce3805d3ce5be8d3bdc68df9aa7e539690f5d84dc6a14651fb86d87a0bb94f0f291426fc1f269b0880d7578dbf4934f18bcf9f87234a73bd2665054d33020e1045fdee7db0c272736cc691314e4b352629923cced6801447c2a602dcf8aeda5a4d2b79ae30a5b869f4eb318fa1f5192bf5c58a9e4137c0c40fcb3ebefc1e6ba4305c3447ff7521d069bc5279b09d492d04144be9ca715141967a72c7fa1df1eb725295bd4f4f603162e31a42f86acc617136148370c0c086972322182c77b8b56f7509cb474be722d81ed04319cfa4451da42861fc1c6c60aed34679f0c07654b77861316c81e92cd261b94be2e9bbf359100d2981574e007b2e992af4993b451401515d24c1b71d7bfee3acd040cac4886ce76ccc99affbff34a03383c30f0175923ad860e4c00299a24162a739512e2386e1371f4068697cb5a298f4f56187c75424f396cd6f79992d3ca6d3ec89c149046039b936dd09361e6728e345d790a75c5a62f5cbee2f6bd62066d6605a06302c0b45c444d630072c8660ef253e8a1b3cacbb3bd7f7ef8d461581fab4722803acf0f69e517d98709af8cf7483c64d8fb4430bfae74ae13d369a466ec18c1fe7935b3df851d9226f323d8f557219b91f2f05b3fe2121f6951b9a57041a5e9000c4f292bc2fe2a06b0b48a370d203659670231b4ffe90a8767a4f7725e49ab504629f616d9d25d0320a0a346315a81bd11b0c225d5560d29b090a484ed9cafead0e66c0172345ee71470d62f2ca93d04cf01859b5dd7541fd8c268f1977a2ba8329e728e637ea5683f5eb7b1b08b6ab9ebf57e6c2fe1c67fa74a34c1e92eddf42a7dadf165dd8b49b7d4d8df90e1bcd3fc3b57fd61581d12224eacde4c90f3c1b6e3a0e6e46f067ba77fd56e19efebb7f1a51977b1dc4283c92d9b40056894d3aa3d918576d7a418933a2fc4ce5f00f3a0e2703d194fdb13b2e3f6f0d54982bb4fa35c2c5c5500fa2469715fe18e86849e081e8d0afa098c8a8e7c52adc767d5e0cf14a2db1662a32e432e8e12e21ec95fac03e317ac76648de21adf454ed287d8ffeeb92a0af59fcf00ff84eb4df68a1624c831294d65c08efdb76bcfb9b0ca07ec2e7b625476ca8255202990bf0eaf6235b261a6c0e557738ef7ef327262fe6cd07c1882cb67addca46577f45440d60518732fdeebf738bcd749cf8c71c4c2e1fb66e58da5364b7af671c5d2a5c5136ed21189e6dce19ccba47b4860333a701a70fb36054da33e64376dcb561334b526d7f15f8726d9e69af58478d04c587c067e62f81fc49b69649f475de42dfa6bea82789b5a7cd00b489a7860e0097ca21f6479014e01206730d9db6e3749707c7b54af5822cae819184abc133c89344ebc6ae0c456692c8b6620ec991ed6a6db65ef56e5d1d2e255c221a8738bcf3e561a19ba5ce7d1378691d6220f67d446ccf1b3966b7ae690539c5f5a9a2f072b0cde0b79bfa412918cbba6d56a5c3626e389cdbc61109db81245698449adbafb4013ee307df45a9c8cfd09bad073e7f7f6c07531301612e984052a9e056792853e578ecdc2fe64dd7a5a91802bc6a5f63e2dc1e15ece583598e45381dc9d554281c99423b1854c4991fd13772e064616ae650213771e013b8e61e1dab0b4473a3585bd9b1ffedbff9136b8f501a4d78b90c03b122621dfeed1c6652f5fdb456f28664d8de011450c25d4a33608ca6e8ba34f9554b8b6b12c9302c85a130c7b4bcdaf187c1395ba1566827b54aa308645680f89aebb1bd65fc68522dd1c01da964897ebd8ae61e0ff6886e4b7a59505e0e98cbcc5d2031c37d7fa9a9891b19fe372eb17d3187492c2caf6fdcda9b5a9bf04376a6817e28b2ce753a3b181594d373d38b613754b52401ac80eecbe3f882666c69102ff5607a33dfd72be2b050bd85ffe5b234118aae4ca3a00b77765ce4e7bb3c8ebe6973a269c162e021dea546c7963dbe06e2f9fed0649c0212deb94725e08a254849e684752d6a35ee535ac20276850e2601f56d8209224df1721f24c8f9d5bf34623c0281a798c043d86bedc4b41607df32df20a33a25697b2e220f7066bac0626ebe9e563a9f49458ae0f70661f98a38bbca36e72449021b837f4b9f99f3ce8c9105dbd1c030a77223f28875110ede96482462fa5d643d39bdaac9ff961a01d41729d563bd20c995ef5be299832d5669f94ed00cea8276983b266892fecac0d90f79be91b462e1689863559cd1919ded540cf5031fb20d97d79eb6f848708236bcd82c110091f7a55f80cebca575382f976d5877663b53bdd00ceff0248b181c1a8a13c3fea46c8beac9fb8ebd3c41aefe0a3b2a9f945a1336a651d464b447a3749260d40ab49179cca89b868e0e3ae67177cabde88cccc5a27a2f686310a3f0a8a9604f06bf0b77e06e438250c50af9a4b53f1520c6402034ea0459e0e3430b224c301fcf33ccff33ccf6c11b6b56e5b533a52644a32b9f7fadb26764a32c994921cde43e19625380837402f4b482304941b730e220f140fde00b002082caad4a96c93ea3091d15718a3dfa8f04afbd4cf157a96efcbb417b367ac159ed40b8b1eb2e65a4d26384a00005380b0a2f1f6fad120e321dc559cc4a7945468108d1f035145428d5023a2e48ec60524159bce3f4a897bcb69d22f80a0a28dee55ead4f3579a2560f00c0074003945424c73865bf3b9a8974c2638d0003105aa6534beffdd7ae75040079052e8c9eb6c84fcb20c5ec9ffd8c13740010829f0528dbef9544eb497a30420a3389f360b5b1db219fc92c9048d04021051a0a6abf37228934f4fc964f263071a3c3e00128a7b4c73acde96b354964c261a984c7cc7e7007167000414ccd8e697d3d992c9248dc904070e1b38148d33b8047f831d93c9ef28a304b11939cef001002d807c620b17748632bf9cbbbed106104f243b23e4aa8d3cf1151b37d400d209cbb463cd77e66cdb25931f384e706332b901802e8070e278932257c4a7e8d76e229fabcc3b3e1f979a26fa3fd54176a64f69ad4c5c62c1b53cdc9848d5b4d4089dc9fb724a2ec1ad85d1e1fb3c447b2c6166967d97b4ff4ea54aa44a6f0a15ee26be33252e3fa5358e7fdeead1082093d04725991ed292d6af92b85b7329d575b144a944020412958c53a29edf74dccb0b208f30d75ab8d8a84db19303fec10510475c261f5a6a99a4e852232a71a22feb48cf7037238ab935b5fa06d549264b26931f7f832d802c02a161e6357cfebd4f5144e9c963ebc4498ba34ec4efe7f175736cea140482085d936bb8fc3fb273de5106fbe80197c0c68e13d8f01d658cc0860db392c68fc046e9f128b841069043f8695174a61c774a8786c04fb77ee54ceba2e992c9248dcf418e1c678014022596738c07fd1b1c1f68810d1b818d32821b6770095e479fc166f4e09105104224e2920af27e4f3775060122882d45f94f496729bd6ac964a2830768e0013774d001149c6106020944622b47e9ea5514cf954c26931e68f8d8d181138000e28dcdccad702ae8585a01e40fc6ebfc9e453c482fb11faaa42faf69577aae0502481fcc7d8dbdd1f3be295b00c2075e833a75c24a9b992e06207bb8c2a38c8c25d36c5e2593890f40f4509a8ab374bde641f32593c9f7386332c1d1012180e4e1fd16cd8ba296325b008006103c20424bf3ed98a5650f7207367468581b1f006600b18373be3964d8d4cc942e994c5600520746654bdb5319fe323406103a9834bde6fc6ba16dea0dcc003287f26efcf8f519cfe279b4838709768001440eca87511ff23fa8a549079038a494c6bafc782a0f560f7e4c26007003081cf27c7ffd31ce9f87de507eb20f0f9a19ee7237a4b2de06fd24d486b2fb74b6c82036dc69daa2a9be0f59e135fc9f96a382d041ba6ed490b8d0a6365e909ff36930797c5175498cbe8ba1c1116266ff83d29fee19961dd561edafaf9e62862ac8d015995539255519b64fdbac6b75ba6267c046890f06810d298090013d97f2c27ad2ea2f3ec8183e1119465c6b33d43782002206e4c433988cddd1fb5b810d326e4c2637748084a114e5754cf9a52c65974c262060380965ea2e2b1a6e3d8fb423043ffe03931e205ff0d4a88a56862bfb0c3472e480070f1d0ae2057349efa0b46b789728053648706332693f20205cb854c5361d36fcbbb734204306374000b205168068e1516a55e1b1b1cd3e3e60009205198060a141ae006205acd72bf4a608a40a965ac5d21ae1993f20542873b04edf9d7a94d09902dac9f2692aa5362919208048e1aa5c3b1666a5318b5128c562ce3f6b4e9d050a6853ad31f345056ff7097aa9d217a4490b2a7c9c803669a37b8386d3296c026239a46cbc519bb9a501c28464b21c74791495d6ec25701bf7d732eceeaa47095c0eb320a4fe6edc4c124090608a97d2a43dce27cf0e408e806d59577d927f997b23a47bea848ce9f6ef3e51002942f264125f4fa13a850984085c4afd33a74de84c018118c3385975d49fd3ee4107002788218c3467515f5ffb94e3954c2627102318cf5d36551ad34e29c500862988a6a4f3a5466f8f18bfb0dfd4a9e43157caf917c3178d958f570915c3c9de46a1c0469dc04699c04695c04691200200908218bd487a6ef07c499a577d8e20062f4af9fd5d4285cd98f3bb503b3badd8c5a0627649104317b6c6379973d26227cf054af32e64e9305b410e00c00862e0a20a2a06f3dca0728f521a62dca20eaa39b9daa7c6b8e98118b6289b4eabba99540b7438ad3b1a4bb42845e5750755e7769a45c172dfe9bcd8a54db278d52d9767664cf9c7c2b1b8993465f18f1d16c8a7784ca1ac93c65f61f46cffeda75ef2be2b8c5ff367b1b99ad36f45ef419cded02ff39c67c5b14e2e46b7627bf057519875b76041e965ed5581ee5cca9655e6f053a15abc16a164babb1e156e1e536a2ade32b39fc23f21754b5d8e294a37456331737bfe0ef264bc14c5853539c22edb5a9c14e8cfa7bb676f722d1f45b92a658cf371a4e64814675e376bad12d51885c213f931bf6297cf45a0408ac56f1425bae4449f38a498b96d0cf2c4b5eb3a36e22273d99d40bfacd87abbdce79913a7b4639f73fc4edaf326328d1f35f9953c2db3264a952bd8c5e698d6e44c5432e88cb1f5cff818138a559ecd214f8db2f025b6f7a0e331a55cf7d712599cbbab8f16ac425b8973f0b9f84f3b39f752e2d5b4987276ea9cf54ee270ffd7e839944c7325d19aa9d592753187cc4602f5a01add2d8d3acb42a25025743f45cfe3957d44db9d54c7a49e1baf7544dbfda3fa3b6a275f1b511851622c82f1f9f0b09f7a23524598c2565af86e877c3511c96bcf75573125ed29229a37dd71dd4d8bd4f410e59bd418dc624c56a92114f9e8494498d0e9740ae16f10194625a19bff21c449c712aa396e0e919e4194733f9c8d9ffcf68e20d88a9b632ed6e8cf9d4094a66ff5d2bb7e7807108c504169a894a357eefc01b5d49afb9cb7a375fc50fa5062f0a153615310ca3f4511ee21cdb09251f4c9b74aeac1b658d149e4e99c3c0fe96c2e1964edee83f0d08572db60a66fe7be83db39648c0565a6ad1dd60f352a66f3fa57eb508e49ea0593a6b5493a5ca266d7c4ea7c3f8752c58529f313722b2307ad64a4060f525ffb38a85f9ea2589fd07938bc3bb661b12ef6f537282673ec145d6b67bac194f73b082b8bf70ab6a1649e1a66a37f69131b92395de68ddd4e29be062c37ffe7c28e98f7d4a0680aa64bd44b07d380484b8b96b994d02534a0ced57c3d78ac8b9fc10fa5f4732e744ea21932256cefb38c6b4a5919be7ce23c7bae91e593c1d5936f1375ae278f818d5632b67fdd4b5bc4906aaa66eebeb3d386a1edf9f71c7637c71c3020764d562aebaa8e55c96492634719938908c4f8c2bb595c46c66fae3887c0460b6c8c600567a0e1cf811c67a0e1ef934913c4f0c2fd7a22841a4bf3fb75214709c4e0c20ac4d8423906557731ada8c8980ec4d0422763e912965563be9492c9a4076264410c2ca0644c9f347d888b2cc5b882f13b2247b377b7e9b4400c2ba43f7774664cb194c7552898cbdfabe9b4d95a2a34ee1fc2f37f85a5398513882105364be76290417d864b0c28bc6be6a9b76d334853c9641284207c0f347cf0d0817ef0032c88f184a2a6eca994a2096d1aada379070b26932588e10445455e478b968f314df8844ab19452ccb93f87838c1b00e882184c70ab348bcc9c638ccd4b2693d7e165e0781d1e821d27984c7ce480078f9206f8e00648a0d8a80ebc8e33d020230237ce106309a70bae1fd495a753ab1292499ba7d45732dcf232c448c2df6649776ad3119ddb808d17888184af4de7ba7ed6c6fe08beb85c8bbe099d6263844453ab2e499116d3224611f63cf73a1ab48a552c0611127165ba726d4ce5611a9021033202308c3b7c52e2b677bb43a92300c2e082a7c8cbed9c7a0fc6235e226d6c83ff7b377c0400186daadce7dfedc5ceff4211a537e9b427362bef8b2a69af3c32dfda7f502f7add6bf320cb3ae99a17bd9eb2fca0f1622bde859fb3e5c7da24535c541726ad4c19ff4f2eba14637d90a1947bf8e0e2dff78c9a553b74776ea1084fdad98397883f6db16eb0319d99daddcf5a1864f090139f9aa34b5aa47327cd62e159144d6a29cb1f547fea64b175fc780559c974d86251a785eba766df931758147abbc4d3b8a991960902f08ab4569ae95db8e07b72459bf9d385bb78de792beab6585bb2e465ce678577e24584c69c73f85751a874bb14d3b795a30abe4eba29ff2a25359e0a37cea57055e92f99a8c8cb5230eb0ca5d943a738c7538d9129adddc7147b9da5cd9cb5d4525d0a5bdb738e889e5169264563add5735a326d6914e86779b6d2a584aa551426f38d7a32eb7838148bed6ae7509f72c6a060dcc73f5392991acb4ff8292f58daf92474123d61ef6d7b727bed387722db1c6b69e9f4ca9ce072df9858dd5cc7dc2652aa7474f75577f63581ed9ed648fd5cbe66e2324f6b29a86f0ed330c15cc86efa58eafb5f22a92745fc96b0e4b725d27223db74528d365722773319973e63332d94d043c6e9ffe8a0b23f09742e9941d6c4eb8c85810048c2d13dfbced6e134859128e5e552c9afa8585bc964b2a38c1cff832b100048a81f93e6b022a6c5830178446aba4effb46638a5e4084b95c7f4bd9e3765de087c5d6e3699e7a0839a11a5dce964920d3e3ae345ac29776ccfa5b44eaa8af05b45659936a5fb3f89387f3c534e082d612722f091a331c813ba3c3787d85290917d9d6ac46a0ce1ed473bedffbf2174853857dcb83f1313025de1a9ed3d779b3c88469b79b7894d392b278845e6f68810fa6bd381d0aee45db52c8b5002224fb21bc2c4e7f63f683957292ccf4b34f3439f1b77bc4d4c99de07f3b74ea7b751755be183b656eaf9f54f995d214001d803274cb67f4ab193b2aec40619377cc7ffe841073a007a28c7395d26429f6697f2f049515d3166ce9acce3c1d817ad54dd9745c5ef80705399153389d5dd0e59a9461342763476ea906c9e3ced13e24b87e8a09956ac12db398bce8153199412ffa1d308e5c086c9de4a7944c76ee3f078c62cbba0498a090eabbe781ef194528fdea07508539e97a386d70d6fb5b8ea66e950691b8c9f15eb5c536ad30c1b4aab956e9fb239056f0d7b474bb9c6ef3efb86838c00a8a1124a335a8fef7bfd69e062b646bf5911f1d1248ecc15d3bbb75c892ccb6b83303ba131a30625581395468b14a563c339a83109f4b6652d05753dd297c4e5c1948a8a5a31873e1286c80d22e64efd2e874415324f4763b9e6fd11b827df7fb3dc6944e40846442ea810b2d243dc0857e44da613fbd93d8c50d47dd2f77ab9373c34ce5804221ac284dc18f4674c0d456429bc77bcb21391724d2e1f5795a13f88a892f20a3a5399071b0f5185acfd5e6a9053311cd430c43f16effc2a2d43db42fc5a26966c3d84c5871009d73ce96ada493d3888826e51f98486ec2a09e2a869a56b4509ad200b8431780c6fca3d3ef8803007b35cb97fad42d67f603b2c674df5dad255c964e2877e4bc6b6d7a0b6d6ebd0418d3e1c62b53fccf2d279928c1b8f860ede410d3efc1dff3ee755cd49ab92c904471a3d7ef878b42303377a7c082613004ca1c61e789341a920737cf1d895e058c16492c3461a3b9e0337d2e841c68e2f21238d1dcf81c984ad50430fe6c78efb713a2593c90f6ae4a1061e5cd39a32161b32ef5c3299a4efa1011b19b86143a8710783beeabda4b26bd22a994c706ce0c68d1fd4b083df9da9c258124debc2a0461daa509ffec9fa3e5fb40447096c6cc00619375650830e676d9bcc54faa7f3cf01e9f1d3f7540e263a480e8618ab54415c6b3e95779cc00619377a50230e35e060821a6fa8d45a87da984ff6e9a0861bf0b8b95d61ff3624f3a77b6b95fcde908e1a6c3885a7fc6d99f52ae521b8010028d458c317b2ccc2c35e92290740116aa8c13475196e5ddfb4657cd44843e1c19387ca8b562234a494c96a2df1c94246cf80ab67fd9c43c80e5af3821a6630e9cde1692b3c6bd6121d3a38478e921f67bca31a65489f101963cc39e7f87f630435c890e865c928236a2ac663b8342dbb7473a5129f180ead1313eebbb3a9fcb18311b7400535c2a0a8cf71d3f7e03199e068818d11dc984c5050030c758ca7f2674b9ce7d10335be80c886c768d2f2e7b75ed8ceb73763b61be15f8d2e242e6b37a2eacdd3e6c2c1b62af372cad520ddc2493ea7201f4ae4f16347192cb8c1e3c78e10dcb0400d2de49b638ab99f1e333b5b230bc79c316e2ebd18514d95d4c042e3e9f347c6fa33c7cb15f4a0fe737d36fb6596063200410d2be023bc4c787e8f76a1010e094440061fa8510516d4a0428d29c8a086146a44a106146a3cc102359c60c58add5451edb24d3ecef081811a4da8c1841a4ba8a184f2289377d93209757b8d24b09ee6b387dd58239390f08e6f6ff4ec13a34c1cd438c29a2ccfa6b76a6d8c1a01a54bc7e9fbd16442a608668b5b635fb1f172578308e686be8f1ed466c77603916114ad84e950a7e37b7a8788303abb38ba211aa7d2498748302aad14da35676fa70e3052263ee57c0b9bde73bff8377c8c1934730ab79621e20bbf743c07953b89f4225533cff019b459b07951ea67bf5a315319643410d9c517de727b1c1574ca952ed0d6723298caf6fea65c947a37bcff8d09693f2eb81671b795ef5b643b9e47e43393d86dd1a5b439cf44bfee5a8b37fd64893d8f169555925921d2643d26328b72fbbddce90aa63e25220b4ba851f51075b2538c482c446021f28abf35586eb874fd690582882b9af9a026ad4b98109b482bf2204f8f690f6d39342593092b4cf12a232264e59441256d1059859f551ae6548576ca4b26131c2dc821a28aa4e5adef57c7c65281788eae26e782072bd941041599e676cc99da257b2d994c7cf09083c829d478b1b238dac2c88c04320e22a660339f5a7e52dac4eb15102905ff95cf2d64fc0b0ba640841466a59249ae5c781d2510888c02cd51a39e504f42c62a0a63aa0dea1b3ca8d0692858d36ca364b86eb41c268880e23a69de754165c4fd89e5829d924946df67cb12443c61b2b51c2b15b4d5e63be1c8d89bf2d0e963989120c209f355eaf3d1a5fea317d9c49a6a4d48eb98db31543299941c2310d144e254a55097f2aba22a994c26130f8864c22ab1f6f41d32c9cf0f4430f17b366fb5bb74997b914ba05bff2fc60efdd10b442c2152897d4eb66a121fed79ddc005229438296fcf5b236a4106954c26229338b768dacd9774d0750b44247149f35e0f994fe8b5e4f01d2c1289efc32a481f8940e294cfb865a65378ca1079c45e4af546cb39cad1835f070c441c918c79de4697c9f3f48a3442590d99d2e99c951e3342fbf97c2a05d3cbd880c8224cafe11d43f6efba3a0511451894b6e98d501d63f0a0209288e496a9b86d9f72b7f70111445c1ff6b23a6282c821ec183468d974714396440c91341d4feb50cf14f10665f8f0824821f49472f44f79a366372284283666fcd716d11bf320cc9a3ce91ce4426637bf202288b46344b99ccedf9c0fc417a466fed31e358e9c0b2280407dc7a48aca6739adc81f505157723f7818b11b1f44fc90a9a0fcf2e510bad603800d227d405f4ef5f57b6da7cd0fd8f0808d0ed8e0808d0dd8b081081f1ecb3aa3c662d04fa63d142e4fe33ae86ee6f5806650a77f55a4e818ccc39a45c7649fa6783a45470f16d810c1c3db2995ce8ff7f11ebd43996c2e53de67cbfd11b1032263953e7997399afa861444ea6027cd5342e64f074fc577ef94a47330d36a2ea564a8f00dca2115347cecdacc18213b43240ebe498f1d1a3d3cd948040e5e0e4fe2b3c68e9f739137d8219ec43bd885119e121c3f7e88b88100226de04e663d53a4bd897687081b3ab5aeb35d3add67700f174c266488aca16cb32ba347450dc638e65d57f5daa994864283c8195820620691329440840c2263d8f2f7a512d2a3777d44c480a71f5d3b5ae4c97c110943b9fcf793d0f090a201c35a295483f0a02296e204912f382e1e4befa53d697bc1b40ba2a626fae2979a20d205bdee3b6dd8ce29a971a1d8a247d389f5d1735182c816ca0a3266911f22630644b4b0851362bbf922e5532593898f1f2a10c9422947b3b5a58f9f9240040b65856ccd985533c70d81c815dca0a5ddd50744ace0e5a44773a8f0be3712a98225b22e5736730b3a05082254e83f9c67ddb09762b492c944870eced101912960dd5f39cc326d64b644440aa7a0bae7c972eea5f840c37394fc288307689891238d1e3f44a290bce81b25a745750c4b26134d8840e1147a19644c9ae9474c883c01137f56763953767e4b26137f1dcd9f107102fe621ecaeef2557c2593491312a73dfebb683e199b92c96410224c307a9e861babb0ea4ec964e20891256ccaf27da97ca336064b26931bec2823078e34d064b2081125b0597d9fb93a5cc52d61c18e134c266d4619371049025e392f85eff6d4719582081292b953589633b5d9d0a1833760e3062a03004f1039022a4f46e626b9643239828811da505315716f22fc2e994c8020520473ca97f73adc35e59313448870c878d1c2ae2f8cfec3f8544e55749937990be3531f3373f4515ddfb210120cf3c88a37f75d554f438051922d4a290bf5f7ff954c263f7a708f5fa4a6724a19447b16cf0921c417dfa6cb4ed2674f86b517faced58efc4b1042785187f6a9bc54a697da5de82217b8c8528aa57bf9e35b5c7d10728bfe92074db2a1f2de4c23c416cdb7c64ca372ec88580b54b3c7678c7e586e9f10428b6c73bcfb51493ceaa50821b3089145c5e2dc2b42e4b55568ec2593c986c0a2bca2425cf1a824a752c55ef64c2af19121ad40cd9dce7149ec997676a0a18210566079acf3343377b74641c82ab4ec3c1a72c2e75a2641882aca7a5a56365c90499f030421a9084145c8291ad552ea75327797ba6432d94088298a22b25be62d2a58a6819052e82f667933a5983a1c0821c595376c46a7fdfa797410328a3f7eb79f285dbd297546882850d5d2d2747acd42470809456b1d84254d7e7e1f0a018575c9527c8d234fcfe91388929b333a89f6a4b3104f24ebfaae4ae8d81c5e891965b08f904e544a5ef673d6e4ec82460827d40ff37d6d1a4fd3691327692f9b4fc698b436a5095d3b3e4b3cb3c5989309b398e5e77426c7731d3c3c1082893c850c56bd95bb395b2ee1c9be705fbbb6292d4008b1c426b5dd2c9587f01c2b914004661052895f73e730a2c448b1fb063bcae0410825d2db79439f860a5e59c824122772e36ae5d52c94049a9278ab4f112743543299e090800d4c346c281a36148d08882024129040258da1928aa1434ea66432f91d2a08798409421c512b086984755b32a38f78564c0a4218715e0c6117339796ee253b4e3099ece0b1883e3deb78278b0fbd8728c217a5ceb6df835e334b70f8f07146482278a41d21d8c0062610820808841c224719673420c410659c918105841482012184f091c6e7c0012183e041196764a0c7e7a0070f179cc0012182b8c10d988c098404c207207c3420e40f0908f1430e0584f4a100217c4040c81e728078e8680384e861002179f0f1651c20040f39ca380301217750bbf4b287ccfcf4dc0edb2725e32cbfe5f70ea94319d3a8a456dff5827a630621744829253a7fa97d48cd97241e3c7aa0a003217348bf5387ee3b8d3572c9c18ba93468bbb174158e43b9ce3cee863ba14bf340081c4aae3e2fd7ea496be90d075997f7e427d74a69371ce572fa88b8cebdb70d969c7153b93287ff0e1b9253a7458ef6974fafc153bafe5da96aff4535a0f3a2313bc6dcd4c13474c1d54eae423494b35487e59eda877686ccde3fc4d3c8ce75093143481942c82083903174881842c21002061a847c018d102f5ce9db634ea2554b7e2408e98256e726c3ed9a758ab860cdc9a4df933c7d4add82a6df363ec3b65ba685b7efe347645c8fc58464814ba795e39db6e8a40bc1423a5f7c86fcb78b975730731e9df479be53a2b2825666e93e4dee05a12a642a7c90f9fb976a562aa047a64e729f94856a86103285c4ae5568ee974bfa9742694149ada0564186521492b739e7fa1bbf0dd5082150b843b48c28e59f3b694c0879c24907f9eb7fe36bda7342e29fad46e7dea092de848206a563071dda3d258409969ade933978a84ae225842861d994d28387b87caffe202409a720faad63194cc81212be4d6d3a5c8472bff508ba65d1f462f351f563042c748eeb26273200908490226c492715f2d553871022182c7e86861f9d4aec6198b397faa06229d789c240f9b505757571d7d44980044353636a693a97f29281010418657aca8d991762c3fd05905f7c7283dcd8668d9fd717a7d638da2a56393fc905905e5c39b46c52f5b8729717df6aeacba6499f6a4cc964b202905ddc2bda4b75dc0cca4e01882e1063d2f7d3788551cd14407271a79697cdbea5d47aa400820b535ca50e212da6f516e658a534bd9eebbaa96432d1e13b7680d8a2364f73aa4197ca3904811c406a9138bdb7186dc336c62593490e3680d0a266514064d17bcd6b78521f446625938919e805bee357c00490583ca6ec2db66a5634d883478edf51868e1d65e018a30a5c1c75d9dd23c1185428d568d98688d735ad04634ce14be92d87dc0bd79ac16f8331a4b00769672d163fc6f42593c9648263053318230a081984c8a52bf1b2b91b1f18030a633c01d94a0b6777b152d09da06705a539ea95474f19a309c71c374f9b56161dcfc69f91061937fe063b5805899f0493c90dc66042df2696743535975ec658c279cdcdbfa3974a7b09e21d7cc6184a18230963204106631ca1c730c21845b0c018445801c9304884712c9df452c9cfbd7b6a8003fe88cf58411a3f823f9004e3cf59b56db4c9db1cd3f81194f86010d84802093014d1e1840925f53ef83e20f905236b2eea5ec85eabab0524701e264883c41724bd20e1051a24bb38a9aced286a4693ddba306f50512fe47fcef6e4224f2a6a8af929b85e1617ad5c74d16a2ff283e71666e6d7b8f89b72fda30c33cc20c18d1f6894200324b6409fd2b14d67a39a6a383c90811b3820a94525d57d94764af263e301092d2c9df96a19d673c555c24d320b54a610fe779764f89c1124b2d04feffec9113a739c6df4f812f4834b60e346061641120bf5e35d9638bf5031860416df46ddf020ef22548306c92bd224df6d2bf69cd25dc1e6fe6c6adb90b4c298433ed3c9db2445d6e377ecf841c28a527ed678f93e513b954c263978fcc8710392559c4aa9ea1ce35e1e0d5551ca59f58c5db2bc638924157bd2d26cb172faca328dcfc10e1254144be56d7968afda52c964c224a73069f7ea38528390a9db80c41465d399e9b527eca3a60624a540851b5d999385529d93908255d12a6263fee539925178953f598abb55429e24a248a4e77877d0fac92f925094f2f2498f1664ff4424a0d02b654b319f32a16c924fdc1fbb4e9b8c7373b76432f1442b56d5b16b5a3d6525930949274ca7f268f3d6cc5e9270c2b84d6f555ad4bc0b906c02d5fc4b77a531636bc96442a289139064c2d068a2699f4cc993954c263c7efc0e2c4082894cfc29153b56884f6fc964720955cf941ca5ed6a6d9358624df7df14f3aec1e692c9e4042495487595ae98103a3f09259ecd32eee1a6bbc2280424936093997c6cb30a5e35892432659d3993abcc88952412e53f79ab1f22741a12ad7dbb27652b17e42e994c481e81c894546638cdd42f974c2632207144312bb3a73fbb8e9f4a269346241797a36ad4aa9e841189fbcfa7a5296b4d26248b7084ccd226c4a2c92e79ec8044116b0ccac7aab47e8673f8e0922649c4fbde6349c9331d2f593299f828c306248828fb62a95d8b9f82e64a2693c423c7ebe0d123070e924314324ce7e83ce6abb30470d8a11101124c26432031c41b5f63f852c1bcd27b0249215016377e32f17440092484302525eb34a9d31ad7b40492417465a5f7da3f25397cb08f0c00e008248228ad57d3d666874012882ee389ce96fcc34313020920ee94175329f9ff50f0309f76b3e289520a02891f3219c542f38fe8701910d858c18d0edcf001491f48f8f006bddb9f6b44ada994b480640fa9a0c92e9becac1f2be761023378f4f0c0094070430593c90d1f90e861cba5a162ab54529a21c9437762be45cfc906170c2478408c8ef1b154b0dc5d91dce168316818a574d6f4272f90d8612b1d2d651c25b39fe1e8800d326efcd081060e48ea60eccbe94ba3b86c8549e8506719bd8d4b2ab58f48e6608a696e4ac98da7b84a2002378a440ec8cdb9d16b31dae7bf6332312471c8d45eae8fb9847e5c400287fcde84f6fec81853995e056fb0a409fdb30dbba9b51bceda1954f024f2b66e1b18316ef14173cc27231b4ad14ef1a2eaefef39cc205943716954d2d215396b9690a8c1af0a5a2a058fbb9e4b839e63ca2bbfb3395c5432993c621d6798f12b204183490519a5f45edc139613909cc11c3f994ee235253858406286ffc54c878c3d21554dfc3a1049198e172b3c7cc98c977b32141a5412af7e223be779fc2001c918b08f99d4e6e27bdc9cc78e109088e11c9b49e98a272c6ab4c40783a0c4079794c006192a20094323c3a636f59e3a32964c263d78df51c6a31dbc830de400f18f15f4e0400a48c0d0664b53d531cfccd5921f883140f285fe439aea0fefe30ed671460e10dc40ef3c36f0cec30493c98d27f1425293af25511b2f32a90b87f28e3bffd28aa1539223c78e94c30c1fcc831c3978fcb00009171ccf4a7759bc37a5bd05b45eac38a3d35ae84b8d7a8b4174a56db350865731b17f2546af58a82cebaf734e6a5ece15501567b73529adf0058fc14be759854d9d5cbc0c51217e2a24961b5af182ecf40d7abc19132099829ecfc52c877ad1ca934881240aa94b315fb2bc96e460c1771a5c82c9e447193bcad881c66462c69b410285abe2474dd408253f46f2044cc5b59c35d77c89de095dcaf73b2a0831f37213f2cf994f964ecad3b84c3077c762bf6c4f8474095efecf91d51c15bd128a4fca673dba89c993c09d9c7e141555731709124ef23584dce4b95d12488e90ba7ca9c6924d358b0d244638678f264527b7ed8b8bb005ad51992d3794e9ac818408976bcc1c459c4a339e6128a6c37c89ba386e2a348c08c3360f8ff91ad4150cc40955f263a9293b47c208306e3153d5bb3bb75729994c728cfcc2ce362a3aec7eb83c4b2693188cf8424b36574ab3ea6a5e30d20b534e6325c37cb5de72c1082f0c6ee565b5a36465057718d9c51e474efb37eb747cc4614417c6bfa5c6ca66c964d2033623470e1ee9c77fc00d23b930ca89b913ffe9aed57f0fb4610417e58fe377512bccc47a0b74ce992efdddf5b0d822f364723296069d2e538be46f9f1232cab4484779ed8a1b65fee72cca61de4fb36abd3f1c9185db2694e51efb8d3936120b63cc7732dcc6e4a1649230028bf329f94d5adddaaf8463e41506b9e419fa63f26e7b60c415c5e917ddf227573f34996060a4157db42053f0f6f1d45f4758e15ecaab319689030437be8c1e644c260060c2c82abc32b99fd329debaac8a928a3f7196ffdfeb2c994c5430928aadf394a7e84d42fb23a838947a6986f12862f653243b596c3e0b5a49e898a23695eed733c67edfa5d0df4685dcdff6141937d2f811e860c48304384648a1b6e5eb0c9e92fee6a3e835b534b8487105365a60a3c407836032228af4f9a70a999e83c7c3c70e1e1bf0c0086c80e086063850821b698c8422fd50e149fb0714662e35e3b9724a7a42bb914f9cd3b67f98d50b1e10463c81927572e2af43ad8d84914e60d96e64b60cfa474b9c28d6e36a88974736c1a8f3fc9b2de8f07eeac28826d42a21d48956d17fe648266c11cbc92ecc4aa78989ff4c27b1fa1462cf62c1ffe00e8c5c222d221acd5e2cc97f9640a75e1331cb1f5dde4a943bdb6fbe0c9af2895e18a10432cca60c95d74b2e93c6c824de1857649b7fe8ea392209a46a0795e72d5c35a6072391c03fccdea75c37e2cd1b3c1881045b979fe99d3bb888366e8c3ce25c7937ba555e7e4a3b82cd9829d6e6f35117d94823386562ae7ec6114618644dec2eaefa4e1e821bbc0926131f3718598451b3eb686d9c7aaf4b2613408c2882d194bd645dd2eeadea40ef39cef0218891445cdf15de9bd3268c20624dd22b670ce6a29d1ec2f568156bfe2b8c1802edbc5fa9e4c80c62d5a1430b23854094da7811d155dbb1114608c146bbec4f2d257b3f00a630328894881e35d557713f8784114194ccdddd52beb6684b890a343012883328d1a6b144bf3b74c20820fe11dff6a59794ca8ffcc1b4ee0f276bf733233fd82194c7cb119be1b47db8757f2e55df78de201f6a15a931cc69768aed410b319bdb389ae36206ef984c70f0487a308379b80e1554965d4b7cc062240fa67041671b714bb93c7840a69431b3bceeb628954c46eea067fe898ce2e322c40d4c61c40eb7cf59f42deddf395e87ac92c7a8fb252fb9964c263dd2e8f1c3072374684ec4fa83e68c9ea6643291c4c81cb82c37ad25373389931cda945b51f13c870900461889c3657d991f9fc42c653820b4842e71b527f3632593c9c81bd6b8d6d3da1a327e8e1246dc80fec5ded34a223f05b5015317fb216310233d4d851136d4b9aaf1d6b2eeeecf8491359455f5bcd7cd742d583299f890808d08d8c0218108d848a3078e16dcb881030d923d8ca8e1cae7235f34a979d96928834e6d391b53f23d303082864acfd7a47a550a152b994c7cfceb68268307dc6332b9c0c819d87c976a7e633c3ffd8819de74afa1524a4a687ca40ca9109963e560c274ca47c860fae668ee757ae39e23631811c3481846c0d0235f18f1c248170e424bb6077d16dd4f2569f480478f33021085112e682576e6d51d1b3653826332c9e1ce93098e1f65700f327e31b285b49cfd678ecbd1b62d994c70987187112d8c6461040b688c5ce1a4b7d28c85bf19cf5ac1ca31fddca81e934bab6049b1286e2aeed154a8803221c49e459d2d6d995146890f0aece0073f00c1c8143231efb933f4fec7b419397ea051823322852a661aa5e2ccdeae9128601fc53e946b8c6d110a86784e61a3b7d9c3f504343f0637df242c98e88494eacda95dd31869426a1654a5cf65f1428809e6943a7f0c5de9ddf5124ed25f741e0f2a574a2a6124095509cd15664468ba70072348e87f2cc7378f71b4ae621839c27a397fc5d1a64da66504acc4e7e8569327fa1f2982e9c38be5d49c9d0b8d1021d550f97dffc4da66189f874d9b6731a9a0ad30cc0f2b1ff4a8aecf6a30ee0e5f31c520b2741a18991c1d2d78d27e615a7afb9fbda0de2a79a8e18be67cc5a37f0c1f7b31d14063472f8cf2e9c3afa3872a9d92491adc830c1b363c0436fe3d70830d3578919689b3eed241e794964c26386ebc8ee631d4d8c5a22e5a69116b29378b460d5d744a4bcd8996ce994b0a357281c8a84199bef8f4d12f994c70d1a9dded58df68ab7a0bad2c484b1d45597a6c51a3166696adf466da82f6841ab430c71447e9bf91af904b261330d498851f457a6efeaf7f0e66e0c60e34ac50431655ce23cdac9362e166914199f08eb6d7c3025d99b488d395c406f92bce9a4f07ad18e37e0ab9029d53a8aa98c2f5ebd98ad73fb3372e759049861569ee58698b514f8bb244c7193556a1055d1e37c75cf3e755c1d5796fe546112dea5414277bb443a71e71362adc9493a5ec8fe5253f454907a9ee39dec9d1d914ac0665567a84883db914861419f25abead364a0a2b646a2feffc12ed8c42f535b3bed5746b4a51a4d931e3252f21dbcc503097deb27267ee4f1a50dc61844c9a2cc6341af389356532b1fe309672e889c27dcce1229bd22fec449a7b454cd39cd862797bc6ec06add984a7e13dfeaad304574ac8dd512a9940f5f9c7ac22d2dcae92c90413e70d31a1aa427a56d7a3c6256c7d8d5316475e88a56432c161460d4b9ca60e8f76b00ed6808d1b94e16300bc68753dd9eb85feb67117afa5942e3637623ba48b348cea385d0b6b79cd4517a4c7b831d596a7071709fd31a6163334ed798b8250217bec427334d78301d8a29cba2e5774bc16492d99ff5d399a32430b83c94e558ffa2b6e9985b71fe3c6e7dae6a01a802cf0a0c2e5585ace96552cb23af97bb7ba13b6616100b0c8342d9db4b06caaf70c06f08a764ba6b44a371355b9824f4bcb99298bd9c85506d08a45a9ab12317dfaf3c38ac4c459c694dd6c83aac7005651caa06abd4b54052363dcc5666b8490a56275712d31dfa032e573a457810e06800a65d32fefafa728fb65b95c67078b650f06600ad4a7a5e73856713e278d1f010e06508abac24f77bea7cb34499192b1d2b48b595d4ca9151d031885965a3be575c6a4b4a248f68d88173d6186c28a2d2528cea2728cdea139bb5d3e7110ed7945a79ccb79fd407c8619391880272e9d4d5f42c4e9534a9dd8f46b35a736f1c94f9cf8746ac709f9264e71c63c9f8a9fd335c199efc6efef15bb33c1bb48bb8dd953a619139aeda66e3995cade4bd459298dcc312e47d31229f9578da5612183a912e6a8d97d6bd4e7fd1225ce9349e5cb7695c49726f1457dcbcaac31c92d49a23ccb532a53b44e971489c553caa5f855e709129f0ed2d4f27c9f283da2ce2f96db5a6bcfe4882c6cea9e49194f428d504b97f2a0499bb7881166d7556e0dbffe418b40576edbb88a315790225cf71271b1fba6d289e837cdd2e991d12223a250a74226a56494490fd185cebcdc972733c710288d33215a7314310b815c72d16c1e21eabc39fec9cdaac54178794fb67d552e888258cdca638cc143a703a1c76ca24ef826551b208c77d7a43ef67fd03b06a1de7250495ade0f858d352a97d587d75b933c8fa78259cf873d698ae7532fe7ff1e10192e99acae18c4ae07fe3ba5b3cf4c79cfc39699f29527f1194678a85a7db7fd84524bdf61d7eb3cadea26dba16bb9fc6925cf2b5b8744755ccc3145f7553a689fe22521f45345e7e0763cd39dcfe496470ea82d0bf263124f1b138763ca682aad57ed0a07cc8258f85b8af0f00ddca58ddd1ef2213770aba3b4c45432d7da708a56bc0dcb756371366c97f5ea4234475f83f9c4984a224e966ad0733a0d963e67bb4fc3713284ee4c493d080d7586cc39e3b4f6f6339473f6d30fc23dc89019ec9c3cf7d7763fa8cb70f5e80ad579d9e36438c698afbd1cd3b131f0497e85cdfade292a064dc6ff8259eadbc3e0854b9daa74b89439604073103ab6855e8c7ec114f3fff3492fac355a5dbbe9026b9fd546e74249b97b4e4278120d6ee1a876e2ad31664f6bc14e42889b5958092f0b9becf65e9a8e9ab07010ee95ae41c9946257c8ba6389a57e3a252b949e36f9cfeccd5650153eebab244d4f8592a6f4a55b9fc2254bec6b5cfb432405c48cd2415e639cdb51487ea99c6356511966281ccf84c9ccf60965c51c537a693a4ddb09c714a7fbd4fb2913bb09069d29e3a69009a87996ca9669afb484b229192ef9c650f2290171e2a92a9e0c9ab1247c6e6a3bf574d86c41425283daa062e6c37f042d86d01657ad37af36c222d38753adafcc5311b0ccd197346f6dd20088605a5cb51ffd3072b9d296cbcce3f5c2e0c6fc47dafb7ee9c1d072e4947ec67abb81917b2e8ba33a67d3f62ff4bcc9e5ec63ca3afbc2302fe3a79d5b94db0b33e8d2a16764d014e505f26563ba9e7bfc8777c175e9dc27eeb2fcc3ba50dcd2c958ecde063917a9bc39081551a5a9312e9c4bebdf6472492b7c8b6444c57d34b7ad14db628fbf9a5df2cab2a916551699e1b3440bec9386ecb1d839fa2cb24cbacf54ec7f8e6491ca974ce7d04d9ba3589cd97ce3a8fcab1082451fbf643c9973eeaf5f510a993a6a595764256a6be63b8c655bb157be322f15d9522e2bce947917a6fb36c5ec2a4a96f7299b684d6a5955143cf526d98ca7beb2a9b054fb4ba86a51b186be454f0fd95f3a45bf7d59679f54fd37053efebb9664f62f7929bc8cb1721afd3e22440a43876be5e8286c9d8ba27257c65c8be2564d3acfa1b864dd5e67150028d08b95559fd9bd5805f089946c3717a51f3dbd2a004f384246dd4e762211710f9abad333cb092b73a5cd5756587613a9e95e5578aa978f26d28c9e529477f65066c20ce282bfa99838d73c8831afbc9ad14b7cbe1f3c26995aa2ec11fd95d274b7d24aaca147e894a5d34f89127bd0b01daa954f972661eaca660b113ada4b4251c14d9bcabf5b3a12e8dbd353e9fe965a489c4deeabbe4fc8bc9e47209492794ba8dc41aac711e8b2947e948ac9cb9c4674417969876fb6090f231a0b167ff36ad2a93a8b28a736f173f924e3491166b43cf7561e74f6139190cd8a232bff7a8f8846dee25be6f4f9fd1046d15e7974a7b3d80dd1a81c56e9ade6935e085faee46c724d737142a42cbf6f5a9059371a0497d7f26eb6a01f468270d692784bf6621b0ac4ed398f69d77cba8200517cb553ba496d5bfd876be4a8a6a05521c37e3857d2cd1a2e572adc874f868e05b19df5b27ca8c28a909693c814a37bd8b4a9cca0533ddc5622da2adbfa67320f57c66497df74ad8e8987422c67f1ce254606f30e8b5f079d435a1cd1a51dcce66e429e75c836a920659385cc1d1daccd7e16d43b4e757328da674cd52aa74c93c34167e8d806d38d57c6c1a064f0de13f2b2a6120ebab6acadc6dc9f93de60b8589add2be9a0f36e382b8758b4b112ebdbd0c9d9b051d7e2579c0dcbeba5bd135ac3251be349a7651821357cab298ad59d86c2ef5f9039a64fb568b02a6e7b4cb39aea7306d54ac8f5ca8d194cb1e389f30d3a8969cac0ac8d8a467fd121346438ed7e098fb3d6b13363408fc70d2a5f8c18cc31fb3574731c7d0ac36325277762348a1e0c889bd0e96fe35ee95fc873a578c2fcd63ee485e426d5f1830959f1ee42f9ceb2cf9e5abd9b0b57d9c9c889bd477b0ba7d393de5a4a65d65ad8e7b6675ebc8256b370d4f11c1debb2a2070bf599ad6abe79b79c2bdc96664e29255a2119b62ae9ef7c1a935885f53e77349983a8954885f2bee8becffb9c313885b2dca814ae548f67500a7b25d1f19bc3578b1805b46b4e83c6e91c11a1e08db2f11454c8584114c0131211d2fd736cf2f350004e50fc2d6c2e55eb19430134e1e01f738ed17a3f9a04c084b2cc44951add987d012c0195d16b3d7b595f1780120e42a84f9f3d4aa62e8024581544ecc91efdd0058004f367abfc9fb0d9b0008e906533b51ea1d53f1680114a6bbd593edba77c055084845608d9ff24c7dd1300118c1e357fc8cbe49bbd61a0d664bc6c96ad7b3d6194720cc22c6ecba6ce05e3ec39ceff860dffe701e37c5d6d5b96498ce67e71b8bc646ea93bf63b5f98328a4a5d2a658a97eb05aa33a816d3589e29c78b3c6c34152baed6566e177e6f8f54f7795deb7461b053ea64a47765ea72916cafec51bb33c91e17f5ff68abac96b3e56f9150419c88d2e176775b705932efd5b5b8bc63188b9edb644b0b3699f89c35a64c576771c5acd93e8ef2d75416b96cf9297111fb9d58a4457a460f2a276139b0d84fd3d4e906d33f5fa1e5a0543fbfe68ea7b9c23739f32754f011a5b5e2921a3fc35d27bdd358f1a92ea13b87d5968dade2bb1bed3519eea4c65471a564953a8d968ab6e22d85529e2f7f860ab46eac07bdcb1f9f9d22bd3152477e73079599a20faa495cc78c0da752685e3ae9bddaa4b24e8aa299bc2f6dd274e7a3e03c5355b65b5b131245579943a86bb118a25014ce5f63d0695058f12ee7cce1733cfc894aa751c1a205d96a3d51baad2832c4575ced0426cbc3ff7a348e0e274ceb9de3c7edac7d36616fd8f4e2a62dcdd4c4f1e4bfef4fa90f329930cba56afe249e39a660c2cc49c89c26f6941ccb25febe4ea9d1e462f48a257a1df11ad433898f954a383b97bdaa2a94a8c49a9cde9cf3e7691258296142c54d41cc2489d26dce94ccfaee5224becef6ccba23534b90287954112aff8fe0dcd6d3c9d85ce17704baaae57ed4c7ec7c23329ffdadf5f8267546184e0799b495ceef68117f8b868c25d3ed458ab053b634aa636ccea2449827d64969ca1e73230215cf472c567f8efb10866fcbb4f9adbf6c43b8a25a4577d4b7d6854873459b5b51254d4c083c274fe1d372bdcc8338e81995a3374af71544a96ab63595fd581b084b3634c797d89c5440dc33ee1a33fae9a4f38762a7749b5237e477fca0bfa8e45a9d1e54a70f6813be318e3c4b7bf2a1cf5aa1d4b9877454fbf7ba5b91a51e12b6a1c694ceec99c9c31664c83229765d413c24c45cdc950a153d760754cab52ea7e1aed9c164e2a30593c919c30e5c0c8de92e05fdb994eaa066bcac51276372dbd0e1b40d37b1797ea4bc73b88236e1b137f965f420430e85deeab20b62e9b21d076e94aa256d19e385958c31e0b07a46fb0d08cb14d56d444b4f5ee286c644da9cb6b92ef54630461bf6d149563b876ed5870de9b3d7167ff551a35f433157f78ea9941dd7523299a4c1a3c70f1fef6a6844c653e9a8dfb166490fca4869e0dc728549fb98bd361a4eee2a9f3e7c4e27639c41519aeb4e4f4bc68d1fbf821dc30cd9891326adcd54ff5c86724ef5478d2a6f29870c7bffe52cb2d3a5d3a5ebe091c303638ca1b0fa7ba5b4ff8f89c59007bff4a8fb71b5e5b1a38c1c1d18230cbb450d15c5a479c955329968600c3028322893330b3a8c8af90242a5ecd1f7455fbb2ab1c0185e48a918fd695b19cada2e18f36f43b4c70ca6943848c08536c7bca922becbc6db82163dba29d3418cada785e36d50aba7e6637bcd8279d9648ed5dd7faa5838695e8bda6196ec42577047fb94c7b314dc946358e11053b22af5973c8df5a81430030249180c040281401000048630386f00d3130830304c248cc482e1a0b28b7a140000403422503e26202a1a1016120c160e8882a1504010080342c15028180c04434a41a4cba9f01522210967c753dac63ccfdc0190fca3d721ff840da09580b7e8038ac78f8f6f1f8f3cc2e016f8969b6e584d61b54f98b8457f92095345895657f4f7ea8fb49549317603673eeec8e34dd9006f5a267b5f39059fd937d0e2397b1b7cf3f41f6a08add4582cbde457eeb35adbccb0f001a700b67b351a5b7eeda98846f414dcc05997257af76db0d4a6b2592536b661404dd5c08aa382193e7e7f3efc2cbb27b038d38316c9c0626399200c9aaa3eea8170956e4606577e50be039b91ec46dc588821097ad5739a2f634d2371651660aae2d738e5b2d4c4dddd29ee572b9abc1553137c030c9d4e4e81e1475be09ab40d9b64c5bb2bafaeb025a830982923da63d9b8665a60ab3916a897f8a4763ea9af605920ba166f3279b7a7b7898184697689b7b3113609530684a2af59a970927d8cd063b16d0b79f37d2aed6897ab9972d5c6234258cbc6dc595dca47f38c086173891474f1b9163dc37dba26196da1a709c715d800c95332f4cd85045b422814a2f5497b4d409aae7feb47ac26ee0bec0f389675f920c6c1f2896880864fec06958f401b6d6e19c4b4896ecbdf5dc506ea1b284b41938d90bf64e1a7b9522ccb295c53aae5bf0cee9795fa2c76c34cb58af0cb830fde2a7ae9fd655a6582129977e57e28eb2e6e19e12d5b14f23b09a20bbbbd4703713de0ba9e58f3260c9fe320fb6eb93f5c1ca04c3533dbb8bf49a4edd0258d6a6d49e95553843230f5453d436c9e7ea090c6a20ec8ac33a409ab0d6ad208f65a30a69996db629e05f6253e1bc1785e7f009d9acdee48e011d37a40a211e21d5833f50d99d41679e36bcf283635e018546ac007fd4a925f73abbadf3a8194ab04b2ebdf52362f3096cd9d0e74f6ae42135829873cd4696c67a53ed42b64971b48bde97cdef0b33de30e1564fc5608665995a695ada8b8f6f2165cb17a85945a4541a4186df9fb5d8a8a00eb88c4b299d380cdd63d58822aeba8846aa0ceab043fc53b7455093669347b2ca9ba4bfc9cb173721468736b0c99d0eabb57aa6e85448955233b049825a0c9164117f103ad55af69d4d59c82652c8d842693c2ae16ac338c69ab1b64aa11d6c34b3cb4f0ad1eb16a356023b6bdddb36feebcfecf0283c1e38226d0448cac343e2a0674bf1e2d6d68784e8bf1d0a8c10278f1ad69548d247079f5d1e47739b66e192f1741c7382752946118746029922c1d31c0d3a7d9e006d1919b3c9a6afded32b005050076921fd009bfcf2a12228e30aa71f399698c1430c810bed2422bf8e8811c0a6b00ba236902c0fa64d382fa6d143ad56615dbbdd334b06fc598880c6be66fd8625ff637a3de86d4e4f8d014c4c12d12d90262d3d8791ab055066c3773481703eb321099406af312507d9702ee580bf48cbd67f923e032fa8819608c517de31ce3e1b568081814457e3623be15180165f9a66546621d76402504303e1cd2ad7e376602e07d28ef19dc23ab5092bbedc7743c0480f1b0efa02fcdf50d92f35851a948fc97ae644f803cd08cefdd0dffab9774c1b1c33a0a608617d160fbd4a113e82e6ddb4fa9b9e157191ead41289892f6b91068958cac29e474f7d9be474449a5603345099cf4147a6c08dd6673948052d75261c58beb1774b6b44aa9d58cb95c7ddd36ed92feb289ae738f5a05e261f9a6b1e53432d31d8db90255fc151a7c646e2f21cb81119dc27fb3178746c9369484f46d0871c2ec7d683f19672767fa969946cea09fe811b60b45a975fd9dc87da9c2f70b0021109f7ec25543e960495572d77a3a0187226e997e3afefe910b4bdeb5ee3298b8b8047308e9f6ec784081b48b686bb1adf74e8379656bef7083326d9edc868d21ec61965e84e076c28e88a4619c77af4d6f745121f9f7c84ba752a51ccda1a4d309cf7b4ffe49ac8cf421b7183bb9ecdfa3b3b4cef055f0d8da543f1db525ee203b793b6064c448c2837e1aa554000927adeea2ab29a7c36b2bb4969c5050efdc7fe83293d2459fe194b11a982d1fed86bb11addf281aa23d34f9c48299db3b007568626e482bd1dc0b571e7d91879127dae721c2d5431539c516b37676ccc5ea47df920962952cf61cd4264b4d5722bdc269a50ba6b2de94ddcf56f3eaf74663b9cfe9ba55ba556ab16a271d7fbb42627d5a4ecb79d6ce9af72d78a58d9de9875b5c934dcb63530a7d0a9f7e8fc8196e149d44f0934ce55b7fed1b3f438688dcd5c2b49e10cd84479f25788d479cab93398bdc8a2838700abd16f27db0607e671316b81dc1f8b907972597077540f2789e7f907bc6abfe2c41cf0dcbb39f6831300936310ba404408ff6135b6b7e64a28bfd14c0505438a7682c7d8c15ed77bd70dbafa5e9c526fdec74ba8eb9b712484d70c9e4704e4dfbc193c13d7caf0fe6feb3a89d1f13024a36f70c100909f9b32f12ed4b3e386e574cc978258f2bf5534c6adc47de8c241d7b4726eb1dd2ba172792c29462664182f0d00e58508e13c9bdea11244b65defb752d09a7868565a341b02f39e9d7bb92f09c6ba51f2964418200648219bdd22d7a482105ee8b0b4cb61810b4dc71f6b54f685b6328b413161b0cd00a42433cd44a888df9f061f6666abf56446bc0520a5ed512ddbb5846eb5ceb70ae59e52f3ff5d35cedd9b191807a30d8800838127ce7e5261be75ad534209b8c3e83bdac2b2e58ea760dbe178f45d59a17f281c328a7f533ffbcb78c6269d89b1dced62da116a790e73ee728237dd5d9d0ecefdad4c0e240b17fcdb0737b247b006c1346a5737e7772650903c643f01de163443d8f011add85ef0150a5c681bc85a9f97a343b57e6d0d9ad919e849730d8158ec78fb1c25a185b993c24f3bf2e6f9e530317046b22300a69fd7b106db37ee1fe3f72d614b888b06b11102f9dc003094f1ae305fea58b3e8dad7c903a2ea3c36224bf5421d11fb2e346ec525475528ad4fc47d85fa3d7133aebb0c274d7b060ee8d1eee8a07a3117ccbc523324185bbfd50807d053ab8e09011656b5167b5101ce77c70e485fadc3184c4189c1308dbccdcfdb2d0e5d67a5effa444b6c0bb04869545bd790e6669a2ac3ce4ec446653051e05581bea9f41115c9986102fb5cf46e5ac06cfe8c6d86758ed7986ad55263817142347689556de6b7a0cb9bb9265db2ca25d5d8a256ea127c8ee36fcf398ab9e8c784332ad67535eebfe80c889d7f6ffd15443f8aed8e0bc38accb5ff2fb784e4e44012d012d0e2bd761d1f8d84e9d92193da1fdf8cc9a6658eb5d9a09a624ee3c55fcb6a12818583fe34db9f098963928bb2fff578486fc4f4e1b3e5a088401482e9a48bdfb26afc53bd0ea0218dee9316a7726d389c452cd8fb31e6275901d841a47c7d67f74150d5287a8371a6717a1ef5bbd12e102467a8b4ded05a3981306d4a6bf1bc408d4a9f2952b76a0b996828ac06d205069b84dceec198b0ec59bafc494ce80a443331fa5338e7cf1b80db78875f8ab8d228a694c640b12a15fc8f829228d7de2fa6110c977516a213ada31c87f50bcb8b4979305d0d653691779a5ac4004c51d8b90ca757dff9bd307f24e1a4b02946bd77273974df4d26e5f3b594a9e61b893e5b47a18167f7f04f225ba28b393d2916101135242af96c693b21ea5af488ffaa3b55ad3110830474e7103bd5cfd283f8de268a67e26272069581865cb0f4d0b7184a286930a0848921893dc0e87de597d959cd596e1b8e3ff862c0b6c3dfd709b71e47458aa127d11993b6bc9d12fa7cc38f594c9ae799c797bc0ae52a261e5a07d60ea6a351d66600a054a820b47faa797b934377d088caf52fa41c3bf45f815675082ee3d8b6266f0e8392ad66456e22401d44a5914011eb11d12aec0d8c84f4bd3e0c1850cdd6655931238fff5932565e06b772906a91d619946142809793dddfe1859072a22196a22da51ff60b4a71b2f90081d7ea4674fb8f0f36ece4e9b69d4005cb31fe8ddaeebb88d8ba0ba534f82df1f9155178db5fadd19af12bfe916cdd1822dfbf14f323bcc465844a9e53cc0669270a8ca6bdc727c4234182962ce34888f2d67538041841d655ce8ece03a913d40c1efb23c5ce9ccd679296afe49f520e3ecba016da1d5abf6c36a8dbb28d62a4f78b0ec237c91e19cd0d55962027d15a35ecc7aa18e613c540b0a1066c37a105e675d6ed0c1f7593f518e8d428ef404ae3e55f41e92e24b9b93ca62e4e3131de90b97772e1f84ffaea659df83bcedc295331feae5b26d5cd24b1aec93c960a2c747c401b3bcdffa31f02500729d3eabd9603c728ae4d185eec00355a49fdca3351e7903171e9d215a56cde820ffd7bee37663b11e117467c5190831d146280c0d4d7d8b66ffa30e016181eec007e72e3b457b6d27172b8e07ed92db98d3711b09ec0b1e9bc51e448bdbc33464b11d61cdb1dc73680b69a245cf2cbf6ee661311830e057181775306bca882ce260703503e2b165f0d40419472824ed2d86e278b716d9230404adaf5bb87ed3b1b30cbdac1f96381ca575facb50304bc5b917b30bbaa04bec3dd13ee9034fd04b92489264daa518033d1de5f5b02fbbee9e1afdd96bb231cf5266f6cba8132cc841a2344671ca20bb1e68ee3a4e7f1b42693b17476c0f3c8f80f7e32993764a08c701330dcc412eb1367ae0e42d97bd0c301d1ee75d34c45cfa34b2c466129e03534027bd17a9b8b65f328f5edbc8f01ff0de2346e022eab1fe63d212a675f29944af4f5cd121593f7d3db730ec1d876c034d0291093cc7359c6c2fddf077cdda7defd204dfa7b2d488f28ae543b8474465b36b4b0893de434592759ae491fc4cf8b743242cc06e578f1caf17a4c795d641c4349bca0ff3c9285419a30a4dbcd032a5e4f0d171cedd51fa752c11f1b7e673ed5fc5783d012cd03b2b31ebc792fd278c74ab14f781ec05d4be3365c308e00ba31f9af1c037a37045a77832dc68aab3b9ff7cae1a0d36810dd6c1830732d19cab19c795e83381df69217b2bc085be05336df300b8c1434dde8aaf1f2fe052fdd5830aab01c71ce61d6acaca8fe81bfbae5a9e02b290c74b0b1afdc31d0e37de049ba7f4d2a3778495fd8f9313678f28b72122c71e8d1a1d091122b4c5655954f85e05807bb996ae3a94de2b797b64e11216fed0f3d0def227348514a59c0f9d0b829b2baa5951412ac3fb993b9ef529133fdf462dd34c25cf5c45d852a990b5996eeecb46e05c9b450eae46738466b32edab7740bebcc10e95ee3d804ad07dde99262832ab32a830b5af4c13536c7faa79d85b774bed09ecf31c690a3b24848b55c6e6523814da78a8d250ff7fbc26a3ffcac7a924d6541ca7b2c3aa217d3b1482021b3b470c0e9eab66564ed5fba56b8daf7602afceba90c762a4ba30e1fd3ede7aed985be8e6668566f8f38be20db2a4e6668d7f54dcc20880159d95cd388dd48d12cf841cd528c32c761b318059a9d18268b1a72e20c02cf1dc8f8d5535132d8750a884e989052887c41954a860d739f6e2143238726cc0f8bebb0c01c4ea0a1c23ac79436d00e0fa927154fb4d08b46683d9ea935196e3a6a36ec29ab9f39b38a00286244b4d81f58eb31d4302d907f36513f82cf79ab7f7defd4dd270bac014d7f1e7c5fa2efdea60911fecb23fcad3767edf7d7d7d6605f23c21de2896847442ed0cff3f6cda63b2f659cafaff0878dc52d0b4fad0ad3495bcd6a973fd8e69289200c35c61c576bfaaafed92b72e3319e1ef22f9cb8c8fddfe2bbf3ad6b5cff23ed35b689217f4dc6b4a4bb52d1dcc47b4820820a5be2adf3c2a80851dd82e709283d87cde996ce9d17278afad7103be0a429c359c86b6f013c864fd9f4c0c5f44a0d9ca348d2817465ac114f2c3c6ab014ff2894e4e76c6b0a70a697de725abf46dbe64cf42294877f57181ed46ef537b6898794651ecc142c12619f24fc395a3071ef911098a5c6be50cb6b19506c3c6883703bda4e00189d33197c7d8658563be5b56a316048600c81607cbaf1210bbcde9959ea715721604e5e4f522ac9fdf156fa27c91b76af449e4a2cf2e793f402ac03b9fb16dbdfa5e945f5526869880b4fe70ae3c051b29aa8ea34394ac93272062e6dc3ca1833894c76ce9a49e61872662e91cb281eab2d6ea6322d89b167e637a2e8a3f2fcae7b3ca487e7a6db911a1c2c4008b7a59e077f6fd2d2f3ccae2699e46bba905df2256ddfe9c7dc3279e629942a4c2183b42366176334e963ade2e3f5c53132a1c93c35f9ac2efbc2544f35b6f83990ae39897b0cf709379a55d30113b69108cb0cf701ab4102a0b9e1c650003238c2cf9e73b742b6afd4001d73d7761dff0656e18ace510e5b7bb554715e5b982f9bb19d749141fa1db88bce1b4c70d244b95e4a36af439bbb03c885ccf9f7ed481c7dc54cd2b56b0ff0ab7e06c439650645a5e2cf37a9d19894369a6cd900a18af9e4d005fc85c9313677f3f6d15e44c0826e161da9304d0a3331acf0f4ecd17ba7eef8f1520d17614b761ebd42016bedc1bc39429e7d7aeaec4fd1d1b422350ec7367de3f748909d5f09451cb63224939490b551d16565ba20519a507cd48e2a645a7d14ee79f4fcf8f501df900a687be36c741be53adec41b215597c165b1e022c4b1597d9a7755d13ed621f700c1b593920b0e7490ab34d0bedc635a730cfb5f71ca9c119154615526e22db3f69eb983e5ae469ca86d4c58fbee25a8c6ad27a2859fb7c528e45e4f3906c7c68449d9acb610de658e4619d27162875e8ce0e7d1fe945f0edf1fde1e3fc600ea05d277833cbedd2a9cb3bd8e14be3e628c00ebd369b0d656df43b7b9482ddc835ced6073234b2ece79e330e281a530edd51397202956c2fe481858a4e82042d5709bcf491a343593cabaf23fad793ce2703e10b3a084a004592709038cff141dbc2f5fcc897fd1cb292e78dee657908939d8d013ab00a26ea45eb5ff6dee14bdfce72dd1da95bac40a6214387b4f5a2989f2da51ea2ae8c23edc22c4be366910ad6da102a6a41d6c365850c58dee1b5669a09df3406c4e4085d011de4b1dcbeddb5d13b6ebd5ba5e5d9eb07718e4e19f439b8037f1ad86a9b6d5a557eb2a8bbedb3a0ac58be62f67f96ea128e97c0d4799025aaf9479671b90457223d6c5e6adc8b60b6c095c79600d28323fec43a5303f7d215b600d85df95ce140223019a473ebe176a0f247c846c13a83bf1108fdcec53bcac6b89921aabf6a93142882fee0951df12b2dadcd04825f7919e0a716d34a157e5b0144c48e8d1205c777151e1ca337707507b64489a0376a707569ccad89043798448cad1020443102e21d4ec93e687a259601cfc58413ede575f76e4bc3b8fcf7c34a7a990583a46ad35bd730c273668b80d0820828a2cda17ebe29d76f58e864f16d12e1f127da36826a7ed8dc80a464185860c97beae51172739913fa8321a666676c46ed1ef42e763c7dfa60edc24a6d1e713143b1efaea2630a9aa3967dce9823ddbe3b4176809273b05882d66d70dbaec0c3a709934210e3a3286b79f8a4938b33e43618cd2cbbd81d994efe4ebf7d7bdcb4ecf00f80a0b48995c1586bab51fc98cf76c4d9ddc94f096d5310a1f273547ecd2eac6b63a4644c9ab4b34f4a3a3766bc4bcbe9a084698ad7e71937b49604efdcaad73317e011ff70c99e8a595c88c4884ecb8e330c664bd7e59daac2525d7807893ca9f706b77a7e3e276610255995ca1e3a696d5bea0f7fd78907cbc914a7f55755c809ce599648af9c1c900b5d2ba46971a78f88f2a5600259f84910124d05447c934425645f79e2a50438a0f64a9d35bf9a9dd1c4a10028d7c7683930fcce826e74e41109bf2189a5687247613f8216c323996dd004e47636d756a0be34389087e161251b9e0dab7293097f01fcab1cefb47816c7d42232ca484c91eaf5cfe37dd85c8af96e5e09eb347f0383ce2f33aea1e823dc0efa1d3bbd26989f297d4ff33115e244dc59b1e2b70a8adf73ca456f745826738722622dd863ef8cfb6dc11be97855c22834bece89d5885fdfb711b4a51ead5e02d0e8b9d02b064bb76e2786bcdf38e77a3fa557a4b9067711a1c4d13ac2d8d55e0e485c04533199ec91a81567f09b2b6b95497ce3286677da8470256b210ac76f39f663f55430abec6bf5d54adf95dcd0096a9901958c67110bc9bb9d2d24afd3d1c20db2dadc759d4f24660962f32eb219b5ee3a0d1805a49be0cf54a524b81a6212b7763c80103a3cc8083eb9776052b188fecc86e87c1772a27d548f54f908177f3548a1f458eb064cb3af18b259dbad3d8ce1caf82ab05984d76691edb466a601e0a87288f64a661d75aa4f6432bd202d9c3f847189889d4cb8c1e2df4108f5c84e4af5f43bad10a0493371559b910b48de77232094708a2d1966bc29d804c9ddf380b1b688844a7321cce9d1753b1f8ea5ec1a605a9767aad0d73dc228ac13a11f699f58c444224ecd6d1705098764184843c86560775849fa03973e14231f0b6eaa482a024078fd9b19b9b1ff8149554b3f2880ef234e8b8e492632980c33b2ad6d22106e6aa852b6a7630b9267e342b4ef35de8a7b2aa9802a25001d95a71386b5a9ab2cc3c62e8c0a980db26f0c248e00ae18913a73e0d9ee333dc0838d1963f54c79670665b313b3642e4c552b48d6404daffa73da268d36ab9acd33e91b3dc01568d16687bcecde2156966efa807581f035159618c90edd73e036fcb8bab4c66a11bbfd04a252785fc8ec0152b034512809615c8679140cda4dbdcf378db14f44c53818728c198e85536b505632c481f75c48857d4e5e159870bb05cdaf6f3915cbdccd78f1a976cc995d07152392d68057af1800d39c92b9d084188afefb251a5e5666c46ade28471348ae0e9d4d23ae7b30f47e98dc04bc0724be483e149e74120103579d1d1a1442d02852ad833dee6c5e0416d364d9e246d933d7deb7bbd631e471c70ae69dc5771225c10c55845cd9aa7b887e8f4ec80fab725275dbb52520f6103ad252b065a63538e680e30e9023ea0245b73e8405b95c8a5a5aa036bfa0fba2189790ad675a6e5620be79bb307f97f82cf75b5ea16fb38852f00ada87a9b10594af25fef0b19e4b9a362c6d207f854c534d2668f084c574407fd5b73e4d09dbbfb0458e3b2c1efda3252f83f60903f4e586c2093eac4f5c454cea0c8d306d3c4f5f3e6dc987be1a6c53000ac045d47893f6a2b0d19a25a258778b127c6245c764a62e11884b107d2e4455513bce730af824dad69db7030fb0b71d68a1142b996c07222da1a3a8c64852577e8dbf8606ca501604834f366ed8563f3eca70e60aacad176b9535f3d83ad83394474ee1b2e522baa9d836828c1ce278feff60d5054c870802b575a79de2ca13b00c8eb1f930014d94cd833a01eba02419fa144c051e39567664dae8b0ca7ab087fe9cf40f59e2984dbfb0d32af7cf5a427b450d430a59dcc3270620397d6b77d4672c8f53b026de1ff2bee37ed2da6c48ae8874c036522b923aaefcf5bd8160839581ba9816abaf64767ffa4080e3d7f45bb5b6fbe63b4e9f23e71aadc88b014f529d6ba84d358a27bfe94f6a54182a8083df29e822468ee704c60f988e234d3c3c1569341894b362dcb45ea3a1fcbcab8e79633410e5f8cc1438ee0aa0b549e7f3a53b7e00c39be4ed9d8899a12330936748a4ad17e284f215ae108c752dcc5987035b70663c147692a035e6a28104aa2a427ba673867f03d7c9b924c5de25062c093838357f66918230edaf290380b1a07f3d3679a9585836eecb495ef35c4d17f210ffd301b7e4014bfef62de601e174e01d99599d0370871bc6d21b6cb673cf054f6b5c171721bdcb81e264e42b6f99ff786450666b955ac6fcc3570162f44dd6104458c5c2b75893985b5badf914b5530c2d2c05d3f761a721f62b3f6fe1502e816f05a3eaa824b0e20937e7067518392efb14072101537623349a06f61c639db1d21d48f57659ba1addc515d6b42c6536be761fda5952b52850c24d13b2f0f2785b60b8b353d955182319384e9e4c04fe1b10c099e0bd51e7cd1acecab0305bb32abe9931eaa42d2604a649570cab694ed558aa071e87484a16240e4c5a33775d2090fffd032e022b90411a393cca1829731acad9dd53b172fe98ef3796a23637586272549d6a1cb7fd499fb49ce15e6395b3077c5f5784349702c2be81ca13a024034985624045c8d6673e46c129abe0542dc00f9f55edf0d893f1d84c1d0d145a8a5925bb3a6d21fc415f81890f11ff4ca65aa604c469082ab26e8bb7f51ab2dd001adddc7cdee23c702d0915f5d6f7d8fc0be242b9e418d10fa6bb583eb94ca6ffd08def5b75e37e5a77e414f63ddb994a1a0d2a3d61d564c48c1c563af96adc4c35406efd9875d22ddcb16a337f330b658049600ea85f9baa6acbdc319ce781bdcfc86d6caea63defc3fc1964e319136e99fb17f23d6c1e97e5ad1d5c772a517f045ce0a6065f094f872f45578767ebababc46b6e6d2e8d118814b4f7a177ddee553c340823084488eb54c90880f3b5446430e6a87fe30b09c4eb5f4072a4d36a99380ceaac6db1ec175f302d1a5ed6f179311139fe97eff6c538909f21e1b919ea00df6530beff2987d0130a6047b5288ec907f8aee1e2ef89b1158782fcc892a61a40bb9fde9a4d6d55730493dd1c0ad2067074048db8b899972af99071b26c4eb5e47cb359658ab3bef9c3a1511b2ec3034eb60329c346e2eef767bd09298f1f154e6502411235b89931232c6c3bb4d266f27105c3c74a450a33dd748a01bb5071b7e6d98f14fb8d1ccccf26da4167fbdb5cc682b61c1cd5f72ad0a858afdd12635b4af1199ee2d553f05ad2d55ef52be2d4d4b471ac9fe7f0ed50c3a75c418c16295008f267534c4af33564ae243bf7003f1e677657221059074965519da70234bc211459878de498ed0a05ef62c7031d9401e84f80855ac48ab4c129839ac0653e7ab7dfa0351de42800e03b160d85839ace5f6129bcbc0e471579655bd0fa79f32825ddc49093540016ebaa039c5fde01726b2d43f0e9e6c260a57089d5f9b24305501391c303735508aad9749b4d93d0cd14b18b6734fd8f8189f3381ef73547b578e60325f9fe593c158e4ff42d87baa3a2ef80ee81d826938cbd7b92ffb2247c06805c16843d278532eec12d975b845060065cfd448fbd6315cbecb7d352887b17ff8cfe9c9ebecda0a052e473b27b8d36e23f347710b470072d7d79147c5ba0dcc96abeec870def96d4ebf2f2b332b18180545a85a704f7a07286af72748cd2a42df5b7152fac4a6f2446873d415a1e8a9e21e47814b1c69da1b90ffd93b4702a9fe64f2f56d1fa51f4d4a3fc4b19c903168dcc7d5501b013e506738fd14f7e20ce3ed9e000cb9ee49527e0650ed82052724853932fd2ee92cda5bc15edebccdd20328ccc17198a5d69cbcf969ccb2fa5a7ba03bbc9db9df46dc74e2765d4f5865fe614f3cb0e10bc547bd02133669f523713c317a9461228b4679f88cef1a70c8a05975f01d03aceea4c631d170cf20b09c088279c0e3d81007693b3043ebdadc907e8be6616f570cb1cb24e8d62455f0b9efbaf2eb12b092e4ab31a90b817a659c8bf000e3dbddd064900d6efe08ea4eef68430dc30444f79821706a9a5915c9775f3f3767a399eeeff1ddb6b8a202942d03670e05039c9e8aac38c4210b2d6175463830f07e05a69f5025943a89a898cbde6b77c19922a919d286c9a3947dbb9480be7cc8fb7ebe9ce12f5cd73c6cea1664b78d862081f2060881ee7f4a3e7c6ef19c64a2d45f66ce565b45e4082e1596c9f7309e90e4cab85abcc10c795b0da68262f6235bc3ec30267e53f43fc9b6738a9e5393ce96a86bcb19b6f2c6b6a77b3d335858b3135a5d2ce75270d3364361788d961c4ed468d0f51859ae054b6b0d52ff8b8033a3b2882302bc980283991d584b6e41d881a9224aaff2c62ab8439b1545aa368a10643f5aec5eeada6ee4507b29c7d67ca251ce122e4b833387de51abd481117d924004a3caa272ed7090d48fd2a15951b22c115001b8e331aa27eccedd69ad697329271ea5b28807e924ce04e658887d047e1a6c390f9c7cefb7bfafa0360cdb60bc89b43eda58c42d796272db630cade40f9e205eb799a77f23688a83d69031d453cec4c7c8127437cbcf50989f9b3dff959fba72090eba626c77d34825f363a68face7358dea6c28032c0cf605623fa7d5938c3c8cfa1ffde425bdf8655375dfb85bd8bef0d276899a1c5864f10c177b072f8791a09c7c68f968a7c476eb84e8970ac9a9f5f0cc2db9beea5236b7ec71fb04d4525794ce7c06ad5ab6b3c900f97260e4db55e0d2d13626413ef1cae4bbee42695cb82c28a61fac41abcacad468d52c4a5b01b3e2e1da384256b4fb1dca50491c71f0fbdcfa7e65e0649eb6845b1376202d632670bd3c2720684ac9482ba9886d8ad40bce3273037081d6de9160a5bcffd92794334678bd0d9da583e5ded092db172803b5f68a9d507b587c149be82445aa909213e522319043b069196ea581725592a93cc94fd5943a111360da4ddd08a107237dc898dd83782a4d911cf616437aa4cec071315da761701cc4a17c2899aaa1c4c28ad38e3ad82885335a40b564b4f18f732efe911fd2676a061d97f932ce26d7241c0a837c68d5bc4349cb6b80538607456a14b011ce5657bc052fa51334114cad891b352ce5baa4523928b955a692152901527b756d69b25c29992aac2452452556b4044edd8420bce9199330de218a99b32db179b1cd130e6539db6c6b0329d2337e376dde70e894524b641eb2a43256299648cdb20a3ac00ab6af9da3f598c996d25fd2d3538e56b20a7b5ec7498746d49648e644e28cde342f38ac0af990268ed8dd0ce4eae2618b4db3639fa33a4cb3164acff60ddb1b574f066c93eb3a671e03319d4c1823f7f64bf024887bc2e66923b411535293ea5ea2b9e126b0dd05a11f3581d52158eb8903822c504dced95010880077ab050c795e6e51ff53dc6323e337bb8675aa59c89cd4ded6e805135806fd437319d3116fc0512a4bba5f599209d8f6ccd602e0189b93bf2b4d6365baefb060950ccfe072fa2f47b7771c4db93254a59eb20888bc46fb6edbbfe5280a0f7896092c128d5b186bf93d2a724ad4edf75096fe195a92348ac186ccebc961f9e14dc3f195a87339f26b43b92c3bd2c4de238111cee747628ff5ba626fd865dd2eb766dd74bb551fb4d9c54b6993dc8aadf4ec91c95990ae072ffbed7d291cbc2cb97bbb5b73f4da75806300cd7482471d25b0f4c6387db4df4f27ed46c44fa303380a9a52dc35948952dd1d9481522305f71606e6421e3c7d47954ab5a941aaa0887157075f7100a045ee76c95a4c1458054b215dc85eb20aa9a5302299e51a117b424c3a3049665382269694494a3f6594149b3579613dd65d6f751b6608ab020326513e47e1da84ab568c82b5a3a7db25b04acb2bc7a1e2f46720448553f64d3c5468cac6c44185a1ec509ca9c0a9fdd130f7711f1a9413b43b7fb6afe785c62fc9027cfa02de4445b50d3840b026c3013c0c3c0c3c0c3c0cbcc6f05bbb6f76668dfc945292531946dafcba654a29499928cf88d53fe38c73d08834696a193bc1fec705c60da00db50df5a3c786a0c61bd6b1ecf12c74d2a069306c50c30da798d5adf7ded6c769a8d186930999b6fded420d3674a93516775b3faaa80b35d6608ed3c1d446cebaa85ba8a106fcfc3afcc8ac24a35632997831997c61022fc2f0828c1f3ecc80414fc01d03ed3f5c8c1e4b82c9041035d280d8efe7525d1ae6e31ebe6307185e90e08b1a7893c1a30706ec50030d79d090e7f934bfff3f03fb9d4326f3cfe8c13783f95ac2ad4795a8e96530bab7a837cf92a1b89deceb45c4b4a5c7f06ac61455bd18d0a6330779fb9af3290ce5bfeebc36a143950c867744b528e1f17b33fe0297c9aa9386ee0e3979a1a44477ca6ff9f4e37601ddee9b99bff4fb2d173ad513d13126bd8a6f013da2ed62871e954fa4857464a7de5de5f5106561cb6cb7eabe6241d394aed48ef8f655af806ebaab69911538391e736dea9adc5461b5cb4f4984ec2c16158cedc9636d058b63d12978bd31b333f6d3862905a4960ca241bbf4cd15055543dd85ff5c5d4f1035a0a0a94e991f377b4cfb097e0ce57f99f4f3e6da095d103abba7bcaabcb8099ebd5b9c7ea906130c4299fe5cf7219ada1a4be8648e2ee3312dc630aaa1045cb36885cda756b5f2458d2414dfe4acf62da92591d06bd99a58d8f872fd114a1b93269d519e19a7110c1dbfebe35d11b8affc2c9fb25c7aad06114ca6a2ff6ca9f0ef1a30bc98c1136a0ca14baf9d97fd824ac16a420d219484bca4223d07a13e97708e1a4138e894fd92377d97411f26a80104d682a7cda98b71f5a9f1833bea5a10de195f4f5e420d1f5c9b529a9775b2a07e0f6ab7923be1173eb47a841a3cd0e36fca612ed84953a140631798583fb57a336173e96291f2fd1ab39e27cb73e17974b7d8a91a1a35b838ba59debd9eacf57c0bb475bc8c8bd1162695e9fba34fb5f3538bb354fa05a553ff9e460b47c35fb47fd1f97ecf82862c8c26a392c56c7be2722c8effe097ead2eacb030b1aafe84576ce3c3c6bbdae504786a58b2b55adb4e2b958ee6232afdf335660babae25c6793a14263156d304b1e5fb221e6a2031aaab83a4b66b3998df72f15cf6bc61c253779a70607345081b40c726454fc146dac783a9f3677fd638a83e997a6556a90ab29994c108d521c835c850ccf11a64552986633cf4c8c78877314484be1399a78b22a4561761d19eab456d24391aaca1584051528de4b196b932e6d8da54f1c742575511a6ef57ac20f1f234b5392393ad589724abae2a677baa83a27ce9653e964f83661eacd1d4f459126ecfb8af99fc2b3923e13797e9aedd931d18ad2a33cbd3fceee4b64ae6a6eb9a373d29325d8d0ad71c3ffcf3e8a40a31275caed71a72b1ea6438973aa5e58d13e5edbd2984467b9a4c94fa51ee34912858c6f6183e822e1fcfacc9a52417906218136edf9c64d8c9a111fb16d25399a496fb094e408647afe39933642f593516ff972b620c308563ce74ba394c5656e1175304be29d4ba48e484311c8d1d13929eba8ae9e44b0fbfe4954ae533956682022d9399d0e72a387c0bd34a98bd5d93755673807bcf0010d43a453bbea5f78acfccc021a8530dfecc7b5c876d5d020049bd72dd8d6ade59b83602cc9d86d7174b3c5a32188c4b25f458cf6754d92018133b6478f094ce08b2fd84d30c6184b461893c91734a0110875d53ccc68b3adf831a30c09d000c4d73eaabb746d8a15fd03a6594909bbcfb0def941b5b713df3b1e7ef6d187fd35e8202c978640830f9afbe9937721459bd00a34f670facccf1b6546c5e84ea0a18743e52d68cb780834f2c05f50aae466ed7dd2e9c12307d2c003d24a868ea5e46768cd8b0b7c41e30e950aa254d2b982cc0bf7c75ae00b1ebfe30634ec504c7ab5b6734fa7340368d4218dfaa762cbdd966a2574a03187ced3a3c8edafaa104b76e4702f68c8a10db931858cdaf271fec183c70868c4c1bd4b9a748e9279d487432ae72c89bbc8a42d7fc33aea1ba2bd65337643427c977d1ed3f4296e435b296fd28e22d7351b92711f7dd3296b69d01acad7986ef45bd88ba71af6d423336392277b3b69702e076549e64fe22b47030dadc87842f996da4aff078d3324aa378f0acffaa06186e242db462e8bb4cf97210fe6d9b61f3225992743293d688e5ea5b79dc7e07a12ef162a778a278b6153a7f7f4a9280c281dcce2c5274d3525180ad916623be51466c62f20475cea0d17152e2a2f9c57db3d94ba1c34564a687401e1693c9ee594d2464e830b7f3ced14d6c3253e560341a0b1052d9b9ce7d0f92dd8490734b4500717596e16a791052fa78b6b3db9a1848e8592a7b8e8e129c7e46b0f1a57288ed0b7dc78ab32b715eaf8413b9356f97a78d0a842379bd7b27934872da9a0fec6a0bf63ee589b338573ab45db1cbd47eebc34a4a0959b5a68022f3880802f7af0f8b100e8018d28a8a556e1f22fb5c35030c9686c7689ec06f51312df49c4dd9d728f9113fe9331e99266425fca690232856bd42063c5f48c0905cd5f29274e5f96b5842d7658952b0f196480c1061a4af8bc32fa874fa9f9f449a892fa98424be7e8dc2341ad7d3395434c06b98f508b4e71cdea1c96b211349fbbcf9e16c12cbd5939ca2eb7b2443086ebeb659b3a3f0de133cb24c34cf735454278ff459f6b6ad76cc22070aa73b2d8d1feb434404086e73925b4f77b568c1d3aceb0401e68fc20156ee73fc99862192ac951c23dd67dd881860fd2a76dabf3dd83626951d553aa519496060f14b127839e68a98ee52e5cd1174a4f3f3b6974f16af5a9935ac5600c3312264072b16bccf68edcb83063ba64e973106177ba85154aac6976cc7595638bc4d6fa5ffea4fe54e6a38719ec3d72b8187d0108fc30c303010002482d8a6e956286d72593c91866bc8e1f3b7c8c32723c8f1c29470d74fceee801825fef8009bce08017ed3b680082c9a487c7a0c792f13e821ae87800a4028416e7cad73432c70f32593af0858e1e246001c82cea114b0b7d2759682b37ca4b2e75dc1c20b1d0c278aa18762f75dc2513f8a247182c0081857677ba2726a4018f0a9c00e4159acb88cd7b4a6f3e563299c4c0dd478e1d5ef2234708405c81de6b7daa746a2f073b00d28ad463df768d5ed0a196e4e8c123070d16841568562fa53617bb372b06c82accdc75a24f5d4aba3f25930982a8a23a797926543e5c0c81a4c251693ad888875c8f3000828a42fc97d805d35ccf4f615ee777ccc579cab6292ea1365888dd956e5129dc5a9f5d8d272e4c2545326c3ea152c94e9ae1289266227f43070b6f124541ac7e7bf04251b96d99ef6a40f1eb47b3af8d9dfb2e904f701f4f7d773ef5b9929e683d0565a5c358da729cd1e3c701e944267f837ed19b32df5d4201104e9ce2464bea743b67f5c78e4da47183aa6432392369c21263daf9336a8e34550092890b806002e412209600a90408254026012289078044c220000289359defa9653a155919401ed1fbb5d57a1cd7cb3b007e00e288f405a1a974e7e512a3e2014823401801b20810452cb2f3e236d0e1030c90446472333e9d864a49fe8830e37f4c07995e93280f81efc77fb820f783ce31444ab8a65cf2c464c3a503a41069cbd88cd50f0dfe1202fde3de31be3708a489f8a052790e97328248e9ad10325cd8c8b53c482030dd6e6a4a4dc6c55602020845e4fe857ffa0fef8e559fbc134b2f3a881f181fb12cdb396a8966207de02fac657debfeb5182b80f001f54c9fcd3fa90a207b304be631194cc87ca53302103dbcb98486ccea664126e5a19853c48d6511081e522aa968353ac9b1dc90007207470661a393cd981e1d1640ec709cd351c3b826bb0b5601a40eca77d59614bbced97f02081d4e75b1a72b6c4a26132680cc219da2b57285e550cacda759ec573c47e390102394df76974cffc0a1deb81eba6af34b66be007903a2fb520899c17d5d37203daf6cc6eb4a57f13658513b65f5299d6b52367cf14bcbcb7d38193f90351c345de613a6abc1bc2929fd779ec16e0649c3bd15b36d55a64daa2480a0e1e41e1a5676ad5d5c90332c26343b43e4088d1d182066386b7c2ff62fc5d4f93340ca004206479bb0b77a59df3801640c7e0a76ba73901a933a954c266240c5242da94f73c96482049030b8d6f1e14bcc09d76c8180c1f9b85fd5496459a5205f30ad8fb651d63105292a994c9200e285ee3f8752a22e8c4c09205d28c89f527963c71c55c08b921f3a4ee0638c3126e085173f6ae03f76f0a880173e031d4700e102c816da949a2645985f12b22f8068c1d6d0be773608bec8e1450e2fc0d8c143c78f1e3dccf0b1e3024d00c9c26d216e3a775a4d7d320208168a213f66548dffb9321df0e6c10e72853b0695b5c4b6120a7ce1c3071893c9e7f041461340ac60bbd806d11742d9782a005205fc672f555bacde7b878e9f4c20d03b7460603201a1c2a6b284e913572987a9641206c814b24a3967f6364d19d792108048e1cede398f09954f5eb86432f15106196d81c9c4082051f04676b8fa789b71f32050682bf6ae66bc2de7aea32487db40870f1b803ca11793222a66d1646206881356bdfcd5e163755a91024813cea4fabe5b5e7b4c64c21f2ba98719d9e1f2fa0590256cf626452c5bea780a4409da25f96071413e4092f0011024801ca1986b39e55e116bb13ce3878e1d3c749801c408e8f4e1b593fdefc615a4086a12b3b43e1d3a689f042044e8458d54bdd2ea96be18408670c7ddd0baa217af4d42488ad0296c92315f0009022653b986baf6035e68e08b25800061bfabf294f2ae81f78e2a80fca0ce2474bae5fdeeb083f820154dcc97c685cf3ff5c0d3b6e949f78ccc4a82f0e0939d4f6e465f95cdecc2d1b3da69532b63d875d1e9b50beaba27ccfa5c3c16bee205add33b1b17bb07f963f2d3b4b9988401dc624d213f2b2df8c9fc4018802d3c29967469c8b9f8a65af8b9fa9fd92a5f4c163672c1ba9ad86d0e1acb465cb0d6a172d0994a84ad2593898d5b682944689edcaed9ae6432b1610b73a5cbf01b635cae16c56ae7ced0d894d7964c2623b0410bb3e7aa14e9273a7c66631668b514eb19d5478f6a43166f965a6690efbd16148b6fbe2aa4c9f8504f26b070c5657f94907141684a72f0f891c3c9d8808d576423fe969e34e6d6b4e18af542dd4edd9f8a236d45aaa56a5fe542c9fe6cb0e25c3ac59b1e3df51ef5c0c62ad0a62a5b8fb8cdb92a4a4184750c6a73321925d8480516b3af656ed2b12a4645fa63b6f0b499725c4c828d539c94a87ffe7850292699e218ff47e8b3ce08364ad1b856c9782652d89a827ece79496a278d82edf49a314da7c7cc11b0218a7477f40ca76275b0fc076c8422f161d44a5df4ebd33640c16fb27cfb56a6ff27bca4b5a2cc7810ba3b1ed8f0c4321b2fe9cdb9d2b35d82011b9d4873ad4e8e57f669dc021b9c4829cb41cd6a68ca7de131831c3c9a05363651ec18cf5fd33bf33f5c8c1cbd6377d8d0c41dfdd368ebe5fe626023139cccd64d336f96530c13cc565ae8579f6bce974c26397874898d4b943e77a9b0137171226c58a2f4f895c2929eb7cd88b051091b94309b8e49d6ad05811e2ec6ee580f70c1c6246c4882f5689a723c9992c9a47950e08ce6418107c1193f74f4e00183f5800f30ae60231276b8139662e957780d092bd76ad02b9e2ec95c09b2f1883e6f8c51e1fcf38d6c38c218fe6ac5443e08fd3722d5b184de60f2a17d6744f24fcb464477efee8b382bb4347ab6f6f0b8224ea5739df5efcc267522b04ede41d6a952f93522ce1bff2a19bf497bfa10db5a4e23b664f4986a432c239f16636ef4925c88b32e790c3b21773226441b6fc3051fa541942bd3d9a8a43be55012442174ad65301919bf1408af5c2ee7166d972c091025999722ce649decfb0747c950bf3739dfd0faa15261c54d8eaff5ab7d407786b2109f418853f9c0596f6ebdf64c31a37b4888e5f6482bf5d07c950895eba5b6948762c653abf5255546880793c7ac98d13a9e3fbc43f235b3be6cc815d9d9c10d9fa2bec469ebdca9c31f74f02045ab3cfe74c83cb5fa99cc1c126e15367a1e6551357238c8d9bb78260e48cbb623e42f577906077ed3557d4cde88c5dee0b7594e3e9f7bef2937e0de2975d818427d4cb561db1db7d2b16243b163fbca75e5967e0de6ef9437be7faae46a30b97a8958f6552fa5a10e8f1321dc473e080d59b589cca5695b34e50c273ba5c3a7bb30313947056c98210b627bd573b5510643fb83eb7d0ca2f99201771bfb14a5f5c0c6183019e45e4a2552b3c462c84e478cb8bf1435736c84c1cb34d73d7ba7634e3054517753d56e2639978d2fb42f4ab63248cf957d800d2f94c4fd35c5c793414e1b5df8746e5f34216b456c830b6b4a2fb24ddbc598a31eb0b18532fcfc4e78586b9e6c68c1461652137536d24d8637b96432b18185e4e46645fee57a934aae50acebe5df0fb1ce7fc96442011b56b0bc4ecf747374ebd70c1b556073521944fae68cccf961830af6baa8cba02bc9940a6c4ce18bcde46bfa22e6325228be664aada52a3c4c2561d88882ab9e31a9f2ac136c40e1dcab2253cc6e77459160e309a9a4d3668d796de9de09e98e74712d1d6d63bc0957dccda361d34c38f6cf34c9a09d9d739650b6d8770a1eb3a18432a8d7659cab77b704c14612d20fdb512ed948c874579699c75c17b723781bdf525241e5d5af3e40000790600527b061845347f3b6aad3f09ab35104a3ef67f7f4b431934d84c48a14e95d9ac473c88b31d818c22a5a29df3f9dd0a1b321044f8ba7d6a524ba711b4140058bb541aee7948506368070feccba1aa1d2636bd4c60f0aaa3f6d0cf5aff1ab0e1b3ea8ca3657affcffc7d4033c5b29f7caffb6494d82306e608307250ded9b547d8fd8cc21bb30681ed9cb25d2ef2a2344175c52baedab82d89ca692c92447482e8e395bade62984d6cad041831684e0026f17a9e9731c655aad41c82d92a7523aa54f45f7cc08b145aa3dc920be69af4c573299f808a985ee27f26bb2ac62b4687cacf3a638974c26b340dbdb469197eb11220b2fceee7869d2a6a78d85553b635a7a7bd3ca2304166dbd9892aff55a17741faf307f7aa8132a16263b32425c9109bdab62972d994cc6086985e92a7ffc4f7b8c3174c48015e6d2f023e279a63eb40a3d6b120bc2ff1784a8228b7aba73b8cf315ea9c03fed7644eacde66310820af44f549051c5d7633cc5f1cbf67546563299e8083145233e771ab31e751a538ac2adc618a5951821a428b563105d9a4bfd6e1fa3d894da1c7d451f3ac6f01f3a4a6890e3878b210aadc28aa975b08db1138afbda93d229cdcf860b28cca7bd9355783de1499f3827ad4d96b3e6b3423c911e4f2fb271c4219d284e846c224413219908c144c825528825422af180104a68a5f3665b4b964ff53d7ef808994488244222110289f3f6e3dce53bfe948fb87653e8ddace9fe46471832ccfe34c88b9ed588e6c2762ea7a0eecb104624d6435f9706392a438b58b47cd2184f29e2505d9eb39212b17e68e89eeb5356c14204329faca7517bc2842187f0eba259da8ca3ea2743f897572f85ffec17dc421c73d664f2e3f9f28208f1aeef8519cbe90819847aa1363659478f3d09a2b7ba20e3295fed418148e6fe8bab9401a258f1e46c8edd26717dc81f0a42bf5f724d93b5911f52a147f346b86ecab74307078a18217dd0767bd48ebe7ce1497cc8dc3bea5879ec4c1b1042f680a95aa60937bd98547a08c983bb75fe4967055142a5f420040feb888a41c754f72e9b2a2177c0b46cac4a3f7d0c21c40ec69b66dabcc94c9e85d461df19159b7ac4e4c41d84d0e15122937692ae1f22d441c81cd22e37293a8c92c9c792c924440e8c6ee5e6ae38e51dcf40481ceef091225355ebd55832b940081cca9695497ecf74f63881903718f3586cf9c9f8b13b9309043ec40dcffb8e87ba8f27e5521281903684b0c1144e55ca1b43e5c85f90c128709b011642d6a08d8c2e56e137be9d4c10a286903424b46bae1ca5a2767043d0107286138498a10c9d927f5d59f364300a1e1042064dd63ca3a5fcbc793486f23e7ff6534b0f42c4f09e9b9f6578c6f15318dcf455f9b5fa64a643c090ca72565273ff42ca455d56cd75485d43bca0a74f41cf568eefa6902eacdbd77ecacb2ba5dd03215c28778e53339dff952b0b846ca190532575f409152a6b46881692eb36d11c32e9f0991f2159703d05153a85b3f51bb1f07c9cb948133275944b26931c3f7638f7f0104c261608b9c231eb3f978e0842ac70c58a390999bded9f2c994c7c6c481542a870e6b02bb57052cffd121d63fce0b12347c814d2d16ff79d642521089102a74d75e678f964ce9720240a6ac9ac2d657afd6d2f994cc2088142c9e296744d53177f7f4249676f4bcb543125d90965d116f2c47c46fb52134e212c7a9bbc4e31499970cc369a6cf7ad32269760945173ad9849c46794908dee2a1d96f93228edf019b80b429250d07a531a55375f4e2141ed98b39b3c067d6af1a28cf5407b8ef61e3c7ef84045c8113e354269951e15fefd018110236867f36f1fe368993ca4085a9e90c13ca62cb150081190319907df6dff11396408b7bf675fe8f354d134851021b4362a8910b1f7b8a520840421e976bf39e67ed9a84058d5cee742e709d1110b427ef081101f9cd57d8358bcf9107f480fd02bfaa3ac3736a5afe4870e1a84f000a583ceca3b952b899da383506317e55842476a9833659d9463070f1d3ebc078f1f61e428c38706bef851830bd4d085eb15fc1ab928284fa5e973dbc9fc2f3c064b82921ab838e770f96ce3954c263e62c05ed2a3c62dd29bbe647e758b1673c96452830b7ce1a3862d92b94ecffd9754955e8be4eb3ae7b7905be2d3c2ebd693f7d944e94567718c144fcf205388a8c8c238a5d2cac88cdfe18f851e479c6cbf9ce4e7182cfc1d4da67d2ffdd2f70a6f943ccb31479afad915c636f5187d74eca4fc56e466f2f71de743e67532d151831567f74d4b314a2cc3be8af664985d532b3293aec40c1f3976d450451a4587364bedf8d36aa422994ae76dcd2b3d2797e818638cfd1d3a0e500315493fd3e35ae9625357e314a9b60d1936ed54c314a5e6f89cc6d5ce93bc14b7b8a69f1acbb83d29cc4c3978de50d92a6914f9ebe55c664c97d11685d97f4f4f893f9962381479be6e9dc77ab818148cb525fbeada9cad7ee2d0d9cbb29d396aa327ee50b6a953d67cb1349de8dd7456ffacb86b71e2bd55f1a0be7e7d3116d4d8c4fef1ff63ceaea763af89d2968c88f7f0b436cac495523625eb233762a5a006263e194f6d3cc8cdb6a41cde3c769c1a97e853cab9dd63c3b96b9640c38a8a6939acc4769ece62ae4684d680518312f5af074feba963b4ca1717a83109849eecbb502a22572db1400d491473a6b994543e378ff3082613ee61811a91287673fc6fa5811a90a85fb64b25fbd12ca51a8fd074ca7bfcb69461778441ceb4c818d2630aa546a0a1c54aa66897a54d46a0f2b9979ebad1af9845d441e6b4e4934c229622b0ce27cad69408bcac2ee5bbcbdb1897e4e8f1a30c1e3dac06226a1ca286216a1422d520440da2845143103502a1c6ae182f6b7db6fa4bcca80108b646a858f95be1f45662801a7fa8e1871a7da8c1073d7830bde1f31a7bf8c45bbc6fec341a7fc90f333cb003032535f4501efde6a1824aaa725c230f68f3cc7ad152eaf4530d3c241a7379626a29dc9d831a77586d4fe67aafee98643b146aa63d594cc96c54076389ca988398e837253aa4364a5a9cedfca05338a831079392536faa779621960342f6a95269e3777f7130ede910b5d9a38cfee0e088b64d2a9ffd277d7d55b046de70d0bd499aacf5bd588fb8e11255631b9fae62c646da501232870be249b5ad1a61c329c6f4cdf79bc37466c68ffd11c6c81adcfd8bada2f4e993691e8ca8a1a44ad80619fdf46ee760240d7752fa3278d575ae68040d886dbbd1b42245fff571c686c08c9133fc5b2aa6765a906e560546ccb0a5ac5e9aabcb6069b06097946bd07f22c3bb29a7091dcd91311c4a85fcd19b4f8eba47c46066fd245b7349550c1a09031bc3ebebb22c64f460c8849217f739fc853428b32f314a1f18f142d9b3d5bdc993275a77c16cc282b60c9e1ffd94c008173075a6b24c25dbbe7a640bcdee685785e9f6af235a40db488f31849e855350d7579a639e73584009ad9bb7d53a7d0e5e61b16c7983e66ac40aff57bab04984926d268f1f3bc0f01d235578358710dd6449a7b8bd8c334860c60815f44ee2a229f5d22f8b9771060946a65085cb35aa2969440a56ff88ca99ec2f7563c2481492496959ecd28f40618bd172e9d4fc97c4e263e409678e516ca36f89b28c1c3c7ef4e011821127a03a3356b4641831ba532688c04813543565a562da234cf87fc3a5d49cb37a4eeed8268c2ca1a8b956e1d2c7ce9707c0124694f0654a6f7af1eaf3955333184942dba7bf46e71f095989f1ac36cd17b5468e502abd9d7b4ddd32b43d86ebc08010468c70caf6f3bda36a64bc98e08c1f0030c24811ea1c2dc54c29f878c88c31420453d6ea113d51adcdc810109b2b2d06b3f5717f6ce758c188108a759ec973a95c30e548100ea72ae988a714f6e7112074b9c2ec6208a52c657fe0c5ea0a17a7a6e774b830e2033f46549a4fcd33ad8ef4e00e3d75da963b467c233c784f4c05b7ac253c443776d1d987f54d69baa10bd4ce6b4e29cb4b9749702317d8bfa898f1d49a99b9810b4d7694502a851072db1bb7c06ae44a995c051d6728dcb0053a557b54d0fa27464e851bb5f0bdfc4d3c73da4f715aaca5ffe6c25be3e9781645d14145d35ef5582559d89a6ddf628bb130e954bf1e2b69cc1883c53f42c67a2879af6d5f518fd6a68b8b41db45ae40dc8dabba89f1b0bb15afdc955c5ad2e8576205a22d699ee952083756914a22e37fcc41c8bd64126ea8a23bcf6ad2dcabe3e99170231587774aba53ccec7808841ba8f0fa62eb3acd9ebaf5831ba7305712eb24bce37d4e32c5174a650ae2de720e995218468edcd47121851d23f74ee76614887bb2a8f5bd28fce83352469b3c535b28dad7942e87d8a0f82b586ca88aa543ff44e6d9af96629cb54d7ac22c4236736d3a717534ad4e29c9469d135550425d8a1b73e5ce36a1877d79ab76363b4b137e6c75a8bb7fcf95cfc41a9a1fc77ec6745c31717a0d1b6e9bb2f7f98d4bd461e305a1377fc3127bfefffcdfce8d4a244377cbb7fc97d09b921c3926930e4c800220e840066e5082131de27addbe31894e5350b15be3a4967c4312e670353a5bc307b5a90634500600e4702312057939566c2ffd5eb21b9048be3c783c7d1964fcdc78c449e88da6f329854e49371cf187df20ff416d842784dc297bb16432413718f176ec28ef70523fbb1b8b3845fd140d965b2a8a371481908b1bb3730e9be47f23119bf41cbf2c7df47d6f2002bf11da1d2e4b9ee54b2c70e310058bf12ff8b8e87fdf10561eab39158318e17a210e32d4f3bce584380895cb4a3eefe6ae07c108f116f6435d78a5059156ef1c6c76462f9802d147931b545ad1785d02c4725ab5a76eae76df3fe03146dd11277ffd5e3f144cc72dc8aff4336e1ff638d61e3566bee7101f50bf109736688a39e71eca3bfbce59f3eb92520fef7cff6b90b34fbfc983a5efb44fdba9dd208387d4d8cb858d317748a3ab8dc5d3953fb3836afb7b96c262c3a5eaf0c713691a34e5061d9eef8c5174de92572937e6b098caaf73c173385582c10d39747729be42b6f9f581b81107b33ee5e3ff05ad94f5804329490ba5e27490f9c6cdc1430c1cdc78036a3b7cc55ac96f30959891637970c30d0777fd3771d9e29291831b6df03b06cbabdbf10d3668eafa3b8af898a94e6b48892ab567697297824870430da70de2a5d472a3ad5762801b69308da6adce6625ae3c6848772d838e99c4a58e9ea17b4f4dfa4767863269e6d8e97bf3e83cdf2843fa52c86c559badd3de20c3b92b35a7f8b1435c24841b6360fbb665e77437c4f0fe8ef67cdb10bbd18d301853e967314db5aa991b60604d6697d6d8fb4a991b5fe0f46cab7ea790c13d2f582a098de9620c6e7401cb4169d3772ae9644134b8c185f2e60ecab6cc639c750b5f9e2c6921f3f55c16f37bfb7b16d01c473c5cde9c79452593c90d6e60c10a3aad2da43f6e5c01d59ad95f33aaba2e3eac90f2f592ee5f9aa1cc2aa099e372a58f8f212a2a7c672a32a7f2e29ddf98829ec5d4c7cf96f38e66c60d29f4dbd983ac8d11313a3d6e44c16e53993ddb5ca78e1b50404513fbacca3ea192656a75eb2ee8d19071c3094973d998b2758907bb09891795f51b3efffe0d269c3ce4c736d5feb72cc68d2518db32c7f31c2fa892c55042e6fb31e66ed37ba794f48d2498a3a6cb79bff69f744a26131f3c4afc0612d2b1dc62aab64bd133378ea0c5fd249b7e22fffd1b4648eeb8c7d0bdd12c2b378af0860d968208f50d22dcb9ffc4c6ddc678d68d21e47193b4caee5ed56f08a1ac9eb76774d2dca37423089bc7eccecba7eedd3ae00610d690a56a369f88cfb91b3f28af5f4cc76cb5352a1fdcf081d92b83daabb32463b86407377a908745bf4aaab11de61b3c38ff3669f77c14df14915d9439a65b2ad5fa67491768522d5daada154dfb01915c1cc38b521ecc2e6cf81210c185697929c9387a915b707b19e5753c7d6ecb186088d802ad2e5b31c3e5209e5aa45f2bacbe9f4e1f3bb4d046f42b2f7390b1b210109945e695c1eea349d39a520f88c8c24e290595440763c19d7cab3491bb0d74f828c164c2a387db60078f1d1f108145a53fa7ad9ddf18d41e1e468f1f614c263bca78857bf7be796d6fc4ae92c9848c1c3b7c8c3278b02b2e4f2d4a5b7213b7159f0e594147df984358259349044458d1c99d513dca7e4c735bc25f98c82a8c656142e98a3159a77ef8f8a24454717d8ef32266c7aece92c9c40b91549c2f789cbdc9f5ce60054450d1e8c938696e2dc264444e914c9956df29ea08d131454a53fade354b763a2e528a52859d9d3125b5452f428a524e99828be9ed53ab641425d1dbd516aeb4a61b20220a43de4263ac8718be65fc58327af0c0c08984c2cb18f562a95b3299a89519397e90f10a1001459752ae2094b08e3dfd413372b88f1e5bc627feec7c6fdb314f9c8228d9f539c9203ea8139b0a6aa9e771d29d4cc2988870c234bbf420f4427c9ba8628e575f8be5e1ba92c96402229ab0ee84070d29ee97d31b8230443261e5b8a2a516c7bef632b6070d76988109d34fd7734ab5dfbb4de00b0b885c825326679bae326957c41257063daa396a52a412674cb669740a9b62da397c5062cf5974900dc24f7926714a49bc44063d42ca64bc24ead0a52a994c122012894fa9e879fc7a6733078933cf89c7de47d19bc93063c707441ea196ecf7e8b04faab223bcee28ba5b7e914658296d0e5b9562a6a6b08e1d1b822f4620c288d45cf8acdf024416f1654b5e1762662fa306ce001145303722538a31a698e1994822fed9981b6c7310a967c964b23dc4984c74ec3003118ae553a9a6d2b87e4c490e31cc48de39bc8c651f3e9940a0c796b0c8213e916fd6259b42955603228628a8e7df789cd84cd16432c618ce22852866767d2bebd7fbced83181c9e48c1d5b228438c99856fdf8964c26051019842058cdb8398db24f0d3235683026131763c7f6984c7c6c402410278dfaa9c63f73181b10a588eb1c5f44e6c8f50fdeabeb6ecea31fd049937755fad8ba0a45fa60084d9f295b3a5e5533bea8c064d2aea30c1e6c001e227c4847a3bd5f1e1d74682d20b2875ccd4eb7ef6ed6baf5f0cc7545513ad70521e701b1603936a99c1e3f4a040fea46f78a2522c45a7787d537cba58c1f5e1ae69080881df02b17996b3dc8db75302ebc8f58fd3cdaf592c9e4478f1c3b7c8c1c35f0f61c1410a143ea4b65e54b5e8c45640ea8258bc92c7b904173ca109143eb9f62bae952d9e989c40151d739c6987ed2410505227068f79432ad20d4280bbe614bdafd535231b3361d86881bacad4fbbaefc3919b5814baa447be9aa7cd38d40840d8b8ae9fb618607d680c50dd1d68c3968bd2010510363bdd7736741e671c96014f40e0f030522694029557ac487edf0a15540040de53a159356b9a4dd2672064de68676d8fe93890744cc704a617739952e7925c6c0ddc764a2019132acdd153478b632ad190928600112889081dd2adfcb529fc3b3317463fb9fc4aacd44808818d693cd1b6f1bd33f74c68f32c8f030a47139970af93985d08321af7bcbef737fa1bdb3d894aa671b4b2f9cc384ede63c93bd4d897421ad995976ab73019911fb36e7263d955b783eebc9a4e2bd0899db1f63782b40440b225948a70775a9e4656b69c0a3871866c8c02d7001112c14432835dd98fffa0ac8967091efae9f1916b14215635076992ba7145344aaa0f77a8ef58855107fc9f6e8b11910a182c81444a42012051128d413c2107182481374b3386e42e992b5b00813449680fa99dfe565ef8d5d29c119b9a3793597a933752092041124881cc10c1123b031630e5fa1a652f445e074c46573754851538408c9fae42773a3dd172ee90f880ca19446bf57b31211218804c19837f9976ef5368a5a1001421a535edc337b4fa516f98195dabd3a997c8b97b402111ff897734aafc6cc7c8af4c09156e2b3e93fcc28830c1e3c9940a006223ce02a88f98aa23fe5b7b1606317484b9dbcb53ee59eaf6043177e9a927bb169c2324885384641060f1e02c0218adea183063bccb08123145e38b9667df95f4259d2001ca0c0f109344397980ff1fc9b8e510619609c41011f3e360424984cce48383ce1c774d37fa13c37a8e8f837011818c0808fa5c1d3004727b819ad96bdb92aca553299cc8013f79edc4fbba473924fc964a2ffc38c4d94bc5364839a89ff70c964a209f55a8338f968422965c9649289e433a45525cb75a68209453789722da9b9a3ece31287a7309e4dcff907a9258a9564b26ebdbc684a9530ab3f25a575c53ac30ae0a0849af9f37a2fabdbc9491c3226db902949182fcbef641232bded4830db17fe43cd27f12148681a848e9e93199d641ee185fe8a9b7deb46df02381cf18ab8b533e1696fa1462c37a3947ef3b3d98b0c46acb9a4cf597887aaf917c0b18847080b5d65496fc710033814b1881711429d7f8a66004722aed1f4569db6528b678850ffb45e8c674a261330701cc22cea3b63f2a14d592593090e43b49d5134ce53304bd90a70146217534953ca6bf03580831077b8292da6fa5a546e32e1a1631067316941538875c44010c8c8196516d5d329cf4720f830daa34bd7c3790e204e954da8eb5f69131911e0f8c3f726e4c7ebb00438fcf0f8a65c69b5989b6e0870f441d7a8a33f65dbca2b8681830fde45739ff3bc1d449f021c7b40dce5ce1bc6d53cb41c3b7a8c00871e8e39c3e92da593dafce581d3216a9a9326a129c581879296f0dca26754ffe90e697fd029e75841c860dae1d5d1ee9f4a690238ea90577c4c316f0e071d0cea35978d89adf0f11c3e99b35436337df2270e39b81af3ee736fa64c138e3838aa1f64ca26f53278b00f0ae080c39b34559e8da23a8ec5c30427c0f18662503197fde6b49d6e3778c1c294bc69bcbf260638da80cab95eec3fc82ce6b3814f9eed42770af9d88d81630d6be82826e39d1d38d4c0bfcdcb6812c277f33420632e8f93f9ca753568c864b4afcdb40effcf197211d1cea661c4f56638ec78161537694c612cc3dd5642c6dfba34ee91015d9e82298f994a543306c7c5c55e54f08ed116432f269b7d3e280c5bf56eaf0671996603c3f99d84ae4d2938bef0e8942f3728d3614a8ec30be8bfc9f0d89dff54787d343b0c7074e1cd6d9fe6252aaba43f788c11061938b8f026793fbac62d6c9f2975d09aa405db94deb4418695d9370bc6af4ceaf9c182d72e7b6a5be43cc55ce14ca5a2295d995a5164054b375ad6a0e495901300aa80a30a77785175bf22e673940ad70759b92153a690bb898b5095d2688a4ba10d21aa84bee652c28b82b199d17fbf85829bf7479e30f91b2ff6848392fdb154a3389cc065dcc558c878260f4713d222732997bd3898900e5d4ba32d54d21ec3b18484aef72445b6a36e92047028e18f55174b777dc56a702421252ea8c7a60e001fe040c2a64f577aeaa09634031dcd011c47f8bd3fbf9a667480c30865ee1afdd67e5f1f84a308a8111f66b54dabe57e070f1d1bc04184fc2ac584d2663a8b0c00068e217841fce992da9d624a0bc11ea5a6237394e6cc974c26397ef830a3470e1f3a26131f63e8f86186e20842b759db9da479141d84030808ed674a269b71fc60fd9c295fcc5f0770f8a0d1b258a9632aad1ede630412c0d103ab5e572b8ba58d2ee2e0015f4a657bece88725954c26ce61bc5b400c925d94ea33780c2bbe5bc0cb3883044ba28bb4ce4d86b3d51925e6a218e4a2d5eb7b858fe1a2dc6d6736a313822f7ee818a38c305c40728bcb9306bd506f9a2b670bb5ac339eb8289af18201925a5ca292cea1930969990d818416ec76b9998ced239377c69e80070d48e0009259e8232b7b597ef94f2659a0f3c58de7f8d5872f16a6cee8392eda680d222cce9a4b2e5b3a25b39baff03354ed969aabfb20892b780b57f13b651b957f0210d08a4396ab790a1b7ad6c28adda28cba76cdbeac0faec2fc417eadff8c0519aae24d1736853badcc20492ab810a7e37d45d58c304850c1e905cfb9d1ee3263f0e0914a40720a3d578fb2e46fda45688aa45ededf189995db9094a2936b3ab467938ca94948d166b2b3b56469578f1c3b78e870315240328a53b8c80d3ac7fc7aba28ce967dc3a645120ac399bca850fb1c17f600092870511693dfe9d8511f5f907c824b7931bf848a22546b249eb855f4a5ca9bcd73567bf0c8d1c37bf88f1d3a2a40d289525af18a71b7c684b0e4c786603229f9f18384139baac7f82892a1a3c78f1e3f4836717fa5c7d1fa6ac2d11ac4f77c8aa9123381eabe57d5927e723d98b84d54669fcd5cc274b25d4bf4d95941d5250d163795c06b2db9a59a8e759812fba7553eb7ec21c56303c9241af7d129c5b83d224c12499c64d3c98b9f09912549241e996f84e8654d174e1248b8572a84dcd95349a61fb19d6bae4d6dd7b7391247346bc23d5fb855cfa146203ae52c95e2725eab18f1d7ede9553d2d9582248b40c5f8fa235f4daaac887334fb7992af0ba74cc43934c694e43756d00a115e34992de6d11f22cb39fdce694f3b326e884474ee68e962a6ad18cf3490430c9242bc392b085d9b2fae29d5c035d0c369c0a303868410ad8bd6c79862acfc7110a78dd7519f524cf29f1c93c98f1d3a788420052482485efe132d4b9104e29bf18c9553e8ce584900d15b06b931def26d12fa4337bf173322e3778e1f7a931b4d75e31d3c6504250802491f922563be4ef3cf416b4220e1c39a938f0cea83c6ec9140b2073688c8c698c21c6590d1a3c404247a78df3a0715a5935f1275cb80240f68fd3d8b175486d70f091e6acf1cbb0ed36959b943a1bc72c9feb9270bed50e8cb362ff515b71c923af031bbdb9ea7d89d36123a14c6764b54d37ad3453287b56d3c564e2342ae4e22072cf37aca799831ad91c4e1ca292e76e7ae2827091c4edf7239bb9ef3e60fc91b0a3a42667ecca6663a6e70eb54999bd8d89b3f6de0b73af77105123628efa12dafe7fffa202790ac01d5943daf2fe79c1f82f10312356832e3c13be42290a4414b9aafd4099d3fa64c8206de43988e7249d48a7906af54ec86d3a73267c70c8cbedcf5f3b875a92e435a453b7ef4c5568749c8c0b6788698d3fbb08ce1fd2f9dd182fc7a4c9388210b21b629e7bef8250ac339bf5494a9a867db0143794153cd08ef0d36927ca1f02ce279a4a8f9ee48bca0884fa63648b50b9ae99f1375d3119a4102122e20d4560c2ae9a89bf4df425294ca559e4ad97222d14295dee3b1eb4fe8fa3e409285d455a9a592a61090604133afb3a44eaa77a9245760e35758cab9baf5345628bd3ed7774eb6be7355154c2a871935273bc61f49a8f09fd2a92bab9f95c22453b094523532c596ca7f4bc1b5b3ac591745812f657b6284100b3a143e992e736c8b8c9e26c913eccd3957d69375e2da239038a1df5377cb23f5f582489a70dcd8b64fa6ea21b338206102a2df996e6ebba53bc912cef698622afc4ad84fe87cc1fe4eff4b2449406a4ead8a6e99df4b244840547d8c3cbd919ad611cc72a1e2bd436cb9586280223182ab27ae6495a757ef2445b84e636aa8ff74256a1e2444c083a73bd1f39df3834886b0c64ce6dab976231221205478ee9f2a1ba5bd314882700c1976b3a2a9ef13f7200102772ac4632ea635ff078fec6f67d1ead81f890ffcd4d1cc4c63d762f7a058a5e4c618f2deea22e1815922838b8cf1828b7a17eb06613ac62a757130eb56ef334fb33d175e5c565505d1082ecc77d73452e4b750446fa61e2d2ae7b6d8e27061c293c6ee69b4166bb62fff20263ccfa64599ba943c7d1694fc67818bbaa9189792c57139b5859031e39b128b32f6edc98b225824b7b2e773a5dc2cfe2bdc1032a22cf8dab5c915a9a02cc6d4156fc5b79bc43c7c523977cb8ab67316fd96e73bb55e45a5836d68089954a8ae0acfd266766c8d7551ebc1482a92d958b7967d97ef840a3f2fc7d2d162b890a1198c9ca2704d613abd678a520a27738a0a1b4e588a74e3a5d4ea9bd37d8a1489aca4c3a912ef96fb51202be6ceb0dc7974cda23066bd94719609855be6d9435f338a3681221561e7639bfda299188c7cc22a55156ee3317d476130e209f6647d2ead2f5a679dc832e6bd7d335e5c9d1367d2e9b7f483c919e126dcbf14372a4e2cc77644138d1cfd5173664dd1cf914cf875319d491921e7b323984868bde89e6aa76bfbd8121b8c5ca22e15a6dae25957ca9638ce2fa78e29bcfd4afca554f9eca73c42894a544ea99753f28e9231320945a95c6f32a697af4712a94d9e73c9bad6a69848189ed2666773485c2a7925912e3ee20e2a67b1ceb5c4788ee8d2faf5a6d2222d2795e4d051c6e6f03272e448c04823aa94be2ac5d2733985633c8e30c20e9a5f5e7a1743ec9233b288e44d89ce111fe24ea964321183470708e06309a0238ad03fab559de713f2ca1231c4e0d18132787c60321183c7180e1849c47b61479312eba2af1d41c495749e7d6716bd55fb1839049fd773fcaff83129a711439cf3773f8b8c65bba692c9a402238528271b31f7f9545912219ab9d076fd969141983db3ca56ee0882bf51e31ed62acc538148478f392f670e97a348c6170905238038ce4717119af29338ff908f927a1a3666d2f819f143de1e74c9cdbf51f51be94362bb6a1f83f813653a63840f5c895a1da519d90366258427cbe3295c0c0946f470a89c0bcb5195fc10638777a0062379f04c8caece67f93e0ae0010b3ad7a6a989ce4e2677486b763acb2235097df0d0e163c40e294b32376c9c17d7eb506b123f4d29362ea974c0b37bb4ceeb1e75790eeccefde90b3a2372c04f4307e5d9259ad22371304589c6ac7bf2f56fc1081c12b15ce777fa8dd9a85490420261240e8683c150200c048321fd4a00631208003854240c8663d1704c59b71f1400004a2e20504e26242c1812221888c3e1604018088542c13018100a8503a250582810d35c12e5036b4e1c78ce69932d132ac87f376c0a7c209a310af2c5da4b01719a7f77bbeecf40b83a11003077a21b8e286ca69b912ada660932ec00b973d7ca34aa109480a9304f34a8e233f879a150b7c7a19aaab013d05d6c6f5aabe031cbc9e8aed49704377f36b64211a95952f12d2da02a0607a140c34f1820783a98a4b36f44710ac172f37ed97c17d0e98a379442f309f8d0a0a4264a38f9667c0caec6f4db33297c1048eb05608e2610b7968de8b394666c8666f83fcdaa514d5f1fd9d66652278c5688843dfd590baf611c055b20399ee232b1ee02d8e5ca8d2147214f0bc35e042f0868a2c34cabe1c41e6638ccb04e6ba3b433822ee34d34d49e7e7e36d8b5e8b99ecc208c7f6cc2c68129d7c4058bb5bd0ecfc3c0fd886ac8ecf8729a06785670268031670ac6299cca909978d92198b035e6c85f4a8d40260ec7d5d999a6b9725e63bfc5c5d5cd96c415a8b1f2dfe169d5ba847c82f4b8fb26b56879d7f639117e0bf134d0773e33ecdb79c97f5ed7fd8c566265604d23c1e97678ca6b3742d94aa15944c2cda5bbc35d07da73ccbad33361ab7de894ad11e5aa476f39b9d79206ff5175e8dcf81938c52aa495f05a1d9bae28c15534ca96eb1f07206ca49079de830d3d66c0484533427eb3defeb55a5d9431a9fba558aa0124ebfb3a48a728e93c5d421f837f5d04595ab747b6ee7860994f1a497ee5a0512ecc0780e90c9dcf3db3cf8115112060055ec5e4a9f9e96c3a8b6d674f20895cc57121831e58ed7648c96d73b3565847fc56ee08af2a44562929b70b46816d768a550eeb6d4cccdd7c482696cb3b088b6672234b428ac14fc9083da71a0b02dffe3c4d7ba9318ac6e2dee64eec052b7a76ac085e64f5f72db268c491c922328b602ad105086478d86a1a3a7896d219173b338e2710e28064a4a8dbd9ee0732d962674e7aab7041ae42d67091930c820fee3db928f6038ae4ae834b415e074a93ea6bf6c28f44d846a34ef3671fabf37287ba6ddecadd3ee4437ae0f86bf653c1c3c994e2621c48848097f5a448c9561daf6a283b67318ac6124d7740647099503374f612322731e3835d524cb9025a950970f45245c26f5fe53b09d0716b7d8b89633bcbf8e21f71636da48f56dfa876e493994054ff0a6a727fb2c2c0b84933bb2f3396b6a0882e3e6979e6df810f93a1d3a3a04656c0dc8ed9eeba61c69266490ae69508342c01f14632d3a96a133fc8e35b87249701a4998157eda678d4fae8ac089f3c37036c7dd726ce480349363d41b0d013424917139cc641abba0ee938ecfa7ed2e2b92c6084cf4d2be71caac0adc6636c5155edd6b546a9a992a4514a515e60a00522b78ae5e7b63339f8c61d2eeaa5369da09bbb7838b00d010d579119c9e32f9b0486396f9466d21821835341c185629bec68d3d7c49f3dc17974bf944073c017ac5d2d2b8d68b2647020c1d8e294b47dd0e6abd83efe96f754f5ef78121551fc6bbe7aae5b98bd05ce7ca57de446b30838c03ee0863457ba0740d71d94c0ed40a55cba706473111585407c46ad5743f43946ae5c805a28c36b57667fa5a50a15a9c2e7f725e40e3c7e07a7f871fa5f7073e9cc9ea0c6f0802770643ab1a8672c79572a8731bfd317f6a3f91fc38f74c1afa91786bd5298a1e3b9d37729e5b6826d9df4fdfef811c1228487406369a524a86fce3af67069efa1569f2e129829c74f8c9ada05824621a08f5ef295be29c984d81aad01921ea056399500fdcd8322c428c4a10b39b16e253946037d1cef9706cb5acb9206fe87e7882e26da60e382227447c334072d974ae8e2ebaf71f377360febf2acdf70c2486680504d4a1023523e6426a469f50a67680e7ed2ecc7d7e5002ff27e6eb46028ef56f937886ba1f71f60b06b207565040d3e0f71e258d68b081c0da901eb0624b55212d0c891e2d672c103a2baf64adc6af391ee119d122ae6a04eb0c34dca983ae4778ef41cfb40e1c49730d41f40063328edd2168de7e88d1e2e4a86253ddee531cf3e2db554f8fea221989e0e5ad834b3cb7e8e7e7b8d4ebba5ef503e70dc832a3b2da6b628ee47bc659ce847bd7b37778623143074009efbd83b2a0bc40f9e3c94760fc63961cdc87a6ecea255d17d86b260e7f90ac03df5886b7d7bab32889826dd2532a7e0f7f4a5f51f962b46894d52cfbee68caf350cb8392bdc345d9a1a77e2c9fb0b57d86442d6628744dcb676f319966ac26d2bf14adc3085874bfb812e1a5aa2f19077dcfe44bac7956468fd80e670856c59db5c7b035b29e3dd0773d70d0a6214aa2384290a58dd311c3d3f8a5f502e58d42a83ce0f3017e10177c8717f08d2c39bb78fd057241f1400d19b83cffd5ed7765f32ba64db4a748b10f0cfce7329e5e03bf3cd4ce9c50286d30e77f38770f2cd06a8d902561755374aadefe2fe4b9e834612010fb3d9218c2dd9e1fc39d663a72eb210065567638d76a14adee0557b751ef0eb3b45a69d0bf1b40fad4fedb8ed090d8e4e826134f66f1c0238434a8090417870d765577fec5f048494f1e9e4097222f640da076d5e047e6e04ac9b40b80106b9cb53ed9d24fd8aab4f6528225641ef16bd0b2e78c7734b7fe9dc978b08b3324af0b0b18030b6b500ed69dea45ecf007ed3695d6a12195cf43735e9513d5830894ba161805c03182736c907493996510ebfa38e2afaa82a1727dcdf78a3db7a52a20bdfd3ae791ea357de998699410df62a32352b57161460ab5cf7c7688b2d760c41b71442a70627e40aee87869650b873b5c1f2e88084e8a79ba7e2bc0a8195e4117dd95e607a91fc6c637e27d015c7a85a80a7bdaf2b41f4a2284fca1a9156cc4907cbbc6c46ae38eba1c8c540f9bd15c767ca994a2fd09318d029625d4cbd9ff27f442ff70c8dfaac3793388c87e09ea48bc09a4e9bdad72f98712031c1d5b06d7cf885720904023ce04f4c2f1dd9e6f87a5c5e4749dd4b9ec264608e5735fc818c1da042f9195dd7caece35a8aa55b9d33e31119860c63a801228f0fc29b8a9d6aaea2615b393fd06bd0589889c81302e216a28e0912cc2fa27ebaa51f64467d9e3f2a9c1411d72745941dcdc367f519a3fc36034e47cc9d5492c278ffbb27439316d4d499d9971577e3ee1496c62179a1fd5612a9312f17349111a9742c46c077337de9d55c42c60473f118c4382776066fd51ca32957a0e693f84d4ad1ae225e2d31f2aff5e057d34999d59307928139b0f313143eb1606fab7437dfc795e63d6f3d2e0863be99a00ccc14e47bc880bf945fc8b6ee86240546e8e20f7ada005312d8a08a32402a3099dc48005b04ebd0350410f42b77daaa56391f9578c851be0f2683b43c0718770e5f2953bf4db7472985318e3a431e04e5bfca6e84490cac794fc1241a882cbb33a3d4d26739ce1f71ba8d8d56e7326e8cfa06f438c49d7a5c77529d24228428bc90cd615d316d069671ccf08c9082988711dbffce6a63a752f81dfb3632c08a486012ae2e0ba16312104e5b494c2199f22d45e3c0821519724cb68c18deec3e2c1d4bce31777e918acae67030084f1eae512c97a5f3822067b7e719f9fb2dc7c671493dcb43ffdb2145a023fcd961cc69c228bc0006281284120ee0ef59b22f8487dedc948b4923017625ee71c204b0b21cba4cd2c8b45f762d0ef6ab970fc800230cd34c766bcb9d74b8c5ec0851d98a5ec6cf620af54c871454eabe43289c1678f6b5d14a210541005d530b5a8b618e7d3d8e3475bf6e30276b4c79e8a216becd9c28f2fa42aace686c11667580bcfece921be0b4018e2f8482334438aa06737e68390d4a4fd2d98d06d7ebe76476262134902774f3cd2b86b2a02a574b85584d4144575b15abd89484d4414013ea855a66a574cefa2904ca42b6bc03af42e1fca042a20f27a6786c3a26900be509d1036057de7c678260e21e45465be19252ff7c51d25cc6f0c1ecfb51d7fecb45ef00114f2df730fd36561ea68b6a491bab9a48aad26461c82fe90296a42ced524abd5139ff7981e55983c4c4803da67ae7c31269ac4fd6fdbe7783db1bc66f89137c16d843e85a738b59666a3166c0594d7119bc25f895078ac08cf50c5c2cd0305d37a0912ec683d05181b91a86b148565dcbc160b15eeda31458e3ecb314d1a6939255981f2335be6927b73c937161576344f8fa0280db8d60f71270167a120873c80da051ea40afd078ee29023534696881e25508b7f7e3474f31f04054a338d3b26db5e9dc415dfab0787445ded7c903a564df78ddd24152fe6e8ad4e01db8e717fa99abafbb29233371b16f7351b080b6705962aba6af20152a1408fb108b66d83fab7abb4fb81e657745afe62c8964f08e19e0b7242903b5eb2c085ff8e03a7953370f34bd6b63c9ed999889afaa02460858988dbbadadb8b776f938720d0cada19348e1d0567303030eead4dbce4ab899ad5d03c5585c4647bd3d72a22ed7a3fb5e30a570462f1a3f9cbca0d65d63442e2068bd0db3873f00b1f0c9b1a2b074400c505692f761a62d667fd7d0a9aac345ac4cfced8664d64db5406a50f06dba1298d03708898d20728208a220fb036f31f609502042220600d9dc18768f309098b02c864bd72874ca841e93fee0fec2620c816145cb19e927290894f0f03b7a71f2bf15add5c93a9de4b71fad248c66bbd30db2ae99710c9e97252744d9a634d0610ae09f5bc8ec31f92e7693e8a272928fdecf34218c9544772a0636fb0818f9d95325d92d8effa1e8b22c58b3eb345b100992634b606942f08665ccf1a2a9a2e06f92fb858d055a932003cd9e154d1e9fbf56d5dade9042954c75460d6547e65a470ea1151ddb21a54d4594b3f5453571d8b83b7c1871de7c72255536ce41a98c46fa615d28ab6fb7f50c27ba8ee56662587ddd46810669bcd2cb8d271769295ecd8f650609e79ea4788ab28a078a2fe477e0b864b87bf366c8975215a29a669b6d0f40e899b50912f8b76b9d88662deeeaf4be0baf760621546927b2c0d25fea91e5b61417d10c6a3534fb5a60d8950f8c6d2d66dcee84b9452fbc80bfb5c2ed2b59a8b399d27b4dac4e54778d339c158a03dc48a9e34793046e3e37f40a9a98c426085c12049264e847b5c6f2323275ce1489010165fe223c96115140352403ea5eca2e48ad76664aca547b4b9b4bb14c9099e8434f5a3510b14e602d655fb27415c4e901da09dfe039c0f363b4590b1b78f24e557dce7ebc184bcbb47e9ac58d9666c8290484e9575f3b8ab3f31dd22cf753ebfdf442c89e34507893614b3bb07299b927ee03b2da468c441c351d40bfce8c42402604360c49994ce2958b031c14496bdd1a50aaaf02ffb49a3daf9ed9551e5d59004a2e4d37a8f6bb20625c693e88e959749c169f68db8277ccec9a514c12b1c3f91a3e2a43a72f52359a3b2f2fee09aedd29dccf6db5523e21299bdce2f293ab6cd48a1540d99100655d1601926bd8e8fe68c38e50c1b77882736a5156e68f74b077573e64b262b5eda1d5ae9f4550738d4f37477e6dbe3fae722501d6f83cda1cc456201644d0deea02fc86f4068a15cd3ca95a805aa9a8108b8cf3292bc72f28f4958731653a2006c90678bc86bf8f6065a648185ce8b5dd4f46993cb6783e5893a9c3e92cd24efa4b4e2c5fea510e756b4f8cc7d0a4e59c1413eb7037b70372f2c3358077fd9b3d9a125540f9082b53d885fa50ba48eddbadc6173b44b5fe51d5532e31ff04c6289f672b2b1bd9e9bed4a526406a0be99bad1d71a1d0b71d66169c835a3747e0479ae9d8c7944ea714dc724f71e6ca6118b7711f0ea1d14e14822e900eb577c7182823c7ab9e504fd1e12ca70e70c1341a6f6180ab8a3321ff7ab93976014af49352230862a94df25bebd623c4c32fddc652f40281b21d0a1d2238cfcb59dfca35cbaf7de910ea3fbe9db14271dca75c91ada22b8284cf1cf4668f05ec6697b8dc2e57d3c069db3865f3d482255a6881c06842d92111881e933f5fb443b402f0b92753310e81bec7f9dc374ad4671c0cd51aac3aef43fe05cd751cdcb411620c88b1e2458d71bc3ea874c853e42fdf436e3eb92b9d999fbf78a5f4155bcd6c2b506f97027e24aa80dc7b04fab6370c16ea5e18540b12e9868eb9f212a560d83b1bacaf6681f8081a8572bf77ecbba782357f2f7cdd07a5295fb423ac3b8ba3759d68e290bf6a8abd2f765b5a3c68ac2d58d6fb02235b1b2a82aea8f6b57b2b68b921e9212e1aeed56c7e1e263afb00ebd696a9030128ecb21ec0487bad873da1d10ff35ccbf5cd49a165023c18f8df1440a09fccc6be0efb9db4df1b580cab7dba59811b147c45ac5f898fabf9fa66d043b860df942d36ac7d83592a51384705167bd73b106eb6b355a5d8c50ca45ab65bab13dd1900f3e2a3dacf10eb25be48d6f8653c48a22ff2e813448532ecff188108b25ec8e3fa0b001cdf7e0c622474b33e45d307c9c9fd9942c03d7f774a54e3c3fd5f70a4b7f437706fb6c15b2fff38c0b59936e7f1320b833072823a1bd02ad3c34cd04d012fd6f716af2c290b945f6dd528caa7f70d5111e43ff2e6e7de08eb5fff682d9056f1f6c7a74b1116262d3c837f14e4e54c383c71f0d18b0df1dc5ff77fc85ba22643595e4af71d1e90d75f25ffffda1212941b734b8c3d910f846d95da8145630df6c374610938cff354c098e126037267c5384026da10c8e7cb7b2300f72fc46e66ef4f1638972a5462c33b4ea2b16426ca5a4482c8bf5d7b89dfaf3bd790eaa0707aff17225adfdb2c62a8f2c9fda242b9722a31f7d37897e4363a47939942ebfdfb239a341994c68d0ad792f29a280325249d3d00020de2668e8e482689fe80e8c8483bb29a292321ce725964f6c1b2654d286ce280d23d88e1ca933610efbf5bc4a981d12b1f0605a433d97291ca7a9b4be2b151cdebef5dfb649175da8945370c31133c8931fe018e6a42a575b0883d36f5101aebc0b9d022f71b19561f5af5d3422592d0c2b8c2e11935e01056ae90ff455d44c5f46a4053854aa85394b07ee53d0ef1d02ad0d569a754ee636282437376ce2745d3eda1c7f5d9774a8f50107218a54dc815c372a483c976cab057d50987832a14afb0e988de437c39ee53b720044aec89de5412d05877c49877a3070a6aeb46423ea242b7a0cd229dc752df20967810eddac69c1d82e41fa38624840e9bcb1d9f39b4d4c3039cfe7aa30464211d0825ca8ebaf15a00efecebdf0074523b13202b7a9399004f5ae6939c89dc98bbe519013de305967b3d17b353c4ab93e8c1d14fdf5cd663cbe528f0fafa73d9c7ea363b531e40c1da8b4b69f40ca49bf96fe44e623cc05dc6478aab04ad9caaf687d2c81a5204af9acef6891c82beb88619b62dec9fc27162a3c81f831ac23d84b1d941c3dc3fd0640bcda1cdf877e4ac99272d58b6364dfaa64993b1496e5a8285c86bb1903dbdbc2f1d4b298871a0b3f35a77d86c451e2ee413a966fe0b62ff2848731200dc89a72957879d2ad5d2890345c54395496d61e2bb5a5649ac826457cd4412c277603d093e7802a4f483176f07ec86e36162fb725bed3c9a817f635b08af9f11b233b2aff27e78426ff3f3be311c120c2a8de2a434e7c2a70a83c19c3801d23691af51cb380bf964a99235b22fbcfa6e7bde36a6435215e939cf5bb32e0caa02cc016e138f7fc67d43d87cc0a582dc563136d50e25f464f235223cd797640f91c15e6d39c6b760e0c677dccf4678ca5c6c1b47efc9da8d8c02e0eb9ad8f429dbebd240c7340f02ccfd936df0ac26288c70633f19a115a0399dc99d41f937338da3ffa640f30c4957ba0d953a1c21e63d71a893ab4d7d94d85044039f6dfc8667bfe21d20481beab89a7aad43222b06083b07c9e5071de4489119d67eb51f887da0ae1e95807d55277ef6ad1004838395e25b824b760f0bce27b2c106a0ab8f22a5eafeed0033bf3550304b2e1f4c5d9e88aab7e9286286141953eb8af3f375acf284f568d268fc9822d2a34fca8f8704523edda8707bcdfb677dde6e7accbd0ce4325acd34ebcb9ae8c6e5358641ca6e628ddb989700469b695ab73eb6f636e3df0aca4eb981f63a3090e78dbefaab20c86e7edcecafea2207ea95b89def7ee933d1fee36d9691c129fce04d138c34735e3419529b4beb103b0d11a6295a2baa7dad2306d1137d01b01a76c3e46db0bf4e65ea33ee8b6a361ece640edf420e77268cf5985e4a3f0e37be0a6426055d9c841c38a8a0c0e8e4f6939b3631d7400d8697d3a4e8d480722d93e06433148c08fbed825215b052296727f6a119890f9663ebf1553a800e36550bd1252170def7286cb75c2545a7b7798001931ef1e2f1da7e1b1290b6c9c6a1b3ba629ee88fda62b2a908f6900b5f85400118e9e843da5323f33e1f1aaac613edf32ccc2bc2292712eeaf27bac41276fe540e5a35f23d6bd8f55c249824c7d93eb14dc70d7dc4bc1fcaaf587599082438379c66d4cfa9162064eb3e61e2658f2ea332315b35e965d505f5bcd746ca4356f5a22312eadf806f21edb43dcadecbf1300faadd9d8059151ea5d72f3ee928a086b958a2c81f11c23f6ff817ab13c354f7253e92f40a0bb257210bf611562a83a8d5e133491be89fa2aa4a45c859139fbf4da8da12abc25c9df28a8804448f1580758d46ad8b4b1a57ea098a4e44b4e972886adafaa298382279893a896e743be695dd2b1a86befbeb91a8313fcdcfecfcc9165b6bba316a36f0107e266a3d84a6a7a6aa0fb27f1d07ae76e6913cbd7bf1b8b089ba250cfc8a5e8012de97253f5f641720100af0e30f3583b19f08246a7cb14a91077690a611474b60544213611ce17f7cffdeee430d6f9972bfaf4ad7ca85ae17cb5bc902686cb1a477e8da74bfab77a9b52a9fd7c0bb78997498446e483dd4c49b1f9a2e400617e081d336fa0a44d88edea42ce860eb9096093090842b51b3a52fd94f6c7a35a4220502b766a37048fc92dfabb1d2eeeb5cebd3d54991e73e839bee98fa1409c956b9a03095940106a0a080a99a6144f8f51e1aa144cce6dc0818072cc456fd1c12983a3bea6a6cf9387d209636216fa0410e63391aa4d1030cca584d707e641f8f1bd3fe47a32e1f6c7265ab7c4ce57b4d127b751545929c0c6dfbd0892a7e9fd65b0530aa3106c88bb50a3325902a9372d5a2d70730d5aaec2beca57202710740a17b647be1819a4511088fc93e54daa4feb7d85ebfda293a1ad639f3d286d6fdd99843a729580a7f11118f59ae4f0982d8198b0a09163c22e19f30b496ae5a7087f8dd4bd5c38f8854128ca3a591cd6900cf0c3016c9b3fada9c4323ecc9456998966a49ed5c1701c0e2a43d64641d7b610a0f1ffd1a125f5e57456a4c5c7ce5fcd8491d199e18010a6a92419e6d0bb3691a8d6728b88d0f7472ba3795cc5358d3f3004af6c09874f47319bb269be65ff53c581860d9f4e6b7ee63fb0160c718d9502cff639a22a17cbbdf66e22441c076f52d061d88e70b438cda3274b8486a77aa8095b0eb08b9e3358bd9375bd6321dfec46a4141db553342e6925b6a6d8ebd13265d44b8a6fc321b1e7bc512c3f34ac0c9968dcedfd4c02330e5b92bcf65b9dc97ccd5b2b9732b9d4bc54299e82bdd236f33365076081813190668d362beb0a1b97376454525ca7e0fdbd0eb8418589c4c30d090fe6178130f00c4e1814c541150bbac070e356e80b1f92e352939ae2f8233d09641e4bc5788b151b51d10fb3788cd264d9cae339694520df5d5cce20044b23e8e770bd8a26a14988c9d4fedb996d06d1c8641291983a0edd5b9976c7d4567072157e69a053a393ed5decc757e476a2b63b0dd3e6966cdd5668da96cc125d70f67ee3834c12af6570c63791f9b308831b62946950682b61ae8774775ee9bcbff29f83ab29dbb367d5dba784416234c9b2c5c355b46bd4576af64fb4dde847c52a74b81f452843918bfe4156a4995428a057420127ee16026fa36b63210d8d7f9eecee9e8d1ec8bfca3a6d484bf02e8e1b344ff5bea4cd21b2d1764d7bd23867bc84220d511a6454bcd47f1f6460e495667a53cf38689cac122eef8fa1a5ed137e0238d7b2529f972278a170e2842d3e1dffcd1ada46739330cb3b5d708bf7dd9958dfb9f7d78d98421141f2ae9f4357c719387955ed5e112c5bad10e59162c2ce1b82d18679633bc93b52ee704dea877cfd6e6599cbeac6c9da9656c9cf8d19027fbe315bb25fab9e7e531faa19068dbf4783cd6979f01eba5e64e01e1f1706d0d433b4b822f6628ce990860749231f734063c19c2cea8e705df0b09ee456b9d6bac88146b17927242a0e86caf60454258e550aa910d24d32c15568a58a568e6ca9f4111027bdf643186f8c22f01fa1f5c21369de416e967cf74ef0d8174642d0c1decb67e0c7552a145a627b12f5c362851bda0e6544f3a7a2bf9970128fb77cae1a8bf76d370c1b717536cb77aea61a78cd265a90bd3999b01fd600df3e2478a60a1079231b41099b978ff63a4b4b4ed3a33f1fe701a01e0f7fc22caca572c9944e777267dfa2538494e41bbb7c99557053b4eef4138f0f8346549d711fdf4b9686837d4433aa203a63b7de77aa117b604e47eb24cacdbc39fdcb9372c01c1ea4e783148b3b9f1c57bf3d0b6c39a4ea0fa4d735eaf82cb44017840e04f51efc279a6bf80acc20994a4a80703fa716abf9c8c73674634d9a83226c8deef4917c49c125d7ff1b4e72788d28e7b189db35d8ceaff53a06d80d881fc71206f957d8fb5176f99b5ed1b82e2c121af1ed28bac11651778b93f923eafb218ab80893ee84b0fc65af4b425bf4111e2d47815f0985540573ace98f336bb6d53d7cc7639ae3fc6d4563eca76be5ec7372b7db7e3bd2d569b63da12b3adb86d8bc7e6986f89db16b1b35d32c21e11f36eabf563fb650760e3436ea3e1561a6fa0d106bdb6a4c7d604ba7409f69a4e741c22180f929717a768509aac3d3c6921de997dee84cbc52b52b3cabd762af21ea44482920787cb958b4aa896848f2a57bdd223e017c38ce5d90311f790c89c8d77a811de353af47abcd1c3580bc589893398285400040827b7450a64f594c4aa9f00ef5413c4f135412c6d569f32658c8a612c4ddeba45a8585a3be91a9ce6ff887d41227f8b4374bae93eaab36520a22a994b2e907f93b6563915d368050d9701fe2ae8a67dab25584c7a7a2410ae86244742b07ac0cb5567f1a890d4851fc512cb17b029d92821552405ee57d522133fb115002c6a31d16d98df08c8c7e1c638b999865701eefc45386e6e84aad928c5ba4fceb9c522adb3aa786acacc4a5f2155041f88855d6e78095084f7e8fcdfb422c5dc8eb6c715b925eb3160c169268231c79d74f2ae782eec8f1793e3ad0c8cf9392b4fbebd424405d20ea1df566ff1c455b583c02bb25d3149d3c46cd815a3c4034080ef48f3645685e212a0569b613fc743cc103c18f81b5cc4a425aaf68e52beea0d850c3ed3b99d9bddca346c7959adc8a78e4fc5fa1e85750d55a2d4166d522c55454ef478bd4e52b9e460329b2a88c24f52bc9a47db8b50d3f984404c0b57d69802a08d078b751db42eda12bdb3adb605749345a3d5a9b840d90f44a341cd5101a4a5e0eb7a28324011c22c5431746f56fa71345da2ab3983d916a0600c4f7c4a7234fa064bf3baf3df58a1c6909a64906dc4b024956c4caf858d6b8686770d03e3093e46d30c2f7183403b2f56848b99d80a4fb8c5b7194303f17c1aed102c4ab177ecc1603a4d9352048be88ccef980843f4b4e7b662157f0669dcd4c1a4eeb8868ba361ee3a9fa8db6c36043caf13b5055bcb1a82be8666e5b913454f1802798d858b9639a3a176518eed49843062fa17b727c4232b505ccdca69baf93e983b591ba062bb032684f70adcc1d23571cfc03dee80fa135be2bcc042411b30855d007e1ca03db3e2e1fa0acbdf624654c7adfe5c3798ac4230e55015186c821384221c55404cf14e119c232e0692a341d608cb9b822d190318e81d706c5693cc11724b73cf25b44141c03e585134cb0c58ed374e94840ad11ddf84a4c6b9067ee87f28706ddebdc1ea8b8e231ee41eb61f0dc5f8881c2b9a0b3b61aba614f71b5c0a714ab6e0f591ebeec0b6f888ca29186f0a161b97f7fb3fa3a47aed4a316ff748081cc726bd5508a02417d08686ea92b1b42c9c51e780a8fc302822f204747f28781f90f2a6242ccba76722b0780a0e80d5245ac6ba9d67f698cf64229ca2aeb0ef84d30894caba7e31151f41ad659b3d937f60aa7c01b0ae23e0be74ac5716423b1bcea6d49233ef4b21e1c57003c14d81d69869b302eea2cc12753fff99d9a830ae3057f174e1ad67ed846fd3537243704a18720d14310de10e47b00901b10e840830deea2d7a6cd21e7dae4c8256d81deb770c396d4035b1287229c2f617017dcd0428f5da2d72dbc6dcbf7185b8840cbc367170ae7612f549275444393e3384249de2d39185be8929100e33c13059583402cbe1007612fa7228133e08775e7a9542ef030f735d536854c7fb2c437267eac39f6cf501da9065e643acd45a78e2cde6a144d8a6ce329a427323d894d5fa8b050fab9f0e48a407e64989f4e54edbc6cbac586281527dbe3b2309d54d03cfa03f304dae06323fd42d45661b04c87b009a48fcdc547b6ad0bd128f1e35ff61a37080f8ee7266bbe9be3dbd747c569b6b3163c5a87d80b97cc37580e27c4cbc83e446ed8d7f8a24128e81d51ecb3d6759c004ee99b1a0a457aa70c169a2d2b6c33094121a1c7e691328ec15837879a1444ac70317a741992a1463635ed25413e1c59d089379cf8bac2ae027d5f1a7bf9d8182e4788121bf51d335a0f316aa230e8d6833a800f858fc1e46202f283faa8bce4e7b363dca4e470551e750a2a9f7004224f20312a2c9cc6409a84b79e1287abd5f40556095aa209c49ea94121a8a6a607256143ea53335a5026de03f2dfdce0bb3d7869e41088362b10c50f926451088d3a478a4a1416026d6b0faa64660e299c1af7155cbcfb48c1bc32657a13353d1a44309298bdd0bdbe4594cc9f4c6b32b644a8e2d77d13b9b82880721ae377728e0aa02c2b8d1dde84388b4ddb69647ea81b246a444324ec010fe00b9177565b929b593b611b5e080bf9f4c890d807a48c9b4aae29322ba2507c6998506d7512e4549fadaa43178891d31ae1c5ee68cd7cf0b284fa94705b1fa81bb0b04219a1ab666da1f36955cec08de77bd34a0ebf21e4e4a7e585d3b6021d928130d85ca0a03b94e60675a491d2c091bd676ab93adab187a8fbe01f01d1e42a5c7b6ee5ad9b83019d9cacc0975b24dfd1dc30c684fee3207ed279b6659288e70c88b826fb26e30fa4320c35e3c4c4ee8255a779f31ab408554f493576e15a32646066525fdb73c696f50c5dd8dcb63305169ac6989186ec1e380423fc68ec3def027bc6959520a5d7562db44ab27981af09b65bcc0f5df682915ed6bd54b7cdc831db25e6ea6227de3209b71e2d52c40f45f59da53b12338558b4996e09a90544e7dae0749cc9e55dc5613091f77fcc7531ff7e3bbfa2887ab140a221af91e47cfe52ae3592b6e73d3a82919a092c5a4f8aa6af4a4814e2177ac6b215f9e87ebd7b6ae829c014b09c1ecdb048b7ee80f4d9730d74a63b79b23555ec448badbbf1727492b4bd54d5c6f0c64da5bd2ce20f19d006b4a67a60a31fcc51bd779ec65f4d7574513e4bda6c5e609cd7f80b30aab6fc2088094220a235bb19b72a9f059672f630430b340e53131605d769aaa456696d6dbd6183d17aa0e810a620c1a82dcac5021c071f56bd7b1b4c32f41cac8a87a32eec302b1c9fef195cbf15725354839950651be878965f05f8531c4b79ba281ea31e44107741c8774cbd4b0363ead170f97b0ca5670fd04e5dc2ec24fed01fb08578ddd101d74630dd664576b874e53955a5540bb9682ab82ab9974b3ac170da51784b7e6e547463d30b8c1c24e00062e71e9213989851a219d2ba0dad3bbc644f1d091c7ecc3a46891c6a6172590c84f0c7c7eeca44539b30b768ca7c91db5ded047daa4d87e9083b2da1b20686c6ecd3e697d3c8fe20ca4128bdfafa6687fe8e2205ba215a2b60d7e35a563d974ddf931b886ef694cb00dc26bc631267745bf0d0979edb7fbc62c0f891e23f5756ecac74b5e5b495d09e2e8a0e3dc55b8c064fd32506584c48a049111309373951749e8976a67ac4dbb53c1d96527ff23213261c904a1222a166a3f5658a278861a26ab3a6ddbdace6c001822a51c9dfa576607186cfffa53e96d30dafe1863db6835751079ad83d68983139bc39a33175640aaa2eb3c26a31cb0c2721fa3b8d587591cc76378fb9eefaaea2ad3ba8bc4d9f767b100f16cb0a0af9251729f5bdd804c73130362163256c40bc04b98f9980f10d0ad690187978169cc66945c4733d25580d5d2746e0acfd92cdc797e8fb764a4f818579a6112a0cf320eb00136e09e3180a805cdacf2450adaa013a4f5b863240ae24c901033ccff33ccff33ccf9fe30ffd285aa1b58814692754efbbdbdc69574444686c18ad7badb552ec3bc06e4ef105eb0752084908a6ceb0dae897c4181be29b59abb29c936c312ec4db3f7b9279f22c1213a22ebbc854f9a8d30f42f13649d0ed7b5b5d10eec5132dcec91e533c1047c9878af7c9686940b4369b96b397e0eefec1d97ca7df7ba9214dfca0c79cc4309dd287b2549958b5b9964f3e646e166c7734e5bf3d18e24e8a59fc83eda787b4840faf6abb71ba240ffef9a447893faa568207fe04cd1f636e2d85923b985dd6a542c8a50a2576c04dd672ccf89c62be0ec97b4a27bd7438ad2f4e5438312e9d4362a9a4922489c9d923073fbbe48769f13c0e4cf9a69cda2c1c7a4b72b46be60de7dba8d9937a12c3c50d59fce4f292b216c336249914fe83493995860da6bf9a13a53db5776bf8c28967864a07570d09aa129b2459934a4b83dfdee3d5e17b215a34144f520bdb1b2ae59f010b3a91db26e969da0ce5c93165cbcaf6c93234255ad285980c674993ea7232862f9994eeb6173353319456f9cce438d9ab138674c3e479f9d3b819305c52166395d12f2817cda42fe9f2a245bd40c9bde7943e9b8a45bb40db7c9eb415e5c273d298db776c3f51b750c63c56795c4e484db580488e78fe09179fcfc2d1d2ce243984f7f458e073e96565a976e657f832a63496e40a8d692bb4dd9d46d52a75a8abc0a789e965a159254c052e8799fcd77493265338472cc75817b39f891412376dec3349f4ff350a4befa5f6ccde26a750d04f70d1b7546df1739e70dc28eee7abf2f1394e4836cd78e59e425c7318d0846ca673eef22455180f039860f2df4d52dc5462120f0396805caeda39398916c4c3002554e26b4c93a288a79f0149703af4448b644cfa0c408237e6aeb3d215a37e8ce3fbdef47498d8db189ac6932c543344d7c52889e50a954a88b1bbf4e7181b2bee1dc6a984af8d69d4d6174676266e496bee9009c65ed5ff39f226561418879897d0f727ef9d5fecfb5679d2e98be54a334637bde8d3a269495a9993185e1ce6394ebbb68bfc349370aee3972eba386f5844daf40975c9c59fc4cca1e49373d7878bdc3ae6552ae95cb95be8deb596c458dae2f8b1657f32637d95b5783de3df56d786ab92167bbccff6e599599c2b5f778cb924d94416e78c499caacd9237b1a0fcfc7e35873281c5922657f4e0bfa29b4a37adb52bd8da4ae1f2e5c5326945c24d9dbceea9e75a56a0f5f7df5b792cd555e8d61b2d53de49545594eb2fa68d6eb6c94c45a61296efc46e0d13155afe979cbe555537a7f03a9428677527ab31452667e84478540a19538a2e5a0cfe52498c7931a4c8edde324ba2b243330aa567b3d34251a8fb6bf277b61f37138a4fccfa396b984c33195030972b674be724e7ff1325b7cd9631aa99f59ea8e4b0f631446b8e7b27cce5b1cfe5841377dc0f26c635cd65b289b385c4a7fc6a8210372f3d3161decd44229292e92657e70e26d8d3d31855fed69d4b203def5d69d91b632ce19d6ca95b07cd26a51249feb7e61a0b25be8fb050d5cb98af4ca24b2f3b6927487b5724518e3bd3e94d4e29632512d49b7bfd94ad665620611a4fe539b2f28855cee495c898d2ade2084f63facaf723c3541ab14d470b2a69194fa83022cfb61c17dcbd737e1165b4f8f958d2ee6145a439fd491df5f11d27e2b3245cdc6fcd758c08f64415b1dc1119f12188977d338b275fb586a8adb3c3868a85d0c492da122b749e1409c185c9dacd17dff28283a8be36a6244e0995525010ac98e454cc1888838965933a35ba2a0404a6d71f647b3306ff0f4693bacd277a56ccfdb0eaf58512da4536dc87b523c773123f5825e1c3419398f435477a28d9435e5d115be92df8ab0732e50ecfb649eaf4e6a12c3fe175536a36493c14a6ed7ebab93b94c3e6a01932a8c5cdd9a11bcb7931878fc9cdd5e1efdd7a79910ea64a9e62aa5cf629bc39f4916a2e269820db9d1cbad1529ffad529ede270d2d0baadaa69327670a075a7bb3fd8795bf78693577d7b9996e7d4b921e9ec3b2ada5a53be0d9590de3b7a278ef86c404ed4c84bddd0cbd76096b013ff4cb06c92a861cdd992375a865b933424846e853b99f7fca2e1581b9e77e74bb2e8194c1a2dc48431e1d634431a7ac5648d1b5b2f56863405ed8889f7cc8b9181f1d43c7be9da2cc5c670928eb9c40afa2aa18981b03d29b5aca48fcec2509f44b7a974fb6f06863e6c300dd9fda0ff17cc521dc3faa40adf7be1f44d6d963e7cf5de85d3c4ce95c7bff6c35c40b3891d53c9646abc8563d7cf9574af59b116f23f31c9bdd3574bb2c054b47a87be717fb140878dfd1ad6397fbdc22649d9219fc7ab3d56a0532af1a478aa693a55d8c376fd86f5654a52a1ea5431896692183e660a27c1575634fc7c55a4a0a7485cca657f0ea3a08665895131c7550805a378544dd749aeb62770d9b7af72ade5b172025eb7be6262d6d1ab16d084ac3dd7b2cf4ae6550b60c2d3d1df659ec1dfaa052c01134aee760fb5d2522d400996e05df1c4abbe8d6a0149f83ed78d6d4671f31780044bcc132cee5afff4c7283b2a7c8e4a1e763786c9a4af2449ec183d1723d9f7dddfe6c4b31362bce1325f328cc5bb62d2a4d871af30fae4b9736f8977adc1e0434fac57aab59c030c326b2fb464058df317063d39bdc49c157f244f12e4a334bd48362b71deffc4185378c1db6b5b8ed52ecea431634aa5956e2305e8a24a6b1315a5935e450ac885b3716755733629e52504040417d57dd0784288e856c92d4ab1a46072761a0202620205d8828ecbf227c6140202720305d4c2b4ef39212020b4603d467a7c16ad4d422120202450c02c3e9d89de98c4acf91c59bc9fe339f3bc58ec9fd584e9e0b13d6c5898717284a5a5af687e0709eb130c31495656ae2e3de47082362a27da657334a1ff4e1b2f88ffb9f91c4c5073fe4b39650d796216031c4bb8b249972edf9b9e398712ca94ea0bb131337bc49184de325afb321572c3d330c33990b0abd768b8d734a7e1312c31858de61962f551c4188708cd9572922c5392530c338e49337ee19ed6d220420c722ef7ff530a9f2435a4069161fc26c9c53c17d5b57d061161a851e2d3874e52d19960b8622952b67732b6dd820830724f92c9a5cee9625c2f88fce2f774520aafad59e2490a22bee8844ba1679a482f92dbd8345927ecfc6a468417d6a5897c4f8e576622bb28d95c491d4a74617cd894219d04cdfd86870021920b638e6476dbfb5f8e70b19c70a92e9fb871466e917cd77ad67edb02cb4bd9b6cfd62249eabaf12b29945b660061cf88d062dfcb60d6a5b1779364b8a00242b89186191d88416416ee8ac7bee84c166539c924589c63f1c958da309632851823b040ed424cfd63abc9455e51fc1283e6a87593af882bfaa415539d65ce921a6985c9d286ce4939c6d81f6105111b675e35e579f94240408460c6dee0418d164456e1d59b87bd748ee3abe2f35c3126cd252757a93044c5fa3c27981cea244104156d2e592a7d2e1090c829fc7c8f9e72e2f57ebc820b444cd19449e9c5444a92d3a602915254ed3a1d532a420ac43fd3526bdc8c5f4546c19475476cea8aa72d228aab5e4a0cf76e32662414dd4649cfe07f041487fdcd97c2cd69b8fb13b7e6182649e6bcf92fc4136f8e693ffa7c96f3bd1376f7a76a1af3f00f27f6f09a394c9e0d93d2914d24e52907d1fc9252ee9a2809fa6a59736c3aa1cd8431ae73723c0fe3418c60e24f93a563c8aed514bfc41f43eed286978962db5817e4216209532a4bcd955f093ba309ad623b25dc7ce1e369acfaf7ce240e2d2659888824dad4671e47334aa60619a98844e29c9f72c61b39892acf38c30790702a8b9fe852961ddc1b0e041ed8f03384c0022d441e61ec6cfdefe61d91fac5deeb147e62d88d288bac54bc5ecef918234ed1f5763ad7bb592ab20893589d49f8541147c8dd892fad1e2f1f0202f2031d48001091443096aed73a8f88c89238265a8ebef5f9810e6a9041860b462087c82188ca5d2d3a96c1c237c4ed666b214c6ad52c0eda3b528874ed629fe6e95c7e42883fc727616353eda5060ecc284307bc37d2b84164106b8e1f7b890b8f9a0a82b2e9bcd15e0b010199412410979863d5b3c770974e0051084d61d2d4a5ede8bb8d1a36d6d3404306913fe09f3a4995632e3b49da0fd64c54123fdbb2e4491ffe0af12967b2a57f950f9d34279b091df53d5e640f48b595ecc7f2d8138be8c11c73ae9cafe82a97c9036632a5e9a3660537d240632378483de43ae5fa0d7372913bb47d6951626cbc3f493b1c7af94aaacb4941a40e05dd09f5edd80922742893c68ceed51513cd0a2273e84cce6e592a454bccb1e182881cb6d4db26f88c5459c8227128c66cc32de3ceb50d875af37b92eaade48fe91b4edf9b43758d7d98e6864349e2abfc4915d3c6226d48d29f8a214cbce3b611369c738a757e6fff745712226b50dbdc434c2e4df67c0808480d1beb831e744007ec211bd041440d97587f9fd9faa11f2f2392064e643f7eaa146ecc130202a282081acc3d1dad2fbb1a9133e82993f1c44227f76c6f740004646f780b226630b3478b39fa151229839b359bb5c4a49a36394286fd35e79fecfc47c6406ff9c7dc31b9f3783e1011c37147facc4eb6b12cd041240c957ca9a5ece44e4f6347c080e70b71b217693949c141e40b7a65590f6f35bfd5431e60112f98f2e56d57712998de85bc2461755e552e24f96e7293640b9566f397ff8c12d3e240440bc6bce95965afc26b269205b7ef44bc523ed79e43de6f38077c04112c3427e679d48db942497d2a5cedb582e1e5bd369887789b2255a853864ef1d2ab769aa95006b7bcbd511df354640a6645f3b496d1c39a1d91029eee77252d722d7322512809a95f5a9ba523cc328050c3cd28238940e1cba17de962ea24e530e409f67c968b784ea9ee469c50ba4ad74b494cf2be186982a9fe5296a85369331a610297a2d679ae9cc4898c1b0d48c3073b784064098ac70a9792d4b1da75253ceafb1a5b1bde7e26c1cacb1c2dc4c5041124ac9b926839e4fdc5d41fe31c56599a69632fa5c640cb3493651b53ad18038ae1e62839f889666f9819408ccb53747332492e6994020c1846d3f192dcecd59f2f8c5385989cf08fb37d30b2f1ce9cf3e59fd68181eb9d24f559695fffc235d1462cf794a7ac2fd4d89a551e6241dc5e78f272621f6b46a3bc38b33da879ea4ba8bbd846e44dce39af8b848d796f3fc9612ae67381d4458b7d32b997f2b838f34ff643b7d554fe165edcf954f198b1dcdba2d571d9247a1cb1ee6b619cf93729b4ce74f6b4384abcb7f82a753ffd2cac4c5ec2d4f4b2506c75c544b774f9c7a29cb14bdeced2ff715898e3344929e5dfdbfb156509995ebb2c5a885d61ea34665ad6aefa6905a7e13d98fa7a4c0d2b98555b9379b3922eabf8576c433fc5d91454c56523b7feb9546c6e7a927841e535e5a828d9fbc58fb21d2ce4a7d836c7cf307672dac84d5149e94c2cfaa5a084b3971413a27b278529aed372cc65f4f82892da2dba5d164541c692d02559921c0e851d2fb4c778d97562509462db3ee57ce2d53bbdb9b4eea827aaae97cc59bde64c3a41c6cfbae8ceacf37202135364fdf36b8b9b30dafc9cdfab5cee6842e9bfe4db71417332a19aaf099ff3790e13139dd0a953b83d21ec4b7c31b7f54c92e673c61255aa5849924a258a12739460b2347788e8d3d12641997ce249a2d3c42591247f9e2f5dd9311589bbc2a6da6c9704891a129fe79c64f98f58c72c4a54dd11849510dae94624a5f42e19c3a6a6668429fc56244a5e441e6332546647770c2b824be6995f19ea7be144709a3a49f27fac1c4446446df9c3e7877c880adb746e34c90e4e6c827537378db579f47230d0a109dde3ebe9491b621d99e8c0c4967dc358cefe253c393f9bb072d9ae5a4bdc7e5b7fdb76796a530953c593ee4f8612e62ee193601ef79f9549e0f7761e644a2a5f49547e9f63cd3d26fd446253cf0bebcd233b1e24b89452d8307f21f3f988a4f49725b9558ed84626c584ddce93a2462475f68ee55be960c4d6b94edeac93ee8f2fc2ef1c3919d3b746651451d0cb1a37ca759a551291247c5cfd450957bf21e28bbfabe31046e6abcf2a4b87210c8d295cf80f2b4912e28e4260d515e25aca724ad04607215efb7c8267bd90d13188ecbd3c4705f39acb9cb183ef10049a433f414720ba8a949eb9abda1f6760820e40dc157a266f43c752bce30f491ed4673b6713cba91fee781fb99ab50f56e9ea581ee949b774f0a1d38e4df1f7e3d2513aa3630fe475885d889472d0a1873ca849335cb552e72d477848923a4a10c9fb0ee5fc296d989322820e3bf07bf1772e98b8774e1d3c31e86f54b1bcac207da0830ed6e5e09af57acc33650ef5a539ad306fd919d3218724d1b2ed66f7002a74c4a198ee4ebc306f083ae090e698dbf2d4d23a75c71b0ade92e93cbfe855d5e1063398a806bbd45beb78d0d106364b6e09621634a66848071bd4b6e8dbb8f390f1afe14b6ac2c95c10d7935743712ff6e48fded9ecd360aabc19fb45375af66850d774c3c27892f4f43394b29bbcc9e4ac4e62dc0cc44613f3982c6aff7919fe2463215d244ed89c0c4731edd4b0961fff1e83dd166a723acd7ebec5c086959236ed7774b1c3c0cfe6fe8e26e6face60e06a2ccb43b5c74ef3170ef763eefe7ae15c5799c4da9049ee7017c819ff29d56ef50a73e12e6193c8b76f768eb7606a3f69eb272d559e6841ad4f2f9d56d509932c78a5b9f2e7ff5af2b1a08c5c89f56e6942bd5738780a4f76e35ac118efa827f72539c5adc22575da245b2c39a79e0a7c78b3f99b750a4ad5a630d9f3456d550aac6b5b12d1340a964c9698ffa5cb3814124f3bc99b642b0ff7138eee59cfb4a5e2983821133eac5c0a9bcb529a70c9f7f67bdb1775644299fb35d35ab4ef2ce1bdf5aefaedcbe01d257c7b279fb3e76bec49f0939c2967acb3030954892942fbd62eb3790c4c8e8d6e3de998348d419724e6db98b218c74bbb1a4feaccfa1b62a4edea95efd4a34bcc30f60d13db35cfe9a011061ecfde63c74b3072939245e2d349a9a400c35aafcfe059924969f9c5d131e65be7a4984af14597b155412b095142a517aba7f7bc64232f5e8bf9695312555cc65db81a6353b97c0ca9a22e083d312ddefd86493117fd5a5eabfa3cedf9c305dd596751d35b7c92f0a1ad5a131bdbe294deeb254aeea9f46a71f84ccd19ad042b29478bebc4d8a0a1fe726b378bbabc3a6dd38fc5ea6491ac79726a9c9293c76341091a2b4f422d8926068b63a83ff96ce6d593d82bbed49cf2e4fd39abb92231c69d6f8db5c28ff630b9635dfa6cb102570d9af1c5f3f25aab504d08b3d4d6287a962a3eb92afda4a954186782e592a205ef60a1e2f133dbd87866e13fc523297576a92d64dc14ebe8ee4a8cd6f45d8a5c6ca3a6c7a430c55cfac1e48b994b4651b4d2abf3d5aca58ae20b5249f07028b829d7aaa8e992e580a28abbba6d9732a5f909fdbaf3753de2f004adb631db1e3ac65386c0d109e584f293a4cf16ea921c8183134c4685b05c29f55b926313895ffe61ecb35d924a02e0040e4d1ccde4d8515b391c99e0c0c4d1a3a3abbd0d010111c29761e38c1d9481c625aa241d4c2c7176ae50f2558e69420c0101b9a1018e4a7072621aafae7671cb073828f1c6e09ac4b8739ff3b9362ec031094b0e97b752ce774ec27ee30c0f704842df54529d657d9ae432c01189ebe274e349af1dd7c0000724fabc1c69e92d55be1e61f6a76023e9b171061a35da8c1d80807480c311c54b4d9ed94b9856310404840c13703402ff0a1534e8c678b916233a33abf827fb6666896311faa75426c9713a797f3814a1cc9968fc188d137024a2127a63e7b99831e720c2d96c5b1d26b4b73c8e439ca4da4f429f14a3936c1c86f07395b8f39aba599a34be8c10346a7014a21c1dfbed627c94d78cb58182e220c439cbc49c75732fef07ae0210901ff88de718843b3e1a0e41f4952fa64c8ee925368e40fc31e69cb3636cb0868dbdc1018834458f413ae354dc4e0808c81f92d2c414af3e732b0d1a6ba3c6193cb8d134e0f0c31a33c79c312b2de0e88371291d1da3e984cbb2ffc00c1770f021f18c2bb3132b8d292164acc0047de3043638f680b59c30f2d7fb195c1970e8c15fad8ee929bb01471eecfbf1eb0ba5a1bb9e01071e34cde7a12ce5dbba14020252030d339ce30e7499749f49538d45c60a4c0002e23692a48c1a1c76604cb22458e5f0abe839ea90e7e4fff58b05b11f071c7438bab9bdd76e5ec03107254d48bd124f1770c841d1ba7c592a158762640e9bd1fdbb4587033d26e6b87f25d97f83b93b1693f0ad1bf46ab95aa90ddddcdbe9c69dc9a5b3a1d3caf59ad25b9dfa351c35668dc9b6fc182a0e35dc6f51f39f0739d2a064664fbfc9fec48ed7b0b11c68e82443437bcb1c67f0372d4e8e99e6369b1c6658a77366d433d9d72a1c65c8542cf9465ccc41865ffea433e4599283c4310683498ed745478969730e319cf13edde7b69fb6d3081c6138a7c8fe670b9d3c49090101f9751b33e0008331e553b733a1a43b45e0f842b69dfb525209651af6027db1c4d7d59cc24aa50ba8ff7892564d8eb4900bd7c89e77f7ff88fb5b302541adc25894a55c6a418d97725be579773db3c06c66fdeacf26ca6e1c58a0f6e2c7a509bd7efd155a71d33865a7279c90151c3fdbfc397dfb55d879f06684a06d9411b2013238aab06a6815f9f0f4ef3954f8725ef7ab8fed9a64a740a5eaf08ca6a3e3be14cef4705287a81c51d03e5c765636cbd8a880030a693889dc8b0b6911c89a40a10998913500020d10828d34427050861913200a9ca1403980d340c30737081000212413480000d240c3072a1840001c07eb031c98b1360e2000346e38fba07970e30c04b4000069381a9438630793b832d2f841192d892b230d1b21686c8d1a08f88884013e2091c97f6731a1ce2b5f421e513cf9ec999b734cc90d71446a99b67d3442af4c0f26d6c1e4fa60c49591c68d10346cd4a881808f45a0ef951b35e7d7c768c8b1f20108c80efc468d1f94d135d8cf400304040d33ca48e306093e142184337807be83027c24e26ad438c00722ae8c349a073bf0418d1a08f838c48721a810959c4e2a69b4ff20c420dcb4cc9d728a414cac0822106bde1cf2e45a3f009147c854acd7fcc1f96bedb4d63ffcd088d7959cf9c384d1f4213f0f33b7f79c5d627c4816cd294939c7dbbfe8630f7af0cd5a773db522c5fec803db7132ac491a735bfc030f99d0953cfed86a67ebe30e4c0699bff1786131d9214937654faa54b5697dd4e18bb93daeecfaa043aa19d37a8ca1df24d13930177c2f324f22f890c329598555d08e19e2ef003fe280ee9d1835d4688e121fa0f10107ae83fb06332974f6e30d5c5d87dfce76ba4f63e0c30df9597b9ab86e72c72c0404443fda7066ffc6cc3949993c1f6c58937062de3987243e400304048d0b7cacc10b312625d74f7da8210d850666a52b3eb4e50c13e9e30c65868f3290610c4b67590be9fc8718aeed74629a98a5937809711d2c0b3ec200066dad2b6dccf4f105a73ae5d31cda0f2f14ba1b5bc3c59f71733fba70e8d6e826a9e4eef75c284a6ee9630b1f5af8c84271af75bb4fb070bebfb7afcc1925b72b98f227c9be490e0b96b182d1e48c1fda33f5baabc21da2b24249c25438e7503bbbab244e99847c4cc1b5acfbb24e7ee0430a26f3a439952c7fb9a47c44010a5f74a5bdc9e849924dc2c7134c5e394c5eed4e60f73ddd546bb7a48f2668c942b65f0ca6b17626f0c14a8af20c9792f8122a041f4ad0efd4f543a634c3e7230995e57093ca7be64ffc40c2318c41c5f0834bd77ec8748d27318661567fb87fcb48464d0808081a21a8c00d4f23048e831b5e021010c7c10df71046308a9b5dbd638a42e0018c5e65f23e764c9f73e8177c98ce8dfb31be38ce64e724e7b69436f5e84542c760c29750629498c48317b40b5d502e7061c62dbcd1baa8bb70f984cdc316986c49d3b7e56c0cb716b4b8fd3b98455e66218b5830ffb7e7c10316489c6aa6d817beee040f1eafb04dbe34c7f18e7d6957aceb2a6d1573d256cba315fb5b7dceaf61c5a3d9e1a1c4a692f820f058453e365142eb79da883c547158c9d819e3a324493815e69b754d2d0b203c5041ad6c124a7353095a728a63797a8887cac3147889aff1cb53aab74b61a5e612fbc6f22005563e7dab171e05a5fd721b7de3ad25f134caa8118059788882f33c17b4a34ab7b51ea138fd79c85eb3d0d8567b80a2bf4c25e5df68a2f5fe89d3e6a45791c8c313e55e8c97e2a713e5ecdb5ea7490f4e949e67b17288f19c921e9b302bdb7de70e1276621e9a28da65c6e83772d2cf9930ad86e56e8e522a9d0726d878ddd14b8c423c2ee16f6c7d9c349ac1e5103248d000139cc1c3125509a204b2251aca4edee49c4d822bad24cc98e0a5294712d9c9a56629ed39f088042789ab5e5972ef4f9be12b680f48e059d53e1e2e75b68cc7231cc15b76ec497171c0a31107b7490b53ab2a2d33a2be29a10451cf516f5b44969d92a0265c2cd12b0f4514c4bfe498523d1241886842c335259393607300e6e07108435ce934cb94f5746a0ae141885c65ade2828ca7147b0ce22c7143ee8354122ae3218853731a0d09d38bef06624d9dbaec2c2ab34e1e8028657d4ed1279860de8678fcc1cc99769f4ecac30f26f0e883071f3cf6e04977b1f7262f7ad67ad044b24437135ad3253df260d489255c741b0fc9a399639b4c1e77d07664a437ba9ea4277620a7d363562d5518b50e5c8a1e6f7d7f9d848e071d728beab017edd5a0d9c0630e7e92dbd7742b1af090436f17b3c9319f591c0a9e4cfd525ccc0d6b052ee00187e34962ea2bc1fa36f9211e6f480cd79d9199927296abdca0957c92328dead18662a9aac796554f824d35f0600311f29f3971b1bf9f0c78aca1386963b231136ecdacc0113cd470a80ab327e4e8c514a234bc416e25aed66a27831e68f038839f3525b8e718028287199ccce89f49b20c78f8b8b6d1b55e631232fcfaa9a245e5a66c2963b8845c3d792e137888c1582947ac85c5cce987c1d18d626b9b01c39a732ab776bfd53c7ea14e49deecf33cbc70091a4a30e9e43dbab05589a69cfb25b12444f0e002a3db25a54ad15b9ef1d8425a727f9c922fa6c3f2d042299a64268f957864e1f1bfb83f9153720ab1e0c907132234b6739a5ce1f9ebeff2a4d22afb0f3cac90a0b696c420e50d8f2a142a899bde36e7dc3a55103ca85053e0e2c22d6a9448c1230a8e256dfdb52865c1030a6d7bf0da4f614a2c49080a3c9e70da9c0409d30a973bef14783881ed7c425892a498e0d184e3ef83fae60d75b24b050f26acc1d7becc7234048f251816a23dbe09dfd239191e4a48ca8f1ffe32f748826fd14c6392cf22b22a0f24f83f6b69a2ddd2d367041dc73046318a1aec272bd82125e8204655a2299b6f0a9fbf0b7940c73028616e4ab0f6b20ebe302ecd170ac6f5bf31ad64cea3590646f6ba397bcabb954df2176bdaca61d2dc8396ac2fcc9dd1c376d37c6bb4178c54dade7becec1af282edb9133ff4a24b731dbb404a7c6dd5f574f194b82dd629d5c4ac7261cc99f3c5180b4f9de3830e5c306952f64793e43b9c48e8b845294a6eee982cc7f9451db628e5d1d0a9844eb9d46363b90c337860c6f2073a6a61aaed9bc8781ef7be053a686112de624fd65b833cd0318bdcf32e3dfd9f6d7b38d0218b585c3186f34d52c1d3e53a60d1f10a2d7abe91f3ab46872b8aa5166f212e34e8680527e51463e2eaeee67c3b58d1b18a5245a5a250a16ad0249b7249afbbbda0e314ba987f124f3a11cf260c3a4c91c6cdd9ca45099f96a2fd9b8e58a970828951093a4841828e519cf746bd6439c142fb28e810c5194e92b793a393e9d9110a506c2fdd275eda3a3e719cda5959ec67b3da1377644a71a2d32769d24e7cf94fbc02873da8f33549240c06c2308ca2180481c0e9690c93144820384c1e0c06435118e6b9ee031380804902b160240c0842e16020100a83018130180641200441208e41306ac61c4a561d1b6a7ea69bfd2fbbd6894fa4056a289b4206a10b401002ddd329fa98ec8a388c9f707a20a20088677aef54fd77fe4a236c26e7c1835f5db1a72a3a30c618189c6190dc6f3344b74bfd18085784cec044144bfb4cede3927b1ef037423212d7aa938bf891c1f722e0895f43c45466bc1e65b2539f063fd6f92ae181c1ba2c44181d97502f550c8e9773f9b8ac584987ebb1afb476d1756865db0911af6e93796c2b569c903ba6257e2da7b7d3fb9a8ae1dd1797c51d667a224958643f0a687159c91c375d782f764b7c405ed787d8df1f8f69f1016cc292b3aa8bcee0142e4ee3ed0f4f0d6879f97fe27cee89dfe8e339b57fe9a4dacc974ffaa00051ef3bd76991f628c4df052f4a9e27314073c3f7a07093541816a4161203e1c97bfeb8d426097c61cc2fbd06ea12ecbc623b72433f6f6e0fb172b5b2f19cb9c03eaf7931e8b933e8afdcf9a20c5292bc57bde735eb424e26ad63385a8dcbec14a82ed56985add5c18ba02e4a41574cf8d71ab7218a25841251494c99afb7c25aebb9e14dd13c662d96dda65b5bba2d0288b0c3c6e618fec5e2c6b397c15d6d9ce5b70780043498addc1dfc36a043ee963352cd1055fff2bd07face32d0cd917a1d281efbd6737766b295b4dc655c8c51d293540e600b3e7a111074d04369693e33168bbcb4dd1cf43c0a495868dc56895fbdcc8bedf24863ea39a62077ca24e06589d098c345b61d4570a8996e5f94cb80aef4c250f0eca3a49c884d9035a4ec0f40c1a3a1ea8a3670c6c89fc4a3a37d9a5a09ffcaaed520358334fe7f44327ea479ec02200cff725948d134c54dcc0a846f3b77b55776c1537fa13b088a8aea92c92da3e1f6ca5da4a3947fa07782f6b81abff1eaa98b5810f2777aa5decdfbd7e2ab9cb60c09bee210e3de37cb873c3d330831054ab508256d5b971352aa2f3f8f79b9d207dc7847a67c463843894088940dbcc70699f8f209f2935b80e43688c247199d179510ec49a5ca831d55d42d4445d7b2c8cfa6375608f9f42a86bc6eab64a3ad9e0af442bef82127352c31d13fca8f64c1a32ed24fd1ca42079b5b139dd588c15a4fbe7a35a39f021d34c727a0000587b9446a059bf0eaa0762bd770bb145168f984a09c24feb3acb10c419f1ce875969cf44844f45744f054447cf39b02a6df6cff8af03c4ed431601a9aa64b8d69b219b094e1572443a62ff8553bbf820c8a5c91f1d874ab4cb4a8301bbeb8acec185a862aa683f82df349d28b748e36d0ec9814e2d71ecb5a6af0ff1141908820f907d3b06fafade06584a624899e86a9f541708d7116e966da5e7b9f9afdeaac16c6fab5a1e595ce03e44b66f78f8990724fbc449007824889b9bb22c3b292e916ddaa202358cb9a8a66033d525f570945d3641eed2d96185fd998c5d5babd4d1694429108540cd40b029bc87e5262f5333791023d1901610c57b5147df0b1ec4e048e6dc4d942455c560937041790a1ced1668b95a0c36d00a62c060f2073009116847b9fe403c602580cac1518664013a7135f872fd59607d07238dbc5b5b24c3af08571e235c86c5db1bcff316ff976d14a576c96559e1baaf5b251a39b2ce4eb4fd2451562d3e06334efa75c4afd94f4458995897373cc56468e8f297e67066fc4240930f6542ea30be0d28ca1f6caf36adc2a974ce626438816f5a23503249e14280bf54918363db89354b57a64fc728ac7862944cf181bcb8145758b92afee3d36ef3b98074db1894eea1fa05275c1c20bcc2c4025772818540decbfda84e184f24d961295a5ca72669ae20eef01fc5cbc09ae00291a7c2f2349e6b7604fab2bd84f4880adb6247b904e2dd5cb1b57aaf0045bef133e09980d313c41c4f1dadeff7dda00b03c92e8a4b547a07426227eb173ea6157c33dda3d207f7951aa04e56564193f2cc13f95863a7d16652526e076d729205c506531f924f16074a2f236b3a9e76ad177522794049f2f73b796222f54d2a12d78206fcbc68d4f52e69b9c7bbf7e4a14e4c5de96d577d2962f55e15d088a528de505cc37053f78e52d017aa0683338c5297cd9819b2500ae2cbb23ed4c8037be5a3ccb4339f941cd28918bd8351708ba4ce869399b9affe0706629461891d1ced209e7fe93c7c0f0afd437e358b293ceca1cb0da6f8a4fb7fefea84ea2a6c7f1a8491debca8f3a040e24008475949ac47393143a797c4eb67fee01adb49467d174a58d915acea6cc5c6c7a5d575727f330eb4e958ba4071e2c08efeaee66cce4565dcd2bf13b5722f2789ded4a97e0c1d6cb5b50f99dcbef8b754a42615ec71261d1e43ce1148b701b9d750705eb67853d50316d4a6003f62826676248eb903dc0402f63c98485351e69b80f4f957d08397ce3e43b1abcc7e4e96f46f4ea48df2242676bc26a5fc0b1741bc1d74177bd402f27004c168e3c386da6ef746516becf0a794d2c54d0f99a9c844460bbb3901a1cdd45e7c8599f0eb9a3e7c1498051b8d999e7938f991286c917427a9d3de141e205d10776063c10bd1684a511daef03b6c345839cb49659cbf85a1acb9eb237da8d44c2bab828db905c3bebd8f1bb59005b34d994f35918c50558e66e610437e48dd704825eccd76319b0937e3abd975df85f9ef1e8550c67b7b39d60d35fa4537dc33ae44bb4a5a17b6966cdc2b04cfc489d56131e4e74c57b3dc3d85e997fea55d27b477e132d693b9db5c508e4213331d672d1eb9611740e04dc1aa086538573eaaab4cdd326099fb4cac8514ff749144cac2213c3eb8b32893b14e2e300b0ff7110ad423e443051b6418343ad2b3eb6fcf858883129a98b650dc2bd77c0b99c2915bb7c2b41b2e01a40d25fd0da9d712431e648c5746e71c91afe2b8fdd731cac0b548bca2309abb1f0ee0e6babbe712e246bf4cab26f05951807c9d197a4114fccb66ad43a373ccd3d639d5927cc79306980d46b4ae208b5497b8bbb6b5334f4790a8625303c10fb9532c335bc2ce96ae97ee0fc6f93d833b0b5af93001cf9b01f18fda82e6f4c907092ba18ad9ad2c5bd89d803704504a8bd39f4b73ec56a483ad977b4d01b7b30dd474181ab61b4c60993c86f4c12d8acf364e03147806ce20361e44723ba1a3924aa82c52ebfdd19ac9a3c7f58e95957e0052edb4c5e86677e9b462d6511008177685248e35f8437c310032842890125f77f73eccd82519433886aca1301d706e541b0fb08a4671e1c182843691c881231600ad93de03811ee8a8a034c47907fa9aa1a8a0443ee333d66b0cba30feaf54423f80f03bc179c76138cc81327989b1a5c512b38941f57e03585652da860e010fe9b87a8584ce639fd3f929c5d0433f8f5ac1b852eb16a2229b3bc3456ee97e2520d0138d96c497bf77ccf303b22626dca8acc909539254649d3fff86987fdea59d13392729c105b15bb6c6b1078fd4e4b705aaf80d0c00c6495c4c9731351dbce92119266da7e735e79ace97a356b29b43f2fab3a8131950024c7e4a85acccc62a2a4744135d482e542d6743a325bf0a7a2673b4b62a2fc8dd4c458eb4991eb5daa472c56225eb92fd3c429a1cf63ae2aa41375cefb8c6de79a678cc6e6afb6ffcd47ffc4d7564310e0bfd08e754286aa68c61ed32f21b4777f65d31c8e0d86f65b2c19989e26537647092313ac6936c3da9763ef7350d5c57b68441f6c4bd51b17ca32ec409a43c5587aefeb58f6e5c683bbbb10ccea4783f1121b1b9790a2f520c2d324bf2a6f0c6c3c4e60e496324b45f2dd6160b9d4529dc6a93ab615ced2c6fdd179aa04885c84fb548613b3e1733b38e5262d0b492c19284b3fb4689ad0091aa488b9ff169a4677e3479aa2c4266763edc9ee679af8fbaacd80a481bc08b2f882130f532a1c5d634a3207b1c9f74d56cb6e9b7278fd864bb60064d3bc27b24741345158f8eac14fe9351af2f319258b12e0f2db8be3c81010406533f7c97f0e6d4b3733890770c2a034ff27685605f7a66ed3e89ceba4286f73297c45261e77c5d73de0289e47b711209552dd9896dc45c9095850275ccf42540614cf3581db579205fb3577d460cbd966d89bcd653b4161db1e20b57136cdc4829be303ce5d7d0807fbda5a0a2ed4418c8030b515cc72e2c6599391a58baf90ab8bed170158f5fea9cab8520a8b60a70101498b35d663102af2e59d2866f71cac745241680e4251722410607d5abf72342129f4f991dd5e5cfcd5684b166fc7eb303dae4168aa4327d5d42de6d9c29d9c2b0a8bd0500317a6dd65cddabe82dfc3c14b08892e7cb176247bae2a223694aa152211faed5b7ce346c160c3c4e8530157e0f19822f0c803f131a475f22c21521f72b0908aa9a1cb390f7006626ea65e887335c0bebbe8130d8ce244b545bfa65ec1b883704bc788d71cb362d866c016df24ed8cd57592d20fbd7ad3f777e98ccadfb19fe10686ab828caae800d7375c4c3640dffa34c5e814f818071edacf87cc1694f63f97854c576d7abbb8b594e3d8875d7b63dd7e9ed5b271993616a5b56b03f7c69a28366ede696004ae92a08af96e2684c4aaa01585959309ec96f1e93487ceb92b7c3041ef5bbcb526296c38f8c6dcc071a768a5e58abbd46cb2270ca3228eb71d33988fdc52e16edf4a99c2f36360b97f08589750764a1b7102677153eab4500c450b1ec427b961300a8ce204df7b80505c6a321c9697508ccfcfbebfd03c8517614f907cca00582d5406c90e8318c45292d7c8348bcba08a5a8869f8da68572bc7b0c08c54e4cfcdbad01e667a081e7d9e783d1a9bb72c54aeaadbf9d43c0bdd00c30913874ac2b58521526e3e9b18068656eeea057043cb68080b6b3ba67b7411782a7774452f3f4601d370fa4b34a85dc00f984a20704e3ce11386df56ccb69b18184171263e801623ee96e55ebede96ff10895e4fd10ba1be3da8e480ad99faad7fd9c6a3ea473e5c83132be67caf1c1147c1e0f08fc0b479cb97e002027a896724d87b7155070f2cb0266a333e0bd4dc15b213a5f1cce8a74081e40a05dba3798f9edb1ae138a73b6cc187908de83c2e1c8ca1ea72e67e800ee236a5db95f2b21ec879be77117bf2dceb7d30608607300ac3995181ffe577fe08971ef95aa29f82d69e9b41cbd2d3ca87c1ccffa863b9267138ad730ebf249981a1b3c84af7c9861338d98237d683b90e385c018a05aeeb4370d2759801b217c6d6b0d3cd397a445463e3ba955ab614a2b2c028bab745bba085c81a6d00f5e16cee016f93884e235a29886484af3da2961281b2934c44694fff13511299a92a802e5a886f7f4031e82ea325c027d8180231bffb81a51adfa31f949f9a58f55595d0560549b4a79823d96ac40ba81a293fa9e334a7264d7ac8129da6d5994552a2ec006b8c31d99e19851a31502f869efae226549c51fa3ac438dd0d83153122b0c096d840a32a9b3a491e8d12b6a66ec49b43320a0c33a8679ab02807e1aa8434b46e0c2b2720885346504382919e50d6f87e862e597f776d902e194dbc821a75d82a693f9dabe9459bbe7054e67989b9b5e1d174acaba796254351b454471a1a8f3c36150352dea07cfac2216d4fe9e4e815fe9c975ccc166280a625c9d5e8ec2235ba6229d1d948dc3c4b1d01c9d79a7dd959939d3f268dce828782b848d0504a9e11c7a08d811c2d7a96db13786870ac8a436c75ac3ae4869bacaefd462b79a9e6f5d09ed19f176e5c2ea0e5db843893e6a382845c8ebacdd776a712e287ba7175cade2fbed24fa6b9011601252cd71b4f59d80690d6b8d636a57d7a660474fa958818869e12869c82132ad2ee47bfc5ba63250ba5cab28a0fb9bb70e80ab0a9e3d1052c6a1c2affb153a86ffe449d6d96d00f0a91985fe75abfc80e7956a198754b37b8123ac6407e0ac4bfa061ad441627d1d7a4c6570d3ad5345ac05fb6262e599ce7cef26097aff5a62618519e6a69237cc2996fdc5ad2b5f6871a7b1410144adff525e6ba0432f837f5989691f7cb6cb679d96da61d605587026c62e92c22167f5047db735582feaa0c4953bac025e6a1a5cb4b4a9c04f68359090922e4a3b9184bf84f287b7098932107035d394c96695075ca2fdec8ffedde07be0d85501dfd8c2a0934dd86961f417f07573521a595024bf7365ba1548074ee887bc335763aea23ed06dc441a6c6ad4a8f7abc88dac14ad125de457a4a69d4441e769781f65b38858596b23a36a130d26ba32c94e5ca6d5a49c4ad7eaf91a8e42a68da15e855dcc4ef36b59cabc9db1adc30db3bc95f38f6c771adb5c280658af4d01402d39661c295ae2dd4982025f2c91cf7d85795277030e00b0db550f0a8767adef8ac39d2e9cbef178d7fcc914bee671a2b9efb2c8d0e488ca64ebcd654349e8349594b9c9683081e6501a12e8bd1990b3278a708ddb6362d2aef38f6ead934163e3238140c2f736b974b544a1e31d401da55391c7e3e9d4bc22a8865ce359a0503bd237948dd96c45345fd279305a6bf1e4ee78ad2455324d6bd94994b65375311f72acbf82b5c1d5d89a2ac6fcab54adb5918271800f6bd4e93dbb5e1ba6277b0b0e7088dc5bba044428b8952daad2888cd92db72c355bb793f5568fb4914078943e004855f7782f1717bb6b1c6df27d63921e1325755d28de86cc46f8da8b355dbed41b4acf10797f749d002d83f157f98d9ccd48a744a64d7289864de9a225713b6b0a8ea4d3cc3012726da5959069aad298b836eb1cf23351efaa5947f87df2458057713d539ae2a6f4bb3177997e95099d55131115831ed0df357b06eb6244f6d33228afcb49f376505e8fe13a580afdb58c64ea76d2d928ace74bd05e96d2cfecb721d25fc1fae06abd2c356ff2175752c002d9e0aabc9a4d0182b9c458cb5a76455829d8fb57a5e6bff1b1be552afaabe9257ed5482dbaab956a361d3ee492d55a4c27b961e6189158d24d2d5490435c761268573173912406a80891d2a22c90f72d7b8a1d5669612379a5e67f7878d1da641a12ae0885abd3429a46b519f4e4d2ab78ffb61656a8953e05", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x3c311d57d4daf52904616cf69648081e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d": "0x20dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d905973883670b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe04367684c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x45323df7cc47150b3930e2666b0aa3134e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x57f8dc2f5ab09467896f47300f0424384e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d": "0x20dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d905973883670b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe04367684c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x79e2fe5d327165001f8232643023ed8b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7b3237373ffdfeb1cab4222e3b520d6b4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x913b40454eb582a66ab74c86f6137db94e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xa42f90c8b47838c3a5332d85ee9aa5c34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000a0acb90300000000000000000000", + "0xcd5c1f6df63bc97f4a8ce37f14a50ca74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb301fd292232dae2b570b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b": "0x70b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb32696ff9dd5b58170b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d": "0xb447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3326eefc9623d0bbf8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62": "0x8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb34c18773c813024fd8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18": "0x8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb34eb162433582a2de84c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71": "0x84c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb382c4e1e553751ee4dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d9059738836": "0xdc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d9059738836", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb39b36fc39f221acaf040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe043676": "0x040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe043676", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3b147d8162826a908b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e": "0xb0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950144e983536ef57cf617572618084c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71": "0x84c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502162d00a2134b03661757261808eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18": "0x8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505ca51ea81516ba7c6175726180dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d9059738836": "0xdc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d9059738836", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19506fc79dfcf079cef16175726180040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe043676": "0x040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe043676", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508512e4feed3e68ac6175726180b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e": "0xb0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d93963836399023661757261808012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62": "0x8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f66f3d370e6b72dc6175726180b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d": "0xb447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950fec98f6051cef823617572618070b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b": "0x70b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x20dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d905973883670b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe04367684c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x20dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d9059738836dc8b457d69477f29e5900b87ff546906bd6f1ddfc2805686ec571d905973883670b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b70b8271aa09a079120109444b69dbc16ccb9d11e205a77fe9aef105f00bfff4b8012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d628012cebd357b832321efbff52414503d834c38a806e496eea2b6ba93ed945d62b447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55db447c01b893738ad904fc7e6cde03268859354a7cb7622b5363787d85e57d55d040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe043676040c2f09c4b32fd4ecda945acdd3a4bcf801557462020991f9231972fe04367684c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf7184c41f0a7bf06c05d59c2dd733b82eff492211e9374ba640b95f48cb346cdf71b0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50eb0e52b6106bc95f25285c8613dc39ac76cedb7671d0607a4f850ba81b1e9e50e8eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b188eb69560436bd1ee7c172144350591e743d3dae6ea0d6985dff5b3ebf93e9b18", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xe38f185207498abb5c213d0fb059b3d84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xe38f185207498abb5c213d0fb059b3d86323ae84c43568be0d1394d5d0d522c4": "0x02000000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000" + }, + "childrenDefault": {} + } + } +} \ No newline at end of file diff --git a/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml b/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml new file mode 100644 index 0000000000..0d938eec8f --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml @@ -0,0 +1,159 @@ +[package] +name = "collectives-polkadot-runtime" +version = "1.0.0" +authors = ["Parity Technologies "] +edition = "2021" +description = "Polkadot Collectives Parachain Runtime" + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } +hex-literal = { version = "0.3.4", optional = true } +log = { version = "0.4.17", default-features = false } +serde = { version = "1.0.137", optional = true, features = ["derive"] } +scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } +smallvec = "1.6.1" + +# Substrate +frame-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } +frame-executive = { 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" } +frame-system-benchmarking = { git = "https://github.com/paritytech/substrate", optional = true, default-features = false, branch = "master" } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +frame-try-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, optional = true, branch = "master" } +pallet-alliance = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-authorship = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-balances = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-collective = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-multisig = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-proxy = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-sudo = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-utility = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-inherents = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-offchain = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } + +# Polkadot +pallet-xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +polkadot-core-primitives = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +polkadot-runtime-constants = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } +xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" } + +# Cumulus +cumulus-pallet-aura-ext = { path = "../../../../pallets/aura-ext", default-features = false } +cumulus-pallet-dmp-queue = { path = "../../../../pallets/dmp-queue", default-features = false } +cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system", default-features = false } +cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false, version = "3.0.0" } +cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false } +cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false } +cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false } +cumulus-primitives-timestamp = { path = "../../../../primitives/timestamp", default-features = false } +cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false } +pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false } +parachain-info = { path = "../../../pallets/parachain-info", default-features = false } +parachains-common = { path = "../../../common", default-features = false } + +[dev-dependencies] +hex-literal = "0.3.4" + +[build-dependencies] +substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } + +[features] +default = [ "std" ] +runtime-benchmarks = [ + "hex-literal", + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system-benchmarking", + "frame-system/runtime-benchmarks", + "pallet-alliance/runtime-benchmarks", + "pallet-balances/runtime-benchmarks", + "pallet-collective/runtime-benchmarks", + "pallet-multisig/runtime-benchmarks", + "pallet-proxy/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks", + "pallet-utility/runtime-benchmarks", + "pallet-xcm/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", + "xcm-builder/runtime-benchmarks", + "cumulus-pallet-session-benchmarking/runtime-benchmarks", + "pallet-collator-selection/runtime-benchmarks", + "cumulus-pallet-xcmp-queue/runtime-benchmarks", +] +try-runtime = [ + "frame-executive/try-runtime", + "frame-try-runtime", +] +std = [ + "codec/std", + "log/std", + "scale-info/std", + "serde", + "frame-executive/std", + "frame-support/std", + "frame-system-rpc-runtime-api/std", + "frame-system/std", + "pallet-alliance/std", + "pallet-aura/std", + "pallet-authorship/std", + "pallet-balances/std", + "pallet-collective/std", + "pallet-multisig/std", + "pallet-proxy/std", + "pallet-session/std", + "pallet-sudo/std", + "pallet-timestamp/std", + "pallet-transaction-payment-rpc-runtime-api/std", + "pallet-transaction-payment/std", + "pallet-utility/std", + "pallet-xcm/std", + "polkadot-core-primitives/std", + "polkadot-parachain/std", + "polkadot-runtime-common/std", + "polkadot-runtime-constants/std", + "sp-api/std", + "sp-block-builder/std", + "sp-consensus-aura/std", + "sp-core/std", + "sp-inherents/std", + "sp-io/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-version/std", + "xcm-builder/std", + "xcm-executor/std", + "xcm/std", + "cumulus-pallet-aura-ext/std", + "cumulus-pallet-dmp-queue/std", + "cumulus-pallet-parachain-system/std", + "cumulus-pallet-xcm/std", + "cumulus-pallet-xcmp-queue/std", + "cumulus-primitives-core/std", + "cumulus-primitives-timestamp/std", + "cumulus-primitives-utility/std", + "pallet-collator-selection/std", + "parachain-info/std", + "parachains-common/std", +] diff --git a/parachains/runtimes/collectives/collectives-polkadot/build.rs b/parachains/runtimes/collectives/collectives-polkadot/build.rs new file mode 100644 index 0000000000..9b53d2457d --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/build.rs @@ -0,0 +1,9 @@ +use substrate_wasm_builder::WasmBuilder; + +fn main() { + WasmBuilder::new() + .with_current_project() + .export_heap_base() + .import_memory() + .build() +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/constants.rs b/parachains/runtimes/collectives/collectives-polkadot/src/constants.rs new file mode 100644 index 0000000000..38853ae7e9 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/constants.rs @@ -0,0 +1,83 @@ +// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod account { + use frame_support::PalletId; + use sp_runtime::AccountId32; + + /// Relay Chain treasury pallet id, used to convert into AccountId + pub const RELAY_TREASURY_PALL_ID: PalletId = PalletId(*b"py/trsry"); + /// account used to temporarily deposit slashed imbalance before teleporting + pub const SLASHED_IMBALANCE_ACC_ID: AccountId32 = AccountId32::new([7u8; 32]); +} + +pub mod currency { + use polkadot_core_primitives::Balance; + use polkadot_runtime_constants as constants; + + /// The existential deposit. Set to 1/10 of its parent Relay Chain. + pub const EXISTENTIAL_DEPOSIT: Balance = constants::currency::EXISTENTIAL_DEPOSIT / 10; + + pub const UNITS: Balance = constants::currency::UNITS; + pub const DOLLARS: Balance = constants::currency::DOLLARS; + pub const CENTS: Balance = constants::currency::CENTS; + pub const MILLICENTS: Balance = constants::currency::MILLICENTS; + + pub const fn deposit(items: u32, bytes: u32) -> Balance { + // 1/100 of Polkadot. + constants::currency::deposit(items, bytes) / 100 + } +} + +/// Fee-related. +pub mod fee { + use frame_support::weights::{ + constants::ExtrinsicBaseWeight, WeightToFeeCoefficient, WeightToFeeCoefficients, + WeightToFeePolynomial, + }; + use polkadot_core_primitives::Balance; + use smallvec::smallvec; + pub use sp_runtime::Perbill; + + /// 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: + // in a parachain, we map to 1/10 of that, or 1/100 CENT + let p = super::currency::CENTS; + let q = 100 * 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/parachains/runtimes/collectives/collectives-polkadot/src/impls.rs b/parachains/runtimes/collectives/collectives-polkadot/src/impls.rs new file mode 100644 index 0000000000..4f82180217 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/impls.rs @@ -0,0 +1,137 @@ +// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use frame_support::{ + dispatch::{DispatchError, DispatchResultWithPostInfo}, + log, + traits::{Currency, Get, Imbalance, OnUnbalanced, OriginTrait}, + weights::Weight, +}; +use pallet_alliance::{ProposalIndex, ProposalProvider}; +use sp_std::{boxed::Box, marker::PhantomData}; +use xcm::latest::{Fungibility, Junction, NetworkId, Parent}; + +type AccountIdOf = ::AccountId; + +type ProposalOf = >::Proposal; + +type HashOf = ::Hash; + +type NegativeImbalanceOf = <>::Currency as Currency< + ::AccountId, +>>::NegativeImbalance; + +type CurrencyOf = >::Currency; + +type BalanceOf = <>::Currency as Currency< + ::AccountId, +>>::Balance; + +/// Implements `OnUnbalanced::on_unbalanced` to teleport slashed assets to relay chain treasury account. +pub struct ToParentTreasury( + PhantomData<(TreasuryAcc, TempAcc, T, I)>, +); + +impl OnUnbalanced> + for ToParentTreasury +where + TreasuryAcc: Get>, + TempAcc: Get>, + T: pallet_xcm::Config + frame_system::Config + pallet_alliance::Config, + [u8; 32]: From>, + BalanceOf: Into, + <::Origin as OriginTrait>::AccountId: From>, +{ + fn on_unbalanced(amount: NegativeImbalanceOf) { + let temp_account: AccountIdOf = TempAcc::get(); + let treasury_acc: AccountIdOf = TreasuryAcc::get(); + let imbalance = amount.peek(); + + >::resolve_creating(&temp_account, amount); + + let result = pallet_xcm::Pallet::::teleport_assets( + ::Origin::signed(temp_account.into()), + Box::new(Parent.into()), + Box::new( + Junction::AccountId32 { network: NetworkId::Any, id: treasury_acc.into() } + .into() + .into(), + ), + Box::new((Parent, imbalance).into()), + 0, + ); + + match result { + Err(err) => log::warn!("Failed to teleport slashed assets: {:?}", err), + _ => (), + }; + } +} + +/// Proposal provider for alliance pallet. +/// Adapter from collective pallet to alliance proposal provider trait. +pub struct AllianceProposalProvider(PhantomData<(T, I)>); + +impl ProposalProvider, HashOf, ProposalOf> + for AllianceProposalProvider +where + T: pallet_collective::Config + frame_system::Config, + I: 'static, +{ + fn propose_proposal( + who: AccountIdOf, + threshold: u32, + proposal: Box>, + length_bound: u32, + ) -> Result<(u32, u32), DispatchError> { + pallet_collective::Pallet::::do_propose_proposed( + who, + threshold, + proposal, + length_bound, + ) + } + + fn vote_proposal( + who: AccountIdOf, + proposal: HashOf, + index: ProposalIndex, + approve: bool, + ) -> Result { + pallet_collective::Pallet::::do_vote(who, proposal, index, approve) + } + + fn veto_proposal(proposal_hash: HashOf) -> u32 { + pallet_collective::Pallet::::do_disapprove_proposal(proposal_hash) + } + + fn close_proposal( + proposal_hash: HashOf, + proposal_index: ProposalIndex, + proposal_weight_bound: Weight, + length_bound: u32, + ) -> DispatchResultWithPostInfo { + pallet_collective::Pallet::::do_close( + proposal_hash, + proposal_index, + proposal_weight_bound, + length_bound, + ) + } + + fn proposal_of(proposal_hash: HashOf) -> Option> { + pallet_collective::Pallet::::proposal_of(proposal_hash) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/lib.rs b/parachains/runtimes/collectives/collectives-polkadot/src/lib.rs new file mode 100644 index 0000000000..cd947446e2 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/lib.rs @@ -0,0 +1,774 @@ +// Copyright (C) 2022 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. + +//! # Collectives Parachain +//! +//! This parachain is for collectives that serve the Polkadot network. +//! Each collective is defined by a specialized (possibly instanced) pallet. +//! +//! ### Governance +//! +//! As a common good parachain, Collectives defers its governance (namely, its `Root` origin), to its +//! Relay Chain parent, Polkadot. +//! +//! ### Collator Selection +//! +//! Collectives uses `pallet-collator-selection`, a simple first-come-first-served registration +//! system where collators can reserve a small bond to join the block producer set. There is no +//! slashing. Collective members are generally expected to run collators. +//! + +#![cfg_attr(not(feature = "std"), no_std)] +#![recursion_limit = "256"] + +// Make the WASM binary available. +#[cfg(feature = "std")] +include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); + +pub mod constants; +pub mod impls; +mod weights; +pub mod xcm_config; + +use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; +use impls::{AllianceProposalProvider, ToParentTreasury}; +use sp_api::impl_runtime_apis; +use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; +use sp_runtime::{ + create_runtime_str, generic, impl_opaque_keys, + traits::{AccountIdConversion, AccountIdLookup, BlakeTwo256, Block as BlockT}, + transaction_validity::{TransactionSource, TransactionValidity}, + ApplyExtrinsicResult, +}; + +use sp_std::prelude::*; +#[cfg(feature = "std")] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; + +use codec::{Decode, Encode, MaxEncodedLen}; +use constants::{currency::*, fee::WeightToFee}; +use frame_support::{ + construct_runtime, parameter_types, + traits::{ConstU16, ConstU32, ConstU64, ConstU8, EitherOfDiverse, InstanceFilter}, + weights::{ConstantMultiplier, DispatchClass, Weight}, + PalletId, RuntimeDebug, +}; +use frame_system::{ + limits::{BlockLength, BlockWeights}, + EnsureRoot, +}; +pub use parachains_common as common; +use parachains_common::{ + impls::DealWithFees, opaque, AccountId, AuraId, Balance, BlockNumber, Hash, Header, Index, + Signature, AVERAGE_ON_INITIALIZE_RATIO, DAYS, HOURS, MAXIMUM_BLOCK_WEIGHT, + NORMAL_DISPATCH_RATIO, SLOT_DURATION, +}; +use xcm_config::{DotLocation, XcmConfig, XcmOriginToTransactDispatchOrigin}; + +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; + +// Polkadot imports +use pallet_xcm::{EnsureXcm, IsMajorityOfBody}; +use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate}; +use xcm::latest::BodyId; +use xcm_executor::XcmExecutor; + +use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}; + +impl_opaque_keys! { + pub struct SessionKeys { + pub aura: Aura, + } +} + +#[sp_version::runtime_version] +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("collectives"), + impl_name: create_runtime_str!("collectives"), + authoring_version: 1, + spec_version: 102, + impl_version: 0, + apis: RUNTIME_API_VERSIONS, + transaction_version: 0, + state_version: 0, +}; + +/// 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() } +} + +/// Privileged origin that represents Root or the majority of the Relay Chain Council. +pub type RootOrExecutiveSimpleMajority = + EitherOfDiverse, EnsureXcm>>; +/// Privileged origin that represents Root or more than two thirds of the Alliance. +pub type RootOrAllianceTwoThirdsMajority = EitherOfDiverse< + EnsureRoot, + pallet_collective::EnsureProportionMoreThan, +>; + +parameter_types! { + pub const Version: RuntimeVersion = VERSION; + pub RuntimeBlockLength: BlockLength = + BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + pub RuntimeBlockWeights: BlockWeights = 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 some 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(); +} + +// Configure FRAME pallets to include in runtime. +impl frame_system::Config for Runtime { + type BaseCallFilter = frame_support::traits::Everything; + type BlockWeights = RuntimeBlockWeights; + type BlockLength = RuntimeBlockLength; + type AccountId = AccountId; + type Call = Call; + type Lookup = AccountIdLookup; + type Index = Index; + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hashing = BlakeTwo256; + type Header = Header; + type Event = Event; + type Origin = Origin; + type BlockHashCount = BlockHashCount; + type DbWeight = RocksDbWeight; + type Version = Version; + type PalletInfo = PalletInfo; + type OnNewAccount = (); + type OnKilledAccount = (); + type AccountData = pallet_balances::AccountData; + type SystemWeightInfo = weights::frame_system::WeightInfo; + type SS58Prefix = ConstU16<0>; + type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; + type MaxConsumers = frame_support::traits::ConstU32<16>; +} + +pub const MINIMUM_PERIOD: u64 = SLOT_DURATION / 2; + +impl pallet_timestamp::Config for Runtime { + /// A timestamp: milliseconds since the unix epoch. + type Moment = u64; + type OnTimestampSet = (); + type MinimumPeriod = ConstU64; + type WeightInfo = weights::pallet_timestamp::WeightInfo; +} + +impl pallet_authorship::Config for Runtime { + type FindAuthor = pallet_session::FindAccountFromAuthorIndex; + type UncleGenerations = ConstU32<0>; + type FilterUncle = (); + type EventHandler = (CollatorSelection,); +} + +parameter_types! { + pub const ExistentialDeposit: Balance = EXISTENTIAL_DEPOSIT; +} + +impl pallet_balances::Config for Runtime { + type MaxLocks = ConstU32<50>; + /// 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 = weights::pallet_balances::WeightInfo; + type MaxReserves = ConstU32<50>; + type ReserveIdentifier = [u8; 8]; +} + +parameter_types! { + /// Relay Chain `TransactionByteFee` / 10 + pub const TransactionByteFee: Balance = 1 * MILLICENTS; +} + +impl pallet_transaction_payment::Config for Runtime { + type Event = Event; + type OnChargeTransaction = + pallet_transaction_payment::CurrencyAdapter>; + type WeightToFee = WeightToFee; + type LengthToFee = ConstantMultiplier; + type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; + type OperationalFeeMultiplier = ConstU8<5>; +} + +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); +} + +impl pallet_multisig::Config for Runtime { + type Event = Event; + type Call = Call; + type Currency = Balances; + type DepositBase = DepositBase; + type DepositFactor = DepositFactor; + type MaxSignatories = ConstU16<100>; + type WeightInfo = weights::pallet_multisig::WeightInfo; +} + +impl pallet_utility::Config for Runtime { + type Event = Event; + type Call = Call; + type PalletsOrigin = OriginCaller; + type WeightInfo = weights::pallet_utility::WeightInfo; +} + +parameter_types! { + // One storage item; key size 32, value size 8; . + pub const ProxyDepositBase: Balance = deposit(1, 40); + // Additional storage item size of 33 bytes. + pub const ProxyDepositFactor: Balance = deposit(0, 33); + // One storage item; key size 32, value size 16 + pub const AnnouncementDepositBase: Balance = deposit(1, 48); + pub const AnnouncementDepositFactor: Balance = deposit(0, 66); +} + +/// The type used to represent the kinds of proxying allowed. +#[derive( + Copy, + Clone, + Eq, + PartialEq, + Ord, + PartialOrd, + Encode, + Decode, + RuntimeDebug, + MaxEncodedLen, + scale_info::TypeInfo, +)] +pub enum ProxyType { + /// Fully permissioned proxy. Can execute any call on behalf of _proxied_. + Any, + /// Can execute any call that does not transfer funds. + NonTransfer, + /// Proxy with the ability to reject time-delay proxy announcements. + CancelProxy, + /// Collator selection proxy. Can execute calls related to collator selection mechanism. + Collator, + /// Alliance proxy. Allows calls related to the Alliance. + Alliance, +} +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::Balances { .. }), + ProxyType::CancelProxy => matches!( + c, + Call::Proxy(pallet_proxy::Call::reject_announcement { .. }) | + Call::Utility { .. } | Call::Multisig { .. } + ), + ProxyType::Collator => matches!( + c, + Call::CollatorSelection { .. } | Call::Utility { .. } | Call::Multisig { .. } + ), + ProxyType::Alliance => matches!( + c, + Call::AllianceMotion { .. } | + Call::Alliance { .. } | + Call::Utility { .. } | Call::Multisig { .. } + ), + } + } + 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 = ConstU32<32>; + type WeightInfo = weights::pallet_proxy::WeightInfo; + type MaxPending = ConstU32<32>; + type CallHasher = BlakeTwo256; + type AnnouncementDepositBase = AnnouncementDepositBase; + type AnnouncementDepositFactor = AnnouncementDepositFactor; +} + +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 OnSystemEvent = (); + type SelfParaId = parachain_info::Pallet; + type DmpMessageHandler = DmpQueue; + type ReservedDmpWeight = ReservedDmpWeight; + type OutboundXcmpMessageSource = XcmpQueue; + type XcmpMessageHandler = XcmpQueue; + type ReservedXcmpWeight = ReservedXcmpWeight; + type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases; +} + +impl parachain_info::Config for Runtime {} + +impl cumulus_pallet_aura_ext::Config for Runtime {} + +impl cumulus_pallet_xcmp_queue::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; + type ChannelInfo = ParachainSystem; + type VersionWrapper = PolkadotXcm; + type ExecuteOverweightOrigin = EnsureRoot; + type ControllerOrigin = RootOrExecutiveSimpleMajority; + type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin; + type WeightInfo = weights::cumulus_pallet_xcmp_queue::WeightInfo; +} + +impl cumulus_pallet_dmp_queue::Config for Runtime { + type Event = Event; + type XcmExecutor = XcmExecutor; + type ExecuteOverweightOrigin = EnsureRoot; +} + +pub const PERIOD: u32 = 6 * HOURS; +pub const OFFSET: u32 = 0; + +impl pallet_session::Config for Runtime { + type Event = Event; + type ValidatorId = ::AccountId; + // we don't have stash and controller, thus we don't need the convert as well. + type ValidatorIdOf = pallet_collator_selection::IdentityCollator; + type ShouldEndSession = pallet_session::PeriodicSessions, ConstU32>; + type NextSessionRotation = pallet_session::PeriodicSessions, ConstU32>; + type SessionManager = CollatorSelection; + // Essentially just Aura, but lets be pedantic. + type SessionHandler = ::KeyTypeIdProviders; + type Keys = SessionKeys; + type WeightInfo = weights::pallet_session::WeightInfo; +} + +impl pallet_aura::Config for Runtime { + type AuthorityId = AuraId; + type DisabledValidators = (); + type MaxAuthorities = ConstU32<100_000>; +} + +parameter_types! { + pub const PotId: PalletId = PalletId(*b"PotStake"); + pub const SessionLength: BlockNumber = 6 * HOURS; + pub const ExecutiveBody: BodyId = BodyId::Executive; +} + +/// We allow root and the Relay Chain council to execute privileged collator selection operations. +pub type CollatorSelectionUpdateOrigin = RootOrExecutiveSimpleMajority; + +impl pallet_collator_selection::Config for Runtime { + type Event = Event; + type Currency = Balances; + type UpdateOrigin = CollatorSelectionUpdateOrigin; + type PotId = PotId; + type MaxCandidates = ConstU32<1000>; + type MinCandidates = ConstU32<5>; + type MaxInvulnerables = ConstU32<100>; + // should be a multiple of session or things will get inconsistent + type KickThreshold = ConstU32; + type ValidatorId = ::AccountId; + type ValidatorIdOf = pallet_collator_selection::IdentityCollator; + type ValidatorRegistration = Session; + type WeightInfo = weights::pallet_collator_selection::WeightInfo; +} + +parameter_types! { + pub const AllianceMotionDuration: BlockNumber = 5 * DAYS; + +} +pub const ALLIANCE_MAX_PROPOSALS: u32 = 100; +pub const ALLIANCE_MAX_MEMBERS: u32 = 100; + +type AllianceCollective = pallet_collective::Instance1; +impl pallet_collective::Config for Runtime { + type Origin = Origin; + type Proposal = Call; + type Event = Event; + type MotionDuration = AllianceMotionDuration; + type MaxProposals = ConstU32; + type MaxMembers = ConstU32; + type DefaultVote = pallet_collective::MoreThanMajorityThenPrimeDefaultVote; + type WeightInfo = pallet_collective::weights::SubstrateWeight; +} + +pub const MAX_FOUNDERS: u32 = 10; +pub const MAX_FELLOWS: u32 = ALLIANCE_MAX_MEMBERS - MAX_FOUNDERS; +pub const MAX_ALLIES: u32 = 100; + +parameter_types! { + pub const AllyDeposit: Balance = 1_000 * UNITS; // 1,000 DOT bond to join as an Ally + // account used to temporarily deposit slashed imbalance before teleporting + pub SlashedImbalanceAccId: AccountId = constants::account::SLASHED_IMBALANCE_ACC_ID.into(); + pub RelayTreasuryAccId: AccountId = constants::account::RELAY_TREASURY_PALL_ID.into_account_truncating(); +} + +impl pallet_alliance::Config for Runtime { + type Event = Event; + type Proposal = Call; + type AdminOrigin = RootOrAllianceTwoThirdsMajority; + type MembershipManager = RootOrAllianceTwoThirdsMajority; + type AnnouncementOrigin = RootOrAllianceTwoThirdsMajority; + type Currency = Balances; + type Slashed = ToParentTreasury; + type InitializeMembers = AllianceMotion; + type MembershipChanged = AllianceMotion; + type IdentityVerifier = (); // Don't block accounts on identity criteria + type ProposalProvider = AllianceProposalProvider; + type MaxProposals = ConstU32; + type MaxFounders = ConstU32; + type MaxFellows = ConstU32; + type MaxAllies = ConstU32; + type MaxUnscrupulousItems = ConstU32<100>; + type MaxWebsiteUrlLength = ConstU32<255>; + type MaxAnnouncementsCount = ConstU32<100>; + type MaxMembersCount = ConstU32; + type AllyDeposit = AllyDeposit; + type WeightInfo = pallet_alliance::weights::SubstrateWeight; +} + +// Create the runtime by composing the FRAME pallets that were previously configured. +construct_runtime!( + pub enum Runtime where + Block = Block, + NodeBlock = opaque::Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + // System support stuff. + System: frame_system::{Pallet, Call, Config, Storage, Event} = 0, + ParachainSystem: cumulus_pallet_parachain_system::{ + Pallet, Call, Config, Storage, Inherent, Event, ValidateUnsigned, + } = 1, + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 2, + ParachainInfo: parachain_info::{Pallet, Storage, Config} = 3, + + // Monetary stuff. + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 10, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event} = 11, + + // Collator support. the order of these 5 are important and shall not change. + Authorship: pallet_authorship::{Pallet, Call, Storage} = 20, + CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event, Config} = 21, + Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 22, + Aura: pallet_aura::{Pallet, Storage, Config} = 23, + AuraExt: cumulus_pallet_aura_ext::{Pallet, Storage, Config} = 24, + + // XCM helpers. + XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event} = 30, + PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 31, + CumulusXcm: cumulus_pallet_xcm::{Pallet, Event, Origin} = 32, + DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event} = 33, + + // Handy utilities. + Utility: pallet_utility::{Pallet, Call, Event} = 40, + Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 41, + Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 42, + + // The main stage. + Alliance: pallet_alliance::{Pallet, Call, Storage, Event, Config} = 50, + AllianceMotion: pallet_collective::::{Pallet, Call, Storage, Origin, Event, Config} = 51, + } +); + +/// The address format for describing accounts. +pub type Address = sp_runtime::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::CheckNonZeroSender, + frame_system::CheckSpecVersion, + frame_system::CheckTxVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, +); +/// 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, + AllPalletsWithSystem, +>; + +#[cfg(feature = "runtime-benchmarks")] +#[macro_use] +extern crate frame_benchmarking; + +#[cfg(feature = "runtime-benchmarks")] +mod benches { + define_benchmarks!( + [frame_system, SystemBench::] + [pallet_balances, Balances] + [pallet_multisig, Multisig] + [pallet_proxy, Proxy] + [pallet_session, SessionBench::] + [pallet_utility, Utility] + [pallet_timestamp, Timestamp] + [pallet_collator_selection, CollatorSelection] + [cumulus_pallet_xcmp_queue, XcmpQueue] + [pallet_alliance, Alliance] + [pallet_collective, AllianceMotion] + ); +} + +impl_runtime_apis! { + 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().into_inner() + } + } + + 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 generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + + fn decode_session_keys( + encoded: Vec, + ) -> Option, KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } + } + + 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) + } + } + + impl cumulus_primitives_core::CollectCollationInfo for Runtime { + fn collect_collation_info(header: &::Header) -> cumulus_primitives_core::CollationInfo { + ParachainSystem::collect_collation_info(header) + } + } + + #[cfg(feature = "try-runtime")] + impl frame_try_runtime::TryRuntime for Runtime { + fn on_runtime_upgrade() -> (Weight, Weight) { + log::info!("try-runtime::on_runtime_upgrade collectives-polkadot."); + let weight = Executive::try_runtime_upgrade().unwrap(); + (weight, RuntimeBlockWeights::get().max_block) + } + + fn execute_block_no_check(block: Block) -> Weight { + Executive::execute_block_no_check(block) + } + } + + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_benchmarking::{Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; + use frame_system_benchmarking::Pallet as SystemBench; + use cumulus_pallet_session_benchmarking::Pallet as SessionBench; + + let mut list = Vec::::new(); + list_benchmarks!(list, extra); + + 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}; + + use frame_system_benchmarking::Pallet as SystemBench; + impl frame_system_benchmarking::Config for Runtime {} + + use cumulus_pallet_session_benchmarking::Pallet as SessionBench; + impl cumulus_pallet_session_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_benchmarks!(params, batches); + + 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/parachains/runtimes/collectives/collectives-polkadot/src/weights/block_weights.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/block_weights.rs new file mode 100644 index 0000000000..4db90f0c02 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/block_weights.rs @@ -0,0 +1,46 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, Weight}, + }; + + parameter_types! { + /// Importing a block with 0 Extrinsics. + pub const BlockExecutionWeight: Weight = 5_000_000 * constants::WEIGHT_PER_NANOS; + } + + #[cfg(test)] + mod test_weights { + use frame_support::weights::constants; + + /// Checks that the weight exists and is sane. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + let w = super::constants::BlockExecutionWeight::get(); + + // At least 100 µs. + assert!(w >= 100 * constants::WEIGHT_PER_MICROS, "Weight should be at least 100 µs."); + // At most 50 ms. + assert!(w <= 50 * constants::WEIGHT_PER_MILLIS, "Weight should be at most 50 ms."); + } + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/cumulus_pallet_xcmp_queue.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/cumulus_pallet_xcmp_queue.rs new file mode 100644 index 0000000000..affda8a291 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/cumulus_pallet_xcmp_queue.rs @@ -0,0 +1,61 @@ +// Copyright 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 . + +//! Autogenerated weights for `cumulus_pallet_xcmp_queue` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=cumulus_pallet_xcmp_queue +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `cumulus_pallet_xcmp_queue`. +pub struct WeightInfo(PhantomData); +impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { + // Storage: XcmpQueue QueueConfig (r:1 w:1) + fn set_config_with_u32() -> Weight { + (5_294_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: XcmpQueue QueueConfig (r:1 w:1) + fn set_config_with_weight() -> Weight { + (5_180_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/extrinsic_weights.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/extrinsic_weights.rs new file mode 100644 index 0000000000..158ba99c6a --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/extrinsic_weights.rs @@ -0,0 +1,46 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, Weight}, + }; + + parameter_types! { + /// Executing a NO-OP `System::remarks` Extrinsic. + pub const ExtrinsicBaseWeight: Weight = 125_000 * constants::WEIGHT_PER_NANOS; + } + + #[cfg(test)] + mod test_weights { + use frame_support::weights::constants; + + /// Checks that the weight exists and is sane. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + let w = super::constants::ExtrinsicBaseWeight::get(); + + // At least 10 µs. + assert!(w >= 10 * constants::WEIGHT_PER_MICROS, "Weight should be at least 10 µs."); + // At most 1 ms. + assert!(w <= constants::WEIGHT_PER_MILLIS, "Weight should be at most 1 ms."); + } + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/frame_system.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/frame_system.rs new file mode 100644 index 0000000000..69a9db7d68 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/frame_system.rs @@ -0,0 +1,90 @@ +// Copyright 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 . + +//! Autogenerated weights for `frame_system` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=frame_system +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `frame_system`. +pub struct WeightInfo(PhantomData); +impl frame_system::WeightInfo for WeightInfo { + /// The range of component `b` is `[0, 3932160]`. + fn remark(_b: u32, ) -> Weight { + (0 as Weight) + } + /// The range of component `b` is `[0, 3932160]`. + fn remark_with_event(b: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(b as Weight)) + } + // Storage: System Digest (r:1 w:1) + // Storage: unknown [0x3a686561707061676573] (r:0 w:1) + fn set_heap_pages() -> Weight { + (5_069_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. + fn set_storage(i: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 1_000 + .saturating_add((624_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) + } + // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `i` is `[1, 1000]`. + fn kill_storage(i: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 1_000 + .saturating_add((530_000 as Weight).saturating_mul(i as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight))) + } + // Storage: Skipped Metadata (r:0 w:0) + /// The range of component `p` is `[1, 1000]`. + fn kill_prefix(p: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 2_000 + .saturating_add((1_059_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/parachains/runtimes/collectives/collectives-polkadot/src/weights/mod.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/mod.rs new file mode 100644 index 0000000000..c78ba86656 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/mod.rs @@ -0,0 +1,18 @@ +pub mod block_weights; +pub mod cumulus_pallet_xcmp_queue; +pub mod extrinsic_weights; +pub mod frame_system; +pub mod pallet_balances; +pub mod pallet_collator_selection; +pub mod pallet_multisig; +pub mod pallet_proxy; +pub mod pallet_session; +pub mod pallet_timestamp; +pub mod pallet_utility; +pub mod paritydb_weights; +pub mod rocksdb_weights; + +pub use block_weights::constants::BlockExecutionWeight; +pub use extrinsic_weights::constants::ExtrinsicBaseWeight; +pub use paritydb_weights::constants::ParityDbWeight; +pub use rocksdb_weights::constants::RocksDbWeight; diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_alliance.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_alliance.rs new file mode 100644 index 0000000000..bfa9e3e35b --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_alliance.rs @@ -0,0 +1,279 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_alliance` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_alliance +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_alliance`. +pub struct WeightInfo(PhantomData); +impl pallet_alliance::WeightInfo for WeightInfo { + // Storage: Alliance Members (r:1 w:0) + // Storage: AllianceMotion ProposalOf (r:1 w:1) + // Storage: AllianceMotion Proposals (r:1 w:1) + // Storage: AllianceMotion ProposalCount (r:1 w:1) + // Storage: AllianceMotion Voting (r:0 w:1) + /// The range of component `b` is `[1, 1024]`. + /// The range of component `x` is `[2, 10]`. + /// The range of component `y` is `[0, 90]`. + /// The range of component `p` is `[1, 100]`. + fn propose_proposed(_b: u32, _x: u32, _y: u32, p: u32, ) -> Weight { + (53_023_000 as Weight) + // Standard Error: 2_000 + .saturating_add((132_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)) + } + // Storage: Alliance Members (r:2 w:0) + // Storage: AllianceMotion Voting (r:1 w:1) + /// The range of component `x` is `[3, 10]`. + /// The range of component `y` is `[2, 90]`. + fn vote(x: u32, y: u32, ) -> Weight { + (33_003_000 as Weight) + // Standard Error: 106_000 + .saturating_add((312_000 as Weight).saturating_mul(x as Weight)) + // Standard Error: 4_000 + .saturating_add((82_000 as Weight).saturating_mul(y as Weight)) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Alliance Members (r:1 w:0) + // Storage: AllianceMotion ProposalOf (r:1 w:1) + // Storage: AllianceMotion Proposals (r:1 w:1) + // Storage: AllianceMotion Voting (r:0 w:1) + /// The range of component `p` is `[1, 100]`. + fn veto(p: u32, ) -> Weight { + (27_289_000 as Weight) + // Standard Error: 1_000 + .saturating_add((131_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)) + } + // Storage: Alliance Members (r:1 w:0) + // Storage: AllianceMotion Voting (r:1 w:1) + // Storage: AllianceMotion Members (r:1 w:0) + // Storage: AllianceMotion Proposals (r:1 w:1) + // Storage: AllianceMotion ProposalOf (r:0 w:1) + /// The range of component `x` is `[2, 10]`. + /// The range of component `y` is `[2, 90]`. + /// The range of component `p` is `[1, 100]`. + fn close_early_disapproved(x: u32, y: u32, p: u32, ) -> Weight { + (31_884_000 as Weight) + // Standard Error: 72_000 + .saturating_add((358_000 as Weight).saturating_mul(x as Weight)) + // Standard Error: 3_000 + .saturating_add((109_000 as Weight).saturating_mul(y as Weight)) + // Standard Error: 2_000 + .saturating_add((109_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)) + } + // Storage: Alliance Members (r:1 w:0) + // Storage: AllianceMotion Voting (r:1 w:1) + // Storage: AllianceMotion Members (r:1 w:0) + // Storage: AllianceMotion ProposalOf (r:1 w:1) + // Storage: AllianceMotion Proposals (r:1 w:1) + /// The range of component `b` is `[1, 1024]`. + /// The range of component `x` is `[2, 10]`. + /// The range of component `y` is `[2, 90]`. + /// The range of component `p` is `[1, 100]`. + fn close_early_approved(b: u32, x: u32, y: u32, p: u32, ) -> Weight { + (43_205_000 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(b as Weight)) + // Standard Error: 73_000 + .saturating_add((123_000 as Weight).saturating_mul(x as Weight)) + // Standard Error: 2_000 + .saturating_add((91_000 as Weight).saturating_mul(y as Weight)) + // Standard Error: 2_000 + .saturating_add((114_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)) + } + // Storage: Alliance Members (r:1 w:0) + // Storage: AllianceMotion Voting (r:1 w:1) + // Storage: AllianceMotion Members (r:1 w:0) + // Storage: AllianceMotion Prime (r:1 w:0) + // Storage: AllianceMotion ProposalOf (r:1 w:1) + // Storage: AllianceMotion Proposals (r:1 w:1) + // Storage: Alliance Rule (r:0 w:1) + /// The range of component `x` is `[2, 10]`. + /// The range of component `y` is `[2, 90]`. + /// The range of component `p` is `[1, 100]`. + fn close_disapproved(x: u32, y: u32, p: u32, ) -> Weight { + (49_769_000 as Weight) + // Standard Error: 69_000 + .saturating_add((352_000 as Weight).saturating_mul(x as Weight)) + // Standard Error: 2_000 + .saturating_add((81_000 as Weight).saturating_mul(y as Weight)) + // Standard Error: 2_000 + .saturating_add((100_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Alliance Members (r:1 w:0) + // Storage: AllianceMotion Voting (r:1 w:1) + // Storage: AllianceMotion Members (r:1 w:0) + // Storage: AllianceMotion Prime (r:1 w:0) + // Storage: AllianceMotion Proposals (r:1 w:1) + // Storage: AllianceMotion ProposalOf (r:0 w:1) + /// The range of component `b` is `[1, 1024]`. + /// The range of component `x` is `[2, 10]`. + /// The range of component `y` is `[2, 90]`. + /// The range of component `p` is `[1, 100]`. + fn close_approved(b: u32, _x: u32, y: u32, p: u32, ) -> Weight { + (40_901_000 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(b as Weight)) + // Standard Error: 2_000 + .saturating_add((79_000 as Weight).saturating_mul(y as Weight)) + // Standard Error: 2_000 + .saturating_add((102_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)) + } + // Storage: Alliance Members (r:3 w:3) + // Storage: AllianceMotion Members (r:1 w:1) + /// The range of component `x` is `[2, 10]`. + /// The range of component `y` is `[0, 90]`. + /// The range of component `z` is `[0, 100]`. + fn init_members(_x: u32, y: u32, z: u32, ) -> Weight { + (39_647_000 as Weight) + // Standard Error: 2_000 + .saturating_add((123_000 as Weight).saturating_mul(y as Weight)) + // Standard Error: 2_000 + .saturating_add((116_000 as Weight).saturating_mul(z as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Alliance Rule (r:0 w:1) + fn set_rule() -> Weight { + (14_689_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Alliance Announcements (r:1 w:1) + fn announce() -> Weight { + (15_988_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Alliance Announcements (r:1 w:1) + fn remove_announcement() -> Weight { + (16_823_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Alliance UnscrupulousAccounts (r:1 w:0) + // Storage: Alliance Members (r:4 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Alliance DepositOf (r:0 w:1) + fn join_alliance() -> Weight { + (46_340_000 as Weight) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + // Storage: Alliance Members (r:4 w:1) + // Storage: Alliance UnscrupulousAccounts (r:1 w:0) + fn nominate_ally() -> Weight { + (36_225_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Alliance Members (r:3 w:2) + // Storage: AllianceMotion Proposals (r:1 w:0) + // Storage: AllianceMotion Members (r:0 w:1) + // Storage: AllianceMotion Prime (r:0 w:1) + fn elevate_ally() -> Weight { + (30_236_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Alliance UpForKicking (r:1 w:0) + // Storage: Alliance Members (r:3 w:1) + // Storage: AllianceMotion Proposals (r:1 w:0) + // Storage: Alliance DepositOf (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: AllianceMotion Members (r:0 w:1) + // Storage: AllianceMotion Prime (r:0 w:1) + fn retire() -> Weight { + (44_311_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) + } + // Storage: Alliance Members (r:3 w:1) + // Storage: AllianceMotion Proposals (r:1 w:0) + // Storage: Alliance DepositOf (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: AllianceMotion Members (r:0 w:1) + // Storage: AllianceMotion Prime (r:0 w:1) + // Storage: Alliance UpForKicking (r:0 w:1) + fn kick_member() -> Weight { + (46_112_000 as Weight) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) + } + // Storage: Alliance UnscrupulousAccounts (r:1 w:1) + // Storage: Alliance UnscrupulousWebsites (r:1 w:1) + /// The range of component `n` is `[1, 100]`. + /// The range of component `l` is `[1, 255]`. + fn add_unscrupulous_items(n: u32, l: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 2_000 + .saturating_add((1_300_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 1_000 + .saturating_add((125_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)) + } + // Storage: Alliance UnscrupulousAccounts (r:1 w:1) + // Storage: Alliance UnscrupulousWebsites (r:1 w:1) + /// The range of component `n` is `[1, 100]`. + /// The range of component `l` is `[1, 255]`. + fn remove_unscrupulous_items(n: u32, l: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 197_000 + .saturating_add((34_156_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 87_000 + .saturating_add((7_042_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)) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_balances.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_balances.rs new file mode 100644 index 0000000000..6d97bd946e --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_balances.rs @@ -0,0 +1,91 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_balances` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_balances +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_balances`. +pub struct WeightInfo(PhantomData); +impl pallet_balances::WeightInfo for WeightInfo { + // Storage: System Account (r:1 w:1) + fn transfer() -> Weight { + (39_576_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:1 w:1) + fn transfer_keep_alive() -> Weight { + (30_212_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:1 w:1) + fn set_balance_creating() -> Weight { + (19_428_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:1 w:1) + fn set_balance_killing() -> Weight { + (22_526_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:2 w:2) + fn force_transfer() -> Weight { + (38_737_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: System Account (r:1 w:1) + fn transfer_all() -> Weight { + (35_648_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:1 w:1) + fn force_unreserve() -> Weight { + (17_197_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_collator_selection.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_collator_selection.rs new file mode 100644 index 0000000000..9213c294ce --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_collator_selection.rs @@ -0,0 +1,118 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_collator_selection` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_collator_selection +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_collator_selection`. +pub struct WeightInfo(PhantomData); +impl pallet_collator_selection::WeightInfo for WeightInfo { + // Storage: Session NextKeys (r:1 w:0) + // Storage: CollatorSelection Invulnerables (r:0 w:1) + /// The range of component `b` is `[1, 100]`. + fn set_invulnerables(b: u32, ) -> Weight { + (7_128_000 as Weight) + // Standard Error: 4_000 + .saturating_add((3_105_000 as Weight).saturating_mul(b as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: CollatorSelection DesiredCandidates (r:0 w:1) + fn set_desired_candidates() -> Weight { + (7_922_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: CollatorSelection CandidacyBond (r:0 w:1) + fn set_candidacy_bond() -> Weight { + (8_226_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: CollatorSelection Candidates (r:1 w:1) + // Storage: CollatorSelection DesiredCandidates (r:1 w:0) + // Storage: CollatorSelection Invulnerables (r:1 w:0) + // Storage: Session NextKeys (r:1 w:0) + // Storage: CollatorSelection CandidacyBond (r:1 w:0) + // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[1, 1000]`. + fn register_as_candidate(c: u32, ) -> Weight { + (56_086_000 as Weight) + // Standard Error: 1_000 + .saturating_add((93_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: CollatorSelection Candidates (r:1 w:1) + // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + /// The range of component `c` is `[6, 1000]`. + fn leave_intent(c: u32, ) -> Weight { + (58_436_000 as Weight) + // Standard Error: 1_000 + .saturating_add((102_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: System Account (r:2 w:2) + // Storage: System BlockWeight (r:1 w:1) + // Storage: CollatorSelection LastAuthoredBlock (r:0 w:1) + fn note_author() -> Weight { + (29_654_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: CollatorSelection Candidates (r:1 w:1) + // Storage: CollatorSelection LastAuthoredBlock (r:1000 w:1) + // Storage: System Account (r:1 w:1) + // Storage: CollatorSelection Invulnerables (r:1 w:0) + // Storage: System BlockWeight (r:1 w:1) + /// The range of component `r` is `[1, 1000]`. + /// The range of component `c` is `[1, 1000]`. + fn new_session(r: u32, c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 1_911_000 + .saturating_add((9_907_000 as Weight).saturating_mul(r as Weight)) + // Standard Error: 1_911_000 + .saturating_add((50_916_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight))) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(r as Weight))) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_multisig.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_multisig.rs new file mode 100644 index 0000000000..57cee1a56c --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_multisig.rs @@ -0,0 +1,162 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_multisig` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_multisig +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_multisig`. +pub struct WeightInfo(PhantomData); +impl pallet_multisig::WeightInfo for WeightInfo { + /// The range of component `z` is `[0, 10000]`. + fn as_multi_threshold_1(z: u32, ) -> Weight { + (17_905_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(z as Weight)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. + fn as_multi_create(s: u32, z: u32, ) -> Weight { + (34_787_000 as Weight) + // Standard Error: 0 + .saturating_add((105_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: Multisig Calls (r:1 w:1) + // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. + fn as_multi_create_store(s: u32, z: u32, ) -> Weight { + (38_845_000 as Weight) + // Standard Error: 1_000 + .saturating_add((75_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. + fn as_multi_approve(s: u32, z: u32, ) -> Weight { + (25_600_000 as Weight) + // Standard Error: 1_000 + .saturating_add((76_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[3, 100]`. + /// The range of component `z` is `[0, 10000]`. + fn as_multi_approve_store(s: u32, z: u32, ) -> Weight { + (36_944_000 as Weight) + // Standard Error: 1_000 + .saturating_add((95_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: Multisig Calls (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. + /// The range of component `z` is `[0, 10000]`. + fn as_multi_complete(s: u32, z: u32, ) -> Weight { + (46_014_000 as Weight) + // Standard Error: 1_000 + .saturating_add((126_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(3 as Weight)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + fn approve_as_multi_create(s: u32, ) -> Weight { + (31_616_000 as Weight) + // Standard Error: 1_000 + .saturating_add((117_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: Multisig Calls (r:1 w:0) + /// The range of component `s` is `[2, 100]`. + fn approve_as_multi_approve(s: u32, ) -> Weight { + (20_862_000 as Weight) + // Standard Error: 0 + .saturating_add((109_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: Multisig Calls (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `s` is `[2, 100]`. + fn approve_as_multi_complete(s: u32, ) -> Weight { + (64_311_000 as Weight) + // Standard Error: 1_000 + .saturating_add((164_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)) + } + // Storage: Multisig Multisigs (r:1 w:1) + // Storage: Multisig Calls (r:1 w:1) + /// The range of component `s` is `[2, 100]`. + fn cancel_as_multi(s: u32, ) -> Weight { + (51_181_000 as Weight) + // Standard Error: 2_000 + .saturating_add((110_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/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_proxy.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_proxy.rs new file mode 100644 index 0000000000..cfad3df2b9 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_proxy.rs @@ -0,0 +1,157 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_proxy` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_proxy +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_proxy`. +pub struct WeightInfo(PhantomData); +impl pallet_proxy::WeightInfo for WeightInfo { + // Storage: Proxy Proxies (r:1 w:0) + /// The range of component `p` is `[1, 31]`. + fn proxy(p: u32, ) -> Weight { + (16_628_000 as Weight) + // Standard Error: 2_000 + .saturating_add((90_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + } + // Storage: Proxy Proxies (r:1 w:0) + // Storage: Proxy Announcements (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. + fn proxy_announced(a: u32, p: u32, ) -> Weight { + (33_846_000 as Weight) + // Standard Error: 2_000 + .saturating_add((175_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 3_000 + .saturating_add((88_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)) + } + // Storage: Proxy Announcements (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. + fn remove_announcement(a: u32, p: u32, ) -> Weight { + (23_633_000 as Weight) + // Standard Error: 2_000 + .saturating_add((184_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((29_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Proxy Announcements (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. + fn reject_announcement(a: u32, p: u32, ) -> Weight { + (24_121_000 as Weight) + // Standard Error: 2_000 + .saturating_add((177_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((15_000 as Weight).saturating_mul(p as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Proxy Proxies (r:1 w:0) + // Storage: Proxy Announcements (r:1 w:1) + // Storage: System Account (r:1 w:1) + /// The range of component `a` is `[0, 31]`. + /// The range of component `p` is `[1, 31]`. + fn announce(a: u32, p: u32, ) -> Weight { + (31_509_000 as Weight) + // Standard Error: 2_000 + .saturating_add((172_000 as Weight).saturating_mul(a as Weight)) + // Standard Error: 2_000 + .saturating_add((86_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)) + } + // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. + fn add_proxy(p: u32, ) -> Weight { + (26_168_000 as Weight) + // Standard Error: 4_000 + .saturating_add((127_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)) + } + // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. + fn remove_proxy(p: u32, ) -> Weight { + (26_306_000 as Weight) + // Standard Error: 2_000 + .saturating_add((131_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)) + } + // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. + fn remove_proxies(p: u32, ) -> Weight { + (22_287_000 as Weight) + // Standard Error: 3_000 + .saturating_add((85_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)) + } + // Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0) + // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[1, 31]`. + fn anonymous(p: u32, ) -> Weight { + (29_260_000 as Weight) + // Standard Error: 2_000 + .saturating_add((38_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)) + } + // Storage: Proxy Proxies (r:1 w:1) + /// The range of component `p` is `[0, 30]`. + fn kill_anonymous(p: u32, ) -> Weight { + (23_012_000 as Weight) + // Standard Error: 2_000 + .saturating_add((97_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/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_session.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_session.rs new file mode 100644 index 0000000000..14b53f1e6e --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_session.rs @@ -0,0 +1,63 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_session` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_session +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_session`. +pub struct WeightInfo(PhantomData); +impl pallet_session::WeightInfo for WeightInfo { + // Storage: Session NextKeys (r:1 w:1) + // Storage: Session KeyOwner (r:1 w:1) + fn set_keys() -> Weight { + (15_802_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Session NextKeys (r:1 w:1) + // Storage: Session KeyOwner (r:0 w:1) + fn purge_keys() -> Weight { + (12_925_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_timestamp.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_timestamp.rs new file mode 100644 index 0000000000..08a237a62c --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_timestamp.rs @@ -0,0 +1,58 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_timestamp` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_timestamp +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_timestamp`. +pub struct WeightInfo(PhantomData); +impl pallet_timestamp::WeightInfo for WeightInfo { + // Storage: Timestamp Now (r:1 w:1) + fn set() -> Weight { + (6_170_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + fn on_finalize() -> Weight { + (2_177_000 as Weight) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_utility.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_utility.rs new file mode 100644 index 0000000000..3cf818490b --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/pallet_utility.rs @@ -0,0 +1,73 @@ +// Copyright 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 . + +//! Autogenerated weights for `pallet_utility` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-07-11, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `bm4`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("collectives-polkadot-dev"), DB CACHE: 1024 + +// Executed Command: +// ./artifacts/polkadot-parachain +// benchmark +// pallet +// --chain=collectives-polkadot-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet=pallet_utility +// --extrinsic=* +// --steps=50 +// --repeat=20 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/collectives/collectives-polkadot/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_utility`. +pub struct WeightInfo(PhantomData); +impl pallet_utility::WeightInfo for WeightInfo { + /// The range of component `c` is `[0, 1000]`. + fn batch(c: u32, ) -> Weight { + (13_398_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_159_000 as Weight).saturating_mul(c as Weight)) + } + fn as_derivative() -> Weight { + (4_668_000 as Weight) + } + /// The range of component `c` is `[0, 1000]`. + fn batch_all(c: u32, ) -> Weight { + (10_742_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_375_000 as Weight).saturating_mul(c as Weight)) + } + fn dispatch_as() -> Weight { + (11_022_000 as Weight) + } + /// The range of component `c` is `[0, 1000]`. + fn force_batch(c: u32, ) -> Weight { + (14_280_000 as Weight) + // Standard Error: 2_000 + .saturating_add((3_150_000 as Weight).saturating_mul(c as Weight)) + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/paritydb_weights.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/paritydb_weights.rs new file mode 100644 index 0000000000..843823c1bf --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/paritydb_weights.rs @@ -0,0 +1,63 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, RuntimeDbWeight}, + }; + + parameter_types! { + /// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights + /// are available for brave runtime engineers who may want to try this out as default. + pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight { + read: 8_000 * constants::WEIGHT_PER_NANOS, + write: 50_000 * constants::WEIGHT_PER_NANOS, + }; + } + + #[cfg(test)] + mod test_db_weights { + use super::constants::ParityDbWeight as W; + use frame_support::weights::constants; + + /// Checks that all weights exist and have sane values. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + // At least 1 µs. + assert!( + W::get().reads(1) >= constants::WEIGHT_PER_MICROS, + "Read weight should be at least 1 µs." + ); + assert!( + W::get().writes(1) >= constants::WEIGHT_PER_MICROS, + "Write weight should be at least 1 µs." + ); + // At most 1 ms. + assert!( + W::get().reads(1) <= constants::WEIGHT_PER_MILLIS, + "Read weight should be at most 1 ms." + ); + assert!( + W::get().writes(1) <= constants::WEIGHT_PER_MILLIS, + "Write weight should be at most 1 ms." + ); + } + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/weights/rocksdb_weights.rs b/parachains/runtimes/collectives/collectives-polkadot/src/weights/rocksdb_weights.rs new file mode 100644 index 0000000000..05e06b0eab --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/weights/rocksdb_weights.rs @@ -0,0 +1,63 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 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. + +pub mod constants { + use frame_support::{ + parameter_types, + weights::{constants, RuntimeDbWeight}, + }; + + parameter_types! { + /// By default, Substrate uses `RocksDB`, so this will be the weight used throughout + /// the runtime. + pub const RocksDbWeight: RuntimeDbWeight = RuntimeDbWeight { + read: 25_000 * constants::WEIGHT_PER_NANOS, + write: 100_000 * constants::WEIGHT_PER_NANOS, + }; + } + + #[cfg(test)] + mod test_db_weights { + use super::constants::RocksDbWeight as W; + use frame_support::weights::constants; + + /// Checks that all weights exist and have sane values. + // NOTE: If this test fails but you are sure that the generated values are fine, + // you can delete it. + #[test] + fn sane() { + // At least 1 µs. + assert!( + W::get().reads(1) >= constants::WEIGHT_PER_MICROS, + "Read weight should be at least 1 µs." + ); + assert!( + W::get().writes(1) >= constants::WEIGHT_PER_MICROS, + "Write weight should be at least 1 µs." + ); + // At most 1 ms. + assert!( + W::get().reads(1) <= constants::WEIGHT_PER_MILLIS, + "Read weight should be at most 1 ms." + ); + assert!( + W::get().writes(1) <= constants::WEIGHT_PER_MILLIS, + "Write weight should be at most 1 ms." + ); + } + } +} diff --git a/parachains/runtimes/collectives/collectives-polkadot/src/xcm_config.rs b/parachains/runtimes/collectives/collectives-polkadot/src/xcm_config.rs new file mode 100644 index 0000000000..78f5b224f8 --- /dev/null +++ b/parachains/runtimes/collectives/collectives-polkadot/src/xcm_config.rs @@ -0,0 +1,191 @@ +// Copyright (C) 2022 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. + +use super::{ + AccountId, Balances, Call, Event, Origin, ParachainInfo, ParachainSystem, PolkadotXcm, Runtime, + WeightToFee, XcmpQueue, +}; +use frame_support::{ + match_types, parameter_types, + traits::{Everything, Nothing}, + weights::Weight, +}; +use pallet_xcm::XcmPassthrough; +use parachains_common::{ + impls::ToStakingPot, + xcm_config::{DenyReserveTransferToRelayChain, DenyThenTry}, +}; +use polkadot_parachain::primitives::Sibling; +use xcm::latest::prelude::*; +use xcm_builder::{ + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, EnsureXcmOrigin, + FixedWeightBounds, IsConcrete, LocationInverter, NativeAsset, ParentAsSuperuser, + ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + UsingComponents, +}; +use xcm_executor::XcmExecutor; + +parameter_types! { + pub const DotLocation: MultiLocation = MultiLocation::parent(); + pub const RelayNetwork: NetworkId = NetworkId::Polkadot; + pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); + pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); + pub const Local: MultiLocation = Here.into(); + pub CheckingAccount: AccountId = PolkadotXcm::check_account(); +} + +/// 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 parent `AccountId`. + ParentIsPreset, + // 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 the native currency on this chain. +pub type CurrencyTransactor = CurrencyAdapter< + // Use this currency: + Balances, + // Use this currency when it is a fungible asset matching the given location or name: + IsConcrete, + // Convert an XCM MultiLocation into a local 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 of `Balances`. + (), +>; + +/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance, +/// ready for dispatching a transaction with Xcm's `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 convert 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_000 weight - almost certainly a conservative estimate. + pub UnitWeightCost: Weight = 1_000_000_000; + pub const MaxInstructions: u32 = 100; +} + +match_types! { + pub type ParentOrParentsExecutivePlurality: impl Contains = { + MultiLocation { parents: 1, interior: Here } | + MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) } + }; + pub type ParentOrSiblings: impl Contains = { + MultiLocation { parents: 1, interior: Here } | + MultiLocation { parents: 1, interior: X1(_) } + }; +} + +pub type Barrier = DenyThenTry< + DenyReserveTransferToRelayChain, + ( + // Allow local users to buy weight credit. + TakeWeightCredit, + // Parent and its exec plurality get free execution. + AllowUnpaidExecutionFrom, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, + // Allow anything to pay for execution. + AllowTopLevelPaidExecutionFrom, + ), +>; + +pub struct XcmConfig; +impl xcm_executor::Config for XcmConfig { + type Call = Call; + type XcmSender = XcmRouter; + type AssetTransactor = CurrencyTransactor; + type OriginConverter = XcmOriginToTransactDispatchOrigin; + // Collectives does not recognize a reserve location for any asset. Users must teleport DOT + // where allowed (e.g. with the Relay Chain). + type IsReserve = (); + type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of DOT + type LocationInverter = LocationInverter; + type Barrier = Barrier; + type Weigher = FixedWeightBounds; + type Trader = + UsingComponents>; + type ResponseHandler = PolkadotXcm; + type AssetTrap = PolkadotXcm; + type AssetClaims = PolkadotXcm; + type SubscriptionService = PolkadotXcm; +} + +/// Converts a local signed origin into an XCM multilocation. +/// Forms the basis for local origins sending/executing XCMs. +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; + // We want to disallow users sending (arbitrary) XCMs from this chain. + type SendXcmOrigin = EnsureXcmOrigin; + type XcmRouter = XcmRouter; + // We support local origins dispatching XCM executions in principle... + type ExecuteXcmOrigin = EnsureXcmOrigin; + // ... but disallow generic XCM execution. As a result only teleports are allowed. + type XcmExecuteFilter = Nothing; + type XcmExecutor = XcmExecutor; + type XcmTeleportFilter = Everything; + type XcmReserveTransferFilter = Nothing; // This parachain is not meant as a reserve location. + 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; +} diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 55664fab9c..3f169505ca 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -22,6 +22,7 @@ seedling-runtime = { path = "../parachains/runtimes/starters/seedling" } statemint-runtime = { path = "../parachains/runtimes/assets/statemint" } statemine-runtime = { path = "../parachains/runtimes/assets/statemine" } westmint-runtime = { path = "../parachains/runtimes/assets/westmint" } +collectives-polkadot-runtime = { path = "../parachains/runtimes/collectives/collectives-polkadot" } contracts-rococo-runtime = { path = "../parachains/runtimes/contracts/contracts-rococo" } penpal-runtime = { path = "../parachains/runtimes/testing/penpal" } jsonrpsee = { version = "0.15.1", features = ["server"] } diff --git a/polkadot-parachain/src/chain_spec/collectives.rs b/polkadot-parachain/src/chain_spec/collectives.rs new file mode 100644 index 0000000000..f5737faf34 --- /dev/null +++ b/polkadot-parachain/src/chain_spec/collectives.rs @@ -0,0 +1,179 @@ +// Copyright 2022 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 . + +use crate::chain_spec::{ + get_account_id_from_seed, get_collator_keys_from_seed, Extensions, SAFE_XCM_VERSION, +}; +use cumulus_primitives_core::ParaId; +use parachains_common::Balance as CollectivesBalance; +use rococo_parachain_runtime::{AccountId, AuraId}; +use sc_service::ChainType; +use sp_core::sr25519; + +pub type CollectivesPolkadotChainSpec = + sc_service::GenericChainSpec; + +const COLLECTIVES_POLKADOT_ED: CollectivesBalance = + collectives_polkadot_runtime::constants::currency::EXISTENTIAL_DEPOSIT; + +/// Generate the session keys from individual elements. +/// +/// The input must be a tuple of individual keys (a single arg for now since we have just one key). +pub fn collectives_polkadot_session_keys( + keys: AuraId, +) -> collectives_polkadot_runtime::SessionKeys { + collectives_polkadot_runtime::SessionKeys { aura: keys } +} + +pub fn collectives_polkadot_development_config() -> CollectivesPolkadotChainSpec { + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("ss58Format".into(), 0.into()); + properties.insert("tokenSymbol".into(), "DOT".into()); + properties.insert("tokenDecimals".into(), 10.into()); + + CollectivesPolkadotChainSpec::from_genesis( + // Name + "Polkadot Collectives Development", + // ID + "collectives_polkadot_dev", + ChainType::Local, + move || { + collectives_polkadot_genesis( + // initial collators. + vec![( + get_account_id_from_seed::("Alice"), + get_collator_keys_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"), + ], + // 1002 avoids a potential collision with Kusama-1001 (Encointer) should there ever + // be a collective para on Kusama. + 1002.into(), + ) + }, + Vec::new(), + None, + None, + None, + Some(properties), + Extensions { relay_chain: "polkadot-dev".into(), para_id: 1002 }, + ) +} + +/// Collectives Polkadot Local Config. +pub fn collectives_polkadot_local_config() -> CollectivesPolkadotChainSpec { + let mut properties = sc_chain_spec::Properties::new(); + properties.insert("ss58Format".into(), 0.into()); + properties.insert("tokenSymbol".into(), "DOT".into()); + properties.insert("tokenDecimals".into(), 10.into()); + + CollectivesPolkadotChainSpec::from_genesis( + // Name + "Polkadot Collectives Local", + // ID + "collectives_polkadot_local", + ChainType::Local, + move || { + collectives_polkadot_genesis( + // initial collators. + vec![ + ( + get_account_id_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), + ), + ( + get_account_id_from_seed::("Bob"), + get_collator_keys_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"), + ], + 1002.into(), + ) + }, + Vec::new(), + None, + None, + None, + Some(properties), + Extensions { relay_chain: "polkadot-local".into(), para_id: 1002 }, + ) +} + +fn collectives_polkadot_genesis( + invulnerables: Vec<(AccountId, AuraId)>, + endowed_accounts: Vec, + id: ParaId, +) -> collectives_polkadot_runtime::GenesisConfig { + collectives_polkadot_runtime::GenesisConfig { + system: collectives_polkadot_runtime::SystemConfig { + code: collectives_polkadot_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + }, + balances: collectives_polkadot_runtime::BalancesConfig { + balances: endowed_accounts + .iter() + .cloned() + .map(|k| (k, COLLECTIVES_POLKADOT_ED * 4096)) + .collect(), + }, + parachain_info: collectives_polkadot_runtime::ParachainInfoConfig { parachain_id: id }, + collator_selection: collectives_polkadot_runtime::CollatorSelectionConfig { + invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: COLLECTIVES_POLKADOT_ED * 16, + ..Default::default() + }, + session: collectives_polkadot_runtime::SessionConfig { + keys: invulnerables + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + collectives_polkadot_session_keys(aura), // session keys + ) + }) + .collect(), + }, + // no need to pass anything to aura, in fact it will panic if we do. Session will take care + // of this. + aura: Default::default(), + aura_ext: Default::default(), + parachain_system: Default::default(), + polkadot_xcm: collectives_polkadot_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + }, + alliance: Default::default(), + alliance_motion: Default::default(), + } +} diff --git a/polkadot-parachain/src/chain_spec/mod.rs b/polkadot-parachain/src/chain_spec/mod.rs index fe26ce2a66..4566861a64 100644 --- a/polkadot-parachain/src/chain_spec/mod.rs +++ b/polkadot-parachain/src/chain_spec/mod.rs @@ -23,6 +23,7 @@ use serde::{Deserialize, Serialize}; use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public}; use sp_runtime::traits::{IdentifyAccount, Verify}; +pub mod collectives; pub mod contracts; pub mod penpal; pub mod seedling; diff --git a/polkadot-parachain/src/chain_spec/statemint.rs b/polkadot-parachain/src/chain_spec/statemint.rs index c8978b23a8..800b7af8b9 100644 --- a/polkadot-parachain/src/chain_spec/statemint.rs +++ b/polkadot-parachain/src/chain_spec/statemint.rs @@ -1,4 +1,4 @@ -// Copyright 2019-2021 Parity Technologies (UK) Ltd. +// Copyright 2019-2022 Parity Technologies (UK) Ltd. // This file is part of Cumulus. // Cumulus is free software: you can redistribute it and/or modify diff --git a/polkadot-parachain/src/command.rs b/polkadot-parachain/src/command.rs index dc17014c0a..c7e96d3ebf 100644 --- a/polkadot-parachain/src/command.rs +++ b/polkadot-parachain/src/command.rs @@ -14,6 +14,14 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . +use crate::{ + chain_spec, + cli::{Cli, RelayChainCli, Subcommand}, + service::{ + new_partial, Block, CollectivesPolkadotRuntimeExecutor, ShellRuntimeExecutor, + StatemineRuntimeExecutor, StatemintRuntimeExecutor, WestmintRuntimeExecutor, + }, +}; use codec::Encode; use cumulus_client_cli::generate_genesis_block; use cumulus_primitives_core::ParaId; @@ -32,15 +40,7 @@ use sp_core::hexdisplay::HexDisplay; use sp_runtime::traits::{AccountIdConversion, Block as BlockT}; use std::net::SocketAddr; -use crate::{ - chain_spec, - cli::{Cli, RelayChainCli, Subcommand}, - service::{ - new_partial, Block, ShellRuntimeExecutor, StatemineRuntimeExecutor, - StatemintRuntimeExecutor, WestmintRuntimeExecutor, - }, -}; - +#[derive(Debug)] enum Runtime { /// This is the default runtime (based on rococo) Generic, @@ -51,6 +51,8 @@ enum Runtime { Westmint, Penpal(ParaId), ContractsRococo, + CollectivesPolkadot, + CollectivesWestend, } trait ChainType { @@ -73,7 +75,9 @@ impl ChainType } fn runtime(id: &str) -> Runtime { - let (_, id, para_id) = extract_parachain_id(id); + let id = id.replace("_", "-"); + let (_, id, para_id) = extract_parachain_id(&id); + if id.starts_with("shell") { Runtime::Shell } else if id.starts_with("seedling") { @@ -88,6 +92,10 @@ fn runtime(id: &str) -> Runtime { Runtime::Penpal(para_id.unwrap_or(ParaId::new(0))) } else if id.starts_with("contracts-rococo") { Runtime::ContractsRococo + } else if id.starts_with("collectives-polkadot") { + Runtime::CollectivesPolkadot + } else if id.starts_with("collectives-westend") { + Runtime::CollectivesWestend } else { Runtime::Generic } @@ -117,6 +125,7 @@ fn load_spec(id: &str) -> std::result::Result, String> { "statemint" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/statemint.json")[..], )?), + // -- Statemine "statemine-dev" => Box::new(chain_spec::statemint::statemine_development_config()), "statemine-local" => Box::new(chain_spec::statemint::statemine_local_config()), @@ -126,6 +135,7 @@ fn load_spec(id: &str) -> std::result::Result, String> { "statemine" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/statemine.json")[..], )?), + // -- Westmint "westmint-dev" => Box::new(chain_spec::statemint::westmint_development_config()), "westmint-local" => Box::new(chain_spec::statemint::westmint_local_config()), @@ -135,6 +145,19 @@ fn load_spec(id: &str) -> std::result::Result, String> { "westmint" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/westmint.json")[..], )?), + + // -- Polkadot Collectives + "collectives-polkadot-dev" => + Box::new(chain_spec::collectives::collectives_polkadot_development_config()), + "collectives-polkadot-local" => + Box::new(chain_spec::collectives::collectives_polkadot_local_config()), + "collectives-polkadot" => Box::new(chain_spec::ChainSpec::from_json_bytes( + &include_bytes!("../../parachains/chain-specs/collectives-polkadot.json")[..], + )?), + "collectives-westend" => Box::new(chain_spec::ChainSpec::from_json_bytes( + &include_bytes!("../../parachains/chain-specs/collectives-westend.json")[..], + )?), + // -- Contracts on Rococo "contracts-rococo-dev" => Box::new(chain_spec::contracts::contracts_rococo_development_config()), @@ -144,8 +167,6 @@ fn load_spec(id: &str) -> std::result::Result, String> { "contracts-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../../parachains/chain-specs/contracts-rococo.json")[..], )?), - // -- Fallback (generic chainspec) - "" => Box::new(chain_spec::get_chain_spec()), "penpal-kusama" => Box::new(chain_spec::penpal::get_penpal_chain_spec( para_id.expect("Must specify parachain id"), "kusama-local", @@ -154,6 +175,10 @@ fn load_spec(id: &str) -> std::result::Result, String> { para_id.expect("Must specify parachain id"), "polkadot-local", )), + + // -- Fallback (generic chainspec) + "" => Box::new(chain_spec::get_chain_spec()), + // -- Loading a specific spec from disk path => { let chain_spec = chain_spec::ChainSpec::from_json_file(path.into())?; @@ -166,6 +191,10 @@ fn load_spec(id: &str) -> std::result::Result, String> { ), Runtime::Westmint => Box::new(chain_spec::statemint::WestmintChainSpec::from_json_file(path.into())?), + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => + Box::new(chain_spec::collectives::CollectivesPolkadotChainSpec::from_json_file( + path.into(), + )?), Runtime::Shell => Box::new(chain_spec::shell::ShellChainSpec::from_json_file(path.into())?), Runtime::Seedling => @@ -243,6 +272,8 @@ impl SubstrateCli for Cli { Runtime::Statemint => &statemint_runtime::VERSION, Runtime::Statemine => &statemine_runtime::VERSION, Runtime::Westmint => &westmint_runtime::VERSION, + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => + &collectives_polkadot_runtime::VERSION, Runtime::Shell => &shell_runtime::VERSION, Runtime::Seedling => &seedling_runtime::VERSION, Runtime::ContractsRococo => &contracts_rococo_runtime::VERSION, @@ -317,6 +348,13 @@ macro_rules! construct_benchmark_partials { )?; $code }, + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => { + let $partials = new_partial::( + &$config, + crate::service::aura_build_import_queue::<_, AuraId>, + )?; + $code + }, _ => Err("The chain is not supported".into()), } }; @@ -356,6 +394,16 @@ macro_rules! construct_async_run { { $( $code )* }.map(|v| (v, task_manager)) }) }, + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => { + runner.async_run(|$config| { + let $components = new_partial::( + &$config, + crate::service::aura_build_import_queue::<_, AuraId>, + )?; + let task_manager = $components.task_manager; + { $( $code )* }.map(|v| (v, task_manager)) + }) + }, Runtime::Shell => { runner.async_run(|$config| { let $components = new_partial::( @@ -482,7 +530,13 @@ pub fn run() -> Result<()> { Runtime::Westmint => cmd.run::(config), Runtime::Statemint => cmd.run::(config), - _ => Err("Chain doesn't support benchmarking".into()), + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => + cmd.run::(config), + _ => Err(format!( + "Chain '{:?}' doesn't support benchmarking", + config.chain_spec.runtime() + ) + .into()), }) } else { Err("Benchmarking wasn't enabled when building the node. \ @@ -527,6 +581,13 @@ pub fn run() -> Result<()> { Runtime::Statemint => runner.async_run(|config| { Ok((cmd.run::(config), task_manager)) }), + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => + runner.async_run(|config| { + Ok(( + cmd.run::(config), + task_manager, + )) + }), Runtime::Shell => runner.async_run(|config| { Ok((cmd.run::(config), task_manager)) }), @@ -604,6 +665,14 @@ pub fn run() -> Result<()> { .await .map(|r| r.0) .map_err(Into::into), + Runtime::CollectivesPolkadot | Runtime::CollectivesWestend => + crate::service::start_generic_aura_node::< + collectives_polkadot_runtime::RuntimeApi, + AuraId, + >(config, polkadot_config, collator_options, id, hwbench) + .await + .map(|r| r.0) + .map_err(Into::into), Runtime::Shell => crate::service::start_shell_node::( config, diff --git a/polkadot-parachain/src/service.rs b/polkadot-parachain/src/service.rs index 7cecaa807b..ea52f8d727 100644 --- a/polkadot-parachain/src/service.rs +++ b/polkadot-parachain/src/service.rs @@ -159,6 +159,21 @@ impl sc_executor::NativeExecutionDispatch for WestmintRuntimeExecutor { } } +// Native Polkadot Collectives executor instance. +pub struct CollectivesPolkadotRuntimeExecutor; + +impl sc_executor::NativeExecutionDispatch for CollectivesPolkadotRuntimeExecutor { + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + + fn dispatch(method: &str, data: &[u8]) -> Option> { + collectives_polkadot_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + collectives_polkadot_runtime::native_version() + } +} + /// Native Contracts on Rococo executor instance. pub struct ContractsRococoRuntimeExecutor; diff --git a/scripts/benchmarks-ci.sh b/scripts/benchmarks-ci.sh index b70277b211..ff87c643a0 100755 --- a/scripts/benchmarks-ci.sh +++ b/scripts/benchmarks-ci.sh @@ -1,30 +1,50 @@ -#!/bin/bash +#!/usr/bin/env bash steps=50 repeat=20 category=$1 runtimeName=$2 +artifactsDir=$3 benchmarkOutput=./parachains/runtimes/$category/$runtimeName/src/weights benchmarkRuntimeName="$runtimeName-dev" -pallets=( - pallet_assets - pallet_balances - pallet_collator_selection - pallet_multisig - pallet_proxy - pallet_session - pallet_timestamp - pallet_utility - pallet_uniques - cumulus_pallet_xcmp_queue - frame_system -) +if [[ $runtimeName == "statemint" ]] || [[ $runtimeName == "statemine" ]] || [[ $runtimeName == "westmint" ]]; then + pallets=( + pallet_assets + pallet_balances + pallet_collator_selection + pallet_multisig + pallet_proxy + pallet_session + pallet_timestamp + pallet_utility + pallet_uniques + cumulus_pallet_xcmp_queue + frame_system + ) +elif [[ $runtimeName == "collectives-polkadot" ]]; then + pallets=( + pallet_alliance + pallet_balances + pallet_collator_selection + pallet_collective + pallet_multisig + pallet_proxy + pallet_session + pallet_timestamp + pallet_utility + cumulus_pallet_xcmp_queue + frame_system + ) +else + echo "$runtimeName pallet list not found in benchmarks-ci.sh" + exit 1 +fi for pallet in ${pallets[@]} do - ./artifacts/polkadot-parachain benchmark pallet \ + $artifactsDir/polkadot-parachain benchmark pallet \ --chain=$benchmarkRuntimeName \ --execution=wasm \ --wasm-execution=compiled \ @@ -34,5 +54,6 @@ do --repeat=$repeat \ --json \ --header=./file_header.txt \ - --output=$benchmarkOutput >> ./artifacts/${pallet}_benchmark.json + --output=$benchmarkOutput >> $artifactsDir/${pallet}_benchmark.json + done diff --git a/scripts/benchmarks.sh b/scripts/benchmarks.sh index a83b8cbcbb..0dd9544f56 100755 --- a/scripts/benchmarks.sh +++ b/scripts/benchmarks.sh @@ -1,65 +1,9 @@ -#!/bin/bash +#!/usr/bin/env bash -steps=50 -repeat=20 +__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -statemineOutput=./parachains/runtimes/assets/statemine/src/weights -statemintOutput=./parachains/runtimes/assets/statemint/src/weights -westmintOutput=./parachains/runtimes/assets/westmint/src/weights +${__dir}/benchmarks-ci.sh collectives collectives-polkadot target/production -statemineChain=statemine-dev -statemintChain=statemint-dev -westmintChain=westmint-dev - -pallets=( - pallet_assets - pallet_balances - pallet_collator_selection - pallet_multisig - pallet_proxy - pallet_session - pallet_timestamp - pallet_utility - pallet_uniques - cumulus_pallet_xcmp_queue - frame_system -) - -for p in ${pallets[@]} -do - ./target/production/polkadot-parachain benchmark pallet \ - --chain=$statemineChain \ - --execution=wasm \ - --wasm-execution=compiled \ - --pallet=$p \ - --extrinsic='*' \ - --steps=$steps \ - --repeat=$repeat \ - --json-file=./bench-statemine.json \ - --header=./file_header.txt \ - --output=$statemineOutput - - ./target/production/polkadot-parachain benchmark pallet \ - --chain=$statemintChain \ - --execution=wasm \ - --wasm-execution=compiled \ - --pallet=$p \ - --extrinsic='*' \ - --steps=$steps \ - --repeat=$repeat \ - --json-file=./bench-statemint.json \ - --header=./file_header.txt \ - --output=$statemintOutput - - ./target/production/polkadot-parachain benchmark pallet \ - --chain=$westmintChain \ - --execution=wasm \ - --wasm-execution=compiled \ - --pallet=$p \ - --extrinsic='*' \ - --steps=$steps \ - --repeat=$repeat \ - --json-file=./bench-westmint.json \ - --header=./file_header.txt \ - --output=$westmintOutput -done +${__dir}/benchmarks-ci.sh assets statemine target/production +${__dir}/benchmarks-ci.sh assets statemint target/production +${__dir}/benchmarks-ci.sh assets westmint target/production diff --git a/scripts/ci/changelog/bin/changelog b/scripts/ci/changelog/bin/changelog index e9df4a4ca2..97d10dff94 100755 --- a/scripts/ci/changelog/bin/changelog +++ b/scripts/ci/changelog/bin/changelog @@ -76,6 +76,7 @@ else logger.debug("Re-using:#{substrate_data}") end +POLKADOT_COLLECTIVES_DIGEST = ENV['SHELL_DIGEST'] || 'digests/polkadot-collectives-srtool-digest.json' SHELL_DIGEST = ENV['SHELL_DIGEST'] || 'digests/shell-srtool-digest.json' WESTMINT_DIGEST = ENV['WESTMINT_DIGEST'] || 'digests/westmint-srtool-digest.json' STATEMINE_DIGEST = ENV['STATEMINE_DIGEST'] || 'digests/statemine-srtool-digest.json' @@ -112,24 +113,31 @@ else --slurpfile srtool_statemint %s \ --slurpfile srtool_rococo_parachain %s \ --slurpfile srtool_contracts_rococo %s \ + --slurpfile srtool_polkadot_collectives %s \ -n \'{ - cumulus: $cumulus[0], - substrate: $substrate[0], - polkadot: $polkadot[0], + cumulus: $cumulus[0], + substrate: $substrate[0], + polkadot: $polkadot[0], srtool: [ - { name: "rococo", data: $srtool_rococo_parachain[0] }, - { name: "shell", data: $srtool_shell[0] }, - { name: "westmint", data: $srtool_westmint[0] }, - { name: "statemint", data: $srtool_statemint[0] }, - { name: "statemine", data: $srtool_statemine[0] }, - { name: "contracts", data: $srtool_contracts_rococo[0] } - ] }\' > context.json', cumulus_data, substrate_data, polkadot_data, - SHELL_DIGEST, - WESTMINT_DIGEST, - STATEMINE_DIGEST, - STATEMINT_DIGEST, - ROCOCO_PARA_DIGEST, - CANVAS_KUSAMA_DIGEST) + { name: "shell", data: $srtool_shell[0] }, + { name: "westmint", data: $srtool_westmint[0] }, + { name: "statemine", data: $srtool_statemine[0] }, + { name: "statemint", data: $srtool_statemint[0] }, + { name: "rococo", data: $srtool_rococo_parachain[0] }, + { name: "contracts", data: $srtool_contracts_rococo[0] } + { name: "polkadot-collectives", data: $srtool_polkadot_collectives[0] }, + ] }\' > context.json', + cumulus_data, + substrate_data, + polkadot_data, + SHELL_DIGEST, + WESTMINT_DIGEST, + STATEMINE_DIGEST, + STATEMINT_DIGEST, + ROCOCO_PARA_DIGEST, + CANVAS_KUSAMA_DIGEST, + POLKADOT_COLLECTIVES_DIGEST + ) end system(cmd) From df361560b2d8f00774edb2a18d27b5a6c41231f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 07:11:52 +0000 Subject: [PATCH 235/238] Bump serde from 1.0.141 to 1.0.143 (#1541) Bumps [serde](https://github.com/serde-rs/serde) from 1.0.141 to 1.0.143. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.141...v1.0.143) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- pallets/aura-ext/Cargo.toml | 2 +- pallets/collator-selection/Cargo.toml | 2 +- pallets/parachain-system/Cargo.toml | 2 +- pallets/xcm/Cargo.toml | 2 +- parachain-template/node/Cargo.toml | 2 +- parachain-template/runtime/Cargo.toml | 2 +- parachains/pallets/parachain-info/Cargo.toml | 2 +- parachains/pallets/ping/Cargo.toml | 2 +- parachains/runtimes/assets/statemine/Cargo.toml | 2 +- parachains/runtimes/assets/statemint/Cargo.toml | 2 +- parachains/runtimes/assets/westmint/Cargo.toml | 2 +- .../runtimes/collectives/collectives-polkadot/Cargo.toml | 2 +- parachains/runtimes/contracts/contracts-rococo/Cargo.toml | 2 +- parachains/runtimes/starters/seedling/Cargo.toml | 2 +- parachains/runtimes/starters/shell/Cargo.toml | 2 +- parachains/runtimes/testing/penpal/Cargo.toml | 2 +- parachains/runtimes/testing/rococo-parachain/Cargo.toml | 2 +- polkadot-parachain/Cargo.toml | 2 +- test/runtime/Cargo.toml | 2 +- test/service/Cargo.toml | 2 +- 21 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a634cac816..8a5f285e3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10453,9 +10453,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.141" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7af873f2c95b99fcb0bd0fe622a43e29514658873c8ceba88c4cb88833a22500" +checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553" dependencies = [ "serde_derive", ] @@ -10472,9 +10472,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.141" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75743a150d003dd863b51dc809bcad0d73f2102c53632f1e954e738192a3413f" +checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/aura-ext/Cargo.toml b/pallets/aura-ext/Cargo.toml index 4507670834..f51e4f6986 100644 --- a/pallets/aura-ext/Cargo.toml +++ b/pallets/aura-ext/Cargo.toml @@ -8,7 +8,7 @@ description = "AURA consensus extension pallet for parachains" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/collator-selection/Cargo.toml b/pallets/collator-selection/Cargo.toml index d3f4625b8e..b82d11088b 100644 --- a/pallets/collator-selection/Cargo.toml +++ b/pallets/collator-selection/Cargo.toml @@ -17,7 +17,7 @@ log = { version = "0.4.17", default-features = false } codec = { default-features = false, features = ["derive"], package = "parity-scale-codec", version = "3.0.0" } rand = { version = "0.8.5", features = ["std_rng"], default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", default-features = false } +serde = { version = "1.0.143", default-features = false } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/pallets/parachain-system/Cargo.toml b/pallets/parachain-system/Cargo.toml index 341f76c872..e3e0e965a9 100644 --- a/pallets/parachain-system/Cargo.toml +++ b/pallets/parachain-system/Cargo.toml @@ -12,7 +12,7 @@ environmental = { version = "1.1.2", default-features = false } impl-trait-for-tuples = "0.2.1" log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/pallets/xcm/Cargo.toml b/pallets/xcm/Cargo.toml index db199bd5ea..aa8ab7f789 100644 --- a/pallets/xcm/Cargo.toml +++ b/pallets/xcm/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachain-template/node/Cargo.toml b/parachain-template/node/Cargo.toml index ff95f0eeab..60c3feabfb 100644 --- a/parachain-template/node/Cargo.toml +++ b/parachain-template/node/Cargo.toml @@ -14,7 +14,7 @@ clap = { version = "3.2.16", features = ["derive"] } derive_more = "0.99.2" log = "0.4.17" codec = { package = "parity-scale-codec", version = "3.0.0" } -serde = { version = "1.0.141", features = ["derive"] } +serde = { version = "1.0.143", features = ["derive"] } hex-literal = "0.3.4" jsonrpsee = { version = "0.15.1", features = ["server"] } diff --git a/parachain-template/runtime/Cargo.toml b/parachain-template/runtime/Cargo.toml index a1a480a5c3..791c32f704 100644 --- a/parachain-template/runtime/Cargo.toml +++ b/parachain-template/runtime/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } smallvec = "1.9.0" # Local diff --git a/parachains/pallets/parachain-info/Cargo.toml b/parachains/pallets/parachain-info/Cargo.toml index da22f19a5c..b1b15f5a14 100644 --- a/parachains/pallets/parachain-info/Cargo.toml +++ b/parachains/pallets/parachain-info/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } 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" } diff --git a/parachains/pallets/ping/Cargo.toml b/parachains/pallets/ping/Cargo.toml index 3ce4e37963..c3ad055c60 100644 --- a/parachains/pallets/ping/Cargo.toml +++ b/parachains/pallets/ping/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", 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" } diff --git a/parachains/runtimes/assets/statemine/Cargo.toml b/parachains/runtimes/assets/statemine/Cargo.toml index 8f8e3e9890..a73e694dcb 100644 --- a/parachains/runtimes/assets/statemine/Cargo.toml +++ b/parachains/runtimes/assets/statemine/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/assets/statemint/Cargo.toml b/parachains/runtimes/assets/statemint/Cargo.toml index 2e713322de..48c465fde7 100644 --- a/parachains/runtimes/assets/statemint/Cargo.toml +++ b/parachains/runtimes/assets/statemint/Cargo.toml @@ -9,7 +9,7 @@ description = "Statemint parachain runtime" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.9.0" diff --git a/parachains/runtimes/assets/westmint/Cargo.toml b/parachains/runtimes/assets/westmint/Cargo.toml index 4a06a86fac..e9b6091a3c 100644 --- a/parachains/runtimes/assets/westmint/Cargo.toml +++ b/parachains/runtimes/assets/westmint/Cargo.toml @@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml b/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml index 0d938eec8f..96db205d2e 100644 --- a/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml +++ b/parachains/runtimes/collectives/collectives-polkadot/Cargo.toml @@ -9,7 +9,7 @@ description = "Polkadot Collectives Parachain Runtime" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } -serde = { version = "1.0.137", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } smallvec = "1.6.1" diff --git a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml index b4172e817b..1a90e6128b 100644 --- a/parachains/runtimes/contracts/contracts-rococo/Cargo.toml +++ b/parachains/runtimes/contracts/contracts-rococo/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/starters/seedling/Cargo.toml b/parachains/runtimes/starters/seedling/Cargo.toml index dba67f7f37..159211cf3b 100644 --- a/parachains/runtimes/starters/seedling/Cargo.toml +++ b/parachains/runtimes/starters/seedling/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } scale-info = { version = "2.0.0", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/starters/shell/Cargo.toml b/parachains/runtimes/starters/shell/Cargo.toml index 14aec72d88..8210d567b2 100644 --- a/parachains/runtimes/starters/shell/Cargo.toml +++ b/parachains/runtimes/starters/shell/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/parachains/runtimes/testing/penpal/Cargo.toml b/parachains/runtimes/testing/penpal/Cargo.toml index a31111f1b3..81d582a4a2 100644 --- a/parachains/runtimes/testing/penpal/Cargo.toml +++ b/parachains/runtimes/testing/penpal/Cargo.toml @@ -19,7 +19,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = hex-literal = { version = "0.3.4", optional = true } log = { version = "0.4.16", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } smallvec = "1.9.0" # Substrate diff --git a/parachains/runtimes/testing/rococo-parachain/Cargo.toml b/parachains/runtimes/testing/rococo-parachain/Cargo.toml index 8cf3aab02c..40a506b023 100644 --- a/parachains/runtimes/testing/rococo-parachain/Cargo.toml +++ b/parachains/runtimes/testing/rococo-parachain/Cargo.toml @@ -9,7 +9,7 @@ description = "Simple runtime used by the rococo parachain(s)" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/polkadot-parachain/Cargo.toml b/polkadot-parachain/Cargo.toml index 3f169505ca..42413b9f38 100644 --- a/polkadot-parachain/Cargo.toml +++ b/polkadot-parachain/Cargo.toml @@ -13,7 +13,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0" } futures = "0.3.21" hex-literal = "0.3.4" log = "0.4.17" -serde = { version = "1.0.141", features = ["derive"] } +serde = { version = "1.0.143", features = ["derive"] } # Local rococo-parachain-runtime = { path = "../parachains/runtimes/testing/rococo-parachain" } diff --git a/test/runtime/Cargo.toml b/test/runtime/Cargo.toml index 789bc3de4b..69808cf2ac 100644 --- a/test/runtime/Cargo.toml +++ b/test/runtime/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } -serde = { version = "1.0.141", optional = true, features = ["derive"] } +serde = { version = "1.0.143", optional = true, features = ["derive"] } # Substrate frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/test/service/Cargo.toml b/test/service/Cargo.toml index 9c5974f74d..d55b1ba456 100644 --- a/test/service/Cargo.toml +++ b/test/service/Cargo.toml @@ -15,7 +15,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0" } criterion = { version = "0.3.6", features = [ "async_tokio" ] } jsonrpsee = { version = "0.15.1", features = ["server"] } rand = "0.8.5" -serde = { version = "1.0.141", features = ["derive"] } +serde = { version = "1.0.143", features = ["derive"] } tokio = { version = "1.19.2", features = ["macros"] } tracing = "0.1.36" url = "2.2.2" From 329e57ba7f6ef9791b3f65a0b83e10b72534e56f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 07:12:41 +0000 Subject: [PATCH 236/238] Bump syn from 1.0.98 to 1.0.99 (#1540) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.98 to 1.0.99. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.98...1.0.99) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8a5f285e3a..78c591f3ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11861,9 +11861,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 986a3cdb5c..4dc06cfe18 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -9,7 +9,7 @@ description = "Proc macros provided by the parachain-system pallet" proc-macro = true [dependencies] -syn = "1.0.96" +syn = "1.0.99" proc-macro2 = "1.0.42" quote = "1.0.21" proc-macro-crate = "1.1.3" From cf64430884ebd5eae1999db8cb4470c77c04976e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:31:44 +0200 Subject: [PATCH 237/238] Bump proc-macro-crate from 1.1.3 to 1.2.1 (#1539) Bumps [proc-macro-crate](https://github.com/bkchr/proc-macro-crate) from 1.1.3 to 1.2.1. - [Release notes](https://github.com/bkchr/proc-macro-crate/releases) - [Commits](https://github.com/bkchr/proc-macro-crate/commits/v1.2.1) --- updated-dependencies: - dependency-name: proc-macro-crate dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 5 +++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 78c591f3ac..c587e94c8f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8444,10 +8444,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.1.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" dependencies = [ + "once_cell", "thiserror", "toml", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 4dc06cfe18..55d1696bd5 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -12,7 +12,7 @@ proc-macro = true syn = "1.0.99" proc-macro2 = "1.0.42" quote = "1.0.21" -proc-macro-crate = "1.1.3" +proc-macro-crate = "1.2.1" [features] default = [ "std" ] From 16431dd1d9e1b89b426c9833fc7ca225fea1fdc3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 16:20:48 +0200 Subject: [PATCH 238/238] Bump proc-macro2 from 1.0.42 to 1.0.43 (#1502) Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.42 to 1.0.43. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.42...1.0.43) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- pallets/parachain-system/proc-macro/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c587e94c8f..712cc8169e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8479,9 +8479,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] diff --git a/pallets/parachain-system/proc-macro/Cargo.toml b/pallets/parachain-system/proc-macro/Cargo.toml index 55d1696bd5..3debfc3ef3 100644 --- a/pallets/parachain-system/proc-macro/Cargo.toml +++ b/pallets/parachain-system/proc-macro/Cargo.toml @@ -10,7 +10,7 @@ proc-macro = true [dependencies] syn = "1.0.99" -proc-macro2 = "1.0.42" +proc-macro2 = "1.0.43" quote = "1.0.21" proc-macro-crate = "1.2.1"